يعلمك لتحديد بوكيمون نموذج مع Keras وCNN! (مع الكود)

الكاتب: ROSEBROCK ADRIAN

الترجمة: تشانغ تيان يو

تصحيح التجارب المطبعية: وان ون جينغ

مقالة 8500 كلمة، القراءة الموصى بها 30+ دقائق.

هذه المادة سوف يشرح كيفية استخدام Keras وشبكة العصبية التلافيف (CNN) على غرار تحديد بوكيمون!

إنشاء الشبكة العصبية التفاف لتحديد مع اللعب Keras بلباسور بوكيمون محشوة

مقدمة موجزة

محتوى بلوق اليوم هو بناء الجزء الثاني من تصنيف الصور + عمق تطبيق التعلم سلسلة من نهاية كاملة لهذه الغاية.

  • الجزء الأول: كيف (سريع) إنشاء قاعدة بيانات صورة دراسة متعمقة
  • الجزء الثاني: Keras والعصبية التفاف شبكة (المحتوى اليوم)
  • الجزء الثالث: نموذج تشغيل Keras على دائرة الرقابة الداخلية (الأسبوع المقبل)

في نهاية اليوم بلوق، وسوف تتعلم كيفية بناء قاعدة البيانات الخاصة بك والتدريب وتقييم شبكة التفاف العصبية.

في بلوق الأسبوع المقبل، سوف تظهر لك كيف في بضعة أسطر من التعليمات البرمجية لوضع لكم من نموذج التدريب Keras المستخدمة في تطبيق الهواتف الذكية.

لجعل هذه السلسلة سهلة وممتعة، قررت لتحقيق حلم طفولتي، وهذا هو لبناء Pokdex. Pokdex في بوكيمون هو (الرسوم النار ذاتها، وألعاب الفيديو والتجارة سلسلة بطاقة) جهاز في العالم (اعتدت أن تكون والآن هو مروحة كبيرة من بوكيمون).

إذا كنت لا تعرف عن بوكيمون، يمكن أن تتخيل Pokdex بوكيمون يمكن تحديدها (يشبه حيوان، موجود في العالم من بوكيمون المخلوقات) التطبيق الذكي.

بالطبع، يمكنك أيضا استبدال البيانات الخاصة بك، أنا بس كان متعة وفعل شيء الحنين للغاية.

تريد أن تعرف كيف Keras وعمق التعلم والتدريب في قاعدة البيانات الخاصة بك باستخدام الشبكة العصبية الالتواء، على قراءة الخط.

دليل

شبكة 1.Keras والعصبية الإلتواء

  • قاعدة بيانات التعلم عميقة لدينا
  • التفاف هيكل الشبكة العصبية والمشاريع Keras
  • Keras وCNN هيكل
  • CNN + Keras إكمال السيناريو تدريبنا
  • التدريب Keras مع CNN
  • CNN والتدريب لخلق النصي Keras
  • صور تصنيف مع CNN وKeras
  • القيود المفروضة على نموذج
  • يمكننا استخدام هذه Keras عمق نموذج التعلم لبناء API REST؟

2. موجز

شبكة Keras والعصبية الإلتواء

في بلوق وظيفة الأسبوع الماضي، تعلمنا كيفية بناء قاعدة بيانات بسرعة عميقة صورة التعلم - نستخدم عملية ورمز بوين لجمع وتنظيم وتحميل الصور على الكمبيوتر.

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

وسوف تظهر لك كيفية استخدام Keras والتعلم العميق لتدريب CNN بك في بلوق وظيفة اليوم. الاسبوع المقبل الافراج فإن الجزء الأخير من هذه السلسلة تظهر لك كيف في خطوط قليلة من التعليمات البرمجية التي سوف تدريب لك على نموذج Keras جيد يتم تطبيقها في الهواتف الذكية (وخاصة فون) التطبيق.

والهدف النهائي من هذه السلسلة هو لمساعدتك في بناء التعلم العميق app-- قادرة على تشغيل مع هذه السلسلة من المقالات مستوحاة من الشعر، وبدأ لمساعدتك في بناء الخاصة تطبيقات التعلم العميقة الخاصة بك.

الآن دعونا نبدأ مع Keras CNN وعمق التعلم والتدريب.

