كيفية تدريب نموذج ML الأساسي مع Turi إنشاء لتصنيف سلالات الكلاب

تدريب نموذج تصنيف الكلب تولد باستخدام توري إنشاء.

في هذا البرنامج التعليمي ، سوف تتعلم كيفية تدريب نموذج Core ML لتصنيف مخصص لتربية الكلاب لاستخدامه في تطبيقات iOS و macOS. سيتمكن نموذج ML ML الخاص بك من التمييز بين خمسة سلالات مختلفة بنهاية هذا البرنامج التعليمي!

قد تتذكر أن شركة Apple قد حصلت على شركة Turi للتعلم الآلي والذكاء الاصطناعي منذ بضع سنوات مقابل 200 مليون دولار ؛ يوفر أدوات قوية لإنشاء نماذج متقدمة للتعلم الآلي في فترة زمنية قصيرة.

في هذا البرنامج التعليمي ، ستتعلم تثبيت Turi Create على جهاز Mac الخاص بك ، وإنشاء برنامج نصي Python ، واستخدام هذا البرنامج النصي لتدريب نموذج Core ML الذي يمكنك سحبه مباشرةً إلى مشاريع Xcode الخاصة بك وتنفيذها بسرعة في تطبيقاتك.

ابدء

قبل أن نبدأ الجزء الفعلي للتعلم الآلي منه ، دعنا نتخلص من تثبيت Turi و Python أولاً - وبطبيعة الحال ، ستحتاج إلى التأكد من أن أجهزتك وبرامجك تفي بمتطلبات Turi.

المتطلبات

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

توري إنشاء الدعم:

  • ماك 10.12+
  • Linux (مع glibc 2.12+)
  • نظام التشغيل Windows 10 (عبر WSL)

يتطلب إنشاء توري:

  • بيثون 2.7 ، 3.5 ، 3.6
  • x86_64 العمارة
  • على الأقل 4 جيجابايت من ذاكرة الوصول العشوائي

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

التركيب

يعد تثبيت Turi Create بسيطًا إلى حد ما ، خاصةً إذا كنت على دراية بسطر الأوامر. على الرغم من أنك قد تختار استخدام إصدار أحدث من Python ، إلا أنني سأستخدم Python 2.7 في هذا البرنامج التعليمي.

في MacOS Mojave ، يتم تثبيت Python 2.7 افتراضيًا ، لذلك كل ما عليك فعله هو التحقق من الإصدار. على جهاز Mac ، افتح التطبيقات> أدوات مساعدة> المحطة الطرفية أو ببساطة ابحث عنها باستخدام اختصار لوحة المفاتيح Command-Space.

للتحقق من إصدار Python على جهاز Mac ، أدخل:

بيثون $ - الإصدار

سيخبرك هذا بإصدار Python ، ويجب أن تبدو وحدة التحكم الخاصة بك كما يلي:

الشكل 1: التحقق من إصدار بايثون

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

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

لتثبيت Turi Create ، فقط أدخل ما يلي في النافذة الطرفية:

دولار نقطة تثبيت turicreate

هذا كل شئ! تم تثبيت Turi Create بنجاح على جهاز Mac الخاص بك ، وهو جاهز للاستخدام. يمكنك الآن إنشاء التصنيف والكشف والانحدار وأنواع أخرى من النماذج.

بيانات

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

لكي يتمكن Turi من التعرف على الصور المصنفة مسبقًا ، ستحتاج إلى تنظيمها بناءً على ما تمثله. على سبيل المثال ، ستكون جميع صور المسترجع الذهبي في مجلد واحد ، بينما ستكون جميع صور labradoodles في مجلد آخر.

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

هيكل المجلد

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

الشكل 2: بدء بنية المجلد

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

تدريب المصنف

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

ملف بايثون

أولاً ، سنحتاج إلى مكان لإلقاء أفكارنا (أي بالطبع في بايثون). إذا كان لديك بالفعل محرر يدعم Python ، مثل Atom أو بيئة تطوير متكاملة مثل PyCharm ، يمكنك استخدامها لإنشاء ملف فارغ يسمى dog_breeds.py.

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

الشكل 3: بنية المجلد باستخدام ملف Python

لإنشاء ملف جديد ، أدخل أولاً في الدليل الهدف:

$ cd ml_classifier

ثم ، قم بإنشاء ملف جديد باسم dog_breeds.py.

$ touch dog_breeds.py

فويلا! المجلدات والملفات والصور الخاصة بك كلها في المكان الذي تحتاج إليه ، وكنت على استعداد للمتابعة مع الخطوة التالية. سنستخدم Xcode لفتح ملفنا ، لذلك تأكد من تثبيته وتحديثه.

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

أخيرًا ، لقد حان الوقت للبدء في إخبار Turi بما يجب القيام به عبر ملف Python الذي أنشأناه للتو. إذا قمت بالنقر نقرًا مزدوجًا فوق الملف ، فيجب أن يتم فتحه افتراضيًا في Xcode ، إذا كنت قد قمت بتثبيت البرنامج. إذا لم يكن كذلك ، يمكنك أيضًا استخدام محرر آخر أو Python IDE.

1. استيراد الأطر

استيراد turicreate

في الجزء العلوي من الملف ، ستحتاج إلى استيراد إطار عمل إنشاء Turi. إذا أردت ، يمكنك إنشاء اسم للرجوع إليه بإضافة <اسمك>. على سبيل المثال ، إذا أردت الإشارة إليها باسم tc في الكود ، فيمكنك الكتابة:

