فهرست مطالب:

آشکارساز سرفه جیبی: 7 مرحله
آشکارساز سرفه جیبی: 7 مرحله

تصویری: آشکارساز سرفه جیبی: 7 مرحله

تصویری: آشکارساز سرفه جیبی: 7 مرحله
تصویری: اثرات منفی امواج موبایل : دفع ضرر امواج موبایل با یک خوردنی بی نظیر : طب سنتی 2024, نوامبر
Anonim
آشکارساز سرفه جیبی
آشکارساز سرفه جیبی

COVID19 در واقع یک بیماری همه گیر تاریخی است که بر جهان بسیار بد تأثیر گذاشته است و مردم در حال ساخت بسیاری از دستگاه های جدید برای مبارزه با آن هستند. ما همچنین یک دستگاه ضدعفونی کننده خودکار و تفنگ حرارتی برای غربالگری دمای بدون تماس ساخته ایم. امروز ما یک دستگاه دیگر برای کمک به مبارزه با ویروس کرونا خواهیم ساخت. این یک سیستم تشخیص سرفه است که می تواند بین سر و صدا و صدای سرفه تمایز قائل شود و می تواند به یافتن فرد مشکوک به کرونا کمک کند. برای این منظور از تکنیک های یادگیری ماشین استفاده خواهد کرد.

در این آموزش ، ما قصد داریم یک سیستم تشخیص سرفه با استفاده از Arduino 33 BLE Sense و Edge Impulse Studio بسازیم. این می تواند بین سر و صدای معمولی پس زمینه و سرفه در صدای زمان واقعی تمایز قائل شود. ما از Edge Impulse Studio برای آموزش مجموعه ای از نمونه های سرفه و سر و صدای پس زمینه و ایجاد یک مدل TInyML بسیار بهینه استفاده کردیم ، که می تواند صدای سرفه را در زمان واقعی تشخیص دهد.

تدارکات

سخت افزار

  • آردوینو 33 BLE Sense
  • بلوز LED
  • سیم ها

نرم افزار

  • استودیو Edge Impulse
  • آردوینو IDE

مرحله 1: نمودار مدار

مدار
مدار
مدار
مدار

نمودار مدار برای تشخیص سرفه با استفاده از Arduino 33 BLE Sense در بالا آورده شده است. قسمت فریتینگ برای Arduino 33 BLE در دسترس نبود ، بنابراین من از آردوینو نانو استفاده کردم زیرا هر دو دارای پین کردن یکسانی هستند.

سربی مثبت LED به پین دیجیتال 4 حس Arduino 33 BLE و سرب منفی به پین GND آردوینو متصل است.

مرحله 2: ایجاد مجموعه داده برای دستگاه تشخیص سرفه

ایجاد مجموعه داده برای دستگاه تشخیص سرفه
ایجاد مجموعه داده برای دستگاه تشخیص سرفه

همانطور که قبلاً ذکر شد ، ما از Edge Impulse Studio برای آموزش مدل تشخیص سرفه خود استفاده می کنیم. برای این کار ، ما باید مجموعه داده ای را جمع آوری کنیم که دارای نمونه های داده ای باشد که می خواهیم در Arduino خود بتوانیم آنها را تشخیص دهیم. از آنجا که هدف تشخیص سرفه است ، باید نمونه هایی از آن و برخی نمونه های دیگر را برای سر و صدا جمع آوری کنید ، بنابراین می تواند بین سرفه و سایر صداها تمایز قائل شود. ما یک مجموعه داده با دو کلاس "سرفه" و "سر و صدا" ایجاد می کنیم. برای ایجاد یک مجموعه داده ، یک حساب Edge Impulse ایجاد کنید ، حساب خود را تأیید کنید و سپس یک پروژه جدید را شروع کنید. می توانید نمونه ها را با استفاده از تلفن همراه خود ، برد Arduino خود بارگیری کنید یا می توانید یک مجموعه داده را به حساب impulse edge خود وارد کنید. ساده ترین راه برای بارگذاری نمونه ها در حساب شما استفاده از تلفن همراه است. برای این کار ، باید تلفن همراه خود را با Edge Impulse متصل کنید. برای اتصال تلفن همراه خود ، روی "Devices" و سپس روی "Connect a New Device" کلیک کنید.

مرحله 3: اتصال به تلفن همراه

اتصال به تلفن همراه
اتصال به تلفن همراه

اکنون در پنجره بعدی ، روی "Use your Mobile Phone" کلیک کنید ، و یک کد QR ظاهر می شود. با استفاده از Google Lens یا سایر برنامه های اسکن کننده کد QR ، کد QR را با تلفن همراه خود اسکن کنید.

با این کار تلفن شما به استودیو Edge Impulse متصل می شود.

با اتصال تلفن خود به Edge Impulse Studio ، اکنون می توانید نمونه های خود را بارگیری کنید. برای بارگیری نمونه ها ، روی "جمع آوری داده" کلیک کنید. اکنون در صفحه جمع آوری داده ها ، نام برچسب را وارد کنید ، میکروفون را به عنوان حسگر انتخاب کنید و طول نمونه را وارد کنید. برای شروع نمونه برداری از نمونه 40 ثانیه ای ، روی "شروع نمونه برداری" کلیک کنید. به جای اینکه خود را مجبور به سرفه کنید ، می توانید از نمونه های سرفه آنلاین با طول های مختلف استفاده کنید. در مجموع 10 تا 12 نمونه سرفه با طول های مختلف ثبت کنید.

مرحله 4:

تصویر
تصویر
تصویر
تصویر

پس از بارگذاری نمونه های سرفه ، برچسب "سر و صدا" را تنظیم کرده و 10 تا 12 نمونه سر و صدا دیگر جمع آوری کنید.

این نمونه ها برای آموزش ماژول است ، در مراحل بعدی ، داده های تست را جمع آوری می کنیم. داده های آزمایش باید حداقل 30 of از داده های آموزشی باشد ، بنابراین 3 نمونه "سر و صدا" و 4 تا 5 نمونه "سرفه" را جمع آوری کنید. به جای جمع آوری داده های خود ، می توانید مجموعه داده ما را با استفاده از Edge به حساب Edge Impulse خود وارد کنید Impulse CLI Uploader. برای نصب CLI Uploader ، ابتدا Node.js را در لپ تاپ خود بارگیری و نصب کنید. پس از آن خط فرمان را باز کرده و دستور زیر را وارد کنید:

npm install -g edge-impulse-cli

اکنون مجموعه داده (Link Dataset) را بارگیری کرده و فایل را در پوشه پروژه خود استخراج کنید. خط فرمان را باز کنید و به پایگاه داده بروید و دستورات زیر را اجرا کنید:

edge-impulse-uploader --cleanedge-impulse-uploader-آموزش آموزش دسته بندی/*. json

edge-impulse-uploader-آموزش آموزش دسته/*. cbor

edge-impulse-uploader-تست تست دسته/*. json edge-impulse-uploader-تست دسته بندی test/*. cbor

مرحله 5: آموزش مدل و اصلاح کد

با آماده شدن مجموعه داده ، اکنون ما یک ضربه برای داده ها ایجاد می کنیم. برای این کار به صفحه "ایجاد انگیزه" بروید.

اکنون در صفحه "ایجاد ضربه" ، روی "افزودن بلوک پردازش" کلیک کنید. در پنجره بعدی ، بلوک Audio (MFCC) را انتخاب کنید. پس از آن بر روی "افزودن یک بلوک آموزشی" کلیک کنید و بلوک شبکه عصبی (Keras) را انتخاب کنید. سپس بر روی "Save Impulse" کلیک کنید.

در مرحله بعد ، به صفحه MFCC بروید و سپس روی "ایجاد ویژگی ها" کلیک کنید. این بلوک های MFCC را برای همه پنجره های صوتی ما ایجاد می کند.

پس از آن به صفحه "طبقه بندی NN" بروید و روی سه نقطه در گوشه سمت راست بالای "تنظیمات شبکه عصبی" کلیک کنید و "تغییر به حالت Keras (متخصص)" را انتخاب کنید.

کد زیر را جایگزین اصلی کرده و "حداقل درجه اطمینان" را به "0.70" تغییر دهید. سپس بر روی دکمه "شروع آموزش" کلیک کنید. شروع به آموزش مدل شما می کند.

import tensorflow as tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense، InputLayer، Dropout، Flatten، Reshape، BatchNormalization، Conv2D، MaxPooling2D، AveragePooling2D from tensorflow.keras.optimizers واردات Adamx MaxNorm # model model model = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1]،)، name = 'x_input')) model.add (تغییر شکل ((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 (متراکم (کلاسها ، فعالسازی = 'softmax'، name = 'y_pred'، kernel_constraint = MaxNorm (3))) # این میزان یادگیری opt = Adam را کنترل می کند (lr = 0.005 ، بتا_ 1 = 0.9 ، بتا_2 = 0.999) # آموزش شبکه عصبی ، validation_data = (X_test ، Y_test) ، مفصل = 2)

مرحله 6:

پس از آموزش مدل ، عملکرد آموزش را نشان می دهد. برای من ، دقت 96.5 and و ضرر 0.10 بود که برای ادامه کار خوب است.

اکنون که مدل تشخیص سرفه ما آماده است ، ما این مدل را به عنوان کتابخانه آردوینو مستقر می کنیم. قبل از بارگیری مدل به عنوان کتابخانه ، می توانید عملکرد را با رفتن به صفحه "طبقه بندی زنده" آزمایش کنید. به صفحه "استقرار" بروید و "کتابخانه آردوینو" را انتخاب کنید. اکنون به پایین بروید و روی "Build" کلیک کنید تا روند شروع شود. این یک کتابخانه آردوینو برای پروژه شما ایجاد می کند.

حالا کتابخانه را در Arduino IDE خود اضافه کنید. برای این کار Arduino IDE را باز کنید و سپس روی Sketch> Include Library> Add. ZIP library کلیک کنید. سپس ، یک مثال را با رفتن به مسیر File> Examples> Your project - Edge Impulse> nano_ble33_sense_microphone بارگذاری کنید. ما برخی تغییرات را در کد ایجاد می کنیم تا بتوانیم هنگام آردوینو سرفه را تشخیص دهیم. برای این کار ، یک زنگ با 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)؛ float Data = result.classification [ix].value؛ if (اطلاعات <0.50) {Serial.print ("سرفه تشخیص داده شد") ؛ زنگ خطر. هشدار()؛ }} پس از اعمال تغییرات ، کد را در Arduino خود بارگذاری کنید. مانیتور سریال را در 115200 baud باز کنید.

بنابراین به این ترتیب می توان یک دستگاه تشخیص سرفه ساخت ، این روش چندان موثری برای یافتن مشکوک به COVID19 نیست ، اما می تواند در مناطق شلوغ به خوبی کار کند.

مرحله 7: کد

لطفا فایل پیوست را پیدا کنید ،

و اگر دوست داشتید فراموش نکنید که در مسابقه زیر به من رای دهید.

توصیه شده: