W „Anomaly Detection with Autoencoders Made Easy” wspomniałem, że autoenkodery były szeroko stosowane w redukcji wymiarów i redukcji szumów obrazu. Od tego czasu wielu czytelników pytało, czy mogę pokryć temat redukcji szumów obrazu za pomocą autoenkoderów. To jest motywacja tego postu.
Modelowanie danych obrazu wymaga specjalnego podejścia w świecie sieci neuronowych. Najbardziej znaną siecią neuronową do modelowania danych obrazu jest Convolutional Neural Network (CNN, lub ConvNet) lub zwany Convolutional Autoencoder. W tym poście zacznę od delikatnego wprowadzenia do danych obrazu, ponieważ nie wszyscy czytelnicy są w dziedzinie danych obrazu (nie krępuj się pominąć tej sekcji, jeśli jesteś już zaznajomiony). Następnie opiszę prostą standardową sieć neuronową dla danych obrazowych. To da mi możliwość zademonstrowania, dlaczego Autoenkodery Konwolucyjne są preferowaną metodą w radzeniu sobie z danymi obrazowymi. Przede wszystkim, zademonstruję jak Autoenkodery Konwolucyjne redukują szumy w obrazie. W tym poście używam modułu Keras oraz danych MNIST. Notebook jest dostępny pod tym linkiem. Keras to wysokopoziomowe API sieci neuronowych, napisane w Pythonie i zdolne do działania na wierzchu TensorFlow. Ten post jest rozszerzeniem mojego wcześniejszego postu „What Is Image Recognition?”, który zachęcam do spojrzenia.
Pomyślałem, że pomocne jest wspomnienie o trzech szerokich kategoriach danych. Te trzy kategorie danych to: (1) Dane nieskorelowane (W przeciwieństwie do danych szeregowych), (2) Dane szeregowe (w tym dane tekstowe i dane strumienia głosowego) oraz (3) Dane obrazowe. Głębokie uczenie ma trzy podstawowe odmiany, aby zająć się każdą kategorią danych: (1) standardowa sieć neuronowa feedforward, (2) RNN/LSTM, oraz (3) Convolutional NN (CNN). Dla czytelników, którzy szukają tutoriali dla każdego typu, polecamy sprawdzić „Explaining Deep Learning in a Regression-Friendly Way” dla (1), aktualny artykuł „A Technical Guide for RNN/LSTM/GRU on Stock Price Prediction” dla (2), oraz „Deep Learning with PyTorch Is Not Torturing”, „What Is Image Recognition?”, „Anomaly Detection with Autoencoders Made Easy” i „Convolutional Autoencoders for Image Noise Reduction” dla (3). Możesz założyć zakładkę artykułu podsumowującego „Dataman Learning Paths – Build Your Skills, Drive Your Career”.
Understand Image Data
Obraz składa się z „pikseli”, jak pokazano na rysunku (A). W obrazie czarno-białym każdy piksel jest reprezentowany przez liczbę z zakresu od 0 do 255. Większość współczesnych obrazów wykorzystuje 24-bitowy kolor lub wyższy. Obraz kolorowy RGB oznacza, że kolor w pikselu jest kombinacją kolorów czerwonego, zielonego i niebieskiego, a każdy z tych kolorów ma zakres od 0 do 255. System kolorów RGB konstruuje wszystkie kolory z kombinacji kolorów czerwonego, zielonego i niebieskiego, jak pokazano na tym generatorze kolorów RGB. Tak więc piksel zawiera zestaw trzech wartości RGB(102, 255, 102) odnosi się do koloru #66ff66.
Obraz o szerokości 800 pikseli i wysokości 600 pikseli ma 800 x 600 = 480 000 pikseli = 0,48 megapiksela („megapiksel” to 1 milion pikseli). Obraz o rozdzielczości 1024×768 to siatka o 1024 kolumnach i 768 wierszach, która zawiera zatem 1024 × 768 = 0,78 megapikseli.
MNIST
Baza danych MNIST (zmodyfikowana baza danych Narodowego Instytutu Standardów i Technologii) to duża baza danych odręcznego pisma cyfrowego, która jest powszechnie używana do szkolenia różnych systemów przetwarzania obrazu. Szkoleniowy zbiór danych w Keras ma 60 000 rekordów, a testowy zbiór danych ma 10 000 rekordów. Każdy rekord ma wymiary 28 x 28 pikseli.
Jak one wyglądają? Użyjmy matplotlib i jego funkcji obrazu imshow() do pokazania pierwszych dziesięciu rekordów.