TensorFlow tresna polifazetikoa da ikaskuntza automatikoko ereduak sortzeko.
Argitalpen honetan, aurpegiak ezagutzeko sistema bat nola sortu ikusiko dugu TensorFlow-rekin, kode irekiko makina ikasteko esparru batekin. Aurpegiak ezagutzeko sistema arrakastatsu bat sortzeko ezinbesteko prozesuak aztertuko ditugu, datuak bildu eta prestatzen hasi eta eredu bat trebatu eta ebaluatzeraino.
TensorFlow-ekin lehen eskuko esperientzia izango duzu aurpegi-ezagutza sortzeko kode zatien eta mundu errealeko adibideen laguntzarekin. Goazen heinean jarraitzera gonbidatuta zaude.
TensorFlow-ren sarrera
TensorFlow doako eta kode irekiko liburutegia da. Datu-fluxua eta programazio diferentziagarria erabiltzen dituen matematika-tresna sinboliko bat da. Hainbat zeregin kudeatu ditzakezu, sakonak barne sare neural prestakuntza.
TensorFlow indartsua eta moldagarria da. Era berean, tresna bikaina da garatzeko eta ikaskuntza automatikoko ereduak zabaltzea. Hainbat geruza eta tentsore eragiketarekin eredu konplikatuak eraiki ditzakezu. Era berean, liburutegian aurrez eraikitako ereduak behar zehatzetarako moldatu daitezke.
Gainera, TensorFlow-ek erabiltzaile-komunitate zabala eta zabala du. Beraz, plataforman berriak diren pertsonentzako informazio eta laguntza ugari dago.
TensorFlow ezaguna da makina ikaskuntza neurri batean, amaierako lan-fluxua eskaintzen duelako. Beraz, erraz eraiki, trebatu eta zabaldu ditzakezu ereduak. Erremintak eta estrategiak eskaintzen ditu ereduak hobetzeko eta eskakizun zehatzetara egokitzeko. Datuen aurreprozesatzetik ereduaren hedapenera aldatzen da.
Zer da Aurpegi Errekonozimendua?
Aurpegi-ezagutza da Ikusmen informatikoa pertsona baten identifikazioa bere aurpegiaren arabera identifikatzen duen zeregina. Teknika honek aurpegiko ezaugarriak ezagutzen ditu, hala nola begien, sudurren eta ahoaren forma eta ehundura.
Eta, aurpegi ezagunen datu-base batekin konparatzen ditu partida bat identifikatzeko. Aurpegi-ezagutzak hainbat erabilera ditu, besteak beste, segurtasun sistemak, argazkien antolaketa eta autentifikazio biometrikoa.
Aurpegiak ezagutzeko algoritmoen zehaztasuna nabarmen handitu da azken urteotan, ikaskuntza automatikoaren aurrerapenen ondorioz.
Beharrezko liburutegiak inportatzea
Ezer hasi baino lehen, gure eredurako beharrezkoak diren liburutegiak inportatu behar ditugu. Tensorflow (tf) inportatu eta erabiltzen da eredua sortzeko eta entrenatzeko. <(p>
"numpy"-k kalkulu matematikoak eta datuen tratamendua egiten ditu.
“matplotlib.pyplot” plt gisa inportatu eta horretarako erabiltzen da datuen grafikoak eta bistaratzeak.
Azkenik, "fetch lfw people" sklearnetik inportatzen da. datu-multzoak eta aurpegia ezagutzeko datu-multzoa kargatzeko erabiltzen da. Funtzio hau scikit-learn toolkit-aren parte da. Funtzio honi esker ez dugu beste datu multzorik igo behar izan. Hau dagoeneko sckit-learn eraikita dago.
Eta, aukera zabalerako sarbidea ematen dizu Ikaskuntza automatikorako datu multzoak aplikazioak. Egoera honetan, fetch lfw people metodoa erabiltzen dugu "Labeled Faces in the Wild" (LFW) datu multzoa berreskuratzeko. Jendearen aurpegien argazkiak eta haiekin batera datozen etiketak biltzen ditu.
Liburutegi hauek funtsezkoak dira gure aurpegiak ezagutzeko eredua ezartzeko eta ebaluatzeko.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Aurpegiak ezagutzeko datu-multzoa aurreprozesatzea eta kargatzea
Zati honetan, "fetch lfw people" funtzioa erabiltzen dugu aurpegia ezagutzeko datuak aldez aurretik prozesatzeko. Lehenik eta behin, fetch lfw people erabiltzen dugu "min aurpegiak pertsona bakoitzeko=60" aukerarekin. Horrek adierazten du datu multzoan gutxienez 60 argazki dituzten pertsonak soilik sartu nahi ditugula. Horregatik, gure ereduak ikasteko datu egokiak dituela ziurtatzen dugu. Gainera, horrek gehiegizko egokitze arriskua murrizten du.
Ondoren aurpegien objektuaren datuak eta etiketak ateratzen dira eta X eta y aldagaiei esleitzen zaizkie. X hol.
Aurrez prozesatutako datuak eta etiketak erabiliz gure aurpegia ezagutzeko eredua trebatzeko prest gaude.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Prestakuntza eta proba multzoak zatitzea
Urrats honetan, gure aurpegia ezagutzeko datu-multzoa bi erditan banatu dugu sklearn.model hautaketaren tren probaren zatiketa metodoa erabiliz. Banaketa honen helburua entrenamenduaren ondoren gure ereduaren errendimendua ebaluatzea da
Trenaren proba zatiketa funtzioak sarrera gisa onartzen ditu X datuak eta y etiketak. Eta, entrenamendu eta proba multzoetan banatzen ditu. Test size=0.2 hautatzen dugu adibide honetan. Horrek esan nahi du datuen % 20 proba multzo gisa erabiliko dela eta % 80 prestakuntza multzo gisa. Gainera, ausazko egoera=42 erabiltzen dugu kodea egiten den bakoitzean datuak koherentziaz banatzen direla ziurtatzeko.
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)
Datuak prestatzea
Datuak aurreprozesatzeko helburua ereduan sartzeko prestatzea da. Kode honetan datuak aurrez prozesatzen dira datu-puntu bakoitza 255ez zatituz.
Zerk bultzatu gaitu hori lortzera? Normalizazioa ikaskuntza automatikoan erabiltzen den aurreprozesatzeko prozedura bat da, ezaugarri guztiak eskala berean daudela bermatzeko. Eszenatoki honetan, 255ez zatitzeak datuak 0 eta 1 arteko tartera eskalatzen ditu, hau da, ohiko argazkien datuen normalizazio urratsa.
Horrek ereduaren konbergentzia bizkortzen du eta bere errendimendua areagotu dezake.
X_train = X_train / 255.0
X_test = X_test / 255.0
Modua sortzea
Irudi batean aurpegia agertzen den gizabanakoa identifikatu nahi dugu. Kasu honetan, guztiz konektatutako sare bat erabiliko dugu, askotan sare trinko gisa ezagutzen dena. Eredua sortzeko erabili zen neurona-sare artifiziala da.
Neurona-sare artifizialak giza garunak nola funtzionatzen duen eta nola antolatzen den modelatzen dira. Lotuta dauden informazioa prozesatzeko nodo edo neuronaz osatuta daude. Sare trinko bateko geruza bateko neurona bakoitza bere gainean dagoen geruzako neurona bakoitzarekin lotuta dago.
Kode honetan lau geruza ditu ereduak. Hurrengo geruzan sartzeko, sarrerako datuak lehen geruzan berdindu egiten dira dimentsio bakarreko matrize batean. Ondoko bi geruzetako 128 eta 64 neuronak, beraz, guztiz lotuta daude.
ReLU aktibazio funtzioa geruza hauek erabiltzen duten aktibazio funtzio bakarra da. Horrekin, ereduak sarrera eta irteeren arteko korrelazio ez-linealak ikas ditzakegu. Azken geruzak softmax aktibazio funtzioa erabiltzen du iragarpenak egiteko. Eta guztiz konektatutako geruza bat da, klase potentzial adina neurona dituena.
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')
])
Eredua osatzea
Eredua "konpilatu" funtzioa erabiliz konpilatzen da. Prestakuntzarako eredua prestatu behar dugu. Beraz, eredua ebaluatzeko erabiliko diren optimizatzailea, galera-funtzioa eta neurketak definituko ditugu.
Prestakuntzan, optimizatzailea ereduaren parametroak aldatzeaz arduratzen da. "Adam" optimizatzailea ikaskuntza sakoneko optimizazio teknika ezaguna da.
Galera funtzioa erabiltzen dugu ereduaren errendimendua entrenamendu-datuetan ebaluatzeko. Helburuko etiketak irudiaren klasea islatzen duten zenbaki osoak direnez, bero bakarreko kodetutako bektoreak baino, "gurutze-entropia kategoriko urriko" galera-funtzioa aldekoa da.
Azkenik, eredua ebaluatzeko neurketak definitzen ditugu, kasu honetan, “zehaztasuna”.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Ereduen Prestakuntza
Eredua entrenatzeko “fit” funtzioa erabiliko dugu.
Entrenamenduaren datuak (X trena) eta erlazionatutako etiketak (y trena) emango ditugu, baita exekutatzeko aro kopurua (iterazioak) 10 gisa ezarriko dugu. Entrenamendu-prozedurak ereduaren pisuak aldatzen ditu galera bat murrizteko (arteko aldea). aurreikusitako eta benetako etiketak) eta prestakuntza-datuen zehaztasuna hobetu.
model.fit(X_train, y_train, epochs=10)
Ereduaren Ebaluazioa
Orain, trebatutako eredua probaren datuetan ebaluatu behar dugu. Proba galera erabiltzen dugu eta probaren zehaztasuna ereduaren errendimendua ebaluatzeko erabiltzen dira. Proba-datuen X proban eta proba-etiketetan y proban, "modelo.evaluate funtzioa" deitu behar dugu.
Funtzioak probaren zehaztasuna eta probaren galera ateratzen ditu. Proba galera eta probaren zehaztasuna aldagaiek, hurrenez hurren, balio hauek dituzte. Azkenik, "inprimatu" funtzioa erabiltzen dugu probaren zehaztasuna ateratzeko.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Klaseak aurreikustea eta aurreikusitako klaseak lortzea
Prestakuntza-eredua eta proba-datuak erabiliz, algoritmoak iragarpenak egiten ditu. Probaren datuak "model.predict" metodora pasatzen direnean, iragarpen sorta bat ateratzen du proba multzoko irudi bakoitzeko.
Ondoren, argazki bakoitzaren xede-klasearen izena "helburu-izenak" zerrendatik lortzen da "np.argmax" funtzioa erabiliz, aurreikusitako probabilitate handiena duen indizea identifikatzeko. Ondoren, indize hori irudi bakoitzerako aurreikusitako klasea zehazteko erabiltzen da.
Zerrenda-ulermena erabiliz, "iragarpen" array-ko iragarpen guztiak metodo honen menpe jartzen dira, eta "aurreikusitako klaseak" zerrenda sortzen da.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Iragarpenak bistaratzea
Orain ikus dezakegu nola dagoen gure eredua.
Eredua zein ondo dagoen ebaluatzeko, lehenengo 10 argazkiak eta haien iragarpenak erakutsiko dira. Argazkiak gris eskalan marraztuko ditu eta matplotlib.pyplot modulua erabiliz irudiaren benetako klasea eta ereduak aurreikusitako klasea erakutsiko ditu.
"imshow" funtzioa for begiztak erabiltzen du lehenengo 10 proba multzoko argazkietako bakoitza marrazteko. Helburu-izenak[y test[i]] eta aurreikusitako klaseak[i] irudiaren benetako klasea eta aurreikusitako klasea zehazteko erabiltzen dira, hurrenez hurren. Ondoren, lursail bakoitzaren izenburuak sailkapen horien bidez adierazten dira.
Azkenik, plt.show() metodoa erabiliz bistaratzen da grafikoa.
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()
biltzeko sortu
TensorFlow-ek ingurune oso eta malgua eskaintzen du ikaskuntza automatikoko ereduak sortzeko.
Eredua baldintza zehatzak betetzeko doituz edo ikaskuntza automatikoaren garapen berriak gehituz, ereduaren zehaztasuna are gehiago areagotu daiteke.
TensorFlow eta aurpegi-ezagutza ziurrenik gero eta gehiago erabiliko dira etorkizunean segurtasun-sistemetan, autentifikazio biometrikoan eta osasun-zaintzan. Laster berrikuntza liluragarriak ikusiko ditugu.
Utzi erantzun bat