Mục lục:

Sipeed MaiX Bit OpenMV Demos - Thị giác máy tính: 3 bước
Sipeed MaiX Bit OpenMV Demos - Thị giác máy tính: 3 bước

Video: Sipeed MaiX Bit OpenMV Demos - Thị giác máy tính: 3 bước

Video: Sipeed MaiX Bit OpenMV Demos - Thị giác máy tính: 3 bước
Video: Webinar: Giải Pháp Thị Giác Máy Tổng Thể (Machine Vision) Trong Nhà Máy Thông Minh 2024, Tháng mười một
Anonim
Image
Image

Đây là bài viết thứ hai trong loạt bài về Sipeed AI trên nền tảng vi điều khiển Edge. Lần này tôi sẽ viết về MaiX Bit (liên kết đến Seeed Studio Shop), một bảng phát triển sẵn sàng cho breadboard nhỏ hơn. Các thông số kỹ thuật của nó rất giống với MaiX Dock, bảng mà tôi đã sử dụng cho bài hướng dẫn trước, vì chúng sử dụng cùng một con chip, Kendryte K210.

Chúng tôi sẽ sử dụng chương trình cơ sở vi chương trình để thử một số bản trình diễn OpenMV. Đây là mô tả từ trang chủ OpenMV:

Dự án OpenMV là về việc tạo ra các mô-đun thị giác máy chi phí thấp, có thể mở rộng, được hỗ trợ bởi Python và nhằm mục đích trở thành “Arduino của Thị giác máy”.… Python giúp làm việc với các thuật toán thị giác máy dễ dàng hơn nhiều. Ví dụ: phương thức find_blobs () trong mã tìm các đốm màu và trả về danh sách các đối tượng có giá trị 8 đại diện cho mỗi đốm màu được tìm thấy. Trong Python, việc lặp lại danh sách các đối tượng được trả về bởi find_blobs () và vẽ một hình chữ nhật xung quanh mỗi đốm màu có thể dễ dàng thực hiện chỉ trong hai dòng mã.

Vì vậy, mặc dù MaiX Bit có tính năng tăng tốc mạng nơ-ron chuyên dụng, đôi khi có thể dễ dàng hơn nếu chỉ sử dụng các thuật toán mã hóa cứng OpenMV để thực hiện công việc hoặc sử dụng chúng song song với nhau.

Một số trường hợp sử dụng mà tôi nghĩ đến là:

1) Phát hiện dòng cho bot theo dõi dòng

2) Phát hiện đèn giao thông với phát hiện vòng tròn và màu sắc

3) Sử dụng tính năng nhận diện khuôn mặt để tìm các khuôn mặt để nhận dạng khuôn mặt (với DNN)

Kho lưu trữ Github cho bài viết này

Bước 1: Phần mềm cơ sở Flash Micropython

Kết nối với MaiX Bit
Kết nối với MaiX Bit

Trước hết, chúng ta sẽ cần flash firmware micropython vào bảng của chúng ta. Một bản nhị phân được biên dịch trước được bao gồm trong kho lưu trữ github cho bài viết này, cùng với kflash.py (một tiện ích flash). Nếu bạn muốn biên dịch phần sụn từ mã nguồn, chỉ cần tải xuống mã nguồn từ https://github.com/sipeed/MaixPy, cài đặt chuỗi công cụ và biên dịch mã nguồn thành tệp maixpy.bin. Hướng dẫn xây dựng chi tiết có thể được tìm thấy tại đây.

Flash tệp nhị phân với

sudo python3 kflash.py kpu.bin

Sau khi nhấp nháy thành công, hãy làm theo bước tiếp theo.

Bước 2: Kết nối với MaiX Bit

Giờ đây, Bit MaiX của chúng tôi có thể được truy cập thông qua kết nối nối tiếp USB với baudrate 115200. Bạn có thể sử dụng phần mềm yêu thích của mình để giao tiếp nối tiếp hoặc chỉ lệnh cat và echo, bất cứ điều gì phù hợp với nhu cầu của bạn. Tôi đã sử dụng màn hình để giao tiếp nối tiếp và thấy nó rất thuận tiện.

Lệnh để thiết lập một phiên giao tiếp nối tiếp với màn hình là

sudo screen / dev / ttyUSB0 115200

trong đó / dev / ttyUSB0 là địa chỉ thiết bị của bạn.

Bạn có thể cần nhấn nút đặt lại trên bộ vi điều khiển của mình để xem thông báo chào mừng và lời nhắc thông dịch python.

Bước 3: Chạy Demo

Bây giờ bạn có thể truy cập chế độ sao chép bằng cách nhấn Ctrl + E và sao chép-dán các mã demo. Để chạy chúng, hãy nhấn Ctrl + D trong chế độ sao chép.

Nếu bạn không muốn quay video, bạn cần phải chú thích các dòng quay video. Nếu không, mã sẽ xuất hiện một ngoại lệ nếu không có thẻ SD được lắp vào

Dưới đây là mô tả ngắn về từng bản demo:

Tìm vòng kết nối - sử dụng chức năng find_circles từ OpenMV. Cần điều chỉnh nhiều hơn cho ứng dụng cụ thể của bạn, đặc biệt là ngưỡng (kiểm soát những vòng tròn nào được phát hiện từ biến đổi hough. Chỉ những vòng tròn có độ lớn lớn hơn hoặc bằng ngưỡng mới được trả về) và giá trị r_min, r_max.

Tìm hình chữ nhật - sử dụng hàm find_rects từ OpenMV. Bạn có thể thử với giá trị ngưỡng, nhưng giá trị mà tôi có trong bản demo hoạt động khá tốt để tìm hình chữ nhật.

Tìm khuôn mặt, tìm mắt - sử dụng chức năng find_features với Haar Cascades để phát hiện mắt và mặt trước trong ảnh. Bạn có thể thử nghiệm với các giá trị ngưỡng và tỷ lệ để có sự cân bằng giữa tốc độ và độ chính xác phù hợp.

Tìm các dòng vô hạn - sử dụng hàm find_lines để tìm tất cả các dòng vô hạn trong hình ảnh bằng cách sử dụng phép biến đổi hough.

Phát hiện màu - sử dụng hàm get_st Statistics để lấy đối tượng phần trăm và sau đó chuyển đổi các giá trị trung bình của bộ giá trị LAB thành bộ giá trị RGB. Tôi đã tự viết ví dụ này và nó hoạt động khá tốt, nhưng hãy nhớ rằng kết quả phát hiện màu sẽ bị ảnh hưởng bởi điều kiện ánh sáng xung quanh.

Bạn có thể tìm thấy nhiều bản demo thú vị khác trong kho lưu trữ github của OpenMV! Chúng hầu như tương thích với vi cuộc thi MaiX Bit, điều duy nhất bạn cần nhớ là thêm sensor.run (1) sau khi thiết lập pixformat và frameize.

Chúc bạn thử nghiệm vui vẻ với mã OpenMV. Nếu bạn có bất kỳ câu hỏi nào hoặc muốn chia sẻ một số kết quả thú vị của mình, đừng ngần ngại liên hệ với tôi trên Youtube hoặc LinkedIn. Bây giờ, xin lỗi, tôi sẽ đi làm một số robot!

Đề xuất: