TensorFlow hè un strumentu versatile per creà mudelli di machine-learning.
In questu post, guardemu cumu creà un sistema di ricunniscenza facciale cù TensorFlow, un framework di apprendimentu automaticu open-source. Andemu nantu à i prucessi essenziali in a creazione di un sistema di ricunniscenza facciale di successu, da a cullizzioni è a preparazione di dati per furmà è valutà un mudellu.
Averete una sperienza di prima manu cù TensorFlow per creà ricunniscenza faciale cù l'aiutu di frammenti di codice è esempi di u mondu reale. Siete invitati à seguità mentre prucedemu.
Introduzione à TensorFlow
TensorFlow hè una biblioteca libera è open-source. Hè una scatula di strumenti di matematica simbolica chì usa u flussu di dati è a prugrammazione differenziable. Pudete gestisce una gamma di compiti cun ella, cumpresa a prufundità reta neurale furmazione.
TensorFlow hè putente è adattabile. In listessu modu, hè un grande strumentu per sviluppà è implementà mudelli di machine learning. Pudete custruisce mudelli cumplicati cù parechje strati è operazioni tensor. Inoltre, i mudelli pre-custruiti in a biblioteca ponu esse sintonizzati per bisogni specifichi.
Inoltre, TensorFlow hà una cumunità di utilizatori enormi è in espansione. Dunque, ci hè una mansa di informazioni è aiutu per e persone chì sò novi à a piattaforma.
TensorFlow hè populari per machine learning in parte perchè furnisce un flussu di travagliu end-to-end. Cusì, pudete facilmente custruisce, furmà è implementà mudelli. Fornisce strumenti è strategie per migliurà è scalate mudelli per risponde à e dumande specifiche. Varia da a pre-processazione di dati à l'implementazione di mudelli.
Cosa hè a ricunniscenza facciale?
A ricunniscenza facciale hè a visione per computer compitu chì identifica l'identificazione di una persona in basa di a so faccia. Sta tecnica ricunnosce i tratti faciali, cum'è a forma è a struttura di l'ochji, u nasu è a bocca.
È, li paraguna cù una basa di dati di facci cunnisciuti per identificà una partita. U ricunniscenza facciale hà parechji usi, cumpresi i sistemi di sicurezza, l'urganizazione di foto è l'autentificazione biometrica.
A precisione di l'algoritmi di ricunniscenza facciale hè aumentata significativamente in l'ultimi anni per via di i sviluppi in l'apprendimentu machine.
Importazione di Biblioteche necessarie
Prima di principià qualcosa, avemu bisognu di impurtà e librerie necessarie per u nostru mudellu. Tensorflow (tf) hè impurtatu è utilizatu per creà è furmà u mudellu. <(p>
"numpy" esegue calculi matematichi è trattamentu di dati.
"matplotlib.pyplot" hè impurtatu cum'è plt è utilizatu per cartografi di dati è visualizazioni.
Infine, "fetch lfw people" hè impurtatu da sklearn. datasets è usatu pi caricà u dataset di ricunniscenza faciale. Sta funzione face parte di u toolkit scikit-learn. Grazie à sta funzione, ùn avemu micca bisognu di carica un altru dataset. Questu hè digià custruitu in sckit-learn.
È, vi dà accessu à una larga gamma di datasets per machine learning applicazioni. In questu scenariu, usemu u metudu fetch lfw people per ritruvà u dataset "Labeled Faces in the Wild" (LFW). Hè cumpostu di foto di e facce di e persone è di e etichette chì vanu cun elli.
Queste biblioteche sò critichi in l'implementazione è a valutazione di u nostru mudellu di ricunniscenza facciale.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Preprocessing and Loading the Face Recognition Dataset
In questa parte, avemu aduprà a funzione "fetch lfw people" per preprocessà i dati di ricunniscenza faciale. Prima, usemu fetch lfw people cù l'opzione "min face per person = 60". Questu indica chì vulemu solu include e persone in u dataset chì anu almenu 60 ritratti. Dunque, assicuremu chì u nostru mudellu hà dati adatti per amparà. Inoltre, questu riduce u periculu di overfitting.
I dati è l'etichette da l'ughjettu di e facci sò allora estratti è assignati à e variàbili X è y. X hol.
Avà simu pronti per furmà u nostru mudellu di ricunniscenza faciale utilizendu dati è etichette preprocessate.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Splitting Training and Test Sets
In questu passu, avemu divisu u nostru inseme di dati di ricunniscenza facciale in dui mità utilizendu u metudu di split test di trenu da a selezzione di sklearn.model. U scopu di sta split hè di valutà u rendiment di u nostru mudellu dopu a furmazione
A funzione di split test di trenu accetta cum'è inputs dati X è etichette y. È, li divide in furmazione è teste. Selezziunà a taglia di prova = 0.2 in questu esempiu. Questu implica chì u 20% di e dati seranu utilizati cum'è u set di teste è 80% cum'è u set di furmazione. Inoltre, usemu state aleatorii = 42 per assicurà chì e dati sò spartuti in modu coerente ogni volta chì u codice hè realizatu.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Preparazione di Dati
U scopu di preprocessing data hè di preparà per l'entrata in u mudellu. I dati sò preprocessati in stu codice dividendu ogni puntu di dati per 255.
Chì ci hà motivatu à ottene questu? A nurmalizazione hè una prucedura di preprocessazione utilizata in l'apprendimentu di macchina per guarantisce chì tutte e funzioni sò in a listessa scala. In questu scenariu, dividendu per 255 scala i dati à un intervallu di 0 à 1, chì hè un passu di normalizazione di dati di stampa di solitu.
Questu accelera a cunvergenza di u mudellu è pò aumentà u so rendiment.
X_train = X_train / 255.0
X_test = X_test / 255.0
Crià u Modu
Vulemu identificà l'individuu chì a faccia apparisce in una stampa. In questu casu, avemu aduprà una reta cumplettamente cunnessa, spessu cunnisciuta cum'è una rete densa. Hè una reta neurale artificiale chì hè stata utilizata per creà u mudellu.
I riti neurali artificiali sò modellati dopu cumu u cervellu umanu opera è hè urganizatu. Sò custituiti di nodi di trasfurmazioni di l'infurmazioni o di neuroni chì sò ligati. Ogni neurona in una capa in una reta densa hè ligata à ogni neurona in a capa sopra.
U mudellu hà quattru strati in stu codice. Per esse alimentatu in a capa successiva, i dati di input sò appiattiti in a prima capa in un array unidimensionale. I neuroni 128 è 64 in i seguenti dui strati, per quessa, sò cumplettamente ligati.
A funzione di attivazione ReLU hè una funzione di attivazione unica utilizata da sti strati. Cù questu, pudemu avè u mudellu per amparà correlazioni non lineari trà l'inputs è outputs. L'ultima capa impiega a funzione di attivazione softmax per fà predizioni. È, hè una strata cumpletamente cunnessa cù tanti neuroni quant'è classi potenziali.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(62 * 47,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(len(target_names), activation='softmax')
])
Cumpilazione di u mudellu
U mudellu hè compilatu cù a funzione "compile". Avemu bisognu di preparà u mudellu per a furmazione. Dunque, avemu da definisce l'ottimisatore, a funzione di perdita è e metriche chì seranu utilizati per valutà u mudellu.
Durante a furmazione, l'ottimisatore hè incaricatu di cambià i paràmetri di u mudellu. L'ottimisatore "adam" hè una tecnica d'ottimisazione d'apprendimentu prufonda populari.
Utilizemu a funzione di perdita per valutà u rendiment di u mudellu nantu à i dati di furmazione. Perchè l'etichette di destinazione sò interi chì riflettenu a classa di l'imaghjini piuttostu chè vettori codificati in un caldu, a funzione di perdita "sparse categorical crossentropy" hè favorevule.
Infine, definiscemu e metriche per valutà u mudellu, in questu casu, "accurata".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Formazione di mudelli
Avemu aduprà a funzione "fit" per furmà u mudellu.
Avemu da furnisce i dati di furmazione (trenu X) è etichette relative (trenu y), è ancu stabilisce u nùmeru di epoche (iterazioni) per curriri cum'è 10. A prucedura di furmazione mudifica i pesi di mudelli per riduce una perdita (a diffarenza trà etichette previste è reali) è migliurà a precisione di i dati di furmazione.
model.fit(X_train, y_train, epochs=10)
Valutazione di mudellu
Avà, avemu bisognu di valutà u mudellu furmatu nantu à i dati di prova. Utilizemu a perdita di teste è a precisione di a prova sò aduprate per valutà u rendiment di u mudellu. Nant'à a prova di dati di prova X è l'etichette di prova y test, avemu bisognu di chjamà "funzione model.evaluate"
A funzione produce a precisione di prova è a perdita di prova. I variàbili di perdita di prova è di precisione di prova, rispettivamente, cuntenenu sti valori. Infine, usemu a funzione "stampa" per pruduce a precisione di a prova.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Predizzione di e classi è uttene e classi previste
Utilizendu u mudellu di furmazione è i dati di teste, l'algoritmu face predizioni. Quandu i dati di teste sò passati à u metudu "model.predict", produce una serie di previsioni per ogni stampa in u set di teste.
U nome di a classa di destinazione per ogni stampa hè allora recuperata da a lista di "nomi di destinazione" utilizendu a funzione "np.argmax" per identificà l'indici cù a più probabilità prevista. Questu indice hè allora utilizatu per determinà a classa prevista per ogni imagine.
Utilizendu una cumpressione di lista, tutte e predizioni in l'array di "predizioni" sò sottumessi à stu metudu, risultatu in a lista di "classi previste".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Visualizà e Previsioni
Pudemu avà vede cumu si vede u nostru mudellu.
Per valutà quantu u mudellu hè fattu, i primi 10 ritratti è e so previsioni seranu mostrati. Tracerà e foto in scala di grisgiu è mostra a classa attuale di l'imaghjini è a classa prevista da u mudellu cù u modulu matplotlib.pyplot.
A funzione "imshow" hè aduprata da u loop for per tracciate ognuna di e prime 10 foto di teste. I nomi di destinazione [y test[i]] è e classi previste [i] sò usati per determinà a classa attuale di l'imaghjini è a classa prevista, rispettivamente. I tituli di ogni trama sò allora indicati da queste classificazioni.
Infine, a trama hè visualizata cù u metudu plt.show().
for i in range(10):
plt.imshow(X_test[i].reshape(62, 47), cmap='gray')
plt.title(f"True: {target_names[y_test[i]]}, Predicted:{predicted_classes[i]}")
plt.show()
Conclude
TensorFlow offre un ambiente cumpletu è flessibile per creà mudelli di machine learning.
Per fine-tuning u mudellu per risponde à esigenze particulare o aghjunghjendu novi sviluppi in l'apprendimentu machine, l'accuratezza di u mudellu pò esse aumentata ancu più.
TensorFlow è u ricunniscenza faciale seranu prubabilmente utilizati sempre più in l'industrii cum'è i sistemi di sicurezza, l'autentificazione biometrica è l'assistenza sanitaria in u futuru. Videremu innuvazioni affascinanti prestu.
Lascia un Audiolibro