Привет ребят.
С новым годом всех.
Давненько не было статеек.
Это будет интересная статья с грустным концом.
Сегодня речь пойдёт о плате LuckFox Pico с процессором Rockchip RV1106 и NPU модулем с заявленной производительностью 1TOPS (триллион операций в секунду)
NPU (Neural Processing Unit) - специализированный математический сопроцессор (нейросетевой ускоритель) применяется для матричных вычислений и операции с плавающей запятой, которые требуют высокой вычислительной мощности при минимальном энергопотреблении. Главная особенность NPU заключается в параллельной архитектуре, оптимизированной для обработки больших массивов данных одновременно, что делает его гораздо эффективнее традиционных CPU и GPU в задачах ИИ работы алгоритмов нейросетей.
Заявленные производителем 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)
Распиновка платы
Мигать светодиодами мы тут не будем, вместо мигания - желающие могут сразу накатить Ubuntu :)
В этой статье мы установим Buildroot прошивку на MicroSD и будем использовать возможности именно NPU модуля.
В результате наших движений эта железяка должна будет начать детектировать объекты на изображениях с USB-камеры или удалённых камер под управлением OpenIPC
Драйвера , Прошивки , даташиты и другой полезный софт любезно представлены на сайте производителя
(правда почему то только под Win)
Из всего этого нам понадобятся:
- DriverAssistant-RK собстно сами драйверята
- SocToolKit - утилита для прошивки и создания образов для SD
Так же необходимо будет скачать саму Buildroot прошивку (LuckFox_Pico_Max_MicroSD.zip) из раздела Firmware
Go !
Распаковываем прошивку...
Ставим дрова...
Стартуем SocToolKit...
выбираем наш камень RV1106 , переходим во вкладку SDTool
Выбираем файлы прошивки и жмём Create SD
Справа видим лог выполнения...
Если всё ОК.
Суём флэху в LuckFox подключаем питание, Lan кабель и чекаем её адрес, чтобы подцепится к ней по ssh, это можно сделать либо в панели управления роутера, либо каким нибудь сетевым сканером:
nmap 192.168.2.*
далее с github'а качаем наш репозиторий .zip архивом и закидываем любым удобным для нас способом на LuckFox, я юзал scp:
scp webyolofox.zip root@192.168.2.211:/root/.
* В репозиторий я собрал некоторые утилиты и библиотеки необходимые для экспериментов, но отсутствующие в официальной прошивке, такие как tiny вебсервер, fswebcam, libgd.so.3, libjpeg.so.8 и т.д
Далее распакуем webyolofox.zip
и перейдём в каталог с инсталлером install.sh
ставим права и выполняем:
chmod a+x install.sh
./install.sh
Готово !
- Можно проверять?
Нее!
Плата LuckFox по дефолту имеет всего 1 USB который используется для питания и прошивки. Для того чтобы использовать USB-камеру нам необходимы дополнительное барахло:
Собираем всю эту бороду воедино, включаем и...
Настраиваем...
По умолчанию USB порт на плате настроен в режим device
Чтобы он узрел наше новое оборудование, нужно переключить его в режим Host
вызываем конфигуратор:
luckfox-config
Переходим в Advanced Option => USB и меняем режим.
сохраняем изменения и командуем!
reboot
После ребута смотрим логи ядра
dmesg
И видим нашу USB-камеру:
Давайте же тестировать.
Команда
./start.sh
Поднимет вебсервер на 8080 порту вашей платы, обратимся к нему, позырим чё там по адресу
http://192.168.2.211:8080/index.html
круханы детектируются, значит всё ОK.
Останавливаем процессы ./stop.sh
с USB-камерой разобрались, чё там с удалёнными камерами на OpenIPC ?
переходим в
cd webyolofox/remote
забиваем адрес своей камеры в файле eye.sh
И стартуем демона:
./start_remote.sh
переходим по старому адресу и видим:
Ну и на последок проверим скрипт подсчёта Задетектированных объектов на какой нибудь рандомной картинке, из интернета, предварительно скачав её wget'ом в директорию webyolofox
Там же запускаем:
./detect.sh <IMAGE.JPG> <OBJECT>
И видим результат подсчёта:
Если результат выполнения возвращает 0 , то искомый объект на изображении отсутствует.
Полный список доступных для детектирования объектов можно посмотреть в файле webyolofox/model/coco_80_labels_list.txt
Варианты использования:
- Можно выбрать хороший ракурс для своей камеры на парковке, зарядить cron и периодически чекать, есть ли свободное место или нет.
* Конечно такая система детектирования далека от идеала и зависит от многих внешних факторов таких как освещение, снег, туман и т.д
GoodLuck Everybody !
P.S. Совсем недавно Дзен внедрил платные подписки и многие авторы лихорадочно ломанулись монетизировать свой контент, без всяких сомнений это их дело, я тоже мог бы сделать эту статью платной, но руководствуясь своими принципами, решил отказаться от платных подписок. На этом канале всё для всех будет бесплатно, независимо от достатка, пола, возраста и национальности.
Принуждать людей платить за подписки, противоречит нашей философии.
За 10 лет существования сообщества, у меня не было ни спонсоров, ни государственной поддержки, я не пилю гранты и не сплю с дочерью миллионера ) Все мои опыты, поездки, статьи и видео были исключительно на энтузиазме.
Если вы вдруг считаете мою писанину полезной и интересной, если у вас есть возможности и желание помочь финансово, я сторонник добровольных пожертвований (донатов)
Совершить которое можно по ссылке ниже.
Пожертвовать на развитие канала
Спасибо что дочитали до конца.