قاعدة بيانات التعلم عميقة لدينا

FIG 1: وجهة نظر تخطيطي لقاعدة بيانات عينة بوكيمون دراسة متعمقة. هذا يظهر لكل نوع بوكيمون. كما رأينا، مجموعة واسعة من قاعدة بيانات المحتوى، ويحتوي على الرسوم التوضيحية والأفلام / قطات التلفزيون، ونماذج، واللعب وهلم جرا.

لدينا دراسة متعمقة قاعدة بيانات من 1191 بوكيمون الصورة).

هدفنا هو استخدام Keras وعمق التعلم وتدريب الشبكة العصبية التفاف لتحديد وتصنيف هذه بوكيمون.

نحن نذهب لتحديد هذه الأنواع من بوكيمون ما يلي:

  • بلباسور (234 صور)
  • تشارمندر (238 صور)
  • سكويرتل (223 صور)
  • بيكاتشو (234 صور)
  • حلم الترا (239 صور)

ويمكن رؤية صور تخطيطية لكل نوع من التدريب في الشكل 1.

كما ترون، وتشمل الصور التدريب لدينا:

  • البرامج التلفزيونية والأفلام لقطات
  • تداول بطاقات
  • نموذج
  • لعبة
  • المشجعين من اللوحات والتعبير الفني

سيكون لدينا CNN تغطي مجموعة واسعة من هذه تجعل الكثير من الصور N تحديد خمسة أنواع من بوكيمون. - وسنرى أننا يمكن أن تصل إلى 97 دقة التصنيف!

التفاف هيكل الشبكة العصبية والمشاريع Keras

اليوم، المشروع يحتوي على الكثير من الأجزاء المتحركة؟ نبدأ الآن من مشروع مراجعة بنية الدليل.

هناك ثلاثة أدلة:

  • بيانات: وهي تشمل خمسة أنواع، كل نوع له دليل فرعي خاص به، مما يجعل من الاسهل لتحليل نوع من التسمية.
  • أمثلة: تحتوي إرادتنا لاختبار الصور CNN.
  • وحدة pyimagesearch: تحتوي الأنواع نموذج SmallerVGGNet (سيتم استخدامها لاحقا في هذه المقالة).

هناك خمسة ملفات في الدليل الجذر:

  • الصورة الناتجة بعد النصي التدريبية التي تدير تدريب / اختبار دقة والفشل الأسعار: plot.png
  • lb.pickle: تسلسل LabelBinarizer الملف الهدف - يحتوي على آلية بحث من نوع إلى مؤشر اسم الأنواع
  • pokedex.model: هذا هو تسلسل ملف نموذج Keras التفاف الشبكة العصبية (ملف أي الأوزان)
  • train.py: سوف نستخدم هذا البرنامج النصي لتمرين Keras CNN، مقسمة دقة معدل سعر / فشل، ثم CNN وثنائي التسمية تسلسل على القرص.
  • classify.py: اختبار سيناريو

Keras وCNN هيكل

الشكل 2: أ ما أسميه "SmallerVGGNet" من VGGNet الشبكة العصبية، والتي سيتم استخدامها للتدريب وKeras مع المصنف التعلم العميق.

هيكل CNN سوف نستخدم VGGNet هو المتغيرات شبكة صغيرة وصغيرة الحجم. سيمونيان وZisserman قدم في هم 2014 ورقة جدا ديب التلافيف شبكات للالاعتراف على نطاق واسع صورة في.

البنية الطبقية VGGNet مع هذه الخصائص:

  • زيادة فقط عمق 3 3 التفاف تداخل كل طبقة أخرى.
  • باستخدام المجمعة لتحقيق أقصى قدر من الحد من حجم.
  • مقارنة Softmax إلى المصنف، والطبقة النهائية الأولوية مرتبطة بشكل كامل الشبكة.

أفترض أنك قد قمت بتثبيت وتكوين Keras على النظام الخاص به. إن لم يكن، وهنا بعض الروابط لمعرفة المزيد عن عمق المبادئ التوجيهية تكوين بناء بيئة:

  • تم تكوين بيثون لاستخدام التعلم العميق أوبونتو
  • باستخدام بيثون بناء أوبونتو 16.04 + CUDA + GPU دراسة متعمقة
  • تكوين ماك لاستخدام بايثون دراسة متعمقة

