Parker Hu2026-08-25

Viseron implementeren op de reComputer R2245

Benchmarkt continue Viseron-opname op de reComputer R2245 en valideert Hailo-8-integratie.

ViseronNVRHailo-8Other

Samenvatting

Dit project is uitgevoerd op een reComputer R2245, uitgerust met een Raspberry Pi CM5 van 4 GB, 64-bit Debian 13 en een Hailo-8 AI-accelerator. Een Viseron 3.5.3-container draaide al ongeveer negen dagen continu. Eén enkele 1280×720 H.264-camera kon continu opnemen en de webinterface van Viseron bleef bereikbaar. Terwijl Darknet continu detectie uitvoerde met 1 FPS, gebruikte de container ongeveer 50,7% CPU, bedroeg de gecombineerde RSS van de processen circa 1,11 GiB en lag de temperatuur van de CM5 tussen circa 40,6°C en 42,8°C.

De Hailo-8-hardware functioneerde normaal. In een test van vijf seconden met willekeurige invoer en een YOLOv8s HEF-model verwerkte hij 503 frames, overeenkomend met ongeveer 100,6 FPS, met een hardwarelatentie van 6,66 ms. De gemiddelde temperatuur van de Hailo-chip was 29,55°C en de CM5 vertoonde geen throttling.

1. Testomgeving

1.1 Hardware en systeem

ItemResultaat op het testapparaat
ApparaatSeeed Studio reComputer R2245, hostnaam reComputer-R22
RekenmoduleRaspberry Pi Compute Module 5 Rev 1.0
CPUQuad-core Arm Cortex-A76, tot 2,4 GHz
Geheugen4,0 GiB
BesturingssysteemDebian GNU/Linux 13.2 (trixie), ARM64
Kernel6.12.62+rpt-rpi-2712
Systeemopslag29,1 GB eMMC; 66% gebruikt tijdens de test, met circa 9,3 GB beschikbaar
AI-acceleratorHailo-8 M.2, apparaatnode /dev/hailo0
HailoRT/driver/firmware4.23.0 / 4.23.0 / 4.23.0
DockerDocker CE 29.7.2, Compose 5.4.0
NetwerkETH0 op een Gigabit IPv4 LAN; de andere interfaces waren uitgeschakeld tijdens de test
CameraEén H.264-stream; het opname-initialisatiebestand rapporteerde 1280×720

2. Implementatie

2.1 Controleer of de opnameschijf daadwerkelijk is aangekoppeld

Identificeer een schijf niet alleen op basis van de mapnaam.

bash
findmnt -T /mnt/nvme
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
df -hT /mnt/nvme

De map mag alleen als opnameschijf worden beschouwd als de SOURCE die door findmnt wordt gerapporteerd, verwijst naar een NVMe-partitie zoals /dev/nvme0n1p1. Stop eerst de continue opname als de NVMe-schijf niet is geïnstalleerd of aangekoppeld, in plaats van Docker een map met dezelfde naam op de systeemschijf te laten aanmaken.

Aanbevelingen voor een productieomgeving:

  1. Gebruik een NVMe SSD met hoge uithoudingsvermogen, geformatteerd als ext4.
  2. Voeg de schijf toe aan /etc/fstab met behulp van de UUID.
  3. Bevestig dat deze succesvol is aangekoppeld voordat u Viseron start.
  4. Voeg een koppelingsafhankelijkheid toe aan de service, zodat een ontbrekende NVMe-schijf niet leidt tot terugval van opnames naar eMMC.
  5. Maak een back-up van /srv/viseron/config, dat zowel de PostgreSQL-data als de Viseron-configuratie bevat.

2.2 Aanbevolen Compose-bestand

De volgende Compose-configuratie is geschikt voor de R2245. Vervang de image-tag door een vaste versie die regressietests heeft doorstaan. Het toewijzen van het Hailo-apparaat is alleen nuttig als de HailoRT-versies overeenkomen.

yaml
services:
  viseron:
    image: roflcoopter/viseron:3.5.3
    container_name: viseron
    restart: unless-stopped
    shm_size: "1024mb"
    ports:
      - "8888:8888"
    volumes:
      - /srv/viseron/config:/config
      - /mnt/nvme/viseron/segments:/segments
      - /mnt/nvme/viseron/snapshots:/snapshots
      - /mnt/nvme/viseron/thumbnails:/thumbnails
      - /mnt/nvme/viseron/event_clips:/event_clips
      - /mnt/nvme/viseron/timelapse:/timelapse
      - /etc/localtime:/etc/localtime:ro
    # Enable this only after aligning the HailoRT version.
    # Viseron requires version 4.22.0.
    # devices:
    #   - /dev/hailo0:/dev/hailo0

