டென்சர்ஃப்ளோ என்பது இயந்திர கற்றல் மாதிரிகளை உருவாக்குவதற்கான ஒரு பல்துறை கருவியாகும்.
இந்த இடுகையில், ஒரு திறந்த மூல இயந்திர கற்றல் கட்டமைப்பான டென்சர்ஃப்ளோ மூலம் முகம் அடையாளம் காணும் அமைப்பை எவ்வாறு உருவாக்குவது என்பதைப் பார்ப்போம். ஒரு வெற்றிகரமான முகத்தை அடையாளம் காணும் முறையை உருவாக்குவதில், தரவைச் சேகரிப்பது மற்றும் தயாரிப்பது முதல் ஒரு மாதிரியைப் பயிற்றுவிப்பது மற்றும் மதிப்பிடுவது வரையிலான அத்தியாவசிய செயல்முறைகளை நாங்கள் மேற்கொள்வோம்.
குறியீடு துணுக்குகள் மற்றும் நிஜ உலக உதாரணங்களின் உதவியுடன் முக அங்கீகாரத்தை உருவாக்க, டென்சர்ஃப்ளோவுடன் முதல் அனுபவத்தைப் பெறுவீர்கள். நாங்கள் தொடரும்போது உங்களைப் பின்தொடர வரவேற்கிறோம்.
டென்சர்ஃப்ளோ அறிமுகம்
TensorFlow ஒரு இலவச மற்றும் திறந்த மூல நூலகம். இது தரவுப்பாய்வு மற்றும் வேறுபட்ட நிரலாக்கத்தைப் பயன்படுத்தும் குறியீட்டு கணித கருவிப்பெட்டியாகும். ஆழம் உட்பட பல்வேறு பணிகளை நீங்கள் கையாளலாம் நரம்பு நெட்வொர்க் பயிற்சி.
TensorFlow சக்தி வாய்ந்தது மற்றும் மாற்றியமைக்கக்கூடியது. அதேபோல், இது ஒரு சிறந்த கருவியாகும் இயந்திர கற்றல் மாதிரிகளை பயன்படுத்துதல். நீங்கள் பல அடுக்குகள் மற்றும் டென்சர் செயல்பாடுகளுடன் சிக்கலான மாதிரிகளை உருவாக்கலாம். மேலும், நூலகத்தில் உள்ள முன் கட்டப்பட்ட மாதிரிகள் குறிப்பிட்ட தேவைகளுக்கு நன்றாக வடிவமைக்கப்படலாம்.
மேலும், TensorFlow ஒரு பெரிய மற்றும் விரிவடையும் பயனர் சமூகத்தைக் கொண்டுள்ளது. எனவே, தளத்திற்கு புதிய நபர்களுக்கு ஏராளமான தகவல்கள் மற்றும் உதவிகள் உள்ளன.
TensorFlow பிரபலமானது இயந்திர கற்றல் ஒரு பகுதியாக ஏனெனில் இது ஒரு இறுதி முதல் இறுதி வரையிலான பணிப்பாய்வுகளை வழங்குகிறது. எனவே, நீங்கள் எளிதாக மாதிரிகளை உருவாக்கலாம், பயிற்சி செய்யலாம் மற்றும் வரிசைப்படுத்தலாம். குறிப்பிட்ட கோரிக்கைகளுக்கு ஏற்ற மாதிரிகளை மேம்படுத்துவதற்கும் அளவிடுவதற்கும் கருவிகள் மற்றும் உத்திகளை இது வழங்குகிறது. இது தரவு முன் செயலாக்கத்திலிருந்து மாதிரி வரிசைப்படுத்தல் வரை மாறுபடும்.
முக அங்கீகாரம் என்றால் என்ன?
முக அங்கீகாரம் என்பது ஏ கணினி பார்வை ஒரு நபரின் முகத்தை அடிப்படையாகக் கொண்டு அவரது அடையாளத்தை அடையாளம் காணும் பணி. இந்த நுட்பம் கண்கள், மூக்கு மற்றும் வாயின் வடிவம் மற்றும் அமைப்பு போன்ற முகப் பண்புகளை அங்கீகரிக்கிறது.
மேலும், இது ஒரு பொருத்தத்தை அடையாளம் காண தெரிந்த முகங்களின் தரவுத்தளத்துடன் அவற்றை ஒப்பிடுகிறது. பாதுகாப்பு அமைப்புகள், புகைப்பட அமைப்பு மற்றும் பயோமெட்ரிக் அங்கீகாரம் உள்ளிட்ட பல பயன்பாடுகளை முக அங்கீகாரம் கொண்டுள்ளது.
மெஷின் லேர்னிங்கில் ஏற்பட்ட முன்னேற்றங்களின் விளைவாக சமீபத்திய ஆண்டுகளில் முகம் அடையாளம் காணும் அல்காரிதம்களின் துல்லியம் கணிசமாக அதிகரித்துள்ளது.
தேவையான நூலகங்களை இறக்குமதி செய்தல்
எதையும் தொடங்குவதற்கு முன், நமது மாதிரிக்குத் தேவையான நூலகங்களை இறக்குமதி செய்ய வேண்டும். டென்சர்ஃப்ளோ (tf) இறக்குமதி செய்யப்பட்டு மாதிரியை உருவாக்கவும் பயிற்சி செய்யவும் பயன்படுத்தப்படுகிறது. <(p>
"numpy" கணித கணக்கீடுகள் மற்றும் தரவு செயலாக்கத்தை செய்கிறது.
"matplotlib.pyplot" plt ஆக இறக்குமதி செய்யப்பட்டு பயன்படுத்தப்படுகிறது தரவு விளக்கப்படம் மற்றும் காட்சிப்படுத்தல்.
இறுதியாக, "fetch lfw people" sklearn இலிருந்து இறக்குமதி செய்யப்படுகிறது. தரவுத்தொகுப்புகள் மற்றும் முக அங்கீகார தரவுத்தொகுப்பை ஏற்ற பயன்படுகிறது. இந்த செயல்பாடு ஸ்கிகிட்-லேர்ன் டூல்கிட்டின் ஒரு பகுதியாகும். இந்தச் செயல்பாட்டிற்கு நன்றி, நாங்கள் மற்றொரு தரவுத்தொகுப்பைப் பதிவேற்ற வேண்டியதில்லை. இது ஏற்கனவே ஸ்கிட்-லேர்னில் கட்டமைக்கப்பட்டுள்ளது.
மேலும், இது பரந்த அளவிலான அணுகலை உங்களுக்கு வழங்குகிறது இயந்திர கற்றலுக்கான தரவுத்தொகுப்புகள் பயன்பாடுகள். இந்தச் சூழ்நிலையில், "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” செயல்பாட்டைப் பயன்படுத்துகிறோம். முதலில், "min faces per person=60" என்ற விருப்பத்துடன் Fetch lfw நபர்களைப் பயன்படுத்துகிறோம். குறைந்தபட்சம் 60 புகைப்படங்களைக் கொண்ட நபர்களை மட்டுமே தரவுத்தொகுப்பில் சேர்க்க விரும்புகிறோம் என்பதை இது குறிக்கிறது. எனவே, எங்கள் மாடலில் கற்றுக்கொள்ள போதுமான தரவு இருப்பதை உறுதிசெய்கிறோம். மேலும், இது அதிகப்படியான ஆபத்தை குறைக்கிறது.
முகங்கள் பொருளிலிருந்து தரவு மற்றும் லேபிள்கள் பின்னர் பிரித்தெடுக்கப்பட்டு X மற்றும் y மாறிகளுக்கு ஒதுக்கப்படும். எக்ஸ் ஹோல்.
முன்பே செயலாக்கப்பட்ட தரவு மற்றும் லேபிள்களைப் பயன்படுத்தி எங்கள் முக அங்கீகார மாதிரியைப் பயிற்றுவிக்க நாங்கள் இப்போது தயாராக உள்ளோம்.
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'])
மாதிரி பயிற்சி
மாதிரியைப் பயிற்றுவிக்க "பொருத்தம்" செயல்பாட்டைப் பயன்படுத்துவோம்.
பயிற்சித் தரவு (எக்ஸ் ரயில்) மற்றும் தொடர்புடைய லேபிள்கள் (ஒய் ரயில்) ஆகியவற்றை வழங்குவோம், அத்துடன் எபோச்களின் எண்ணிக்கையை (மீண்டும்) 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 சோதனை[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 மற்றும் முக அங்கீகாரம் அதிகளவில் பயன்படுத்தப்படும். கவர்ச்சிகரமான புதுமைகளை விரைவில் காண்போம்.
ஒரு பதில் விடவும்