În „Anomaly Detection with Autoencoders Made Easy” am menționat că autoencoderele au fost aplicate pe scară largă în reducerea dimensiunilor și reducerea zgomotului de imagine. De atunci, mulți cititori m-au întrebat dacă pot aborda subiectul reducerii zgomotului de imagine cu ajutorul autoencoderelor. Aceasta este motivația acestei postări.
Modelarea datelor de imagine necesită o abordare specială în lumea rețelelor neuronale. Cea mai cunoscută rețea neuronală pentru modelarea datelor de imagine este rețeaua neuronală convoluțională (CNN, sau ConvNet) sau numită autocodificator convoluțional. În această postare voi începe cu o introducere ușoară pentru datele de imagine, deoarece nu toți cititorii sunt în domeniul datelor de imagine (vă rog să nu ezitați să săriți peste această secțiune dacă sunteți deja familiarizați). Apoi voi descrie o rețea neuronală standard simplă pentru datele de imagine. Acest lucru îmi va oferi ocazia de a demonstra de ce autocodurile convoluționale sunt metoda preferată în tratarea datelor de imagine. Mai presus de toate, voi demonstra modul în care autocodificatoarele convoluționale reduc zgomotele dintr-o imagine. În această postare folosesc modulul Keras și datele MNIST. Caietul este disponibil prin acest link. Keras este o API de rețele neuronale de nivel înalt, scrisă în Python și capabilă să ruleze peste TensorFlow. Această postare este o extensie a postării mele anterioare „Ce este recunoașterea imaginilor?”, pe care vă încurajez să o consultați.
Am crezut că este util să menționez cele trei mari categorii de date. Cele trei categorii de date sunt: (1) Date necorelate (Spre deosebire de datele seriale), (2) Date seriale (inclusiv date de text și de flux de voce) și (3) Date de imagine. Învățarea profundă are trei variante de bază pentru a aborda fiecare categorie de date: (1) rețeaua neuronală feedforward standard, (2) RNN/LSTM și (3) NN convoluțională (CNN). Pentru cititorii care caută tutoriale pentru fiecare tip, se recomandă să consulte „Explaining Deep Learning in a Regression-Friendly Way” pentru (1), articolul actual „A Technical Guide for RNN/LSTM/GRU on Stock Price Prediction” pentru (2) și „Deep Learning with PyTorch Is Not Torturing”, „What Is Image Recognition?”, „Anomaly Detection with Autoencoders Made Easy” și „Convolutional Autoencoders for Image Noise Reduction” pentru (3). Puteți adăuga la favorite articolul de sinteză „Dataman Learning Paths – Build Your Skills, Drive Your Career”.
Înțelegeți datele de imagine
O imagine este formată din „pixeli”, așa cum se arată în figura (A). Într-o imagine alb-negru, fiecare pixel este reprezentat de un număr cuprins între 0 și 255. Majoritatea imaginilor de astăzi folosesc culori pe 24 de biți sau mai mari. O imagine color RGB înseamnă că culoarea dintr-un pixel este reprezentată de combinația de roșu, verde și albastru, fiecare dintre culori variind de la 0 la 255. Sistemul de culori RGB construiește toate culorile din combinația culorilor Roșu, Verde și Albastru, așa cum se arată în acest generator de culori RGB. Astfel, un pixel conține un set de trei valori RGB(102, 255, 102) se referă la culoarea #66ff66.
O imagine cu lățimea de 800 de pixeli și înălțimea de 600 de pixeli are 800 x 600 = 480.000 de pixeli = 0,48 megapixeli („megapixel” înseamnă 1 milion de pixeli). O imagine cu o rezoluție de 1024×768 este o grilă cu 1.024 coloane și 768 rânduri, care, prin urmare, conține 1.024 × 768 = 0,78 megapixeli.
MNIST
Baza de date MNIST (baza de date modificată a Institutului Național de Standarde și Tehnologie) este o bază de date mare de cifre scrise de mână, care este utilizată în mod obișnuit pentru antrenarea diferitelor sisteme de procesare a imaginilor. Setul de date de instruire din Keras are 60.000 de înregistrări, iar setul de date de testare are 10.000 de înregistrări. Fiecare înregistrare are 28 x 28 pixeli.
Cum arată? Să folosim matplotlib
și funcția sa de imagine imshow()
pentru a afișa primele zece înregistrări.