OpenMV
Khiên
Ống kính
Người máy
Sách
Băng hình
Tải xuống
Tài liệu
Diễn đàn
OpenMV.io
GithubHai nhiệm vụ rất phổ biến của trí tuệ nhân tạo trong lĩnh vực thị giác là phân loại và phát hiện đối tượng.
Phân loại:Xác định hình ảnh thuộc danh mục nào, ví dụ như danh mục là mèo hay chó.
Phát hiện đối tượng:Được sử dụng để xác định vị trí, số lượng và kích thước của nhiều đối tượng khác nhau trong hình ảnh.
Trong các bài hướng dẫn video trước đây, chúng tôi đã trình bày cách sử dụng OpenMV4 Plus để huấn luyện trực tuyến mạng nơ-ron nhằm phân loại các vật thể khác nhau; thiết bị này có khả năng xác định theo thời gian thực xem hình ảnh trong phạm vi quan sát của OpenMV có phải là một vật thể cụ thể hay không — ví dụ như việc người có đang đeo khẩu trang hay không — tuy nhiên lại không thể xuất ra tọa độ vị trí của khuôn mặt hoặc khẩu trang cũng như số lượng khuôn mặt.
Do việc phát hiện đối tượng phức tạp hơn và tốn nhiều tài nguyên tính toán hơn nhiều so với phân loại nên chức năng này rất hiếm gặp trong lĩnh vực vi điều khiển. MCU điều khiển chính của OpenMV là STM32H7; hiện nay, chúng tôi đã bổ sung một tính năng mới cho OpenMV, cho phép thực hiện các tác vụ tương tự như phát hiện đối tượng ngay trên vi điều khiển, với hiệu năng rất ấn tượng.

