Raspberry Pi AI Camera
Začátkem loňského roku uzavřela nadace Raspberry Pi partnerství se Sony a výsledkem jejich spolupráce je Raspberry Pi AI Camera. Je tak dalším přírůstkem do nové řady produktů se zabudovanou inteligencí od nadace, počínaje sadou Raspberry Pi AI Kit, která spatřila světlo světa v červnu, nebo nástavbu Raspberry Pi AI HAT+ z letošního října. Otázka zní, jestli se vyplatí pořídit si kameru s AI, nebo si připlatit a koupit si raději Raspberry Pi AI Kit? Pojďme to zjistit!
Raspberry Pi AI Camera je vybavena 12,3 Mpx snímačem Sony IMX500 a mikročipem RP2040, který známe z Raspberry Pi Pico. Ten má dostatek výpočetního výkonu a paměti pro zpracování neuronových sítí a funguje jako rozhraní mezi kamerou a počítačem Raspberry Pi. Při startu kamery se do ní nahraje firmware s požadovaným modelem AI a modul pak sám provádí detekci osob, předmětů, pohybu a další obvyklé úlohy nezávisle na hlavním procesoru (CPU) minipočítače. To znamená mnohem nižší spotřebu energie, než při použití CPU ve Vaší malině. Vložte tuto AI kameru do nízkoenergetické desky Raspberry Pi Zero 2 W a budete mít perfektní sestavu pro vestavěné AI projekty.
Technické specifikace
Raspberry Pi AI Camera – technické specifikace | |
Senzor | Sony IMX500 |
Rozlišení | 12,3 megapixelů |
Velikost senzoru | 7,857 mm (typ 1/2.3) |
Velikost pixelu | 1,55 μm × 1,55 μm |
Horizontální/vertikální rozlišení | 4056 × 3040 px |
IR filtr | integrovaný |
Systém zaostřování | manuální nastavitelné ostření |
Rozsah ostření | 20 cm – nekonečno |
Ohnisková vzdálenost | 4,74 mm |
Horizontální zorný úhel | 66 ± 3° |
Vertikální zorný úhel | 52,3 ± 3° |
Světelnost | f/1,79 |
Citlivost na infračervené světlo | ne |
Výstup | obraz (Bayer RAW 10) / ISP výstup (YUV/RGB) / ROI / metadata |
Rodinná podoba
Raspberry Pi AI Camera je rozměrově téměř identická s předchozím nadačním modelem Camera 3. Na první pohled vypadají stejně, ale nová AI kamera má kolem senzoru větší plastový kryt, pod kterým je skryt mikročip RP2040. Kamera má stejné montážní otvory pro její upevnění do stativů, nicméně extra materiál kolem senzoru znamená, že nemusí být kompatibilní se stejnými držáky jako Camera 3.
Kompatibilita
Balení obsahuje 15pinový i 22pinový CSI kabel, což zajišťuje kompatibilitu kamery se všemi modely Raspberry Pi.
Sony IMX500 Intelligent Vision Sensor
Sony IMX500 není jen další 12 Mpx digitální kamera, ale díky funkci „Inteligent Vision Sensor“ se v podstatě jedná o obrazový snímač s vlastním NPU. Spojení mezi kamerou a minipočítačem Raspberry Pi je řízeno integrovaným čipem Raspberry Pi RP2040 s připojeným 16 MB flash zařízením používaným k ukládání modelů do mezipaměti. Když snímač IMX500 zahájí streamování videa, chová se při streamování podobně jako Raspberry Pi Camera Module 3 – převádí obraz pomocí Bayer-to-RGB a podle potřeby ořízne/změní měřítko. Ten je poté přiveden do integrovaného akcelerátoru Sony IMX500, kde model neuronové sítě zpracuje snímek a s výstupem a Bayerovým snímkem se přenese do Raspberry Pi pomocí kamerové sběrnice CSI-2.
Sony má rozsáhlou řadu nástrojů, které lze použít k převodu modelů TensorFlow nebo PyTorch, aby byly kompatibilní se Sony IMX500. Modely neuronových sítí určených pro Sony IMX500 přímo od nadace Raspberry Pi jsou ke stažení zde. Intelligent Vision Sensor najde uplatnění při detekci a klasifikaci předmětů, odhadu pozice, sémantické segmentaci obrazu, a v řadě průmyslových aplikací jako je např. monitorování zaměstnanců, sledování abnormalit na výrobních linkách, nebo kontrolu bezpečnosti práce v reálném čase.
Chybí něco?
Co tato chytrá kamera postrádá, je automatické zaostřování obrazu. Vzhledem k tomu, že je tato funkce na nejnovějších oficiálních kamerách nadace samozřejmostí, jeho absence na IMX500 je tak trochu krokem zpět. Obraz tak budete muset doostřit ručně otáčením malinkaté čočky.
AI Camera | Camera Module 3 | |
Senzor | Sony IMX500 „Intelligent Vision Sensor“ | Sony IMX708 |
Rozlišení | 12,3 Mpx | 11,9 Mpx |
Velikost senzoru | úhlopříčka snímače 7,857 mm | úhlopříčka snímače 7,4 mm |
Horizontální/vertikální rozlišení | 4056 × 3040 pixelů | 4608 × 2592 pixelů |
Maximální velikost tensor vstupu | 640 × 640 | N/A |
Snímková frekvence | 2×2 binned: 2028 × 1520 10 bit 30 fps plné rozlišení: 4056 × 3040 10 bit 10 fps |
1080 p 50, 720 p 100, 480 p 120 |
Systém automatického zaostřování | pouze manuální ostření | automatické ostření s fázovou detekcí |
Rozsah zaostření | 20 cm – nekonečno | 10 cm – nekonečno |
Ohnisková vzdálenost | 4,74 mm | 4,74 mm |
Rozměry | 25 × 24 × 11,99 mm | 25 × 24 × 11,5 mm 25 × 24 × 12,4 mm výška pro varianty Wide |
Instalace
Instalace kamery je poměrně jednoduchá. Stačí ji připojte ke konektoru CSI na desce počítače pomocí plochého MIPI flexi kabelu, který je dodáván společně s kamerou, spustit rozhraní kamery přes raspi-config a provést příslušný příkaz z terminálu. Předinstalovaný model MobileNet vám umožní okamžitě začít pracovat s neuronovými sítěmi, výrazně zkracuje dobu nastavení a umožňuje rychlý vývoj projektů založených na umělé inteligenci.
Ukázka spuštění kamery v režimu AI detektoru objektů MobileNet SSD:
rpicam-hello -t 0s --post-process-file /usr/share/rpicam-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920 --viewfinder-height 1080 --framerate 30
Součástí instalace ovladačů je sbírka několika modelů přímo na Raspberry Pi pro typické operace.
Nejprve se ujistěte, že vaše Raspberry Pi používá nejnovější software. Pro aktualizaci spusťte následující příkaz:
sudo apt update && sudo apt full-upgrade
Firmware IMX500
AI kamerasi musí během spouštění stáhnout runtime firmware do senzoru IMX500. Chcete-li nainstalovat tyto soubory firmwaru do vašeho Raspberry Pi, spusťte následující příkaz:
sudo apt install imx500-all
Tento příkaz:
- nainstaluje soubory /lib/firmware/imx500_loader.fpk a /lib/firmware/imx500_firmware.fpk soubory firmwaru potřebné pro provoz senzoru IMX500
- umístí řadu souborů firmwaru modelu neuronové sítě /usr/share/imx500-models/
- nainstaluje software pro následné zpracování IMX500 rpicam-apps
- nainstaluje nástroje pro balení síťového modelu Sony
Poznámka
Ovladač zařízení s jádrem IMX500 načte všechny soubory firmwaru při spuštění fotoaparátu. To může trvat několik minut, pokud firmware modelu neuronové sítě nebyl dříve uložen do mezipaměti. Níže uvedená ukázka zobrazují na konzole ukazatel průběhu, který ukazuje průběh načítání firmwaru.
Restartujte
Nyní, když jste nainstalovali předpoklady, restartujte Raspberry Pi:
sudo reboot
Jakmile máte aktualizovány všechny systémové balíčky a nainstalovány soubory firmwaru, můžete začít spouštět některé ukázkové aplikace jako je např. detekce objektů nebo odhad pozice. Jak již bylo zmíněno dříve, Raspberry Pi AI Camera se plně integruje s libcamera, rpicam-apps a Picamera2. Oficiální software a aplikace pro AI kameru najdete pod tímto linkem.
Použití kamery v praxi
Pokud jste někdy používali kameru Raspberry Pi nebo nejnovější AI kit, budete vám pracovní prostředí známé. AI kamera se chová podobně jako AI kit, podporuje TensorFlow a obsahuje modely pro rozpoznávání objektů a odhad pozice. Všechny informace zpracovává čip Sony IMX500 a provádí veškerou práci související s AI. CPU připojeného mikropočítače tak může zůstat vklidu nebo řešit jiné náročné úlohy. Během testů běžela všechna čtyři jádra CPU Raspberry Pi 5 na méně než 10 %. Monitoring výkonu probíhal pomocí aplikace htop (terminálová aplikace pro sledování systémových prostředků).
Test AI kamery proběhl na modelu detekce objektů mobilenet a na modelu posenet, který se používá k odhadu pozice lidského těla. Oba modely pracovaly s rozlišením 640 x 480 pixelů a držely si stabilních 30 snímků za vteřinu.
Detekce objektů
Při použití demo skriptu detekce objektů rpicam-hello dokázala AI kamera rozpoznat lidskou postavu velmi spolehlivě. Další věci, jako např. láhev s vodou nebo ovoce, byly správně detekovány, jakmile byl obraz ostrý. Nesmíme zapomínat, že je kamera vybavena objektivem s rozsahem ostření 20 cm až nekonečno, takže přílišné přiblížení objektu ke kameře způsobí rozmazání obrazu a AI model objekt „nepřečte“.
Sony IMX500 má nástroj pro konverzi modelů PyTorch nebo TensorFlow do formátu, který dokáže zpracovat.
MobileNet SSD
Neuronová síť MobileNet SSD provádí základní detekci objektů a poskytuje ohraničující rámečky a hodnoty spolehlivosti pro každý nalezený objekt. imx500_mobilenet_ssd.json obsahuje konfigurační parametry pro fázi následného zpracování detekce objektů IMX500 pomocí neuronové sítě MobileNet SSD.
imx500_mobilenet_ssd.json určuje kanál následného zpracování, který obsahuje dvě fáze:
- imx500_object_detection, který vybírá ohraničující rámečky a hodnoty spolehlivosti generované neuronovou sítí ve výstupním tenzoru
- object_detect_draw_cv, který na obrázek nakreslí ohraničující rámečky a štítky
Tenzor MobileNet SSD nevyžaduje žádné významné následné zpracování na vašem Raspberry Pi k vytvoření konečného výstupu ohraničujících boxů. Veškerá detekce objektů běží přímo na AI kameře.
Následující příkaz se spustí rpicam-hello s následným zpracováním detekce objektu:
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --viewfinder-width 1920
Po spuštění příkazu byste měli vidět hledáček, který překrývá ohraničující rámečky na objektech rozpoznávaných neuronovou sítí.
Chcete-li nahrávat video s překryvnými vrstvami pro detekci objektů, použijtemísto toho rpicam-vid:
rpicam-vid -t 10s -o output.264 --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json --width 1920 --height 1080 --framerate 30
Scénu můžete nakonfigurovat imx500_object_detection mnoha způsoby.
Například max_detections definuje maximální počet objektů, které bude systém detekovat v daném okamžiku. threshold definuje jistou minimální hodnotu potřebnou k tomu, aby systém považoval určitý vstup za objekt.
Syrová výstupní data této sítě mohou obsahovat hodně zbytečností, takže se v této fázi také provádí filtrování a probíhá hystereze. Chcete-li toto filtrování zakázat, odstraňte temporal_filter konfigurační blok.
Odhad pozice
Při testování odhadu pozice ukáže posenet lidskou postavu jako drátěnou kostru s klouby.
PoseNet
Neuronová síť PoseNet provádí odhad pozice a označuje klíčové body na těle jako klouby a končetiny. imx500_posenet.json obsahuje konfigurační parametry pro fázi post-processingu odhadu pozice IMX500 pomocí neuronové sítě PoseNet.
imx500_posenet.json určuje kanál následného zpracování, který obsahuje dvě fáze:
- imx500_posenet, který načítá nezpracovaný výstupní tenzor z neuronové sítě PoseNet
- plot_pose_cv, který na obrázku vykreslí čárové překryvy
AI kamera provádí základní detekci, ale výstupní tenzor vyžaduje dodatečné následné zpracování na vašem hostitelském Raspberry Pi, aby vytvořil konečný výstup.
Následující příkaz se spustí rpicam-hello s následným zpracováním odhadu pozice:
rpicam-hello -t 0s --post-process-file /usr/share/rpi-camera-assets/imx500_posenet.json --viewfinder-width 1920 --viewfind
Scénu můžete nakonfigurovat imx500_posenet mnoha způsoby. Například max_detections definuje maximální počet objektů, které systém v daném okamžiku detekuje. threshold definuje minimální hodnoty potřebné k tomu, aby systém považoval vstupní data za lidskou postavu.
K čemu to je?
Výstupy z Raspberry Pi AI Camery můžeme začlenit do různých projektů pomocí knihovny Picamera2 za použití Pythonu. Odhad pozice může být např. použit jako spouštěč zábavných a zvukových efektů v pořízených záznamech, nebo může být začleněn do systému chytré domácnosti ovládané gesty.
AI kamera nebo AI Kit + kamera?
Teď se dostáváme k otázce, jestli je lepší pořídit si ke své malině single AI kameru nebo AI Kit a kameru Module 3. Odpověď zní – záleží na účelu použití.
Raspberry Pi AI Kit obsahuje akcelerační modul Hailo-8L, používá formát M.2 2242, který je předinstalován v M.2 HAT+ a připojuje se k počítači pomocí sběrnice PCIe. Díky tomu poskytuje přibližně 13 TOPS (Tera-Operations Per Second) výkonu a zvládá i náročné AI aplikace. Tím se ale připravíte o místo k zapojení rychlého SSD disku a pokud chcete zpracovávat videa s pomocí AI, musíte pořídit další kus hardwaru – kameru.
A co samotná AI kamera? Bohužel pro výkon čipu IMX500 prozatím není dostatek dat, ale dá se odhadovat, že bude mít několikanásobně menší výkon než Hailo-8L. Podle oficiálního oznámení společnosti Sony dokáže čip IMX500 zpracovávat v modelu MobileNet V1 snímky rychlostí přibližně 3,1 milisekundy, což je dostatečný výkon pro zpracování dat pomocí AI v reálném čase. (Jakmile budou data k dispozici, aktualizujeme i tento článek.) Na rozdíl od AI Kitu nejste limitováni použitím pětkové maliny, AI kameru můžete osadit i na Raspberry Pi 4 Model B, Raspberry Pi 3 Model B+, Raspberry Pi Zero 2 W a Raspberry Pi Zero 2 WH.
Závěrečné hodnocení
Raspberry Pi AI Camera je výkonný nástroj se zabudovanou umělou inteligencí, který dokáže pokrýt drtivou většinu základních uživatelských projektů. Dovoluje integrovat umělou inteligenci do různých projektů bez nutnosti složitého nastavení. Je tak ideální pro vzdělávací účely, prototypování a lehké průmyslové aplikace. Navíc funguje stejným způsobem jako standardní kamera pro Raspberry Pi a tím nechává volný PCIe port.
klady
- bezproblémový provoz
- lze ji použít jako běžnou kameru nebo fotoaparát
- integrovaný „NPU“
- běží na Pythonu
- konvertor pro modely PyTorch a TensorFlow
- detekce objektů v reálném čase
- detekce pohybů v reálném čase
- skvělý nástroj pro automatizované systémy a robotiku
zápory
- vyšší pořizovací cena
- absence autofokusu