
Le tecnologie e i modelli per il nostro futuro sistema di visione artificiale sono stati sviluppati e perfezionati gradualmente in diversi progetti della nostra azienda - in Posta, Cloud, Ricerca. Sono maturati come un buon formaggio o un buon cognac. Un giorno abbiamo capito che le nostre reti neurali mostrano risultati eccezionali nel riconoscimento e abbiamo deciso di riunirle in un unico prodotto b2b - Vision, - che ora usiamo noi stessi e vi offriamo di utilizzare.
Oggi la nostra tecnologia di visione artificiale sulla piattaforma Mail.Ru Cloud Solutions lavora con successo e affronta compiti pratici molto complessi. Si basa su una serie di reti neurali, addestrate sui nostri dataset, specializzate nella risoluzione di compiti applicativi. Tutti i servizi operano sulle nostre capacità server. Puoi integrare nelle tue applicazioni l'API pubblica di Vision, attraverso la quale sono disponibili tutte le funzionalità del servizio. L'API è reattiva: grazie alle GPU server, il tempo medio di risposta all'interno della nostra rete è di circa 100 ms.
Scopri di più qui sotto, dove troverai una dettagliata descrizione e molti esempi di come funziona Vision.
Come esempio di servizio in cui utilizziamo noi stessi le tecnologie di riconoscimento facciale menzionate, possiamo citare . Uno dei suoi componenti è il photo booth Vision, che installiamo in varie conferenze. Se ti avvicini a un photo booth di questo tipo, ti fotografa con la camera integrata e inserisci la tua email, il sistema troverà immediatamente tra le immagini quelle in cui sei stato immortalato dai fotografi ufficiali della conferenza e, se lo desideri, ti invierà le foto trovate via email. Inoltre, non si tratta di scatti ritratti posati: Vision ti riconosce anche sullo sfondo in mezzo alla folla di visitatori. Certo, non riconoscono i photo booth stessi, sono solo tablet in eleganti supporti che fotografano gli ospiti con le loro telecamere integrate e inviano le informazioni ai server, dove avviene tutta la magia del riconoscimento. E abbiamo visto più volte quanto sorprendente sia l'efficacia della tecnologia, anche per gli specialisti del riconoscimento delle immagini. Di seguito parleremo di alcuni esempi.

