Základy AI

Jak funguje klasifikace obrázků?

mm
Přidejte Unite.AI mezi své preferované zdroje na Google

Jak může váš telefon určit, co je objekt, pouze tím, že pořídí jeho fotografii? Jak sociální média automaticky označují lidi na fotografiích? To je možné díky umělou inteligenci a rozpoznávání obrázků.

Rozpoznávání a klasifikace obrázků je to, co umožňuje mnoha nejpozoruhodnějším úspěchům umělé inteligence. Ale jak počítače naučí rozpoznávat a klasifikovat obrázky? V tomto článku budeme pokrývat obecné metody, které počítače používají k interpretaci a detekci obrázků, a poté se podíváme na některé z nejpopulárnějších metod klasifikace těchto obrázků.

Klasifikace na úrovni pixelů vs. objektové klasifikace

Techniky klasifikace obrázků lze rozdělit do dvou hlavních kategorií: klasifikace na úrovni pixelů a objektová klasifikace.

Pixely jsou základní jednotky obrázku a analýza pixelů je primárním způsobem, jakým se provádí klasifikace obrázků. Nicméně klasifikační algoritmy mohou použít buď pouze spektrální informace uvnitř jednotlivých pixelů pro klasifikaci obrázku, nebo prozkoumat prostorové informace (nedaleké pixely) spolu se spektrálními informacemi. Metody klasifikace na úrovni pixelů využívají pouze spektrální informace (intenzitu pixelu), zatímco objektové metody klasifikace zohledňují jak spektrální informace pixelů, tak prostorové informace.

Existují různé klasifikační techniky používané pro klasifikaci na úrovni pixelů. Tyto zahrnují minimální vzdálenost k průměru, maximální pravděpodobnost a minimální Mahalanobisovu vzdálenost. Tyto metody vyžadují, aby byly známy průměry a variance tříd, a všechny fungují tak, že prozkoumají “vzdálenost” mezi třídami a cílovými pixely.

Metody klasifikace na úrovni pixelů jsou omezeny tím, že nemohou použít informace z jiných blízkých pixelů. Naopak, objektové metody klasifikace mohou zahrnovat další pixely a proto také používají prostorové informace pro klasifikaci položek. Poznámka: “objekt” se zde týká pouze souvislých oblastí pixelů a ne zda je v této oblasti cílový objekt.

Předzpracování obrazových dat pro detekci objektů

Nejnovější a nejvíce spolehlivé systémy klasifikace obrázků primárně používají objektové klasifikační schéma, a pro tyto přístupy musí být obrazová data připravena určitým způsobem. Objekty/oblasti musí být vybrány a předzpracovány.

Než může být obrázek a objekty/oblasti uvnitř něj klasifikovány, musí být data, která tvoří obrázek, interpretována počítačem. Obrázky musí být předzpracovány a připraveny pro vstup do klasifikačního algoritmu, a to se provádí pomocí detekce objektů. Tato část je kritická pro přípravu dat a přípravu obrázků pro výuku klasifikátoru strojového učení.

Detekce objektů se provádí pomocí různých metod a technik. Začněme tím, zda je jeden objekt zájmu nebo více objektů zájmu, což ovlivňuje, jak se zpracovává předzpracování obrázku. Pokud je pouze jeden objekt zájmu, obrázek prochází lokalizací. Pixely, které tvoří obrázek, mají numerické hodnoty, které jsou interpretovány počítačem a použity pro zobrazení správných barev a odstínů. Objekt zvaný ohraničující rámeček je nakreslen kolem objektu zájmu, což pomáhá počítači určit, která část obrázku je důležitá a které pixelové hodnoty definují objekt. Pokud je v obrázku více objektů zájmu, používá se technika zvaná detekce objektů pro aplikaci těchto ohraničujících rámečků na všechny objekty uvnitř obrázku.

Foto: Adrian Rosebrock via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Intersection_over_Union_-_object_detection_bounding_boxes.jpg)

Další metodou předzpracování je segmentace obrázků. Segmentace obrázků funguje tak, že rozdělí celý obrázek na segmenty na základě podobných funkcí. Různé oblasti obrázku budou mít podobné pixelové hodnoty ve srovnání s jinými oblastmi obrázku, takže tyto pixely jsou seskupeny do masky obrázku, které odpovídají tvaru a hranicím relevantních objektů uvnitř obrázku. Segmentace obrázků pomáhá počítači izolovat funkce obrázku, které mu pomohou klasifikovat objekt, podobně jako ohraničující rámečky, ale poskytují mnohem přesnější, pixelové štítky.

Po dokončení detekce objektů nebo segmentace obrázků jsou aplikovány štítky na dotyčné oblasti. Tyto štítky jsou spolu se hodnotami pixelů, které tvoří objekt, vloženy do algoritmů strojového učení, které se učí vzorce spojené s různými štítky.

Algoritmy strojového učení

Jakmile jsou data připravena a označena, jsou vložena do algoritmu strojového učení, který se učí na datech. Budeme pokrývat některé z nejčastějších typů algoritmů klasifikace obrázků pomocí strojového učení a hlubokého učení níže.

K-Nearest Neighbors

K-Nearest Neighbors je klasifikační algoritmus, který prozkoumá nejbližší trénovací příklady a prozkoumá jejich štítky, aby určil nejpravděpodobnější štítek pro daný testovací příklad. Při klasifikaci obrázků pomocí KNN jsou uloženy vektorové funkce a štítky trénovacích obrázků a pouze vektorová funkce je vložena do algoritmu během testování. Trénovací a testovací vektorové funkce jsou pak porovnány navzájem pro podobnost.

Algoritmy KNN jsou extrémně jednoduché a snadno zvládají více tříd. Nicméně, KNN vypočítává podobnost na základě všech funkcí stejně. To znamená, že může být náchylný k nesprávné klasifikaci, pokud jsou poskytovány obrázky, u nichž je pouze podmnožina funkcí důležitá pro klasifikaci obrázku.

Support Vector Machines

Support Vector Machines jsou klasifikační metodou, která umisťuje body do prostoru a poté kreslí dělicí linie mezi body, umisťující objekty do různých tříd v závislosti na tom, na které straně dělicí roviny se body nachází. Support Vector Machines jsou schopny provádět nelineární klasifikaci pomocí techniky zvané kernel trik. Zatímco klasifikátory SVM jsou často velmi přesné, podstatnou nevýhodou klasifikátorů SVM je, že tendují být omezeny jak velikostí, tak rychlostí, přičemž rychlost trpí, jak velikost roste.

Multi-Layer Perceptrons (Neuronové sítě)

Multi-layer perceptrony, také nazývané modely neuronových sítí, jsou algoritmy strojového učení inspirované lidským mozkem. Multi-layer perceptrony se skládají z různých vrstev, které jsou spojeny navzájem, podobně jako neuronové buňky v lidském mozku jsou spojeny. Neuronové sítě činí předpoklady o tom, jak jsou vstupní funkce spojeny s třídami dat, a tyto předpoklady jsou upravovány během tréninku. Jednoduché modely neuronových sítí, jako je multi-layer perceptron, jsou schopny učit se nelineární vztahy, a v důsledku toho mohou být mnohem přesnější než jiné modely. Nicméně, modely MLP trpí některými významnými problémy, jako je přítomnost nekonvexních funkcí ztrát.

Algoritmy hlubokého učení (CNN)

Foto: APhex34 via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Typical_cnn.png)

Nejčastěji používaný algoritmus klasifikace obrázků v nedávné době je Konvoluční neuronová síť (CNN). CNN jsou přizpůsobené verze neuronových sítí, které kombinují multilayerové neuronové sítě se specializovanými vrstvami, které jsou schopny extrahovat funkce nejdůležitější a relevantní pro klasifikaci objektu. CNN mohou automaticky objevit, generovat a učit se funkce obrázků. To výrazně snižuje potřebu ručního označení a segmentace obrázků pro přípravu na algoritmy strojového učení. Mají také výhodu oproti modelům MLP, protože mohou zvládat nekonvexní funkce ztrát.

Konvoluční neuronové sítě dostaly své jméno od skutečnosti, že vytvářejí “konvoluce”. CNN fungují tak, že vezmou filtr a posunou ho přes obrázek. Můžete si to představit jako pohled na části krajiny prostřednictvím pohyblivého okna, soustředěného pouze na funkce, které jsou viditelné prostřednictvím okna v jeden okamžik. Filtr obsahuje numerické hodnoty, které jsou násobeny hodnotami pixelů samotných. Výsledkem je nový rám, nebo matice, plná čísel, která reprezentují původní obrázek. Tento proces se opakuje pro zvolený počet filtrů, a poté jsou rámečky spojeny do nového obrázku, který je mírně menší a méně komplexní než původní obrázek. Používá se technika zvaná pooling pro výběr pouze nejvýznamnějších hodnot uvnitř obrázku, a cílem je, aby konvoluční vrstvy nakonec extrahovaly pouze nejvýraznější části obrázku, které pomohou neuronové síti rozpoznat objekty v obrázku.

Konvoluční neuronové sítě se skládají ze dvou různých částí. Konvoluční vrstvy jsou tím, co extrahuje funkce obrázku a převádí je do formátu, který mohou neuronové vrstvy interpretovat a učit se z něj. Rané konvoluční vrstvy jsou odpovědné za extrahování nejzákladnějších prvků obrázku, jako jsou jednoduché linie a hranice. Střední konvoluční vrstvy začínají zachycovat složitější tvary, jako jsou jednoduché křivky a rohy. Pozdější, hlubší konvoluční vrstvy extrahují vysoké úrovně funkcí obrázku, které jsou vloženy do neuronové části CNN, a jsou tím, co se naučí klasifikátor.

Blogger a programátor se specializací na Machine Learning a Deep Learning témata. Daniel doufá, že pomůže ostatním využít sílu AI pro sociální dobro.