TensorFlow er fjölhæft tæki til að búa til vélanámslíkön.
Í þessari færslu munum við skoða hvernig á að búa til andlitsþekkingarkerfi með TensorFlow, opnum vélanámsramma. Farið verður yfir helstu ferla við að búa til farsælt andlitsþekkingarkerfi, allt frá því að safna og undirbúa gögn til að þjálfa og meta líkan.
Þú munt fá fyrstu hendi reynslu af TensorFlow til að búa til andlitsþekkingu með hjálp kóðabúta og raunveruleikadæma. Þér er velkomið að fylgjast með þegar við höldum áfram.
Kynning á TensorFlow
TensorFlow er ókeypis og opinn uppspretta bókasafn. Það er táknræn stærðfræðiverkfærakista sem notar gagnaflæði og aðgreinanlega forritun. Þú getur tekist á við margvísleg verkefni með því, þar á meðal djúp tauga net þjálfun.
TensorFlow er öflugt og aðlögunarhæft. Sömuleiðis er það frábært tæki til að þróa og innleiða vélanámslíkön. Þú getur smíðað flókin líkön með nokkrum lögum og tensoraðgerðum. Einnig er hægt að fínstilla forsmíðaðar gerðir á bókasafninu fyrir sérstakar þarfir.
Ennfremur hefur TensorFlow risastórt og stækkandi notendasamfélag. Svo, það er ofgnótt af upplýsingum og hjálp fyrir einstaklinga sem eru nýir á pallinum.
TensorFlow er vinsælt fyrir vél nám að hluta til vegna þess að það veitir verkflæði frá enda til enda. Svo þú getur auðveldlega smíðað, þjálfað og dreift líkönum. Það veitir verkfæri og aðferðir til að bæta og skala líkön til að passa við sérstakar kröfur. Það er mismunandi frá forvinnslu gagna til dreifingar líkana.
Hvað er andlitsgreining?
Andlitsgreining er a tölva sýn verkefni sem auðkennir auðkenni einstaklings út frá andliti hans. Þessi tækni þekkir andlitseinkenni, svo sem lögun og áferð augna, nefs og munns.
Og það ber þau saman við gagnagrunn með þekktum andlitum til að bera kennsl á samsvörun. Andlitsgreining hefur nokkra notkun, þar á meðal öryggiskerfi, myndaskipulag og líffræðileg tölfræði auðkenning.
Nákvæmni andlitsþekkingaralgríms hefur aukist verulega á undanförnum árum vegna byltinga í vélanámi.
Flytja inn nauðsynleg bókasöfn
Áður en við byrjum eitthvað þurfum við að flytja inn þau bókasöfn sem þarf fyrir líkanið okkar. Tensorflow (tf) er flutt inn og notað til að búa til og þjálfa líkanið. <(p>
„numpy“ framkvæmir stærðfræðilega útreikninga og gagnavinnslu.
“matplotlib.pyplot” er flutt inn sem plt og notað fyrir gagnakortagerð og sjónmyndir.
Að lokum er "sækja lfw fólk" flutt inn frá sklearn. gagnasöfn og notuð til að hlaða andlitsgreiningargagnasafninu. Þessi aðgerð er hluti af scikit-learn verkfærakistunni. Þökk sé þessari aðgerð þurftum við ekki að hlaða upp öðru gagnasafni. Þetta er nú þegar byggt í sckit-learn.
Og það gefur þér aðgang að fjölbreyttu úrvali gagnasöfn fyrir vélanám umsóknir. Í þessari atburðarás notum við sækja lfw people aðferðina til að sækja „Labeled Faces in the Wild“ (LFW) gagnasafnið. Það samanstendur af myndum af andlitum fólks sem og merkimiðunum sem fylgja því.
Þessi bókasöfn eru mikilvæg í innleiðingu og mati á andlitsþekkingarlíkani okkar.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Forvinnsla og hleðsla á andlitsgreiningargagnasettinu
Í þessum hluta notum við „sækja lfw fólk“ aðgerðina til að forvinna andlitsgreiningargögnin. Í fyrsta lagi notum við sækja lfw fólk með valkostinum „mín andlit á mann=60“. Þetta gefur til kynna að við viljum aðeins hafa einstaklinga með í gagnasafninu sem hafa að minnsta kosti 60 myndir. Þess vegna tryggjum við að líkanið okkar hafi fullnægjandi gögn til að læra. Einnig dregur þetta úr hættu á offitun.
Gögnin og merkingar frá andlitshlutnum eru síðan dregin út og úthlutað á breyturnar X og y. X hol.
Við erum nú tilbúin til að þjálfa andlitsþekkingarlíkanið okkar með því að nota forunnin gögn og merkimiða.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Að skipta þjálfunar- og prófunarsettum
Í þessu skrefi skiptum við gagnapakkanum okkar fyrir andlitsgreiningu í tvo helminga með því að nota lestarprófunaraðferðina úr vali sklearn.model. Markmiðið með þessari skiptingu er að meta frammistöðu líkansins okkar eftir þjálfun
Lestarprófunarskiptingin tekur við sem inntaksgögnum X og merkjum y. Og það skiptir þeim í þjálfunar- og prófunarsett. Við veljum prófstærð=0.2 í þessu dæmi. Þetta þýðir að 20% gagnanna verða nýtt sem prófunarsett og 80% sem þjálfunarsett. Ennfremur notum við tilviljunarkennd ástand=42 til að tryggja að gögnunum sé deilt stöðugt í hvert skipti sem kóðinn er framkvæmdur.
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)
Undirbúningur gagna
Tilgangur forvinnslu gagna er að undirbúa þau fyrir inngöngu í líkanið. Gögnin eru forunnin í þessum kóða með því að deila hverjum gagnapunkti með 255.
Hvað hvatti okkur til að ná þessu? Normalization er forvinnsluaðferð sem notuð er í vélanámi til að tryggja að allir eiginleikar séu á sama mælikvarða. Í þessari atburðarás skalar deilt með 255 gögnunum á bilið 0 til 1, sem er venjulegt staðsetningarskref myndgagna.
Þetta flýtir fyrir samleitni líkansins og getur aukið afköst þess.
X_train = X_train / 255.0
X_test = X_test / 255.0
Að búa til ham
Við viljum bera kennsl á einstaklinginn sem hefur andlit á mynd. Í þessu tilfelli munum við nota fulltengt net, oft þekkt sem þétt net. Það er gervi tauganet sem var notað til að búa til líkanið.
Gervi taugakerfi eru sniðin eftir því hvernig mannsheilinn starfar og er skipulagður. Þau eru samsett úr upplýsingavinnsluhnútum eða taugafrumum sem eru tengdar. Hver taugafruma í lagi í þéttu neti er tengd hverri taugafrumu í laginu fyrir ofan það.
Líkanið hefur fjögur lög í þessum kóða. Til að vera fóðrað inn í næsta lag eru inntaksgögnin fletjuð út í fyrsta laginu í einvíddar fylki. 128 og 64 taugafrumurnar í eftirfarandi tveimur lögum eru því algjörlega tengdar.
ReLU virkjunaraðgerðin er einstök virkjunaraðgerð sem þessi lög nota. Með því getum við fengið líkanið til að læra ólínuleg fylgni milli inntaks og úttaks. Síðasta lagið notar softmax virkjunaraðgerðina til að gera spár. Og það er algjörlega tengt lag með eins mörgum taugafrumum og það eru hugsanlegir flokkar.
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')
])
Samantekt á líkaninu
Líkanið er sett saman með því að nota „compile“ aðgerðina. Við þurfum að undirbúa líkanið fyrir þjálfun. Þannig að við munum skilgreina fínstillingu, tapfall og mælikvarða sem verða notaðir til að meta líkanið.
Á meðan á þjálfun stendur sér fínstillingarmaðurinn um að breyta breytum líkansins. „Adam“ fínstillingartæknin er vinsæl fínstillingartækni fyrir djúpt nám.
Við notum tapfallið til að meta frammistöðu líkansins á þjálfunargögnunum. Vegna þess að markmerkin eru heiltölur sem endurspegla flokk myndarinnar frekar en einheita dulkóðaða vektora, er tapaðgerðin „dreifð flokkuð krossentropy“ hagstæð.
Að lokum skilgreinum við mælikvarðana til að meta líkanið, í þessu tilviki „nákvæmni“.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Módelþjálfun
Við munum nota „fit“ aðgerðina til að þjálfa líkanið.
Við munum veita þjálfunargögnin (X lest) og tengda merkimiða (y lest), auk þess að stilla fjölda tímabila (endurtekningar) sem 10. spáð og raunveruleg merki) og bæta nákvæmni þjálfunargagna.
model.fit(X_train, y_train, epochs=10)
Líkanmat
Nú þurfum við að meta þjálfaða líkanið á prófunargögnunum. Við notum prófunartapið og prófnákvæmni er notuð til að meta frammistöðu líkansins. Í prófunargögnum X prófinu og prófunarmerkjunum y prófinu, þurfum við að kalla „model.evaluate aðgerðina“
Aðgerðin gefur út prófnákvæmni og prófunartap. Breyturnar próftap og prófnákvæmni, í sömu röð, innihalda þessi gildi. Að lokum notum við „prenta“ aðgerðina til að gefa út prófnákvæmni.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Að spá fyrir um flokka og fá fyrirhugaða flokka
Með því að nota þjálfunarlíkanið og prófunargögnin gerir reikniritið spár. Þegar prófunargögnin eru send yfir í „model.predict“ aðferðina gefur það út fjölda spár fyrir hverja mynd í prófunarsettinu.
Markflokksnafnið fyrir hverja mynd er síðan sótt af "marknöfnum" listanum með því að nota "np.argmax" aðgerðina til að auðkenna vísitöluna með mestar líkur. Þessi vísitala er síðan notuð til að ákvarða þann flokk sem spáð er fyrir hverja mynd.
Með því að nota listaskilning eru allar spár í "spá" fylkinu háðar þessari aðferð, sem leiðir til lista yfir "spáða flokka".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Sýndu spárnar
Við getum nú séð hvernig líkanið okkar lítur út.
Til að meta hversu vel líkaninu gengur verða fyrstu 10 myndirnar og spár þeirra sýndar. Það mun grafa myndirnar í grátóna og sýna bæði raunverulegan flokk myndarinnar og flokkinn sem líkanið spáir fyrir um með því að nota matplotlib.pyplot eininguna.
„Imshow“ aðgerðin er notuð af for lykkjunni til að plotta hverja af fyrstu 10 prófunarmyndunum. Marknöfn[y próf[i]] og spáð flokkur[i] eru notuð til að ákvarða raunverulegan flokk myndarinnar og spáðan flokk, í sömu röð. Heiti hvers lóðar er síðan gefið til kynna með þessum flokkunum.
Að lokum er söguþráðurinn sýndur með því að nota plt.show() aðferðina.
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()
vefja upp
TensorFlow býður upp á fullkomið og sveigjanlegt umhverfi til að búa til vélanámslíkön.
Með því að fínstilla líkanið til að uppfylla sérstakar kröfur eða með því að bæta við nýrri þróun í vélanámi getur nákvæmni líkansins aukist enn frekar.
TensorFlow og andlitsþekking verða líklega notuð í auknum mæli í atvinnugreinum eins og öryggiskerfum, líffræðileg tölfræði auðkenningu og heilsugæslu í framtíðinni. Við munum sjá heillandi nýjungar innan skamms.
Skildu eftir skilaboð