إذا كنت ترغب في تخطي بيئة التعلم التكوين العمق، وأنا ننصح باستخدام ما يلي تهيئتها مسبقا سحابة كيانين:

  • الأمازون AMI للاستخدام لفي عمق تعلم بايثون
  • العلوم البيانات مايكروسوفت الجهاز الظاهري (DSVM) للتعلم العميق

الآن دعونا تبدأ نسخة مصغرة من BGGNet، وهي SmallerVGGNet. إنشاء smallervggnet.py اسمه في pyimagesearch ملف وحدة جديدة، إدراج التعليمات البرمجية التالية:

أولا، نحن حدة الإدخال - لاحظ أن يأتون من Keras، وقد شملت كل مع بيثون دورات في التعلم العميق لرؤية الحاسوب.

ملاحظة: إنشاء ملف __init__.py في pyimagesearch، لذلك بيثون يعرف هذا المجلد هو وحدة نمطية. إذا كنت لم تكن مألوفة مع هذه الوثيقة أو كيفية إنشاء وحدة __init__.py معهم، لا تقلق، مع آخر قسم "تحميل" من هذه المقالة لتحميل بلدي بنية الدليل، وشفرة المصدر وقاعدة بيانات نموذج + صور.

هنا، نحدد فئات SmallerVGGNet:

الطريقة نحن بحاجة لبناء أربعة المعلمات:

  • عرض: عرض صورة
  • ارتفاع: ارتفاع الصورة
  • عمق: عمق الصور - وتسمى أيضا عددا من الأنفاق
  • فئات هي: عدد من الأنواع في قاعدة البيانات (التي سوف تؤثر على طبقة النهائية للنموذج).

في هذا المنصب، وكنا خمسة أنواع من بوكيمون، ولكن إذا قمت بتحميل أكثر من كافية صورة العينة لكل فئة، يمكنك استخدام الأنواع بوكيمون 807!

ملاحظة: سوف نستخدم 96 * 96، وعمق الصورة المدخلات 3. تذكر هذا، على النحو الذي أوضحناه عندما يمر من خلال المعلمات المكانية للحجم المدخلات الشبكة.

لأننا نستخدم TensorFlow مترجم الخلفية، ونحن نستخدم قناة البيانات الأخيرة لترتيب الشكل المدخلات، ولكن إذا كنت تريد استخدام القناة الأولى (Theano، وما إلى ذلك)، وسوف تتم معالجتها تلقائيا في خط 23-25.

الآن نبدأ إضافة طبقات في نموذج:

هذه هي الأولى لدينا = CONV > RELU = > كتلة POOL.

3 3 التفاف طبقة النوى 32 مرشحات. نحن نستخدم وظيفة تفعيل RELU بعد منح التوحيد. POOL حجم طبقة POOL من صور 3 3 للحد من المعلمات المكانية من 96 96 إلى 32 32 (سوف نستخدم الصورة المدخلة من 96 96 3 لتدريب الشبكة).

كما ترون في التعليمات البرمجية، سوف نستخدم الشبكة لتجاهل هذه الوظيفة. عشوائيا يتم قطع آلية التخلص من العقدة بين المستوى الحالي إلى المستوى التالي ل. تم عشوائيا كسر أدرجت الدفعة عملية التدريب بشكل طبيعي في تجاهل نموذج - يستخدم طبقات ليس عقدة واحدة للتنبؤ فئة معينة، والهدف، أو حواف الزاوي.

وأضيف هنا قبل مواصلة استخدام طبقة POOL (CONV = > RELU) * 2 طبقة.

CONV وتعدد طبقات مكدسة معا RELU (المكانية تخفيض البعد قبل الفحص)، بحيث يمكن الحصول على أكثر ميزة الغنية.

ملاحظة:

زيادة حجم التصفية، 32-64. وأعمق الشبكة، وأصغر حجم من حجم الفضاء، ونحن سوف تكون قادرة على معرفة المزيد عن مرشحات.

نحن خفض الحد الأقصى لحجم التجمع في 3 32 2، بسرعة كبيرة جدا لضمان أننا لا تقلل من الأبعاد المكانية.

هذه الاستخدامات مرحلة التخلص منها قطعة مرة أخرى.

الآن إضافة مجموعة أخرى (CONV = > RELU) * 2 = > POOL:

وقد لاحظنا أن حجم مرشح إلى 128. يتم إسقاط 25 من العقد مرة أخرى للحد من الإفراط في تركيب.

وأخيرا، لدينا مجموعة من FC = > طبقة RELU ومصنف softmax:

تتكون طبقة متصلة بشكل كامل عن طريق المحركات الخطية، وJiaozheng الكثيفة (1024) لتحديد دفعة التوحيد.

وأخيرا، هل هذا مرة واحدة مرات التخلص منها. الملاحظات خلال التدريب، ونحن تجاهل 50 من العقد. في ظل الظروف العادية، لدينا طبقة مرتبطة ارتباطا كاملا سوف يستخدم معدل 40-50 تجاهل تجاهل والكثير من معدل الانخفاض أقل، عادة 10-25 في طبقة يلقي طبقة السابقة (إذا كان هناك تجاهل استخدام جميع طبقات).

نحن softmax المصنف لاتقان هذا النموذج، المصنف يمكن التنبؤ احتمال وجود نوع ردود الفعل لكل الأنواع.

في بداية هذا القسم في FIG. 2 هو صورة للهيكل الشبكة قبل طبقات SmallerVGGNet. إذا كنت تريد أن ترى Keras CNN السلامة الهيكلية للSmallerVGGNet، يمكنك إدخال هذا الرابط

https://www.pyimagesearch.com/wp-content/uploads/2018/04/smallervggnet_model.png.

تنفيذ البرنامج النصي لدينا تدريب CNN + Keras

منذ تم الانتهاء SmallerVGGNet، يمكننا استخدام Keras لتدريب التفاف الشبكة العصبية.

فتح ملف جديد باسم train.py، وبإضافة التعليمة البرمجية التالية، ونحن تحميل حزم والمكتبات المطلوبة هنا.

سوف نستخدم "AGG" matplotlib الخلفية حفظ الصورة في الخلفية. (الصف الثالث)

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

في السطر السابع تحميل محسن آدم، ومحسن لشبكة التدريب.

LabelBinarizer (خط التاسع) هي فئة هامة تسمح لنا:

  • إدخال قائمة من أنواع العلامات (مثل، نيابة عن السلاسل في البشر قاعدة بيانات يمكن قراءة الملصق نوع)
  • يتم تحويل نوع علامة في ناقلات ترميز واحد الساخنة.
  • دعونا نلقي النوع من البطاقات صحيح التنبؤ Keras CNN، ووضعها في تسمية الذي يمكن قراءته.

على PyImageSearch بلوق أنا كثيرا ما يطلب كيفية تحويل سلسلة إلى نوع علامة صحيح والعملية العكسية. الآن عليك أن تعرف لاستخدام الطبقة LabelBinarizer.

وظيفة train_test_split (خط 10) لخلق التدريب وتقسيم الاختبار. لاحظ أيضا أن يتم تحميل خط 11 مع SmallerVGGNet-- هذا هو آخر واحد اكتمال Keras CNN.

قراء هذا بلوق هي مألوفة مع بلدي حزمة التثبيت imutils الخاصة. إذا لم تقم بتثبيت / رفع مستواه، ويمكنك تثبيته من هذا القبيل:

إذا كنت تستخدم بيئة بيثون الظاهرية (في PyImageSearchg بلوق كما نفعل دائما)، تأكد من استخدام الأمر workon قبل تثبيت / ترقية imutils إلى بيئة افتراضية على مستوى أعلى.

الآن، دعونا نحلل البيان سطر الأوامر:

لسيناريو التدريب لدينا، تحتاج إلى استخدام العبارة ثلاث سطر الأوامر:

  • --dataset: يتم إدخال هذا إلى مسار قاعدة البيانات. في مجموعة البيانات من قاعدة بيانات الدليل، وهذا دليل لديها الدلائل تمثل كل الأنواع. في كل دليل فرعي، وهناك حوالي 250 صورة من بوكيمون. انظروا إلى بداية بنية الدليل.
  • --model: هذا هو مسار إخراج نموذج - البرنامج النصي التدريب تدريب النموذج وتصديره إلى القرص.
  • --labelbin: هذا هو مسار التسمية الناتج الثنائية و- كما سترون، فإننا استخراج نوع من التسمية من الدليل اسم مجموعة البيانات وإنشاء بطاقات عنونة جهاز ثنائي.

