V článku „Anomaly Detection with Autoencoders Made Easy“ jsem se zmínil, že autoenkodéry se široce uplatňují při redukci rozměrů a redukci obrazového šumu. Od té doby se mě mnoho čtenářů ptalo, zda se mohu zabývat tématem redukce obrazového šumu pomocí autoenkodérů. To je motivací tohoto příspěvku.
Modelování obrazových dat vyžaduje ve světě neuronových sítí zvláštní přístup. Nejznámější neuronovou sítí pro modelování obrazových dat je konvoluční neuronová síť (CNN nebo ConvNet) nebo tzv. konvoluční autoenkodér. V tomto příspěvku začnu jemným úvodem pro obrazová data, protože ne všichni čtenáři se v oblasti obrazových dat pohybují (pokud jste již obeznámeni, klidně tuto část přeskočte). Poté popíšu jednoduchou standardní neuronovou síť pro obrazová data. To mi poskytne příležitost ukázat, proč jsou konvoluční autoenkodéry preferovanou metodou při práci s obrazovými daty. Především však ukážu, jak konvoluční autoenkodéry redukují šumy v obraze. V tomto příspěvku používám modul Keras a data MNIST. Zápisník je k dispozici prostřednictvím tohoto odkazu. Keras je vysokoúrovňové rozhraní API pro neuronové sítě napsané v jazyce Python a schopné běžet nad modulem TensorFlow. Tento příspěvek je rozšířením mého dřívějšího příspěvku „Co je to rozpoznávání obrazu?“, který vám doporučuji si přečíst.
Myslím, že je užitečné zmínit tři široké kategorie dat. Tyto tři kategorie dat jsou následující: (1) Nekorelovaná data (na rozdíl od sériových dat), (2) Sériová data (včetně textových a hlasových dat) a (3) Obrazová data. Hluboké učení má tři základní varianty řešení každé kategorie dat: (1) standardní dopředná neuronová síť, (2) RNN/LSTM a (3) konvoluční neuronová síť (CNN). Čtenářům, kteří hledají návody k jednotlivým typům, doporučujeme podívat se na články „Vysvětlení hlubokého učení přívětivým způsobem pro regresi“ pro (1), na aktuální článek „Technický průvodce pro RNN/LSTM/GRU na předpovídání cen akcií“ pro (2) a na články „Deep Learning with PyTorch Is Not Torturing“, „What Is Image Recognition?“, „Anomaly Detection with Autoencoders Made Easy“ a „Convolutional Autoencoders for Image Noise Reduction“ pro (3). Souhrnný článek „Dataman Learning Paths – Build Your Skills, Drive Your Career“ si můžete uložit do záložek.
Poznejte obrazová data
Obrázek se skládá z „pixelů“, jak ukazuje obrázek (A). V černobílém obrázku je každý pixel reprezentován číslem v rozmezí 0 až 255. Většina dnešních obrázků používá 24bitovou nebo vyšší barvu. Barevný obrázek RGB znamená, že barva v pixelu je kombinací červené, zelené a modré barvy, přičemž každá z těchto barev má rozsah od 0 do 255. Barevný systém RGB vytváří všechny barvy z kombinace červené, zelené a modré barvy, jak ukazuje tento generátor barev RGB. Pixel tedy obsahuje sadu tří hodnot RGB(102, 255, 102) a odkazuje na barvu #66ff66.
Obrázek široký 800 pixelů, vysoký 600 pixelů má 800 x 600 = 480 000 pixelů = 0,48 megapixelu („megapixel“ je 1 milion pixelů). Obrázek s rozlišením 1024 × 768 je mřížka s 1 024 sloupci a 768 řádky, která tedy obsahuje 1 024 × 768 = 0,78 megapixelu.
MNIST
Báze MNIST (Modifikovaná databáze Národního institutu pro standardy a technologie) je rozsáhlá databáze ručně psaných číslic, která se běžně používá pro trénování různých systémů zpracování obrazu. Tréninková datová sada v systému Keras má 60 000 záznamů a testovací datová sada má 10 000 záznamů. Každý záznam má rozměry 28 x 28 pixelů.
Jak vypadají? Pomocí matplotlib a jeho obrazové funkce imshow() zobrazíme prvních deset záznamů.