Mündəricat:

Cib Ölçülü Öskürək Detektoru: 7 addım
Cib Ölçülü Öskürək Detektoru: 7 addım

Video: Cib Ölçülü Öskürək Detektoru: 7 addım

Video: Cib Ölçülü Öskürək Detektoru: 7 addım
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Iyul
Anonim
Cib Ölçülü Öskürək Detektoru
Cib Ölçülü Öskürək Detektoru

COVID19 həqiqətən də bütün dünyanı çox pis təsir edən tarixi bir pandemiyadır və insanlar bununla mübarizə aparmaq üçün bir çox yeni cihaz qurur. Əlaqəsiz temperatur taraması üçün avtomatik bir dezinfeksiya maşını və Termal Tabanca da qurduq. Bu gün koronavirusla mübarizə aparmaq üçün daha bir cihaz quracağıq. Səs və öskürək səsini ayırd edə bilən və Corona şübhəlisinin tapılmasına kömək edə bilən öskürək aşkarlama sistemidir. Bunun üçün maşın öyrənmə üsullarından istifadə edəcək.

Bu təlimatda Arduino 33 BLE Sense və Edge Impulse Studio istifadə edərək Öskürək Algılama sistemi quracağıq. Normal fon səs-küyü ilə öskürək arasında real vaxtdakı səs fərqləndirə bilər. Edge Impulse Studio-dan öskürək və arxa səs-küy nümunələri toplusunu öyrətmək və real vaxtda öskürək səsini aşkar edə biləcək yüksək dərəcədə optimallaşdırılmış TInyML modeli qurmaq üçün istifadə etdik.

Təchizat

Avadanlıq

  • Arduino 33 BLE Sense
  • LEDJumper
  • Tellər

Proqram təminatı

  • Edge Impulse Studiyası
  • Arduino IDE

Addım 1: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı
Dövrə diaqramı

Arduino 33 BLE Sense istifadə edərək öskürəyin aşkarlanması üçün dövrə diaqramı yuxarıda verilmişdir. Arduino 33 BLE üçün dondurucu hissə mövcud deyildi, buna görə də Arduino Nano'dan istifadə etdim, çünki hər ikisi eyni çıxışı var.

LED -in pozitiv qurğusu Arduino 33 BLE hissəsinin rəqəmsal pininə 4, Mənfi aparat isə Arduinonun GND pininə bağlıdır.

Addım 2: Öskürək Algılama Maşını üçün Məlumat Toplusu Yaratmaq

Öskürək Algılama Maşını üçün Məlumat Küməsinin Yaradılması
Öskürək Algılama Maşını üçün Məlumat Küməsinin Yaradılması

Daha əvvəl də qeyd edildiyi kimi, öskürək aşkarlama modelimizi öyrətmək üçün Edge Impulse Studio -dan istifadə edirik. Bunun üçün Arduino -da tanımaq istədiyimiz məlumat nümunələrinə malik bir məlumat toplamaq məcburiyyətindəyik. Məqsəd öskürəyi aşkar etmək olduğundan, öskürək və digər səsləri ayırd edə bilmək üçün bunun nümunələrini və bəzi digər nümunələri səs -küy üçün toplamalısınız. "Öskürək" və "səs -küy" iki sinifdən ibarət bir verilənlər bazası yaradacağıq. Bir verilənlər bazası yaratmaq üçün bir Edge Impulse hesabı yaradın, hesabınızı doğrulayın və sonra yeni bir layihəyə başlayın. Nümunələri mobil telefonunuzdan, Arduino lövhənizdən istifadə edərək yükləyə bilərsiniz və ya bir məlumat dəstini kənar impuls hesabınıza idxal edə bilərsiniz. Nümunələri hesabınıza yükləməyin ən asan yolu cib telefonunuzdan istifadə etməkdir. Bunun üçün cib telefonunuzu Edge Impulse ilə bağlamalısınız. Cib telefonunuzu bağlamaq üçün "Cihazlar" ı və sonra "Yeni Bir Cihaz Bağlayın" düyməsini basın.

Addım 3: Mobil telefona qoşulun

Mobil telefona qoşulun
Mobil telefona qoşulun

İndi növbəti pəncərədə 'Cib Telefonunuzdan İstifadə et' düyməsini basın və bir QR kodu görünəcək. Google Lens və ya digər QR kodu skaner tətbiqindən istifadə edərək QR kodunu Cib Telefonunuzla tarayın.

Bu telefonunuzu Edge Impulse studiyası ilə birləşdirəcək.

Telefonunuzu Edge Impulse Studio ilə əlaqələndirərək artıq nümunələrinizi yükləyə bilərsiniz. Nümunələri yükləmək üçün "Məlumat əldə etmə" düyməsini basın. İndi Məlumat əldə etmə səhifəsində etiket adını daxil edin, mikrofonu sensor olaraq seçin və nümunə uzunluğunu daxil edin. 40 Saniyəlik bir nümunə götürməyə başlamaq üçün 'Nümunə götürməyə başla' düyməsini basın. Özünüzü öskürməyə məcbur etmək əvəzinə, müxtəlif uzunluqdakı onlayn öskürək nümunələrindən istifadə edə bilərsiniz. Müxtəlif uzunluqdakı cəmi 10-12 öskürək nümunəsi yazın.

Addım 4:

Şəkil
Şəkil
Şəkil
Şəkil

Öskürək nümunələrini yüklədikdən sonra etiketi 'səs -küy' olaraq təyin edin və başqa 10-12 səs nümunəsi toplayın.

Bu nümunələr modulun öyrədilməsi üçündür, növbəti addımlarda Test məlumatlarını toplayacağıq. Test məlumatları təlim məlumatlarının ən azı 30% -ni təşkil etməlidir, buna görə də 3 "səs -küy" və 4 -dən 5 -ə qədər "öskürək" nümunələrini toplayın. Məlumatlarınızı toplamaq əvəzinə Edge istifadə edərək məlumat bazamızı Edge Impulse hesabınıza idxal edə bilərsiniz. Impuls CLI yükləyicisi. CLI Yükləyicisini qurmaq üçün əvvəlcə Node.js faylını dizüstü kompüterinizə yükləyin və quraşdırın. Bundan sonra əmr satırını açın və aşağıdakı əmri daxil edin:

npm quraşdırma -g edge-impulse-cli

İndi verilənlər bazasını (Dataset Link) yükləyin və faylı layihə qovluğunuzdan çıxarın. Əmr əmrini açın və verilənlər bazasının yerləşdiyi yerə gedin və aşağıdakı əmrləri yerinə yetirin:

edge-impulse-uploader --cleanedge-impulse-uploader-kateqoriya təhsili təhsili/*. json

edge-impulse-uploader-kateqoriya təhsili təhsili/*. cbor

edge-impulse-uploader-kateqoriya test sınaqları/*. json edge-impulse-uploader-kateqoriya test sınaqları/*. cbor

Addım 5: Modeli öyrətmək və Kodu Tweaking

Veri dəsti hazır olduğu üçün indi məlumatlar üçün bir təkan yaradacağıq. Bunun üçün 'İmpuls yarat' səhifəsinə keçin.

İndi 'İmpuls yarat' səhifəsində 'İşləmə bloku əlavə et' düyməsini basın. Növbəti pəncərədə Audio (MFCC) blokunu seçin. Bundan sonra 'Öyrənmə bloku əlavə et' düyməsini basın və Sinir Şəbəkəsi (Keras) blokunu seçin. Sonra 'İmpulsu Saxla' düyməsini basın.

Növbəti addımda MFCC səhifəsinə keçin və sonra 'Xüsusiyyətlər Yarat' düyməsini basın. Bütün səs pəncərələrimiz üçün MFCC blokları yaradacaq.

Bundan sonra 'NN təsnifatçısı' səhifəsinə gedin və 'Sinir Şəbəkəsi parametrləri' nin sağ üst küncündəki üç nöqtəni vurun və 'Keras (mütəxəssis) rejiminə keçin' seçin.

Orijinalı aşağıdakı kodla əvəz edin və "Minimum güvən reytinqi" ni "0.70" olaraq dəyişdirin. Sonra 'Təlimə başla' düyməsini basın. Modelinizi öyrətməyə başlayacaq.

tensorflow.keras.models kimi tensorflow idxal edin tensorflow.keras.layers -dən ardıcıl idxal Yoğun, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D -dən tensorflow.keras.optimizstrain idxal MaxNorm # model memarlıq modeli = 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 = 'eyni')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'eyni', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'eyni')) model.add (Flatten ()) model.add (Yoğun (siniflər, aktivasiya = 'softmax', ad = 'y_pred', kernel_constraint = MaxNorm) (3))) # bu, öyrənmə sürətini idarə edir opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # sinir şəbəkəsi modelini hazırlayın, validation_data = (X_test, Y_test), ətraflı = 2)

Addım 6:

Modeli öyrətdikdən sonra təlim performansını göstərəcək. Mənim üçün dəqiqlik 96.5% və itki 0.10 idi, davam etmək yaxşıdır.

Öskürək aşkarlama modelimiz hazır olduğu üçün bu modeli Arduino kitabxanası olaraq yerləşdirəcəyik. Modeli kitabxana olaraq yükləməzdən əvvəl 'Canlı təsnifat' səhifəsinə gedərək performansı yoxlaya bilərsiniz. 'Dağıtım' səhifəsinə gedin və 'Arduino Kitabxanası' nı seçin. İndi aşağıya fırladın və prosesi başlamaq üçün 'Qur' düyməsini basın. Bu, layihəniz üçün bir Arduino kitabxanası quracaq.

İndi kitabxananı Arduino IDE -yə əlavə edin. Bunun üçün Arduino IDE -ni açın və sonra Sketch> Kitabxanaya daxil et> Add. ZIP kitabxanasına vurun. Sonra, Fayl> Nümunələr> Layihənizin adı - Edge Impulse> nano_ble33_sense_microphone -a gedərək bir nümunə yükləyin. Kodda bəzi dəyişikliklər edəcəyik ki, Arduino öskürəyi aşkarlayanda xəbərdarlıq səsi çıxara bilək. Bunun üçün bir siqnal Arduino ilə əlaqələndirilir və öskürək algıladığında LED üç dəfə yanıb -sönəcək. Dəyişikliklər səs -küy və öskürək dəyərlərini çap etdiyi void loop () funksiyalarında edilir. Orijinal kodda həm etiketləri, həm də dəyərlərini birlikdə çap edir. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].abel, result.classification [ix].value); } Həm səs -küy, həm də öskürək dəyərlərini fərqli dəyişənlərdə saxlayacağıq və səs -küy dəyərlərini müqayisə edəcəyik. Səs -küy 0.50 -dən aşağı düşərsə, öskürək dəyəri 0.50 -dən çoxdur və səs çıxaracaq. Orijinal for loop () kodunu bununla əvəz edin: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = nəticə.sınıflandırma [ix].dəyər; əgər (Məlumat <0.50) {Serial.print ("Öskürək aşkarlandı"); siqnalizasiya (); }} Dəyişikliklər etdikdən sonra kodu Arduino -ya yükləyin. Serial monitoru 115200 baudda açın.

Öskürək aşkarlama maşını belə qurula bilər, hər hansı bir COVID19 şübhəlisini tapmaq çox təsirli bir üsul deyil, ancaq bəzi sıxlıq ərazilərdə yaxşı işləyə bilər.

Addım 7: Kod

Zəhmət olmasa əlavə edilmiş faylı tapın, Bəyəndiyiniz təqdirdə aşağıdakı müsabiqədə mənə səs verməyi unutmayın.

Tövsiyə: