VCELY-POC // COMPUTER VISION EXPERIMENT OpenCV PoC • Raspberry Pi 3B Target • Bez neurónových sietí

Počítanie včiel pred vchodom do úľa v čistom OpenCV

Cieľom tohto Proof-of-Conceptu bolo overiť, či dokážeme na lacnom jednodiskovom počítači Raspberry Pi 3B spoľahlivo detegovať, sledovať a počítať včely vchádzajúce do úľa (IN) a vychádzajúce z úľa (OUT) výlučne pomocou klasického počítačového videnia — bez ťažkých neurónových sietí (YOLO/CNN) a bez akcelerátorov.

Cieľový hardvér
Raspberry Pi 3B
4× Cortex-A53 @ 1.2 GHz, 1 GB RAM
Rýchlosť spracovania
590 – 980 FPS
Na x86 CPU pri 640×360 (rezerva >25 FPS na RPi)
Detekčné jadro
MOG2 + Kontúry
Odčítanie pozadia bez pohlcovania tieňov
Počítacia logika
4-bodový polygón
Prechod zónou pred vchodom s hysteréziou
Architektúra riešenia

Ako funguje 4-stupňová pipeline

01 // CAPTURE & ROI

Predspracovanie a výrez

Snímka sa zmenší na 640×360 a oreže len na oblasť záujmu (ROI) tesne okolo vchodu do úľa. Tým sa eliminuje pohyb trávy vo vetre a šetrí sa viac než 70 % výpočtového výkonu procesora.

02 // DETECTOR (MOG2)

Segmentácia pohybu a tvaru

Adaptívny model pozadia MOG2 s vypnutou detekciou tieňov (detect_shadows: false), morfologické čistenie šumu a tvarový filter kontúr (plocha 45 – 2800 px², pomer strán a zaplnenie).

03 // TRACKER

Sledovanie ťažiska a rýchlosti

Každá včela dostane unikátne ID. Tracker spája pozície medzi snímkami pomocou tlmenej predikcie rýchlosti, obmedzenia skokov a pamäte na krátke zastavenie (15 – 20 snímok), keď včela lezie po dreve pred úľom.

04 // POLYGON COUNTER

4-bodová zóna pred vchodom

Namiesto nekonečnej priamky definujeme 4-bodový uzavretý polygón priamo pred štrbinou vchodu. Vstup zvonku dnu = IN, výstup zvnútra von = OUT (s hysteréziou 6 px proti kmitaniu).

Modrý rámik / bod (MODRÉ – nezarátané): včela je detegovaná a sledovaná, ale zatiaľ neprešla cez hranicu zóny vchodu
Zelený rámik (IN): včela vošla zvonku do 4-bodovej zóny vchodu
Oranžový rámik (OUT): včela vyšla z 4-bodovej zóny vchodu von
Žltý 4-uholník: aktívna počítacia zóna pred vchodom do úľa (cyan rámik = oblasť ROI)
Ukážky a výsledky

Dva otestované príklady z reálnych videí

Príklad 1 — Šikmý pohľad na vchod do úľa (Video 1)

Orezané úvodné titulky (prvých 17 s), zrýchlené 2,5× na 60-sekundový testovací úsek s intenzívnym príletom a odletom.

Pôvodné YouTube video (hcDdVHegjiY) ↗
Včely dnu (IN)
34
Včely von (OUT)
47
Modré (nezarátané)
249
Potvrdené stopy spolu
330
Rýchlosť pipeline
988 FPS
1. NÁVRH SCÉNY (SCENE PROPOSAL) Otvoriť plné rozlíšenie ↗
Video 1 — návrh scény s mriežkou, ROI a 4-bodovou zónou
Ladiaca mriežka (krok 50 px) pre odčítanie súradníc. Výrez ROI: [140, 10, 360, 290] a šikmý 4-bodový polygón [[150, 150], [250, 50], [350, 100], [250, 220]] kopírujúci drevený vchod.
2. VÝSLEDNÉ ANOTOVANÉ VIDEO (60 s) Stiahnuť / otvoriť MP4 ↗
V pravom dolnom rohu beží živá štatistika IN, OUT a MODRE (nezar). Aj pomaly sa plaziace včely na dreve (napr. okolo 7.2 s) majú priradené modré sledovacie ID.
Video 1 — binárna maska pohybu MOG2
Binárna maska pohybu (debug_mask.png v čase 7.2 s):

