التعلم العميقالمزيد من مقالات التعلم العميق......المزيد من مقالات الرؤية الحاسوبية.....مقالات التعلم العميقمقالات الرؤية الحاسوبية

كيف تبدأ مع التعلم العميق للرؤية الحاسوبية (كورس مكثف لمدة 7 أيام)

أحضر طرق التعلم العميق لمشروع الرؤية الحاسوبية الخاص بك في 7 أيام

اقرأ في هذا المقال
  • لمن هذا الكورس المكثف؟
  • نظرة عامة على هذا الكورس المكثف
  • الدرس الأول: التعلم العميق والرؤية الحاسوبية
  • الدرس الثاني: تحضير بيانات الصورة
  • الدرس الثالث: الشبكات العصبية التلافيفية
  • الدرس الرابع: تصنيف الصور
  • الدرس الخامس: تدريب نموذج تصنيف الصور
  • الدرس السادس: زيادة الصورة
  • الدرس السابع: اكتشاف الوجه
  • الملخص

نحن غارقون في الصور الرقمية من الصور ومقاطع الفيديو و Instagram و YouTube وتدفق الفيديو المباشر بشكل متزايد.

يعد العمل مع بيانات الصورة أمرًا صعبًا لأنه يتطلب الاعتماد على المعرفة من مجالات متنوعة مثل معالجة الإشارات الرقمية، والتعلم الآلي، والأساليب الإحصائية، وفي هذه الأيام، التعلم العميق.

تتفوق طرق التعلم العميق على الطرق الكلاسيكية والإحصائية في بعض مشكلات الرؤية الحاسوبية الصعبة بنماذج مفردة وأبسط.

في هذه الدورة التدريبية المكثفة، سوف تكتشف كيف يمكنك البدء وتطور بثقة التعلم العميق لمشاكل الرؤية الحاسوبية باستخدام بايثون في سبعة أيام.

ملاحظة: هذه وظيفة كبيرة ومهمة. قد ترغب في وضع إشارة مرجعية عليه.

هيا بنا نبدأ.

لمن هذا الكورس المكثف؟

قبل أن نبدأ، لنتأكد من أنك في المكان الصحيح.

توفر القائمة أدناه بعض الإرشادات العامة لمن تم تصميم هذه الدورة التدريبية.

لا داعي للذعر إذا لم تطابق هذه النقاط تمامًا؛ قد تحتاج فقط للتنظيف في منطقة أو أخرى لمواكبة ذلك.

تحتاج الى ان تعرف:

  • أنت بحاجة إلى معرفة طريقك حول أساسيات بايثون و NumPy و Keras للتعلم العميق.

لا تحتاج لأن تكون:

  • لست بحاجة إلى أن تكون بارعًا في الرياضيات!
  • لست بحاجة إلى أن تكون خبيرًا في التعلم العميق!
  • لست بحاجة إلى أن تكون باحثًا في الرؤية الحاسوبية!

ستأخذك هذه الدورة التدريبية المكثفة من مطور يعرف القليل من التعلم الآلي إلى مطور يمكنه جلب أساليب التعلم العميق لمشروع الرؤية الحاسوبية الخاص بك.

ملاحظة: تفترض هذه الدورة التدريبية السريعة أن لديك بيئة عمل بايثون 2 أو 3و SciPy مع تثبيت على الأقل NumPy وPandas و scikit-Learn و Keras 2. إذا كنت بحاجة إلى مساعدة في بيئتك، فيمكنك اتباع البرنامج التعليمي خطوة بخطوة هنا:

نظرة عامة على الكورس المكثف

تنقسم هذه الدورة التدريبية المكثفة crash course إلى سبعة دروس.

يمكنك إكمال درس واحد يوميًا (موصى به) أو إكمال جميع الدروس في يوم واحد (المتشددين). يعتمد الأمر حقًا على الوقت المتاح لديك ومستوى حماسك.

