L'articolo è composto da due parti:
- Una breve descrizione di alcune architetture di rete per la rilevazione di oggetti nelle immagini e la segmentazione delle immagini con i collegamenti più comprensibili per me. Ho cercato di scegliere video esplicativi, preferibilmente in russo.
- La seconda parte consiste nel tentativo di capire la direzione dello sviluppo delle architetture delle reti neurali e delle tecnologie basate su di esse.

Figura 1 – Comprendere le architetture delle reti neurali non è semplice
Tutto è iniziato con la creazione di due applicazioni dimostrative per la classificazione e rilevazione di oggetti su un telefono Android:
- , quando i dati vengono elaborati sul server e trasmessi al telefono. Classificazione delle immagini di tre tipi di orsi: bruno, nero e di peluche.
- , quando i dati vengono elaborati direttamente sul telefono. Rilevazione di oggetti di tre tipi: nocciola, fico e dattero.
C'è una differenza tra i compiti di classificazione delle immagini, rilevamento di oggetti nelle immagini e . Pertanto, è emersa la necessità di scoprire quali architetture di reti neurali rilevano oggetti nelle immagini e quali possono segmentare. Ho trovato i seguenti esempi di architetture con i collegamenti più comprensibili per me:
- Una serie di architetture basate su R-CNN (Regions with Convolution Neural Networks features): R-CNN, Fast R-CNN, , . Per la rilevazione di oggetti in un'immagine, un meccanismo chiamato Region Proposal Network (RPN) identifica regioni limitate (bounding boxes). Inizialmente, invece di RPN veniva utilizzato un meccanismo più lento denominato Selective Search. Successivamente, le regioni limitate identificate vengono passate in input a una rete neurale convenzionale per la classificazione. Nell'architettura R-CNN ci sono espliciti cicli "for" che iterano su regioni limitate, fino a 2000 passaggi attraverso la rete interna AlexNet. A causa dei cicli "for" espliciti, la velocità di elaborazione delle immagini diminuisce. Il numero di cicli espliciti e passaggi attraverso la rete neurale interna diminuisce con ogni nuova versione dell'architettura e vengono implementate decine di altre modifiche per aumentare la velocità e per trasformare il compito di rilevazione degli oggetti in segmentazione degli oggetti in Mask R-CNN.
- (You Pnly Look Pnce) – il primo modello di rete neurale che riconosceva oggetti in tempo reale su dispositivi mobili. La caratteristica distintiva: riconoscimento degli oggetti in un solo passaggio (basta uno sguardo). Cioè, nell'architettura YOLO non ci sono cicli espliciti "for", il che fa sì che la rete funzioni rapidamente. Ad esempio, un'analogia: in NumPy, durante le operazioni sulle matrici, non ci sono cicli espliciti "for", che in NumPy sono implementati a livelli più bassi dell'architettura tramite il linguaggio di programmazione C. YOLO utilizza una griglia di finestre predefinite. Per evitare che lo stesso oggetto venga identificato più volte, si utilizza un coefficiente di sovrapposizione delle finestre (IoU, Intersection over Union). Questa architettura funziona su un ampio intervallo e possiede un'alta : il modello può essere addestrato su fotografie, ma allo stesso tempo funziona bene su dipinti.
- (Single Shot MultiBox Detector) – utilizza i hack più riusciti dell'architettura YOLO (ad esempio, la soppressione non massima) e ne aggiunge di nuovi per migliorare la velocità e la precisione della rete neurale. La caratteristica distintiva: riconoscimento degli oggetti in un solo passaggio tramite una griglia di finestre predefinite (default box) su una piramide di immagini. La piramide delle immagini è codificata in tensori convoluzionali durante le operazioni di convoluzione e pooling consecutive (durante l'operazione di max-pooling la dimensione spaziale diminuisce). In questo modo vengono riconosciuti sia oggetti grandi che piccoli in un solo passaggio della rete.
- MobileSSD (MobileNetV2 + SSD) – una combinazione di due architetture di reti neurali. La prima rete è veloce e aumenta la precisione del riconoscimento. MobileNetV2 è usato al posto di VGG-16, originariamente utilizzato in . La seconda rete SSD identifica la posizione degli oggetti nell'immagine.
- – una rete neurale molto piccola ma precisa. Da sola non risolve il compito di riconoscimento degli oggetti. Tuttavia, può essere utilizzata in combinazione con diverse architetture. Ed essere utilizzata su dispositivi mobili. Caratteristica distintiva è che inizialmente i dati vengono compressi in quattro filtri convoluzionali 1×1, e poi espansi in quattro filtri convoluzionali 1×1 e quattro filtri 3×3. Un'iterazione di compressione-espansione dei dati è chiamata "Fire Module".
- (Segmentazione semantica delle immagini con reti convoluzionali profonde) – segmentazione degli oggetti in un'immagine. La caratteristica distintiva dell'architettura è la convoluzione dilatata, che preserva la risoluzione spaziale. Segue poi una fase di post-elaborazione dei risultati tramite un modello probabilistico grafico, che consente di rimuovere piccoli rumori nella segmentazione e migliorare la qualità dell'immagine segmentata. Dietro il temibile nome «modello probabilistico grafico» si nasconde un normale filtro gaussiano, approssimato su cinque punti.
- Ho cercato di capire il funzionamento (Single-Shot Refinement Neural Network for Object Detection), ma ho capito poco.
- Ho anche guardato come funziona la tecnologia dell'«attenzione»: , , . La caratteristica distintiva dell'architettura dell'«attenzione» è l'estrazione automatica delle regioni di maggior interesse nell'immagine (RoI, Regions of Interest) tramite una rete neurale chiamata Attention Unit. Le regioni di maggior interesse assomigliano a regioni delimitate (bounding boxes), ma a differenza di queste ultime non sono fisse nell'immagine e possono avere bordi sfocati. Successivamente, da queste regioni di maggior interesse vengono estratte caratteristiche (features), che vengono «diete» a reti neurali ricorrenti con architetture . Le reti neurali ricorrenti sono in grado di analizzare le relazioni tra le caratteristiche in una sequenza. Inizialmente, queste reti neurali ricorrenti venivano utilizzate per tradurre testi in altre lingue, e ora anche per tradurre e .
Man mano che studiavo queste architetture ho capito che non capisco nulla.. E non è che la mia rete neurale abbia problemi con il meccanismo di attenzione. La creazione di tutte queste architetture assomiglia a un enorme hackathon, dove gli autori competono in hack. Un hack è una soluzione rapida a un problema di programmazione difficile. Quindi, tra tutte queste architetture non c'è una connessione logica visibile e comprensibile. Tutto ciò che le unisce è un insieme di hack riusciti che si sono scambiati tra di loro, più l'operazione di convoluzione con retroazione, pensiero sistemico !
Come risultato della mancanza di collegamento logico tra i frammenti, è estremamente difficile ricordarli e applicarli nella pratica. Sono conoscenze frammentate. Nel migliore dei casi, si ricordano alcuni momenti interessanti e inaspettati, ma la maggior parte di ciò che è comprensibile e incomprensibile svanisce dalla memoria già dopo pochi giorni. Sarà un bene se tra una settimana si ricorderà almeno il nome dell'architettura. Eppure, sono state dedicate diverse ore e persino giorni di lavoro alla lettura di articoli e alla visione di video di panoramica!

