TensorFlow - машиналық оқыту үлгілерін жасауға арналған әмбебап құрал.
Бұл постта біз ашық бастапқы кодты машиналық оқыту жүйесі TensorFlow көмегімен бетті тану жүйесін қалай құру керектігін қарастырамыз. Біз бетті сәтті тану жүйесін құрудағы деректерді жинау мен дайындаудан бастап үлгіні оқыту мен бағалауға дейінгі маңызды процестерді қарастырамыз.
Сіз код үзінділері мен нақты мысалдардың көмегімен бет-әлпетті тануды жасау үшін TensorFlow-пен бірінші тәжірибе аласыз. Біз жалғастырған кезде сіз де жүре аласыз.
TensorFlow-қа кіріспе
TensorFlow - бұл тегін және ашық бастапқы кітапхана. Бұл деректер ағыны мен дифференциалданатын бағдарламалауды пайдаланатын символдық математикалық құралдар жинағы. Оның көмегімен сіз көптеген тапсырмаларды, соның ішінде тереңдетілген тапсырмаларды орындай аласыз нейрондық желі оқыту.
TensorFlow қуатты және бейімделгіш. Сол сияқты, бұл дамыту үшін тамаша құрал және машиналық оқыту үлгілерін қолдану. Сіз бірнеше қабаттар мен тензор операциялары бар күрделі үлгілерді құра аласыз. Сондай-ақ, кітапханада алдын ала құрастырылған үлгілерді нақты қажеттіліктер үшін дәл реттеуге болады.
Сонымен қатар, TensorFlow пайдаланушылардың үлкен және кеңейетін қауымдастығына ие. Сонымен, платформаға жаңадан келген адамдар үшін көптеген ақпарат пен көмек бар.
TensorFlow үшін танымал машина оқыту ішінара, себебі ол ақырғы жұмыс процесін қамтамасыз етеді. Осылайша, сіз модельдерді оңай құрастыра, үйрете және орналастыра аласыз. Ол арнайы талаптарға сай модельдерді жақсарту және масштабтау үшін құралдар мен стратегияларды ұсынады. Ол деректерді алдын ала өңдеуден үлгіні орналастыруға дейін өзгереді.
Бетті тану дегеніміз не?
Бетті тану – а компьютерлік көру адамның бет-әлпетіне қарай сәйкестендіруді анықтайтын тапсырма. Бұл әдіс көздің, мұрынның және ауыздың пішіні мен құрылымы сияқты бет ерекшеліктерін таниды.
Және сәйкестікті анықтау үшін оларды белгілі беттердің дерекқорымен салыстырады. Бетті тану қауіпсіздік жүйелерін, фотосуреттерді ұйымдастыруды және биометриялық аутентификацияны қоса алғанда, бірнеше мақсатқа ие.
Бет-әлпетті тану алгоритмдерінің дәлдігі соңғы жылдары машиналық оқытудағы серпілістердің нәтижесінде айтарлықтай өсті.
Қажетті кітапханаларды импорттау
Кез келген нәрсені бастамас бұрын, біздің үлгіге қажетті кітапханаларды импорттауымыз керек. Tensorflow (tf) модельді жасау және үйрету үшін импортталады және пайдаланылады. <(p>
«numpy» математикалық есептеулер мен деректерді өңдеуді орындайды.
“matplotlib.pyplot” plt ретінде импортталады және пайдаланылады деректер диаграммасы және визуализациялар.
Соңында, «Ftch lfw people» sklearn-дан импортталады. деректер жиыны және бетті тану деректер жинағын жүктеу үшін пайдаланылады. Бұл функция scikit-learn құралдар жинағының бөлігі болып табылады. Осы функцияның арқасында бізге басқа деректер жинағын жүктеп салудың қажеті болмады. Бұл қазірдің өзінде sckit-learn жүйесінде салынған.
Және бұл сізге кең ауқымға қол жеткізуге мүмкіндік береді машиналық оқытуға арналған деректер жиынтығы қолданбалар. Бұл сценарийде біз «Жабайы табиғаттағы белгіленген беттер» (LFW) деректер жинағын шығарып алу үшін lfw адамдарды алу әдісін қолданамыз. Ол адамдардың беттерінің фотосуреттерін, сондай-ақ олармен бірге жүретін белгілерді қамтиды.
Бұл кітапханалар біздің бет-әлпетті тану моделін енгізуде және бағалауда өте маңызды.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Бетті тану деректер жинағын алдын ала өңдеу және жүктеу
Бұл бөлімде біз бет-әлпетті тану деректерін алдын ала өңдеу үшін «lfw адамдарды алу» функциясын қолданамыз. Біріншіден, fetch lfw people функциясын «бір адамға ең аз беттер = 60» опциясымен қолданамыз. Бұл деректер жиынына кемінде 60 фотосы бар адамдарды ғана қосқымыз келетінін көрсетеді. Осылайша, біз модельде үйренуге жеткілікті деректер бар екеніне кепілдік береміз. Сондай-ақ, бұл шамадан тыс орнату қаупін азайтады.
Содан кейін faces нысанындағы деректер мен белгілер алынады және X және y айнымалыларына тағайындалады. X хол.
Біз қазір алдын ала өңделген деректер мен белгілерді пайдалана отырып, бет-әлпетті тану үлгісін үйретуге дайынбыз.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Жаттығулар мен сынақ жинақтарын бөлу
Бұл қадамда біз бетті тану деректер жинағын sklearn.model таңдауынан пойыз сынағы бөлу әдісі арқылы екі жартыға бөлеміз. Бұл бөлудің мақсаты - жаттығудан кейінгі модельдің өнімділігін бағалау
Пойыз сынағы бөлу функциясы кіріс деректері ретінде X және y белгілерін қабылдайды. Және, ол оларды оқу және сынақ жинақтарына бөледі. Бұл мысалда сынақ өлшемі=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 нейрондар сәйкесінше толығымен байланысқан.
ReLU белсендіру функциясы осы қабаттар пайдаланатын бірегей белсендіру функциясы болып табылады. Осы арқылы біз кірістер мен шығыстар арасындағы сызықтық емес корреляцияларды үйренуге арналған модельді ала аламыз. Соңғы қабат болжау жасау үшін softmax белсендіру функциясын пайдаланады. Және бұл әлеуетті сыныптар қанша болса, сонша нейрондары бар толық қосылған қабат.
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'])
Модельдік тренинг
Модельді үйрету үшін «сәйкестендіру» функциясын қолданамыз.
Біз жаттығу деректерін (X пойызы) және қатысты белгілерді (y пойыз) ұсынатын боламыз, сонымен қатар орындалатын кезеңдердің (итерациялар) санын 10 етіп орнатамыз. Жаттығу процедурасы жоғалтуды азайту үшін үлгі салмақтарын өзгертеді (арасындағы айырмашылық) болжамды және нақты белгілер) және жаттығу деректерінің дәлдігін жақсартады.
model.fit(X_train, y_train, epochs=10)
Модельді бағалау
Енді сынақ деректері бойынша дайындалған модельді бағалауымыз керек. Модельдің өнімділігін бағалау үшін сынақ жоғалтуын қолданамыз және сынақ дәлдігі пайдаланылады. Сынақ деректері X сынағы мен сынақ белгілері y сынағы бойынша біз «model.evaluate функциясын» шақыруымыз керек.
Функция сынақ дәлдігі мен сынақ жоғалуын шығарады. Айнымалылар сынақ жоғалуы және сынақ дәлдігі сәйкесінше осы мәндерді қамтиды. Соңында сынақ дәлдігін шығару үшін «басып шығару» функциясын қолданамыз.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Сабақтарды болжау және болжалды сабақтарды алу
Жаттығу моделін және тест деректерін пайдалана отырып, алгоритм болжам жасайды. Сынақ деректері «model.predict» әдісіне берілгенде, ол сынақ жинағындағы әрбір сурет үшін болжамдар жиымын шығарады.
Әр суретке арналған мақсатты сынып атауы ең үлкен болжамды ықтималдығы бар индексті анықтау үшін «np.argmax» функциясын пайдаланып «мақсатты атаулар» тізімінен шығарылады. Содан кейін бұл индекс әрбір кескін үшін болжамды сыныпты анықтау үшін пайдаланылады.
Тізімді түсінуді пайдалана отырып, «болжамдар» массивіндегі барлық болжамдар осы әдіске бағынады, нәтижесінде «болжалды сыныптар» тізімі пайда болады.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Болжамдарды визуализациялау
Енді біз модельіміздің қалай көрінетінін көреміз.
Модельдің қаншалықты жақсы жұмыс істейтінін бағалау үшін алғашқы 10 фотосурет және олардың болжамдары көрсетіледі. Ол фотосуреттерді сұр реңкте салады және кескіннің нақты сыныбын және matplotlib.pyplot модулі арқылы модель болжаған сыныпты көрсетеді.
"imshow" функциясын for циклі алғашқы 10 сынақ жинағы фотосуреттерінің әрқайсысын салу үшін пайдаланады. Мақсатты атаулар[y тест[i]] және болжамды сыныптар[i] сәйкесінше кескіннің нақты сыныбы мен болжамды сыныбын анықтау үшін пайдаланылады. Әр сюжеттің тақырыптары осы жіктеулер арқылы көрсетіледі.
Соңында, сюжет 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()
Орау
TensorFlow машиналық оқыту үлгілерін жасау үшін толық және икемді ортаны ұсынады.
Белгілі бір талаптарды қанағаттандыру үшін үлгіні дәл баптау немесе машиналық оқытудағы жаңа әзірлемелерді қосу арқылы модельдің дәлдігін одан әрі арттыруға болады.
TensorFlow және бет-әлпетті тану болашақта қауіпсіздік жүйелері, биометриялық аутентификация және денсаулық сақтау сияқты салаларда көбірек қолданылатын болады. Жақында біз қызықты жаңалықтарды көретін боламыз.
пікір қалдыру