فيما يلي الدروس السبعة التي ستساعدك على البدء والإنتاجية مع التعلم العميق لرؤية الكمبيوتر في بايثون:

  • الدرس الأول: التعلم العميق Deep Learning والرؤية الحاسوبية Computer Vision.
  • الدرس الثاني: تحضير بيانات الصورة Preparing Image Data.
  • الدرس الثالث: الشبكات العصبية التلافيفية Convolutional Neural Networks.
  • الدرس الرابع: تصنيف الصور Image Classification.
  • الدرس الخامس: تدريب نموذج تصنيف الصور Train Image Classification Model.
  • الدرس السادس: زيادة الصورة Image Augmentation.
  • الدرس السابع: كشف الوجه Face Detection.

يمكن أن يأخذك كل درس من 60 ثانية إلى 30 دقيقة. خذ وقتك وأكمل الدروس بالوتيرة التي تناسبك. اطرح الأسئلة وحتى انشر النتائج في التعليقات أدناه.

قد تتوقع الدروس أن تنطلق وتكتشف كيفية القيام بالأشياء. سأقدم لك تلميحات، ولكن جزءًا من كل درس هو إجبارك على معرفة المكان الذي تذهب إليه للبحث عن المساعدة حول التعلم العميق والرؤية الحاسوبية وأفضل الأدوات في بايثون (تلميح: لدي جميع الإجابات في هذه المدونة، ما عليك سوى استخدام مربع البحث).

انشر نتائجك في التعليقات؛ سأشجعك!

أصبر؛ لا تستسلم.

الدرس الأول: التعلم العميق والرؤية الحاسوبية

في هذا الدرس، سوف تكتشف الوعد بأساليب التعلم العميق للرؤية الحاسوبية.

الرؤية الحاسوبية

يتم تعريف الرؤية الحاسوبية، أو CV باختصار، على نطاق واسع على أنها مساعدة أجهزة الحاسوب على “رؤية” أو استخراج المعنى من الصور الرقمية مثل الصور الفوتوغرافية ومقاطع الفيديو.

يعمل الباحثون على مشكلة مساعدة الحواسيب على الرؤية منذ أكثر من 50 عامًا، وتحققت بعض النجاحات الكبيرة، مثل اكتشاف الوجه المتوفر في الكاميرات الحديثة والهواتف الذكية.

لم يتم حل مشكلة فهم الصور، وقد لا يتم حلها أبدًا. هذا في المقام الأول لأن العالم معقد وفوضوي. هناك القليل من القواعد. ومع ذلك يمكننا بسهولة وبدون عناء التعرف على الأشياء والأشخاص والسياق.

التعلم العميق

التعلم العميق هو حقل فرعي من التعلم الآلي يهتم بالخوارزميات المستوحاة من بُنية ووظيفة الدماغ تسمى الشبكات العصبية الاصطناعية.

تتمثل خاصية التعلم العميق في أن أداء هذا النوع من النماذج يتحسن من خلال تدريبه بمزيد من الأمثلة وزيادة عمقه أو قدرته التمثيلية.

بالإضافة إلى قابلية التوسع scalability، هناك فائدة أخرى غالبًا ما يتم الاستشهاد بها لنماذج التعلم العميق وهي قدرتها على أداء الاستخراج التلقائي للميزات من البيانات الأولية، والتي تسمى أيضًا تعلم الميزات feature learning.

وعد التعلم العميق للرؤية الحاسوبية

تحظى طرق التعلم العميق بشعبية في الرؤية الحاسوبية، ويرجع ذلك أساسًا إلى أنها تفي بوعدها.

كانت بعض أولى العروض الكبيرة لقوة التعلم العميق في الرؤية الحاسوبية، وتحديدًا تصنيف الصور. في الآونة الأخيرة في اكتشاف الأشياء والتعرف على الوجوه.