Figura 2 –
La maggior parte degli autori di articoli scientifici, secondo la mia personale opinione, fa tutto il possibile affinché anche queste conoscenze frammentate non vengano comprese dal lettore. Ma le costruzioni verbali participiali in dieci frasi lineari con formule prese "dal soffitto" sono un tema per un articolo a parte (problema ).
Per questo motivo è sorta la necessità di sistematizzare le informazioni sulle reti neurali e, in questo modo, aumentare la qualità della comprensione e della memorizzazione. Pertanto, il tema principale dell'analisi di tecnologie e architetture specifiche delle reti neurali artificiali è diventata la seguente domanda: scoprire dove sta andando tutto ciò, e non il funzionamento di una specifica rete neurale in particolare.
Dove sta andando tutto ciò. Risultati principali:
- Il numero di startup nel campo dell'apprendimento automatico negli ultimi due anni . Possibile motivo: "le reti neurali hanno smesso di essere qualcosa di nuovo".
- Chiunque potrà creare una rete neurale funzionante per risolvere un compito semplice. Per farlo, prenderà un modello già pronto dallo "zoo dei modelli" (model zoo) e addestrerà l'ultimo strato della rete neurale () su dati già pronti da o da in gratuito .
- I grandi produttori di reti neurali hanno iniziato a creare "zoo di modelli" (model zoo). Con essi è possibile sviluppare rapidamente un'applicazione commerciale: per TensorFlow, per PyTorch, per Caffe2, per Chainer e .
- Reti neurali operative in tempo reale (real-time) su dispositivi mobili. Da 10 a 50 fotogrammi al secondo.
- Applicazione delle reti neurali nei telefoni (TF Lite), nei browser (TF.js) e in (IoT, Iinternet of Tdelle cose). In particolare nei telefoni che già supportano le reti neurali a livello di "hardware" (neuroacceleratori).
- «Ogni dispositivo, articolo di abbigliamento e, forse, persino il cibo avranno un indirizzo IP-v6 e si comunicheranno tra loro» – .
- L'aumento delle pubblicazioni su machine learning ha iniziato (raddoppiamento ogni due anni) dal 2015. È evidente che sono necessarie reti neurali per l'analisi degli articoli.
- Stanno guadagnando popolarità le seguenti tecnologie:
- PyTorch – la popolarità cresce rapidamente e, a quanto pare, supera TensorFlow.
- Selezione automatica degli iperparametri AutoML – la popolarità cresce lentamente.
- Diminuzione graduale della precisione e aumento della velocità di calcolo: , algoritmi , calcoli imprecisi (approssimativi), quantizzazione (quando i pesi della rete neurale vengono convertiti in numeri interi e quantizzati), neuroacceleratori.
- Traduzione e .
- Creazione , ora in tempo reale.
- Il fondamentale in DL è una grande quantità di dati, ma raccoglierli e etichettarli non è semplice. Pertanto, si sta sviluppando l'automazione dell'etichettatura () per le reti neurali attraverso le reti neurali.
- Con le reti neurali, la Computer Science è diventata improvvisamente una scienza sperimentale ed è emerso .
- Il denaro IT e la popolarità delle reti neurali sono nati contemporaneamente, quando il calcolo è diventato un valore di mercato. L'economia da oro-valutaria diventa oro-valuta-calcolo.. Guarda il mio articolo su e la ragione della comparsa dei soldi IT.
Gradualmente emerge una nuova (Machine Learning & Deep Learning), che si basa sulla rappresentazione del programma come un insieme di modelli di rete neurale addestrati.

Figura 3 – ML/DL come nuova metodologia di programmazione
Tuttavia, non è ancora emersa «teoria delle reti neurali», nell'ambito della quale si possa pensare e lavorare in modo sistemico. Ciò che ora viene chiamato «teoria» sono in realtà algoritmi sperimentali ed euristici.
Collegamenti alle mie e ad altre risorse:
- Newsletter su Data Science. Principalmente su elaborazione delle immagini. Chi desidera riceverla, può inviare un'email (foobar167<gaffa-gaffa>gmail<punta>com). Invio link ad articoli e video man mano che accumulo materiale.
- Elenco complessivo , che ho fatto e che vorrei fare.
- , da cui si dovrebbe iniziare a studiare le reti neurali. In aggiunta, un opuscolo .
- , dove ognuno può trovare qualcosa di interessante per sé.
- Sono stati estremamente utili canali video su come analizzare articoli scientifici sul Data Science. Trovateli, seguiteli e condividete i link con i vostri colleghi e anche con me. Esempi:
- aka con istruzioni passo passo e codice sorgente aperto.
Grazie per l'attenzione!
Fonte: habr.com