Ukážka toho, čo reálne „vidí" detektor po odčítaní pozadia MOG2 a morfologickom vyčistení. Vypnutie tieňov (detect_shadows: false) zabránilo tomu, aby algoritmus vymazal tmavohnedé včely na slnečnom dreve ako tieň.

Príklad 2 — Čelný pohľad na široký vchod do úľa (Video 2)

60-sekundový výsek od 33. sekundy videa so širokou pristávacou doskou a vysokou hustotou lezúcich včiel.

Pôvodné YouTube video (luvOY9KkhA4, t=33s) ↗
Včely dnu (IN)
44
Včely von (OUT)
23
Modré (nezarátané)
355
Potvrdené stopy spolu
422
Rýchlosť pipeline
595 FPS
1. NÁVRH SCÉNY (SCENE PROPOSAL) Otvoriť plné rozlíšenie ↗
Video 2 — návrh scény s mriežkou, ROI a 4-bodovou zónou
Široký výrez ROI: [75, 120, 500, 230] a 4-bodová počítacia zóna [[120, 145], [480, 180], [480, 290], [120, 290]] pokrývajúca vstupnú štrbinu a pristávaciu plochu.
2. VÝSLEDNÉ ANOTOVANÉ VIDEO (60 s) Stiahnuť / otvoriť MP4 ↗
Vďaka potlačeniu falošného rozbehu na prvých 5 snímkach a stráženiu skokov ťažiska (raw_dist) sa stopy netrhajú pri preletoch rýchlych včiel ponad pomaly lezúce včely.
Video 2 — binárna maska pohybu MOG2
Binárna maska pohybu (debug_mask.png v čase 12.0 s):

Pred širokým vchodom sa súčasne pohybuje 15 až 25 včiel. Morfologické otvorenie (3×3) a zatvorenie (5×5) spája pruhované telo a krídla včely do jedného kompaktného bieleho objektu.

Zhodnotenie experimentu

Kľúčové zistenia, vyriešené problémy a limity PoC

Čo sme počas ladenia vyriešili

  • Problém „neviditeľných" lezúcich včiel: Štandardný MOG2 so zapnutou detekciou tieňov označoval tmavé včely na svetlom dreve ako tieň (hodnota 127) a zahadzoval ich. Vypnutie detect_shadows: false a zníženie prahu var_threshold: 18 zvýšilo citlivosť na pomaly sa plaziace včely.
  • 4-bodová zóna namiesto priamky: Jednoduchá úsečka počítala aj včely prelietavajúce mimo vchodu do úľa. Uzavretý 4-uholník (cv2.pointPolygonTest) sleduje len reálny priestor pred vchodom.
  • Stabilita príkazu a duplicitné snímky: Pridaná detekcia identických snímok pri prevode FPS a potlačenie falošných detekcií pri strihu scény (>35 % zmeny plochy ROI).

Kde naráža klasické OpenCV na limity

  • Splývanie včiel v tlačenici (blob merging): Keď sa 2–3 včely pred vchodom dotknú, MOG2 ich vidí ako jednu spojenú kontúru, čo môže spôsobiť preskočenie ID.
  • Úplne nehybné včely (strážkyne/vetranie): Ak včela stojí na mieste dlhšie než ~1 sekundu, adaptívne pozadie sa ju naučí a dočasne ju prestane vidieť, kým sa opäť nepohne.
  • Prelet ponad zónu bez pristátia: 2D kamera zhora/šikmo nevie odlíšiť včelu, ktorá reálne vliezla do štrbiny, od včely, ktorá len preletela 10 cm nad zónou vchodu. Najlepším riešením v praxi je pevná kamera umiestnená priamo nad tunelovým pristávacím koridorom.
Hardvérové nároky a škálovanie

Odhad rýchlosti spracovania, minimálny HW a prínos silnejšieho HW

Prečo je súčasná OpenCV pipeline taká rýchla?