الوعود الرئيسية الثلاثة للتعلم العميق للرؤية الحاسوبية هي كما يلي:

  • الوعد بميزة التعلم The Promise of Feature Learning. وهذا يعني أن أساليب التعلم العميق يمكن أن تتعلم تلقائيًا الميزات من بيانات الصورة التي يتطلبها النموذج، بدلاً من طلب أن تكون أجهزة الكشف عن الميزات مصنوعة يدويًا ويتم تحديدها بواسطة خبير.
  • الوعد بالتحسين المستمر The Promise of Continued Improvement. أي أن أداء التعلم العميق في الرؤية الحاسوبية يعتمد على نتائج حقيقية ويبدو أن التحسينات مستمرة وربما تتسارع.
  • وعد النماذج الشاملة The Promise of End-to-End Models. وهذا يعني أن نماذج التعلم العميق الشاملة من طرف إلى طرف يمكن أن تتناسب مع مجموعات بيانات كبيرة من الصور أو مقاطع الفيديو التي تقدم نهجًا أكثر عمومية وأفضل أداءً.

لم يتم “حل” الرؤية الحاسوبية ولكن يلزم التعلم العميق للوصول بك إلى أحدث ما توصلت إليه التكنولوجيا في العديد من المشكلات الصعبة في هذا المجال.

مهمتك

في هذا الدرس، يجب عليك البحث وإدراج خمس تطبيقات رائعة لطرق التعلم العميق في مجال الرؤية الحاسوبية. نقاط المكافأة إذا كان بإمكانك الارتباط بورقة بحث توضح المثال.

أضف إجابتك في التعليقات أدناه. أود أن أرى ما تكتشفه.

في الدرس التالي، سوف تكتشف كيفية تحضير بيانات الصورة للنمذجة.

الدرس الثاني: تحضير بيانات الصورة

في هذا الدرس، سوف تكتشف كيفية تحضير بيانات الصورة للنمذجة.

تتكون الصور من مصفوفات قيم البكسل.

غالبًا ما تكون قيم البكسل عبارة عن أعداد صحيحة بدون إشارة في النطاق بين 0 و255. على الرغم من أنه يمكن تقديم قيم البكسل هذه مباشرةً إلى نماذج الشبكة العصبية بتنسيقها الأولي، إلا أن هذا يمكن أن يؤدي إلى تحديات أثناء النمذجة، مثل التدريب الأبطأ من المتوقع للنموذج.

بدلاً من ذلك، يمكن أن تكون هناك فائدة كبيرة في إعداد قيم بكسل الصورة قبل النمذجة، مثل تغيير قيم البكسل ببساطة إلى النطاق 0-1 لتوسيط القيم وحتى توحيدها.

يسمى هذا بالتسوية normalization ويمكن إجراؤه مباشرة على صورة محملة. يستخدم المثال أدناه مكتبة PIL (مكتبة معالجة الصور القياسية في بايثون) لتحميل صورة وتسوية قيم البكسل الخاصة بها.

أولاً، تأكد من تثبيت مكتبة Pillow؛ يتم تثبيته مع معظم بيئات SciPy، ولكن يمكنك معرفة المزيد هنا:

بعد ذلك، قم بتنزيل صورة لشاطئ بوندي في سيدني بأستراليا، التقطتها إيزابيل شولز وتم إصدارها بموجب ترخيص مسموح به. احفظ الصورة في دليل العمل الحالي باسم الملف “bondi_beach.jpg”.

بعد ذلك، يمكننا استخدام مكتبة Pillow لتحميل الصورة، وتأكيد قيم الحد الأدنى min والحد الأقصى max للبكسل، وتسوية القيم، وتأكيد إجراء التسوية.

