TensorFlow የማሽን መማሪያ ሞዴሎችን ለመፍጠር ሁለገብ መሳሪያ ነው።
በዚህ ልኡክ ጽሁፍ፣ በ TensorFlow፣ በክፍት ምንጭ የማሽን መማሪያ ማእቀፍ የፊት ማወቂያ ስርዓት እንዴት መፍጠር እንደሚቻል እንመለከታለን። የተሳካ የፊት ለይቶ ማወቂያ ስርዓትን ለመፍጠር፣ መረጃን ከመሰብሰብ እና ከማዘጋጀት ጀምሮ ሞዴልን ለማሰልጠን እና ለመገምገም አስፈላጊ ሂደቶችን እንሻገራለን።
በኮድ ቅንጣቢዎች እና በገሃዱ ዓለም ምሳሌዎች የፊት መታወቂያን ለመፍጠር በ TensorFlow የመጀመሪያ እጅ ልምድ ያገኛሉ። በሂደትህ እንድትከታተሉት እንጋብዛለን።
የ “TensorFlow” መግቢያ
TensorFlow ነፃ እና ክፍት ምንጭ ቤተ-መጽሐፍት ነው። የውሂብ ፍሰት እና ሊለያይ የሚችል ፕሮግራሚንግ የሚጠቀም ምሳሌያዊ የሂሳብ መሣሪያ ሳጥን ነው። ጥልቅን ጨምሮ የተለያዩ ተግባራትን ማከናወን ይችላሉ። የነርቭ ኔትወርክ ስልጠና.
TensorFlow ኃይለኛ እና የሚለምደዉ ነው። እንደዚሁም, ለማዳበር እና ለማደግ ጥሩ መሳሪያ ነው የማሽን መማሪያ ሞዴሎችን መዘርጋት. ውስብስብ ሞዴሎችን በበርካታ ንብርብሮች እና በ tensor ስራዎች መገንባት ይችላሉ. እንዲሁም በቤተ-መጽሐፍት ውስጥ አስቀድመው የተገነቡ ሞዴሎች ለተወሰኑ ፍላጎቶች በጥሩ ሁኔታ ማስተካከል ይችላሉ.
በተጨማሪም TensorFlow ትልቅ እና ሰፊ የተጠቃሚ ማህበረሰብ አለው። ስለዚህ ለመድረክ አዲስ ለሆኑ ግለሰቦች የተትረፈረፈ መረጃ እና እገዛ አለ።
TensorFlow ታዋቂ ነው። የማሽን መማር በከፊል ከጫፍ እስከ ጫፍ የስራ ፍሰት ስለሚያቀርብ. ስለዚህ, በቀላሉ ሞዴሎችን መገንባት, ማሰልጠን እና ማሰማራት ይችላሉ. የተወሰኑ ፍላጎቶችን ለማሟላት ሞዴሎችን ለማሻሻል እና ለመለካት መሳሪያዎችን እና ስልቶችን ያቀርባል. ከመረጃ ቅድመ-ሂደት ወደ ሞዴል ማሰማራት ይለያያል።
የፊት ለይቶ ማወቅ ምንድን ነው?
የፊት ለይቶ ማወቅ ሀ የኮምፒተር ራዕይ በፊታቸው ላይ በመመስረት የሰውን ማንነት የሚለይ ተግባር። ይህ ዘዴ እንደ የአይን፣ የአፍንጫ እና የአፍ ቅርጽ እና ገጽታ ያሉ የፊት ገጽታዎችን ይገነዘባል።
እና፣ ተዛማጅን ለመለየት ከታወቁ ፊቶች የውሂብ ጎታ ጋር ያወዳድራቸዋል። የፊት ማወቂያ የደህንነት ስርዓቶች፣ የፎቶ አደረጃጀት እና የባዮሜትሪክ ማረጋገጫን ጨምሮ በርካታ አጠቃቀሞች አሉት።
የፊት ለይቶ ማወቂያ አልጎሪዝም ትክክለኛነት በቅርብ ዓመታት ውስጥ በማሽን መማር ውስጥ በተደረጉ ግኝቶች ምክንያት ጨምሯል።
አስፈላጊ ቤተ-መጻሕፍትን በማስመጣት ላይ
ማንኛውንም ነገር ከመጀመራችን በፊት ለሞዴላችን የሚያስፈልጉትን ቤተ መጻሕፍት ማስመጣት አለብን። ሞዴሉን ለመፍጠር እና ለማሰልጠን Tensorflow (tf) ከውጭ መጥቷል እና ጥቅም ላይ ይውላል። <(ገጽ)
"numpy" የሂሳብ ስሌቶችን እና የውሂብ ሂደትን ያከናውናል.
"matplotlib.pyplot" እንደ plt ከውጪ መጥቶ ጥቅም ላይ ይውላል የውሂብ ገበታ እና ምስላዊ.
በመጨረሻም “የልውው ሰዎችን አምጡ” ከስክለርን ነው የሚመጣው። የውሂብ ስብስቦች እና የፊት ለይቶ ማወቂያ ውሂብ ስብስብን ለመጫን ያገለግላል። ይህ ተግባር የscikit-Learn Toolkit አካል ነው። ለዚህ ተግባር ምስጋና ይግባውና ሌላ የውሂብ ስብስብ መስቀል አላስፈለገንም. ይህ አስቀድሞ በskit-Learn ውስጥ ተገንብቷል።
እና፣ ወደ ሰፊ ክልል መዳረሻ ይሰጥዎታል የውሂብ ስብስቦች ለማሽን መማር መተግበሪያዎች. በዚህ ሁኔታ፣ “በዱር ላይ የተሰየሙ ፊቶች” (LFW) የውሂብ ስብስብን ለማውጣት የ fetch lfw ሰዎችን ዘዴ እንጠቀማለን። የሰዎች ፊት ፎቶዎችን እና አብረዋቸው የሚሄዱ መለያዎችን ያካትታል።
እነዚህ ቤተ-መጻሕፍት የፊታችን ማወቂያ ሞዴልን በመተግበር እና በመገምገም ረገድ ወሳኝ ናቸው።
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
የፊት ማወቂያ ዳታ ስብስብን በቅድሚያ በማዘጋጀት እና በመጫን ላይ
በዚህ ክፍል የፊት ለይቶ ማወቂያ ውሂብን ለማስኬድ የ"fitch 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 ይቀበላል። እና፣ ወደ ስልጠና እና የሙከራ ስብስቦች ይከፋፍላቸዋል። በዚህ ምሳሌ ውስጥ የሙከራ መጠን = 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'])
ሞዴል ስልጠና
ሞዴሉን ለማሰልጠን የ "ተስማሚ" ተግባርን እንጠቀማለን.
የሥልጠና ዳታውን (ኤክስ ባቡር) እና ተዛማጅ መለያዎችን (y ባቡር) እንዲሁም የሚሠሩትን የዘመናት ብዛት (ድግግሞሾች) ቁጥር 10 አድርገን እናቀርባለን። የተገመቱ እና እውነተኛ መለያዎች) እና የስልጠና መረጃን ትክክለኛነት ያሻሽላሉ.
model.fit(X_train, y_train, epochs=10)
ሞዴል ግምገማ
አሁን በፈተናው መረጃ ላይ የሰለጠነውን ሞዴል መገምገም አለብን. የፈተናውን ኪሳራ እንጠቀማለን እና የፈተና ትክክለኛነት የአምሳያው አፈጻጸም ለመገምገም ጥቅም ላይ ይውላሉ. በሙከራ ውሂብ X ፈተና እና በፈተና መለያዎች y ፈተና ላይ፣ “ሞዴሉን ግምገማ ተግባር” መደወል አለብን።
ተግባሩ የፈተናውን ትክክለኛነት እና የፈተና ኪሳራ ያመጣል. ተለዋዋጮቹ ኪሳራን ይፈትሻሉ እና ትክክለኛነትን ይፈትሹ ፣ በቅደም ተከተል ፣ እነዚህን እሴቶች ይይዛሉ። በመጨረሻም የፈተናውን ትክክለኛነት ለማውጣት የ "ህትመት" ተግባርን እንጠቀማለን.
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" ተግባር በ 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 እና የፊት ለይቶ ማወቂያ እንደ የደህንነት ስርዓቶች፣ ባዮሜትሪክ ማረጋገጫ እና የጤና እንክብካቤ ባሉ ኢንዱስትሪዎች ውስጥ እየጨመረ ጥቅም ላይ ሊውል ይችላል። በቅርቡ አስደናቂ ፈጠራዎችን እናያለን።
መልስ ይስጡ