TensorFlow යනු යන්ත්ර ඉගෙනුම් ආකෘති නිර්මාණය කිරීමට ඇති බහුකාර්ය මෙවලමකි.
මෙම ලිපියෙන්, අපි විවෘත මූලාශ්ර යන්ත්ර ඉගෙනුම් රාමුවක් වන TensorFlow සමඟ මුහුණු හඳුනාගැනීමේ පද්ධතියක් නිර්මාණය කරන්නේ කෙසේදැයි බලමු. අපි සාර්ථක මුහුණු හඳුනාගැනීමේ පද්ධතියක් නිර්මාණය කිරීමේදී දත්ත රැස්කිරීමේ සහ සැකසීමේ සිට ආකෘතියක් පුහුණු කිරීම සහ තක්සේරු කිරීම දක්වා අත්යවශ්ය ක්රියාවලීන් හරහා යන්නෙමු.
කේත කොටස් සහ සැබෑ ලෝක උදාහරණ ආධාරයෙන් මුහුණ හඳුනාගැනීම් නිර්මාණය කිරීමට ඔබට TensorFlow සමඟ පළමු අත්දැකීම ලැබෙනු ඇත. අපි ඉදිරියට යන විට අනුගමනය කිරීමට ඔබව සාදරයෙන් පිළිගනිමු.
ටෙන්සර්ෆ්ලෝ හැඳින්වීම
TensorFlow යනු නිදහස් හා විවෘත මූලාශ්ර පුස්තකාලයකි. එය දත්ත ප්රවාහය සහ වෙනස් කළ හැකි ක්රමලේඛනය භාවිතා කරන සංකේතාත්මක ගණිත මෙවලම් පෙට්ටියකි. ගැඹුර ඇතුළුව ඔබට එය සමඟ විවිධ කාර්යයන් හැසිරවිය හැකිය ස්නායු ජාලය පුහුණුව.
TensorFlow බලවත් සහ අනුවර්තනය විය හැකිය. ඒ හා සමානව, එය සංවර්ධනය සඳහා විශිෂ්ට මෙවලමක් වේ යන්ත්ර ඉගෙනුම් ආකෘති යෙදවීම. ඔබට ස්ථර කිහිපයක් සහ ටෙන්සර් මෙහෙයුම් සමඟ සංකීර්ණ මාදිලි ගොඩනගා ගත හැකිය. එසේම, පුස්තකාලයේ පූර්ව-සාදන ලද ආකෘති නිශ්චිත අවශ්යතා සඳහා මනාව සකස් කළ හැකිය.
තවද, TensorFlow සතුව විශාල සහ පුළුල් වන පරිශීලක ප්රජාවක් ඇත. එබැවින්, වේදිකාවට අලුතින් පැමිණෙන පුද්ගලයන් සඳහා තොරතුරු සහ උපකාර රාශියක් ඇත.
TensorFlow සඳහා ජනප්රියයි යන්ත්ර ඉගෙනීම එය අවසානයේ සිට අවසානය දක්වා වැඩ ප්රවාහයක් සපයන බැවිනි. එබැවින්, ඔබට පහසුවෙන් ආකෘති තැනීමට, පුහුණු කිරීමට සහ යෙදවීමට හැකිය. එය විශේෂිත ඉල්ලීම්වලට සරිලන පරිදි ආකෘති වැඩිදියුණු කිරීම සහ පරිමාණය කිරීම සඳහා මෙවලම් සහ උපාය මාර්ග සපයයි. එය දත්ත පෙර-සැකසුම් කිරීමේ සිට ආකෘති යෙදවීම දක්වා වෙනස් වේ.
Face Recognition යනු කුමක්ද?
මුහුණු හඳුනාගැනීම යනු a පරිගණක දැක්ම පුද්ගලයෙකුගේ මුහුණ මත පදනම්ව හඳුනාගැනීමේ කාර්යය. මෙම තාක්ෂණය ඇස්, නාසය සහ මුඛයේ හැඩය සහ වයනය වැනි මුහුණේ ලක්ෂණ හඳුනා ගනී.
තවද, එය ගැළපීමක් හඳුනා ගැනීමට දන්නා මුහුණුවල දත්ත ගබඩාවකට ඒවා සංසන්දනය කරයි. ආරක්ෂක පද්ධති, ඡායාරූප සංවිධානය, සහ ජෛවමිතික සත්යාපනය ඇතුළුව මුහුණු හඳුනාගැනීමේ භාවිතයන් කිහිපයක් ඇත.
යන්ත්ර ඉගෙනීමේ ප්රගතිය හේතුවෙන් මුහුණු හඳුනාගැනීමේ ඇල්ගොරිතමවල නිරවද්යතාවය මෑත වසරවලදී සැලකිය යුතු ලෙස වැඩි වී ඇත.
අවශ්ය පුස්තකාල ආනයනය කිරීම
ඕනෑම දෙයක් ආරම්භ කිරීමට පෙර, අපගේ ආකෘතියට අවශ්ය පුස්තකාල ආනයනය කළ යුතුය. Tensorflow (tf) ආනයනය කර ආකෘතිය නිර්මාණය කිරීමට සහ පුහුණු කිරීමට භාවිතා කරයි. <(p>
"numpy" ගණිතමය ගණනය කිරීම් සහ දත්ත සැකසීම සිදු කරයි.
"matplotlib.pyplot" plt ලෙස ආනයනය කර භාවිතා කරනු ලැබේ දත්ත ප්රස්ථාර සහ දෘශ්යකරණය.
අවසාන වශයෙන්, "fetch lfw people" sklearn වෙතින් ආනයනය කරනු ලැබේ. දත්ත කට්ටල සහ මුහුණු හඳුනාගැනීමේ දත්ත කට්ටලය පූරණය කිරීමට භාවිතා කරයි. මෙම කාර්යය scikit-Learn මෙවලම් කට්ටලයේ කොටසකි. මෙම කාර්යයට ස්තූතියි අපට වෙනත් දත්ත කට්ටලයක් උඩුගත කිරීමට සිදු නොවීය. මෙය දැනටමත් ස්කිට්-ලර්න් හි ගොඩනගා ඇත.
තවද, එය ඔබට පුළුල් පරාසයක ප්රවේශය ලබා දෙයි යන්ත්ර ඉගෙනීම සඳහා දත්ත කට්ටල අයදුම්පත්. මෙම අවස්ථාවෙහිදී, අපි "Labeled Faces in the Wild" (LFW) දත්ත කට්ටලය ලබා ගැනීමට Fetch lfw people ක්රමය භාවිතා කරමු. එය පුද්ගලයන්ගේ මුහුණුවල ඡායාරූප මෙන්ම ඔවුන් සමඟ යන ලේබල් වලින් සමන්විත වේ.
අපගේ මුහුණු හඳුනාගැනීමේ ආකෘතිය ක්රියාත්මක කිරීමේදී සහ ඇගයීමේදී මෙම පුස්තකාල ඉතා වැදගත් වේ.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
මුහුණු හඳුනාගැනීමේ දත්ත කට්ටලය පෙර සැකසීම සහ පූරණය කිරීම
මෙම කොටසේදී, අපි මුහුණු හඳුනාගැනීමේ දත්ත පෙර සැකසීමට "fetch lfw people" ශ්රිතය භාවිතා කරමු. පළමුව, අපි Fetch lfw people භාවිතා කරන්නේ “min faces per person=60” විකල්පය සමඟයි. මෙයින් ඇඟවෙන්නේ අපට දත්ත කට්ටලයට ඇතුළත් කිරීමට අවශ්ය වන්නේ අවම වශයෙන් ඡායාරූප 60ක්වත් ඇති පුද්ගලයන් බවයි. එබැවින්, අපගේ ආකෘතියට ඉගෙන ගැනීමට ප්රමාණවත් දත්ත ඇති බව අපි සහතික කරමු. එසේම, මෙය අධික ලෙස සවි කිරීමේ අවදානම අඩු කරයි.
මුහුණු වස්තුවෙන් දත්ත සහ ලේබල පසුව උපුටාගෙන X සහ y විචල්යයන් වෙත පවරනු ලැබේ. X hol.
පෙර සැකසූ දත්ත සහ ලේබල භාවිතයෙන් අපගේ මුහුණු හඳුනාගැනීමේ ආකෘතිය පුහුණු කිරීමට අපි දැන් සූදානම්.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
බෙදීම් පුහුණු සහ පරීක්ෂණ කට්ටල
මෙම පියවරේදී, අපි අපගේ මුහුණු හඳුනාගැනීමේ දත්ත කට්ටලය sklearn.model තේරීමේ සිට දුම්රිය පරීක්ෂණ බෙදීමේ ක්රමය භාවිතා කර කොටස් දෙකකට බෙදන්නෙමු. මෙම බෙදීමේ අරමුණ පුහුණුවීමෙන් පසු අපගේ ආකෘතියේ කාර්ය සාධනය තක්සේරු කිරීමයි
දුම්රිය පරීක්ෂණ බෙදීම් ශ්රිතය දත්ත X සහ ලේබල් y ලෙස ආදාන ලෙස පිළිගනී. තවද, එය ඔවුන් පුහුණු සහ පරීක්ෂණ කට්ටලවලට බෙදා ඇත. අපි මෙම උදාහරණයේ test size=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')
])
ආකෘතිය සම්පාදනය කිරීම
ආකෘතිය "compile" ශ්රිතය භාවිතයෙන් සම්පාදනය කර ඇත. අපි පුහුණුව සඳහා ආකෘතිය සකස් කළ යුතුයි. එබැවින්, අපි ආකෘතිය තක්සේරු කිරීමට භාවිතා කරන ප්රශස්තකරණය, පාඩු ශ්රිතය සහ ප්රමිතික නිර්වචනය කරන්නෙමු.
පුහුණුව අතරතුර, ආකෘතියේ පරාමිතීන් වෙනස් කිරීම සඳහා ප්රශස්තකාරකය භාරව සිටී. "ඇඩම්" ප්රශස්තකරණය යනු ජනප්රිය ගැඹුරු ඉගෙනුම් ප්රශස්තකරණ තාක්ෂණයකි.
පුහුණු දත්ත මත ආකෘතියේ කාර්ය සාධනය තක්සේරු කිරීමට අපි පාඩු ශ්රිතය භාවිතා කරමු. ඉලක්ක ලේබල තනි-උණුසුම් කේතනය කරන ලද දෛශිකවලට වඩා රූපයේ පන්තිය පිළිබිඹු කරන පූර්ණ සංඛ්යා වන බැවින්, “විරල වර්ගීකරණ හරස් අන්තර” නැතිවීමේ ශ්රිතය හිතකර වේ.
අවසාන වශයෙන්, අපි ආකෘතිය තක්සේරු කිරීම සඳහා ප්රමිතික නිර්වචනය කරමු, මෙම නඩුවේදී, "නිරවද්යතාව".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
ආදර්ශ පුහුණුව
ආකෘතිය පුහුණු කිරීම සඳහා අපි "ෆිට්" ශ්රිතය භාවිතා කරමු.
අපි පුහුණු දත්ත (X දුම්රිය) සහ අදාළ ලේබල (y දුම්රිය) සපයන්නෙමු, මෙන්ම යුග ගණන (පුනරාවර්තන) 10 ලෙස ක්රියාත්මක කරන්නෙමු. පුහුණු ක්රියා පටිපාටිය අලාභයක් අඩු කිරීම සඳහා ආදර්ශ බර වෙනස් කරයි ( අතර වෙනස අනාවැකි සහ සැබෑ ලේබල්) සහ පුහුණු දත්තවල නිරවද්යතාවය වැඩි දියුණු කිරීම.
model.fit(X_train, y_train, epochs=10)
ආදර්ශ ඇගයීම
දැන්, අපි පරීක්ෂණ දත්ත මත පුහුණු ආකෘතිය තක්සේරු කිරීමට අවශ්ය වේ. අපි පරීක්ෂණ අලාභය භාවිතා කරන අතර මාදිලියේ කාර්ය සාධනය තක්සේරු කිරීමට පරීක්ෂණ නිරවද්යතාවය භාවිතා කරයි. පරීක්ෂණ දත්ත X පරීක්ෂණය සහ පරීක්ෂණ ලේබල y පරීක්ෂණය මත, අපි "the model.evaluate function" ඇමතීමට අවශ්යයි.
ශ්රිතය පරීක්ෂණ නිරවද්යතාවය සහ පරීක්ෂණ අලාභය ප්රතිදානය කරයි. විචල්ය පරීක්ෂණ අලාභය සහ පරීක්ෂණ නිරවද්යතාවය පිළිවෙලින්, මෙම අගයන් අඩංගු වේ. අවසාන වශයෙන්, පරීක්ෂණ නිරවද්යතාවය ප්රතිදානය කිරීමට අපි "මුද්රණය" ශ්රිතය භාවිතා කරමු.
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 loop විසින් පළමු පරීක්ෂණ කට්ටල ඡායාරූප 10 බැගින් සැලසුම් කිරීමට භාවිතා කරයි. ඉලක්ක නාම[y test[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 සහ මුහුණු හඳුනාගැනීම වැඩි වැඩියෙන් භාවිතා වනු ඇත. අපි ළඟදීම ආකර්ෂණීය නවෝත්පාදන දකිනු ඇත.
ඔබමයි