كيفية إنشاء صور مزيفة على جهاز كمبيوتر باستخدام GAN

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

لكنك تشعر بالحرج لأنه لا يمكنك السحب. لذا ينتهي بك الأمر إلى محاولة إخفاء صورتك بشكل جيد الرسم والقصة الطويلة تبدو كما يلي:

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

هذا هو ما تبدو الصور

الآن كما يمكنك أن تقول الكثير منهم مشوهون وبعضهم ضبابي ولكن لدي شعور بأن هذه الطريقة أكثر واقعية من رسومات رياض الأطفال. أنها بالتأكيد تفوق الألغام.

بالإضافة إلى ذلك ، فإن حقيقة أن الكمبيوتر يمكنه إنشاء هذه الصور لأشخاص ليسوا حقيقيين هي حقيقة جنونية!

فكيف تأتي هذه الحواسيب بالصور السحرية للأشخاص المزيفين؟ كل ذلك بفضل شيء يسمى GAN.

ما هي GAN وكيف تعمل بالضبط؟

يعد GAN نموذجًا للتعلم الآلي يتم استخدامه لرسم خريطة لتوزيع البيانات. لذلك ، على سبيل المثال ، يكون لكل الوجوه عادةً نفس التوزيع للميزات. لذا فإن العيون والأنف والفم ، إلخ ، تكون عمومًا في نفس المكان على الجميع. وبالتالي فإن GAN قادرة على معرفة ما الذي يجعل الوجه والمنطقة العامة لجميع الميزات على الوجه.

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

التدريب العدائي:

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

يولد المولد الصور ثم يتم إعطاء المُميّز صور تدريب حقيقية ، في هذه الحالة ، مجموعة من الوجوه ، والصور التي ينشئها المولد.

ثم يحاول تحديد ما هي حقيقية وما تم إنشاؤه بواسطة المولد.

هذا هو الجزء الخصم من GAN.

هذا رسم بياني يوضح تدفق GAN

في البداية ، كل الشبكات العصبية تمتص أساسا. لكن مع مرور الوقت يواصلون التدريب والتحسين. مع كل تكرار ، يبدأ المولد في معرفة أنواع الصور التي تخدع المُميّز ويبدأ في توليد المزيد من تلك الصور. ولكن ، فإن المميّز يتحسن أيضًا في معرفة الصور الحقيقية مقابل الصور المزيفة.

لعبة Minimax:

عندما تحاول إحدى الشبكات (التمييز) زيادة أو زيادة فرص صحتها ، تحاول الشبكة الأخرى (المولد) أن تخدع أو تقلل من فرص أن تكون على حق في لعبة تسمى minimax.

يقوم المُميّز بإرجاع رقم بين 1 و 0 يُظهر احتمال كونه حقيقيًا. 1 حقيقي و 0 مزيف. في بعض الأحيان تكون النتائج صحيحة وفي أحيان أخرى لا تكون صحيحة ، لكن في كل مرة تتعلم المزيد عنها. إذا كانت الصورة التي ينشئها المولد تحصل على احتمال بنسبة 50 ٪ (0.5) أو أعلى من التمييز ، فقد خدعته رسميا. عندما يصل GAN إلى التوازن ، فإن ذلك يعني أن صور المولد المقلدة للأشخاص جيدة جدًا بحيث تبدو تمامًا مثل الصور من مجموعة البيانات ، وليس لدى المُميِّز أي خيار سوى تخمين عشوائيًا ما إذا كانت الصورة حقيقية أم لا (وبالتالي تعود 0.5).

الشبكات العصبية العميقة

يُطلق على أحد أفضل نماذج GAN لإنشاء هذه الصور اسم GAN التوافقي العميق (DCGAN). يدمج DCGAN الطبقات التلافيفية في GAN لمساعدته على العمل بشكل أكثر كفاءة.

ما هي الطبقات التلافيفية؟

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

باستخدام طبقة واحدة ، يمكنك اختيار ميزة بسيطة مثل الخط ، ولكن مع 5 طبقات ، يمكنك التقاط وجه كامل. حتى الطبقات التلافيفية في GAN ، تمنحك القدرة على تدريب وتشغيل الشبكة بشكل أسرع بكثير من دونها.

كيف فعلت هذا

تمكنت من إنشاء صور واقعية باستخدام إطار عمل PyTorch Deep Learning. هنا هو ما فعلته.

المميّز:

فئة التمييز (nn.Module):
       def __init __ (self، ngpu):
           super (تمييز ، ذاتية) .__ init __ ()
           self.ngpu = ngpu
           self.main = nn.Sequential (
               # الإدخال هو (nc) × 64 × 64
               nn.Conv2d (nc، ndf، 4، 2، 1، bias = False)،
               nn.LeakyReLU (0.2 ، inplace = True) ،
               # حجم الدولة. (قوات الدفاع الشعبي) × 32 × 32
               nn.Conv2d (ndf، ndf * 2، 4، 2، 1، bias = False)،
               nn.BatchNorm2d (ndf * 2) ،
               nn.LeakyReLU (0.2 ، inplace = True) ،
               # حجم الدولة. (ndf * 2) × 16 × 16
               nn.Conv2d (ndf * 2، ndf * 4، 4، 2، 1، bias = False)،
               nn.BatchNorm2d (ndf * 4) ،
               nn.LeakyReLU (0.2 ، inplace = True) ،
               # حجم الدولة. (قوات الدفاع الشعبي * 4) × 8 × 8
               nn.Conv2d (ndf * 4، ndf * 8، 4، 2، 1، bias = False)،
               nn.BatchNorm2d (ndf * 8) ،
               nn.LeakyReLU (0.2 ، inplace = True) ،
               # حجم الدولة. (قوات الدفاع الشعبي * 8) × 4 × 4
               nn.Conv2d (ndf * 8، 1، 4، 1، 0، bias = False)،
               nn.Sigmoid ()
           )
      def الأمام (النفس ، الإدخال):
          عائد الذات (إدخال)

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

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

المولد:

مولد فئة (nn.Module):
     def __init __ (self، ngpu):
         super (Generator، self) .__ init __ ()
         self.ngpu = ngpu
         self.main = nn.Sequential (
             # الإدخال هو Z ، الخلط في
             nn.ConvTranspose2d (nz، ngf * 8، 4، 1، 0، bias = False)،
             nn.BatchNorm2d (ngf * 8) ،
             nn.ReLU (صحيح)،
             # حجم الدولة. (ngf * 8) × 4 × 4
             nn.ConvTranspose2d (ngf * 8 ، ngf * 4 ، 4 ، 2 ، 1 ، bias = False) ،
             nn.BatchNorm2d (ngf * 4) ،
             nn.ReLU (صحيح)،
             # حجم الدولة. (ngf * 4) × 8 × 8
             nn.ConvTranspose2d (ngf * 4 ، ngf * 2 ، 4 ، 2 ، 1 ، bias = False) ،
             nn.BatchNorm2d (ngf * 2) ،
             nn.ReLU (صحيح)،
             # حجم الدولة. (ngf * 2) × 16 × 16
             nn.ConvTranspose2d (ngf * 2 ، ngf ، 4 ، 2 ، 1 ، bias = False) ،
             nn.BatchNorm2d (NGF)،
             nn.ReLU (صحيح)،
             # حجم الدولة. (ngf) × 32 × 32
             nn.ConvTranspose2d (ngf، nc، 4، 2، 1، bias = False)،
             nn.Tanh ()
             # حجم الدولة. (nc) × 64 × 64
          )
    def الأمام (النفس ، الإدخال):
        عائد الذات (إدخال)

لذلك يمكنك أن ترى أن للمولد بنية مماثلة ولكنه معكوس.

يبدأ بـ 100 متجه عشوائي بين -1 و 1. ثم يضع المتجه من خلال طبقات تبديل تلافيف باقة (بالإضافة إلى بعض وظائف التطبيع والتنشيط) لتحويل المتجه إلى صورة.

تقوم طبقة التحويل التلافيفية بعكس الطبقة التلافيفية. بدلاً من تعيين مجموعة من القيم في قيمة واحدة ، تقوم بتعيين قيمة واحدة في مجموعة من القيم.

على سبيل المثال ، تقوم الطبقة التلافيفية بتحويل الأرقام 1 ، 2 ، 3 ، 4 ، 5 ، إلى 3 ، وتحويل طبقة التحويل التلافيفي الرقم إلى الأرقام 1 ، 2 ، 3 ، 4 ، 5.

كل صورة ينتجها المولد هي أصلية لأنه يستخدم متجه البداية (القيم العشوائية 100) مثل بذرة يتم تعيينها بعد ذلك إلى التوزيع الإحصائي لمجموعة البيانات.

أثناء التدريب ، يجب على المولد اكتشاف أفضل الطرق لتحويل المتجهات إلى وجوه وهمية.

تدريب

بالنسبة لعملية التدريب ، قمت بتدريب GAN في هذه العملية.

  1. استخدم أداة التمييز لتصنيف مجموعة من الصور الحقيقية
  2. تحرير التمييز على أساس النتائج
  3. استخدم أداة التمييز لتصنيف مجموعة من الصور المزيفة
  4. ضبط التمييز والمولد بناء على النتائج
  5. كرر

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

المستقبل وتطبيقات GAN

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

على سبيل المثال ، يمكن أن يساعدك GAN في إنشاء بنك.

هذه هي الصورة الحقيقية التي أنشأتها GAN

تم بيع هذه الصورة بمبلغ 432،500 دولار ، وهي ليست حقيقية. لذلك يمكنك استخدام GAN لكسب المال.

لديهم أيضًا بعض التطبيقات الأخرى مثل الاستخدام التجاري وفي مجال الرعاية الطبية والصحية.

يسلط الضوء

الوجبات السريعة

تعد شبكات GAN مجالًا جديدًا في مجال التعلم الآلي ، لكنها واعدة جدًا وبالتأكيد شيء يجب أن تكون على دراية به.

إليك بعض الوجبات السريعة والأشياء التي يجب مراعاتها حول GAN:

  • تستخدم شبكة GAN شبكتين عصبيتين متنافستين لإنشاء بيانات تشبه بيانات التدريب عن قرب.
  • تحاول شبكة التمييز تحديد ما إذا كانت الصورة التي قدمتها حقيقية أم وهمية.
  • يحاول المولد أن يخدع المُميّز في التفكير بأن صوره حقيقية.

تمتلك شبكات GAN الكثير من الإمكانات في التطبيقات التجارية والطبية مما يجعلها تقنية واعدة للغاية. هم أيضا رائع. أعتقد أنها شيء يجب على الشركات والباحثين النظر فيه والاستثمار فيه قريبًا.