Оглавление:

AI-камера для Raspberry Pi / Arduino: 7 шагов
AI-камера для Raspberry Pi / Arduino: 7 шагов

Видео: AI-камера для Raspberry Pi / Arduino: 7 шагов

Видео: AI-камера для Raspberry Pi / Arduino: 7 шагов
Видео: Автопилот для автомобиля на raspberry pi, arduino и OpenCV 2024, Ноябрь
Anonim
Image
Image

Если вы следили за новостями в последнее время, произошел взрыв стартапов, разрабатывающих чипы для ускорения вывода и обучения алгоритмов машинного обучения. Однако большинство этих чипов все еще находятся в стадии разработки, и средний производитель вряд ли сможет их достать. Единственным существенным исключением на данный момент является Intel Movidius Neural Compute Stick, который доступен для покупки и поставляется с хорошим SDK. У него есть несколько существенных недостатков, а именно цена (около 100 долларов США) и тот факт, что он поставляется в формате USB-накопителя. Это здорово, если вы хотите использовать его с ноутбуком или Raspberry PI, но что, если вы хотите выполнить некоторые проекты по распознаванию изображений с помощью Arduino? Или Raspberry Pi Zero?

Шаг 1: Sipeed MAix: AI на грани

Sipeed MAix: ИИ на грани
Sipeed MAix: ИИ на грани

Не так давно мне попалась плата для разработки Sipeed M1w K210, которая имеет двухъядерный 64-битный процессор RISC-V и может похвастаться встроенным KPU (нейросетевым процессором), специально разработанным для ускорения CNN для обработки изображений. Вы можете прочитать больше здесь.

Цена этой платы меня откровенно шокировала, она всего 19 долларов за полноценную плату разработки AI-on-the-edge с поддержкой Wi-Fi! Однако есть предостережение (конечно, есть): микропрограмма micropython для платы все еще находится в разработке, и в целом на данный момент она не слишком удобна для пользователя. Единственный способ получить доступ ко всем его функциям прямо сейчас - это написать собственный встроенный код C или изменить некоторые существующие демонстрации.

В этом руководстве объясняется, как использовать модель обнаружения классов Mobilenet 20 для обнаружения объектов и отправки кода обнаруженного объекта через UART, откуда он может быть получен Arduino / Raspberry Pi.

Предполагается, что вы знакомы с Linux и основами компиляции кода C. Если от этой фразы у вас закружилась голова:), просто переходите к шагу 4, где вы загружаете мой предварительно созданный двоичный файл в Sipeed M1 и пропускаете компиляцию.

Шаг 2. Подготовьте окружающую среду

Подготовьте свое окружение
Подготовьте свое окружение

Я использовал Ubuntu 16.04 для компиляции и загрузки кода C. В Windows это можно сделать, но сам я не пробовал.

Скачайте RISC-V GNU Compiler Toolchain, установите все необходимые зависимости.

git clone - рекурсивный

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

Скопируйте загруженную цепочку инструментов в каталог / opt. После этого выполните следующие команды

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

делать

Добавьте / opt / kendryte-toolchain / bin в свой PATH сейчас.

Теперь вы готовы скомпилировать код!

Шаг 3: скомпилируйте код

Скомпилируйте код
Скомпилируйте код

Загрузите код из моего репозитория на github.

Загрузить автономный SDK для Kendryte K210

Скопируйте папку / kpu из моего репозитория github в папку / src в SDK.

Выполните следующие команды в папке SDK (не в папке / src!)

mkdir build && cd build

cmake.. -DPROJ = имя_проекта -DTOOLCHAIN = / opt / kendryte-toolchain / bin && make

где имя_проекта - это имя вашего проекта (на ваше усмотрение), а -DTOOLCHAIN = должен указывать на расположение вашей цепочки инструментов risc-v (вы загрузили его на первом шаге, помните?)

Большой! Теперь, надеюсь, вы увидите, что компиляция завершилась без ошибок и у вас есть файл.bin, который вы можете загрузить.

Шаг 4. Загрузка файла.bin

Загрузка файла.bin
Загрузка файла.bin

Теперь подключите Sipeed M1 к компьютеру и из папки / build выполните следующую команду

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

Где kpu.bin - это имя вашего.bin файла

Загрузка обычно занимает 2-3 минуты, после этого вы увидите, что на плате выполняется обнаружение 20 классов. Последний шаг для нас - подключить его к Arduino Mega или Raspberry Pi.

!!! Если вы только что пришли с шага 2 !

Выполните следующую команду из папки, в которой вы клонировали мой репозиторий github

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

Загрузка обычно занимает 2-3 минуты, после этого вы увидите, что на плате выполняется обнаружение 20 классов. Последний шаг для нас - подключить его к Arduino Mega или Raspberry Pi.

Шаг 5: подключение к Arduino

Подключение к Arduino
Подключение к Arduino
Подключение к Arduino
Подключение к Arduino
Подключение к Arduino
Подключение к Arduino

Я использовал Arduino Mega с Seeed Studio Mega Shield, поэтому я припаял разъем Grove к плате Sipeed M1. Однако вы можете просто использовать перемычки и подключить Sipeed M1 напрямую к Arduino Mega, следуя этой схеме подключения.

После этого загрузите скетч camera.ino и откройте последовательный монитор. Когда вы наводите камеру на разные объекты (список из 20 классов находится в скетче), она должна выводить имя класса на серийный монитор!

Поздравляю! Теперь у вас есть рабочий модуль обнаружения изображений для вашего Arduino!

Шаг 6: Подключение к Raspberry Pi

Подключение к Raspberry Pi
Подключение к Raspberry Pi
Подключение к Raspberry Pi
Подключение к Raspberry Pi

Я использовал шляпу Grove Pi + для Raspberry Pi 2B, но опять же, как и в случае с Arduino, вы можете просто напрямую подключить Sipeed M1 к интерфейсу UART Raspberry Pi, следуя этой схеме подключения.

После этого запустите camera_speak.py и наведите камеру на разные объекты, терминал выдаст следующий текст «Я думаю, что это так», а также, если у вас подключены динамики, он произнесет эту фразу вслух. Довольно круто, не правда ли?

Шаг 7: Заключение

Мы живем в очень волнующее время, когда ИИ и машинное обучение проникают во все сферы нашей жизни. Я с нетерпением жду развития в этой области. Я поддерживаю связь с командой Sipeed, и я знаю, что они активно разрабатывают оболочку micropython для всех необходимых функций, включая ускорение CNN.

Когда он будет готов, я, скорее всего, опубликую больше инструкций о том, как использовать ваши собственные модели CNN с микропайтоном. Подумайте обо всех интересных приложениях, которые вы можете иметь для платы, которая может запускать ваши собственные нейронные сети для обработки изображений по этой цене и с такими габаритами!

Рекомендуемые: