جدول المحتويات:

كاشف السعال بحجم الجيب: 7 خطوات
كاشف السعال بحجم الجيب: 7 خطوات

فيديو: كاشف السعال بحجم الجيب: 7 خطوات

فيديو: كاشف السعال بحجم الجيب: 7 خطوات
فيديو: مرض الربو القصبي وطريقة العلاج 2024, يوليو
Anonim
كاشف السعال بحجم الجيب
كاشف السعال بحجم الجيب

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

في هذا البرنامج التعليمي ، سنقوم ببناء نظام اكتشاف السعال باستخدام Arduino 33 BLE Sense و Edge Impulse Studio. يمكن أن يفرق بين ضوضاء الخلفية العادية والسعال في الصوت في الوقت الفعلي. استخدمنا Edge Impulse Studio لتدريب مجموعة بيانات من عينات السعال والضوضاء الخلفية وبناء نموذج TInyML مُحسَّن للغاية ، يمكنه اكتشاف صوت السعال في الوقت الفعلي.

اللوازم

المعدات

  • Arduino 33 BLE Sense
  • LED البلوز
  • الأسلاك

برمجة

  • ستوديو إيدج إمبلس
  • اردوينو IDE

الخطوة 1: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني

مخطط الدائرة لاكتشاف السعال باستخدام Arduino 33 BLE Sense مذكور أعلاه. لم يكن جزء Fritzing لـ Arduino 33 BLE متاحًا ، لذلك استخدمت Arduino Nano لأن كلاهما لهما نفس الدبوس.

يتم توصيل السلك الإيجابي لـ LED بالدبوس الرقمي 4 من Arduino 33 BLE ويتم توصيل الرصاص السلبي بدبوس GND في Arduino.

الخطوة الثانية: إنشاء مجموعة البيانات الخاصة بآلة الكشف عن السعال

إنشاء مجموعة البيانات الخاصة بآلة الكشف عن السعال
إنشاء مجموعة البيانات الخاصة بآلة الكشف عن السعال

كما ذكرنا سابقًا ، نحن نستخدم Edge Impulse Studio لتدريب نموذج اكتشاف السعال الخاص بنا. لذلك ، يتعين علينا جمع مجموعة بيانات تحتوي على عينات من البيانات التي نود أن نكون قادرين على التعرف عليها على Arduino. نظرًا لأن الهدف هو اكتشاف السعال ، فستحتاج إلى جمع بعض عينات ذلك وبعض العينات الأخرى للضوضاء ، حتى تتمكن من التمييز بين السعال والضوضاء الأخرى. سنقوم بإنشاء مجموعة بيانات من فئتين "سعال" و "ضوضاء". لإنشاء مجموعة بيانات ، قم بإنشاء حساب Edge Impulse ، وتحقق من حسابك ثم ابدأ مشروعًا جديدًا. يمكنك تحميل العينات باستخدام هاتفك المحمول أو لوحة Arduino أو يمكنك استيراد مجموعة بيانات إلى حساب Edge Impulse الخاص بك. أسهل طريقة لتحميل العينات في حسابك هي باستخدام هاتفك المحمول. لذلك ، عليك توصيل هاتفك المحمول بـ Edge Impulse. لتوصيل هاتفك المحمول ، انقر فوق "الأجهزة" ثم انقر فوق "توصيل جهاز جديد".

الخطوة 3: الاتصال بالهاتف المحمول

اتصل بالهاتف المحمول
اتصل بالهاتف المحمول

الآن في النافذة التالية ، انقر فوق "استخدام هاتفك المحمول" ، وسيظهر رمز الاستجابة السريعة. امسح رمز الاستجابة السريعة ضوئيًا باستخدام هاتفك المحمول باستخدام Google Lens أو أي تطبيق آخر لمسح رمز QR.

سيؤدي ذلك إلى توصيل هاتفك باستوديو Edge Impulse.

مع اتصال هاتفك بـ Edge Impulse Studio ، يمكنك الآن تحميل عيناتك. لتحميل العينات ، انقر فوق "الحصول على البيانات". الآن في صفحة الحصول على البيانات ، أدخل اسم الملصق ، وحدد الميكروفون كمستشعر ، وأدخل طول العينة. انقر فوق "بدء أخذ العينات" ، لبدء أخذ عينة 40 ثانية. بدلاً من إجبار نفسك على السعال ، يمكنك استخدام عينات من السعال على الإنترنت بأطوال مختلفة. سجل ما مجموعه 10 إلى 12 عينة سعال بأطوال مختلفة.

الخطوة الرابعة:

صورة
صورة
صورة
صورة

بعد تحميل عينات السعال ، قم الآن بتعيين الملصق على "ضوضاء" وجمع 10 إلى 12 عينة ضوضاء أخرى.

هذه العينات مخصصة لتدريب الوحدة ، في الخطوات التالية ، سنجمع بيانات الاختبار. يجب أن تكون بيانات الاختبار 30٪ على الأقل من بيانات التدريب ، لذا اجمع 3 عينات من "الضوضاء" و 4 إلى 5 عينات من "السعال". بدلاً من جمع بياناتك ، يمكنك استيراد مجموعة البيانات الخاصة بنا إلى حساب Edge Impulse الخاص بك باستخدام Edge Impulse CLI Uploader. لتثبيت CLI Uploader ، أولاً ، قم بتنزيل Node.js وتثبيته على الكمبيوتر المحمول الخاص بك. بعد ذلك افتح موجه الأوامر وأدخل الأمر أدناه:

تثبيت npm -g edge-impulse-cli

الآن قم بتنزيل مجموعة البيانات (Dataset Link) واستخرج الملف في مجلد المشروع الخاص بك. افتح موجه الأوامر وانتقل إلى موقع مجموعة البيانات وقم بتشغيل الأوامر التالية:

edge-impulse-uploader --cleanedge-impulse-uploader - فئة تدريب التدريب / *. json

edge-impulse-uploader - فئة تدريب التدريب / *. cbor

edge-impulse-uploader - اختبار فئة الاختبار / *. json edge-impulse-uploader --category test testing / *. cbor

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

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

الآن في صفحة "إنشاء دفعة" ، انقر فوق "إضافة كتلة معالجة". في النافذة التالية ، حدد مجموعة الصوت (MFCC). بعد ذلك ، انقر فوق "إضافة كتلة تعلم" وحدد مجموعة الشبكة العصبية (Keras). ثم انقر فوق "Save Impulse".

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

بعد ذلك ، انتقل إلى صفحة "NN Classifier" وانقر على النقاط الثلاث في الزاوية اليمنى العليا من "إعدادات الشبكة العصبية" وحدد "التبديل إلى وضع Keras (الخبير)".

استبدل النص الأصلي بالكود التالي وقم بتغيير "الحد الأدنى لتصنيف الثقة" إلى "0.70". ثم انقر فوق الزر "بدء التدريب". سيبدأ تدريب النموذج الخاص بك.

استيراد tensorflow مثل tensorflow.keras.models استيراد تسلسلي من tensorflow.keras.layers import Dense و InputLayer و Dropout و Flatten و Reshape و BatchNormalization و Conv2D و MaxPooling2D و AveragePooling2D من tensorflow.keras.optimizers استيراد آدم من tensorflow.keras.optimizers MaxNorm # model architecture model = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1]،)، name = 'x_input')) model.add (Reshape ((int (X_train.shape [1] / 13)، 13، 1)، input_shape = (X_train.shape [1]،))) model.add (Conv2D (10، kernel_size = 5، activation = 'relu'، padding = 'same'، kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2، padding = 'same')) model.add (Conv2D (5، kernel_size = 5، activation = 'relu'، padding = 'same'، kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2، padding = 'same')) model.add (Flatten ()) model.add (Dense (class، activation = 'softmax'، name = 'y_pred'، kernel_constraint = MaxNorm (3))) # هذا يتحكم في معدل التعلم opt = Adam (lr = 0.005 ، beta_ 1 = 0.9 ، beta_2 = 0.999) # تدريب مجموعة model.com للشبكة العصبية (الخسارة = 'categorical_crossentropy' ، المحسن = اختيار ، المقاييس = ['الدقة']) model.fit (X_train، Y_train، batch_size = 32، epochs = 9 ، Validation_data = (X_test، Y_test)، مطول = 2)

الخطوة السادسة:

بعد تدريب النموذج ، سيظهر أداء التدريب. بالنسبة لي ، كانت الدقة 96.5٪ وكانت الخسارة 0.10 وهذا أمر جيد للمتابعة.

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

أضف الآن المكتبة في Arduino IDE الخاص بك. لذلك افتح Arduino IDE ثم انقر فوق Sketch> Include Library> Add. ZIP library. بعد ذلك ، قم بتحميل مثال بالانتقال إلى ملف> أمثلة> اسم مشروعك - Edge Impulse> nano_ble33_sense_microphone. سنجري بعض التغييرات في الكود حتى نتمكن من إصدار صوت تنبيه عندما يكتشف Arduino السعال. لذلك ، يتم توصيل الجرس مع Arduino وكلما اكتشف السعال ، سيومض LED ثلاث مرات. يتم إجراء التغييرات في وظائف الحلقة الفارغة () حيث تقوم بطباعة قيم الضوضاء والسعال. في الكود الأصلي ، يتم طباعة الملصقات وقيمها معًا. لـ (size_t ix = 0؛ ix <EI_CLASSIFIER_LABEL_COUNT؛ ix ++) {ei_printf ("٪ s:٪.5f / n"، result.classification [ix].label، result.classification [ix].value) ؛ } سنقوم بحفظ قيم الضوضاء والسعال في متغيرات مختلفة ومقارنة قيم الضوضاء. إذا انخفضت قيمة الضوضاء عن 0.50 ، فهذا يعني أن قيمة السعال تزيد عن 0.50 وستصدر الصوت. استبدل كود حلقة for الأصلي بهذا: لـ (size_t ix = 1؛ ix <EI_CLASSIFIER_LABEL_COUNT؛ ix ++) {Serial.print (result.classification [ix].value)؛ تعويم البيانات = result.classification [ix].value ؛ if (البيانات <0.50) {Serial.print ("Cough Detected") ؛ إنذار()؛ }} بعد إجراء التغييرات ، قم بتحميل الكود إلى Arduino الخاص بك. افتح الشاشة التسلسلية على 115200 باود.

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

الخطوة 7: الكود

لو سمحت ابحث عن الملف المرفق،

وإذا كنت تحب ذلك ، فلا تنس التصويت لي في المسابقة أدناه.

موصى به: