TensorFlow estas multflanka ilo por krei maŝinlernajn modelojn.
En ĉi tiu afiŝo, ni rigardos kiel krei vizaĝ-rekonan sistemon kun TensorFlow, malfermfonta maŝinlernada kadro. Ni trarigardos la esencajn procezojn por krei sukcesan vizaĝrekonan sistemon, de kolektado kaj preparado de datumoj por trejni kaj taksi modelon.
Vi ricevos unuamanan sperton kun TensorFlow por krei vizaĝan rekonon per la helpo de kodaj fragmentoj kaj realaj ekzemploj. Vi bonvenas sekvi dum ni daŭrigas.
Enkonduko al TensorFlow
TensorFlow estas senpaga kaj malfermfonta biblioteko. Ĝi estas simbola matematika ilujo, kiu uzas datumfluon kaj diferencigeblan programadon. Vi povas trakti gamon da taskoj kun ĝi, inkluzive de profunda Neŭra reto trejnado.
TensorFlow estas potenca kaj adaptebla. Same, ĝi estas bonega ilo por disvolvi kaj deplojante maŝinlernajn modelojn. Vi povas konstrui komplikajn modelojn kun pluraj tavoloj kaj tensoroperacioj. Ankaŭ, antaŭkonstruitaj modeloj en la biblioteko povas esti fajnagorditaj por specifaj bezonoj.
Krome, TensorFlow havas grandegan kaj vastiĝantan uzantkomunumon. Do, ekzistas amaso da informoj kaj helpo por individuoj kiuj estas novaj al la platformo.
TensorFlow estas populara por maŝinlernado parte ĉar ĝi disponigas fin-al-finan laborfluon. Do, vi povas facile konstrui, trejni kaj disfaldi modelojn. Ĝi disponigas ilojn kaj strategiojn por plibonigado kaj skalado de modeloj por konveni specifajn postulojn. Ĝi varias de datumpretigo al modeldeplojo.
Kio estas Vizaĝa Rekono?
Vizaĝrekono estas a komputila vidado tasko kiu identigas la identigon de persono surbaze de ilia vizaĝo. Ĉi tiu tekniko rekonas vizaĝajn trajtojn, kiel la formo kaj teksturo de la okuloj, nazo kaj buŝo.
Kaj, ĝi komparas ilin al datumbazo de konataj vizaĝoj por identigi matĉon. Vizaĝrekono havas plurajn uzojn, inkluzive de sekurecaj sistemoj, fotoorganizo kaj biometria aŭtentikigo.
La precizeco de vizaĝrekono-algoritmoj multe pliiĝis en la lastaj jaroj kiel rezulto de sukcesoj en maŝinlernado.
Importado de Necesaj Bibliotekoj
Antaŭ ol komenci ion ajn, ni devas importi la bibliotekojn necesajn por nia modelo. Tensorflow (tf) estas importita kaj utiligita por krei kaj trejni la modelon. <(p>
"numpy" faras matematikajn kalkulojn kaj datumtraktadon.
"matplotlib.pyplot" estas importita kiel plt kaj uzata por datum-bildoj kaj bildigoj.
Fine, "fetch lfw people" estas importita de sklearn. datumaroj kaj uzataj por ŝargi la vizaĝrekonan datumaron. Ĉi tiu funkcio estas parto de la ilaro scikit-learn. Dank'al ĉi tiu funkcio ni ne devis alŝuti alian datumaron. Ĉi tio jam estas konstruita en sckit-learn.
Kaj, ĝi donas al vi aliron al larĝa gamo de datumaroj por maŝinlernado aplikoj. En ĉi tiu scenaro, ni uzas la metodon fetch lfw people por retrovi la datumaron "Labeled Faces in the Wild" (LFW). Ĝi enhavas fotojn de la vizaĝoj de homoj kaj ankaŭ de la etikedoj kun ili.
Ĉi tiuj bibliotekoj estas kritikaj en la efektivigo kaj taksado de nia vizaĝrekonomodelo.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Antaŭprilaborado kaj Ŝargado de la Vizaĝa Rekono-Datumserio
En ĉi tiu parto, ni uzas la funkcion "fetch lfw people" por antaŭprilabori la vizaĝrekonajn datumojn. Unue, ni uzas fetch lfw-homojn kun la opcio "min vizaĝoj per persono=60". Ĉi tio indikas, ke ni volas nur inkluzivi personojn en la datumaron, kiuj havas almenaŭ 60 fotojn. Tial ni certigas, ke nia modelo havas taŭgajn datumojn por lerni. Ankaŭ, ĉi tio malaltigas la danĝeron de troa ĝustigo.
La datumoj kaj etikedoj de la vizaĝoj objekto estas tiam ĉerpitaj kaj asignitaj al la variabloj X kaj y. X hol.
Ni nun pretas trejni nian vizaĝrekonan modelon uzante antaŭprilaboritajn datumojn kaj etikedojn.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Spliting Training and Test Sets
En ĉi tiu paŝo, ni disigas nian vizaĝrekonan datumaron en du duonojn uzante la trajntestan disdividan metodon de sklearn.model-elekto. La celo de ĉi tiu disigo estas taksi la agadon de nia modelo post trejnado
La trajntesta disigo-funkcio akceptas kiel enigaĵojn datumojn X kaj etikedojn y. Kaj ĝi dividas ilin en trejnadon kaj testajn arojn. Ni elektas testgrandecon=0.2 en ĉi tiu ekzemplo. Ĉi tio implicas, ke 20% de la datumoj estos uzataj kiel la testaro kaj 80% kiel la trejna aro. Krome, ni uzas hazardan staton=42 por certigi, ke la datumoj estas konsekvence dividitaj ĉiufoje kiam la kodo estas farita.
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)
Preparante la Datumojn
La celo de antaŭprilaborado de datumoj estas prepari ĝin por eniro en la modelon. La datumoj estas antaŭprocesitaj en ĉi tiu kodo dividante ĉiun datenpunkton per 255.
Kio instigis nin atingi ĉi tion? Normaligo estas antaŭpretiga proceduro uzita en maŝinlernado por garantii ke ĉiuj funkcioj estas sur la sama skalo. En ĉi tiu scenaro, dividado per 255 skalas la datenojn al gamo de 0 ĝis 1, kio estas kutima bilddatuma normaliga paŝo.
Ĉi tio akcelas la konverĝon de la modelo kaj povas pliigi ĝian rendimenton.
X_train = X_train / 255.0
X_test = X_test / 255.0
Kreante la Reĝimon
Ni volas identigi la individuon, kies vizaĝo aperas en bildo. En ĉi tiu kazo, ni uzos plene konektitan reton, ofte konatan kiel densa reto. Ĝi estas artefarita neŭrala reto, kiu estis uzata por krei la modelon.
Artefaritaj neŭralaj retoj estas modeligitaj laŭ kiel la homa cerbo funkcias kaj estas organizita. Ili konsistas el inform-prilaboraj nodoj aŭ neŭronoj kiuj estas ligitaj. Ĉiu neŭrono en tavolo en densa reto estas ligita al ĉiu neŭrono en la tavolo super ĝi.
La modelo havas kvar tavolojn en ĉi tiu kodo. Por esti provizitaj en la sekvan tavolon, la enirdatenoj estas platigitaj en la unua tavolo en unudimensian tabelon. La 128 kaj 64 neŭronoj en la sekvaj du tavoloj, sekve, estas tute ligitaj.
La ReLU-aktiviga funkcio estas unika aktiviga funkcio uzata de ĉi tiuj tavoloj. Kun tio, ni povas akiri la modelon lerni ne-liniajn korelaciojn inter la enigaĵoj kaj eliroj. La lasta tavolo uzas la softmax-aktivigan funkcion por fari prognozojn. Kaj, ĝi estas plene ligita tavolo kun tiom da neŭronoj kiom estas eblaj klasoj.
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')
])
Kompilado de la Modelo
La modelo estas kompilita uzante la "kompili" funkcion. Ni devas prepari la modelon por trejnado. Do, ni difinos la optimumiganton, perdan funkcion kaj metrikojn, kiuj estos uzataj por taksi la modelon.
Dum trejnado, la optimumigilo komisias ŝanĝi la parametrojn de la modelo. La "adamo" optimumiganto estas populara profund-lerna optimumigo tekniko.
Ni uzas la perdan funkcion por taksi la agadon de la modelo sur la trejnaj datumoj. Ĉar la celetikedoj estas entjeroj reflektantaj la klason de la bildo prefere ol unu-varmaj koditaj vektoroj, la "maldensa kategoria krucentropio-" perdfunkcio estas favora.
Fine, ni difinas la metrikojn por taksi la modelon, en ĉi tiu kazo, "precizecon".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Modela Trejnado
Ni uzos la funkcion "ĝustigi" por trejni la modelon.
Ni provizos la trejnajn datumojn (X-trajno) kaj rilatajn etikedojn (y-trajno), kaj ni agordos la nombron da epokoj (ripetoj) por funkcii kiel 10. La trejnadprocedo modifas la modelajn pezojn por redukti perdon (la diferenco inter antaŭviditaj kaj realaj etikedoj) kaj plibonigu la precizecon de trejnaj datumoj.
model.fit(X_train, y_train, epochs=10)
Modela Taksado
Nun, ni devas taksi la trejnitan modelon sur la testaj datumoj. Ni uzas la testan perdon kaj testan precizecon estas uzataj por taksi la agadon de la modelo. Sur la testaj datumoj X-testo kaj la testaj etikedoj y testo, ni devas nomi "la modelon.evaluate-funkcion"
La funkcio eligas la testprecizecon kaj testperdon. La variabloj testa perdo kaj testa precizeco, respektive, enhavas ĉi tiujn valorojn. Fine, ni uzas la "presi" funkcion por eligi la testan precizecon.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Antaŭdirado de Klasoj kaj Akiranta la Antaŭdiritajn Klasojn
Uzante la trejnan modelon kaj la testajn datumojn, la algoritmo faras prognozojn. Kiam la testaj datumoj estas transdonitaj al la metodo "model.predict", ĝi eligas aron da prognozoj por ĉiu bildo en la testaro.
La celklasnomo por ĉiu bildo tiam estas prenita de la "celnomoj" listo uzante la "np.argmax" funkcion por identigi la indekson kun la plej granda antaŭdirita probableco. Tiu ĉi indekso tiam estas uzata por determini la antaŭviditan klason por ĉiu bildo.
Uzante listkomprenon, ĉiuj antaŭdiroj en la tabelo "antaŭdiroj" estas submetitaj al ĉi tiu metodo, rezultigante la liston de "antaŭdiritaj klasoj".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Vidigo de la Antaŭdiroj
Ni nun povas vidi kiel aspektas nia modelo.
Por taksi kiom bone fartas la modelo, la unuaj 10 fotoj kaj iliaj antaŭdiroj estos montritaj. Ĝi prezentos la fotojn en grizskalo kaj montros kaj la faktan klason de la bildo kaj la klason antaŭdirita de la modelo uzante la matplotlib.pyplot-modulon.
La funkcio "imshow" estas uzata de la buklo por por bildi ĉiun el la unuaj 10 testaj fotoj. Celnomoj [y testo[i]] kaj antaŭviditaj klasoj[i] estas uzataj por determini la faktan klason kaj antaŭdirita klason de la bildo, respektive. La titoloj de ĉiu intrigo tiam estas indikitaj per tiuj klasifikoj.
Fine, la intrigo estas montrata per la metodo 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()
Enŝipiĝi
TensorFlow ofertas kompletan kaj flekseblan medion por krei maŝinlernajn modelojn.
Fine agordante la modelon por renkonti specialajn postulojn aŭ aldonante novajn evoluojn en maŝinlernado, la precizeco de la modelo povas esti pliigita eĉ plu.
TensorFlow kaj vizaĝa rekono probable estos uzataj pli kaj pli en industrioj kiel sekurecaj sistemoj, biometria aŭtentikigo kaj kuracado estonte. Ni baldaŭ vidos fascinajn novigojn.
Lasi Respondon