كما أن لدينا بيان اختياري "-plot". إذا لم تقم بتحديد مسار معين / اسم الملف، ثم plot.png هذا الملف سيتم وضعها في دليل العمل الحالي.

أنت لا تحتاج إلى تعديل خط 22-31 لتوفير دليل ملف جديد. وسيتم تنفيذ بيان سطر الأوامر في وقت التشغيل. إذا كنت لا تفهم، ثم يرجى مراجعة لي شيء وأنا أقرأ بوين بيان سطر الأوامر.

الآن أننا قد انتهينا من بيان سطر الأوامر، بداية من بعض المتغيرات الهامة الآن هي:

35-38 تهيئة المتغيرات الهامة لKeras CNN التدريب.

  • العهود: سنكون عدد إجمالي عصر شبكة من التدريب. (أي دون شبكة "رؤية" عددا من الأمثلة والتدريب ووضع يتعلم)
  • INIT_LR: معدل التعلم يبدأ --1e-3 هي القيمة الأولية لآدم سنقوم محسن شبكة التدريب.
  • BS: سندخل في الصورة مرتبطة بكثير لتدريب الشبكة. هناك العديد من حزم، قيمة BS تسيطر على حجم حزم في كل عصر.
  • IMAGE_DIMS: نحن نستخدم مساحة الصورة المستوردة. الصورة المدخلة هي 96 96 بكسل، وهناك ثلاث قنوات (RGB). كما أنني لاحظت أن SmallerVGGNet مصمم للتعامل مع 96 96 الصورة.

--Data نحن تهيئة قائمتين والعلامات، فهي صور وبطاقات المعالجة قبل.

46-48 مسار الخط في كل الصور التي تم الحصول عليها والتبديل عشوائيا منه.

من هذا، ونحن ننظر في كل imagePahts دورة:

في خطنا تداول 51 وimagePaths تحميل صورة (خط 53)، وضبط حجمها للتكيف مع نموذجنا (خط 54).

الآن تحديث البيانات والعلامات القائمة.

استخدام Keras وظيفة img_to_array لتحويل الصورة إلى مجموعة Keras (خط 55) غير متوافق، ثم بيانات الصورة المنشورة على قائمتنا (خط 56).

للحصول على قائمة من التسميات، نحن استخراج التسمية من الصف 60 من مسار الملف وإضافته إلى قائمة (خط 61).

لماذا هذا النوع من عملية تحليل العلامة فعالة؟

ونحن نعتزم إنشاء بنية دليل بيانات للحصول على صيغة الشكل التالي

المسار الأول 60 بواسطة فاصل صف واحد، يمكننا فصل مسار في صفيف، ومن ثم من الثاني إلى الزحف الأخير في قائمة - تسمية النوع.

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

نواصل. حدث شيء في كتلة التعليمات البرمجية التالية - المزيد من المعالجة، binarization وعلامة بيانات التجزئة.

نحن البيانات الأولى في مجموعة البيانات نمباي، ثم لضبط كثافة بكسل مجموعة (خط 64). ونحن أيضا على خط 65 على قائمة من العلامات تحويلها إلى بيانات نمباي. ظهرت معلومات تشير إلى حجم بيانات المصفوفة (في MB).

ثم أننا binarized LabelBinarizer تقرير وطني scikit-تعلم تسمية (أول 70 الصفوف و71).

مع مزيد من الدراسة أو أي آلة التعلم والممارسة المعتادة هي تدريب فرق الاختبار. 75 و 76 في الصف الأول، ونحن إنشاء قسم للبيانات عشوائي 80/20.

ثم، فإن البيانات صورة مكبر للصوت المشروع أنشأنا:

وبما أننا نتعامل مع نقاط بيانات محدودة (كل فئة < 250 صورة)، يمكننا استخدام البيانات في عملية التدريب لتحقيق صورة المزيد (صورة موجود بالفعل للتدريب) على أساس نموذج.

