وصف الصورة يشبه GenAI، ولكنه أصغر بمقدار 200 مرة
قم بتدريب صورة محددة للمجال على نموذج الكلمات الرئيسية الذي يكون أخف وزناً بمقدار 200 مرة (9 ميجا بايت) ويعمل بزمن انتقال منخفض على أجهزة مثل Raspberry Pi 4.
الأشياء المستخدمة في هذا المشروع
مكونات الأجهزة
راسبيري باي 4 موديل B
وحدة كاميرا Raspberry Pi
تطبيقات البرمجيات والخدمات عبر الإنترنت
Edge Impulse Studio
قصة
خضعت تقنية معالجة الصور لبحوث مكثفة، وأصبح تطوير نماذج كشف الأجسام وتصنيف الصور أسهل حاليًا. على سبيل المثال، من خلال منصات الذكاء الاصطناعي مثل Edge Impulse، يُمكننا تدريب نموذج تصنيف صور ونشره في أقل من 5 دقائق! لم تعد الرؤية الحاسوبية تُمثل سؤال "كيف نبني هذا؟". الآن، يكمن التحدي الحقيقي في إيجاد طرق عملية ومفيدة لاستخدام نماذج الذكاء الاصطناعي لمعالجة الصور. بصفتي شغوفًا بالأنظمة المضمنة، أردتُ تجاوز تصنيف الصور وكشف الأجسام، من خلال إنشاء نموذج يُمكنه النظر إلى الصورة ووصفها باستخدام لغة طبيعية، مثل "لا يوجد مُشغّل بالقرب من الآلة"، وكل ذلك على الحافة باستخدام أجهزة مُقيدة.
في النهاية، تمكنتُ من بناء نموذج بسيط لتحويل الصورة إلى نص بحجم 9 ميجابايت، وهو صغير بما يكفي لتشغيله على أجهزة مثل Raspberry Pi (RPi). ومع ذلك، فإن الهدف النهائي من هذا المشروع هو تحويل الصورة إلى نص إلى وحدات تحكم دقيقة صغيرة، وفتح المجال لتطبيقات جديدة تُبرز فيها هذه الأجهزة الصغيرة. يمكن أن يُحسّن هذا مراقبة المساحات، والأتمتة، وأجهزة إنترنت الأشياء التي تراعي السياق، ومجموعة واسعة من تجارب الذكاء الاصطناعي الطرفي.
يستكشف الباحثون وشركات التكنولوجيا حاليًا تقنية ترجمة الصور، وهي تقنية تستخدم الرؤية الحاسوبية ومعالجة اللغة الطبيعية لإنشاء ترجمة ذات معنى للصور. ونظرًا لاستخداماتها العديدة المحتملة، مثل سهولة الوصول للأشخاص ذوي الإعاقة البصرية، وإنتاج المحتوى وفهمه لمحركات البحث، وغيرها، فإن ترجمة الصور تُستخدم على نطاق واسع وتُعدّ مجالًا دراسيًا مهمًا.
الهدف الرئيسي من تحويل الصورة إلى كلمات رئيسية هو إنشاء تسميات توضيحية دقيقة نحويًا وذات معنى، بالإضافة إلى ملاءمتها للسياق ووصفها. يتطلب هذا عملية معقدة لتحديد العناصر وعلاقاتها المتبادلة داخل الصورة، يليها إنشاء وصف متماسك. يُستخدم مُرمِّز أولًا لاستخراج السمات المرئية من الصورة. يمكن استخدام مُحوِّل بصري أو شبكة عصبية تلافيفية (CNN) كمُرمِّز. بعد ذلك، ومن خلال شبكة عصبية متكررة (RNN)، أو ذاكرة طويلة المدى قصيرة المدى (LSTM)، أو أي نموذج تعلُّم عميق آخر مُصمَّم للتعامل مع البيانات المتسلسلة، يُنتج مُفكِّك التشفير نصًا وصفيًا من السمات المُرمَّزة.
نظرة عامة على المشروع
في هذا المشروع، سنستكشف تقنية ترجمة الصور القائمة على الاسترجاع لإنشاء نموذج بسيط لتحويل الصورة إلى نص، واستخدامه لوصف سيناريوهات استخدام محددة لما يلي:
مراقبة الإنتاجية الشخصية: اكتشاف ما إذا كان الشخص يعمل أو مشتتًا بسبب هاتفه
مراقبة ذكية للمساحات لتوفير الطاقة: اكتشاف ما إذا كانت الأضواء مضاءة ولكن لا يوجد شخص في الغرفة
الزراعة الذكية: مراقبة صحة النباتات من خلال أنشطة مثل الري
يستخدم المشروع نصين برمجيين بلغة بايثون، أحدهما لجمع صور التدريب باستخدام كاميرا راسبيري باي، والآخر لتشغيل نموذج تحويل الصورة إلى كلمات مفتاحية من خلال جمع صور الكاميرا وإنشاء نصوص دلالية عنها. يتم تدريب النموذج على جوجل كولاب، وبعد ذلك يُستخدم Edge Impulse لنشر مسار الاستدلال بالكامل (المعالجة المسبقة والتنبؤ بالكلمات المفتاحية) على راسبيري باي. سنستكشف الأجزاء التالية من المشروع:
جمع الصور باستخدام كاميرا Raspberry Pi
إعداد العلامات لكل صورة
تدريب نموذج تصنيف متعدد العلامات في Google Colab
نشر النموذج المُدرَّب على Edge Impulse
تشغيل وصف البيئة في الوقت الفعلي باستخدام كاميرا Raspberry Pi
بخلاف نماذج الذكاء الاصطناعي التوليدي (GenAI)، مثل ChatGPT Vision، التي تتطلب مجموعات ضخمة من وحدات معالجة الرسومات (GPU)، وخطوط أنابيب تدريب معقدة، وميزانيات حسابية ضخمة، يعتمد هذا المشروع تصميمًا أكثر اقتصادًا. تُعدُّ تسميات الصور القائمة على الاسترجاع تقنيةً تُولِّد علامات/تسميات توضيحية للصور عن طريق اختيار وتعديل العلامات/التسميات التوضيحية الموجودة مسبقًا من قائمة، بدلاً من إنشاء علامات/تسميات توضيحية جديدة. يستفيد هذا النهج من فكرة أن العديد من الصور تشترك في ميزات وسياقات متشابهة، مما يسمح لنا بإعادة استخدام العلامات للصور المتشابهة سياقيًا، خاصةً في حالات الاستخدام الخاصة بالتطبيقات. تتميز هذه التقنية بالبساطة، وبناءً على البنية المستخدمة، يمكن أن يكون النموذج الناتج خفيفًا وكافٍ للتشغيل على الأجهزة محدودة الموارد. ومع ذلك، فإن هذه الطريقة خاصة بمجال معين، وتعتمد بشكل كبير على العلامات المُعدّة مسبقًا، وقد لا تكون مناسبة لبيئات النشر الأخرى.
يتم إقران كل صورة يدويًا بعلامات وصفية، مما يُنشئ مجموعة بيانات خفيفة الوزن ولكنها معبرة، مما يُجنِّب تعقيد إنشاء جمل كاملة. تُحمَّل بعد ذلك مجموعة بيانات الصور وملف نصي للوسوم إلى Google Colab، حيث تُحوِّل أنابيب المعالجة المسبقة جميع الصور إلى موترات موحدة، وتُحوِّل الوسوم إلى متجهات متعددة الوسوم. باستخدام التعلم بالنقل على MobileNetV2، يُدرَّب نموذج على ربط السمات المرئية بمتجهات الكلمات المفتاحية، متعلمًا بفعالية آلية استرجاع عالية السرعة تُعيِّن صورة جديدة لأقرب مجموعة من الواصفات (الكلمات) المُكتسبة. يُحمَّل النموذج الناتج بعد ذلك إلى Edge Impulse، مما يُتيح تحليل الأداء على الجهاز (استخدام الفلاش، واستخدام ذاكرة الوصول العشوائي، ووقت الاستجابة)، وتحسين النموذج، والنشر السلس على أي جهاز Edge AI (بما في ذلك وحدات التحكم الدقيقة) لديه موارد كافية لتشغيله.
هذا يعني أن:
لا يُولِّد النموذج جملًا جديدة.
بدلًا من ذلك، يكتشف الكلمات المفتاحية (الوسوم) من قائمة تُصف محتوى الصورة على أفضل وجه.
تُدمج هذه الوسوم المُتوقعة بعد ذلك في جملة بسيطة وواضحة.
جميع أكواد المصدر للمشروع متوفرة في مستودع GitHub هذا: Lightweight_image_description. مع سير كل شيء بشكل صحيح، ستحصل على نموذج مُدرّب متعدد العلامات، مُشتق من MobileNetV2، يُطابق الصور مع متجهات الكلمات المفتاحية.
كما نتقدم بجزيل الشكر لشركة Edge Impulse على دعمها المُستمر خلال هذا المشروع. إن القدرة على نشر نماذج ذكاء اصطناعي مُخصصة بسلاسة على مجموعة واسعة من الأجهزة، مثل Arduino وESP32 وRaspberry Pi، وغيرها، أمرٌ مُذهل. يُمكن أن يُتيح ربط الصور بالكلمات المفتاحية على هذه الأجهزة آفاقًا جديدة للتجارب وحلول حالات الاستخدام. بفضل أدواتها القوية وإعداداتها المُيسّرة للمطورين، تُعتبر Edge Impulse رائدة في تطوير الذكاء الاصطناعي على الحافة.
01. إعداد الأجهزة وتجهيز مجموعة البيانات
في هذا المشروع، يُستخدم Raspberry Pi 4 مع وحدة كاميرا V2.1 بدقة 8 ميجابكسل لالتقاط الصور لتدريب النموذج وإجراء الاستدلال. ومع ذلك، لا يزال بإمكانك استخدام أجهزة أخرى لنفس الغرض. يُرجى مُلاحظة أنك ستحتاج إلى تغيير طريقة جمع بيانات الإدخال في نصوص Python النصية، لأنها تستخدم مكتبة Picamera لالتقاط الصور.
يحتوي Edge Impulse على وثائق لإعداد RPi وتثبيت Edge Impulse لنظام Linux SDK، وهي مجموعة من الأدوات التي تتيح لك جمع البيانات من أجهزة الاستشعار والميكروفونات والكاميرات، بالإضافة إلى تشغيل Impulse بتسريع كامل للأجهزة على جهاز Raspberry Pi.
بعد إعداد Raspberry Pi، استخدم طرفية سطر الأوامر (CLI) مع اتصال SSH بجهاز Raspberry Pi لتنزيل مستودع المشروع عبر: git clone، أو SCP transfer من جهاز الكمبيوتر إلى جهاز Raspberry Pi، أيهما يناسبك. بعد ذلك، شغّل الأمر التالي لتثبيت التبعيات على جهاز Raspberry Pi:
pip install -r requirements.txt
يمكنا الآن استخدام أول نص برمجي لخادم بث الفيديو بلغة Python لجمع الصور. يُشغّل هذا النص البرمجي خادم ويب يُبثّ بثًا مباشرًا للكاميرا، ويحتوي على زر "التقاط" لحفظ الإطارات كصور. يُرجى ملاحظة أنه إذا كنت تستخدم جهازًا مختلفًا، يمكنك استخدام طرق أخرى لجمع الصور. شغّل واجهة مستخدم خادم البث باستخدام الأمر:
python camera_server.py
من السجلات، انسخ عنوان IP لخادم الويب والصقه في حقل عنوان URL لمتصفح الويب (سواءً كان جوالاً أو حاسوباً شخصياً). ستشاهد بث فيديو مباشراً من كاميرا RPi وزر "التقاط" لحفظ الصور.
فيما يتعلق ببيئة حالة الاستخدام الخاصة بالمجال، أنشئ مجموعة بيانات لتدريب النموذج بالنقر على زر "التقاط"، وسيتم حفظ الصور في مجلد "الصور المحفوظة" ضمن مجلد المستودع. في حالتي، قمتُ بإعداد بيئتي لعرض: شخص يعمل ويستخدم هاتفه، ونبتة صغيرة بجانب طاولة تُروى، وغرفة فارغة لا يوجد فيها أحد سوى الأضواء مضاءة.
بعد التقاط الصور، نحتاج إلى إنشاء ملف نصي للوسوم لكل ملف صورة. هذه الوسوم هي كلمات تصف الصورة بشكل أفضل. جمعتُ 150 صورة وخصصتُ لكل منها وسومًا يدويًا. فيما يلي قائمة الوسوم الدلالية: أضواء، لا يوجد شخص، شخص، هاتف، كمبيوتر محمول، نبات، ري. تُستخدم هذه الوسوم لوصف سيناريوهات الاستخدام المحددة المذكورة:
مراقبة الإنتاجية الشخصية: اكتشاف ما إذا كان الشخص يعمل أو مشتتًا بسبب هاتفه. الوسوم المستخدمة هي: أضواء، لا يوجد شخص، شخص، كمبيوتر محمول، وهاتف. تم التقاط 60 صورة لهذه الحالة: 30 صورة تُظهر شخصًا يعمل على جهاز الكمبيوتر، بينما تُظهر الصور المتبقية الشخص الذي يعمل ولكنه يستخدم هاتفه.
مراقبة ذكية للمساحة لتوفير الطاقة: اكتشاف ما إذا كانت الأضواء مضاءة ولكن لا يوجد شخص في الغرفة. الوسوم المستخدمة هي: أضواء، لا يوجد شخص، وشخص. تم التقاط 30 صورة لهذه الحالة.
الزراعة الذكية: مراقبة صحة النباتات من خلال أنشطة مثل الري. الوسوم المستخدمة هي: نبات، ري. تم التقاط 60 صورة لهذه الحالة.
أوشكت خطوة إعداد مجموعة البيانات على الانتهاء. بعد جمع الصور وإنشاء ملف نص الوسوم، نحتاج إلى نسخها إلى مجلد Google Drive الذي يمكن الوصول إليه من خلال دفتر Colab لتدريب النموذج. تُحدد مسارات مجلد الصور وملف النص بواسطة متغيري images_folder وimage_tags_file في دفتر الملاحظات. استخدام مجلد Google Drive اختياري، حيث يمكنك تحميل مجلد مجموعة البيانات مباشرةً إلى دفتر الملاحظات، ولكن Colab يحذف الملفات المُحمّلة عند انتهاء صلاحية الجلسة. تجدر الإشارة أيضًا إلى أنه كبديل لـ Google Colab، يمكنك استخدام دفتر Jupyter أو تشغيل مسار التدريب محليًا كملف Python، مع تثبيت التبعيات على الجهاز المضيف.
2. تحميل مجموعة البيانات إلى دفتر الملاحظات
قبل تشغيل دفتر ملاحظات تدريب ونشر النموذج، نحتاج أولًا إلى إنشاء مشروع Edge Impulse والحصول على مفتاح API الخاص به. للقيام بذلك، أنشئ مشروعًا جديدًا في Edge Impulse Studio (أو استخدم مشروعًا موجودًا) وانتقل إلى قسم "المفاتيح" ضمن "لوحة التحكم". بعد ذلك، افتح دفتر الملاحظات وألصق مفتاحك في متغير ei.API_KEY.
في دفتر ملاحظات Google Colab، انقر على "اتصال" لبدء جلسة سحابية مستضافة، ثم انقر على "تشغيل الكل". سيُطلب منك منح حق الوصول إلى حسابك على Google Drive.
يبدأ دفتر الملاحظات بتحميل الصور وملفات الوسوم النصية باستخدام مسارات المجلدات المحددة. بعد ذلك، تُحمّل المكتبات اللازمة لتحميل البيانات، والمعالجة المسبقة، وتطوير النموذج، وتقييمه باستخدام مكتبات مثل NumPy وPandas وTensorFlow. بعد ذلك، تُعرّف المتغيرات العامة والوظائف المساعدة للمعالجة المسبقة وبناء النموذج. تُعرّف الوسوم: lights، no_person، person، phone، laptop، plant، watering، في متغير قائمة VOCAB.
تقوم دالة preprocess_image بتحميل صورة، وتغيير حجمها إلى حجم البكسل الثابت (128 × 128 كما هو مُعرّف بواسطة IMAGE_SIZE)، وتحويلها إلى مصفوفة NumPy، وقياس قيم البكسل 0 و1. بعد ذلك، يقرأ دفتر الملاحظات ملف tags.txt في إطار بيانات pandas. من المتوقع أن يحتوي هذا الملف على اسم ملف الصورة ووسوم مفصولة بمسافات لتلك الصورة. يصبح إطار البيانات هذا مصدر التعليقات التوضيحية الأساسي للتدريب. بعد ذلك، تُحوّل دالة encode_keywords نص الوسوم المفصولة بمسافات إلى متجه ثنائي متعدد السرعات، حيث يُقابل كل فهرس كلمة من المفردات. هذه هي خطوة الترميز متعدد العلامات، وبما أن الصورة يمكن أن تحتوي على علامات متعددة في وقت واحد، يُمكننا استخدام متجه من مخرجات ثنائية مستقلة بدلاً من تسمية فئوية واحدة (كما هو الحال في تصنيف الصور).
لتحديد اختلال توازن الفئات بسهولة، يحسب الدفتر تردد الوسوم ويطبعه لتحديد الوسوم المهيمنة والنادرة. يُعد هذا ضروريًا لفهم تحيزات مجموعات البيانات واتخاذ قرار بشأن جمع المزيد من الصور للوسوم غير الممثلة تمثيلًا كافيًا أو إعادة التوازن أثناء التدريب.
بالنسبة لبنية النموذج، استخدمتُ نموذج MobileNetV2، نظرًا لأدائه المتميز في استخراج الميزات، مع انخفاض تكلفته الحسابية وصغر حجمه نسبيًا. نقوم بتجميد الطبقات الأساسية بحيث يتم تحديث الطبقات المضافة النهائية فقط أثناء التدريب (تقنية نقل التعلم) لتسريع التدريب. طبقة Sigmoid نهائية بسبعة مخرجات (تتطابق مع عدد العلامات المحددة في حالتي)، تُمكّن الشبكة من إخراج مُتنبئ احتمالي متعدد العلامات. بخلاف SoftMax الذي يُجبر مجموع احتمالات الإخراج على 1، يسمح لنا Sigmoid بمعالجة كل علامة بشكل مستقل. لذلك، لأي صورة مُعطاة، يُخرج النموذج X احتمالات مستقلة، وبالنظر إلى دقة النموذج، يُمكننا استخدام عتبة لتحديد أفضل الكلمات المناسبة لوصف الصورة. هذا يعني أن النموذج لا يُحاول تصنيف الصورة إلى علامة واحدة فقط، بل يسأل:
هل تحتوي هذه الصورة على أضواء؟
هل تحتوي هذه الصورة على نبتة؟
هل تحتوي هذه الصورة على شخص؟
هل تحتوي هذه الصورة على هاتف أو جهاز كمبيوتر؟
على سبيل المثال، يقوم النموذج بإخراج احتمالات مستقلة X، مثل: الآلة = 0.91، الفني = 0.88، البقرة = 0.07، السمكة = 0.01، الكمبيوتر = 0.74.
٣. تدريب النموذج واختباره
سيؤدي تشغيل دفتر الملاحظات إلى تحميل الصور والوسوم، ومعالجتها مسبقًا، وتدريب النموذج، وأخيرًا تحميله إلى مشروع Edge Impulse المُستخدم. في حالتي، مع ١٥٠ صورة تدريب و٧ وسوم، تم تدريب النموذج على مدار ٢٠ حقبة، وكانت الدقة الناتجة ١٠٠٪. بالنسبة لبيئة بسيطة نسبيًا وخاضعة للتحكم مثل هذه البيئة، اخترت هذا الأداء ليكون مقبولًا. ومع ذلك، نظرًا لتنوع ديناميكيات بيئة العالم الحقيقي، هناك حاجة لتدريب نموذج بمزيد من الصور والوسوم لتحسين الأداء.
بعد تدريب النموذج، طوّرتُ دالتين لاختباره: predict_keywords و predict_top_keywords:
predict_keywords: تُشغّل النموذج على صورة وتُرجع جميع الكلمات المفتاحية التي يتجاوز احتمالها المتوقع الحدّ المُحدّد.
predict_top_keywords: تُرجع الكلمات المفتاحية الأعلى احتمالًا بغض النظر عن الحدّ.
أثناء الاختبار، أُعطي النموذج صورةً لغرفة معيشة فارغة، وأعادت دالة predict_keywords "أضواء" و"لا يوجد شخص"، بينما أعادت دالة predict_top_keywords "لا يوجد شخص" و"أضواء" و"نبات"، عند طلب إرجاع أعلى 3 علامات احتمالية. تتطلب التطبيقات المختلفة سلوكًا مختلفًا للكشف المُحافظ مقارنةً بعرض معظم العلامات الاحتمالية دائمًا. فضّلتُ دالة predict_keywords، ويُعاد استخدام منطقها في شيفرة الاستدلال.
أظهرت الاختبارات الإضافية للنموذج نتائج مبهرة، واخترتُ هذا الأداء المقبول لنشره.
04 نشر النموذج
بعد اختبار النموذج، يستخدم الكمبيوتر المحمول حزمة تطوير البرامج Edge Impulse Python SDK لإنشاء ملف تعريف للنموذج، مما يُمكّننا من الحصول على ذاكرة الوصول العشوائي (RAM) وذاكرة القراءة فقط (ROM) وأوقات الاستدلال للنموذج على مجموعة واسعة من الأجهزة، من وحدات التحكم الدقيقة (MCUs) ووحدات المعالجة المركزية (CPUs) ووحدات معالجة الرسومات (GPUs) واللوحات المُسرّعة بالذكاء الاصطناعي، وهو أمرٌ رائعٌ حقًا! يُمكنك رؤية تقديرات أداء النموذج على Raspberry Pi 4 في الصورة أدناه. أثناء عملية إنشاء الملف التعريفي، يتم تحميل النموذج إلى مشروع Edge Impulse.
يمكنك استنساخ مشروع Edge Impulse العام الخاص بي باستخدام هذا الرابط: وصف صورة خفيف.
يرجى ملاحظة أن النموذج لن يكون دقيقًا، ولن يكون كذلك عند اختباره، لأن صور التدريب كانت مخصصة لبيئتي المُتحكم بها.
بعد انتهاء تشغيل دفتر الملاحظات، يمكننا الانتقال إلى مشروع Edge Impulse المُستخدم، وسنرى "تحميل النموذج" ضمن "تصميم Impulse".
نحتاج أولاً إلى ضبط بعض المعلمات في مشروع Edge Impulse. انقر على "تحميل النموذج" وستُفتح واجهة جديدة على يمين الصفحة. هنا، نحتاج إلى تحديد "صورة" لإدخال النموذج. بعد ذلك، نحدد "وحدات بكسل تتراوح بين 0.1 (غير مُعايرة)" لإخراج النموذج. اختر "تصغير" لوضع تغيير الحجم و"تصنيف" لإخراج النموذج. أخيرًا، في مربع إدخال تسميات الإخراج، أدخل العلامات المستخدمة لتدريب النموذج وفقًا لترتيبها أثناء التدريب. انقر على "حفظ النموذج" لإكمال التهيئة. في لقطة الاستوديو أدناه، يمكننا أن نرى أن النموذج سيشغل 9 ميجابايت من ذاكرة الفلاش، وأن وقت الاستدلال المتوقع هو 106 مللي ثانية، وهو وقت قريب نسبيًا من وقت الاستدلال الفعلي على الجهاز، والذي يبلغ حوالي 25 مللي ثانية.
يمكننا أيضًا اختبار النموذج مباشرةً على Edge Impulse Studio بالنقر على "اختيار ملف" ضمن قسم "تحميل صورة". في اختباراتي، كان أداء النموذج جيدًا أيضًا، وتم عرض تنبؤات الوسوم الاحتمالية بشكل أفضل على واجهة المستخدم الخاصة بالاستديو. على سبيل المثال، في صورة الاختبار المعروضة أدناه، نرى أن النموذج قادر على عرض الكلمات (شخص، كمبيوتر محمول، هاتف) بدقة وثقة لوصف صورة تُظهر شخصًا يحمل كمبيوتر محمولًا وهاتفًا في يده. أثناء الاستدلال، يمكننا تحديد حد أدنى لدرجات الاحتمالية وبناء جملة باستخدام الكلمات التي تحقق الدرجة المطلوبة.
في واجهة مستخدم الاستوديو، انتقل إلى "النشر" واختر "Linux (AARCH64)" من "خيارات البحث عن النشر". هذه هي بنية Raspberry Pi 4، وستحتاج إلى تحديد هدف مختلف بناءً على جهاز النشر لديك. انقر على "إنشاء" وسيقوم الاستوديو بتنزيل ملف ثنائي لنموذج Edge Impulse (.eim) على جهاز الكمبيوتر الخاص بك. EIM هي تطبيقات ثنائية أصلية لنظامي Linux وmacOS تحتوي على نموذج Edge Impulse الكامل الذي أنشأته في Edge Impulse Studio. يتكون نموذج Edge Impulse من كتلة (كتل) معالجة الإشارة، بالإضافة إلى أي كتلة (كتل) تعلم وشذوذ أضفتها ودرّبتها. تُجمّع ملفات EIM لبنية نظامك الخاصة، وتُستخدم لتشغيل الاستدلال تلقائيًا على نظامك.
فك ضغط الملف المُنزّل وانسخ ملف .eim إلى مجلد eim-modelfile على جهاز Pi. بعد ذلك، أدخل الأوامر التالية في سطر الأوامر لجعل ملف .eim قابلاً للتنفيذ من قِبل النظام:
cd eim-modelfile
chmod u+x ./modelfile.eim
cd ..
وأخيرًا، شغّل تطبيق وصف الصور بلغة بايثون باستخدام الأمر:
python ai_app.py
بمجرد بدء تشغيل التطبيق، استخدم متصفح ويب (سواءً كان هاتفًا محمولًا أو حاسوبًا شخصيًا) للوصول إليه، وسترى على صفحة الويب بث فيديو مباشر من الكاميرا، بالإضافة إلى مربع نصي يعرض العلامات التي تصف بث الفيديو بشكل أفضل.
النتائج
أصبحت فكرة وصف الصور ممكنة الآن من خلال تصميم مُحسّن لربط الصور بالكلمات المفتاحية، وذلك بناءً على مجال محدد. يلتقط تطبيق النشر إطارات من كاميرا Raspberry Pi، ويستخدم حزمة تطوير البرامج Edge Impulse Linux SDK لمعالجة الصور مسبقًا، وتحديد احتمالات ارتباط كل علامة بالصورة المُعطاة. ثم تُدمج الكلمات الثلاث المحتملة لتكوين جملة، تُعرض على واجهة مستخدم ويب مع موجز الفيديو.