Počítačové vidění a prostředí MATLAB

od hledání vzoru po deep learning

Počítačové vidění (computer vision) využívá obrazu a videa k detekci, klasifikaci a sledování objektů nebo událostí za účelem pochopení reálné situace. Úlohy počítačového vidění lze řešit různými přístupy, od porovnávání vzoru se snímkem, po metodu deep learning, nabízející vysokou přesnost a spolehlivost. MATLAB, jakožto inženýrský nástroj s jazykem a interaktivním prostředím pro vědecké a technické výpočty, poskytuje množství funkcí, které můžete v oblasti počítačového vidění využít.

Zajímá Vás segmentace obrazu?
Podívejte se na článek Deep learning pro segmentaci obrazu.

Počítačové vidění (z anglického computer vision) je odvětví výpočetní techniky a vývoje softwaru zabývající se vytvářením zařízení schopných získávat informaci ze zachyceného obrazu … (http://cs.wikipedia.org).

Zpracování obrazu v prostředí MATLAB můžeme rozdělit do dvou kategorií – klasické zpracování obrazu a počítačové vidění. Klasické zpracování obrazu se zaměřuje především na úlohy, jako je odstranění šumu v obrazu a filtrace, nastavení kontrastu, práce s barevnými prostory nebo měření a transformace obrazu. Kromě úpravy a předzpracování snímků spadá do klasického zpracování obrazu také detekce objektů založená na barevné informaci, morfologických operacích, prahování a tvorbě masky.

Počítačové vidění vnáší do analýzy obrazu hlubší rozměr se zaměřením na detekci, klasifikaci a sledování objektů na základě charakteristických rysů daného objektu. Nástroje prostředí MATLAB obsahují množství specializovaných algoritmů, kterými lze úlohy z oblasti počítačového vidění řešit.

Hledání vzorového objektu

První skupinu úloh počítačového vidění představuje nalezení vzorového objektu na snímku nebo ve videosekvenci. Úloha využívá algoritmů, které vyhledávají podobné prvky na snímku a v hledaném vzoru. Výsledkem může být poloha hledaného objektu ve scéně nebo transformace, která vzor do snímku scény mapuje.

K řešení úlohy v prostředí MATLAB využíváme tzv. příznaky, které popisují klíčová místa v obrazu. Kromě základních příznaků, jako jsou rohové body, můžeme využít příznaky BRISK, SURF, KAZE nebo MSER. Příznaky SURF jsou například necitlivé ke změnám měřítka, natočení i změnám jasu a kontrastu. Detekce objektu je tím pádem mnohem robustnější.

Nalezené příznaky na snímku a ve vzoru jsou vzájemně porovnány. Umístění párů odpovídajících příznaků pak určuje polohu vzorového objektu na snímku. Hledání příznaků i jejich porovnávání je plně automatické a disponuje množstvím uživatelsky nastavitelných parametrů. Na obrázku 1 je zobrazeno hledání značky Přechod pro chodce ve snímané scéně. Zelené kružnice označují příznaky SURF, žluté linky zobrazují polohu odpovídajících příznaků mezi vzorem a snímkem.

Nalezení vzorového objektu

Obrázek 1: Nalezení vzorového objektu na snímku

Detekce objektů

Kromě hledání vzorového objektu, popsaného v předcházejících odstavcích, je možné provádět detekci obecnější kategorie objektů pojímajících určitou diverzitu. Vhodnou funkčnost v této oblasti poskytují cascade object detector (využívající algoritmus Viola-Jones) a ACF object detector. Detektory je nutné nejprve naučit na konkrétní typ objektů pomocí množiny vzorových dat a poté je aplikovat na nové snímky.

V prostředí MATLAB jsou k dispozici předtrénované detektory pro detekci postav (obrázek 2), detekci obličeje (obrázek 3), nosu, očí a dalších častí lidského těla. Jejich použití je tak velmi snadné. Alternativou k využití předtrénovaných detektorů je možnost trénování nového detektoru pro uživatelské třídy objektů.

Detekce chodců

Obrázek 2: Detekce chodců

Sledování objektů

Sledování objektů není pouhou opakovanou detekcí objektů aplikovanou na jednotlivé snímky ve videu. Při sledování se snažíme nalézt souvislosti a změny scény v po sobě jdoucích snímcích. V prostředí MATLAB můžeme k tomuto účelu využít sledování obdélníkové oblasti snímku na základě analýzy histogramu nebo sledování skupiny bodů (obrázek 3).

Sledování obličeje

Obrázek 3: Detekce a sledování obličeje

Kromě popsaných metod nabízí MATLAB také funkce pro detekci popředí či predikci pohybu objektu pomocí Kalmanova filtru.

Klasifikace objektů

Klasifikace snímaných objektů představuje odlišný typ úlohy, než hledání konkrétního objektu na snímku. Při klasifikaci přiřazujeme celému snímku jednu klasifikační kategorii, která charakterizuje snímaný objekt. Úlohy se mohou týkat typických objektů okolního světa nebo mohou být specializovány na rozeznání vybraného objektu z dané skupiny.

Klasifikátor je třeba nejprve natrénovat na vzorových datech a poté jej aplikovat na nový snímek. V prostředí MATLAB je k dispozici klasifikátor využívající přístup bag-of-visual words. Přístup zahrnuje extrakci příznaků SURF, k-means clustering pro získání vizuálního „slovníku“ a klasifikační algoritmus support vector machine (SVM).

Deep learning a počítačové vidění

Detekci a klasifikaci objektů na snímcích lze řešit i metodami deep learningu. MATLAB v této oblasti využívá konvoluční neuronové sítě (obrázek 4), které jsou v současné době velmi populární.

Princip fungování CNN

Obrázek 4: Princip fungování konvoluční neuronové sítě

Konvoluční neuronová síť (CNN) je uspořádána do mnoha vrstev obsahujících sady propojených uzlů. Výpočetní algoritmus CNN je založen na konvoluci mezi vstupními daty (obrázky) a 2-D filtry, které reprezentují hledané charakteristické rysy. Na základě těchto rysů je objekt na obrázku klasifikován. Úspěšnost CNN při klasifikaci obrázků nezřídka přesahuje 95%, čímž se řadí mezi nejspolehlivější metody.

Více o konvolučních neuronových sítích najdete v článku Deep learning a prostředí MATLAB.

CNN lze využít nejen ke klasifikaci obrázku jako celku, ale též k detekci specifických objektů ve snímané scéně (obrázek 5). Hledaný objekt zde obvykle pokrývá pouze malou část snímku a v ostatních částech se nacházejí jiné objekty. Proto není možné snímek klasifikovat jako celek.

V prostředí MATLAB se k této úloze využívají algoritmy typu R-CNN (Regions with CNN), kdy je konvoluční neuronová síť aplikována na klasifikaci výřezů (regionů) v rámci daného snímku. Namísto klasifikace všech výřezů získaných pomocí „plovoucího“ okénka zpracovává R-CNN detektor pouze výřezy, kde je výskyt hledaného objektu pravděpodobný. To významnou měrou redukuje výpočetní nároky.

R-CNN

Obrázek 5: Rozpoznávání dopravních značek pomocí R-CNN detektoru

Stavební kameny

Popsané algoritmy nepředstavují hotové uzavřené řešení, ale stavební kameny, které můžete využít k budování vlastních komplexních algoritmů detekce a sledování objektů či osob. MATLAB nabízí množství příkladů, jak tyto stavební kameny skládat a řešit jimi úlohy a situace, jako je problematika ztráty a opětovného nalezení sledovaného objektu, sledování mnoha objektů zároveň, stereovize a další.

Jaroslav Jirkovský (HUMUSOFT), 24.8.2018