يجب أن تكون البيانات أداة أساسية لتضخيم كل عمق الممارسين التعلم.

نحن تهيئة ImageDataGenerator على خط 79-81.

من هنا يمكننا تجميع نموذج والبدء في التدريب.

في 85 الصفوف الأولى و 86، ونحن تهيئة 96 96 3 حجم مساحة المدخلات Keras CNN. وأكرر مرة أخرى Jiangzai هذا السؤال، لأنني طرحت هذا السؤال مرات عديدة --SmallerVGGNet تم تصميم لقبول الصور مدخلات 96 96 3. إذا كنت ترغب في استخدام أبعاد مكانية مختلفة، قد تحتاج:

  • إما تقليل عمق شبكة صورة أصغر
  • إما لزيادة عمق الصورة شبكة واسعة

لا أعمى لتغيير رمز. النظر في الصورة أكبر أو أصغر من معنى!

علينا أن نتعلم لاستخدام سرعة اضمحلال آدم محسن (خط 87)، ومن ثم استخدام مجموعة متنوعة من عبر الكون الترجمة نموذجنا، لأن لدينا > اكتب 2 (خطوط 88 و 89).

ملاحظة: إذا كان هناك اثنين فقط من الفئات، يجب عليك استخدام الصليب بوصفها وظيفة فقدان الانتروبيا الثنائية.

من هنا، ونحن نستخدم طريقة Keras fit_generator لتدريب شبكة (خطوط 93-97 الأولى). كن صبورا - قد يستغرق بعض الوقت، اعتمادا على وحدة المعالجة المركزية الخاصة بك أو GPU للتدريب مع.

وبمجرد الانتهاء Keras CNN التدريب، ونحن سوف تريد حفظ (1) نموذج و (2) العلامة الثنائية، لأننا عندما لا تستخدم شبكة لاختبار مجموعة التدريب / اختبار من الصور، ونحن بحاجة إلى تحميلها من قطعة والقرص.

نحن حفظ نموذج (خط 101) وتسمية ثنائي (خطوط 105-107 الأولى)، حتى نتمكن من استخدامها في البرنامج النصي بعد classify.py.

تسمية ملف ثنائي يحتوي على نوع من القاموس مؤشر الأنواع التسمية والمقياس البشري. الغرض منه هو السماح لنا باستخدام هذا النوع ليس لدينا لتسمية Keras CNN النصي مع ممثل قيمة ثابتة.

في النهاية، نحن يمكن تقسيمها إلى التدريب ودقة الهزيمة.

اخترت لحفظ الصور الخاص بي على قرص (خط 121) بدلا من عرضه، وذلك لسببين:

  • يمكنني استخدام خادم سحابة دون العرض،
  • أردت أن أتأكد من لا ننسى لحفظ هذه الصور.

التدريب Keras مع CNN

الآن نحن على استعداد لتدريب Pokdex CNN.

تأكد من قراءة قسم "تحميل" من هذه بلوق إلى تحميل شفرة + البيانات.

ثم تنفيذ العبارة التالية لتدريب النموذج. ضمان حسن لتقديم بيان سطر الأوامر.

اطلع على نتائج البرنامج النصي التدريب، وجدنا Keras CNN حصل عليها:

  • دقة تصنيف 96.84 على مجموعة التدريب
  • معدل دقة 97.07 على مجموعة اختبار

الفشل في القطار ودقة هي كما يلي:

الشكل (3): Pokdex مع Keras التدريب عمق التعلم التدريب المصنف وفشل التحقق من صحة / ثانية دقة ورقة

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

CNN إنشاء النصي والتدريب Keras

وبما أننا قد تم تدريبهم على CNN، نحن بحاجة إلى إكمال السيناريو الذي ليس في منطقتنا تصنيف مجموعة التدريب / اختبار من الصور. فتح ملف جديد باسم classify.py، وبإضافة التعليمة البرمجية التالية:

أولا، تحميل حزمة اللازمة (خطوط 2-9).

تحليل بيان سطر الأوامر من هنا.

لدينا ثلاثة سطر الأوامر تحليل الاحتياجات بيان الضروري:

  • نموذج: الطريق قمنا بتدريب مجرد نموذج.
  • labelbin: مسار تسمية ملف ثنائي.
  • صورة: نحن أدخل المسار إلى ملف الصورة.

خط ثلاثة القيادة في 12-19. وتذكر أنك لا تحتاج إلى تعديل هذه الأوامر - في الجزء التالي سوف اقول لكم كيفية استخدام سطر الأوامر البيان الوارد وقت التشغيل لتشغيل هذا البرنامج.

ثم، ونحن ما قبل الحمل والصور.

ونحن الآن تحميل الصورة المدخلة (خط 22)، واسمه لإخراج القيام به النسخ الاحتياطي، للتحضير لهذا المعرض. (خط 23)

ثم استخدام نفس الأسلوب من التدريب صورة تجهيزها (خطوط 26-29).

ثم، تحميل نموذج ثنائي والتسمية، ثم الصورة تصنيف:

من أجل تصنيف الصورة، ونحن بحاجة إلى نموذج وتسمية ثنائي. نحن تحميل في كلا الخطين 34 و 35.

ثم، ونحن تصنيف الصور وإنشاء بطاقات (خطوط 39-41).

ما تبقى من كتلة التعليمات البرمجية هي العرض:

في خط 46 و 47، ونحن استخراج اسم بوكيمون من اسم الملف ومقارنتها مع التسمية. وسيستند المتغيرات الصحيحة على وأظهرت النتائج "صحيح" أو "غير صحيحة". يبدو خطين تحتوي على فرضية أن الملف الذي إدخال اسم الملف هو التسمية الحقيقية.

نشرع على النحو التالي:

  • واحتمال نسبة إضافية من "الصحيح" / "غير صحيحة" في تسمية النص القائم على (خط 50).
  • الناتج صورة تم تغيير حجمها يجعلها الشاشة المناسبة (خط 51).
  • العلامات التي رسمت على النص الناتج صورة (خطوط 53 و 52).
  • عرض صورة الانتاج والانتظار للحصول على مفتاح الخروج (خطوط 58 و 57).

صور تصنيف مع CNN وKeras

Classify.py جاهزة الآن لتشغيل البرنامج النصي!

تأكد أن لديك قسم "تحميل" (أقل من هذه الوظيفة) للحصول على الصورة كود +.

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

الشكل 4: Keras وCNN تصنف المدخلات الصورة بشكل صحيح

الآن مع الكرامة وشرسة بلوم بر البوكيمون لعبة مملوءة بالهواء لاختبار نموذج لدينا.

الشكل 5: Keras التعلم العميق المصنف سرية بشكل صحيح إدخال الصورة الصورة مرة أخرى.

محاولة فائقة حلم (بوكيمون المعدلة وراثيا) نموذج ثلاثي الأبعاد للعبة.

كان Keras في CNN، وعمق التعلم بيثون، ونحن قادرين على الصور مدخلات تصنيف بشكل صحيح: الشكل (6).

إذا كان Pokdex لا تعترف بيكاتشو، ثم ماذا يفعل معها!

الرقم 7: يمكننا أن نحدد مع Keras ماريو نموذج مبدع.

الآن محاولة جميل سكويرتل بوكيمون.

الرقم 8: تصنيف الصحيح من الصور مع Keras وCNN.

وأخيرا، تصنف مرة أخرى التنين حريق صغير الذيل. كان هذه المرة خجولة جدا وكانت مخبأة في بلدي جزء من العرض أدناه.

الرقم 9: المثال الأخير من صورة مدخلات تصنف بشكل صحيح عن طريق Keras وCNN.

هذه بوكيمون في كل واحد وأنا لا تفي بوكيمون جديد.

حاليا، هناك حوالي 807 نوعا من أنواع مختلفة من بوكيمون. يتم تدريب دينا المصنف لتصنيف خمسة بوكيمون مختلفة (لأغراض البساطة).

إذا كنت ترغب في تدريب المصنف لتحديد Pokdex بمزيد من بوكيمون، سوف تكون أكثر أكثر من كل نوع من أنواع الصور التدريب. من الناحية المثالية، يجب أن نهدف إلى أن الصورة 500-1000 في كل فئة أردت أن تعرف أين.

من أجل الحصول على صورة والتدريب، وأقترح عليك استخدام بنج البحث عن الصور API مايكروسوفت، من محرك البحث عن الصور جوجل أسهل في الاستخدام.