# example of pixel normalization
from numpy import asarray
from PIL import Image
# load image
image = Image.open('bondi_beach.jpg')
pixels = asarray(image)
# confirm pixel range is 0-255
print('Data Type: %s' % pixels.dtype)
print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max()))
# convert from integers to floats
pixels = pixels.astype('float32')
# normalize to the range 0-1
pixels /= 255.0
# confirm the normalization
print('Min: %.3f, Max: %.3f' % (pixels.min(), pixels.max()))

مهمتك

مهمتك في هذا الدرس هي تشغيل كود المثال على الصورة المقدمة والإبلاغ عن قيم الحد الأدنى والحد الأقصى للبكسل قبل وبعد التسوية.

بالنسبة إلى نقاط المكافأة، يمكنك تحديث المثال لتوحيد standardize قيم البكسل.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تكتشفه.

في الدرس التالي، سوف تكتشف معلومات حول نماذج الشبكات العصبية التلافيفية.

الدرس الثالث: الشبكات العصبية التلافيفية

في هذا الدرس، سوف تكتشف كيفية إنشاء شبكة عصبية تلافيفية Convolutional Neural Network باستخدام طبقة تلافيفية convolutional layer وطبقة تجميع pooling layer وطبقة إخراج متصلة بالكامل fully connected output layer.

طبقات تلافيفية

الالتفاف convolution هو تطبيق بسيط لمرشح filter على إدخال ينتج عنه تنشيط. يؤدي التطبيق المتكرر لنفس المرشح على المدخلات في خريطة التنشيطات التي تسمى خريطة المعالم feature map، والتي تشير إلى مواقع وقوة الميزة المكتشفة في أحد المدخلات، مثل صورة.

يمكن إنشاء طبقة تلافيفية عن طريق تحديد كل من عدد المرشحات المراد تعلمها والحجم الثابت لكل مرشح، والذي يُسمى غالبًا شكل النواة kernel shape.

طبقات التجميع

توفر طبقات التجميع طريقة لاختزال downsampling خرائط المعالم عن طريق تلخيص وجود المعالم في تصحيحات خريطة المعالم.

تجميع الحد الأقصى Maximum pooling، أو max pooling، هو عملية تجميع تحسب القيمة القصوى أو الأكبر في كل تصحيح لكل خريطة معالم.

طبقة المصنف

بمجرد استخراج الميزات، يمكن تفسيرها واستخدامها لعمل تنبؤ prediction، مثل تصنيف نوع الكائن في الصورة.

يمكن تحقيق ذلك من خلال تسوية خرائط المعالم ثنائية الأبعاد أولاً، ثم إضافة طبقة إخراج متصلة بالكامل. بالنسبة لمشكلة التصنيف الثنائي binary classification، سيكون لطبقة المخرجات عقدة واحدة تتنبأ بقيمة بين 0 و 1 للفئتين.

الشبكة العصبية التلافيفية

ينشئ المثال أدناه شبكة عصبية تلافيفية تتوقع صورًا بتدرج الرمادي بحجم مربع 256 × 256 بكسل، مع طبقة تلافيفية واحدة بها 32 مرشحًا، كل منها بحجم 3 × 3 بكسل، وطبقة تجميع قصوى، وطبقة إخراج تصنيف ثنائي.

# cnn with single convolutional, pooling and output layer
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
# create model
model = Sequential()
# add convolutional layer
model.add(Conv2D(32, (3,3), input_shape=(256, 256, 1)))
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.summary()

مهمتك

مهمتك في هذا الدرس هي تشغيل المثال ووصف كيفية تغيير شكل صورة الإدخال بواسطة الطبقات التلافيفية والتجميع.

للحصول على نقاط إضافية، يمكنك محاولة إضافة المزيد من الطبقات التلافيفية أو التجميع ووصف تأثيرها على الصورة أثناء تدفقها عبر النموذج.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تكتشفه.

في الدرس التالي، ستتعلم كيفية استخدام شبكة عصبية تلافيفية عميقة لتصنيف صور الأشياء.

الدرس الرابع: تصنيف الصور

