A TensorFlow egy sokoldalú eszköz a gépi tanulási modellek létrehozásához.
Ebben a bejegyzésben megvizsgáljuk, hogyan lehet arcfelismerő rendszert létrehozni a TensorFlow nyílt forráskódú gépi tanulási keretrendszerrel. Áttekintjük a sikeres arcfelismerő rendszer létrehozásának alapvető folyamatait, az adatok gyűjtésétől és előkészítésétől a modell betanításáig és értékeléséig.
Első kézből szerezhet tapasztalatot a TensorFlow-val, amellyel arcfelismerést hozhat létre kódrészletek és valós példák segítségével. Szívesen követheti, ahogy haladunk.
Bevezetés a TensorFlow-ba
A TensorFlow egy ingyenes és nyílt forráskódú könyvtár. Ez egy szimbolikus matematikai eszköztár, amely adatfolyamot és differenciálható programozást használ. Számos feladatot kezelhet vele, beleértve a mélyeket is neurális hálózat képzés.
A TensorFlow erőteljes és alkalmazkodóképes. Ugyanígy remek eszköz a fejlesztéshez és gépi tanulási modellek bevezetése. Bonyolult modelleket építhet több réteggel és tenzorműveletekkel. Ezenkívül a könyvtárban előre elkészített modellek finomhangolhatók az egyedi igényekhez.
Ezenkívül a TensorFlow hatalmas és bővülő felhasználói közösséggel rendelkezik. Tehát rengeteg információ és segítség áll a platformon újoncok számára.
A TensorFlow népszerű gépi tanulás részben azért, mert végpontok közötti munkafolyamatot biztosít. Így könnyen megépíthet, betaníthat és telepíthet modelleket. Eszközöket és stratégiákat biztosít a modellek fejlesztéséhez és skálázásához, hogy megfeleljenek az egyedi igényeknek. Az adat-előfeldolgozástól a modelltelepítésig változik.
Mi az az arcfelismerés?
Az arcfelismerés a számítógépes látás feladat, amely egy személy azonosítását az arca alapján azonosítja. Ez a technika felismeri az arcvonásokat, például a szem, az orr és a száj alakját és szerkezetét.
És összehasonlítja őket egy ismert arcok adatbázisával, hogy azonosítsa az egyezést. Az arcfelismerés többféleképpen használható, beleértve a biztonsági rendszereket, a fényképezést és a biometrikus hitelesítést.
Az arcfelismerő algoritmusok pontossága jelentősen megnövekedett az elmúlt években a gépi tanulás terén elért áttörések eredményeként.
Szükséges könyvtárak importálása
Mielőtt bármit is elkezdenénk, importálnunk kell a modellünkhöz szükséges könyvtárakat. A Tensorflow (tf) importálása és felhasználása a modell létrehozásához és betanításához. <(p>
„numpy” matematikai számításokat és adatfeldolgozást végez.
A „matplotlib.pyplot” plt-ként importálva és a következőhöz használatos adatdiagramok és vizualizációk.
Végül a „fetch lfw people” importálva van a sklearnből. adatkészleteket, és az arcfelismerő adatkészlet betöltésére szolgál. Ez a funkció a scikit-learn eszközkészlet része. Ennek a funkciónak köszönhetően nem kellett újabb adatkészletet feltöltenünk. Ez már be van építve a sckit-learnbe.
És hozzáférést biztosít a széles skálához adatkészletek a gépi tanuláshoz alkalmazások. Ebben a forgatókönyvben a fetch lfw people módszert használjuk a „Labeled Faces in the Wild” (LFW) adatkészlet lekéréséhez. Tartalmazza az emberek arcának fényképeit, valamint a hozzájuk tartozó címkéket.
Ezek a könyvtárak kritikusak az arcfelismerő modellünk megvalósításában és értékelésében.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Az arcfelismerési adatkészlet előfeldolgozása és betöltése
Ebben a részben a „fetch lfw people” funkciót használjuk az arcfelismerő adatok előfeldolgozására. Először a fetch lfw people-t használjuk a „min. arc per fő=60” opcióval. Ez azt jelzi, hogy csak azokat a személyeket szeretnénk bevonni az adatkészletbe, akiknek legalább 60 fényképük van. Ezért biztosítjuk, hogy modellünk megfelelő adatokkal rendelkezzen a tanuláshoz. Ez csökkenti a túlillesztés veszélyét is.
A faces objektum adatait és címkéit ezután a rendszer kivonja és hozzárendeli az X és y változókhoz. X hol.
Készen állunk arra, hogy arcfelismerő modellünket előre feldolgozott adatok és címkék segítségével betanítsuk.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Képzési és tesztkészletek felosztása
Ebben a lépésben az arcfelismerő adatkészletünket két részre osztjuk a sklearn.model kiválasztásból származó vonatteszt-felosztási módszerrel. Ennek a felosztásnak az a célja, hogy felmérjük modellünk teljesítményét edzés után
A vonatteszt split függvény bemenetként fogadja az X adatokat és y címkéket. És felosztja őket edzési és tesztkészletekre. Ebben a példában a tesztméret=0.2 értéket választjuk. Ez azt jelenti, hogy az adatok 20%-a tesztkészletként, 80%-a pedig betanítási halmazként kerül felhasználásra. Továbbá a véletlenszerű állapot=42 értéket használjuk annak biztosítására, hogy az adatok következetesen felosztásra kerüljenek a kód minden egyes végrehajtásakor.
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)
Az adatok előkészítése
Az adatok előfeldolgozásának célja, hogy felkészítse azokat a modellbe való bekerülésre. Az adatok előfeldolgozása ebben a kódban történik úgy, hogy minden adatpontot elosztunk 255-tel.
Mi motivált bennünket ennek elérésére? A normalizálás egy előfeldolgozási eljárás, amelyet a gépi tanulás során használnak annak biztosítására, hogy minden funkció azonos skálán legyen. Ebben a forgatókönyvben az adatok 255-tel való elosztása 0 és 1 közötti tartományra skálázza az adatokat, ami egy szokásos képadatok normalizálási lépése.
Ez felgyorsítja a modell konvergenciáját és növelheti a teljesítményét.
X_train = X_train / 255.0
X_test = X_test / 255.0
A mód létrehozása
Azt az egyént szeretnénk azonosítani, akinek az arca megjelenik egy képen. Ebben az esetben egy teljesen összekapcsolt hálózatot használunk, amelyet gyakran sűrű hálózatnak neveznek. Ez egy mesterséges neurális hálózat, amelyet a modell létrehozásához használtak.
A mesterséges neurális hálózatokat az emberi agy működésének és szerveződésének modellezése alapján alakították ki. Összekapcsolt információfeldolgozó csomópontokból vagy neuronokból állnak. Egy sűrű hálózatban lévő rétegben minden neuron kapcsolódik a felette lévő réteg minden neuronjához.
A modellnek négy rétege van ebben a kódban. A következő rétegbe történő betápláláshoz a bemeneti adatokat az első rétegben egydimenziós tömbbe simítják. A következő két réteg 128 és 64 neuronja ennek megfelelően teljesen összekapcsolódik.
A ReLU aktiválási funkció egy egyedi aktiválási funkció, amelyet ezek a rétegek használnak. Ezzel elérhetjük, hogy a modell megtanulja a nemlineáris korrelációkat a bemenetek és a kimenetek között. Az utolsó réteg a softmax aktiválási függvényt használja az előrejelzések készítéséhez. És ez egy teljesen összefüggő réteg annyi neuronnal, ahány potenciális osztály.
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')
])
A modell összeállítása
A modell összeállítása a „compile” funkció segítségével történik. Fel kell készítenünk a modellt a képzéshez. Tehát meghatározzuk az optimalizálót, a veszteségfüggvényt és a mérőszámokat, amelyeket a modell értékeléséhez használunk.
A képzés során az optimalizáló feladata a modell paramétereinek megváltoztatása. Az „ádam” optimalizáló egy népszerű mélytanulási optimalizálási technika.
A veszteségfüggvény segítségével értékeljük a modell teljesítményét a betanítási adatokon. Mivel a célcímkék a kép osztályát tükröző egész számok, nem pedig egy-forró kódolású vektorok, a „ritka kategorikus keresztentrópia” veszteségfüggvény előnyös.
Végül meghatározzuk a modell értékelésére szolgáló mérőszámokat, jelen esetben a „pontosság”-t.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Modellképzés
A modell betanításához a „fit” funkciót fogjuk használni.
Megadjuk a képzési adatokat (X vonat) és a kapcsolódó címkéket (y train), valamint beállítjuk az epochok (iterációk) számát 10-re. A képzési eljárás módosítja a modell súlyait, hogy csökkentse a veszteséget (a különbséget előrejelzett és valós címkék) és javítja a képzési adatok pontosságát.
model.fit(X_train, y_train, epochs=10)
Modell értékelése
Most fel kell mérnünk a betanított modellt a tesztadatok alapján. A tesztvesztést és a teszt pontosságát használjuk a modell teljesítményének értékelésére. Az X teszt tesztadatokon és az y teszt tesztcímkéken meg kell hívnunk a „model.evaluate függvényt”
A funkció a teszt pontosságát és a teszt veszteségét adja ki. A tesztveszteség és a teszt pontossága változók ezeket az értékeket tartalmazzák. Végül a „print” funkciót használjuk a teszt pontosságának kijelzésére.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Osztályok előrejelzése és a megjósolt órák megszerzése
A képzési modell és a tesztadatok felhasználásával az algoritmus előrejelzéseket készít. Amikor a tesztadatokat átadja a „model.predict” metódusnak, az előrejelzések tömbjét adja ki a tesztkészletben lévő minden egyes képhez.
Az egyes képek célosztálynevét ezután a rendszer lekéri a „cél nevek” listából az „np.argmax” függvény segítségével, hogy azonosítsa a legnagyobb előre jelzett valószínűségű indexet. Ezt az indexet használjuk fel az egyes képek előrejelzett osztályának meghatározására.
Listaértelmezés segítségével a „jóslatok” tömbben lévő összes előrejelzést ennek a módszernek vetik alá, ami a „prediktált osztályok” listát eredményezi.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Az előrejelzések megjelenítése
Most láthatjuk, hogyan néz ki a modellünk.
A modell teljesítményének értékeléséhez az első 10 fotó és a hozzájuk tartozó előrejelzések jelennek meg. A fényképeket szürkeárnyalatosan ábrázolja, és megjeleníti a kép tényleges osztályát és a modell által a matplotlib.pyplot modult használó előrejelzett osztályt.
Az „imshow” funkciót a for ciklus használja az első 10 tesztkészlet fénykép mindegyikének ábrázolására. A célnevek [y teszt[i]] és az előrejelzett osztályok [i] a kép tényleges osztályának, illetve előrejelzett osztályának meghatározására szolgálnak. Az egyes cselekmények címét ezek a besorolások jelzik.
Végül a diagram a plt.show() metódussal jelenik meg.
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
A TensorFlow teljes és rugalmas környezetet kínál a gépi tanulási modellek létrehozásához.
A modell finomhangolásával, hogy megfeleljen az adott követelményeknek, vagy új fejlesztések hozzáadásával a gépi tanuláshoz, a modell pontossága még tovább növelhető.
A TensorFlow-t és az arcfelismerést valószínűleg egyre gyakrabban használják majd olyan iparágakban, mint a biztonsági rendszerek, a biometrikus hitelesítés és az egészségügy. Hamarosan lenyűgöző újításokkal fogunk találkozni.
Hagy egy Válaszol