ТенсорФлов је свестран алат за креирање модела машинског учења.
У овом посту ћемо погледати како да креирамо систем за препознавање лица са ТенсорФлов, оквиром за машинско учење отвореног кода. Проћи ћемо преко основних процеса у креирању успешног система за препознавање лица, од прикупљања и припреме података до обуке и процене модела.
Добићете искуство из прве руке са ТенсорФлов-ом за креирање препознавања лица уз помоћ исечака кода и примера из стварног света. Слободно нас пратите док настављамо.
Увод у ТенсорФлов
ТенсорФлов је бесплатна библиотека отвореног кода. То је симболички математички алат који користи проток података и диференцибилно програмирање. Помоћу њега можете обављати низ задатака, укључујући дубоке неуронска мрежа обука.
ТенсорФлов је моћан и прилагодљив. Исто тако, то је одличан алат за развој и примену модела машинског учења. Можете да правите компликоване моделе са неколико слојева и тензорских операција. Такође, унапред изграђени модели у библиотеци могу се фино подесити за специфичне потребе.
Штавише, ТенсорФлов има огромну заједницу корисника која се шири. Дакле, постоји мноштво информација и помоћи за појединце који су нови на платформи.
ТенсорФлов је популаран за Машина учење делимично зато што обезбеђује ток посла од краја до краја. Дакле, можете лако да конструишете, обучите и примените моделе. Пружа алате и стратегије за побољшање и скалирање модела како би одговарали специфичним захтевима. Она варира од претходне обраде података до примене модела.
Шта је препознавање лица?
Препознавање лица је а рачунарски вид задатак који идентификује нечију идентификацију на основу њеног лица. Ова техника препознаје особине лица, као што су облик и текстура очију, носа и уста.
И пореди их са базом података познатих лица да би се идентификовало подударање. Препознавање лица има неколико употреба, укључујући сигурносне системе, организацију фотографија и биометријску аутентификацију.
Тачност алгоритама за препознавање лица значајно се повећала последњих година као резултат напретка у машинском учењу.
Увоз потребних библиотека
Пре него што започнемо било шта, морамо да увеземо библиотеке потребне за наш модел. Тенсорфлов (тф) се увози и користи за креирање и обуку модела. <(п>
„нумпи“ обавља математичке прорачуне и обраду података.
„матплотлиб.пиплот“ се увози као плт и користи се за цртање података и визуелизације.
Коначно, „фетцх лфв пеопле“ се увози из склеарна. скупова података и користи се за учитавање скупа података за препознавање лица. Ова функција је део сцикит-леарн алата. Захваљујући овој функцији нисмо морали да учитавамо још један скуп података. Ово је већ уграђено у сцкит-леарн.
И, пружа вам приступ широком спектру скупови података за машинско учење апликације. У овом сценарију користимо методу дохвати лфв пеопле да бисмо преузели скуп података „Означена лица у дивљини“ (ЛФВ). Садржи фотографије лица људи, као и ознаке које иду уз њих.
Ове библиотеке су кључне за имплементацију и евалуацију нашег модела препознавања лица.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Претходна обрада и учитавање скупа података за препознавање лица
У овом делу користимо функцију „дохвати лфв људи“ за претходну обраду података о препознавању лица. Прво, користимо дохвати лфв људи са опцијом „мин лица по особи=60“. Ово указује да желимо да укључимо само особе у скуп података које имају најмање 60 фотографија. Стога осигуравамо да наш модел има адекватне податке за учење. Такође, ово смањује опасност од претеривања.
Подаци и ознаке из објекта лица се затим издвајају и додељују променљивим Кс и и. Кс хол.
Сада смо спремни да обучимо наш модел препознавања лица користећи претходно обрађене податке и ознаке.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Подела скупова за обуку и тестове
У овом кораку, поделили смо наш скуп података о препознавању лица на две половине користећи метод поделе теста воза из склеарн.модел селецтион. Циљ ове поделе је да проценимо перформансе нашег модела након тренинга
Функција сплит теста воза прихвата као улаз податке Кс и ознаке и. И, дели их на сетове за обуку и тестове. У овом примеру бирамо тест сизе=0.2. Ово имплицира да ће 20% података бити искоришћено као тест, а 80% као скуп за обуку. Штавише, користимо рандом стате=42 да бисмо осигурали да се подаци доследно деле сваки пут када се код изводи.
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)
Припрема података
Сврха предобраде података је да их припреми за улазак у модел. Подаци се претходно обрађују у овом коду тако што се свака тачка података дели са 255.
Шта нас је мотивисало да то постигнемо? Нормализација је поступак предпроцесирања који се користи у машинском учењу како би се гарантовало да су све карактеристике на истој скали. У овом сценарију, дељењем са 255 подаци се скалирају на опсег од 0 до 1, што је уобичајени корак нормализације података слике.
Ово убрзава конвергенцију модела и може повећати његове перформансе.
X_train = X_train / 255.0
X_test = X_test / 255.0
Креирање режима
Желимо да идентификујемо особу чије се лице појављује на слици. У овом случају користићемо потпуно повезану мрежу, често познату као густа мрежа. То је вештачка неуронска мрежа која је коришћена за креирање модела.
Вештачке неуронске мреже су моделоване према томе како људски мозак функционише и како је организован. Састоје се од чворова за обраду информација или неурона који су повезани. Сваки неурон у слоју у густој мрежи је повезан са сваким неуроном у слоју изнад њега.
Модел има четири слоја у овом коду. Да би се унели у следећи слој, улазни подаци се изравнавају у првом слоју у једнодимензионални низ. 128 и 64 неурона у следећа два слоја, сходно томе, потпуно су повезани.
РеЛУ активациона функција је јединствена активациона функција коју користе ови слојеви. Уз то, можемо натерати модел да научи нелинеарне корелације између улаза и излаза. Последњи слој користи софтмак функцију активације за предвиђање. И, то је потпуно повезан слој са онолико неурона колико има потенцијалних класа.
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')
])
Састављање модела
Модел се компајлира помоћу функције „компилирај“. Морамо да припремимо модел за обуку. Дакле, дефинисаћемо оптимизатор, функцију губитка и метрику која ће се користити за процену модела.
Током обуке, оптимизатор је задужен за промену параметара модела. „Адам“ оптимизатор је популарна техника оптимизације дубоког учења.
Користимо функцију губитка да проценимо перформансе модела на подацима о обуци. Пошто су циљне ознаке цели бројеви који одражавају класу слике, а не вектори који су једнократно кодирани, функција губитка „ретке категоричке унакрсне зентропије“ је повољна.
Коначно, дефинишемо метрику за процену модела, у овом случају, „тачност“.
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Модел Траининг
Користићемо функцију „фит“ за обуку модела.
Обезбедићемо податке о обуци (Кс траин) и повезане ознаке (и траин), као и подесити број епоха (итерација) за покретање као 10. Процедура обуке модификује тежине модела како би се смањио губитак (разлика између предвиђене и стварне ознаке) и побољшају тачност података о обуци.
model.fit(X_train, y_train, epochs=10)
Модел Евалуатион
Сада морамо да проценимо обучени модел на основу података теста. Користимо губитак теста, а тачност теста се користи за процену перформанси модела. На тесту Кс тест података и тест ознака и, треба да позовемо „функцију модел.евалуате“
Функција даје тачност теста и губитак теста. Променљиве тест губитак и тачност тестирања, респективно, садрже ове вредности. Коначно, користимо функцију „штампање“ за испис тачности теста.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Предвиђање класа и добијање предвиђених класа
Користећи модел обуке и податке теста, алгоритам прави предвиђања. Када се подаци теста прослеђују методи “модел.предицт”, она даје низ предвиђања за сваку слику у скупу тестова.
Име циљне класе за сваку слику се затим преузима са листе „имена циља“ коришћењем функције „нп.аргмак“ да би се идентификовао индекс са највећом предвиђеном вероватноћом. Овај индекс се затим користи за одређивање предвиђене класе за сваку слику.
Користећи разумевање листе, сва предвиђања у низу „предвиђења“ су подвргнута овом методу, што резултира листом „предвиђених класа“.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Визуелизација предвиђања
Сада можемо да видимо како изгледа наш модел.
Да бисмо проценили колико добро модел ради, биће приказано првих 10 фотографија и њихова предвиђања. Он ће исцртати фотографије у сивим тоновима и приказати и стварну класу слике и класу коју је модел предвидео користећи модул матплотлиб.пиплот.
Функцију „имсхов“ користи фор петља за исцртавање сваке од првих 10 фотографија тестног скупа. Имена циља[и тест[и]] и предвиђене класе[и] се користе за одређивање стварне класе слике и предвиђене класе, респективно. Наслови сваке парцеле су затим назначени овим класификацијама.
Коначно, дијаграм се приказује помоћу методе плт.схов().
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()
Упаковати
ТенсорФлов нуди комплетно и флексибилно окружење за креирање модела машинског учења.
Финим подешавањем модела да испуни одређене захтеве или додавањем нових достигнућа у машинском учењу, тачност модела се може још више повећати.
ТенсорФлов и препознавање лица ће се вероватно све више користити у индустријама као што су безбедносни системи, биометријска аутентификација и здравствена заштита у будућности. Ускоро ћемо видети фасцинантне иновације.
Ostavite komentar