Работает на платах:
Orange pi 5: https://alii.pub/6xq1kd?erid=2SDnjdVDh6Z
Orange pi 5 plus: https://alii.pub/6xq1k6?erid=2SDnjcbL8EV
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В этой статье расскажу как настроить программу Frigate на NPU процессора Rockchip RK3588 на Orange pi 5.
Frigate – Это полноценный локальный сетевой видеорегистратор, разработанный для Home Assistant с обнаружением объектов AI. Использует OpenCV и Tensorflow для локального обнаружения объектов в реальном времени для IP-камер.
Введение:
Frigate очень популярен, многим нравится и многие его используют. Прям считают лучшим регистратором для ip камер и без альтернативным.
Ну и так как фишкой Frigate выступает обнаружение объектов будь то человек, машина, собака, птица. И собственно по обнаружениям этим отправляют всякие уведомления в телеграмм например или начинается запись или делается скриншот.
Ну и естественно обнаружение объектов нагружает процессор устройство на котором производятся вычисления этих объектов. А когда у Вас на том же процессоре находится Home Assistant еще какие-то сервера и прочее прочее, то процессор может прям сильно нагружаться от всего этого.
И вот чтоб снять нагрузку с процессора научились запускать вычисления фригата на NPU Google coral: https://alii.pub/6xq0mc?erid=2SDnjecS93w
И вышло вполне себе не плохо. У Google coral вычислительная мощность 4 TOPs, которых вполне достаточно распознавать объекты не напрягаясь как самому Coral, так и снять нагрузку совсем с процессора.
Ну а тут вышел год назад Orange pi 5 на процессоре Rockchip RK3588. У которого есть NPU ядра с вычислительной мощностью 6TOPs – чего еще больше даже чем в Coral.
И конечно-же начали пытаться перенести Frigate непосредственно на эти ядра, для того, чтоб не грузить процессор.
Собственно в этой статье я и покажу настройку этого NPU процессора у Orange pi 5 на вычисления Firgate.
Настройка Frigate:
Для начала нам нужно выбрать образ для Orange pi 5. В образе должны быть установлены драйвера на NPU. Самые первые образы не содержали драйверов, но потом с этим проблем не было.
В общем я использовал образ Armbian_24.2.3_Orangepi5-plus_bookworm_legacy_5.10.160_minimal.img
Не обращайте внимания, что образ под Orange pi 5 plus. Я просто ее использовал, если у Вас просто Orange pi 5, то образ армбиан качайте примерно близкий, но под свою плату. Думаю там будет драйвер.
Далее нам нужно установить Docker.
apt update
apt install docker.io
Я еще установил Docker-compose. Его можно не ставить. Я просто покажу установку Frigate в docker двумя способами.
apt install docker-compose
Далее создадим папки в каталоге /root/ с этими папками будет работать сам Frigate.
mkdir /root/frigate
mkdir /root/frigate/storage
В созданной папке создаём файл config.yml . Это файл с конфигурацией frigate, который будет запускаться.
nano /root/frigate/config.yml
И вставляем туда:
mqtt:
enabled: false
detectors:
rknn:
type: rknn
core_mask: 0b111
model:
path: default-yolov8n
width: 320
height: 320
input_tensor: nhwc
input_pixel_format: bgr
rtmp:
enabled: false
cameras:
Fasad3: # <--- this will be changed to your actual camera later
enabled: true
birdseye:
order: 2
ffmpeg:
input_args: preset-rtsp-restream
hwaccel_args: preset-rk-h264
inputs:
- path: rtsp://10.5.44.35:554/profile4/media.smp
roles:
- detect
detect:
enabled: True
width: 800
height: 600
fps: 5
objects:
track:
- person
- car
Собственно здесь главное это блоки detctors – где описывается, что детектором выступает rknn (rk3588) и что вычисления будут производиться на 3х ядрах npu 0b111
Ну блоком model выбирается модель. Без этих блоков или без хотя-бы одного из двух – frigate не будет работать на NPU.
detectors:
rknn:
type: rknn
core_mask: 0b111
model:
path: default-yolov8n
width: 320
height: 320
input_tensor: nhwc
input_pixel_format: bgr
С конфигурацией Frigate мы разобрались, теперь давайте создадим docker-compose файл который создаст контейнер frigate для работы:
nano docker-compose.yml
services:
frigate:
container_name: frigate
image: ghcr.io/blakeblackshear/frigate:stable-rk
privileged: true # this may not be necessary for all setups
restart: unless-stopped
group_add:
- "106" # render
- "44" # video
- "46" # plugdev
shm_size: "512mb" # update for your cameras based on calculation above
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
- /dev/rga
- /dev/video-dec0:/dev/video-dec0
- /dev/video-enc0:/dev/video-enc0
volumes:
- /dev/bus/usb:/dev/bus/usb
- /etc/localtime:/etc/localtime:ro
- /root/frigate/config.yml:/config/config.yml:rw
- /root/frigate/storage:/media/frigate:rw
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 2000000000
ports:
- "5000:5000"
- "1935:1935"
- "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp
device_cgroup_rules:
- "c 189:* rmw"
После создания файла docker-compose.yml его можно запустить и у нас соберется контейнер Frigate.
Для запуска вводим команду:
docker-compose up -d
Ну по сути на этом настройка работы Frigate на NPU процессора rockchip rk3588 закончена. Далее переходим по ip адресу и порту :5000 и наслаждаемся вычислительной мощностью.
Ну а чтоб посмотреть нагрузку NPU процессоров и удостовериться, что вычисления проходят именно на NPU, то для этого есть команда:
watch -n 1 cat /sys/kernel/debug/rknpu/load
Которая выводит нагрузку NPU: