TensorFlow ni zana yenye matumizi mengi ya kuunda miundo ya kujifunza kwa mashine.
Katika chapisho hili, tutaangalia jinsi ya kuunda mfumo wa utambuzi wa nyuso na TensorFlow, mfumo wa kujifunza mashine huria. Tutapitia michakato muhimu katika kuunda mfumo wenye mafanikio wa utambuzi wa nyuso, kutoka kwa kukusanya na kuandaa data kutoa mafunzo na kutathmini muundo.
Utapata matumizi ya moja kwa moja na TensorFlow ili kuunda utambuzi wa uso kwa usaidizi wa vijisehemu vya msimbo na mifano ya ulimwengu halisi. Unakaribishwa kufuata tunapoendelea.
Utangulizi wa TensorFlow
TensorFlow ni maktaba huria na huria. Ni kisanduku cha zana cha kiishara cha hesabu kinachotumia mtiririko wa data na upangaji programu unaoweza kutofautishwa. Unaweza kushughulikia majukumu kadhaa nayo, pamoja na ya kina neural mtandao mafunzo.
TensorFlow ni nguvu na inaweza kubadilika. Vile vile, ni chombo kikubwa cha kuendeleza na kupeleka mifano ya kujifunza kwa mashine. Unaweza kuunda mifano ngumu na tabaka kadhaa na shughuli za tensor. Pia, miundo iliyojengwa awali katika maktaba inaweza kusasishwa kwa mahitaji maalum.
Zaidi ya hayo, TensorFlow ina jumuiya kubwa ya watumiaji inayopanuka. Kwa hivyo, kuna habari nyingi na usaidizi kwa watu binafsi ambao ni wapya kwenye jukwaa.
TensorFlow ni maarufu kwa mashine kujifunza kwa sehemu kwa sababu hutoa mtiririko wa mwisho hadi mwisho. Kwa hivyo, unaweza kuunda kwa urahisi, kutoa mafunzo na kupeleka mifano. Inatoa zana na mikakati ya kuboresha na kuongeza mifano ili kuendana na mahitaji maalum. Inatofautiana kutoka kwa usindikaji wa awali hadi uwekaji wa muundo.
Utambuzi wa Uso ni nini?
Utambuzi wa uso ni a maono ya kompyuta kazi inayotambua kitambulisho cha mtu kulingana na uso wake. Mbinu hii inatambua sifa za uso, kama vile umbo na umbile la macho, pua na mdomo.
Na, inazilinganisha na hifadhidata ya nyuso zinazojulikana ili kutambua mechi. Utambuzi wa uso una matumizi kadhaa, ikijumuisha mifumo ya usalama, kupanga picha na uthibitishaji wa kibayometriki.
Usahihi wa algoriti za utambuzi wa uso umeongezeka kwa kiasi kikubwa katika miaka ya hivi karibuni kutokana na mafanikio katika kujifunza kwa mashine.
Kuagiza Maktaba Muhimu
Kabla ya kuanza chochote, tunahitaji kuagiza maktaba zinazohitajika kwa mfano wetu. Tensorflow (tf) inaletwa na kutumika kuunda na kutoa mafunzo kwa modeli. <(p>
"numpy" hufanya mahesabu ya hisabati na usindikaji wa data.
"matplotlib.pyplot" inaletwa kama plt na kutumika kwa data chati na taswira.
Hatimaye, "leta watu lfw" inaingizwa kutoka sklearn. seti za data na kutumika kupakia mkusanyiko wa data wa utambuzi wa uso. Chaguo hili la kukokotoa ni sehemu ya zana ya kujifunza scikit. Shukrani kwa utendakazi huu hatukuhitaji kupakia mkusanyiko mwingine wa data. Hii tayari imejengwa katika skit-learn.
Na, inakupa ufikiaji wa anuwai ya seti za data za kujifunza kwa mashine maombi. Katika hali hii, tunatumia mbinu ya kuleta watu lfw ili kuepua seti ya data ya "Nyuso Zilizo na Lebo katika Pori" (LFW). Inajumuisha picha za nyuso za watu pamoja na lebo zinazoambatana nao.
Maktaba hizi ni muhimu katika utekelezaji na tathmini ya modeli yetu ya utambuzi wa uso.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Kuchakata na Kupakia Seti ya Data ya Utambuzi wa Uso
Katika sehemu hii, tunatumia chaguo la kukokotoa la "leta watu lfw" ili kuchakata data ya utambuzi wa uso. Kwanza, tunatumia leta watu lfw na chaguo "min nyuso kwa kila mtu=60". Hii inaonyesha kuwa tunataka tu kujumuisha watu katika mkusanyiko wa data ambao wana angalau picha 60. Kwa hivyo, tunahakikisha kwamba muundo wetu una data ya kutosha ya kujifunza. Pia, hii inapunguza hatari ya overfitting.
Data na lebo kutoka kwa kitu cha nyuso basi hutolewa na kupewa vigeuzo X na y. X hol.
Sasa tuko tayari kufunza muundo wetu wa utambuzi wa uso kwa kutumia data na lebo zilizochakatwa.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Kugawanya Mafunzo na Seti za Mtihani
Katika hatua hii, tunagawanya seti yetu ya data ya utambuzi wa uso katika nusu mbili kwa kutumia mbinu ya mgawanyiko wa jaribio la treni kutoka kwa uteuzi wa sklearn.model. Lengo la mgawanyiko huu ni kutathmini utendakazi wa modeli yetu baada ya mafunzo
Chaguo za kukokotoa za mgawanyiko wa jaribio la treni hukubali kama data ya ingizo X na lebo y. Na, inawagawanya katika seti za mafunzo na majaribio. Tunachagua saizi ya jaribio = 0.2 katika mfano huu. Hii inamaanisha kuwa 20% ya data itatumika kama seti ya majaribio na 80% kama seti ya mafunzo. Zaidi ya hayo, tunatumia nasibu state=42 ili kuhakikisha kwamba data inagawanywa kwa uthabiti kila wakati msimbo unapotekelezwa.
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)
Kuandaa Data
Madhumuni ya kuchakata data mapema ni kuitayarisha kwa kuingia kwenye mfano. Data inachakatwa mapema katika nambari hii kwa kugawa kila nukta ya data na 255.
Ni nini kilituchochea kufikia hili? Kurekebisha ni utaratibu wa kuchakata mapema unaotumika katika kujifunza kwa mashine ili kuhakikisha kuwa vipengele vyote viko kwenye kipimo sawa. Katika hali hii, kugawanya kwa mizani 255 huweka data kwa anuwai ya 0 hadi 1, ambayo ni hatua ya kawaida ya kuhalalisha data ya picha.
Hii inaharakisha muunganisho wa mfano na inaweza kuongeza utendaji wake.
X_train = X_train / 255.0
X_test = X_test / 255.0
Kuunda Modi
Tunataka kutambua mtu ambaye uso wake unaonekana kwenye picha. Katika kesi hii, tutatumia mtandao uliounganishwa kikamilifu, ambao mara nyingi hujulikana kama mtandao mnene. Ni mtandao wa neva bandia ambao ulitumiwa kuunda modeli.
Mitandao ya neva Bandia huigwa baada ya jinsi ubongo wa binadamu unavyofanya kazi na kupangwa. Zinaundwa na nodi za usindikaji wa habari au neurons ambazo zimeunganishwa. Kila niuroni katika safu katika mtandao mnene inaunganishwa na kila niuroni kwenye safu iliyo juu yake.
Mfano una tabaka nne katika nambari hii. Ili kulishwa kwenye safu inayofuata, data ya ingizo imebanwa katika safu ya kwanza katika safu ya mwelekeo mmoja. Neuroni 128 na 64 katika tabaka mbili zifuatazo, ipasavyo, zimeunganishwa kabisa.
Kitendaji cha kuwezesha ReLU ni kitendakazi cha kipekee cha kuwezesha kinachotumiwa na tabaka hizi. Pamoja na hayo, tunaweza kupata kielelezo cha kujifunza uunganisho usio wa mstari kati ya pembejeo na matokeo. Safu ya mwisho hutumia kazi ya kuwezesha softmax kufanya ubashiri. Na, ni safu iliyounganishwa kikamilifu na niuroni nyingi kama kuna madarasa yanayowezekana.
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')
])
Uundaji wa Mfano
Mfano umeundwa kwa kutumia kazi ya "kukusanya". Tunahitaji kuandaa mfano wa mafunzo. Kwa hivyo, tutafafanua kiboreshaji, utendaji wa upotezaji na vipimo ambavyo vitatumika kutathmini muundo.
Wakati wa mafunzo, optimizer inasimamia kubadilisha vigezo vya mfano. Kiboreshaji cha "adam" ni mbinu maarufu ya uboreshaji wa kujifunza kwa kina.
Tunatumia kipengele cha kupoteza ili kutathmini utendaji wa modeli kwenye data ya mafunzo. Kwa sababu lebo zinazolengwa ni nambari kamili zinazoakisi darasa la picha badala ya vekta moja iliyosimbwa moto, chaguo la kukokotoa la upotevu la "kategoria ya ziada" ni nzuri.
Hatimaye, tunafafanua vipimo vya kutathmini mfano, katika kesi hii, "usahihi".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Mafunzo ya Mfano
Tutatumia kazi ya "kufaa" ili kufundisha mfano.
Tutakuwa tukitoa data ya mafunzo (treni X) na lebo zinazohusiana (y treni), na pia kuweka idadi ya nyakati (marudio) ya kufanya kazi kama 10. Utaratibu wa mafunzo hurekebisha uzani wa muundo ili kupunguza hasara (tofauti kati ya lebo zilizotabiriwa na halisi) na kuboresha usahihi wa data ya mafunzo.
model.fit(X_train, y_train, epochs=10)
Tathmini ya Mfano
Sasa, tunahitaji kutathmini mfano wa mafunzo kwenye data ya mtihani. Tunatumia hasara ya jaribio na usahihi wa jaribio hutumika kutathmini utendakazi wa modeli. Kwenye jaribio la data ya jaribio la X na lebo za jaribio y, tunahitaji kuita "kitendakazi cha model.evaluate"
Chaguo za kukokotoa hutoa usahihi wa jaribio na hasara ya jaribio. Vigezo vya kupoteza mtihani na usahihi wa mtihani, kwa mtiririko huo, vina thamani hizi. Hatimaye, tunatumia chaguo la kukokotoa la "chapisha" ili kutoa usahihi wa jaribio.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Kutabiri Madarasa na Kupata Madarasa Yaliyotabiriwa
Kutumia modeli ya mafunzo na data ya jaribio, algorithm hufanya utabiri. Data ya jaribio inapopitishwa kwa mbinu ya "model.predict", hutoa utabiri wa kila picha katika seti ya majaribio.
Kisha jina la darasa lengwa la kila picha hutolewa kutoka kwa orodha ya "majina lengwa" kwa kutumia chaguo la kukokotoa la "np.argmax" ili kutambua faharasa kwa uwezekano mkubwa uliotabiriwa. Faharasa hii basi hutumika kubainisha darasa lililotabiriwa kwa kila picha.
Kwa kutumia ufahamu wa orodha, utabiri wote katika safu ya "utabiri" unakabiliwa na njia hii, na kusababisha orodha ya "darasa zilizotabiriwa".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Kuona Utabiri
Sasa tunaweza kuona jinsi mfano wetu unavyoonekana.
Ili kutathmini jinsi mtindo huo unavyofanya vizuri, picha 10 za kwanza na utabiri wao zitaonyeshwa. Itapanga picha katika grayscale na kuonyesha darasa halisi la picha na darasa lililotabiriwa na mtindo kwa kutumia moduli ya matplotlib.pyplot.
Chaguo la kukokotoa la "onyesho" linatumiwa na kitanzi kupanga kila moja ya picha 10 za kwanza za majaribio. Majina lengwa[y test[i]] na madarasa yaliyotabiriwa[i] hutumiwa kubainisha darasa halisi la picha na darasa lililotabiriwa, mtawalia. Majina ya kila njama basi huonyeshwa na uainishaji huu.
Hatimaye, njama inaonyeshwa kwa kutumia mbinu ya 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()
Maliza
TensorFlow inatoa mazingira kamili na rahisi ya kuunda miundo ya kujifunza kwa mashine.
Kwa kurekebisha muundo ili kukidhi mahitaji fulani au kwa kuongeza maendeleo mapya katika kujifunza kwa mashine, usahihi wa muundo huo unaweza kuongezeka hata zaidi.
TensorFlow na utambuzi wa uso huenda ukatumika zaidi katika sekta kama vile mifumo ya usalama, uthibitishaji wa kibayometriki na huduma ya afya katika siku zijazo. Tutaona ubunifu wa kuvutia hivi punde.
Acha Reply