استخدم Raspberry Pi والتعلم الآلي لصنع قارئ لوحة ترخيص DIY

نص كامل 7733 الكلمات ، وقت التعلم المقدر ثلاث و عشرون دقيقة

المصدر: Pexels

قبل بضعة أشهر ، كانت لدي بعض الأفكار وأردت أن أجعل سيارتي تكتشف الأشياء وتتعرف عليها. السبب وراء امتلاك هذه الفكرة هو بشكل أساسي أنني رأيت إمكانات Tesla. على الرغم من أنني لا أريد شراء Tesla على الفور (يجب أن أقول ، يبدو الطراز 3 أكثر جاذبية كل يوم) ، ولكن أعتقد أنني يجب أن أحاول تحقيق أحلامي.

لذلك ، نفذ المؤلف هذه الفكرة.

تأتي الرسوم المتحركة من الفيديو المتوقع للنتيجة.

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

الخطوة الأولى هي تحديد نطاق المشروع

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

1. كشف لوحات الترخيص.

2. تحديد النص في إطار كل لوحة ترخيص.

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

قبل القلق بشأن التفاصيل ، أحتاج إلى:

نموذج التعلم الآلي الذي يأخذ الصور غير المسماة كمدخلات ويكشف عن لوحات الترخيص.

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

ابدأ ببناء النموذج الصحيح لاكتشاف الكائن.

الخطوة الثانية هي اختيار النموذج الصحيح

بعد بحث دقيق ، قررت استخدام نموذج التعلم الآلي التالي:

1. YOLOv3 - هذا هو أسرع نموذج حتى الآن ، مع تخطيط مقارنة بالنماذج المتقدمة الأخرى. يستخدم هذا النموذج لاكتشاف الأشياء.

2. كاشف النص CRAFT - يستخدم للكشف عن النص في الصور.

3. CRNN-a دوري CNN (شبكة عصبية تلافيفية) نموذج. يجب أن يتكرر ، لأنه يحتاج إلى الأحرف المكتشفة لتشكيل الكلمات بالترتيب الصحيح.

كيف تعمل هذه النماذج الثلاثة معًا؟ عملية التشغيل كالتالي:

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

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

3. أخيرًا ، يمكن إدخال إطار كل كلمة في الحرف اليدوية في نموذج CRNN للتنبؤ بالكلمة الفعلية.

باستخدام بنية النموذج الأساسي ، يمكن حل الأجهزة بعد ذلك.

الخطوة الثالثة هي تصميم الأجهزة

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

بالنسبة إلى الوصول إلى الإنترنت ، يمكن استخدام EC25-E واحد فقط لتحقيق الوصول إلى 4G ، وهناك أيضًا وحدة GPS مضمنة في مشروع المؤلف السابق.

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

1. على جانب مرآة الرؤية الخلفية ، وحدة Raspberry Pi + GPS + وحدة 4G. يمكنك التحقق من مقال المؤلف عن وحدة EC25-E لمعرفة اختيار المؤلف لهوائي GPS و 4G.

2. على الجانب الآخر ، سيتم استخدام ذراع مفصل كروي لدعم كاميرا Pi من أجل تحديد المواقع.

ستتم طباعة هذه الأقواس / الأصداف باستخدام طابعة Prusa i3 MK3S 3D التي أثق بها.

الشكل 1 - غلاف حماية Raspberry Pi + 4G / GPS

الشكل 2 - استخدم مفصل كروي لدعم كاميرا Pi لتحديد المواقع

يوضح الشكل 1 والشكل 2 الهيكل عند تنفيذه. يرجى ملاحظة أن الحامل من النوع C قابل للتوصيل ، لذا فإن الحامل المطبوع لا يأتي مع غلاف Raspberry Pi وقوس كاميرا Pi. لديهم مقبس يمكن إدخال الحامل فيه. هذا مفيد للغاية إذا قرر القارئ نسخ المشروع. ما عليك سوى ضبط الحامل لتكييفه مع مرآة الرؤية الخلفية للسيارة. حاليًا ، يعمل القابض الموجود على سيارة المؤلف (وهو Land Rover Freelander) بشكل جيد.

الشكل 3 - منظر جانبي لهيكل قوس PiCamera

الشكل 4 - هيكل قوس الكاميرا Pi ومنظر أمامي لحامل Raspberry Pi

الشكل 5 - توقع مجال رؤية الكاميرا

الشكل 6 - صورة مقربة للنظام المضمن لوحدة 4G / GPS وكاميرا Pi و Raspberry Pi

من الواضح أنها تحتاج إلى بعض الوقت لتصميمها. يحتاج المؤلف إلى العديد من التكرارات لجعل الهيكل أكثر قوة. استخدم المؤلف مادة PETG على ارتفاع طبقة 200 ميكرون. يمكن أن تعمل PETG في 80-90 درجة مئوية ، وهي مقاومة للغاية للأشعة فوق البنفسجية ، على الرغم من أنها ليست جيدة مثل ASA.

الخطوة الرابعة هي تدريب النموذج

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

مما لا يثير الدهشة ، من الأفضل عدم إعادة إنشائه بنفسك ، ولكن إعادة استخدام الآخرين قدر الإمكان. هذا كله يتعلق بنقل التعلم باستخدام الرؤى من مجموعات البيانات الكبيرة جدًا. قرأ المؤلف مثالاً عن نقل التعلم في هذه المقالة قبل أيام قليلة. وتحدثت المقالة عن فريق تابع لكلية الطب بجامعة هارفارد كان قادرًا على ضبط نموذج "للتنبؤ بالوفيات على المدى الطويل من التصوير الشعاعي للصدر ، بما في ذلك الوفيات غير السرطانية". لديهم فقط مجموعة بيانات صغيرة من 50000 صورة معنونة ، لكن النموذج المدرب مسبقًا (Inception-v4) المستخدم مُدرب على ما يقرب من 14 مليون صورة. لقد أنفقوا فقط أقل من جزء صغير من تكلفة التدريب (من حيث الوقت والمال) التي يتطلبها النموذج الأصلي ، وقد وصلوا إلى درجة عالية جدًا من الدقة.

المؤلف يعتزم أن يفعل الشيء نفسه.

يولوف 3

بحث المؤلف عن نماذج لوحات ترخيص مُدرَّبة مسبقًا على الإنترنت. لم يكن هناك الكثير كما كان متوقعًا في الأصل ، لكنني وجدت نموذجًا تم تدريبه على حوالي 3600 صورة لوحة ترخيص. إنه ليس كثيرًا ، لكنه أفضل من لا شيء ، وإلى جانب ذلك ، يتم تدريبه أيضًا على نموذج Darknet المدرب مسبقًا ويمكن استخدامه.

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

يستخدم المؤلف VOTT للتعليق على الإطارات المجمعة (وبالطبع لوحة الترخيص). أخيرًا ، تم إنشاء مجموعة بيانات صغيرة تتكون من 534 صورة ، بحدود لوحة ترخيص محددة.

ثم وجد المؤلف تطبيق شبكة YOLOv3 على Keras. استخدمه لتدريب مجموعة البيانات ، ثم ضع نموذج المؤلف في هذه المكتبة ، حتى يتمكن الآخرون من استخدامه أيضًا. تبلغ نسبة التعيين التي حصل عليها المؤلف في مجموعة الاختبار 90 ، ومن الجيد جدًا بالفعل الحصول على مثل هذا الأداء على مجموعة البيانات الصغيرة هذه.

الحرف و CRNN

بعد محاولات لا حصر لها للعثور على شبكة جيدة للتعرف على النص ، عثرت على keras-ocr ، وهي نسخة مرنة من حزم CRAFT و CRNN. كما أنه يأتي مع نماذجهم المدربة مسبقًا. ذلك رائع. قرر المؤلف عدم ضبط النماذج وتركها كما هي.

