من 30 نوفمبر إلى 2 ديسمبر ، تم عقد PicsArt AI hackathon في موسكو برعاية تبلغ قيمتها 100000 دولار. كانت المهمة الرئيسية هي إنشاء حل AI لمعالجة الصور أو مقاطع الفيديو ، والتي يمكن استخدامها في تطبيق PicsArt. عرض زميل العمل (في ذلك الوقت) آرثر كوزين المشاركة ، حيث اهتم بي بفكرة إخفاء الهوية عن الصور الشخصية للمستخدمين مع الحفاظ على التفاصيل (تعبيرات الوجه ، إلخ). دعا آرثر أيضًا إيليا كبردين - طالب في معهد موسكو للفيزياء والتكنولوجيا (كان على شخص آخر كتابة كود). وُلد الاسم بسرعة كبيرة: DeepAnon.
ستكون هذه قصة عن قرارنا تدهور التنمية ، hackathon ، وكيف لا عليك أن تتكيف مع هيئة المحلفين.
لاختراق
كانت هناك ثلاث طرق للوصول إلى hackathon. الأول هو الوصول إلى أفضل 50 متصدرين في مهمة تجزئة الوجه - "عبقري Datascience". والثاني هو أن توحد على الفور في مجموعة من ما يصل إلى 4 أشخاص وتظهر MVP العامل - "فريق مفعم بالحيوية". في الإصدار الأخير ، كان من الضروري إرسال وصف لفكرته الرائعة. قررنا عدم إضاعة الوقت وعلى الفور ، قبل أسبوع من hackathon ، فعل MVP. حسنًا ، بشكل عام ، قررنا أن يكونوا رائعين ، لذلك دخلت Tima جميعًا في المراكز العشرة الأولى على لوحة المتصدرين ، وبالتالي ، أصبحت زوجة.

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

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

في كل مرحلة ، نشأت صعوبات تقنية. على سبيل المثال ، تمكنت جميع تطبيقات DeepFake على github من تحويل وجه معين X إلى وجه معين Y. في هذه الصيغة للمشكلة ، هناك حاجة إلى العديد من الصور الفوتوغرافية لشخصين. تتمثل أسهل طريقة لجمع مجموعة البيانات هذه في العثور على فيديو لأداء شخص ما حيث يتم عرضه في معظم الوقت فقط ، وباستخدام اكتشاف الوجه ، قم بقص صورة. كان التركيز الرئيسي في فكرتنا هو بالتحديد أنه من الممكن جعل الوجه نفسه Y مختلفًا عن أي شخص ، وقد حاولنا استخدام الكثير من جميع الوجوه من مجموعة بيانات CelebA بدلاً من شخص X ، ولحسن الحظ ، بدأ الأمر. فيما يلي مخطط DeepFake مأخوذ من التنفيذ الذي استخدمناه .
تم التفاف النتيجة في عرض توضيحي لشبكة قارورة وتشغيله للعرض. فيما يلي وصف لمركز الربح التابع للجنة التحكيم.
تقديم خدمة تسمح لك بإخفاء هوية محتوى الوسائط (الصور ومقاطع الفيديو). في الإصدار الأساسي ، تخفي الخدمة الوجوه. في الوضع المتقدم - يغير وجوه المستخدمين إلى وجوه الأشخاص الآخرين (DeepFake) ، ويغير الملابس والخلفية (التجزئة + نقل النمط). وكإستخدام بديل ، يمكن أن تعمل الخدمة على إنشاء مقاطع فيديو ممتعة أو فيروسية أو صور مع استبدال المشاهير.
بقي هناك بضعة أيام قبل بدء الاختراق ، وتمكنا من تحسين التغير في الملابس. إذا كان قبل ذلك كان تغيير اللون في HSV ، الآن لكل نوع من أنواع الملابس تم تطبيق نمط مختلف (من قبل مختلف الفنانين). ظهرت فكرة أخرى مفادها أنه من الأفضل إجراء تغيير الوجه ليس لأحد المشاهير ، ولكن التصنيف أولاً حسب الجنس ، وبعد ذلك نقل وجوه الرجال والنساء بشكل مختلف (على سبيل المثال ، في Navalny و Sobchak). وفي اللحظة الأخيرة تمكنوا من إضافة مستويات مختلفة من إخفاء الهوية إلى العرض التوضيحي للويب - أصبح من الممكن اختيار عناصر إخفاء الهوية المراد استخدامها.
لقد ذهبنا إلى الجزء غير المتصل بالشبكة من خلال موقف مفاده أن هذه حالة مستخدم مفيدة وغير عادية ، وليس فقط أقنعة الوجه الفيروسية. إحدى الرسائل في الدردشة الجماعية لدينا:
نعم ، إذا فكرت في الأمر ، فالجميع بحاجة إليه. إنهم ما زالوا لم يدركوا ذلك ، فالكثير من الناس يتجولون حول محتواهم وهم يخفقون ويشربون ويخرقون القانون ويعتقدون أن الدولة لا تهتم بهم.
وبعد 5 سنوات ، سوف تأتي منظمة العفو الدولية ، وتلقي نظرة على الوظائف القديمة ، وبعد ذلك ، سيتم تدوين المصطلح.
على hackathon
الجزء غير المتصل بدأ يوم الجمعة. تم تعيين كل فريق على طاولة منفصلة ، وكان بوفيه لا نهاية لها الكربوهيدرات السريعة ملفات تعريف الارتباط. بعد الافتتاح الرسمي ، قررنا ألا نضيع الوقت ونكتشف على الفور من هيئة المُحلفين ما يريدون من المشاركين. بعد أن تحدثنا مع العديد من المنظمين بشكل غير رسمي ، شعرنا أن إخفاء هويتهم لم يلق القبض عليهم. لكني أحببت الفكرة بتجزئة الأجزاء الفردية من الصورة وتغييرها. أصبح من الواضح أيضًا أنهم يريدون شيئًا منا يمكن تنفيذه في PicsArt. ومع ذلك ، أرسل فريقنا في المساء وصفًا للمشروع ، الذي تحدث عن إخفاء الهوية ، ولكن مع التركيز على تجزئة الأجزاء الفردية من الصورة وتحريرها.
وصف المشروع لهيئة المحلفين مساء الجمعة:
نحن نقدم خدمة تتيح لك معالجة الصور تلقائيًا وإخفاء هويتها. من خلال تجزئة الملابس والإكسسوارات والشعر على الرأس ، وكذلك عناصر الخلفية ، تتيح لك الخدمة معالجة كل كائن بشكل مستقل ، دون الحاجة إلى التحديد اليدوي. تتيح لك الخدمة أيضًا تغيير الوجوه مع الحفاظ على تعبيرات الوجه والتعبيرات.
وفقًا لتنسيق hackathon ، سيتم السماح للدفاع عن الفرق التي أظهرت نفسها جيدًا في اللجان الفنية. كانت اللجان على اتصال مباشر مع لجنة التحكيم وفريق PicsArt الفني ، بالإضافة إلى عرض توضيحي يوضح عمله.
في العمولة الأولى يوم السبت ، لم نتمكن من بيع إخفاء الهوية لهيئة المحلفين ، لكننا رأينا أنهم أحبوا فكرة تحرير كائنات فردية في الصورة. أيضا ، قبلت هيئة المحلفين بحماس شديد فكرة تصفيفة الشعر القابلة للإزالة من خلال النقر على الشعر (اتضح أنهم يحاولون الآن القيام بشيء مماثل).
لم يتمكن فريقنا من مقاومة هذا الضغط (للأسف) واتفق على تغيير رؤية المنتج. تقرر التركيز على تغيير نوعية الملابس.
في العرض التوضيحي على الشاشة الرئيسية ، تم التخطيط لإظهار عدة خيارات للصورة الأصلية (من الناحية المثالية ، تتغير الملابس عن طريق النقر على الشاشة):
ملابس خارجية:
السراويل:
أحذية:
في النسخة الأساسية مع الشعر ، تقرر إجراء التحول "أصلع - وليس أصلع". لهذا ، تم اختيار الصلع وكل الباقي من مجموعة بيانات المشاهير CelebA. في هاتين المجموعتين ، تم تعيين CycleGAN على الدراسة ، والتي يمكنها تحويل صور المجال A إلى المجال B ، والعكس بالعكس (مثال آخر يمكن أن يحول الحصان إلى حمار وحشي).
تمكنا من التعرف على أحد مطوري PicsArt ومعرفة القليل عن مطبخهم الداخلي. لم يؤمن حقًا بنجاح تجربتنا مع الشعر ، ولكنه ألقى روابط في أي اتجاه لتبدو فيه. لخيبة أملنا ، لم تتعلم الخلايا العصبية حقًا كيفية إضافة أو تقليل الشعر. لكنها تعلمت تغيير لون البشرة (احزر السبب).
تغيرت رؤية المنتج بعد كل اتصال مع هذه اللجان. تضمنت الخطط تحسين السماء وتغيير أنماط الأشياء الفردية (في البداية الملابس فقط): المباني والسيارات ، وكذلك الملحقات في الأماكن العامة. ذهب التركيز من إخفاء الهوية أكثر وأكثر. بالنسبة للعرض التقديمي النهائي ، قررنا الالتزام بالهيكل التالي المكون من 4 شرائح:
- تجزئة الملابس. الصورة: الصورة الأصلية ، ملابس مجزأة ، 4 خيارات لمعالجة الملابس.
- تجزئة المشهد. صورة خافتة مع سماء زائدة. السماء مصنوعة من الفن والمباني هي كرتونية.
- مقايضة الوجه وتغيير الشعر. ثم ماذا سوف تبدأ.
- كل ذلك معا. شريحة توضح أن ذلك يتم بثلاث نقرات.
لكن اتضح أن العرض التقديمي غير مطلوب. بحلول مساء يوم السبت ، قيل للجميع أن الدفاع يجب أن يكون أداء لمدة 3 دقائق دون عرض تقديمي. من المشهد ، سوف تحتاج إلى إظهار العرض التوضيحي الخاص بك في الوقت الحقيقي. يرغب المنظمون في رؤية تقنيات العمل ، وليس العروض التقديمية الجميلة ، وهذا رائع. مقارنة مع غيرها من الاختراقات ، حيث فازت فرق مع تجريبي كسر ، أحببنا هذا المفهوم. كانت المشكلة الوحيدة هي أنه في ذلك الوقت تم إطلاق مجموعة النماذج الخاصة بنا بشكل فردي ولفترة طويلة جدًا. لإظهار المرحلة ، كانت هناك حاجة إلى التحسين.
أثناء التطوير ، تجول الموجّهون من اللجنة الفنية حول القاعة ونظروا إلى التقدم. بعد محادثة أخرى مع أحد الموجهين ، تلقينا ردود فعل بأنه من الأفضل لنا التركيز على شيء واحد ، في رأيه ، على تغيير الملابس. تريد PicsArt أن تكون النتيجة واقعية ويمكن عرضها للمستخدمين. في الواقع ، كان لدى مختلف المرشدين وأعضاء هيئة المحلفين وجهات نظر مختلفة حول ما يجب أن يكون عليه المشروع المثالي بالنسبة لهم.
عدة رسائل من فريق الدردشة في ذلك الوقتإما أن يكون لهم تأثير فيروسي على موقع hackathon ، فهم محرر جاد
Ble ، وليس hackathon ، ولكن صلبة: "هنا INFA جديدة ، إعادة كل شيء لدينا"
بعد أن لم يتم تغيير الشعر عن طريق CycleGAN ، قررنا تجربة طريقة مختلفة. الجزء الأول من الشعر ، ثم تطبيق inpainting على ذلك. مهمة inpainting هي استعادة الجزء المخفي من الصورة من السياق المحيط. وفقًا لخطتنا ، نخفي الشعر ، وستحاول الشبكة العصبية استعادته. ولكن نظرًا لأن الشبكة لم تر أي نوع من الشعر لديه ، فسوف تستعيد تصفيفة شعر أخرى. المشكلة هي أنه حتى النماذج المدربة على وجوه الناس لم تكن قادرة على استعادة الشعر بشكل طبيعي (إذا كنت ترسم سوى جزء من الشعر ، فهي تعمل).
الصعوبة الرئيسية هي مجموعة كبيرة من قصات الشعر. كان هناك فكرة لتدريب inpainting فقط على الأشخاص الصلع ، ومن ثم قد يتعلم النموذج لتغيير أي تصفيفة الشعر لعدم وجود شعر. أخذنا تنفيذ الشبكة العصبية من هذا المستودع .
نظرًا لأن العرض التوضيحي سيحتاج إلى عرضه من المشهد في الوقت الفعلي ، فقد اضطررت إلى تحسين سرعة خط الأنابيب. أعطيت أكبر زيادة في السرعة عن طريق نقل جميع الشبكات العصبية إلى الذاكرة طوال مدة التطبيق. كانت هناك بعض الصعوبات: البدء في عمل كل شيء في عامل الميناء ، ولكن تسجيل الأهداف على طول الطريق ، أصيب بألم عدة مرات مع إصدارات tensorflow. في الواقع ، من الصعب عدم الدخول في مثل هذا الموقف عندما تحاول تشغيل أكثر من عشرة مستودعات من جيثب في اليوم ، يستخدم كل منها إصدارًا مختلفًا من tensorflow ، مع تحديث الإصدار المطلوب في مكان واحد - يمكنك تقسيمه في مكان آخر. يمكن أن يكون Docker صديقًا جيدًا في مثل هذا الموقف ، ولكن في hackathon تريد قضاء كل دقيقة في اختبار فرضيات جديدة ، وليس إنشاء صورة جديدة. ومع ذلك ، فاستسلم لمثل هذا الإغراء ، فإنك تخاطر بقضاء المزيد من الوقت في تصحيح الكود ومحاولة فهم أي إصدار من المكتبة في المكان الذي تريده.
اليوم الأخير
في صباح يوم الأحد ، قررنا الرؤية النهائية للمنتج (حان الوقت بالفعل): تغيير الملابس مع إمكانية تحسين السماء. أردت تضييق المهمة قدر الإمكان ، لكن القيام بتغيير الملابس فقط بدا صغيراً للغاية. هذا هو ما يشبه "تصميم" تطبيق الويب الخاص بنا.
في البداية ، أرادوا إضافة تصميم متكيف لجعله مناسبًا للمشاهدة من الهاتف. ولكن كان الوقت ينفد ، وقد وصل تصميمنا إلى np.vstack (imgs_list).
قبل الأداء النهائي ، أردت إحضار الميزة بالملابس إلى حالتها النهائية. تمت إضافة مزج ألفا من الملابس والخلفية - اختفت التحولات الحادة. تركت فقط القوام الأكثر واقعية - الجينز والجلد التمساح. قبل ساعات قليلة من العرض ، تمكنت من بدء تجزئة السماء ونقل النمط إليها من هذا المستودع . كانت هناك خيارات لتحويل السماء إلى نهاية كارثية ، سامة ، كاريكاتورية. لكن سماء الشتاء أصبحت أكثر موضوع مناسب للمسابقة - فقد أعطى تطبيقها تأثير "محسن" للسماء.
كان هناك القليل جدا من الوقت المتبقي عندما تكون جميع المكونات متصلة بكاملها وربحها. قمنا بتنزيل الكثير من الصور من الشبكات الاجتماعية وخططنا لإطلاق تطبيق عليها لتحديد الحالات الأكثر نجاحًا (الخربشة). لكن اتضح أن فريقنا كان الأول ، لذلك كان كل شيء صادقًا قدر الإمكان - لقد أظهروا عروضًا تجريبية في صور عشوائية.
أثناء حديثه على المسرح ، تمكن آرثر من الكشف عن فكرتنا ، وأظهر إليا MVP على جهاز العرض - الملابس تغيرت في جميع الصور ، وتحسنت السماء.
لم يكن جميع المشاركين قادرين على التعامل مع المهمة - لإظهار العرض التوضيحي الخاص بهم فقط. كان إغراء إضافة بعض الشرائح الجميلة رائعًا. من بين أكثر الحلول التي أعجبنا بها الدفاع - تحويل مقاطع الفيديو إلى صور كاريكاتورية ، بالإضافة إلى دمج صورتين في صورة واحدة.
النتائج
نتيجة لذلك ، ووفقًا للمعلومات الداخلية ، اتخذ فريقنا المركز السادس على بعد خطوة من الماني.
بعد هذه الحقيقة ، توصلنا إلى رأي مشترك (حسنًا ، إلى جانب حقيقة أن ثلاثة من أفضل 5 فرق حصلت على الجائزة بدون تحفظ) بأنه كان من الضروري أن تكون مستمراً وأن ننتهي بشكلٍ حاسم من فكرة تحديد الهوية الأولية. حتى الآن ، نحن مقتنعون بأنها مناسبة وسوف تحقق قيمة لعدد من المستخدمين. منخرطون في تطوير الأفكار مع إخفاء الهوية طوال عطلة نهاية الأسبوع ، سنحصل على الأقل على مزيد من المرح.
إذا لم تكن قد شاركت مطلقًا في اختراقات التسلل ، فتأكد من تجربة - اختبار ممتاز لنفسك وفريقك ، فرصة لإدراك شيء لم يكن لديك وقتًا له. وبالطبع ، تأكد من عمل ما تريد ، لأنه لا يمكن الحصول على الحد الأقصى من الكافيين من هذه العملية إلا عن طريق الاحتراق الشديد.
الوضع الحالي للمشروع
نشر فريقنا رمز العرض التوضيحي النهائي على جيثب . وهناك أيضًا مستودع منفصل يعمل على إخفاء الهوية . في المستقبل ، هناك خطط لتطوير الإصدار الأولي مع إخفاء الهوية: لإعادة كتابة كل شيء على PyTorch ، لتدريب في الصور ذات دقة أعلى وضوضاء أقل (الصورة مع وجه واحد فقط) ، وكذلك رفع الروبوت في برقية.
بالنسبة لأولئك الذين يريدون بالفعل تجربة النسخة المولودة في بداية hackathon ، يتم إطلاق روبوت في برقية في الوضع التجريبي ( @DbrainDeepAnon
-> /start
-> /unlock dbraindeepanon
). إنه يعمل على خادم Dbrain (شكرنا) ، والذي حدث فيه كل تدريب على نقل الوجه ، لذا جربه حتى يتم إيقافه. تستخدم الخدمة الغلاف الداخلي Dbrain - wrappa ، والذي يسمح لك بسهولة لف حاوية الإرساء وإطلاق بوت التلغراف. قريبا سوف تكون متاحة wrappa في المصدر المفتوح.
أود أن أشير إلى أن عملنا لم يذهب سدى. بفضل DeepAnon ، تمكن أحد "المجهولين" ، الذي كان قلقًا للغاية بشأن خصوصية بياناته ، من قيادة شريط فيديو عن حياته. لم يعد يخشى أن تتمكن الكاميرات الموجودة في المدينة من التعرف على وجهه من خلال الصور من الشبكات الاجتماعية ، ومع ذلك ، سيتمكن الأصدقاء من التعرف عليه. مجهول الهوية وجوه جميع الناس على Instagram له.
روابط إلى المستودعات التي استخدمناها:
https://github.com/shaoanlu/faceswap-GAN
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
https://github.com/sacmehta/ESPNet
https://github.com/JiahuiYu/generative_inpainting
https://github.com/NVIDIA/FastPhotoStyle
ملاحظة: أيضًا ، بالنسبة إلى المعجبين ، حاولت إعادة تدريب الشبكة لاستبدال الأشخاص بأحد أعضاء ODS . حاول تخمين من. أعطت الشبكات اسم TestesteroNet.