Найти в Дзене
Кириши HackerSpace

YOLO и нейрокамень Rockchip RV1106

Привет ребят.

С новым годом всех.

Давненько не было статеек.

Это будет интересная статья с грустным концом.

Сегодня речь пойдёт о плате LuckFox Pico с процессором Rockchip RV1106 и NPU модулем с заявленной производительностью 1TOPS (триллион операций в секунду)

Масштаб LuckFox Pico Max
Масштаб LuckFox Pico Max
NPU (Neural Processing Unit) - специализированный математический сопроцессор (нейросетевой ускоритель) применяется для матричных вычислений и операции с плавающей запятой, которые требуют высокой вычислительной мощности при минимальном энергопотреблении. Главная особенность NPU заключается в параллельной архитектуре, оптимизированной для обработки больших массивов данных одновременно, что делает его гораздо эффективнее традиционных CPU и GPU в задачах ИИ работы алгоритмов нейросетей.
Блок схема RV1106
Блок схема RV1106

Заявленные производителем Specifications:

Processor:---------Cortex A7@1.2GHz

NPU:----------------1TOPS, int4, int8 ,int16

ISP:-----------------Input 5M @30fps (Max)

Memory:-----------Max: 256MB DDR2

USB:----------------USB 2.0 Host/Device

Camera:------------MIPI CSI 2-lane

GPIO:---------------26 × GPIO pins

Ethernet port:------10/100M Ethernet and embedded PHY

Default Storage:---SPI NAND FLASH (256MB)

Распиновка платы

Pinout
Pinout

Мигать светодиодами мы тут не будем, вместо мигания - желающие могут сразу накатить Ubuntu :)

Ubuntu 22.04 на LuckFox Pico с XFCE через vnc
Ubuntu 22.04 на LuckFox Pico с XFCE через vnc

В этой статье мы установим Buildroot прошивку на MicroSD и будем использовать возможности именно NPU модуля.

В результате наших движений эта железяка должна будет начать детектировать объекты на изображениях с USB-камеры или удалённых камер под управлением OpenIPC

1 Frame Per Second
1 Frame Per Second

Драйвера , Прошивки , даташиты и другой полезный софт любезно представлены на сайте производителя

(правда почему то только под Win)

Из всего этого нам понадобятся:

- DriverAssistant-RK собстно сами драйверята

- SocToolKit - утилита для прошивки и создания образов для SD

Так же необходимо будет скачать саму Buildroot прошивку (LuckFox_Pico_Max_MicroSD.zip) из раздела Firmware

Go !

Распаковываем прошивку...

Ставим дрова...

Стартуем SocToolKit...

Chip Selection
Chip Selection

выбираем наш камень RV1106 , переходим во вкладку SDTool

SDTool
SDTool

Выбираем файлы прошивки и жмём Create SD

Справа видим лог выполнения...

Если всё ОК.

Суём флэху в LuckFox подключаем питание, Lan кабель и чекаем её адрес, чтобы подцепится к ней по ssh, это можно сделать либо в панели управления роутера, либо каким нибудь сетевым сканером:

nmap 192.168.2.*
ssh login:root pass:luckfox
ssh login:root pass:luckfox

далее с github'а качаем наш репозиторий .zip архивом и закидываем любым удобным для нас способом на LuckFox, я юзал scp:

scp webyolofox.zip root@192.168.2.211:/root/.

* В репозиторий я собрал некоторые утилиты и библиотеки необходимые для экспериментов, но отсутствующие в официальной прошивке, такие как tiny вебсервер, fswebcam, libgd.so.3, libjpeg.so.8 и т.д

Cross-Compile
Cross-Compile

Далее распакуем webyolofox.zip

и перейдём в каталог с инсталлером install.sh

ставим права и выполняем:

chmod a+x install.sh
./install.sh

Готово !

- Можно проверять?

Нее!

Плата LuckFox по дефолту имеет всего 1 USB который используется для питания и прошивки. Для того чтобы использовать USB-камеру нам необходимы дополнительное барахло:

USB-хаб с питанием, блэкджеком и куртизанками
USB-хаб с питанием, блэкджеком и куртизанками

Собираем всю эту бороду воедино, включаем и...

Настраиваем...

По умолчанию USB порт на плате настроен в режим device

...
...

Чтобы он узрел наше новое оборудование, нужно переключить его в режим Host

вызываем конфигуратор:

luckfox-config

Переходим в Advanced Option => USB и меняем режим.

сохраняем изменения и командуем!

reboot

После ребута смотрим логи ядра

dmesg

И видим нашу USB-камеру:

Перфекто ! Ребзя ! Это победа
Перфекто ! Ребзя ! Это победа

Давайте же тестировать.

Команда

./start.sh

Поднимет вебсервер на 8080 порту вашей платы, обратимся к нему, позырим чё там по адресу

http://192.168.2.211:8080/index.html
Частота обновления с USB камерой 1 кадр в секунду
Частота обновления с USB камерой 1 кадр в секунду

круханы детектируются, значит всё ОK.

Останавливаем процессы ./stop.sh

с USB-камерой разобрались, чё там с удалёнными камерами на OpenIPC ?

переходим в

cd webyolofox/remote

забиваем адрес своей камеры в файле eye.sh

И стартуем демона:

./start_remote.sh

переходим по старому адресу и видим:

Car , Car , Car
Car , Car , Car

Ну и на последок проверим скрипт подсчёта Задетектированных объектов на какой нибудь рандомной картинке, из интернета, предварительно скачав её wget'ом в директорию webyolofox

Там же запускаем:

./detect.sh <IMAGE.JPG> <OBJECT>

И видим результат подсчёта:

-15

Если результат выполнения возвращает 0 , то искомый объект на изображении отсутствует.

Полный список доступных для детектирования объектов можно посмотреть в файле webyolofox/model/coco_80_labels_list.txt

Варианты использования:

- Можно выбрать хороший ракурс для своей камеры на парковке, зарядить cron и периодически чекать, есть ли свободное место или нет.

* Конечно такая система детектирования далека от идеала и зависит от многих внешних факторов таких как освещение, снег, туман и т.д

GoodLuck Everybody !

P.S. Совсем недавно Дзен внедрил платные подписки и многие авторы лихорадочно ломанулись монетизировать свой контент, без всяких сомнений это их дело, я тоже мог бы сделать эту статью платной, но руководствуясь своими принципами, решил отказаться от платных подписок. На этом канале всё для всех будет бесплатно, независимо от достатка, пола, возраста и национальности.

Принуждать людей платить за подписки, противоречит нашей философии.

gnu.org FEEL FREE
gnu.org FEEL FREE

За 10 лет существования сообщества, у меня не было ни спонсоров, ни государственной поддержки, я не пилю гранты и не сплю с дочерью миллионера ) Все мои опыты, поездки, статьи и видео были исключительно на энтузиазме.

Если вы вдруг считаете мою писанину полезной и интересной, если у вас есть возможности и желание помочь финансово, я сторонник добровольных пожертвований (донатов)

Совершить которое можно по ссылке ниже.

Пожертвовать на развитие канала

Спасибо что дочитали до конца.