قيود من هذا النموذج

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

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

ويرجع هذا جزئيا إدخال البيانات لدينا. بوكيمون غير صحيح الواضح وأنها لا تظهر الصور (بالإضافة إلى نموذج ثلاثي الأبعاد وأفخم لعب).

معظم صورنا من اللوحة مروحة، أو لقطة من فيلم / TV. وبالإضافة إلى ذلك، نحن فقط عدد قليل من كل نوع من البيانات (الصور 225-250).

من الناحية المثالية، عندما كنا تدريب التفاف الشبكة العصبية من كل فئة لديها الصورة 500-1000 على الأقل. تذكر هذا عندما كنت تتعامل مع البيانات الخاصة بك.

يمكننا استخدام Keras عمق نموذج التعلم باعتباره API REST؟

إذا كنت ترغب في استخدام هذا النموذج (أو غيرها من نموذج التعلم العميق) باعتباره API REST، لقد كتبت ثلاث وظائف بلوق لمساعدتك على البدء:

  • إنشاء API بسيطة REST التعلم العميق Keras +
  • A API REST قابلة للتعلم عمق Keras +
  • استخدامها مع التعلم العميق وKeras، رديس، قارورة، اباتشي

ملخص

في بلوق وظيفة اليوم تعلمت كيفية بناء شبكة التفاف العصبية مع مكتبة التعلم عميقة Keras الصورة.

طرق جمعنا مجموعة البيانات في بلوق وظيفة في الأسبوع الماضي تحدثت بالفعل عن.

مجموعة البيانات المتوفرة لدينا يحتوي على خمسة أنواع من الصورة بوكيمون في 1191.

التفاف الشبكة العصبية وKeras، يمكننا الحصول على 97.07 من الدقة. وذلك لأن قوية جدا:

  • مجموعة البيانات لدينا ليست
  • المعلمات شبكتنا أقل

العنوان الأصلي:

Keras والشبكات العصبية التلافيف (CNNs)

الرابط الأصلي:

https://www.pyimagesearch.com/2018/04/16/keras-and-convolutional-neural-networks-cnns/

مقدمة المترجم

تشانغ تيان يو، جامعة شنغهاي جياوتونغ الجامعية الفيزياء، ودرجة الماجستير في القراءة البيومترية جامعة إيموري. في وقت لاحق نريد لمواصلة دراساتهم في اتجاه والإحصاء الحيوي. أريد الولايات المتحدة لدراسة والعمل على البقاء في. الأمل في أن عشاق بيانات أصدقائنا!

يرجى تحديد مستنسخة بيانات الإرسال THU

أفراد العمليات: ران هيل

نماذج التعلم الآلي، وقادرة على التمييز بين سيتشوان وهونان ذلك؟

طور علماء الخفافيش الروبوت، الخفافيش تقليد عمل رحلة حقيقية 57

ارتفعت أربعة! ووهان بين مئات من مدن العالم، والأصدقاء الدوليين الذين لديهم يأتي اليوم

في تلك الليلة، وقال انه رقصت أمام خط المرمى، أول من خلق معجزة في تاريخ دوري أبطال أوروبا!

جمع البضائع الجافة | تعليم الكمبيوتر على الاطلاق لا يمكن أن يغيب عن 10 مواقع (المدرجة رابط الموقع)

قاسية جدا! حرائق الغابات في كاليفورنيا حرق الآلاف من التخلي عن الحيوانات الزرافة تعرضت من قبل مالكيها

Kotlin التهديد، بيثون الهجوم المضاد، مبرمج ما تحتاج إلى ترقية المهارات؟ (تحميل تقرير)

لعبت طائرات بدون طيار، ولكن هل لعبت المثبتة في الهاتف في حال UAV

الجاف | 6 تشونغ تفعيل وظيفة نقاط المعرفة الأساسية، ومن المؤكد أن سيد!

AI الجاف حصة: ذكي التطبيقات التي تعتمد على البيانات في التجارة صنع القرار (الرسومات الحل)

تحليل 40000000 + البيانات، والمواهب أرباح إغراء كم؟ (تحميل تقرير)

دونغفنغ هوندا UR-V: المستهلكين النخبة عودة إلى الاختيار العقلاني