Mundarija:

Yo'talni cho'ntak o'lchagichi: 7 qadam
Yo'talni cho'ntak o'lchagichi: 7 qadam

Video: Yo'talni cho'ntak o'lchagichi: 7 qadam

Video: Yo'talni cho'ntak o'lchagichi: 7 qadam
Video: Бу айолни килган ишини бахолан болани телдан узок килиш 2024, Noyabr
Anonim
Cho'ntak o'lchamli yo'talni aniqlash vositasi
Cho'ntak o'lchamli yo'talni aniqlash vositasi

COVID19 haqiqatan ham butun dunyoga juda yomon ta'sir ko'rsatadigan tarixiy pandemiya va odamlar u bilan kurashish uchun ko'plab yangi qurilmalar yaratmoqdalar. Biz, shuningdek, kontaktsiz haroratni tekshirish uchun avtomatik sanitarizatsiya mashinasi va termal tabancani qurdik. Bugun biz koronavirus bilan kurashda yordam beradigan yana bir qurilma quramiz. Bu yo'talni aniqlash tizimi bo'lib, u shovqin va yo'tal tovushini ajrata oladi va koronadan gumonlanuvchini topishga yordam beradi. Buning uchun u mashinani o'rganish texnikasidan foydalanadi.

Ushbu qo'llanmada biz Arduino 33 BLE Sense va Edge Impulse Studio yordamida yo'talni aniqlash tizimini qurmoqchimiz. Haqiqiy vaqtda ovozda oddiy fon shovqini va yo'talni farqlash mumkin. Biz yo'tal va fon shovqinlari namunalari to'plamini o'rgatish va real vaqtda yo'tal ovozini aniqlaydigan TInyML modelini yaratish uchun Edge Impulse Studio-dan foydalandik.

Ta'minotlar

Uskuna

  • Arduino 33 BLE Sense
  • LEDJumper
  • Simlar

Dasturiy ta'minot

  • Edge Impulse studiyasi
  • Arduino IDE

1 -qadam: O'chirish diagrammasi

O'chirish diagrammasi
O'chirish diagrammasi
O'chirish diagrammasi
O'chirish diagrammasi

Arduino 33 BLE Sense yordamida yo'talni aniqlash sxemasi yuqorida keltirilgan. Arduino 33 BLE uchun muzlatuvchi qism yo'q edi, shuning uchun men Arduino Nanodan foydalandim, chunki ikkalasi ham bir xil pinli.

LEDning ijobiy chizig'i Arduino 33 BLE sensorining 4 -raqamli piniga, Arduinoning GND piniga esa salbiy sim ulangan.

2 -qadam: Yo'talni aniqlash mashinasi uchun ma'lumotlar to'plamini yaratish

Yo'talni aniqlash mashinasi uchun ma'lumotlar to'plamini yaratish
Yo'talni aniqlash mashinasi uchun ma'lumotlar to'plamini yaratish

Yuqorida aytib o'tganimizdek, biz yo'talni aniqlash modelini o'rgatish uchun Edge Impulse Studio -dan foydalanmoqdamiz. Buning uchun biz Arduino -da tanib olishni istagan ma'lumotlar namunalari bo'lgan ma'lumotlar to'plamini yig'ishimiz kerak. Maqsad yo'talni aniqlash bo'lgani uchun siz shovqin uchun uning namunalarini va boshqa namunalarni to'plashingiz kerak bo'ladi, shuning uchun u yo'tal va boshqa shovqinlarni ajrata oladi. Biz ikkita "yo'tal" va "shovqin" sinfidan iborat ma'lumotlar to'plamini yaratamiz. Ma'lumotlar to'plamini yaratish uchun Edge Impulse hisobini yarating, hisobingizni tasdiqlang va keyin yangi loyihani boshlang. Siz namunalarni mobil telefoningiz, Arduino kartangiz yordamida yuklashingiz mumkin yoki ma'lumotlar to'plamini chekka impuls hisobingizga import qilishingiz mumkin. Namunalarni hisobingizga yuklashning eng oson usuli - mobil telefoningizdan foydalanish. Buning uchun siz Edge Impulse -ga mobil telefoningizni ulashingiz kerak. Mobil telefoningizni ulash uchun "Qurilmalar" ni bosing va "Yangi qurilmani ulash" ni bosing.

