مرحبا يا هبر! أقدم إليكم ترجمة مقال
"تشابه الصورة باستخدام الترتيب العميق" من تأليف أكارش زينغادي.
خوارزمية الترتيب العميق
لم يتم تقديم مفهوم "
تشابه صورتين " ، لذلك دعونا نقدم هذا المفهوم على الأقل في إطار المقال.
تشابه صورتين هو نتيجة لمقارنة صورتين وفقًا لمعايير معينة. يحدد المقياس الكمي درجة التشابه بين مخططات الشدة لصورتين. باستخدام مقياس التشابه ، تتم مقارنة بعض الميزات التي تصف الصور. كمقياس للتشابه ، مسافة هامينغ ، المسافة الإقليدية ، مسافة مانهاتن ، إلخ.
التصنيف العميق - يدرس تشابه الصورة المحبب بدقة ، ويميز نسبة تشابه الصورة المقسومة بدقة باستخدام مجموعة من ثلاثة توائم.
ما هو الثلاثي؟
يحتوي الثلاثي على صورة الطلب ، الصورة الإيجابية والسلبية. حيث الصورة الإيجابية تشبه صورة طلب أكثر من صورة سلبية.
مثال على مجموعة من ثلاثة توائم:
السطر الأول والثاني والثالث يتوافق مع صورة الطلب. السطر الثاني (الصور الإيجابية) أشبه بالصور المطلوبة من الصور الثالثة (الصور السلبية).
تصنيف العمارة شبكة العمارة
تتكون الشبكة من 3 أجزاء: أخذ العينات الثلاثية ، ConvNet وطبقة التصنيف.
تقبل الشبكة ثلاثة توائم من الصور كمدخلات. تحتوي صورة ثلاثية واحدة على صورة طلب
$ inline $ p_i $ inline $ صورة إيجابية
$ inline $ p_i ^ + $ inline $ والصورة السلبية
$ inline $ p_i ^ - $ inline $ التي تنتقل بشكل مستقل إلى ثلاث شبكات عصبية عميقة متطابقة.
طبقة الترتيب الأعلى - تقيم وظيفة الخسارة الثلاثية. يتم تصحيح هذا الخطأ في الطبقات السفلية من أجل تقليل وظيفة الخسارة.

دعونا الآن نلقي نظرة فاحصة على الطبقة الوسطى:

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

حيث
l هي معامل الخسارة بالنسبة للثلاثة توائم ،
g هي معامل الفجوة بين المسافة بين أزواج من الصور: (
$ inline $ p_i $ inline $ .
$ inline $ p_i ^ + $ inline $ ) و (
$ inline $ p_i $ inline $ .
$ inline $ p_i ^ - $ inline $ ) ، وظيفة
f - التضمين التي تعرض الصورة في المتجه ،
$ inline $ p_i $ inline $ هي صورة الطلب ،
$ inline $ p_i ^ + $ inline $ هي صورة إيجابية ،
$ inline $ p_i ^ - $ inline $ هي صورة سلبية ، و
D هي المسافة الإقليدية بين نقطتين إقليدية.
تنفيذ خوارزمية الترتيب العميق
التنفيذ مع Keras.
تستخدم ثلاث شبكات متوازية للاستعلام ، الصورة الإيجابية والسلبية.
هناك ثلاثة أجزاء رئيسية للتنفيذ ، وهي:
- تنفيذ ثلاث شبكات عصبية متعددة المقياس
- تنفيذ وظيفة الخسارة
- الجيل الثلاثي
تعلم ثلاث شبكات عميقة متوازية تستهلك الكثير من موارد الذاكرة. بدلاً من ثلاث شبكات عميقة متوازية تتلقى صورة طلب ، صورة إيجابية وسلبية ، سيتم تغذية هذه الصور بالتسلسل إلى شبكة عصبية عميقة واحدة عند إدخال شبكة عصبية. سوف يحتوي الموتر الذي تم نقله إلى طبقة الفقد على مرفق صورة في كل صف. يتوافق كل سطر مع كل صورة إدخال في حزمة. نظرًا لأن الصورة المطلوبة والصورة الموجبة والصورة السلبية يتم إرسالها بالتتابع ، فسوف يتوافق السطر الأول مع صورة الطلب ، والثاني للصورة الموجبة ، والثالث للصورة الموجبة ، ثم يتكرر حتى نهاية الرزمة. وبالتالي ، فإن طبقة الترتيب تتلقى تضمينًا لجميع الصور. بعد ذلك ، يتم حساب وظيفة الخسارة.
لتنفيذ طبقة التصنيف ، نحتاج إلى كتابة دالة الخسارة الخاصة بنا ، والتي ستحسب المسافة الإقليدية بين صورة الطلب والصورة الإيجابية ، وكذلك المسافة الإقليدية بين صورة الطلب والصورة السلبية.
تنفيذ وظيفة حساب الخسارة_EPSILON = K.epsilon() def _loss_tensor(y_true, y_pred): y_pred = K.clip(y_pred, _EPSILON, 1.0-_EPSILON) loss = tf.convert_to_tensor(0,dtype=tf.float32)
يجب أن يكون حجم الحزمة دائمًا مضاعفًا 3. حيث أن الثلاثي يحتوي على 3 صور ، ويتم إرسال الصور الثلاثية بالتتابع (نرسل كل صورة إلى شبكة عصبية عميقة بالتسلسل)
بقية الكود هنا