Articolul este alcătuit din două părți:
- O scurtă descriere a unor arhitecturi de rețea pentru detectarea obiectelor în imagini și segmentarea imaginilor, cu cele mai ușor de înțeles linkuri către resurse. Am încercat să selectez explicații video, preferabil în limba română.
- A doua parte constă în încercarea de a înțelege direcția de dezvoltare a arhitecturilor rețelelor neuronale și a tehnologiilor bazate pe acestea.

Figura 1 – Înțelegerea arhitecturilor rețelelor neuronale nu este simplă
Totul a început cu realizarea a două aplicații demonstrative pentru clasificarea și detectarea obiectelor pe telefonul Android:
- , când datele sunt procesate pe server și transmise pe telefon. Clasificarea imaginilor (image classification) pentru trei tipuri de urși: brun, negru și de pluș.
- , când datele sunt procesate direct pe telefon. Detectarea obiectelor (object detection) pentru trei tipuri: alune, smochine și curmale.
Există o diferență între sarcinile de clasificare a imaginilor, detectarea obiectelor în imagini și . De aceea, a apărut necesitatea de a afla care arhitecturi de rețele neuronale pot detecta obiecte în imagini și care pot segmenta. Am găsit următoarele exemple de arhitecturi cu cele mai clare linkuri către resurse:
- O serie de arhitecturi bazate pe R-CNN (Regions with Convolution Neural Networks features): R-CNN, Fast R-CNN, , . Pentru detectarea obiectelor în imagini, prin mecanismul Region Proposal Network (RPN), sunt selectate regiuni delimitate (bounding boxes). Inițial, în loc de RPN a fost utilizat un mecanism mai lent, Selective Search. Apoi, regiunile delimitate sunt furnizate ca input unei rețele neuronale obișnuite pentru clasificare. În arhitectura R-CNN există cicluri explicite 'for' pentru a itera pe regiuni delimitate, cu un total de până la 2000 de treceri prin rețeaua internă AlexNet. Datorită ciclurilor explicite 'for', viteza de procesare a imaginilor este încetinită. Numărul de cicluri explicite, treceri prin rețeaua internă, se reduce cu fiecare nouă versiune a arhitecturii și se fac zeci de alte modificări pentru a spori viteza și a schimba sarcina de detectare a obiectelor în segmentarea obiectelor în Mask R-CNN.
- (You Only Look Once) – prima rețea neuronală care recunoaște obiectele în timp real pe dispozitive mobile. Caracteristica distinctivă: diferențierea obiectelor cu o singură trecere (este suficient să se privească o singură dată). Așadar, în arhitectura YOLO nu există cicluri „for” evidente, ceea ce face ca rețeaua să funcționeze rapid. De exemplu, o analogie: în NumPy, la operații cu matrice, de asemenea, nu există cicluri „for” evidente, care sunt realizate în NumPy la niveluri mai joase ale arhitecturii prin limbajul de programare C. YOLO folosește o rețea de feronieră predefinite. Pentru a evita identificarea multiplă a aceluiași obiect, se utilizează un coeficient de suprapunere a feronierelor (IoU, Intersection over Union). Această arhitectură funcționează pe un interval larg și are o : modelul poate fi antrenat pe fotografii, dar în același timp funcționează bine pe tablouri desenate.
- (Single Shot MultiBox Detector) – sunt utilizate cele mai reușite „trucuri” ale arhitecturii YOLO (de exemplu, non-maximum suppression) și se adaugă altele noi, pentru ca rețeaua neuronală să funcționeze mai rapid și mai precis. Caracteristica distinctivă: diferențierea obiectelor cu o singură trecere printr-o rețea predeterminată de feronieră (default box) pe o piramidă de imagini. Piramida de imagini este codificată în tensori convoluționali în timpul operațiunilor consecutive de convoluție și pooling (în timpul operației max-pooling, dimensiunea spațială scade). Astfel, se definesc atât obiecte mari, cât și mici într-o singură trecere a rețelei.
- MobileSSD (MobileNetV2 + SSD) – o combinație din două arhitecturi de rețele neuronale. Prima rețea funcționează rapid și crește precizia recunoașterii. MobileNetV2 este utilizat în locul VGG-16, care a fost utilizat inițial în . A doua rețea SSD determină locația obiectelor în imagine.
- – o rețea neuronală foarte mică, dar precisă. Ea nu rezolvă singură problema detectării obiectelor. Totuși, poate fi utilizată în combinația diferitelor arhitecturi. Și utilizată pe dispozitive mobile. Caracteristica distinctivă este că datele sunt comprimate mai întâi la patru filtre convoluționale 1×1, iar apoi sunt extinse la patru 1×1 și patru 3×3 filtre convoluționale. O astfel de iterație de comprimare-extindere a datelor se numește „Fire Module”.
- (Segmentarea semantică a imaginilor cu rețele neuronale convoluționale profunde) – segmentarea obiectelor dintr-o imagine. Caracteristica distinctivă a arhitecturii este convoluția dilatată, care păstrează rezoluția spațială. Urmează o etapă de procesare ulterioară a rezultatelor folosind un model grafic de probabilitate, ceea ce permite eliminarea zgomotelor minore în segmentare și îmbunătățirea calității imaginii segmentate. Sub denumirea temută de „model grafic probabilistic” se ascunde un simplu filtru Gaussian, care este aproximat pe cinci puncte.
- Am încercat să înțeleg structura (Single-Shot Refinement Neural Network for Object Detecție), dar n-am înțeles prea multe.
- De asemenea, am urmărit cum funcționează tehnologia „atenție”: , , . Caracteristica distinctivă a arhitecturii „atenție” este capacitatea de a evidenția automat regiunile de interes ridicat din imagine (RoI, Rregiuni of Ide interes) utilizând o rețea neuronală numită Attention Unit. Regiunile de interes ridicat seamănă cu regiunile delimitate (bounding boxes), dar spre deosebire de acestea, nu sunt fixe în imagine și pot avea margini neclare. Apoi, din regiunile de interes ridicat sunt extrase caracteristici (features), care sunt „alimentate” rețelelor neuronale recurente cu arhitecturi . Rețelele neuronale recurente sunt capabile să analizeze relațiile dintre caracteristici în secvență. Aceste rețele erau inițial folosite pentru traducerea textului în alte limbi, iar acum și pentru traducerea și .
Pe măsură ce am studiat aceste arhitecturi am realizat că nu înțeleg nimic.. Și nu este vorba că rețeaua mea neuronală are probleme cu mecanismul de atenție. Crearea tuturor acestor arhitecturi pare a fi un imens hackathon, unde autorii concurează în hack-uri. Hack (hack) – o soluție rapidă pentru o problemă software dificilă. Cu alte cuvinte, între toate aceste arhitecturi nu există o legătură logică vizibilă și înțeleasă. Tot ce le unește este un set de hack-uri de succes pe care le împrumută unul de la altul, plus o operație comună de convoluție cu feedback gândire sistemică ! Nu este clar ce să schimbăm și cum să optimizăm realizările existente.
Ca rezultat al lipsei unei relații logice între hack-uri, acestea sunt extrem de greu de reținut și aplicat în practică. Acestea sunt cunoștințe fragmentate. În cel mai bun caz, câteva momente interesante și neașteptate sunt reținute, dar majoritatea a ceea ce este înțeles și incomprehensibil dispare din memorie după câteva zile. Va fi bine dacă într-o săptămână își va aduce aminte măcar denumirea arhitecturii. Și totuși, citirea articolelor și vizionarea videoclipurilor de prezentare au durat câteva ore și chiar zile de timp de lucru!

