Mục lục:

AI Camera cho Raspberry Pi / Arduino: 7 bước
AI Camera cho Raspberry Pi / Arduino: 7 bước

Video: AI Camera cho Raspberry Pi / Arduino: 7 bước

Video: AI Camera cho Raspberry Pi / Arduino: 7 bước
Video: GIAO TIẾP RASPBERY VÀ VI ĐIỀU KHIỂN - PI ARDUINO - PI ARM - PI ESP 2024, Tháng sáu
Anonim
Image
Image

Nếu bạn đang theo dõi tin tức gần đây, đã có sự bùng nổ của các công ty khởi nghiệp đang phát triển chip để tăng tốc suy luận và đào tạo thuật toán ML (machine learning). Tuy nhiên, hầu hết những con chip đó vẫn đang được phát triển và không thực sự là thứ mà nhà sản xuất bình thường của bạn có thể nhúng tay vào. Ngoại lệ quan trọng duy nhất cho đến nay là Intel Movidius Neural Compute Stick, có sẵn để mua và đi kèm với một SDK tốt. Nó có một vài nhược điểm đáng kể - đó là giá (khoảng 100 USD) và thực tế là nó có định dạng thanh USB. Thật tuyệt nếu bạn muốn sử dụng nó với máy tính xách tay hoặc Raspberry PI, nhưng nếu bạn muốn thực hiện một số dự án nhận dạng hình ảnh với Arduino thì sao? Hoặc Raspberry Pi Zero?

Bước 1: Sipeed MAix: AI ở cạnh

Sipeed MAix: AI ở cạnh
Sipeed MAix: AI ở cạnh

Cách đây không lâu, tôi đã có trên tay bo mạch phát triển Sipeed M1w K210, có CPU RISC-V 64bit lõi kép và tự hào có KPU trên bo mạch (Bộ xử lý mạng thần kinh), được thiết kế đặc biệt để tăng tốc CNN cho xử lý hình ảnh. Bạn có thể đọc thêm chi tiết tại đây.

Giá của bảng này thực sự gây sốc cho tôi, nó chỉ là 19 USD cho bảng phát triển AI-on-the-edge đầy đủ với hỗ trợ Wi-fi! Mặc dù vậy, có một lưu ý (tất nhiên là có): phần sụn vi chạy cho bo mạch vẫn đang được phát triển và nhìn chung nó không quá thân thiện với người dùng như bây giờ. Cách duy nhất để truy cập tất cả các chức năng của nó ngay bây giờ là viết mã C nhúng của riêng bạn hoặc sửa đổi một số bản trình diễn hiện có.

Hướng dẫn này giải thích cách sử dụng mô hình phát hiện lớp Mobilenet 20 để phát hiện các đối tượng và gửi mã đối tượng được phát hiện thông qua UART, từ đó Arduino / Raspberry Pi có thể nhận mã này.

Bây giờ, hướng dẫn này giả định rằng bạn đã quen thuộc với Linux và những điều cơ bản về biên dịch mã C. Nếu việc nghe thấy cụm từ này khiến bạn hơi chóng mặt:) thì chỉ cần chuyển sang Bước 4, nơi bạn tải tệp nhị phân được tạo sẵn của tôi lên Sipeed M1 và bỏ qua quá trình biên dịch.

Bước 2: Chuẩn bị môi trường của bạn

Chuẩn bị môi trường của bạn
Chuẩn bị môi trường của bạn

Tôi đã sử dụng Ubuntu 16.04 để biên dịch và tải lên mã C. Có thể làm điều đó trong Windows, nhưng bản thân tôi đã không thử.

Tải xuống RISC-V GNU Compiler Toolchain, cài đặt tất cả các phụ thuộc cần thiết.

git clone --recursive

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

Sao chép chuỗi công cụ đã tải xuống vào thư mục / opt. Sau đó chạy các lệnh sau

./configure --prefix = / opt / kendryte-toolchain --with-cmodel = medany

chế tạo

Thêm / opt / kendryte-toolchain / bin vào PATH của bạn ngay bây giờ.

Bây giờ bạn đã sẵn sàng biên dịch mã!

Bước 3: Biên dịch mã

Biên dịch mã
Biên dịch mã

Tải xuống mã từ kho lưu trữ github của tôi.

Tải xuống SDK độc lập Kendryte K210

Sao chép thư mục / kpu từ kho lưu trữ github của tôi vào thư mục / src trong SDK.

Chạy các lệnh sau trong thư mục SDK (không phải thư mục / src!)

mkdir build && cd build

cmake.. -DPROJ = project_name -DTOOLCHAIN = / opt / kendryte-toolchain / bin && make

trong đó project_name là tên dự án của bạn (tùy thuộc vào bạn) và -DTOOLCHAIN = phải trỏ đến vị trí chuỗi công cụ risc-v của bạn (bạn đã tải xuống ở bước thứ nhất, nhớ không?)

Tuyệt vời! Bây giờ, hy vọng bạn sẽ thấy quá trình biên dịch hoàn tất mà không có lỗi và bạn có tệp.bin có thể tải lên.

Bước 4: Tải lên tệp.bin

Tải lên tệp.bin
Tải lên tệp.bin

Bây giờ kết nối Sipeed M1 của bạn với máy tính và từ thư mục / build, hãy chạy lệnh sau

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu.bin

Trong đó kpu.bin là tên tệp.bin của bạn

Quá trình tải lên thường mất 2-3 phút, sau khi hoàn tất, bạn sẽ thấy bảng chạy phát hiện 20 lớp. Bước cuối cùng đối với chúng tôi là kết nối nó với Arduino mega hoặc Raspberry Pi.

!!! Nếu bạn chỉ đến từ Bước 2 !!

Chạy lệnh sau từ thư mục mà bạn đã sao chép kho lưu trữ github của tôi

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu_bin.bin

Quá trình tải lên thường mất 2-3 phút, sau khi hoàn tất, bạn sẽ thấy bảng chạy phát hiện 20 lớp. Bước cuối cùng đối với chúng tôi là kết nối nó với Arduino mega hoặc Raspberry Pi.

Bước 5: Kết nối với Arduino

Kết nối với Arduino
Kết nối với Arduino
Kết nối với Arduino
Kết nối với Arduino
Kết nối với Arduino
Kết nối với Arduino

Tôi đã sử dụng Arduino Mega với Seeed Studio Mega Shield, đây là lý do tại sao tôi hàn đầu nối Grove vào bo mạch Sipeed M1. Tuy nhiên, bạn chỉ có thể sử dụng dây nhảy và kết nối Sipeed M1 trực tiếp với Arduino Mega, theo sơ đồ đấu dây này.

Sau đó tải lên bản phác thảo camera.ino và mở màn hình Nối tiếp. Khi bạn trỏ máy ảnh vào các đối tượng khác nhau (danh sách 20 lớp trong bản phác thảo), nó sẽ xuất ra tên của lớp đó trong màn hình nối tiếp!

Xin chúc mừng! Bây giờ bạn có mô-đun phát hiện hình ảnh đang hoạt động cho Arduino của mình!

Bước 6: Kết nối với Raspberry Pi

Kết nối với Raspberry Pi
Kết nối với Raspberry Pi
Kết nối với Raspberry Pi
Kết nối với Raspberry Pi

Tôi đã sử dụng Grove Pi + hat cho Raspberry Pi 2B, nhưng một lần nữa, như với Arduino, bạn chỉ có thể kết nối trực tiếp Sipeed M1 với giao diện UART của Raspberry Pi theo sơ đồ đấu dây này.

Sau đó khởi chạy camera_speak.py và hướng máy ảnh đến các đối tượng khác nhau, thiết bị đầu cuối sẽ xuất ra văn bản sau "Tôi nghĩ là như vậy" và cũng như nếu bạn có loa được kết nối, nó sẽ nói to cụm từ này. Khá tuyệt phải không?

Bước 7: Kết luận

Đây là thời kỳ rất khó khăn mà chúng ta đang sống, với AI và máy học thâm nhập vào tất cả các lĩnh vực trong cuộc sống của chúng ta. Tôi đang mong đợi sự phát triển trong lĩnh vực này. Tôi đang giữ liên lạc với nhóm Sipeed và tôi biết họ đang tích cực phát triển trình bao bọc micropython cho tất cả các chức năng cần thiết, bao gồm cả tăng tốc CNN.

Khi nó đã sẵn sàng, tôi rất có thể sẽ xuất bản nhiều tài liệu hướng dẫn hơn về cách sử dụng các mô hình CNN của riêng bạn với micropython. Hãy nghĩ đến tất cả các ứng dụng thú vị mà bạn có thể có cho một bo mạch có thể chạy mạng nơ-ron xử lý hình ảnh của riêng bạn với mức giá này và với dấu chân này!

Đề xuất: