Viseron implementeren op de reComputer R2245
Benchmarkt continue Viseron-opname op de reComputer R2245 en valideert Hailo-8-integratie.
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
| Item | Resultaat op het testapparaat |
|---|---|
| Apparaat | Seeed Studio reComputer R2245, hostnaam reComputer-R22 |
| Rekenmodule | Raspberry Pi Compute Module 5 Rev 1.0 |
| CPU | Quad-core Arm Cortex-A76, tot 2,4 GHz |
| Geheugen | 4,0 GiB |
| Besturingssysteem | Debian GNU/Linux 13.2 (trixie), ARM64 |
| Kernel | 6.12.62+rpt-rpi-2712 |
| Systeemopslag | 29,1 GB eMMC; 66% gebruikt tijdens de test, met circa 9,3 GB beschikbaar |
| AI-accelerator | Hailo-8 M.2, apparaatnode /dev/hailo0 |
| HailoRT/driver/firmware | 4.23.0 / 4.23.0 / 4.23.0 |
| Docker | Docker CE 29.7.2, Compose 5.4.0 |
| Netwerk | ETH0 op een Gigabit IPv4 LAN; de andere interfaces waren uitgeschakeld tijdens de test |
| Camera | Eé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.
findmnt -T /mnt/nvme
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL
df -hT /mnt/nvmeDe 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:
- Gebruik een NVMe SSD met hoge uithoudingsvermogen, geformatteerd als
ext4. - Voeg de schijf toe aan
/etc/fstabmet behulp van de UUID. - Bevestig dat deze succesvol is aangekoppeld voordat u Viseron start.
- Voeg een koppelingsafhankelijkheid toe aan de service, zodat een ontbrekende NVMe-schijf niet leidt tot terugval van opnames naar eMMC.
- 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.
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/hailo0Start en inspecteer de service:
cd /srv/viseron
docker compose up -d
docker compose logs --tail=200Open de webinterface op:
http://DEVICE_IP:88882.3 Aanbevolen cameraconfiguratie
Gebruik secrets.yaml om camerareferenties op te slaan.
# secrets.yaml
camera_host: 192.168.10.101
camera_username: admin
camera_password: "REPLACE_WITH_THE_ACTUAL_PASSWORD"# 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
| Metriek | Gemeten resultaat |
|---|---|
| Gemiddeld CPU-gebruik van de Viseron-container | 50,66% |
| CPU-bereik over vijf metingen | 49,78%–51,94% |
| Gecombineerde RSS van processen in de container | Ongeveer 1140,5 MiB |
| Aantal processen | 158–159 |
| CM5-temperatuur | 40,6–42,8°C |
| Throttling-/onderspanningsvlag | 0x0 |
| Kortetermijn-opnamegegevenssnelheid | Ongeveer 4,259 Mbps |
| Geschat opnamevolume per dag | Ongeveer 46,0 GB/dag |
| Reactietijd van de web-startpagina via LAN | 39,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:
Daily storage (GB) ≈ Total bit rate (Mbps) × 10.8Met 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:
| Metriek | Gemeten resultaat |
|---|---|
| Verwerkte frames | 503 |
| Equivalente doorvoer | Ongeveer 100,6 FPS |
| Hardwarelatentie | 6,66 ms |
| Minimale Hailo-temperatuur | 29,02°C |
| Gemiddelde Hailo-temperatuur | 29,55°C |
| Maximale Hailo-temperatuur | 29,68°C |
| CM5-temperatuur vóór/na de test | 40,6°C / 44,4°C |
| CM5-throttlingvlag | 0x0 |
4.2 Integratie van Hailo-8 met de officiële Viseron-methode
De verwachte Viseron-configuratie is:
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:
devices:
- /dev/hailo0:/dev/hailo0De 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:
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 detector5. Viseron versus Frigate
| Categorie | Viseron | Frigate |
|---|---|---|
| Open-source licentie | MIT | MIT |
| ARM64 Docker-ondersteuning | Ondersteunt multi-architectuur-images | Ondersteunt ARM64, inclusief builds bedoeld voor Raspberry Pi |
| Configuratiemodel | Camera's, bewegingsdetectie, objectdetectie, NVR, opslag en andere componenten kunnen vrij worden gecombineerd | Georganiseerd rond camera's, detectie, tracking, Review en opname |
| Continue/gebeurtenisopname | Ondersteund, met flexibele gelaagde opslag | Ondersteund, met eenvoudige bewaarbeleid |
| Objectdetectie | Hailo, Coral, Darknet, Ultralytics, externe services en meer | Hailo, Coral, ONNX, OpenVINO, TensorRT en meer |
| Hailo-8 status op dit apparaat | Container 4.22 conflicteert met host 4.23 en is momenteel onbruikbaar | Seeed biedt een R2000/Hailo-referentietutorial; daadwerkelijke versies moeten nog worden geverifieerd |
| Objecttracking | Kan opnemen rond detectiegebeurtenissen, maar tracking is niet zijn sterkste functie | Tracking en Review zijn kernonderdelen van de workflow |
| Audiodetectie | Geen primaire functie | Ingebouwde detectie van audiogebeurtenissen |
| Opslag | Meerdere lagen met onafhankelijke besturing voor gebeurtenis- en continue opname | Duidelijke bewaarbeleid voor continue, bewegings-, alarm- en detectieopnamen |
| Home Assistant | Beschikbaar via MQTT Discovery | Meer volwassen integratie en community-bronnen |
| Leercurve | Hoger, met flexibele componentsamenstelling | Gemiddeld, met een meer uniform onboarding-pad |
| Meest geschikt voor | Gebruikers die aangepaste detectiepijplijnen en opslagbeleid willen | Gebruikers 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.