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

هل سنساعد داشا في العثور على هذه اللوحات في قاعدة بيانات تضم أكثر من 200000 صورة؟
تتضمن قاعدة الفن Arthive ما يقرب من 250،000 صورة ، جنبًا إلى جنب مع البيانات الوصفية المختلفة. يتم تحديث القاعدة باستمرار - من عشرات إلى مئات الصور يوميًا. حتى عند ضخها بدقة محدودة (لا تزيد عن 1400 بكسل في معظم الجوانب) ، تشغل الصور أكثر من 80 غيغابايت. لسوء الحظ ، فإن قاعدة البيانات "قذرة": هناك ملفات مكسورة أو صغيرة جدًا ، صور غير منحازة وغير معالجة ، صور مكررة. ومع ذلك ، بشكل عام هذه بيانات جيدة.
مقارنة اللوحات
دعونا نرى كيف تبدو الصور في قاعدة البيانات:
في الأساس ، تتم محاذاة الصور في قاعدة البيانات ، ويتم اقتصاصها إلى حدود اللوحة ، ويتم الحفاظ على الألوان.
وإليك ما قد تبدو عليه الطلبات من الأجهزة المحمولة:

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

مقارنة اللوحات من المثال أعلاه بالطبع ، عادةً ما يكون البحث عن النقاط الرئيسية عملية بطيئة إلى حد ما ، ولكن للبحث في قاعدة البيانات ، يمكنك العثور على النقاط الرئيسية لجميع الصور مقدمًا وحفظ بعضها. في تجاربنا ، توصلنا إلى استنتاج مفاده أن أقل من 1000 نقطة كافية للبحث الموثوق عن اللوحات. عند استخدام 64 بايت لكل نقطة (الإحداثيات + واصف AKAZE) لتخزين 1024 نقطة ، يكفي 64 كيلوبايت لكل صورة أو حوالي 15 جيجابايت لكل قاعدة.
استغرق مقارنة الصور بالنقاط الرئيسية في حالتنا حوالي 15 مللي ثانية ، أي للحصول على تعداد كامل لقاعدة بيانات تحتوي على 250000 صورة ، يستغرق حوالي ساعة واحدة. هذا كثير.
من ناحية أخرى ، إذا تعلمنا أن نختار بسرعة من قاعدة البيانات بأكملها عدة (على سبيل المثال ، 100) من المرشحين الأكثر احتمالاً ، فسوف نفي بالوقت المستهدف وهو ثانية واحدة لكل طلب.
ترتيب التشابه
أثبتت شبكات الالتفاف العميقة نفسها كوسيلة جيدة للبحث عن صور مماثلة. يتم استخدام الشبكة لاستخراج الميزات وحساب واصف يحتوي على أساسه على أن المسافة (إقليدية ، جيب التمام أو غيرها) بين واصفات الصور المماثلة ستكون أقل من الصور المختلفة.
يمكنك تدريب الشبكة بطريقة تجعل صورة الصورة من القاعدة وصورتها المشوهة من الصورة تنتج واصفات قريبة ، ولصور مختلفة - صور أكثر بعدًا. علاوة على ذلك ، يتم استخدام هذه الشبكة لحساب واصفات جميع الصور في قاعدة البيانات واصفات الصور في الطلبات. يمكنك تحديد أقرب الصور بسرعة وترتيبها وفقًا للمسافة بين الواصفات.
الطريقة الأساسية لتدريب شبكة لحساب واصف هي استخدام شبكة سيامية.

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

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

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

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

فصل صورة عن الخلفية
تعتمد جودة العمل ونماذج تحديد اللوحات والنماذج لتصنيف الأنواع / الأنماط إلى حد كبير على مدى جودة فصل الصورة عن الخلفية. من الناحية المثالية ، قبل أن تغذي صورة في نموذج ، تحتاج إلى العثور على الزوايا الأربع من قماشها وعرض منظورها في مربع. من الناحية العملية ، اتضح أنه من الصعب جدًا تنفيذ خوارزمية تضمن ذلك. من ناحية ، هناك مجموعة متنوعة كبيرة من الخلفيات والإطارات والكائنات التي يمكن أن تقع في الإطار بالقرب من الصورة. من ناحية أخرى ، هناك لوحات بداخلها خطوط ملحوظة للغاية للأشكال المستطيلة (النوافذ ، واجهات المباني ، صورة داخل صورة). ونتيجة لذلك ، غالبًا ما يكون من الصعب جدًا تحديد أين تنتهي الصورة وتبدأ بيئتها.
في النهاية ، استقرنا على تنفيذ بسيط يعتمد على الأساليب الكلاسيكية للرؤية الحاسوبية (الكشف عن الحدود + التصفية المورفولوجية + تحليل المكونات المتصلة) ، مما يسمح لك بقطع الخلفيات أحادية الصوت بثقة ، ولكن لا تفقد بعض الصورة.
سرعة العمل
تتكون خوارزمية معالجة الاستعلام من الخطوات الرئيسية التالية:
- التحضير - في الواقع ، يتم تنفيذ كاشف بسيط للصورة ، يعمل بشكل جيد إذا كانت الصورة تحتوي على خلفية واضحة ؛
- حساب واصف الصورة باستخدام شبكة عميقة ؛
- ترتيب الصور حسب المسافة إلى الواصفات في قاعدة البيانات ؛
- البحث عن النقاط الرئيسية في الصورة ؛
- فحص المرشحين بترتيب التصنيف.
لقد اختبرنا سرعة الشبكة على 200 طلب ، وتم الحصول على وقت المعالجة التالي لكل مرحلة (الوقت بالثواني):
المرحلة | دقيقة | ماكس | متوسط |
---|
التحضير (بحث عن صورة) | 0.008 | 0.011 | 0.016 |
حساب الواصف (GPU) | 0.082 | 0.092 | 0.088 |
KNN (k <500 ، وحدة المعالجة المركزية ، القوة الغاشمة) | 0.199 | 0.820 | 0.394 |
مفتاح البحث | 0.031 | 0.432 | 0.156 |
تحقق من النقاط الرئيسية | 0.007 | 9.844 | 2.585 |
إجمالي وقت الطلب | 0.358 | 10.386 | 3.239 |
نظرًا لأن التحقق من المرشحين يتوقف فورًا ، حيث تم العثور على الصورة بثقة كافية ، يمكننا أن نفترض أن الحد الأدنى لوقت معالجة الطلبات يتوافق مع الصور الموجودة بين المرشحين الأوائل. يتم الحصول على الحد الأقصى لوقت الطلب للوحات التي لم يتم العثور عليها على الإطلاق - يتوقف الشيك بعد 500 مرشح.
يمكن ملاحظة أن معظم الوقت يقضي في اختيار المرشحين والتحقق منهم. وتجدر الإشارة إلى أن تنفيذ هذه الخطوات قد جعل من غير الأمثل للغاية ولديه إمكانات كبيرة للتسريع.
بحث مكرر
بعد بناء الفهرس الكامل لقاعدة اللوحات ، استخدمناه للبحث عن التكرارات في قاعدة البيانات. بعد حوالي 3 ساعات من عرض قاعدة البيانات ، تبين أن 13657 صورة على الأقل تتكرر في قاعدة البيانات مرتين (وثلاث صور).
علاوة على ذلك ، تم العثور على حالات مثيرة للاهتمام للغاية ليست مكررة.
واحد ،
اثنان . يبدو أن هاتين المرحلتين من نفس العمل.
واحد ،
اثنان ،
ثلاثة . لا تنتبه للاسم - كل الصور الثلاث مختلفة.
بالإضافة إلى مثال على تحديد إيجابي كاذب بالنقاط الرئيسية.
واحد ،
اثنان .
بدلا من الاستنتاج
بشكل عام ، نحن راضون عن نتيجة الخدمة.
في مجموعات الاختبار ، تم تحقيق دقة تحديد أكثر من 80٪. من الناحية العملية ، غالبًا ما يتبين أنه إذا لم يتم العثور على الصورة في المرة الأولى ، فهذا يكفي لتصويرها من زاوية مختلفة ، وهي موجودة. أخطاء عند العثور على صورة خاطئة ، لا تحدث أبدًا.
معًا ، تم تغليف الحل في حاوية عامل ميناء وإعطاؤه للعميل. الآن التعرف على اللوحات بالصور متاح في التطبيقات التي تستخدم خدمة Arthive ، على سبيل المثال ، متحف Pushkin ، المتاح في سوق Play (ومع ذلك ، فإنه يفصل اللوحة عن الخلفية ، مما يتطلب أن تكون الخلفية خفيفة ، مما يجعل التصوير الفوتوغرافي صعبًا في بعض الأحيان).