Skip to main content

Frigate NVR con Raspberry Pi 5

Introducción

Frigate NVR es un grabador de video en red de código abierto diseñado para detección de objetos en tiempo real con modelos de IA. Emparejado con la Raspberry Pi 5, permite una videovigilancia eficiente en el borde. Esta guía te llevará a través del proceso de instalación y configuración para una configuración óptima.

Frigate Oficial

Preparar Hardware

Componentes Recomendados

reComputer AI R2130

Alternativamente, también necesitas al menos una cámara para transmisión de video. Puedes consultar Hardware recomendado para ver las cámaras recomendadas.

Instalar el Controlador PCIe de Hailo

Paso 1: Habilitar PCIe Gen 3

Abre una terminal y ejecuta el siguiente comando.

sudo apt update
sudo raspi-config

En el diálogo, selecciona 6 Advanced Options y luego A8 PCIe Speed.

6 Advanced Options A8 PCIe Speed

Elige "Yes" para habilitar el modo PCIe Gen 3.

Choose Yes

Después, haz clic en "Finish" para salir.

Edita /boot/firmware/config.txt, añade la siguiente línea al final del archivo.

dtoverlay=pciex1-compat-pi5,no-mip

Paso 2: Instalar el Controlador PCIe de Hailo

Instala el paquete dkms. Este paquete es necesario para instalar el controlador PCIe de Hailo.

sudo apt update
sudo apt install dkms

Obtén el controlador Hailo PCIe desde GitHub.

git clone https://github.com/hailo-ai/hailort-drivers
cd hailort-drivers/linux/pcie
git checkout 24e7ff2fb58fab7029024c1a1d3f2d1914f56d7b

Luego, instala el controlador PCIe de Hailo.

sudo make install_dkms

Después de la instalación, descarga el firmware para Hailo y cópialo al directorio /lib/firmware/hailo.

cd ../..
./download_firmware.sh
sudo mkdir -p /lib/firmware/hailo
sudo cp hailo8_fw*.bin /lib/firmware/hailo/hailo8_fw.bin

Para evitar el problema de PCIe max_desc_page_size, también necesitamos crear una regla en /etc/modprobe.d/hailo_pci.conf con el siguiente contenido.

options hailo_pci force_desc_page_size=4096

Reinicia el sistema para que surta efecto.

sudo reboot

Después de reiniciar el sistema, el controlador PCIe de Hailo se instala exitosamente. Se creará el dispositivo /dev/hailo0. Verifica el dispositivo ejecutando el siguiente comando.

$ ls /dev/hailo*
/dev/hailo0

Instalar Frigate NVR

En esta parte, asumimos que tienes tu cámara configurada y lista para transmitir con protocolo RTSP en resolución 1920x1080.

  • URL RTSP de ejemplo: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0

Paso 1: Preparar el Entorno

  1. Actualiza tu sistema:

    sudo apt update
  2. Instalar Docker:

    curl -fsSL get.docker.com | bash
    sudo usermod -aG docker $USER
  3. Reinicia el sistema:

    sudo reboot

Paso 2: Desplegando Frigate

  1. Descargar la Imagen de Frigate:

    Ve a Package frigate, elige una imagen con el sufijo -h8l. En este ejemplo, elegimos ghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l.

    docker pull ghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l
  2. Crear Archivo Docker Compose:

    Aquí tienes un ejemplo del archivo frigate.yml, el dispositivo hailo0 es el que creaste en el paso anterior, los archivos de configuración están en el directorio ./config y los archivos de datos están en el directorio ./data.:

    services:
    frigate-hailo:
    container_name: frigate-hailo
    privileged: true
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:0.15.0-rc2-h8l
    shm_size: 1024mb
    devices:
    - /dev/hailo0:/dev/hailo0
    volumes:
    - /etc/localtime:/etc/localtime:ro
    - ./config/:/config
    - ./data/db/:/data/db
    - ./data/storage:/media/frigate
    - type: tmpfs
    target: /tmp/cache
    tmpfs:
    size: 1g
    ports:
    - 5000:5000
  3. Editar Configuración de Frigate:

    Aquí tienes un ejemplo del archivo config/config.yml, que es para la aplicación Frigate:

    database:
    path: /data/db/frigate.db

    go2rtc:
    streams:
    home:
    - rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0

    cameras:
    home:
    ffmpeg:
    inputs:
    - path: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
    roles:
    - record
    - detect

    mqtt:
    enabled: False

    objects:
    track:
    - person
    - cat

    detectors:
    hailo8l:
    type: hailo8l
    device: PCIe

    model:
    width: 300
    height: 300
    model_type: ssd
    path: /config/model_cache/h8l_cache/ssd_mobilenet_v1.hef

    version: 0.15-1
  4. Iniciar Instancia de Docker:

    docker compose -f frigate.yml up -d

    Después de que Frigate esté funcionando, puedes acceder a la interfaz web de Frigate en http://<tu-raspberry-pi-ip>:5000 para verificar la transmisión de la cámara.

    frigate-web

Seeed Frigate

Modificar configuración PCIe

Abrir config.txt

sudo nano /boot/firmware/config.txt 

Añade el siguiente texto a config.txt

dtparam=pciex1_gen=3
dtoverlay=pciex1-compat-pi5,no-mip

Luego usa Ctrl+x para guardar el archivo y reiniciar la caja de IA

Instalar docker y hailo-all

sudo apt update
sudo apt install hailo-all
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
sudo apt install docker-compose-plugin

Crear archivo yml

Crear frigate.yml para docker compose para ejecutar frigate

cd ~
sudo nano frigate.yml

Aquí tienes un ejemplo de frigate.yml

version: "3.9"
services:
frigate-hailo:
container_name: frigate-hailo
privileged: true
restart: unless-stopped
image: frigate_seeed:latest
shm_size: 1024mb
environment:
- HAILO_MONITOR=1
devices:
- /dev/hailo0:/dev/hailo0
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config/:/config
- ./data/db/:/data/db
- ./data/storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- 5000:5000
- 1984:1984
- 5002:5002
- 5003:5003

Descarga el modelo yolo y crea config.yml.

mkdir config && cd config && mkdir model_cache
cd model_cache && wget https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.14.0/hailo8/yolov8n.hef

cd .. && nano config.yml

Aquí hay un ejemplo de config.yml

database:
path: /data/db/frigate.db

go2rtc:
streams:
home:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
home1:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
yard:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1
yard1:
- rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=1

cameras:
home:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/home
roles:
- detect

motion:
threshold: 45
contour_area: 60
improve_contrast: true

yard:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/yard
roles:
- detect

motion:
threshold: 45
contour_area: 60
improve_contrast: true

home1:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/home1
roles:
- detect


motion:
threshold: 45
contour_area: 60
improve_contrast: true

yard1:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/yard1
roles:
- detect

motion:
threshold: 45
contour_area: 60
improve_contrast: true
mqtt:
enabled: false

objects:
track:
- person
- cat

detectors:
hailo8l:
type: hailo8l
device: PCIe

model:
width: 640
height: 640
path: /config/model_cache/yolov8n.hef

version: 0.16-0

camera_groups:
test:
order: 1
icon: LuAlignEndHorizontal
cameras:
- home
- home1
- yard
- yard1

Descargar imagen de docker y ejecutar frigate

Descargar imagen frigate_seeed

cd ~
docker pull mjqx2023/frigate_seeed
docker compose -f frigate.yml start

Luego abre localhost:5000 en el navegador web de tu AI box: frigate-web

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...