Na bežnom x86 procesore spracovala celá pipeline (vrátane dekódovania MP4, vykresľovania anotácií a enkódovania výstupného videa) Video 1 rýchlosťou 988 FPS (1,01 ms na snímku) a Video 2 rýchlosťou 595 FPS (1,68 ms na snímku). Samotný matematický výpočet bez ukladania videa na disk trvá menej než 0,6 ms na snímku, pretože odčítanie pozadia MOG2 a morfológia bežia len na orezanom výreze ROI (~100 000 pixelov).

ARM jadro Cortex-A53 (v Raspberry Pi 3B / Zero 2 W) je na jedno vlákno približne 8× až 12× pomalšie než desktopové x86 jadro. To znamená 6 až 10 ms na snímku — pri 30 FPS je časový rozpočet 33,3 ms na snímku, takže aj na lacnom ARM čipe ostáva viac než 3-násobná výpočtová rezerva.

Kategória hardvéru Konkrétny príklad Odhad FPS (len počítanie) Orientačná cena Verdikt pre tento OpenCV PoC
Úplné minimum (Low-power SBC) Raspberry Pi Zero 2 W
4× Cortex-A53 @ 1 GHz, 512 MB RAM + CSI kamera
35 – 60 FPS ~18 € IDEÁLNE MINIMUM
Rovnaký 4-jadrový čip ako Pi 3B v kompaktnom prevedení, zvláda plných 30 FPS pri 30–40 % zaťažení CPU.
Klasický terč Raspberry Pi 3B / 3B+
4× Cortex-A53 @ 1.2–1.4 GHz, 1 GB RAM
50 – 80 FPS ~35 € PLNE POSTAČUJÚCE
Bez problémov utiahne počítanie v reálnom čase a má rezervu aj na priebežné ukladanie ukážkových klipov.
Jednojadrové dosky / MCU RPi Zero 1 / ESP32-S3 (ESP32-CAM)
ARM11 alebo dual-core Xtensa LX7
3 – 8 FPS ~8 € NEVHODNÉ PRE TRACKER
Pri 5 FPS preletí včela medzi snímkami >100 px a sledovanie ťažiska stratí nadväznosť ID.

Čo by sa zlepšilo silnejším CPU (RPi 4 / RPi 5)

  • Kamera s 60 – 90 FPS: Rýchlo letiace včely pri prílete robia pri 30 FPS skok o 30–40 px a rozmazávajú sa. Pri 60+ FPS a krátkej expozícií sa posun medzi snímkami zmenší na polovicu (≤15 px), takže tracker sa prakticky prestane mýliť pri križovaní dráh.
  • Pokročilejší tracking (Kalman + Optical Flow): Silnejší procesor dovolí nahradiť jednoduché porovnávanie vzdialeností plnohodnotným Kalmanovým filtrom s priraďovaním cez Hungarian algorithm (SORT) alebo lokálnym optickým tokom.

Čo by vyriešil NPU akcelerátor (Hailo-8L / Coral / RPi 5 AI)

  • Koniec splývania včiel v tlačenici: Malá neurónová sieť (YOLOv8n / YOLOv11n) natrénovaná na včelách rozozná každú včelu samostatne, aj keď sa 3–4 včely pred vchodom dotýkajú krídlami.
  • Detekcia stojacich včiel a imunita na tiene: Na rozdiel od MOG2 vidí neurónová sieť aj včely, ktoré zastali na mieste (strážkyne, vetrajúce včely), a ignoruje náhle zmeny slnka či pohyb tieňa trávy.
  • Klasifikácia peľu a škodcov: Možnosť súčasne počítať včely vracajúce sa s peľovými obnôžkami, trúdov alebo varovať pred sršňom.

Čo lepší výpočtový HW nevyrieši (fyzika scény)

  • 3D prelety ponad vchod: Žiadny procesor ani neurónová sieť z jedného 2D pohľadu zhora s istotou nerozlíši včelu, ktorá vliezla dnu, od včely, ktorá len preletela 8 cm ponad vchod.
  • Najlepšie vylepšenie je mechanické: Ak sa kamera umiestni kolmo zhora nad nízke priehľadné vstupné tunelíky (výška ~12 mm, kde včely musia kráčať v jednej vrstve a nemôžu lietať ponad seba), aj tento jednoduchý OpenCV PoC na 18-eurovom Raspberry Pi Zero 2 W dosiahne >95 % presnosť.