TensorFlow jẹ ohun elo to wapọ lati ṣẹda awọn awoṣe ikẹkọ ẹrọ.
Ninu ifiweranṣẹ yii, a yoo wo bii o ṣe le ṣẹda eto idanimọ oju pẹlu TensorFlow, ilana ikẹkọ ẹrọ orisun-ìmọ. A yoo lọ lori awọn ilana pataki ni ṣiṣẹda eto idanimọ oju aṣeyọri, lati apejọ ati ngbaradi data lati ṣe ikẹkọ ati iṣiro awoṣe kan.
Iwọ yoo ni iriri akọkọ-ọwọ pẹlu TensorFlow lati ṣẹda idanimọ oju pẹlu iranlọwọ ti awọn snippets koodu ati awọn apẹẹrẹ gidi-aye. O ṣe itẹwọgba lati tẹle bi a ṣe tẹsiwaju.
Ifihan si TensorFlow
TensorFlow jẹ ọfẹ ati ile-ikawe orisun ṣiṣi. O jẹ apoti irinṣẹ mathematiki aami ti o nlo ṣiṣan data ati siseto iyatọ. O le mu awọn iṣẹ ṣiṣe lọpọlọpọ pẹlu rẹ, pẹlu jin Nẹtiwọki ti nhu ikẹkọ.
TensorFlow jẹ alagbara ati iyipada. Bakanna, o jẹ nla kan ọpa fun idagbasoke ati imuṣiṣẹ awọn awoṣe ẹkọ ẹrọ. O le kọ awọn awoṣe idiju pẹlu ọpọlọpọ awọn fẹlẹfẹlẹ ati awọn iṣẹ tensor. Pẹlupẹlu, awọn awoṣe ti a ti kọ tẹlẹ ninu ile-ikawe le jẹ aifwy daradara fun awọn iwulo pato.
Pẹlupẹlu, TensorFlow ni agbegbe olumulo ti o tobi ati faagun. Nitorinaa, ọpọlọpọ alaye ati iranlọwọ wa fun awọn ẹni-kọọkan ti o jẹ tuntun si pẹpẹ.
TensorFlow jẹ olokiki fun imudani ẹrọ ni apakan nitori pe o pese iṣan-iṣẹ ipari-si-opin. Nitorinaa, o le ni irọrun kọ, ṣe ikẹkọ ati mu awọn awoṣe ṣiṣẹ. O pese awọn irinṣẹ ati awọn ọgbọn fun ilọsiwaju ati awọn awoṣe iwọn lati baamu awọn ibeere kan pato. O yatọ lati ṣiṣe iṣaaju data si imuṣiṣẹ awoṣe.
Kini idanimọ Oju?
Idanimọ oju jẹ a oju kọmputa iṣẹ-ṣiṣe ti o ṣe idanimọ idanimọ eniyan ti o da lori oju wọn. Ilana yii ṣe idanimọ awọn ami oju, gẹgẹbi apẹrẹ ati sojurigindin ti oju, imu, ati ẹnu.
Ati pe, o ṣe afiwe wọn si ibi ipamọ data ti awọn oju ti a mọ lati ṣe idanimọ baramu. Idanimọ oju ni ọpọlọpọ awọn lilo, pẹlu awọn eto aabo, eto fọto, ati ijẹrisi biometric.
Awọn alugoridimu idanimọ oju ti pọ si ni awọn ọdun aipẹ bi abajade awọn aṣeyọri ninu kikọ ẹrọ.
Gbigbe Awọn ile-ikawe pataki wọle
Ṣaaju ki o to bẹrẹ ohunkohun, a nilo lati gbe wọle awọn ile-ikawe ti o nilo fun awoṣe wa. Tensorflow (tf) jẹ akowọle ati lilo lati ṣẹda ati ṣe ikẹkọ awoṣe. <(p>
"numpy" ṣe awọn iṣiro mathematiki ati ṣiṣe data.
"matplotlib.pyplot" ti wa ni wole bi plt ati ki o lo fun data charting ati visualizations.
Nikẹhin, "fa awọn eniyan lfw" ti wa ni agbewọle lati sklearn. datasets ati ki o lo lati fifuye awọn oju ti idanimọ dataset. Iṣẹ yii jẹ apakan ti ohun elo irinṣẹ scikit-Learn. Ṣeun si iṣẹ yii a ko ni lati gbejade data data miiran. Eyi ti wa ni itumọ ti tẹlẹ ni sckit-Learn.
Ati, o fun ọ ni wiwọle si kan jakejado ibiti o ti datasets fun ẹrọ eko awọn ohun elo. Ninu oju iṣẹlẹ yii, a lo ọna awọn eniyan fatch lfw lati gba datasetset “Awọn oju Aami ninu Egan” (LFW). O ni awọn fọto ti awọn oju eniyan ati awọn aami ti o lọ pẹlu wọn.
Awọn ile-ikawe wọnyi ṣe pataki ni imuse ati igbelewọn ti awoṣe idanimọ oju wa.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Ṣiṣeto ati ikojọpọ Data Idanimọ Oju
Ni apakan yii, a lo iṣẹ “fatch lfw eniyan” lati ṣaju data idanimọ oju. Ni akọkọ, a lo awọn eniyan lfw mu pẹlu aṣayan “awọn oju min fun eniyan = 60”. Eyi tọkasi pe a fẹ lati fi awọn eniyan sinu data ti o ni o kere ju awọn fọto 60. Nitorinaa, a rii daju pe awoṣe wa ni data to peye lati kọ ẹkọ. Paapaa, eyi dinku eewu ti iṣaju.
Awọn data ati awọn akole lati awọn ohun oju ni a yọ jade ati sọtọ si awọn oniyipada X ati y. X hol.
A ti ṣetan lati ṣe ikẹkọ awoṣe idanimọ oju wa nipa lilo data ti a ti ṣe tẹlẹ ati awọn akole.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Ikẹkọ Pipin ati Awọn Eto Idanwo
Ni igbesẹ yii, a pin data idanimọ oju wa si awọn ida meji ni lilo ọna pipin idanwo ọkọ oju irin lati yiyan sklearn.model. Ibi-afẹde ti pipin yii ni lati ṣe ayẹwo iṣẹ ṣiṣe awoṣe wa lẹhin ikẹkọ
Iṣẹ pipin idanwo ọkọ oju irin gba bi data igbewọle X ati awọn aami y. Ati pe, o pin wọn si ikẹkọ ati awọn eto idanwo. A yan iwọn idanwo=0.2 ninu apẹẹrẹ yii. Eyi tumọ si pe 20% ti data yoo ṣee lo bi eto idanwo ati 80% bi eto ikẹkọ. Siwaju si, a lo ID ipo = 42 lati rii daju wipe awọn data ti wa ni pin àìyẹsẹ kọọkan akoko awọn koodu ti wa ni sise.
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)
Ngbaradi Data naa
Idi ti iṣaju data ni lati mura silẹ fun titẹsi sinu awoṣe. Awọn data ti wa ni tito tẹlẹ ninu koodu yii nipa pipin aaye data kọọkan nipasẹ 255.
Kí ló sún wa láti ṣe èyí? Iṣe deede jẹ ilana iṣaju ti a lo ninu ikẹkọ ẹrọ lati ṣe iṣeduro pe gbogbo awọn ẹya wa ni iwọn kanna. Ninu oju iṣẹlẹ yii, pinpin nipasẹ 255 ṣe iwọn data naa si iwọn 0 si 1, eyiti o jẹ igbesẹ deede data aworan deede.
Eleyi iyara soke awọn awoṣe ká convergence ati ki o le mu awọn oniwe-išẹ.
X_train = X_train / 255.0
X_test = X_test / 255.0
Ṣiṣẹda Ipo
A fẹ lati ṣe idanimọ ẹni kọọkan ti oju rẹ han ninu aworan kan. Ni ọran yii, a yoo lo nẹtiwọọki ti a ti sopọ ni kikun, nigbagbogbo ti a mọ ni nẹtiwọọki ipon. O jẹ nẹtiwọọki nkankikan atọwọda ti a lo lati ṣẹda awoṣe naa.
Awọn nẹtiwọọki ti ara atọwọda jẹ apẹrẹ lẹhin bii ọpọlọ eniyan ṣe n ṣiṣẹ ati ti ṣeto. Wọn jẹ awọn apa ti n ṣiṣẹ alaye tabi awọn neuronu ti o ni asopọ. Neuron kọọkan ni ipele kan ninu nẹtiwọọki ipon ni asopọ si gbogbo neuron ninu Layer loke rẹ.
Awọn awoṣe ni o ni mẹrin fẹlẹfẹlẹ ni yi koodu. Lati jẹ ifunni sinu ipele ti o tẹle, data titẹ sii ti wa ni fifẹ ni ipele akọkọ sinu titobi onisẹpo kan. Awọn neuronu 128 ati 64 ni awọn ipele meji atẹle, ni ibamu, ni asopọ patapata.
Iṣẹ imuṣiṣẹ ReLU jẹ iṣẹ imuṣiṣẹ alailẹgbẹ ti awọn fẹlẹfẹlẹ wọnyi lo. Pẹlu iyẹn, a le gba awoṣe lati kọ ẹkọ awọn ibamu ti kii ṣe laini laarin awọn igbewọle ati awọn igbejade. Layer ti o kẹhin nlo iṣẹ imuṣiṣẹ softmax lati ṣe awọn asọtẹlẹ. Ati pe, o jẹ ipele ti o ni asopọ ni kikun pẹlu ọpọlọpọ awọn neuronu bi awọn kilasi ti o pọju wa.
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')
])
Iṣakojọpọ ti Awoṣe
A ṣe akopọ awoṣe naa nipa lilo iṣẹ “akojọpọ”. A nilo lati ṣeto awoṣe fun ikẹkọ. Nitorinaa, a yoo ṣalaye iṣapeye, iṣẹ isonu, ati awọn metiriki ti yoo ṣee lo lati ṣe ayẹwo awoṣe naa.
Lakoko ikẹkọ, iṣapeye wa ni idiyele ti yiyipada awọn aye awoṣe. Imudara “adam” jẹ ilana imudara imọ-jinlẹ olokiki olokiki.
A lo iṣẹ pipadanu lati ṣe ayẹwo iṣẹ awoṣe lori data ikẹkọ. Nitoripe awọn akole ibi-afẹde jẹ awọn odidi ti n ṣe afihan kilasi aworan kuku ju awọn aarọ koodu gbigbona kan, iṣẹ ipadanu “apakan isọri crossentropy” jẹ ọjo.
Nikẹhin, a ṣalaye awọn metiriki lati ṣe ayẹwo awoṣe, ninu ọran yii, “ipeye”.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Ikẹkọ awoṣe
A yoo lo iṣẹ “dara” lati ṣe ikẹkọ awoṣe.
A yoo pese data ikẹkọ (ọkọ ojuirin X) ati awọn aami ti o ni ibatan (y reluwe), bakannaa ṣeto nọmba awọn epochs (awọn itara) lati ṣiṣẹ bi 10. Ilana ikẹkọ ṣe atunṣe awọn iwọn awoṣe lati dinku pipadanu (iyatọ laarin asọtẹlẹ ati awọn aami gidi) ati ilọsiwaju deede ti data ikẹkọ.
model.fit(X_train, y_train, epochs=10)
Awoṣe Igbelewọn
Bayi, a nilo lati ṣe ayẹwo awoṣe ikẹkọ lori data idanwo naa. A lo pipadanu idanwo ati pe a lo deede idanwo lati ṣe ayẹwo iṣẹ awoṣe naa. Lori idanwo data X ati awọn aami idanwo y idanwo, a nilo lati pe “iṣẹ iṣẹ awoṣe.
Iṣẹ naa ṣe abajade deede idanwo ati pipadanu idanwo. Awọn oniyipada ṣe idanwo pipadanu ati idanwo deede, lẹsẹsẹ, ni awọn iye wọnyi ninu. Nikẹhin, a lo iṣẹ “titẹ” lati gbejade išedede idanwo naa.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Awọn kilasi asọtẹlẹ ati Gbigba Awọn kilasi Asọtẹlẹ
Lilo awoṣe ikẹkọ ati data idanwo, algorithm ṣe awọn asọtẹlẹ. Nigbati data idanwo naa ba kọja si ọna “model.predict”, o ṣe agbejade ọpọlọpọ awọn asọtẹlẹ fun aworan kọọkan ninu eto idanwo naa.
Orukọ kilasi ibi-afẹde fun aworan kọọkan ni a gba pada lati atokọ “awọn orukọ ibi-afẹde” ni lilo iṣẹ “np.argmax” lati ṣe idanimọ atọka pẹlu iṣeeṣe asọtẹlẹ ti o tobi julọ. Atọka yii lẹhinna lo lati pinnu kilasi asọtẹlẹ fun aworan kọọkan.
Lilo oye atokọ, gbogbo awọn asọtẹlẹ ti o wa ninu ọna “awọn asọtẹlẹ” ni a tẹriba si ọna yii, ti o yorisi atokọ “awọn kilasi asọtẹlẹ”.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Wiwo Awọn asọtẹlẹ
A le wo bi awoṣe wa ṣe dabi.
Lati ṣe ayẹwo bi awoṣe ṣe n ṣe daradara, awọn fọto 10 akọkọ ati awọn asọtẹlẹ wọn yoo han. O yoo Idite awọn fọto ni grayscale ati ki o han mejeji awọn gangan kilasi ti awọn aworan ati awọn kilasi ti anro nipa awọn awoṣe lilo matplotlib.pyplot module.
Iṣẹ “imshow” jẹ lilo nipasẹ lupu lati gbero ọkọọkan awọn fọto ṣeto idanwo 10 akọkọ. Awọn orukọ ibi-afẹde[y idanwo[i]] ati awọn kilasi asọtẹlẹ[i] ni a lo lati pinnu kilasi gangan aworan ati kilasi asọtẹlẹ, lẹsẹsẹ. Awọn akọle ti idite kọọkan lẹhinna ni itọkasi nipasẹ awọn isọdi wọnyi.
Níkẹyìn, awọn Idite han nipa lilo plt.show () -ọna.
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()
Pale mo
TensorFlow nfunni ni pipe ati agbegbe rọ fun ṣiṣẹda awọn awoṣe ikẹkọ ẹrọ.
Nipa yiyi awoṣe dara lati pade awọn ibeere kan pato tabi nipa fifi awọn idagbasoke tuntun kun ni ẹkọ ẹrọ, deede ti awoṣe le pọ si paapaa siwaju.
TensorFlow ati idanimọ oju yoo ṣee lo ni ilọsiwaju ni awọn ile-iṣẹ bii awọn eto aabo, ijẹrisi biometric, ati ilera ni ọjọ iwaju. A yoo rii awọn imotuntun ti o fanimọra laipẹ.
Fi a Reply