Figura 2 –
Majoritatea autorilor de articole științifice, în opinia mea personală, fac tot posibilul pentru ca aceste cunoștințe fragmentate să nu fie înțelese de cititor. Dar formalele de gerunziu în propoziții de zece rânduri cu formule, luate «de pe plafon» – este un subiect pentru un articol separat (problema ).
Din acest motiv, a apărut necesitatea de a sistematiza informațiile despre rețele neuronale și, astfel, de a crește calitatea înțelegerii și memorării. Prin urmare, tema principală a analizei tehnologiilor și arhitecturilor rețelelor neuronale artificiale a devenit următoarea sarcină: a afla încotro se îndreaptă toate acestea, și nu construirea unei rețele neuronale specifice în mod separat.
Încotro se îndreaptă toate acestea. Principalele rezultate:
- Numărul startup-urilor în domeniul învățării automate în ultimii doi ani . Cauza posibilă: «rețelele neuronale nu mai sunt ceva nou».
- Fiecare va putea crea o rețea neuronală funcțională pentru a rezolva o sarcină simplă. Pentru aceasta, va lua un model gata realizat din «zoologicul modelelor» (model zoo) și va antrena ultimul strat al rețelei neuronale () pe datele gata disponibile din sau din în cloud-ul gratuit .
- Mari producători de rețele neuronale au început să creeze «zoologice de modele» (model zoo). Cu ajutorul lor, se poate crea rapid o aplicație comercială: pentru TensorFlow, pentru PyTorch, pentru Caffe2, pentru Chainer și .
- Rețele neuronale funcționând în timp real (real-time) pe dispozitive mobile. De la 10 la 50 de cadre pe secundă.
- Aplicarea rețelelor neuronale în telefoane (TF Lite), în browsere (TF.js) și în (IoT, IInternet of Tthings). În special în telefoane, care deja suportă rețele neuronale la nivel de „hardware” (neuroacceleratoare).
- Fiecare dispozitiv, articole de îmbrăcăminte și, posibil, chiar și alimentele vor avea adresă IP-v6 și se vor comunica între ele” – .
- Creșterea numărului de publicații în domeniul învățării automate a început (dublându-se la fiecare doi ani) din 2015. Este evident că sunt necesare rețele neuronale pentru analiza articolelor.
- Tehnologiile următoare câștigă popularitate:
- PyTorch – popularitatea crește rapid și, se pare, o depășește pe TensorFlow.
- Selectarea automată a hiperparametrilor AutoML – popularitatea crește treptat.
- Scăderea graduală a preciziei și creșterea vitezei de calcul: , algoritmi , calcule inexacte (aproximative), cuantificare (atunci când greutățile rețelei neuronale sunt convertite în numere întregi și cuantificate), neuroacceleratoare.
- Traducere și .
- Crearea , acum deja în timp real.
- Principalul în DL este că sunt multe date, dar colectarea și etichetarea lor nu este ușoară. De aceea, se dezvoltă automatizarea etichetării () pentru rețele neuronale folosind rețele neuronale.
- Cu rețele neuronale, informatica a devenit brusc o știință experimentală și a apărut .
- Banii din IT și popularitatea rețelelor neuronale au apărut simultan, când calculul a devenit o valoare de piață. Economia din aur-valută devine aur-valută-computatională.Consultați articolul meu despre și motivul apariției banilor în IT.
Treptat, apare o nouă (Învățare Automată & Învățare Profundă), care se bazează pe reprezentarea unui program ca un ansamblu de modele neuronale antrenate.

Figura 3 – ML/DL ca nouă metodologie de programare
Cu toate acestea, nu a apărut „teoria rețelelor neuronale”, în cadrul căreia se poate gândi și lucra sistematic. Ceea ce se numește acum „teorie” este de fapt algoritmi experimentali, euristici.
Linkuri către resursele mele și nu numai:
- Newsletter privind știința datelor. În principal, despre procesarea imaginilor. Cine dorește să primească, să trimită e-mail (foobar167gmailcom). Trimitem linkuri către articole și videoclipuri pe măsură ce acumulăm material.
- Listă generală , pe care le-am parcurs și pe care mi-aș dori să le parcurg.
- , de la care merită să începem să învățăm despre rețele neuronale. Plus un ghid .
- , unde fiecare va găsi ceva interesant pentru sine.
- S-au dovedit a fi extrem de utile canalele video care analizează articole științifice despre Data Science. Căutați-le, abonați-vă la ele și transmiteți link-uri colegilor voștri și mie de asemenea. Exemple:
- cu instrucțiuni pas cu pas și cod sursă deschis.
Vă mulțumesc pentru atenție!
Sursa: habr.com