Start en inspecteer de service:

bash
cd /srv/viseron
docker compose up -d
docker compose logs --tail=200

Open de webinterface op:

text
http://DEVICE_IP:8888

2.3 Aanbevolen cameraconfiguratie

Gebruik secrets.yaml om camerareferenties op te slaan.

yaml
# secrets.yaml
camera_host: 192.168.10.101
camera_username: admin
camera_password: "REPLACE_WITH_THE_ACTUAL_PASSWORD"
yaml
# config.yaml
ffmpeg:
  camera:
    camera_1:
      name: Front Gate
      host: !secret camera_host
      port: 554
      path: /Streaming/Channels/101/
      username: !secret camera_username
      password: !secret camera_password
      substream:
        port: 554
        path: /Streaming/Channels/102/
        stream_format: rtsp

mog2:
  motion_detector:
    cameras:
      camera_1:
        fps: 2

darknet:
  object_detector:
    cameras:
      camera_1:
        fps: 1
        scan_on_motion_only: true
        labels:
          - label: person
            confidence: 0.75
            trigger_event_recording: true

nvr:
  camera_1:

Het gebruik van de hoofdstream voor directe kopie-opname en een substream met lagere resolutie voor decodering en detectie is een van de meest effectieve optimalisaties voor de CM5. Hailo versnelt alleen neurale-netwerkinferentie; het vervangt geen H.264/H.265-videodecodering.

3. Testen met één camera: opname en resourcegebruik

3.1 Testomstandigheden

  • Eén H.264-camerastream
  • Het opname-initialisatiebestand rapporteerde 1280×720
  • FFmpeg schreef fMP4-segmenten met -c:v copy, zonder hercodering
  • Darknet-objectdetectie met 1 FPS
  • scan_on_motion_only: false, wat betekent dat inferentie doorging, zelfs als er geen beweging was
  • Vijf opeenvolgende metingen, met ongeveer twee seconden tussenpoos
  • Geen browserpreview van meerdere camera's of gelijktijdige weergave

3.2 Resultaten

MetriekGemeten resultaat
Gemiddeld CPU-gebruik van de Viseron-container50,66%
CPU-bereik over vijf metingen49,78%–51,94%
Gecombineerde RSS van processen in de containerOngeveer 1140,5 MiB
Aantal processen158–159
CM5-temperatuur40,6–42,8°C
Throttling-/onderspanningsvlag0x0
Kortetermijn-opnamegegevenssnelheidOngeveer 4,259 Mbps
Geschat opnamevolume per dagOngeveer 46,0 GB/dag
Reactietijd van de web-startpagina via LAN39,29 ms gemiddeld over 10 verzoeken

Een Docker CPU-waarde van 50% komt overeen met ongeveer de helft van één CPU-kern.

De opnamemap groeide met 7.986.412 bytes in 15 seconden, overeenkomend met circa 4,259 Mbps. Dit resultaat geldt alleen voor de huidige camerastream. De werkelijke opslagbehoefte moet worden berekend op basis van de gecombineerde bitsnelheid van alle camera's:

text
Daily storage (GB) ≈ Total bit rate (Mbps) × 10.8

Met 10 GB beschikbare opslag zou de huidige bitsnelheid van één camera slechts ruimte bieden voor ongeveer vijf uur extra opnames als er geen opschoonbeleid wordt toegepast. Daarom moet er een NVMe-schijf worden geïnstalleerd en geverifieerd voordat er meer camera's worden toegevoegd.

3.3 Gebruikerservaring

Tijdens de test retourneerde de web-startpagina HTTP 200, bleven de camera-opnamesegmenten groeien en werden geldige momentopnamen van objectdetectie gegenereerd. De componentgebaseerde configuratie van Viseron maakt het mogelijk om camera's, detectoren, opname en opslagbeleid onafhankelijk te combineren, waardoor het zeer geschikt is voor gebruikers die vertrouwd zijn met YAML.

4. Hailo-8-testen en Viseron-integratie

4.1 Zelfstandige hardwaretest

De host detecteerde de Hailo-8 met succes. Er werd een inferentietest van vijf seconden uitgevoerd met het door het systeem geleverde yolov8s_h8.hef-model:

MetriekGemeten resultaat
Verwerkte frames503
Equivalente doorvoerOngeveer 100,6 FPS
Hardwarelatentie6,66 ms
Minimale Hailo-temperatuur29,02°C
Gemiddelde Hailo-temperatuur29,55°C
Maximale Hailo-temperatuur29,68°C
CM5-temperatuur vóór/na de test40,6°C / 44,4°C
CM5-throttlingvlag0x0

4.2 Integratie van Hailo-8 met de officiële Viseron-methode

De verwachte Viseron-configuratie is:

yaml
hailo:
  object_detector:
    cameras:
      camera_1:
        fps: 1
        scan_on_motion_only: true
        labels:
          - label: person
            confidence: 0.75
            trigger_event_recording: true

nvr:
  camera_1:

Het apparaat moet ook in de container worden toegewezen:

yaml
devices:
  - /dev/hailo0:/dev/hailo0

De officiële Viseron-documentatie waarschuwt expliciet dat de container momenteel HailoRT 4.22.0 gebruikt en dat andere host-driverversies mogelijk incompatibel zijn. Een voorbeeld van de resulterende fout is:

text
Driver version (4.23.0) is different from library version (4.22.0)
HAILO_INVALID_DRIVER_VERSION(76)
Failed to detect Hailo architecture
Failed to start Hailo 8 detector

5. Viseron versus Frigate

CategorieViseronFrigate
Open-source licentieMITMIT
ARM64 Docker-ondersteuningOndersteunt multi-architectuur-imagesOndersteunt ARM64, inclusief builds bedoeld voor Raspberry Pi
ConfiguratiemodelCamera's, bewegingsdetectie, objectdetectie, NVR, opslag en andere componenten kunnen vrij worden gecombineerdGeorganiseerd rond camera's, detectie, tracking, Review en opname
Continue/gebeurtenisopnameOndersteund, met flexibele gelaagde opslagOndersteund, met eenvoudige bewaarbeleid
ObjectdetectieHailo, Coral, Darknet, Ultralytics, externe services en meerHailo, Coral, ONNX, OpenVINO, TensorRT en meer
Hailo-8 status op dit apparaatContainer 4.22 conflicteert met host 4.23 en is momenteel onbruikbaarSeeed biedt een R2000/Hailo-referentietutorial; daadwerkelijke versies moeten nog worden geverifieerd
ObjecttrackingKan opnemen rond detectiegebeurtenissen, maar tracking is niet zijn sterkste functieTracking en Review zijn kernonderdelen van de workflow
AudiodetectieGeen primaire functieIngebouwde detectie van audiogebeurtenissen
OpslagMeerdere lagen met onafhankelijke besturing voor gebeurtenis- en continue opnameDuidelijke bewaarbeleid voor continue, bewegings-, alarm- en detectieopnamen
Home AssistantBeschikbaar via MQTT DiscoveryMeer volwassen integratie en community-bronnen
LeercurveHoger, met flexibele componentsamenstellingGemiddeld, met een meer uniform onboarding-pad
Meest geschikt voorGebruikers die aangepaste detectiepijplijnen en opslagbeleid willenGebruikers die prioriteit geven aan tracking, Review, Home Assistant en gevestigde implementatievoorbeelden

Het belangrijkste voordeel van Viseron is de openheid en samenstelbaarheid. Zo kan MOG2 eerst beweging filteren, kan Hailo vervolgens objectdetectie uitvoeren en kan nabewerking of MQTT het resultaat verwerken. De opslaglagen ondersteunen ook architecturen zoals het bewaren van recente continue opnamen op NVMe terwijl langetermijngebeurtenissen naar een NAS worden gearchiveerd.

Het voordeel van Frigate is dat detectie, tracking, Review en Home Assistant een meer complete productworkflow vormen. Als het doel is om Hailo-8 zo snel mogelijk op een R2245 te implementeren in plaats van te experimenteren met de componenten van Viseron, dan is Frigate momenteel de veiligere standaardkeuze.

6. Aanbevelingen

Wanneer te kiezen voor Viseron

  • U bent van plan een klein systeem te implementeren met één tot vier camera's en voornamelijk lokale opname.
  • U bent vertrouwd met Docker, YAML, RTSP en basis Linux-beheer.
  • U hecht waarde aan gelaagde opslag en flexibele componentsamenstelling.
  • U kunt beginnen met bewegingsdetectie of CPU-gebaseerde detectie terwijl u wacht tot de Hailo-versies op elkaar zijn afgestemd.
  • U bent bereid om camerapaden, afhankelijkheden en stuurprogramma's via logs te troubleshooten.

Wanneer Frigate momenteel de betere keuze is

  • Hailo-8 moet onmiddellijk worden gebruikt voor objectdetectie.
  • U bent sterk afhankelijk van Home Assistant.
  • Objecttracking, Review en audiogebeurtenissen hebben een hogere prioriteit.
  • U wilt de bestaande R2000-implementatietutorial van Seeed volgen.
  • U wilt geen aangepaste HailoRT-container onderhouden.