TensorFlow se yon zouti versatile pou kreye modèl aprantisaj machin.
Nan pòs sa a, nou pral gade ki jan yo kreye yon sistèm rekonesans figi ak TensorFlow, yon kad aprantisaj machin sous louvri. Nou pral ale sou pwosesis esansyèl yo nan kreye yon sistèm rekonesans figi siksè, soti nan rasanble ak prepare done pou fòme ak evalye yon modèl.
Ou pral jwenn eksperyans premye men ak TensorFlow pou kreye rekonesans feminen ak èd fragments kòd ak egzanp nan mond reyèl la. Ou akeyi swiv ansanm pandan n ap kontinye.
Entwodiksyon nan TensorFlow
TensorFlow se yon bibliyotèk gratis ak sous louvri. Li se yon bwat zouti matematik senbolik ki itilize dataflow ak pwogramasyon diferansyab. Ou ka okipe yon seri travay avèk li, ki gen ladan gwo twou san fon nè rezo fòmasyon.
TensorFlow se pwisan ak adaptab. Menm jan an tou, li se yon gwo zouti pou devlope ak deplwaye modèl aprantisaj machin. Ou ka bati modèl konplike ak plizyè kouch ak operasyon tensor. Epitou, modèl pre-bati nan bibliyotèk la ka amann pou bezwen espesifik.
Anplis de sa, TensorFlow gen yon kominote itilizatè gwo ak agrandi. Se konsa, gen yon kantite enfòmasyon ak èd pou moun ki nouvo nan platfòm la.
TensorFlow popilè pou aprantisaj machin an pati paske li bay yon workflow fen-a-fen. Se konsa, ou ka fasilman konstwi, fòme ak deplwaye modèl. Li bay zouti ak estrateji pou amelyore ak echèl modèl yo anfòm demand espesifik. Li varye de done pre-traitement pou deplwaman modèl.
Ki sa ki se rekonesans figi?
Rekonesans figi se yon vizyon òdinatè travay ki idantifye idantifikasyon yon moun ki baze sou figi yo. Teknik sa a rekonèt karakteristik vizaj yo, tankou fòm ak teksti je, nen, ak bouch.
Epi, li konpare yo ak yon baz done figi li te ye pou idantifye yon match. Rekonesans figi gen plizyè itilizasyon, tankou sistèm sekirite, òganizasyon foto, ak otantifikasyon byometrik.
Presizyon algorithm rekonesans figi yo te ogmante anpil nan dènye ane yo kòm yon rezilta nan pwogrè nan aprantisaj machin.
Enpòte bibliyotèk ki nesesè yo
Anvan ou kòmanse anyen, nou bezwen enpòte bibliyotèk ki nesesè pou modèl nou an. Tensorflow (tf) enpòte epi itilize pou kreye ak antrene modèl la. <(p>
"numpy" fè kalkil matematik ak pwosesis done.
"matplotlib.pyplot" se enpòte kòm plt epi yo itilize pou tablo done ak vizyalizasyon.
Finalman, "chache lfw moun" enpòte soti nan sklearn. datasets ak itilize pou chaje done rekonesans feminen an. Fonksyon sa a fè pati bwat zouti scikit-learn. Gras a fonksyon sa a, nou pa t oblije telechaje yon lòt dataset. Sa a deja bati nan sckit-learn.
Epi, li ba ou aksè nan yon pakèt domèn ansanm done pou aprantisaj machin aplikasyon yo. Nan senaryo sa a, nou itilize metòd fetch lfw moun pou rekipere dataset "Labeled Faces in the Wild" (LFW). Li gen foto figi moun ansanm ak etikèt ki ale ak yo.
Bibliyotèk sa yo enpòtan anpil nan aplikasyon ak evalyasyon modèl rekonesans figi nou an.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Pre-pwosesis ak chaje Dataset Rekonesans figi a
Nan pati sa a, nou itilize fonksyon "chache lfw moun" pou preprocese done rekonesans feminen yo. Premyèman, nou itilize fetch lfw moun ak opsyon "min figi pou chak moun = 60". Sa a endike ke nou vle sèlman mete moun nan seri done a ki gen omwen 60 foto. Pakonsekan, nou asire ke modèl nou an gen bon jan done pou aprann. Epitou, sa diminye danje a nan overfitting.
Done yo ak etikèt ki soti nan objè figi yo Lè sa a, ekstrè epi yo asiyen nan varyab yo X ak y. X hol.
Nou pare kounye a pou fòme modèl rekonesans feminen nou an lè l sèvi avèk done ak etikèt ki deja trete.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Divize fòmasyon ak tès ansanm
Nan etap sa a, nou divize seri done rekonesans figi nou an an de mwatye lè l sèvi avèk metòd fann tès tren ki soti nan seleksyon sklearn.model. Objektif divize sa a se evalye pèfòmans modèl nou an apre fòmasyon
Fonksyon fann tès tren an aksepte kòm antre done X ak etikèt y. Epi, li divize yo an fòmasyon ak seri tès. Nou chwazi gwosè tès = 0.2 nan egzanp sa a. Sa vle di ke 20% done yo pral itilize kòm seri tès la ak 80% kòm seri fòmasyon an. Anplis de sa, nou itilize eta o aza = 42 pou asire ke done yo divize toujou chak fwa yo fè kòd la.
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)
Prepare done yo
Objektif done pre-pwosesis se prepare yo pou antre nan modèl la. Done yo pretrete nan kòd sa a lè yo divize chak pwen done pa 255.
Ki sa ki motive nou reyalize sa a? Nòmalizasyon se yon pwosedi pre-pwosesis yo itilize nan aprantisaj machin pou garanti ke tout karakteristik yo sou menm echèl la. Nan senaryo sa a, divize pa 255 echèl done yo nan yon seri 0 a 1, ki se yon etap nòmal nòmal foto done.
Sa a akselere dirèksyon modèl la epi li ka ogmante pèfòmans li.
X_train = X_train / 255.0
X_test = X_test / 255.0
Kreye mòd la
Nou vle idantifye moun ki gen figi parèt nan yon foto. Nan ka sa a, nou pral sèvi ak yon rezo konplètman konekte, souvan ke yo rekonèt kòm yon rezo dans. Li se yon rezo neral atifisyèl ki te itilize pou kreye modèl la.
Rezo neral atifisyèl yo modle apre fason sèvo imen an opere epi yo òganize. Yo konpoze de nœuds enfòmasyon-pwosesis oswa newòn ki lye. Chak newòn nan yon kouch nan yon rezo dans se lye ak chak newòn nan kouch ki anwo a.
Modèl la gen kat kouch nan kòd sa a. Pou yo ka manje nan pwochen kouch la, done yo antre aplati nan premye kouch nan yon etalaj ki genyen yon sèl dimansyon. 128 ak 64 newòn yo nan de kouch sa yo, kòmsadwa, yo konplètman lye.
Fonksyon aktivasyon ReLU se yon fonksyon deklanchman inik ki itilize pa kouch sa yo. Avèk sa, nou ka jwenn modèl la aprann korelasyon ki pa lineyè ant entrées ak rezilta yo. Dènye kouch la itilize fonksyon deklanchman softmax la pou fè prediksyon. Epi, li se yon kouch konplètman konekte ak anpil newòn jan gen klas potansyèl yo.
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')
])
Konpile modèl la
Modèl la konpile lè l sèvi avèk fonksyon "konpile". Nou bezwen prepare modèl la pou fòmasyon. Se konsa, nou pral defini optimize a, fonksyon pèt, ak mezi ki pral itilize pou evalye modèl la.
Pandan fòmasyon, optimiseur a an chaj chanje paramèt modèl la. "Adam" optimiseur a se yon teknik popilè optimize aprantisaj pwofon.
Nou itilize fonksyon pèt la pou evalye pèfòmans modèl la sou done fòmasyon an. Paske etikèt sib yo se nonm antye ki reflete klas imaj la olye ke vektè kode yon sèl-cho, fonksyon pèt "sparse kategorik crossentropy" favorab.
Finalman, nou defini mezi yo evalye modèl la, nan ka sa a, "presizyon".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Fòmasyon ki gen konpòtman egzanplè
Nou pral sèvi ak fonksyon "anfòm" pou fòme modèl la.
Nou pral bay done fòmasyon yo (tren X) ak etikèt ki gen rapò (tren y), osi byen ke nou pral fikse kantite epòk (iterasyon) pou kouri kòm 10. Pwosedi fòmasyon an modifye pwa modèl yo pou diminye yon pèt (diferans ki genyen ant prevwa ak etikèt reyèl) ak amelyore presizyon nan done fòmasyon.
model.fit(X_train, y_train, epochs=10)
Evalyasyon modèl
Koulye a, nou bezwen evalye modèl ki resevwa fòmasyon sou done tès yo. Nou itilize pèt tès la ak presizyon tès yo itilize pou evalye pèfòmans modèl la. Sou done tès X tès la ak tès la etikèt y tès, nou bezwen rele "fonksyon model.evaluate la"
Fonksyon an pwodui presizyon tès la ak pèt tès la. Varyab pèt tès ak presizyon tès, respektivman, gen valè sa yo. Finalman, nou itilize fonksyon "enprime" pou pwodiksyon presizyon tès la.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Predi klas yo ak jwenn klas yo prevwa
Sèvi ak modèl fòmasyon an ak done tès yo, algorithm la fè prediksyon. Lè done tès yo pase nan metòd "model.predict", li bay yon seri prediksyon pou chak foto nan seri tès la.
Lè sa a, non klas sib la pou chak foto rekipere nan lis "non sib" lè l sèvi avèk fonksyon "np.argmax" pou idantifye endèks la ki gen pi gwo pwobabilite prevwa a. Lè sa a, se endèks sa a itilize pou detèmine klas la prevwa pou chak imaj.
Sèvi ak yon konpreyansyon lis, tout prediksyon yo nan etalaj "prediksyon" yo sibi metòd sa a, sa ki lakòz lis "klas yo prevwa".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Vizyalize Prediksyon yo
Koulye a, nou ka wè ki jan modèl nou an sanble.
Pou evalye kouman modèl la ap fè, yo pral montre 10 premye foto yo ak prediksyon yo. Li pral trase foto yo nan echèl gri epi montre tou de klas aktyèl la nan imaj la ak klas la prevwa pa modèl la lè l sèvi avèk modil matplotlib.pyplot la.
Se "imshow" fonksyon an itilize pa bouk la pou trase chak nan 10 premye foto seri tès yo. Yo itilize non sib [y test[i]] ak klas prevwa [i] pou detèmine klas aktyèl la ak klas prevwa imaj la, respektivman. Lè sa a, tit yo nan chak konplo yo endike nan klasifikasyon sa yo.
Finalman, trase a parèt lè l sèvi avèk metòd 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()
Wrap Up
TensorFlow ofri yon anviwònman konplè ak fleksib pou kreye modèl aprantisaj machin.
Lè yo ajiste modèl la pou satisfè kondisyon patikilye oswa lè yo ajoute nouvo devlopman nan aprantisaj machin, presizyon modèl la ka ogmante menm pi lwen.
TensorFlow ak rekonesans feminen pral gen chans pou yo itilize de pli zan pli nan endistri tankou sistèm sekirite, otantifikasyon byometrik, ak swen sante alavni. Nou pral wè inovasyon kaptivan nan yon ti tan.
Kite yon Reply