الترتيب العميق لمقارنة صورتين

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

خوارزمية الترتيب العميق


لم يتم تقديم مفهوم " تشابه صورتين " ، لذلك دعونا نقدم هذا المفهوم على الأقل في إطار المقال.

تشابه صورتين هو نتيجة لمقارنة صورتين وفقًا لمعايير معينة. يحدد المقياس الكمي درجة التشابه بين مخططات الشدة لصورتين. باستخدام مقياس التشابه ، تتم مقارنة بعض الميزات التي تصف الصور. كمقياس للتشابه ، مسافة هامينغ ، المسافة الإقليدية ، مسافة مانهاتن ، إلخ.

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

ما هو الثلاثي؟


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

مثال على مجموعة من ثلاثة توائم:

صورة

السطر الأول والثاني والثالث يتوافق مع صورة الطلب. السطر الثاني (الصور الإيجابية) أشبه بالصور المطلوبة من الصور الثالثة (الصور السلبية).

تصنيف العمارة شبكة العمارة


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

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

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

صورة

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

تشكيل ثلاثي


هناك عدة طرق لإنشاء ملف ثلاثي ، على سبيل المثال ، استخدام تقييم خبير. ولكن هذه المقالة سوف تستخدم الخوارزمية التالية:

  1. كل صورة في الفصل تشكل صورة طلب.
  2. كل صورة ، باستثناء صورة الطلب ، ستشكل صورة إيجابية. ولكن يمكنك تحديد عدد الصور الإيجابية لكل طلب صورة
  3. يتم تحديد صورة سلبية بشكل عشوائي من أي فئة ليست فئة صورة طلب

وظيفة فقدان ثلاثية


الهدف من ذلك هو تدريب وظيفة تقوم بتعيين مسافة صغيرة للصور الأكثر تشابهًا وواحدة كبيرة للصور المختلفة. يمكن التعبير عن ذلك على النحو التالي:
صورة
حيث 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.

تستخدم ثلاث شبكات متوازية للاستعلام ، الصورة الإيجابية والسلبية.

هناك ثلاثة أجزاء رئيسية للتنفيذ ، وهي:

  1. تنفيذ ثلاث شبكات عصبية متعددة المقياس
  2. تنفيذ وظيفة الخسارة
  3. الجيل الثلاثي

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

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

تنفيذ وظيفة حساب الخسارة
_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) # initialise the loss variable to zero g = tf.constant(1.0, shape=[1], dtype=tf.float32) # set the value for constant 'g' for i in range(0,batch_size,3): try: q_embedding = y_pred[i+0] # procure the embedding for query image p_embedding = y_pred[i+1] # procure the embedding for positive image n_embedding = y_pred[i+2] # procure the embedding for negative image D_q_p = K.sqrt(K.sum((q_embedding - p_embedding)**2)) # calculate the euclidean distance between query image and positive image D_q_n = K.sqrt(K.sum((q_embedding - n_embedding)**2)) # calculate the euclidean distance between query image and negative image loss = (loss + g + D_q_p - D_q_n ) # accumulate the loss for each triplet except: continue loss = loss/(batch_size/3) # Average out the loss zero = tf.constant(0.0, shape=[1], dtype=tf.float32) return tf.maximum(loss,zero) 


يجب أن يكون حجم الحزمة دائمًا مضاعفًا 3. حيث أن الثلاثي يحتوي على 3 صور ، ويتم إرسال الصور الثلاثية بالتتابع (نرسل كل صورة إلى شبكة عصبية عميقة بالتسلسل)

بقية الكود هنا

مراجع
[1] التعرف على الكائنات من ميزات النطاق المحلي الثابتة - www.cs.ubc.ca/~lowe/papers/iccv99.pdf

[2] رسم بياني للتدرجات الموجهة للكشف عن الإنسان - courses.engr.illinois.edu/ece420/fa2017/hog_for_human_detection.pdf

[3] تعلم تشابه الصور ذي الحبيبات الدقيقة مع الترتيب العميق- static.googleusercontent.com/media/research.google.com/en//pubs/archive/42945.pdf

[4] تصنيف ImageNet مع الشبكات العصبية التلافيفية العميقة- papers.nips.cc/paper/4824-imagenet-classification- with-deep-convolutional- neural- networks.pdf

[5] التسرب: طريقة بسيطة لمنع الشبكات العصبية من التحليق - www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

[6] ImageNet: قاعدة بيانات الصور الهرمية على نطاق واسع- www.image-net.org/papers/imagenet_cvpr09.pdf

[7] البحث السريع عن الصور ذات الاستطاعة المتعددة ، الجرافيك. washington.edu/projects/query/mrquery.pdf

[8] استرجاع الصور على نطاق واسع مع متجهات فيشر المضغوطة- citeseerx.ist.psu.edu/viewdoc/download؟doi=10.1.1.401.9140&rep=rep1&type=pdf

[9] ما وراء حقائب الميزات: مطابقة الهرم المكاني للتعرف على فئات المشهد الطبيعي- ieeexplore.ieee.org/document/1641019

[10] تحسين العينات المتسقة ، Minhash الموزون و L1 Sketching- static.googleusercontent.com/media/research.google.com/en//pubs/archive/36928.pdf

[11] التعلم عبر الإنترنت على نطاق واسع عن تشابه الصور من خلال الترتيب- jmlr.csail.mit.edu/papers/volume11/chechik10a/chechik10a.pdf

[12] تعلم تشابه الصور ذي الحبيبات الدقيقة مع الترتيب العميق- users.eecs.northwestern.edu/~jwa368/pdfs/deep_ranking.pdf

[13] تشابه الصورة باستخدام Deep Rating- medium.com/@akarshzingade/image-similarity-using-deep-ranking-c1 يتعرض 3855978

Source: https://habr.com/ru/post/ar457928/


All Articles