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

الصفحات

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

 



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

third partImage Retrieval – 





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

 

مقدمة:

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

إستكمالاً لما بدأناه في الجزء الأول والجزءالثاني من هذه السلسلة, سوف نقوم في هذا الجزء إنشاء ألله بالتطرق إلى القسم الثالث من أقسام إسترجاع الصور في التعلم العميق (Image Retrieval in Deep Learning), حيث نستعرض النوع الثالث وهو عرض قيم عناصر المرشحات أو (Visualize Filters), فأرجو أن تكون نافعة إنشاء ألله.

عرض قيم عناصر المرشحات

(Visualize Filters)

في بعض الأحيان تكون الصور الخارجة من الطبقات (Embeddings or Activations) غير كافية من حيث إعطاءنا بيانات واضحة لفهم مايدور داخل طبقات النموذج إثناء التدريب أو الإختبار, لذلك فقد لجأ الباحثون إلى عملية إظهار (visualization)  لقيم الأوزان المكونة للمرشحات (Filters) لكل طبقة من طبقات النموذج, لأنه من خلال رؤيتنا لطبيعة هذه المرشحات من خلال القيم التي يحملها كل وزن من أوزان المرشح نستطيع أن نعرف الخاصية (Feature) التي يقوم هذا المرشح بإستخلاصها من الصورة الداخلة, حيث نستطيع أن نتوقع ماإذا كان هذا المرشح سوف يستخلص الخطوط العمودية أو الأفقية أو الدوائر مثلاً من خلال توزيع القيم المكونة له والتي هي بمثابة أوزان (weights).

لأجل توضيح المطلب سوف نقوم بإنشاء تطبيق يقوم بإستدعاء نموذج مدرب مشهور وهو النموذج (vgg16), وسوف نقوم بإظهار المرشحات (filters) العائدة إلى الطبقة المخفية الأولى (block1_conv1) من هذا النموذج وسوف نبدأ بكتابة الأكواد المطلوبة وكما يأتي:




شرح الكود:

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

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

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

السطر رقم (7): لعمل حلقة يتم من خلالها إستخلاص أسماء الطبقات الخاصة بالنموذج (vgg16).

السطران رقم (8) و (9): لأجل إستثناء الطبقة الغير إلتفافية والإبقاء على الطبقات الإلتفافية (convolutional) فقط.

السطر رقم (10): لفصل قيم الأوزان (weights)  عن قيم الإنحياز (biases) لكل طبقة من الطبقات الإلتفافية للنموذج.

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


حيث نلاحظ أن شكل المرشح (filter shape) يجب أن يكون مطابقاً لشكل البيانات الداخلة إلى الطبقة, حيث نلاحظ أن شكل المرشحات في الطبقة (block1_conv1) تكون (3, 3, 3) بسبب كون البيانات الداخلة إلى هذه الطبقة هي عبارة عن صورة ملونة أي (3 channels) أي (Red, Green, Blue) والرقم (64) يمثل عدد المرشحات في هذه الطبقة والذي يمثل العمق (deep) للبيانات الخارجة من هذه الطبقة والتي تعتبر بدورها بيانات إدخال بالنسبة للطبقة التي تليها أي (block1_conv2), فيجب أن يكون شكل المرشحات في تلك الطبقة مطابقاً لهذا العمق أي 

(64, 3, 3).


كما ذكرنا أعلاه بأننا سوف نختار قسم من المرشحات في الطبقة الأولى أي (block1_conv1) لأجل عرضها ولأن عدد هذه المرشحات  كبير لذلك سوف نقوم بعرض (6) من هذه المرشحات.

ذكرنا بأن هذه المرشحات هي عبارة عن أوزان (weights), وهذه الأوزان بعد التدريب تحمل قيم صغيرة موجبة وسالبة تتمحور حول نقطة الصفر, لذلك فإنها تحتاج إلى بعض المعالجات قبل إمكانية إظهارها.

الكود التالي يمثل بعض المعالجات لقيم الأوزان قبل إظهارها:


شرح الكود:

السطر رقم (16): لإستخلاص قيم أوزان المرشحات وكذلك قيم الإنحياز الخاصة بالطبقة (block1_conv1) والتي هي تمثل الطبقة رقم (1) من النموذج (VGG16).

السطر رقم (17): لإستخراج أقل قيمة من قيم أوزان المرشحات في هذه الطبقة وكذلك أعلى قيمة, حيث نحتاج هذه القيم في عملية تطبيع (Normalization) قيم المرشحات المنتخبة قبل إظهارها.

السطر رقم (18): إجراء عملية التطبيع لقيم جميع المرشحات في هذه الطبقة.

الأسطر من (19) إلى (29): الأوامر اللازمة لإظهار المرشحات الستة الأولى, وحيث أنَّ عمق (deep)  كل مرشح هو (3), فإنَّ عدد الصور سوف يكون (18) صورة وكما مبينة في الشكل التالي: 



 

وبهذا نكون قد إنتهينا من هذا الجزء من المقالة والذي تطرقنا فيه إلى النوع الثالث من أنواع إستعادة الصور ألا وهو النوع المسمى (عرض قيم عناصر المرشحات) أو (Visualize Filters), وقد قمنا بإنشاء تطبيق نستخدم فيه إحدى طبقات النموذج المشهور (VGG16).



المهندس حسن فنجان عداي.
هل اعجبك الموضوع :

تعليقات