الأهم من ذلك ، التنبؤ بالنص باستخدام keras-ocr بسيط للغاية. في الأساس مجرد بضعة أسطر من التعليمات البرمجية. يمكنك الذهاب إلى صفحتهم الرئيسية لترى كيف يتم ذلك.

الخطوة الخامسة هي نشر لوحة ترخيص المؤلف على نموذج الكاشف

هناك طريقتان رئيسيتان لنشر النموذج:

1. معالجة جميع الاستنتاجات محليًا.

2. تتم معالجة جميع الاستدلالات في السحابة.

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

خلال بحثي ، عثر المؤلف على مشروع مفتوح المصدر يسمى cortex. هذا جديد تمامًا ، لكن تطوره التالي كأداة لتطوير الذكاء الاصطناعي له معنى بالتأكيد.

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

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

المصدر: Cortex GitHub

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

يتطلب استخدام cortex لنشر نموذج التعلم الآلي الخطوات التالية فقط:

1. حدد ملف cortex.yaml ، وهو ملف تكوين API. ستتعامل كل واجهة برمجة تطبيقات مع نوع واحد من المهام. يتم استخدام واجهة برمجة تطبيقات yolov3 التي حددها المؤلف لاكتشاف حدود لوحة الترخيص على الإطار المحدد ، ويتم استخدام واجهة برمجة تطبيقات crnn للتنبؤ بلوحة الترخيص من خلال كاشف النص CRAFT و CRNN.

2. تحديد المتنبئ لكل API. في الأساس ، هو تحديد فئة معينة من طريقة التنبؤ في القشرة لتلقي حمولة (تمت معالجة جميع الأجزاء المكتشفة بواسطة النظام الأساسي) ، واستخدام الحمولة للتنبؤ بالنتيجة ، ثم إعادة التنبؤ. بكل بساطة!

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

# توقع pyimport boto3 استيراد مخلل = فئة بايثون def __init __ (ذاتي ، التكوين): s3 = boto3.client ("s3") s3.download_file (config، config، "model.pkl") self.model = pickle.load (open ("model.pkl"، "rb")) def تنبؤ (self ، payload): القياسات = label_id = self.model.predict () تسميات العودة

ثم قم بالتنبؤ ، فقط استخدم curl ، مثل هذا

حليقة http: //***.amazonaws.com/iris-classifier \ -X POST -H "نوع المحتوى: application / json" \ -d '{"sepal_length": 5.2، "sepal_width": 3.6، "petal_length": 1.4، "petal_width": 0.3}'

التنبؤ الذي تم إجراؤه هو مثل "Setosa". بسيط جدا!

الخطوة السادسة هي تطوير العميل

من خلال استكمال النشر باستخدام cortex ، يمكنني الاستمرار في تصميم العميل - وهذا هو الجزء الصعب.

توصل المؤلف إلى الهيكل التالي:

1. اجمع الإطارات من Pi Camera بدقة عالية (800x450 أو 480x270) بمعدل 30 إطارًا في الثانية ، وادفع كل إطار إلى قائمة الانتظار المشتركة.

2. في عملية منفصلة ، سيأخذ المؤلف إطارات من قائمة الانتظار ويوزعها على سلاسل عمليات مختلفة.

3. سيقوم كل مؤشر ترابط عامل (أو مؤشر ترابط استدلال كما أسميه) بتقديم طلب API إلى واجهة برمجة تطبيقات cortex. أولاً ، قم بتقديم طلب إلى yolov3API ، وبعد ذلك ، إذا تم اكتشاف أي لوحات ترخيص ، قم بتقديم طلب آخر مع مجموعة من لوحات الترخيص المقصوصة إلى crnn API. ستحتوي الاستجابة على لوحة الترخيص المتوقعة بتنسيق نصي.

4. ادفع كل لوحة ترخيص تم اكتشافها (مع أو بدون نص تم التعرف عليه) إلى قائمة انتظار أخرى ، وأخيراً قم ببثها إلى صفحة المتصفح. في نفس الوقت ، يتم دفع توقعات لوحة الترخيص أيضًا إلى قائمة انتظار أخرى لحفظها على القرص (تنسيق csv) لاحقًا.

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

6. في نفس الوقت ، سيكون هناك مؤشر ترابط آخر قيد التشغيل في العملية الرئيسية لاستخراج التنبؤات من قائمة انتظار أخرى وبيانات GPS. عندما تستقبل محطة العميل إشارة الإنهاء ، يتم أيضًا نقل التنبؤ وبيانات GPS والوقت إلى ملف csv.

الشكل التالي عبارة عن مخطط انسيابي يتعلق بالعميل وواجهة برمجة التطبيقات السحابية على AWS.

الشكل 7 - مخطط انسيابي للعميل المتعلق بواجهة برمجة التطبيقات السحابية المقدمة من القشرة

في هذا المثال ، العميل هو Raspberry Pi ، ويتم توفير واجهة برمجة التطبيقات السحابية التي يتم إرسال طلب الاستدلال إليها بواسطة cortex على AWS (Amazon Web Services).

يمكن أيضًا عرض الكود المصدري للعميل في مستودع GitHub الخاص به.

إحدى الصعوبات التي يجب التغلب عليها هي عرض النطاق الترددي 4G. من الأفضل تقليل النطاق الترددي الذي يتطلبه هذا التطبيق لتقليل المشكلات المحتملة أو الاستخدام المفرط للبيانات المتاحة. قررت استخدام دقة منخفضة للغاية على كاميرا Pi: 480x270 (يمكن استخدام دقة صغيرة ، لأن Pi Camera لديها مجال رؤية ضيق للغاية ، لذلك لا يزال من السهل التعرف على لوحة الترخيص). ومع ذلك ، حتى في هذه الدقة ، يبلغ حجم JPEG للإطار حوالي 100 كيلو بايت بمعدل 10 ميغا بايت. اضرب في 30 إطارًا / ثانية ، وستحصل على 3000 كيلو بايت ، أي حوالي 24 ميغا بايت / ثانية ، والتي لا تتضمن حمل HTTP - وهذا رقم كبير.

اعتمد المؤلف الاستراتيجيات التالية:

تقليل العرض إلى 416 بكسل ، وهو نتيجة قيام نموذج YOLOv3 بتعديل حجم الصورة. الأبعاد تبقى سليمة.

تحويل الصورة إلى تدرج الرمادي.

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

تحويل الصورة إلى JPEG مرة أخرى ، ولكن الجودة أقل.

حجم الإطار الناتج حوالي 7-10 كيلو بايت ، وهو أمر جيد جدًا. هذا يعادل 2.8 ميغا بايت / ثانية. لكن بحساب جميع النفقات العامة ، يكون حوالي 3.5 ميجابايت / ثانية (بما في ذلك الاستجابة).

بالنسبة لـ crnn API ، لا تحتاج لوحة الترخيص التي تم اقتصاصها كثيرًا على الإطلاق ، حتى بدون مهارات الضغط. كل جزء حوالي 2-3 كيلو بايت.

الكل في الكل ، لتشغيل 30 إطارًا في الثانية ، فإن النطاق الترددي المطلوب لواجهة برمجة التطبيقات للاستدلال يبلغ حوالي 6 ميغا بايت في الثانية. هذا الرقم مقبول.

فى الختام

هذا حقا يعمل!

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

قد لا يكون جزء التعرف على النص هو الأفضل ، لكنه على الأقل يثبت ذلك - عن طريق زيادة دقة الفيديو ، أو عن طريق تقليل مجال رؤية الكاميرا ، أو عن طريق الضبط الدقيق ، يمكن أن يكون أكثر دقة.

يمكن تقليل GPU المرتفع عن طريق التحسين. على سبيل المثال ، قم بتحويل النموذج لاستخدام نصف الدقة المختلطة / الكاملة (FP16 / BFP16). بشكل عام ، فإن استخدام نماذج الدقة المختلطة له أقل تأثير على الدقة ، لذلك ليست هناك حاجة لإجراء الكثير من المفاضلات.

تحتوي وحدات معالجة الرسومات T4 و V100 على نوى موتر خاصة لمضاعفة المصفوفة فائقة السرعة على أنواع نصف الدقة. في T4 ، تبلغ نسبة سرعة التشغيل نصف الدقة حوالي 8 أضعاف نسبة التشغيل أحادي الدقة ، وفي V100 ، تبلغ نسبة سرعة التشغيل نصف الدقة حوالي 10 أضعاف معدل التشغيل أحادي الدقة. هذا هو ترتيب الاختلاف في الحجم ، مما يعني أن النموذج الذي تم تحويله لاستخدام الدقة الفردية / الدقة المختلطة يمكن أن يستغرق ما يصل إلى 8 مرات أقل في الاستدلال ، بينما يستغرق عُشر الوقت على V100.

لم يقم المؤلف بتحويل النموذج لاستخدام الدقة المفردة / الدقة المختلطة لأنه خارج نطاق هذا المشروع. بقدر ما يتعلق الأمر بالمؤلف ، فهذه مجرد مشكلة تحسين. من المرجح أن يكمل المؤلف هذا العمل عندما يتم إصدار إصدار cortex 0.14 (إذا كان هناك دعم حقيقي متعدد العمليات وقياس تلقائي قائم على قائمة الانتظار) ، بحيث يمكنني أيضًا استخدام خادم ويب متعدد العمليات.

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

لتوفير المزيد من التكاليف ، يمكن أن يؤدي استخدام Elastic Inference على AWS إلى خفض التكاليف بنسبة تصل إلى 75 ، وهو مبلغ ضخم! لوضعها بوضوح ، يمكنك إنفاق سنت واحد للحصول على خط أنابيب لمعالجة التدفقات في الوقت الفعلي. لسوء الحظ ، لم تتمكن القشرة بعد من دعم الاستدلال المرن ، ولكن يمكن ملاحظة أن هذا سيتحقق في المستقبل القريب لأنها دخلت مجال رؤيتهم. انظر cortexlabs / cortex / issues / 618.

ملاحظة: يمكن تحسين طرازي YOLOv3 و CRNN من خلال ضبطهما بدقة على مجموعة بيانات أكبر (حوالي 50-100 ألف عينة). هنا ، يمكن تقليل حجم الإطار بشكل أكبر لتقليل استخدام البيانات دون التأثير بشكل كبير على الدقة: "تعويض في مكان ما بحيث يمكن أخذها من أماكن أخرى". هذا ، إلى جانب تحويل كل هذه النماذج لاستخدام أنواع نصف الدقة (وربما الاستدلال المرن) ، يمكن أن يشكل آلة استدلال فعالة للغاية أو مخفضة التكلفة.

تحديث

المصدر: Pexels

يدعم الإصدار 0.14 من cortex عامل العمليات المتعددة لخادم الويب. تمكن المؤلف من تقليل عدد مثيلات GPU لواجهة برمجة تطبيقات yolov3 من 8 إلى 2 ، وعدد مثيلات GPU لواجهة برمجة تطبيقات crnn (تشغيل الاستدلال على طرازي CRNN و CRAFT) من 12 إنخفض إلى 10. هذا يعني أن العدد الإجمالي للحالات قد انخفض بنسبة 40 ، وهو مكسب جيد للغاية. تم تجهيز كل هذه المثيلات بوحدة معالجة رسومات T4 واحدة و 4 وحدات معالجة مركزية (vCPU).

وجد المؤلف أن النموذج الأكثر طلبًا من الناحية الحسابية هو نموذج CRAFT ، والذي يعتمد على طراز VGG-16 الذي يبلغ حوالي 138 ميغا بايت. ضع في اعتبارك أنه نظرًا لإمكانية وجود لوحات ترخيص متعددة تم اكتشافها في لقطة ، فمن الضروري عادةً إجراء استنتاجات متعددة لكل إطار. هذا يزيد بشكل كبير من متطلبات الحوسبة لها. من الناحية النظرية ، يجب إلغاء نموذج CRAFT وتحسين نموذج CRNN (ضبطه) للتعرف بشكل أفضل على لوحات الترخيص. بهذه الطريقة ، يمكن تقليل واجهة crnn API كثيرًا إلى حالة واحدة أو اثنتين فقط.

الخلاصة (بما في ذلك كيفية تطبيق 5G عليها)

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

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

مصادر

عرض SLDPRT / SLDASM / STL / gcode لجميع حاملي الطباعة ثلاثية الأبعاد. https://www.dropbox.com/sh/fw16vy1okrp606y/AAAwkoWXODmoaOP4yR-z4T8Va؟dl=0

عرض تنفيذ العميل لهذا المشروع. https://github.com/RobertLucian/cortex-license-plate-reader-client

عرض القشرة المخية لتنفيذ هذا المشروع. https://github.com/cortexlabs/cortex/tree/master/examples/tensorflow/license-plate-reader

عرض مستودع Keras لنماذج YOLOv3. https://github.com/experiencor/keras-yolo3

عرض مستودع كاشف النص CRAFT + أداة التعرف على النص CRNN. https://github.com/faustomorales/keras-ocr

عرض مجموعة بيانات لوحة الترخيص الأوروبية (تتكون من 534 عينة تم التقاطها بواسطة كاميرا Pi الخاصة بالمؤلف). https://github.com/RobertLucian/license-plate-dataset

يمكنك العثور على نماذج YOLOv3 بتنسيقات Keras (License_Plate.h5) و SavedModel (مجلد / مجلد YOLOv3). https://www.dropbox.com/sh/4ltffycnzfeul01/AACe85GoIzlmjEnIhuh5JQPma؟dl=0

التعليق مثل اتبع

دعنا نشارك العناصر الجافة لتعلم وتطوير الذكاء الاصطناعي

في حالة إعادة الطباعة ، يرجى ترك رسالة في الخلفية واتباع مواصفات إعادة الطباعة

اليوم صوت الأساسية | الخاص بك الساخنة بخير؟ أبل دائرة الرقابة الداخلية 13 اعترف بوجود "النقاط الساخنة" مشكلة

تسريع وظيفة، يجب على كل مبرمج يعرف المكتبة القياسية Lru_cache بيثون

20 عظيمة بيانات علمية مجانية على شبكة الإنترنت، والتعلم الآلي والذكاء الاصطناعي الدرجة مو

سمعت تطبيق كبير (كتل) هو مستقبل تطوير البرمجيات؟

سر! كيف قابلة للطي شاشة مصنوعة من؟

كيف تسعة الى خمسة وظيفة لتصبح مبرمج فعالة؟

اليوم صوت الأساسية | ألغت تماما! جوجل I / O خط مؤتمر 2020 المطور لا

7 وظائف JavaScript Utility التي تساعد على تحسين الكفاءة

RION-- شكل البيانات بسرعة، والتعاقد، المشترك

AI تمويل المشاريع مئات الآلاف أو مئات بل الملايين، وكيف يمكن لهذه الشركات المبتدئة "AI احتيال" سخيفة؟

7 أوامر الطرفية التي تسمح لك الضحك واحدة

دخول صناعة هندسة البرمجيات، وارتكب أكبر خطأ هو سهلة، ويمكنك اطلاق النار عليه؟