1. Il nostro modello di Riconoscimento Facciale
1.1. Rete neurale e velocità di elaborazione
Per il riconoscimento utilizziamo una modifica del modello di rete neurale ResNet 101. L'Average Pooling alla fine è stato sostituito da uno strato completamente connesso, analogamente a quanto fatto in ArcFace. Tuttavia, la dimensione delle rappresentazioni vettoriali è di 128 e non di 512. Il nostro campione di addestramento contiene circa 10 milioni di fotografie di 273.593 persone.
Il modello funziona molto velocemente grazie all'architettura della configurazione del server e ai calcoli su GPU attentamente selezionati. Per ricevere una risposta dall'API nelle nostre reti interne servono dai 100 ms in su: questo include il rilevamento del volto (identificazione del volto nelle foto), il riconoscimento e il ritorno del PersonID nella risposta dell'API. Con grandi volumi di dati in entrata — fotografie e video — sarà richiesto molto più tempo per trasferire i dati al servizio e per ricevere la risposta.
1.2. Valutazione dell'efficacia del modello
La definizione dell'efficacia delle reti neurali è una questione molto ambigua. La qualità del loro lavoro dipende dai dataset su cui i modelli sono stati addestrati e se sono stati ottimizzati per lavorare con dati specifici.
La valutazione della precisione del nostro modello è iniziata con il popolare test di verifica LFW, ma è troppo piccolo e semplice. Dopo aver raggiunto il 99,8% di precisione, non aveva più senso. Esiste una buona competizione per la valutazione dei modelli di riconoscimento: Megaface, dove siamo gradualmente arrivati a un rank 1 del 82%. Il test di Megaface consiste in un milione di fotografie — distrattori — e il modello deve essere in grado di distinguere bene tra alcune migliaia di fotografie di celebrità dal dataset Facescrub e i distrattori. Tuttavia, ripulendo il test di Megaface dagli errori, abbiamo scoperto che sulla versione pulita raggiungiamo il 98% di precisione a rank 1 (le fotografie delle celebrità sono piuttosto specifiche). Pertanto, abbiamo creato un test di identificazione separato, simile a Megaface, ma con fotografie di persone
Certo, gli errori di riconoscimento possono capitare con qualsiasi modello. Ma queste situazioni vengono spesso risolte con un'attenta regolazione delle soglie per condizioni specifiche (per tutte le conferenze utilizziamo le stesse soglie, mentre, ad esempio, per il controllo degli accessi dobbiamo alzare notevolmente le soglie per ridurre i falsi positivi). La stragrande maggioranza dei partecipanti alle conferenze è stata riconosciuta correttamente dai nostri chioschi fotografici Vision. A volte qualcuno guardava l'anteprima ritagliata e diceva: «Il vostro sistema ha sbagliato, non sono io». Allora aprivamo la foto intera e si scopriva che quel partecipante era effettivamente presente nella foto, solo che non stavamo riprendendo lui, ma qualcun altro, e quella persona era stata catturata accidentalmente sullo sfondo fuori fuoco. Inoltre, la rete neurale riconosce spesso correttamente anche quando una parte del volto non è visibile, oppure quando la persona è di profilo, o addirittura in posizione obliqua. Il sistema può riconoscere una persona anche se il volto è finito in una zona di distorsione ottica, ad esempio, quando si scatta con un obiettivo grandangolare.
1.3. Esempi di test in situazioni complesse
Di seguito sono presentati esempi del lavoro della nostra rete neurale. Alle sue entrate vengono forniti delle fotografie che essa deve etichettare tramite PersonID - un identificatore unico del volto. Se due o più immagini hanno lo stesso identificatore, significa che, secondo i modelli, in quelle fotografie è rappresentata la stessa persona.
Notiamo subito che durante i test ci sono disponibili diversi parametri e soglie dei modelli, che possiamo regolare per raggiungere uno specifico risultato. L'API pubblica è ottimizzata per la massima precisione nei casi generali.
Iniziamo con la cosa più semplice, il riconoscimento del volto di fronte.

Beh, questo era troppo facile. Aumentiamo la difficoltà, aggiungiamo una barba e qualche anno.

Qualcuno potrebbe dire che questo era comunque non troppo difficile, visto che in entrambi i casi il volto è completamente visibile e l'algoritmo ha accesso a molte informazioni sul volto. Va bene, ora giriamo Tom Hardy di profilo. Questo compito è molto più complesso, e nel raggiungimento di una soluzione di successo mantenendo un basso tasso di errori abbiamo investito molte energie: selezionando il campione di addestramento, progettando l'architettura della rete neurale, rifinendo le funzioni di perdita e migliorando il pretrattamento delle fotografie.

Mettiamogli un copricapo:

A proposito, questo è un esempio di una situazione particolarmente complessa, poiché qui il viso è molto nascosto, mentre nella foto sotto c'è anche un'ombra profonda che nasconde gli occhi. Nella vita reale, le persone cambiano spesso il loro aspetto grazie agli occhiali scuri. Facciamo lo stesso con Tom.

Va bene, proviamo a raccogliere foto di diverse età, e questa volta mettiamo alla prova un altro attore. Prendiamo un esempio molto più complesso, in cui i cambiamenti legati all'età si manifestano in modo particolarmente evidente. La situazione non è inventata, è comune quando occorre confrontare una foto del passaporto con il volto dell'interessato. Infatti, la prima foto sul passaporto viene incollata quando il proprietario ha 20 anni, e a 45 anni una persona può trasformarsi notevolmente:

Credete che il principale esperto di missioni impossibili non sia cambiato molto con l'età? Penso che anche poche persone sarebbero in grado di collegare le foto sopra e sotto, tanto è cambiato il ragazzo in questi anni.

Le reti neurali si confrontano spesso con i cambiamenti di aspetto. Ad esempio, a volte le donne possono modificare drasticamente il loro aspetto con il trucco:

Ora rendiamo ancora più difficile il compito: supponiamo che in varie foto siano coperte diverse parti del viso. In questi casi, l'algoritmo non può confrontare i campioni in modo completo. Tuttavia, Vision gestisce bene situazioni simili.

A proposito, nelle foto dei volti potrebbero esserci molte persone, ad esempio, in un'immagine di gruppo possono essere più di 100. Questa è una situazione complicata per le reti neurali, poiché molti volti possono essere illuminati in modo diverso, qualcuno può essere fuori dalla messa a fuoco. Tuttavia, se la foto è stata scattata con una risoluzione e qualità adeguate (almeno 75 pixel per il quadrato che copre il volto), Vision sarà in grado di identificarlo e riconoscerlo.

Una caratteristica delle foto reportage e delle immagini delle telecamere di sorveglianza è che le persone spesso possono apparire sfocate, poiché sono fuori dalla messa a fuoco o stavano movimento in quel momento:

Anche l'intensità dell'illuminazione può variare notevolmente da un'immagine all'altra. Questo diventa spesso un problema, molti algoritmi affrontano notevoli difficoltà nell'elaborazione corretta di immagini troppo scure o troppo chiare, per non parlare della corrispondenza esatta. Ricordo che per ottenere un simile risultato è necessario impostare adeguatamente le soglie, al momento questa possibilità non è ancora disponibile al pubblico. Tutti i nostri clienti utilizzano la stessa rete neurale, con soglie impostate per la maggior parte dei compiti pratici.

Di recente abbiamo lanciato una nuova versione del modello, che riconosce con alta precisione i volti asiatici. In passato questo era un grande problema, che ha persino preso il nome di "razzismo dell'apprendimento automatico" (o "delle reti neurali"). Le reti neurali europee e americane riconoscevano bene i volti eurocentrici, mentre con quelli mongoloidi e negroidi la situazione era molto peggiore. Probabilmente, in Cina la situazione era esattamente all'opposto. Il problema risiede nei dataset di addestramento, che riflettono i tipi di volti predominanti in un determinato paese. Tuttavia, la situazione sta cambiando, oggi questo problema non è più così urgente. Vision non ha difficoltà con rappresentanti di diverse razze.

Il riconoscimento facciale è solo una delle molte applicazioni della nostra tecnologia, Vision può essere addestrato a riconoscere qualunque cosa. Ad esempio, targhe automobilistiche, anche in condizioni difficili per gli algoritmi: da angolazioni acute, sporche e difficili da leggere.

2. Esempi pratici di utilizzo
2.1. Controllo dell'accesso fisico: quando due persone entrano con un solo pass
Con Vision è possibile implementare sistemi di registrazione delle presenza e delle assenze dei dipendenti. Il sistema tradizionale basato su badge elettronici presenta ovvie carenze, ad esempio, è possibile entrare in due con un solo badge. Se il sistema di accesso (Sistemi di Controllo Accessi) è integrato con Vision, esso registrerà onestamente chi e quando è entrato / uscito.
2.2. Registrazione del tempo di lavoro
Questo scenario di utilizzo di Vision è strettamente legato a quello precedente. Se si integra il sistema di accesso con il nostro servizio di riconoscimento facciale, sarà in grado non solo di rilevare le violazioni delle norme di accesso, ma anche di registrare la presenza effettiva dei dipendenti all'interno dell'edificio o del cantiere. In altre parole, Vision aiuterà a tenere traccia in modo corretto di chi e a che ora è venuto al lavoro e se ne è andato, e chi ha effettivamente assente, anche se i colleghi lo coprono davanti ai superiori.
2.3. Videoanalisi: monitoraggio delle persone e sicurezza
Monitorando le persone con Vision è possibile valutare con precisione il reale afflusso nei punti vendita, nelle stazioni, nei passaggi, nelle strade e in molti altri luoghi pubblici. Inoltre, il nostro tracciamento può essere di grande aiuto nel controllo degli accessi, ad esempio, a un magazzino o in altri uffici importanti. E naturalmente, il monitoraggio di persone e volti aiuta a risolvere questioni di sicurezza. Hai colto qualcuno a rubare nel tuo negozio? Aggiungi il suo PersonID, fornito da Vision, nella lista nera del tuo software di videoanalisi e la prossima volta il sistema avviserà subito la sicurezza se quel tipo si ripresenta.
2.4. Nella vendita
Il retail e vari servizi sono interessati al riconoscimento delle code. Con Vision è possibile riconoscere che non si tratta di un affollamento casuale, ma di una vera e propria fila, e determinare la sua lunghezza. Successivamente, il sistema informa i responsabili circa l'insorgere della fila, affinché possano intervenire: se si tratta di un'affluenza di visitatori è necessario chiamare personale aggiuntivo o se qualcuno sta trascurando le proprie responsabilità lavorative.
Un'altra interessante sfida è separare i dipendenti dell'azienda dai visitatori in sala. Di solito, il sistema viene addestrato a distinguere oggetti in abbigliamento specifico (dress code) o con un qualche segno distintivo (foulard aziendale, badge sul petto, ecc.). Questo aiuta a valutare con maggiore precisione la presenza (in modo che la sola presenza dei dipendenti non "gonfi" le statistiche sulla presenza di persone in sala).
Con la tecnologia di riconoscimento facciale, puoi anche valutare il tuo pubblico: qual è la fedeltà dei visitatori, ovvero quante persone ritornano nel tuo locale e con quale frequenza. Calcola quanti visitatori unici arrivano da te in un mese. Per ottimizzare i costi di acquisizione e fidelizzazione, è possibile analizzare le variazioni della frequenza di visita in base al giorno della settimana e anche all'ora del giorno.
I franchisor e le catene possono richiedere una valutazione tramite fotografie della qualità del branding nei vari punti vendita: presenza di loghi, insegne, manifesti, banner e così via.
2.5. Trasporti
Un altro esempio di garantire la sicurezza attraverso l'analisi video è l'identificazione di oggetti lasciati nelle sale degli aeroporti o delle stazioni. Vision può essere addestrato a riconoscere oggetti di centinaia di classi: mobili, borse, valigie, ombrelli, vari tipi di abbigliamento, bottiglie e così via. Se il tuo sistema di analisi video individua un oggetto abbandonato e lo riconosce tramite Vision, invia un segnale al personale di sicurezza. Un compito simile è relativo alla rilevazione automatica di situazioni anomale in luoghi pubblici: qualcuno si è sentito male, o qualcuno sta fumando in un luogo non consentito, oppure una persona è caduta sui binari, e così via — tutti questi schemi possono essere identificati dal sistema di analisi video tramite API Vision.
2.6. Gestione documentale
Un'altra interessante applicazione futura di Vision, che stiamo attualmente sviluppando, è il riconoscimento dei documenti e il loro parsing automatico in database. Invece di digitare manualmente (o, peggio ancora, scrivere a mano) infinite serie, numeri, date di emissione, numeri di conto, dati bancari, date e luoghi di nascita e molti altri dati formalizzati, sarà possibile scannerizzare i documenti e inviarli automaticamente tramite un canale protetto attraverso API nel cloud, dove il sistema riconoscerà al volo questi documenti, li elaborerà e restituirà una risposta con i dati nel formato necessario per l'inserimento automatico nel database. Oggi Vision è già in grado di classificare documenti (anche in PDF) — distingue passaporti, codice fiscale, numero di identificazione, certificati di nascita, certificati di matrimonio e altro.
Certo, tutte queste situazioni non possono essere gestite dalla rete neurale «out of the box». In ogni caso, viene costruito un nuovo modello specifico per il cliente, considerando numerosi fattori, dettagli e requisiti, selezionando set di dati e conducendo iterazioni di addestramento-test-regolazione.
3. Schema di funzionamento dell'API
Le «porte d'ingresso» per gli utenti di Vision sono l'API REST. Può accettare in input fotografie, video e flussi video da telecamere di rete (flussi RTSP).
Per utilizzare Vision, è necessario nel servizio Mail.ru Cloud Solutions e ottenere i token di accesso (client_id + client_secret). L'autenticazione degli utenti avviene tramite il protocollo OAuth. I dati di origine nei corpi delle richieste POST vengono inviati all'API. In risposta, il cliente riceve dall'API il risultato del riconoscimento in formato JSON, con una risposta strutturata: contiene informazioni sugli oggetti trovati e sulle loro coordinate.

Esempio di risposta
{
"status":200,
"body":{
"objects":[
{
"status":0,
"name":"file_0"
},
{
"status":0,
"name":"file_2",
"persons":[
{
"tag":"person9",
"coord":[149,60,234,181],
"confidence":0.9999,
"awesomeness":0.45
},
{
"tag":"person10",
"coord":[159,70,224,171],
"confidence":0.9998,
"awesomeness":0.32
}
]
},
{
"status":0,
"name":"file_3",
"persons":[
{
"tag":"person11",
"coord":[157,60,232,111],
"aliases":["person12", "person13"],
"confidence":0.9998,
"awesomeness":0.32
}
]
},
{
"status":0,
"name":"file_4",
"persons":[
{
"tag":"undefined",
"coord":[147,50,222,121],
"confidence":0.9997,
"awesomeness":0.26
}
]
}
],
"aliases_changed":false
},
"htmlencoded":false,
"last_modified":0
}Nella risposta c'è un interessante parametro di awesomeness — è la «coolness» condizionale del volto nella fotografia, che utilizzandolo scegliamo la migliore immagine di un volto da una sequenza. Abbiamo addestrato la rete neurale a prevedere la probabilità che l'immagine riceva un 'like' sui social media. Maggiore è la qualità dell'immagine e più sorridente è il viso, maggiore sarà l'awesomeness.
Nell'API Vision si utilizza il concetto di space. Si tratta di uno strumento per creare diverse collezioni di volti. Esempi di spazi includono liste nere e bianche, liste di visitatori, dipendenti, clienti, ecc. Per ogni token in Vision è possibile creare fino a 10 spazi, ciascuno con un massimo di 50.000 PersonID, cioè fino a 500.000 per ogni token. Inoltre, non c'è alcun limite al numero di token per account.
Oggi l'API supporta i seguenti metodi di identificazione e riconoscimento:
- Recognize/Set — identificazione e riconoscimento dei volti. Assegna automaticamente un PersonID a ogni volto unico, restituisce il PersonID e le coordinate dei volti trovati.
- Delete — rimozione di un specifico PersonID dal database delle persone.
- Truncate — pulizia di tutto lo spazio dai PersonID, utile se è stato utilizzato come test e si desidera azzerare il database per la produzione.
- Detect — identificazione di oggetti, scene, targhe automobilistiche, attrazioni turistiche, code, ecc. Ritorna la classe degli oggetti trovati e le loro coordinate.
- Detect per documenti — rileva tipi specifici di documenti della RF (distingue passaporto, SNILS, TIN, ecc.).
Inoltre, stiamo completando presto i metodi per l'OCR, la determinazione del genere, dell'età e delle emozioni, nonché per la risoluzione di compiti di merchandising, ovvero per il controllo automatico della disposizione dei prodotti nei negozi. Troverete la documentazione completa dell'API qui:
4. Conclusione
Attualmente, attraverso l'API pubblica è possibile accedere al riconoscimento dei volti in foto e video, viene supportata l'identificazione di vari oggetti, targhe, attrazioni turistiche, documenti e intere scene. Ci sono molteplici scenari di utilizzo. Provate il nostro servizio, testate le sue capacità con le prove più impegnative. Le prime 5000 transazioni sono gratuite. Potrebbe rivelarsi il ‘ingrediente mancante’ per i vostri progetti.
L'accesso all'API può essere ottenuto immediatamente con la registrazione e la connessione. . A tutti gli utenti di Habr — un codice promozionale per transazioni aggiuntive. Scrivete in privato l'indirizzo email con cui avete registrato l'account!
Fonte: habr.com