Hôm nay chúng tôi sẽ trình bày cho quý vịHuấn luyện mô hình để nhận diện biển báo giao thông trong môi trường đường phố thực tế, nhận diện các biển báo giao thông trên đường thực tế của chúng taví dụ như cấm bấm còi, cấm đỗ xe, giới hạn tốc độ 80 km/h, chứ không phải môi trường phòng thí nghiệm không có nhiễu.
Bạn có thể xem toàn bộ nội dung dự án tại địa chỉ sau, bao gồm tất cả mã nguồn và mô hình: https://book.openmv.cc/project/traffic-sign.html
Như đã biết, môi trường thực tế rất phức tạp, đặc biệt là môi trường giao thông đường bộ, với nhiều yếu tố gây nhiễu. Chúng tôi sử dụng điện thoại và các thiết bị khác để chụp ảnh biển báo giao thông trong môi trường thực tế, sau đó huấn luyện mô hình trên trang web trực tuyến EdgeImpulse của đối tác OpenMV, với khoảng 270 ảnh được gắn nhãn. Thời gian huấn luyện chỉ mất 10 phút, độ chính xác F1-score của mô hình thu được đạt 92%, và tốc độ khung hình khi chạy trên OpenMV đạt 10 khung/giây, mang lại hiệu quả vận hành mượt mà và độ chính xác cao.
Người dùng có thể dựa vào các video hướng dẫn của chúng tôi để huấn luyện mô hình nhận diện bất kỳ đối tượng nào cần phát hiện, ví dụ như các chữ số khác nhau, các loại trái cây khác nhau, các biển báo khác nhau, các linh kiện khác nhau, hoặc thậm chí bất kỳ đối tượng không đều dạng cụ thể nào — tất cả đều có thể được huấn luyện để xác định số lượng, tọa độ và tên loại đối tượng.
Lưu ý:Bài hướng dẫn video trong tập này trình bày chức năng phát hiện điểm mục tiêu bằng mạng nơ-ron, không chỉ áp dụng được cho OpenMV4 H7 Plus mà còn hỗ trợ OpenMV4 H7, bởi vì mô hình phát hiện điểm mục tiêu FOMO đã huấn luyện có kích thước nhỏ, hiệu quả cao và chỉ chiếm vài chục KB; ngay cả khi bộ nhớ chạy của OpenMV4 H7 nhỏ hơn so với phiên bản Plus, chúng ta vẫn có thể huấn luyện một mô hình nhỏ hơn một chút để chạy trên OpenMV4.
Dưới đây là phần giới thiệu ngắn gọn về nguyên lý hoạt động:
Các quyết định thiết kế chính cho việc phát hiện điểm mục tiêu FOMO trên OpenMV dựa trên quan điểm rằng nhiều bài toán phát hiện đối tượng thực tế không yêu cầu biết kích thước của đối tượng, mà chỉ cần xác định vị trí của chúng trong ảnh. Khi đã biết vị trí của đối tượng, chúng ta có thể thực hiện các thao tác tiếp theo, ví dụ như điều khiển xe nhỏ di chuyển hướng về mục tiêu được nhận diện bởi OpenMV, điều khiển máy bay không người lái hạ cánh tại vị trí cố định hoặc điều khiển tay máy gắp lấy đối tượng cụ thể.
Mô hình FOMO là một mô hình được EdgeImpulse thiết kế đặc biệt cho môi trường vi điều khiển; khác với các mô hình phát hiện đối tượng thông thường, mô hình này chỉ có thể xác định vị trí và số lượng của nhiều đối tượng mà không thể xác định kích thước cụ thể của chúng.
Nguyên lý nền tảng của mô hình FOMO rất đơn giản và linh hoạt. Trước tiên, mô hình chia ảnh thành các khối, mỗi khối có kích thước 8x8 pixel. Đối với ảnh có độ phân giải 96x96, sẽ tạo thành lưới ô gồm 12x12 ô. Đối với ảnh có độ phân giải 360x360, sẽ tạo thành lưới ô gồm 40x40 ô. Sau đó, mô hình thực hiện phân loại ảnh một cách độc lập trên từng ô.
So với YOLO V5 hoặc MobileNet SSD, FOMO thể hiện hiệu suất tốt hơn nhiều khi phát hiện một lượng lớn các đối tượng nhỏ. Việc phát hiện điểm mục tiêu của FOMO nhanh hơn MobileNet SSD tới 30 lần.
Hiệu suất của FOMO sẽ tốt hơn nếu các đối tượng cần phát hiện có kích thước tương tự nhau, ví dụ như các biển báo bạn muốn nhận diện có kích thước gần như không chênh lệch nhiều, thay vì bao gồm cả một vật thể rất lớn và một vật thể rất nhỏ.
OpenMV sử dụng EdgeImpulse để huấn luyện trực tuyến mạng nơ-ron nhằm phát hiện điểm mục tiêu, chủ yếu bao gồm các bước sau: thu thập và tải lên tập dữ liệu hình ảnh, gắn nhãn mục tiêu, huấn luyện, kiểm tra mô hình và triển khai.
* Thu thập tập dữ liệu hình ảnh: Chụp ảnh các đối tượng cụ thể trong môi trường thực tế mà chúng ta cần nhận diện. Chúng ta sẽ thu thập hình ảnh thực tế trong cùng môi trường mà chúng ta thực hiện nhận diện; do đó, môi trường huấn luyện thực tế và môi trường phát hiện thực tế cơ bản là như nhau, từ đó mang lại hiệu quả tốt hơn.
* Mục tiêu ghi chú: Khung vùng bao quanh từng mục tiêu cần phát hiện trong tập dữ liệu của chúng tôi và gán đúng tên tương ứng cho mục tiêu đó nhằm hỗ trợ quá trình huấn luyện sau này cũng như xác định vị trí và tên của mục tiêu.
* Mô hình huấn luyện: Sau khi hoàn tất việc gán nhãn, tiến hành huấn luyện mô hình theo các tham số mạng nơ-ron tích chập đã được thiết kế bởi chúng tôi.
* Mô hình thử nghiệm: Chúng tôi thực hiện thử nghiệm dựa trên mô hình đã được huấn luyện; nếu hiệu quả không đạt yêu cầu, chúng tôi sẽ tương ứng mở rộng tập dữ liệu huấn luyện hoặc điều chỉnh các tham số huấn luyện, sau đó tiếp tục quá trình huấn luyện cho đến khi đạt được mô hình đáp ứng yêu cầu.
* Triển khai: Chúng tôi chỉ cần đặt tệp mô hình đã huấn luyện vào ổ USB tích hợp sẵn trên OpenMV để chạy.
Dưới đây là quy trình cụ thể:
01. Thu thập và tải lên tập dữ liệu hình ảnh
Một, trước tiên, truy cập trang web edgeimpulse.com, chọn “Đăng nhập”, nhập tên dự án mới được tạo, sau đó chọn “Hình ảnh” → “Phân loại nhiều đối tượng”

Hai là chọn ảnh để tải lên. Có một số cách để có được tập dữ liệu ảnh:
1. Thu thập hình ảnh theo thời gian thực thông qua OpenMV IDE. Sử dụng công cụ “Trình chỉnh sửa tập dữ liệu” trong OpenMV IDE để tạo tập dữ liệu mới và thu thập hình ảnh theo thời gian thực; chi tiết có thể tham khảo video hướng dẫn trước đây của chúng tôi về phân loại đối tượng và nhận diện khẩu trang.

2. Sử dụng hình ảnh được tải xuống từ mạng hoặc hình ảnh chụp thực tế bằng điện thoại di động; tốt nhất nên chọn những hình ảnh phản ánh đúng môi trường kiểm tra thực tế của bạn. Chúng tôi đã chuẩn bị khoảng bốn trăm đến năm trăm hình ảnh về các biển báo giao thông như “Cấm đỗ xe”, “Cấm bấm còi” và “Tốc độ tối đa 80 km/h”, tất cả đều được chụp trên các tuyến đường thực tế; tập dữ liệu này có thể tải xuống từ GitHub và trang web hướng dẫn của SingTown.
02. Mục tiêu ghi chú
Tải lên khoảng 100 hình ảnh cho mỗi danh mục; sau khi hoàn tất việc tải lên hình ảnh, cần tiến hành gán nhãn cho các hình ảnh này bằng cách xác định vị trí và phân loại các đối tượng mà chúng ta cần nhận diện.


03. Huấn luyện mô hình
Thiết lập các tham số huấn luyện, thay đổi độ phân giải thành 128×128, chọn toàn bộ các tham số đã thiết lập theo giá trị mặc định, sau đó nhấp vào Lưu.

Tạo các tính năng, với ba màu tương ứng đại diện cho ba biểu tượng khác nhau.

Thiết lập các tham số huấn luyện phát hiện đối tượng. Số vòng huấn luyện mặc định là 60 vòng, tốc độ học là 0,001, tỷ lệ tập kiểm chứng là 20%, chọn kích hoạt tăng cường dữ liệu, và mô hình học chuyển giao có thể chọn mặc định là MobileNetV2 0,35 hoặc MobileNetV2 0,1. (Lưu ý: Không được sử dụng SSD vì SSD không thể chạy trên OpenMV.)
Chọn Bắt đầu huấn luyện. Mô hình mạng nơ-ron thu được sau khi huấn luyện đạt điểm F1 là 91,2%; chúng ta có thể lưu phiên bản hiện tại.

Chọn bộ nhớ, nhập mô tả của bạn và chọn Lưu.

04. Triển khai mô hình
Xuất tệp mô hình đã được huấn luyện. Chỉ cần xuất thư viện, chọn OpenMV, sau đó nhấp vào Build để bắt đầu triển khai và xuất mô hình.

Nó sẽ tự động tải về mô hình mà chúng ta đã xuất ra; đây chính là mô hình được huấn luyện trên 300 ảnh của chúng ta, như vậy toàn bộ quá trình huấn luyện của chúng ta đã hoàn tất.

05. Chạy mô hình
Chạy mô hình trên OpenMV:
Kết nối OpenMV Plus, sao chép ba tệp đã huấn luyện vào ổ đĩa USB tích hợp của OpenMV, sau đó mở tệp ei_object_detection.py trong IDE của OpenMV. Nhấp vào nút Chạy; kết quả thực thi sẽ được hiển thị trên cửa sổ đầu cuối nối tiếp.


Tính năng này cũng có thể chạy trên OpenMV4. Do OpenMV4 không có SDRAM bên ngoài nên dung lượng bộ nhớ nhỏ hơn; do đó, chúng ta có thể thu nhỏ kích thước mô hình để nó có thể chạy được trên OpenMV4.
Có hai phương pháp để giảm kích thước mô hình:
Một, giảm độ phân giải huấn luyện, thay đổi độ phân giải từ 128×128 thành 96×96.
Hai, sửa đổi mô hình học chuyển giao đang sử dụng, thay MobileNetV2 0.35 bằng MobileNetV2 0.1.
Cuối cùng, đặt tệp mới đã được huấn luyện vào OpenMV4 để thực thi.
Đây là hướng dẫn phát hiện điểm mục tiêu của chúng tôi. Chúng tôi rất mong chờ thành quả của bạn!

Chốt gác AI dựa trên OpenMV: Cảnh báo tự động khi thiết bị chưa được tắt tại các khu vực trọng yếu
Tự động xác định xem cửa của các địa điểm trọng yếu có bị mở trong thời gian dài hay không và kịp thời gửi cảnh báo.

Cảnh báo ngay khi nhân viên vượt qua ranh giới, OpenMV thể hiện khái niệm “ranh giới an toàn”
Nhận diện hành vi vượt ranh giới của con người hoặc thiết bị thông qua đường cảnh báo ảo.

“AI Quản lý thành phố” đã có mặt: Hệ thống nhận diện tự động việc kinh doanh chiếm dụng lòng lề đường dựa trên OpenMV
Tự động nhận diện hành vi kinh doanh chiếm dụng lòng lề đường nhằm hỗ trợ công tác quản lý đô thị thường ngày.

Bình gas để bừa bãi? Tận dụng OpenMV để tự động kích hoạt cảnh báo nguy hiểm
Tự động nhận diện vị trí đặt bình gas không đúng quy định nhằm phát hiện sớm các nguy cơ mất an toàn về khí đốt.

Thao tác trên thiết bị đang có điện mà không đeo găng tay cách điện? OpenMV sẽ lập tức phát cảnh báo!
Tự động nhận diện việc người lao động có đeo găng tay cách điện hay không nhằm hỗ trợ công tác an toàn.

Sử dụng camera thông minh OpenMV để nhận diện khuyết tật trên bề mặt tấm nhôm theo thời gian thực
Nhận diện trực tuyến các khuyết tật trên bề mặt tấm nhôm như vết xước, lõm và các khuyết tật khác nhằm hỗ trợ kiểm soát chất lượng.