استيراد turicreate كما ح

هذا من شأنه أن يسمح لك أن تسميها tc بدلا من كتابة turicreate. في هذا البرنامج التعليمي ، سأستخدم النسخة الكاملة ، وأطلق عليها اسم turicreate لتقليل الغموض.

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

استيراد نظام التشغيل

2. تحميل الصور

البيانات = turicreate.image_analysis.load_images ("images /")

هنا ، نقوم بتخزين جميع الصور في مجموعة البيانات الخاصة بنا في متغير يسمى البيانات. نظرًا لأن ملف dog_breeds.py موجود في نفس دليل مجلد الصور ، فيمكننا ببساطة وضع "images /" كمسار.

3. تحديد الملصقات

الآن وقد أصبح لدى Turi Create جميع صورك ، تحتاج إلى ربط أسماء المجلدات باسم التسمية. أسماء التصنيف هذه هي ما سيتم إرجاعه في نموذج Core ML عندما يتم استخدامه في تطبيق iOS أو MacOS.

data ["label"] = data ["path"]. apply (lambda path: os.path.basename (os.path.dirname (path)))

يتيح لك ذلك تعيين جميع أسماء المجلدات الخاصة بك إلى اسم "label" ، والذي يخبر Turi Create بأن جميع الصور الموجودة في مجلد "cocker_spaniel" هي بالفعل Cocker Spaniels ، على سبيل المثال.

4. حفظ باسم SFrame

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

data.save ( "dog_classifier.sframe")

يسمح لك هذا بتخزين الصور التي تحمل علامات لاستخدامها في الخطوة التالية. هذا نوع بيانات قياسي إلى حد ما في صناعة التعلم الآلي.

التدريب والاختبار

بعد قيام Turi Create بكافة صورك المصنفة في مكانها ، فقد حان الوقت لإدخال امتداد المنزل وتدريب النموذج الخاص بك في النهاية. نحتاج أيضًا إلى تقسيم البيانات بحيث يتم استخدام 80٪ للتدريب ، ويتم حفظ 20٪ لاختبار النموذج بمجرد انتهائه من التدريب - لن يتعين علينا اختباره يدويًا.

1. تحميل SFrame

الآن ، نحن بحاجة إلى تحميل إطار SFrame الذي أنشأناه للتو في الخطوة السابقة. هذا هو ما سنستخدمه لتقسيم بيانات الاختبار والتدريب لاحقًا.

البيانات = turicreate.SFrame ("dog_classifier.sframe")

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

2. تقسيم البيانات

لقد حان الوقت لتقسيم البيانات. بعد رمز SFrame الخاص بك ، أضف ما يلي:

اختبار ، تدريب = data.random_split (0.8)

يقسم هذا الرمز البيانات من 80 إلى 20 بشكل عشوائي ويخصصها لمتغيرين هما الاختبار والتدريب ، على التوالي. الآن ، سيختبر Turi النموذج الخاص بك تلقائيًا دون الحاجة إلى توفير صور الاختبار يدويًا وإنشاء تطبيق - إذا كنت بحاجة إلى إجراء تعديلات ، فلن تحتاج إلى تنفيذها بالكامل أولاً ، وبدلاً من ذلك ، يمكنك القيام بها مباشرة في Python ملف.

3. التدريب والاختبار والتصدير

عملك الشاق قد آتت أكله! في هذا السطر من شفرة Python ، ستخبر Turi Creat فقط بتدريب النموذج الخاص بك ، مع تحديد الهيكل الذي تريد استخدامه.

المصنف = turicreate.image_classifier.create (اختبار ، هدف = "تسمية" ، نموذج = "resnet-50")

أنت ببساطة تطلب من Turi استخدام بيانات الاختبار الخاصة بك (المحددة مسبقًا) ، واستخدامها للتنبؤ بالتسميات (استنادًا إلى بنية المجلد من قبل) ، أثناء استخدام resnet-50 ، التي تعد واحدة من أدق نماذج نماذج التعلم الآلي. .

لاستخدام بيانات الاختبار الخاصة بك والتأكد من دقة النموذج الخاص بك ، أضف هذا:

اختبار = المصنف. تقييم (التدريب)
اختبار الطباعة ["الدقة"]

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

أخيرًا وليس آخرًا ، يمكنك حفظ الطراز الخاص بك مباشرة في نظام الملفات الخاص بك باستخدام هذا الخط المفرد بعد إعطاء اسم مفيد له:

classifier.save ( "dog_classifier.model")
classifier.export_coreml ( "dog_classifier.mlmodel")

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

تشغيل والانتاج

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

تشغيل ملف بايثون

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

الثعبان

انتاج |

بعد بضع دقائق من التدريب ، سيرافق مجلد الصور وملف dog_breeds.py إطار SFrame ومجلد نموذج وملف .mlmodel ، وهو نموذج Core ML الخاص بك!

ستظهر لك أيضًا مخرجات في نافذتك الطرفية ، والتي ستبدو كما يلي:

الشكل 4: الإخراج بعد تشغيل بيثون

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

خاتمة

أتمنى أن تستمتع بقراءة هذا البرنامج التعليمي بقدر ما استمتعت بصنعه! فيما يلي بعض الخطوات حول من أين تذهب من هنا. إذا كنت ترغب في معرفة كيفية استخدام نموذج Core ML في تطبيق iOS ، فراجع أحد البرامج التعليمية الأخرى:

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

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

من السهل دعم عملي!

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