في هذا الدرس، سوف تكتشف كيفية استخدام نموذج مدرب مسبقًا لتصنيف صور الأشياء.

قد تستغرق نماذج الشبكة العصبية التلافيفية العميقة أيامًا أو حتى أسابيع للتدريب على مجموعات بيانات كبيرة جدًا.

تتمثل إحدى طرق اختصار هذه العملية في إعادة استخدام أوزان النموذج من النماذج المدربة مسبقًا التي تم تطويرها لمجموعات البيانات المعيارية لقياس الرؤية الحاسوبية، مثل مهام التعرف على الصور ImageNet.

يستخدم المثال أدناه نموذج VGG-16 المدرب مسبقًا لتصنيف صور الكائنات في واحدة من 1000 فئة معروفة.

قم بتنزيل هذه الصورة لكلب تم التقاطها بواسطة Justin Morgan وتم إطلاقها بموجب ترخيص مسموح. احفظه في دليل العمل الحالي باسم الملف “dog.jpg”.

سيحمل المثال أدناه الصورة ويخرج تنبؤًا، ويصنف الكائن في الصورة.

ملحوظة: في المرة الأولى التي تقوم فيها بتشغيل المثال، يجب تنزيل النموذج المدرب مسبقًا، وهو بضع مئات من الميجابايت ويستغرق بضع دقائق بناءً على سرعة اتصالك بالإنترنت.

# example of using a pre-trained model as a classifier
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
from keras.applications.vgg16 import preprocess_input
from keras.applications.vgg16 import decode_predictions
from keras.applications.vgg16 import VGG16
# load an image from file
image = load_img('dog.jpg', target_size=(224, 224))
# convert the image pixels to a numpy array
image = img_to_array(image)
# reshape data for the model
image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
# prepare the image for the VGG model
image = preprocess_input(image)
# load the model
model = VGG16()
# predict the probability across all output classes
yhat = model.predict(image)
# convert the probabilities to class labels
label = decode_predictions(yhat)
# retrieve the most likely result, e.g. highest probability
label = label[0][0]
# print the classification
print('%s (%.2f%%)' % (label[1], label[2]*100))

مهمتك

مهمتك في هذا الدرس هي تشغيل المثال والإبلاغ عن النتيجة.

للحصول على نقاط المكافأة، حاول تشغيل المثال على صورة أخرى لكائن مشترك.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تكتشفه.

في الدرس التالي، سوف تكتشف كيفية ملاءمة fit وتقييم evaluate نموذج لتصنيف الصور.

الدرس الخامس: تدريب نموذج تصنيف الصور

في هذا الدرس، سوف تكتشف كيفية تدريب وتقييم شبكة عصبية تلافيفية لتصنيف الصور.

مشكلة تصنيف ملابس Fashion-MNIST هي مجموعة بيانات قياسية جديدة تستخدم في الرؤية الحاسوبية والتعلم العميق.

إنها مجموعة بيانات تتكون من 60.000 صورة مربعة صغيرة 28 × 28 بكسل ذات تدرج رمادي لعناصر من 10 أنواع من الملابس، مثل الأحذية والقمصان والفساتين والمزيد.

يقوم المثال أدناه بتحميل مجموعة البيانات، ويقيس قيم البكسل، ثم يلائم الشبكة العصبية التلافيفية في مجموعة بيانات التدريب ويقيم أداء الشبكة في مجموعة بيانات الاختبار.

سيتم تشغيل المثال في غضون دقائق قليلة على وحدة المعالجة المركزية الحديثة؛ لا يلزم GPU.

# fit a cnn on the fashion mnist dataset
from keras.datasets import fashion_mnist
from keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Dense
from keras.layers import Flatten
# load dataset
(trainX, trainY), (testX, testY) = fashion_mnist.load_data()
# reshape dataset to have a single channel
trainX = trainX.reshape((trainX.shape[0], 28, 28, 1))
testX = testX.reshape((testX.shape[0], 28, 28, 1))
# convert from integers to floats
trainX, testX = trainX.astype('float32'), testX.astype('float32')
# normalize to range 0-1
trainX,testX  = trainX / 255.0, testX / 255.0
# one hot encode target values
trainY, testY = to_categorical(trainY), to_categorical(testY)
# define model
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', input_shape=(28, 28, 1)))
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(100, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# fit model
model.fit(trainX, trainY, epochs=10, batch_size=32, verbose=2)
# evaluate model
loss, acc = model.evaluate(testX, testY, verbose=0)
print(loss, acc)

مهمتك

مهمتك في هذا الدرس هي تشغيل المثال والإبلاغ عن أداء النموذج في مجموعة بيانات الاختبار.

للحصول على نقاط المكافأة، حاول تغيير تكوين النموذج، أو حاول حفظ النموذج وتحميله لاحقًا واستخدامه للتنبؤ بصور الملابس الجديدة ذات التدرج الرمادي.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تكتشفه.

في الدرس التالي، سوف تكتشف كيفية استخدام زيادة الصورة في بيانات التدريب.

الدرس السادس: زيادة الصورة

في هذا الدرس سوف تكتشف كيفية استخدام زيادة الصورة.

زيادة بيانات الصورة Image data augmentation هي تقنية يمكن استخدامها لتوسيع حجم مجموعة بيانات التدريب بشكل مصطنع عن طريق إنشاء نسخ معدلة من الصور في مجموعة البيانات.

يمكن أن يؤدي تدريب نماذج الشبكة العصبية للتعلم العميق على المزيد من البيانات إلى نماذج أكثر مهارة، ويمكن لتقنيات الزيادة إنشاء أشكال مختلفة من الصور التي يمكن أن تحسن قدرة النماذج الملائمة لتعميم ما تعلموه على الصور الجديدة.

توفر مكتبة الشبكة العصبية للتعلم العميق Keras القدرة على ملاءمة النماذج باستخدام زيادة بيانات الصورة عبر فئة ImageDataGenerator.

تنزيل صورة طائر بواسطة AndYaDontStop ، تم إصدارها بموجب ترخيص مسموح به. احفظه في دليل العمل الحالي باسم “bird.jpg”.

سيحمل المثال أدناه الصورة كمجموعة بيانات ويستخدم زيادة الصورة لإنشاء نسخ مقلوبة ومدارة من الصورة يمكن استخدامها لتدريب نموذج شبكة عصبية تلافيفية.

# example using image augmentation
from numpy import expand_dims
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
from keras.preprocessing.image import ImageDataGenerator
from matplotlib import pyplot
# load the image
img = load_img('bird.jpg')
# convert to numpy array
data = img_to_array(img)
# expand dimension to one sample
samples = expand_dims(data, 0)
# create image data augmentation generator
datagen = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rotation_range=90)
# prepare iterator
it = datagen.flow(samples, batch_size=1)
# generate samples and plot
for i in range(9):
     # define subplot
     pyplot.subplot(330 + 1 + i)
     # generate batch of images
     batch = it.next()
     # convert to unsigned integers for viewing
     image = batch[0].astype('uint32')
     # plot raw pixel data
     pyplot.imshow(image)
# show the figure
pyplot.show()

مهمتك

مهمتك في هذا الدرس هي تشغيل المثال والإبلاغ عن تأثير زيادة الصورة على الصورة الأصلية.

للحصول على نقاط المكافأة، جرب أنواعًا إضافية من زيادة الصورة، مدعومة من فئة ImageDataGenerator.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تجده.

في الدرس التالي، سوف تكتشف كيفية استخدام شبكة تلافيفية عميقة لاكتشاف الوجوه في الصور الفوتوغرافية.

الدرس السابع: اكتشاف الوجه

في هذا الدرس، سوف تكتشف كيفية استخدام الشبكة العصبية التلافيفية لاكتشاف الوجه face detection.

يعد اكتشاف الوجه مشكلة تافهة يجب على البشر حلها وقد تم حلها جيدًا بشكل معقول من خلال التقنيات الكلاسيكية القائمة على الميزات، مثل المصنف المتتالي cascade classifier.

في الآونة الأخيرة، حققت طرق التعلم العميق أحدث النتائج في مجموعات بيانات اكتشاف الوجه القياسية. أحد الأمثلة على ذلك هو الشبكة العصبية التلافيفية متعددة المهام Multi-task Cascade Convolutional Neural Network ، أو MTCNN للاختصار.

يوفر مشروع ipazc / MTCNN تنفيذ مفتوح المصدر لشبكة MTCNN التي يمكن تثبيتها بسهولة على النحو التالي:

sudo pip install mtcnn

تنزيل صورة فوتوغرافية لشخص في الشارع التقطتها هولندا وتم إصدارها بموجب ترخيص مسموح. احفظه في دليل العمل الحالي باسم “street.jpg”.

سيحمل المثال أدناه الصورة ويستخدم نموذج MTCNN لاكتشاف الوجوه وسيرسم الصورة ويرسم مربعًا حول الوجه الأول المكتشف.

# face detection with mtcnn on a photograph
from matplotlib import pyplot
from matplotlib.patches import Rectangle
from mtcnn.mtcnn import MTCNN
# load image from file
pixels = pyplot.imread('street.jpg')
# create the detector, using default weights
detector = MTCNN()
# detect faces in the image
faces = detector.detect_faces(pixels)
# plot the image
pyplot.imshow(pixels)
# get the context for drawing boxes
ax = pyplot.gca()
# get coordinates from the first face
x, y, width, height = faces[0]['box']
# create the shape
rect = Rectangle((x, y), width, height, fill=False, color='red')
# draw the box
ax.add_patch(rect)
# show the plot
pyplot.show()

مهمتك

مهمتك في هذا الدرس هي تشغيل المثال ووصف النتيجة.

للحصول على نقاط المكافأة، جرب النموذج على صورة أخرى ذات وجوه متعددة وقم بتحديث كود المثال لرسم مربع حول كل وجه تم اكتشافه.

أضف النتائج الخاصة بك في التعليقات أدناه. أود أن أرى ما تكتشفه.

النهاية!

(انظر إلى أي مدى وصلت)

لقد فعلتها. أحسنت!

توقف لحظة وانظر إلى أي مدى وصلت.

لقد اكتشفت:

  • ما هي الرؤية الحاسوبية والوعد والتأثير الذي يحدثه التعلم العميق في هذا المجال.
  • كيفية قياس قيم البكسل لبيانات الصورة لجعلها جاهزة للنمذجة.
  • كيفية تطوير نموذج شبكة عصبية تلافيفية من البداية.
  • كيفية استخدام نموذج مدرب مسبقًا لتصنيف صور الأشياء.
  • كيفية تدريب نموذج من الصفر لتصنيف صور الملابس.
  • كيفية استخدام زيادة الصور لإنشاء نسخ معدلة من الصور في مجموعة بيانات التدريب الخاصة بك.
  • كيفية استخدام نموذج التعلم العميق المدرب مسبقًا لاكتشاف وجوه الأشخاص في الصور الفوتوغرافية.

هذه مجرد بداية رحلتك مع التعلم العميق للرؤية الحاسوبية. استمر في ممارسة وتطوير مهاراتك.

الملخص

كيف فعلت مع الدورة المصغرة؟

هل استمتعت بهذه الدورة التدريبية المكثفة؟

هل لديك اسئلة؟ هل كانت هناك أي نقاط شائكة؟

دعني أعلم. اترك تعليقا أدناه.

بواسطة
machinelearningmastery
المصدر
How to Get Started With Deep Learning for Computer Vision (7-Day Mini-Course)

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى