Počítačové vidění
Obsah boxu
Počítačové vidění (anglicky Computer Vision) je interdisciplinární vědní obor, který se zabývá tím, jak mohou počítače získat porozumění na vysoké úrovni z digitálních obrazů nebo videí. Z pohledu inženýrství se snaží automatizovat úkoly, které dokáže lidský zrakový systém. Zahrnuje metody pro získávání, zpracování, analýzu a porozumění obrazovým datům a extrakci vícerozměrných dat z reálného světa za účelem produkce numerických nebo symbolických informací, např. ve formě rozhodnutí. Je považováno za součást širšího pole umělé inteligence.
Počítačové vidění se snaží napodobit schopnosti lidského zraku pomocí algoritmů a softwaru. Zatímco zpracování obrazu se zaměřuje především na manipulaci s obrazy (např. vylepšení kontrastu), počítačové vidění jde o krok dál a snaží se obrazu porozumět – identifikovat objekty, scény a aktivity, které obsahuje.
📜 Historie
Historie počítačového vidění je úzce spjata s vývojem umělé inteligence a výpočetní techniky.
👶 Počátky (60. a 70. léta)
První pokusy v oblasti počítačového vidění se datují do 60. let 20. století. V roce 1966 na MIT proběhl tzv. "Summer Vision Project", jehož cílem bylo vyvinout systém schopný analyzovat obraz ze kamery a popsat jeho obsah. Cíle byly velmi ambiciózní a brzy se ukázalo, že problém je mnohem složitější, než se původně předpokládalo. Rané systémy se soustředily na tzv. "svět bloků" (Blocks World), kde se snažily identifikovat jednoduché geometrické objekty.
🧠 Marrův přístup a vzestup geometrie (80. léta)
V 80. letech přišel David Marr s vlivnou teorií, která navrhovala hierarchický přístup k vidění. Podle Marra se vidění skládá z několika úrovní zpracování: od 2D náčrtu (hrany, body), přes 2.5D náčrt (informace o hloubce a orientaci povrchů) až po plnohodnotný 3D model scény. Tento přístup silně ovlivnil výzkum na mnoho let a zaměřil pozornost na geometrické aspekty vidění.
📊 Statistické metody (90. léta a počátek 21. století)
S nárůstem výpočetního výkonu se v 90. letech začaly prosazovat statistické a pravděpodobnostní metody. Místo pevných pravidel se systémy začaly učit z dat. Velkým průlomem byl v roce 2001 Viola-Jonesův algoritmus pro detekci obličejů v reálném čase, který využíval jednoduché Haarovy příznaky a kaskádový klasifikátor. V této éře také vznikly robustní metody pro extrakci lokálních příznaků, jako jsou SIFT (Scale-Invariant Feature Transform) a SURF, které umožnily spolehlivé porovnávání obrazů.
🚀 Revoluce hlubokého učení (od roku 2012)
Rok 2012 je považován za zlomový bod v moderním počítačovém vidění. Tým pod vedením Geoffreyho Hintona představil konvoluční neuronovou síť (CNN) nazvanou AlexNet, která s drtivou převahou zvítězila v soutěži ImageNet Large Scale Visual Recognition Challenge (ILSVRC). Tento úspěch odstartoval revoluci hlubokého učení. CNN a další architektury hlubokých neuronových sítí (např. ResNet, YOLO, Vision Transformers) dnes dominují prakticky ve všech úlohách počítačového vidění a dosahují v mnoha případech výkonu srovnatelného nebo i lepšího než lidé.
⚙️ Základní úlohy a principy
Počítačové vidění řeší širokou škálu úloh, které lze rozdělit do několika základních kategorií.
🖼️ Získání a předzpracování obrazu
Prvním krokem je vždy získání obrazu, typicky z kamery, skeneru nebo jiného senzoru. Následuje předzpracování, které má za cíl vylepšit kvalitu obrazu a připravit ho pro další analýzu. Mezi běžné operace patří:
- Odstranění šumu (filtrace).
- Úprava jasu a kontrastu.
- Geometrické transformace (rotace, změna měřítka).
- Detekce hran (např. pomocí Cannyho detektoru hran).
🎯 Klasifikace obrazu
Nejzákladnější úlohou je klasifikace, která přiřadí celému obrazu jednu značku (label). Například systém dostane obrázek a má rozhodnout, zda je na něm "kočka", "pes" nebo "auto".
📦 Detekce a lokalizace objektů
Tato úloha je složitější než klasifikace. Cílem je nejen identifikovat, jaké objekty jsou v obraze, ale také určit jejich přesnou polohu, obvykle pomocí ohraničujícího rámečku (bounding box). Příkladem jsou systémy jako YOLO (You Only Look Once), které dokáží v reálném čase detekovat více objektů najednou.
🎨 Sémantická a instanční segmentace
Segmentace jde ještě o krok dál a snaží se klasifikovat každý jednotlivý pixel v obraze.
- Sémantická segmentace: Přiřazuje každému pixelu kategorii (např. "silnice", "auto", "chodec", "obloha"). Nerozlišuje mezi jednotlivými instancemi stejné kategorie.
- Instanční segmentace: Rozlišuje jednotlivé instance objektů. Například označí každé auto v obraze jinou barvou.
🚶 Sledování objektů (Tracking)
Sledování objektů (Object Tracking) se zabývá lokalizací a sledováním pohybu jednoho nebo více objektů v sekvenci snímků (videu). Je klíčové pro autonomní vozidla, bezpečnostní kamery nebo analýzu sportovních utkání.
🌍 3D rekonstrukce
Cílem 3D rekonstrukce je vytvořit trojrozměrný model scény nebo objektu z jednoho nebo více 2D obrazů. Využívá se například stereoskopického vidění (podobně jako lidské oči) nebo technik jako Structure from Motion (SfM).
🛠️ Metody a technologie
Pro řešení výše uvedených úloh se používá řada metod, od klasických algoritmů po moderní neuronové sítě.
Klasické metody
Před érou hlubokého učení dominovaly metody založené na ručně navržených příznacích a klasických algoritmech strojového učení.
- Detektory příznaků: Algoritmy jako SIFT, SURF nebo ORB hledají v obraze výrazné body (rohy, hrany), které jsou invariantní vůči změnám měřítka, rotace a osvětlení.
- Deskriptory příznaků: Popisují okolí detekovaných bodů pomocí vektoru čísel, což umožňuje jejich porovnávání.
- Klasifikátory: Pro samotnou klasifikaci se používaly metody jako Support Vector Machines (SVM) nebo Random forest.
Strojové učení a hluboké učení
Moderní přístupy jsou téměř výhradně založeny na strojovém učení, zejména na hlubokých neuronových sítích.
- Konvoluční neuronové sítě (CNN): Jsou základním stavebním kamenem moderního počítačového vidění. Jejich architektura je inspirována lidským zrakovým kortexem a je mimořádně efektivní pro zpracování obrazových dat. Sítě jako VGG, ResNet nebo Inception nastavily standardy v klasifikaci obrazu.
- Rekurentní neuronové sítě (RNN): Používají se pro úlohy, které zahrnují sekvence, jako je analýza videa nebo generování popisků k obrázkům.
- Transformery: Původně vyvinuté pro zpracování přirozeného jazyka, architektury jako Vision Transformer (ViT) se ukázaly jako velmi úspěšné i v počítačovém vidění a v některých úlohách překonávají CNN.
💡 Praktické aplikace
Počítačové vidění má obrovský dopad na mnoho odvětví průmyslu a každodenního života.
- Doprava: Autonomní vozidla využívají počítačové vidění k detekci jízdních pruhů, dopravních značek, chodců a ostatních vozidel. Asistenční systémy řidiče (ADAS) varují před kolizí nebo opuštěním pruhu.
- Zdravotnictví: Analýza lékařských snímků (Rentgen, Magnetická rezonance, CT) pro detekci nádorů, anomálií a podporu diagnózy.
- Bezpečnost: Rozpoznávání obličejů pro autentizaci a sledování, monitorování davů, detekce anomálního chování v bezpečnostních kamerách.
- Průmysl a výroba: Automatická vizuální kontrola kvality výrobků na výrobních linkách, navádění robotických ramen.
- Zemědělství: Precizní zemědělství, kde drony a kamery monitorují zdraví plodin, identifikují plevel nebo odhadují výnosy.
- Maloobchod: Samoobslužné pokladny bez skenování (např. Amazon Go), analýza chování zákazníků v obchodech, správa skladových zásob.
- Zábava a spotřební elektronika: Rozšířená realita (AR) a virtuální realita (VR), filtry v sociálních sítích, organizace fotografií podle obsahu, optické rozpoznávání znaků (OCR) pro digitalizaci dokumentů.
🚧 Výzvy a etické otázky
Navzdory obrovskému pokroku čelí počítačové vidění stále řadě výzev.
Technické výzvy
- Robustnost: Systémy mohou selhávat za nestandardních podmínek (špatné osvětlení, déšť, sníh, mlha).
- Variabilita: Objekty se mohou lišit tvarem, velikostí, barvou a pozicí. Problémem je také okluze (částečné zakrytí objektu).
- Potřeba dat: Modely hlubokého učení vyžadují obrovské množství označených dat pro trénování, jejichž pořízení je drahé a časově náročné.
- Interpretovatelnost: Rozhodnutí hlubokých neuronových sítí jsou často těžko vysvětlitelná ("black box" problém), což je překážkou v kritických aplikacích jako je medicína.
Etické a společenské otázky
- Soukromí: Masové nasazení technologií pro rozpoznávání obličejů a sledování osob vyvolává vážné obavy o ztrátu soukromí.
- Zaujatost (Bias): Pokud jsou modely trénovány na datech, která nereprezentují celou populaci, mohou být jejich výsledky diskriminační (např. horší přesnost rozpoznávání obličejů u určitých etnických skupin).
- Zneužití: Technologie mohou být zneužity pro vojenské účely (autonomní zbraně), dezinformace (deepfake) nebo masový dohled autoritářskými režimy.
🧠 Pro laiky
Představte si, že učíte malé dítě rozpoznat kočku. Ukážete mu mnoho obrázků koček a řeknete: "Tohle je kočka." Dítě si postupně v hlavě vytvoří představu, co dělá kočku kočkou – má uši, vousky, ocas, určitý tvar těla.
Počítačové vidění funguje na podobném principu, ale místo mozku používá počítač a algoritmy. Počítač nevidí obrázek jako my, ale jako obrovskou mřížku čísel, kde každé číslo představuje barvu jednoho bodu (pixelu). Cílem je naučit počítač, aby v této změti čísel našel vzory, které odpovídají "kočce".
Moderní systémy, založené na neuronových sítích, se "učí" na milionech obrázků. Prohlížejí si obrázky koček, psů, aut a dalších věcí a postupně si upravují své vnitřní parametry tak, aby dokázaly správně rozlišit, co na obrázku je. Když pak dostanou nový, neznámý obrázek, použijí naučené vzory k tomu, aby uhodly jeho obsah. Díky tomu může váš telefon automaticky třídit fotky, auto samo zabrzdit před chodcem nebo lékařský software upozornit na podezřelý nález na rentgenovém snímku.