3 -qadam: Mobil telefonga ulanish

Mobil telefonga ulanish
Mobil telefonga ulanish

Endi keyingi oynada "Mobil telefoningizdan foydalanish" tugmasini bosing, shunda QR kod paydo bo'ladi. QR kodini Google Lens yoki boshqa QR -kod skaneri yordamida mobil telefoningiz bilan skanerlang.

Bu telefoningizni Edge Impulse studiyasi bilan bog'laydi.

Telefoningiz Edge Impulse Studio -ga ulangan bo'lsa, endi siz namunalaringizni yuklashingiz mumkin. Namunalarni yuklash uchun "Ma'lumot yig'ish" ni bosing. Endi Ma'lumotlarni olish sahifasida yorliq nomini kiriting, sensor sifatida mikrofonni tanlang va namuna uzunligini kiriting. 40 soniyali namuna olishni boshlash uchun "Namuna olishni boshlash" tugmasini bosing. O'zingizni yo'talishga majburlash o'rniga, turli uzunlikdagi onlayn yo'tal namunalarini ishlatishingiz mumkin. Har xil uzunlikdagi jami 10 dan 12 gacha yo'tal namunalarini yozib oling.

4 -qadam:

Rasm
Rasm
Rasm
Rasm

Yo'tal namunalarini yuklaganingizdan so'ng, yorliqni "shovqin" ga o'rnating va yana 10 dan 12 gacha shovqin namunasini yig'ing.

Bu namunalar modulni o'qitish uchun mo'ljallangan, keyingi bosqichlarda biz test ma'lumotlarini yig'amiz. Test ma'lumotlari mashg'ulot ma'lumotlarining kamida 30% bo'lishi kerak, shuning uchun 3 ta "shovqin" va 4-5 ta "yo'tal" namunalarini to'plang. Ma'lumotlaringizni yig'ish o'rniga Edge Impulse hisobingizga Edge yordamida ma'lumotlar bazasini import qilishingiz mumkin. CLI impulsli yuklovchi. CLI yuklovchisini o'rnatish uchun avval noutbukga Node.js faylini yuklab oling va o'rnating. Shundan so'ng, buyruq satrini oching va quyidagi buyruqni kiriting:

npm o'rnatish -g edge-impulse-cli

Endi ma'lumotlar bazasini yuklab oling (ma'lumotlar bazasi havolasi) va faylni loyiha papkasida chiqarib oling. Buyruqlar satrini oching va ma'lumotlar bazasi manziliga o'ting va quyidagi buyruqlarni bajaring:

chekka-impuls-yuklovchi-tozalovchi-impuls-yuklovchi-toifali trening treningi/*. json

chekka impuls-yuklovchi-toifali treninglar/*. cbor

chekka-impuls-yuklovchi-kategoriyaviy test sinovlari/*. json edge-impuls-uploader-toifali test sinovlari/*. cbor

5 -qadam: Modelni o'rgatish va kodni o'zgartirish

Ma'lumotlar bazasi tayyor bo'lgach, endi biz ma'lumotlar uchun impuls yaratamiz. Buning uchun "Impuls yaratish" sahifasiga o'ting.

Endi "Impuls yaratish" sahifasida "Qayta ishlash blokini qo'shish" ni bosing. Keyingi oynada Audio (MFCC) blokini tanlang. Shundan so'ng, "O'quv blokini qo'shish" ni bosing va Neural Network (Keras) blokini tanlang. Keyin "Impulse saqlash" ni bosing.

Keyingi bosqichda, MFCC sahifasiga o'ting va "Xususiyatlarni yaratish" ni bosing. Bu bizning barcha audio oynalarimiz uchun MFCC bloklarini yaratadi.

Shundan so'ng, "NN tasniflagichi" sahifasiga o'ting va "Neyron tarmoq sozlamalari" ning yuqori o'ng burchagidagi uchta nuqtani bosing va "Keras (ekspert) rejimiga o'tish" -ni tanlang.

Asl nusxasini quyidagi kod bilan almashtiring va "Minimal ishonch darajasi" ni "0,70" ga o'zgartiring. Keyin "Treningni boshlash" tugmasini bosing. Bu sizning modelingizni o'qitishni boshlaydi.

tensorflow.keras.modellardan tensorflow -ni import qilish tensorflow.keras.layer -dan ketma -ket import qilish Zich, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D dan tensorflow.keras.optimizstrain import. MaxNorm # modelli arxitektura 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 = '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 (Zich (sinflar, faollashtirish = 'softmax', ism = 'y_pred', kernel_constraint = MaxNorm) (3))) # bu o'rganish tezligini boshqaradi opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # neyron tarmoq modelini o'rgating. Kompilyatsiya (loss = 'kategorik_krossentropiya', optimizator = opt, o'lchovlar = ['aniqlik']) model.fit (X_train, Y_train, batch_size = 32, davrlar = 9, validation_data = (X_test, Y_test), aniq = 2)

6 -qadam:

Modelni o'rgatgandan so'ng, u mashg'ulot natijalarini ko'rsatadi. Men uchun aniqlik 96,5% va yo'qotish 0,10 edi, bu davom ettirish uchun yaxshi.

Endi yo'talni aniqlash modeli tayyor bo'lgach, biz ushbu modelni Arduino kutubxonasi sifatida joylashtiramiz. Modelni kutubxona sifatida yuklab olishdan oldin, siz "Jonli tasnif" sahifasiga o'tib, ishlashini sinab ko'rishingiz mumkin. "Joylashtirish" sahifasiga o'ting va "Arduino kutubxonasi" ni tanlang. Endi pastga siljiting va jarayonni boshlash uchun "Build" tugmasini bosing. Bu sizning loyihangiz uchun Arduino kutubxonasini quradi.

Endi kutubxonani Arduino IDE -ga qo'shing. Buning uchun Arduino IDE -ni oching va Sketch> Kutubxonani qo'shish> Add. ZIP kutubxonasini bosing. Keyin, Fayl> Misollar> Loyihangiz nomi - Edge Impulse> nano_ble33_sense_microphone -ga o'tish orqali misolni yuklang. Biz kodga ba'zi o'zgartirishlar kiritamiz, shunda biz Arduino yo'talni aniqlaganda ogohlantirish ovozini chiqaramiz. Buning uchun ovozli signal Arduino bilan bog'langan va u yo'talni aniqlaganida, LED uch marta yonadi. O'zgarishlar void loop () funktsiyalarida amalga oshiriladi, u erda shovqin va yo'tal qiymatlari chop etiladi. Asl kodda u teglar va ularning qiymatlarini birgalikda chop etadi. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix]. label, result.classification [ix].value); } Biz shovqin va yo'tal qiymatlarini har xil o'zgaruvchilarda saqlaymiz va shovqin qiymatlarini solishtiramiz. Agar shovqin 0,50 dan past bo'lsa, demak yo'tal 0,50 dan oshadi va ovoz chiqaradi. Loop () kodining asl nusxasini bu bilan almashtiring: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Ma'lumotlar <0,50) {Serial.print ("Yo'tal aniqlandi"); signal (); }} O'zgarishlarni kiritgandan so'ng, kodni Arduino -ga yuklang. Seriyali monitorni 115200 bodda oching.

Shunday qilib, yo'talni aniqlash apparati shunday qurilishi mumkin, bu har qanday COVID19 gumonlanuvchisini topishning juda samarali usuli emas, lekin u gavjum joylarda yaxshi ishlashi mumkin.

7 -qadam: kod

Iltimos, biriktirilgan faylni toping, Agar sizga yoqqan bo'lsa, quyidagi tanlovda menga ovoz berishni unutmang.

Tavsiya: