Mục lục:
- Bước 1: Sipeed MAix: AI ở cạnh
- Bước 2: Chuẩn bị môi trường của bạn
- Bước 3: Biên dịch mã
- Bước 4: Tải lên tệp.bin
- Bước 5: Kết nối với Arduino
- Bước 6: Kết nối với Raspberry Pi
- Bước 7: Kết luận
Video: AI Camera cho Raspberry Pi / Arduino: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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
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
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ã
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
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
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
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:
Một bản hack bàn di chuột tuyệt vời cho máy tính xách tay cho các dự án Arduino !: 18 bước (có hình ảnh)
Một bản hack bàn di chuột tuyệt vời dành cho máy tính xách tay dành cho các dự án Arduino!: Một thời gian trước, khi tôi đang mày mò với bàn di chuột PS / 2 với vi điều khiển Arduino, tôi phát hiện ra rằng hai trong số các kết nối tích hợp của nó có thể được sử dụng làm đầu vào kỹ thuật số. Trong Có thể hướng dẫn này, chúng ta hãy tìm hiểu cách chúng ta có thể sử dụng tiện ích của bàn di chuột PS / 2
Cảm biến nhiệt độ cho Arduino Được áp dụng cho COVID 19: 12 Bước (có Hình ảnh)
Cảm biến nhiệt độ cho Arduino Áp dụng cho COVID 19: Cảm biến nhiệt độ cho Arduino là yếu tố cơ bản khi chúng ta muốn đo nhiệt độ của bộ xử lý của cơ thể con người. Cảm biến nhiệt độ với Arduino phải tiếp xúc hoặc gần để nhận và đo mức nhiệt. Đó là cách t
Sử dụng 1 đầu vào tương tự cho 6 nút cho Arduino: 6 bước
Sử dụng 1 Đầu vào Analog cho 6 Nút cho Arduino: Tôi thường tự hỏi làm cách nào để có thêm Đầu vào Kỹ thuật số cho Arduino của mình. Gần đây tôi nghĩ rằng tôi có thể sử dụng một trong các Đầu vào Analog để mang lại nhiều đầu vào kỹ thuật số. Tôi đã tìm kiếm nhanh và tìm thấy nơi mọi người đang
Tình yêu dành cho người chơi game, Dự án Arduino dành cho người độc thân: 5 bước
Tình yêu dành cho người chơi game, Dự án Arduino dành cho người độc thân: Có thể hướng dẫn này nói về dự án Arduino của tôi có tên " Tình yêu dành cho người chơi game " vốn bắt đầu như một công cụ để cười khúc khích và vui vẻ. Nó không hoàn hảo hay bất cứ thứ gì, nhưng nó hoạt động
Bộ phân phối thức ăn cho chó được hỗ trợ bởi Arduino: 10 bước (có hình ảnh)
Arduino Powered Dog Food Dispenser: Nếu ngôi nhà của bạn giống như của tôi, một số nhiệm vụ có thể bị quên khi đang gấp. Đừng để nó trở thành thú cưng của bạn bị lãng quên! Máy phân phối thức ăn cho chó tự động này sử dụng Arduino để phân phối đúng lượng thức ăn cho chó vào đúng thời điểm. Tất cả