القائمة الرئيسية

الصفحات

إستعادة الصور – الجزء الثاني (Image Retrieval – Part two)

 




إستعادة الصور الجزء الثاني

Image Retrieval - part two 



المهندس حسن فنجان عداي


مقدمة:

بسم إلله الرحمن الرحيم

تناولنا في الجزء الأول من هذه السلسلة من المقالات موضوع إسترجاع الصور وما المقصود به في التعلم العميق وماهي الغاية منه وماهي مجالات إستخدامه, كذلك تناولنا أحد أقسامه وهي عملية مشاهدة أو عرض البيانات الضمنية (Embeddings Visualization), وفي هذه المقالة سوف نتناول قسم آخر وهو عملية عرض مصفوفات الخصائص (Visualize Feature Maps).

إنَّ مصفوفات الخصائص هي عبارة عن المصفوفات المتولدة في كل طبقة إلتفافية (Convolutional layer) كنتيجة تمرير المرشحات (Filters) على المصفوفات الداخلة إلى الطبقة المعنية ويعتمد حجم كل مصفوفة على حجم المصفوفات الداخلة للطبقة (Feature Maps) وكذلك على حجم الفلتر المستخدم.


عرض مصفوفات الخصائص

(Visualize Feature Maps)

الطريقة الأخرى لعرض البيانات الخارجة من الطبقات المخفية للنموذج المدرب هي طريقة عرض مصفوفات الخصائص (Feature maps or Activation maps) المتولدة في هذه الطبقات نتيجة تطبيق المرشحات (Filters) على البيانات الداخلة إلى الطبقة. إنَّ الغاية من عملية عرض بعض مصفوفات الخصائص هو لمعرفة نوع الخاصية التي تحويها كل مصفوفة والتي يتم إستخلاصها أو إستخراجها من البيانات الداخلة الى الطبقة المعنية.  من المتوقع أن تكون مصفوفات الخصائص (Feature maps) في الطبقات القريبة من طبقة الإدخال (Input layer)  تحمل تفاصيل صغيرة ودقيقة في حين تكون تلك البعيدة عن طبقة الإدخال تتضمن الخصائص والميزات الأكثر عمومية (More general features).  نستطيع أن نظهر بعض هذه المصفوفات (Feature maps) بشكل مباشر بعد أن نجري عليها عملية تطبيع (Normalization), فلو فرضنا أننا أخذنا النموذج (VGG16) وأردنا أن نعرض بعض من مصفوفات الخصائص (Feature maps) الموجودة في الطبقة المخفية الأولى (block1_conv1) فإننا أولاً نقوم بإقتطاع جزء من هذا النموذج يتكون من طبقة الإدخال ((input_1 (InputLayer) بالإضافة إلى الطبقة المخفية الأولى (block1_conv1) وكما في الشكل التالي: 

نقوم بعدها بإدخال صورة معينة الى النموذج وجعله في طور التوقع (Predict), ثم نأخذ بعض من مصفوفات الخصائص (Feature maps) ونقوم بإجراء التطبيعات (Normalization) المناسبة عليها ثم نقوم بعرضها.

للتعرف على هذا الموضوع سوف نقوم بإنشاء تطبيق مناسب وكما في الكود التالي:


شرح الكود:

السطر رقم (1): لإستدعاء مكتبة (Tensorflow).

السطر رقم (2): لإستدعاء مكتبة (MatPlotLib).

السطر رقم (5): لأجل بناء النموذج من خلال إستدعاء الدالة (VGG16()) الموجودة في الملف (vgg16) من ضمن ملفات مكتبة (Tensorflow), ومن ثم يقوم بتحميل الأوزان الخاصة بهذا النموذج من شبكة الإنترنت حيث إنه يستغرق بعض الوقت لأن حجم ملف الأوزان مايقارب (500 ميغابايت).

السطر رقم (6): لإنشاء نموذج جديد مستمد من النموذج الأصلي (VGG16) ولكن يحتوي على طبقة مخفية واحدة هي الطبقة الأولى من النموذج الأصلي اي طبقة (block1_conv1). إنَّ هذا النموذج الصغير الذي أنشأناه هو نموذج مدرب لأننا ببساطة قد إستخدمنا طبقة مدربة من النموذج الأصلي بكل مكوناتها بما فيها الأوزان وقيم الإنحياز وكل شيء يتعلق بهذه الطبقة, وبالتالي إذا أردنا الحصول على مصفوفات البيانات لهذه الطبقة يجب جعل النموذج يعمل في طور التوقع (Predict) ويجب أن نعطيه بيانات إدخال, وسوف نقوم بتمرير بيانات الصورة (bird.jpg) والتي يمكن تحميلها من الرابط:

https://www.flickr.com/photos/husker_alum/8628754308/  

السطر رقم (10): لتحميل بيانات الصورة من الملف (bird.jpg) وتخزينها في المتغير (img), وكذلك إختيار الحجم المناسب لها (أي 224 x 224).

السطر رقم (11): لتحويل بيانات الصورة إلى مصفوفة لكي يمكن إجراء بعض التعديلات عليها.

السطر رقم (12): لإضافة بعد جديد إلى بيانات الصورة ليصبح شكلها (1, 224, 224, 3).

السطر رقم (13): لإجراء عمليات التطبيع على البيانات من خلال المعالجة.

السطر رقم (14): تنفيذ عملية التوقع (Prediction) على النموذج وذلك بإستدعاء الدالة (predict) وتمرير بيانات الصورة لها, ومن ثم الحصول على نتيجة التوقع وهو عبارة عن مصفوفة من مصفوفات الخصائص (Feature maps) يتم إيداعهن في المتغير (feature_maps).

الأسطر من (16) إلى (25): لأجل عرض جميع مصفوقات الخصائص (Feature maps) التي حصلنا عليها من عملية التوقع (Prediction)  والتي أودعناها في المتغير (feature_maps).

الشكل التالي يبين الصورة المدخلة إلى النموذج وكذلك بعض مصفوفات الخصائص (feature maps) الخارجة من الطبقة المخفية الأولى (block1_conv1) للنموذج (VGG16):



وبهذا نكون قد إنتهينا من هذه المقالة والتي قمنا فيها بتوضيح القسم الثاني من أقسام إسترجاع الصور في التعلم العميق وهو عملية إظهار مصفوفات الخصائص (Feature maps Visualization), وأرجو أن تكون هذه المقالة مفيدة للأخوة المتصفحين, ومن ألله تعالى نستمد العون والتوفيق.

 

المهندس حسن فنجان عداي.







هل اعجبك الموضوع :

تعليقات