إنشاء تضمينات الصور والفيديو والصوت
تعرف على كيفية استخدام شبكات CNN لإنشاء تضمينات الصور والفيديو والصوت.
سنغطي ما يلي...
إنشاء تضمينات الصور
تحتوي مجموعة البيانات على صور لأنواع مختلفة من الأقلام والأرائك والأكواب والزجاج.
نموذج التضمين: شبكة CNN مدربة مسبقًا (ResNet-18)
لتضمين الصور، يستخدم الكود نموذج ResNet-18 مُدرَّبًا مسبقًا. ResNet (الشبكة المتبقية) هي بنية شبكة عصبية ملتوية عميقة، معروفة بفعاليتها في مهام تصنيف الصور. تتكون ResNet-18 من 18 طبقة، وقد أظهرت أداءً قويًا في مختلف معايير التعرف على الصور. نحصل على تمثيل للميزات أو تضمين للصورة إدخال بإزالة الطبقة النهائية المتصلة بالكامل. يلتقط هذا التضمين ميزات عالية المستوى للصورة، مما يسمح لنا بأداء مهام مثل مقارنة التشابه واسترجاع الصور.
نبدأ باستيراد المكتبات الضرورية. يتم استيراد os
للتفاعل مع نظام الملفات، torch
لوظائف التعلم العميق، و torchvision.transforms
لتحويلات الصور، و torchvision.models
للنماذج المدربة مسبقًا، و PIL
لمعالجة الصور، و cosine_similarity
من sklearn.metrics.pairwise
لحساب تشابه جيب التمام بين المتجهات.
import osimport torchimport torchvision.transforms as transformsimport torchvision.models as modelsfrom PIL import Imagefrom sklearn.metrics.pairwise import cosine_similarity
نُحمّل نموذج ResNet-18 مُدرّب مسبقًا باستخدام models.resnet18(pretrained=True)
. هذا النموذج عبارة عن بنية شبكة عصبية ملتوية معروفة بفعاليتها في مهام تصنيف الصور. تُزال الطبقة الأخيرة المتصلة بالكامل من النموذج، ويُضبط على وضع التقييم.
ملاحظة: النموذج الذي نستخدمه لتوليد تضمينات الصور تم تدريبه مسبقًا على مهمة تصنيف الصور، لذلك نحتاج إلى إزالة طبقة التصنيف المتصلة بالكامل النهائية واستخراج ميزات الصورة من الطبقة المخفية الأخيرة.
# Load pretrained ResNet modelresnet_model = models.resnet18(pretrained=True)# Remove the final fully connected layerresnet_model = torch.nn.Sequential(*(list(resnet_model.children())[:-1]))# Set the model to evaluation moderesnet_model.eval()
نُعرّف دالة preprocess_image
، التي تأخذ مسار ملف الصورة إدخال وتُجري سلسلة من التحويلات على الصورة باستخدام transforms.Compose
. تتضمن هذه التحويلات تغيير حجم الصورة إلى 256 ...