359 letture
359 letture

Perché l'intelligenza artificiale deve perdere (un po') per riconoscere meglio il tuo volto

di Eva Vanski13m2025/03/13
Read on Terminal Reader

Troppo lungo; Leggere

Il riconoscimento facciale (FR) è ampiamente utilizzato nel settore finanziario, nella sicurezza, nella videosorveglianza, nei servizi per la casa intelligente, nell'autenticazione multifattoriale, ecc. In questo articolo approfondiremo le recenti tendenze della ricerca
featured image - Perché l'intelligenza artificiale deve perdere (un po') per riconoscere meglio il tuo volto
Eva Vanski HackerNoon profile picture
0-item

Negli ultimi anni sono stati compiuti progressi significativi nel riconoscimento facciale. Questa revisione offre una breve panoramica delle attività chiave, dei modelli e dei metodi di soluzione, concentrandosi sull'evoluzione delle funzioni di perdita.


In parole povere, il riconoscimento facciale è un metodo per identificare o verificare l'identità di una persona tramite foto, video o riprese in tempo reale. Questa recensione esplorerà l'identificazione basata su una singola immagine digitale o un singolo fotogramma video.

Riconoscimento facciale e sue implementazioni

Il riconoscimento facciale (FR) ha applicazioni di vasta portata. È utilizzato nel settore finanziario, nella sicurezza informatica, nella videosorveglianza, nei servizi per la casa intelligente, nell'autenticazione multifattoriale, ecc.


Oltre a questi usi pratici, i modelli FR svolgono anche un ruolo chiave nei moderni modelli generativi. Sono comunemente utilizzati per la perdita di identificazione nei modelli Face Restoration come GFPGAN e CodeFormer, strumenti Face Swapping come SimSwap e FaceShifter, modelli basati su GAN Image-to-Image come pSp e HyperStyle, nonché nei modelli basati su Transformer e Stable Diffusion per la conservazione dell'identità.


ArcFace (2018–2019) è la funzione di perdita di identificazione più utilizzata, mentre CosFace (2018) e FaceNet sono utilizzate molto meno frequentemente.

In questa recensione mi concentrerò su come il panorama FR è cambiato da ArcFace in poi, in particolare negli ultimi anni.

Breve panoramica della pipeline di riconoscimento facciale

Il riconoscimento Fce richiede una certa pre-elaborazione: rilevamento del volto, ritaglio e allineamento. La pre-elaborazione dovrebbe essere la stessa per i dati di training e di test, solitamente utilizzando un allineamento di tipo FFHQ (Flickr-Faces-HQ Dataset). In genere, vengono utilizzati due rilevatori aggiuntivi separati per questo: un rilevatore di face-bounding box e un rilevatore di face landmark. Esistono modelli end-to-end, con allineamento che vengono addestrati insieme al modello principale, ma non li considero in questa parte della recensione. Qui, assumiamo che i dataset di training e di test siano uniformemente ritagliati e allineati. Quindi, il modello viene alimentato con input ritagliati e allineati.


Tipica pipeline di pre-elaborazione FR

Nel dataset di training per il task FR, ci sono diverse immagini per ogni identità (persona). Il compito del modello è imparare a distinguere tra foto appartenenti alla stessa persona e foto di persone diverse.


Il modello è solitamente costituito da due componenti:


  • Backbone. Un backbone, che può anche essere chiamato feature extractor, prende una foto del volto preelaborata come input e restituisce un vettore di feature di incorporamenti. I backbone classici sono reti neurali convoluzionali (CNN) come ResNet, VGGNet, ResFace, SE-ResNet e altri. Possono anche essere modelli VisionTransformer o Feature Pyramid Network o le loro varianti più complesse. Non ci soffermeremo sui backbone dei modelli in dettaglio in questa parte della recensione.


  • Funzione di perdita. Nella fase di training, viene applicata una funzione di perdita per supervisionare il backbone training. L'obiettivo del training è ottenere un modello che produrrà embedding ravvicinati per diverse foto della stessa persona e distanti per volti di persone diverse. Stiamo parlando di misurare la distanza tra vettori di embedding usando, ad esempio, la distanza del coseno o la distanza L2.

Tipi di funzioni di perdita

Perdita basata sulla coppia

La prima categoria è chiamata «perdita basata sulle coppie», a volte sono chiamati «metodi basati sull'apprendimento metrico»: perdita contrastiva, perdita di triplette, perdita di N coppie.


Questi metodi combinano le coppie di campioni positivi e negativi prima dell'addestramento del modello o combinano dinamicamente coppie di campioni online durante l'addestramento. Entrambe queste modalità consentono di estrarre rappresentazioni facciali significative a livello di campione, ma aumenterebbero esponenzialmente la dimensione dei dati.


Lo schema di training che usa la perdita di triplette si presenta così. Due esempi con la stessa etichetta dovrebbero avere i loro embedding vicini nello spazio di embedding. Due esempi con etichette diverse hanno i loro embedding lontani.


Schema di perdita di tripletta


La rapida crescita del numero di coppie possibili in rapporto alle dimensioni del set di dati ci obbliga a ricercare strategie di selezione delle coppie, che solitamente sono empiriche e computazionalmente complesse.

Perdita basata sulla classificazione

Un'altra categoria è chiamata «classification-based loss» o talvolta chiamata «prototype learning-based methods»: Softmax loss, CosFace, ArcFace, NormFace. Lavorano con informazioni generalizzate sulle classi usando un prototipo, anche detto class proxy o class center. I prototipi sono parametri apprendibili, aggiornati durante l'addestramento del modello. Attualmente, le classification-based losses sono usate principalmente per i modelli di riconoscimento facciale.

Cronologia delle perdite basate sulla classificazione

Se consideriamo il compito FR come una classificazione, allora possiamo usare la perdita softmax (un altro nome è perdita di entropia incrociata categoriale). In sostanza, la perdita Softmax è una funzione di attivazione Softmax + perdita di entropia incrociata.

Schema di perdita

Ricordiamo le formule. La prima è l'attivazione Softmax, e la seconda è la perdita di Cross-Entropy.


Softmax activation, and Cross-Entropy loss





Combinando si ottiene:

Softmax loss









La funzione di perdita riceve il risultato dell'ultimo strato completamente connesso, dove 𝒙𝒊 indica la caratteristica di incorporamento dell'immagine di addestramento 𝑖-esima, 𝑦𝑖 è l'etichetta di 𝒙𝒊 e 𝑾 indica il peso dell'ultimo strato completamente connesso.


Funziona, ma c'è un problema: i confini tra le classi sono sfumati. Un nuovo passo in FR è stato fatto nel 2018 con l'avvento del modello ArcFace. La base rimane la perdita softmax, ma passiamo a considerare gli angoli tra i vettori. Ricordiamo la formula similarità del coseno:







Facciamo una sostituzione nella formula della perdita softmax





Successivamente, viene aggiunto un margine in modo che gli angoli intra-classe siano più piccoli e quelli inter-classe più grandi. Ciò crea uno spazio tra le classi invece dei confini sfocati della perdita softmax.


Metodi simili: se sostituiamo cos(θ + m) con cos θ − m otteniamo la perdita CosFace.

Nei metodi basati su Softmax, il prototipo è considerato memorizzato nella matrice dei coefficienti dell'ultimo strato lineare, ovvero Pi = Wi, e il prototipo viene aggiornato utilizzando il suo gradiente nella backpropagation (ecco perché è apparso il nome «metodi basati sull'apprendimento del prototipo»).

È qui che inizia la storia delle moderne funzioni di perdita per FR. Nel corso degli anni, sono apparse molte modifiche e miglioramenti, ma le formule fornite sopra sono sufficienti per comprendere il materiale ulteriore.

Sottocentro ArcFace

Uno dei miglioramenti è apparso nel 2020, si chiama Sub-center ArcFace ed è progettato per dataset rumorosi. Il vincolo di compattezza intra-classe porta a un overfitting nei dati rumorosi. Sub-center ArcFace introduce sottoclassi. Un campione in un batch di training dovrebbe essere vicino a uno dei sottocentri positivi, non a tutti. Ciò riduce l'influenza del rumore nei dati.












Entrambi i modelli ArcFace e Sub-center ArcFace dispongono di implementazioni all'interno della libreria insightface, tra cui codice per l'addestramento e pesi pre-addestrati.


Insightface ha un'implementazione di ArcFace con diverse dorsale: iresnet (34,50,100,200,2060), mobilefacenet, vit (VisionTransformer).


La considerazione di diversi backbone va oltre lo scopo di questo articolo, quindi fornirò solo i nomi dei backbone utilizzati con ciascuna delle perdite in esame. Nella maggior parte dei casi, gli autori delle perdite non hanno cercato di selezionare il backbone ottimale, ma hanno semplicemente utilizzato uno di quelli più popolari o quello utilizzato nei modelli con cui volevano effettuare un confronto.

Per l'addestramento sono stati utilizzati i set di dati MS1M, Glint360K, WebFace42M.

Margine flessibile

La sfida principale per i metodi di riconoscimento facciale è il rumore dei dati. I metodi basati sull'apprendimento dei prototipi sono sensibili ai bias dei prototipi introdotti dal rumore. Un modo per bilanciare tra overfitting e underfitting è regolare il margine, il parametro principale nelle perdite softmax-base.

AdaCos

Uno dei primi metodi per regolare la scala e il margine angolare per le perdite softmax basate sul coseno, come L2-softmax, CosFace e ArcFace.

Implementa il principio empirico secondo cui la velocità di apprendimento dovrebbe rallentare man mano che la rete si ottimizza. L'articolo introduce una variabile modulante uguale alla mediana di tutti gli angoli nel mini-batch per le classi corrispondenti, che rappresenta approssimativamente il grado attuale di ottimizzazione del modello. Quando l'angolo mediano è grande, i parametri della griglia sono lontani dall'essere ottimali e vengono applicati una scala e un margine maggiori, e viceversa.

2019, carta , implementazione pytorch (ma senza pesi pre-allenati)

 Changing process of angles in each mini-batchwhen training














Addestrato su dataset CASIA-WebFace e MS1M, risoluzione di input 144 × 144. Testato su dataset LFW, MegaFace e IJB-C, confrontato con perdite L2-softmax, CosFace e ArcFace.


Negli ultimi anni sono emersi diversi metodi epocali per l'applicazione del margine adattivo in FR, come Dyn-ArcFace (2022), MagFace (2021), ElasticFace (2021), ma ci concentreremo su uno degli ultimi lavori in quest'area: X2-Softmax (2023).


X2-Softmax


Rispetto ad AdaCos, X2-Softmax cerca di tenere conto della distribuzione non uniforme delle classi. Il margine fisso che è adatto tra alcune classi, potrebbe essere troppo grande per convergere tra altre classi, o troppo piccolo per promuovere una significativa compattezza intra-classe delle caratteristiche della faccia tra alcune altre classi.

Per classi con angoli grandi è necessario un margine ampio per aumentare la compattezza, per classi con angoli piccoli uno più piccolo.

Ricordiamo la formula generale per le perdite basate su softmax:







Qui, per perdite come ArcFace o CosFace, solo la funzione logit f(θ) differisce. Per la funzione di perdita X2-Softmax appare così:






Le perdite tradizionali basate su softmax utilizzano il coseno, ma il coseno si trasforma in una funzione quadratica quando viene espanso in una serie di Taylor, quindi viene scelta una funzione quadratica per X2-Softmax. Scartare i termini di ordine elevato di x e mantenere i termini costanti e quadratici può evitare il sovraadattamento del modello.


Qui a, h e k sono iperparametri: h e k determinano la posizione del vertice della curva della funzione logit, mentre a determina la direzione dell'apertura della curva e il grado di clustering.


In X2-Softmax, quando l'angolo tra i pesi θ aumenta, anche il margine angolare ∆θ aumenta monotonicamente.

Per altre due classi simili, un piccolo margine facilita la convergenza del modello. Per due classi meno simili, verrà assegnato un margine più ampio per migliorare la separazione inter-classe delle caratteristiche del volto.


Per l'addestramento, gli autori hanno scelto il backbone Resnet50. Il modello è stato addestrato sul dataset MS1Mv3 (basato sul preprocessato MS-Celeb-1M da RetinaFace, per rimuovere le immagini rumorose) – 93k identità e 5,1M immagini del volto.

SFace: perdita di ipersfera vincolata da sigmoide per un riconoscimento facciale robusto

La maggior parte delle perdite con margini flessibili rimangono entro le perdite basate su softmax, ma ci sono delle eccezioni. SFace abbandona le perdite basate su softmax ma mantiene l'idea di ottimizzare le distanze intra-classe e inter-classe. Il modello impone vincoli intra-classe e inter-classe sulla varietà ipersferica, che sono controllati da due curve sigmoidee. Le curve trasformano i gradienti controllando la velocità con cui i coefficienti cambiano mentre si avvicinano al centroide della classe target o straniera.

2022, carta , implementazione pytorch (sono disponibili anche i pesi pre-allenati per il download)

Rispetto ai metodi di ottimizzazione diretta del margine, questo metodo garantisce un equilibrio più preciso tra overfitting e underfitting, con una minore influenza dei singoli campioni rumorosi sulla perdita finale.


L'idea di limitare gli embedding dei volti per renderli discriminativi su una varietà ipersferica è già stata vista, ad esempio, in Sphereface (Deep hypersphere embedding for face recognition, 2017).


L'obiettivo è quello di ridurre la distanza intra-classe e aumentare la distanza inter-classe, quindi la perdita di ipersfera vincolata al sigmoide può essere formulata come






Dove 𝜃𝑦𝑖 è la distanza angolare tra la caratteristica di incorporamento dell'immagine di addestramento 𝑖-esima e il prototipo corrispondente. 𝜃j è la distanza angolare rispetto ai prototipi estranei.






Le funzioni 𝑟𝑖𝑛𝑡𝑟 e 𝑟𝑖𝑛𝑡𝑒𝑟 sono progettate per ridimensionare rispettivamente gli obiettivi intra-classe e inter-classe e per controllare il grado di ottimizzazione. [·]𝑏 è l'operatore di gradiente a blocchi, che impedisce che il contributo dei suoi input venga preso in considerazione per il calcolo dei gradienti.

Le funzioni sigmoidi sono scelte come funzioni di ridimensionamento del gradiente:

Gli autori hanno scelto le funzioni sigmoidi come funzioni di ridimensionamento del gradiente:










𝑠 è l'asintoto superiore di due curve sigmoidee come scala iniziale del gradiente, e 𝑘 è il controllo della pendenza delle curve sigmoidee. Gli iperparametri 𝑎 e 𝑏 decidono l'intercetta orizzontale di due curve sigmoidee e in realtà controllano l'intervallo flessibile per sopprimere la velocità di movimento.


Rispetto alle funzioni di perdita basate su softmax, sia la distanza intra-classe che quella inter-classe di SFace possono essere limitate fino a un certo grado, pertanto possono essere ottimizzate in modo moderato, il che è esattamente il vantaggio di SFace.

Per l'addestramento, gli autori hanno scelto il backbone ResNet (come per Arcface).


Il modello è stato addestrato sui set di dati CASIA-WebFace, VGGFace2 e MS-Celeb-1M.

Prototipo come distribuzione

Un altro modo per gestire i dati rumorosi è considerare che l'incorporamento per un'identità (per tutti i volti appartenenti a una persona) non è un punto nello spazio, ma piuttosto una distribuzione che ha un'aspettativa, una varianza e può avere valori anomali.

VPL (apprendimento del prototipo variazionale)

Nel riconoscimento facciale, le perdite basate sulle coppie sono state abbandonate a causa della complessità dell'addestramento, ma lavorando con prototipi mediati, perdiamo alcune informazioni. Con l'approccio basato sui prototipi, l'addestramento può bloccarsi nei minimi locali o nel sovraadattamento a causa dell'influenza dei valori anomali sui prototipi.

VPL – rappresenta ogni classe come una distribuzione piuttosto che come un punto nello spazio latente.













VPL ottimizza la similarità tra gli esempi di un set di addestramento e un set di prototipi variazionali campionati da una distribuzione per classe.

La distribuzione dei prototipi è memorizzata in M ​​e decade su step ∆t. Gli autori hanno addestrato la perdita con backbone ResNet50, ResNet100 e MXNet, con MXNet scelto come quello finale per il test. Il dataset MS1M è utilizzato per l'addestramento, la dimensione di input dei ritagli del viso è 112×112.

Esistono diversi approcci che proseguono il tema dell'integrazione dei metodi basati su prototipi con i vantaggi delle perdite basate su coppie (o altrimenti chiamati modelli basati su campione a campione), come UniTSFace (2023) o UNPG (Unified Negative Pair Generation towards Well-discriminative Feature Space for Face Recognition, 2022). In questo articolo mi concentrerò su una delle perdite più recenti: EPL.

EPL: apprendimento empirico di prototipi per il riconoscimento facciale profondo

Nella perdita softmax basata sui margini, la perdita viene calcolata in confronto ai prototipi (centri di classe); tutti i campioni di una classe vengono estratti in un centro comune durante il processo di addestramento. Che viene considerato come la media durante il processo di addestramento ed è fortemente influenzato dai valori anomali degli esempi che possono deviare il centro del prototipo. Nei metodi basati su Softmax, il prototipo viene considerato come memorizzato nella matrice dei coefficienti dell'ultimo strato lineare, ovvero Pi = Wi, il prototipo viene aggiornato utilizzando il suo gradiente nella backpropagation e la funzione di perdita massimizza la somiglianza tra le caratteristiche degli esempi e i prototipi corrispondenti.

2024, carta , implementazione pytorch (sono disponibili anche i pesi pre-allenati per il download)


In EPL i prototipi vengono generati e aggiornati:

  • Casualmente all'inizio dell'allenamento
  • Durante l'addestramento del modello, ogni esempio (X) attraverso le sue caratteristiche x = E(X) aggiorna il prototipo empirico corrispondente Pi(e), dove E è un codificatore di volti:








Dove "α" è il coefficiente di aggiornamento adattivo generato utilizzando la caratteristica x e il suo prototipo, "σ" è una funzione di attivazione per adattare il coefficiente di aggiornamento in un intervallo appropriato e s(·, ·) è una funzione di similarità, che di solito è intesa come una funzione coseno.


Il prototipo empirico viene aggiornato utilizzando solo esempi "positivi" per evitare l'influenza di valori anomali delle classi vicine.


Processo di addestramento: l'encoder estrae le caratteristiche, vengono calcolati i coefficienti adattivi α per aggiornare il prototipo empirico, le somiglianze tra le caratteristiche e i prototipi vengono utilizzate per calcolare la perdita per l'addestramento dell'encoder.

Per sfruttare in modo completo le capacità sia dell'apprendimento prototipo che dell'apprendimento prototipo empirico, EPL li combina insieme come una somma e introduce margini distinti. Il backbone ResNet è stato utilizzato per l'addestramento e CASIA-WebFace come dataset di addestramento. Il modello è stato testato sui dataset MRF, IJB-C, LFW, CFP-FP, AgeDB e MegaFace.

Trasformatore-ArcFace

Come è chiaro da quanto sopra, nella maggior parte dei casi la modifica della perdita viene utilizzata per risolvere il problema dei dati rumorosi e del sovradattamento, mentre la struttura portante è responsabile della "complessità" del modello, ma ci sono delle eccezioni.


Questo articolo introduce la perdita metrica del trasformatore, una combinazione di perdita metrica standard e perdita del trasformatore (rete del trasformatore come perdita additiva). Le reti del trasformatore hanno la forza di preservare relazioni spaziali sequenziali che consentono di aumentare il potere discriminante della funzione di perdita e di applicare il modello in casi più complessi (ad esempio, per FR invariante all'età).

La particolarità di questo modello è che il trasformatore non è utilizzato come dorsale, come di solito avviene, ad esempio, nel modello Face Transformer. Invece, le feature dell'ultimo strato convoluzionale vengono inviate a due rami di perdita. Il primo ramo è uno strato di appiattimento regolare e una perdita metrica successiva (in questo caso, ArcFace, ma potrebbe essere qualsiasi perdita basata sulla classificazione).


Nel ramo 2 prendiamo l'output di dimensione H × W × D e lo trasformiamo in vettori S di dimensione 1 × 1 × D. Questa sequenza può essere vista come una sequenza di incorporamenti da patch per un encoder di trasformatore standard. Dopo lo strato dell'encoder di trasformatore, viene applicato uno strato lineare senza ulteriori impostazioni di attivazione o dropout. Dopo di che, la funzione di entropia incrociata valuta la perdita per la distribuzione di probabilità di output (per le classi target N). Entrambe le perdite "ramo-1" e "ramo-2" vengono combinate tramite una somma ponderata.

Nella fase di convalida (test), il secondo ramo viene tagliato e vengono utilizzati solo gli embedding del primo ramo standard. Per testare MS1M-arcface e WebFace4M (un sottoinsieme di WebFace 260M).


Conclusione

In questa recensione, ci siamo concentrati su un'area dei sistemi di riconoscimento facciale: le funzioni di perdita. Ciò ci ha consentito di fare una panoramica delle nuove direzioni e degli articoli recenti in quest'area. Tutte queste aree continuano a svilupparsi ogni anno.

I seguenti argomenti sono stati omessi da questa parte della recensione:

  • Basi dei modelli FR
  • Modelli FR per casi speciali come riconoscimento facciale consapevole dell'occlusione, trucco/età/illuminazione/posa invariante
  • 3D / FR dinamico
  • Revisione dei set di dati FR Saranno studiati nelle parti seguenti.


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks