Isi kandungan:

Pengesan Batuk Berukuran Poket: 7 Langkah
Pengesan Batuk Berukuran Poket: 7 Langkah

Video: Pengesan Batuk Berukuran Poket: 7 Langkah

Video: Pengesan Batuk Berukuran Poket: 7 Langkah
Video: DOKTER GA NYANGKA DALAM KUPING NASTUSHA NEMU INI!! 2024, Disember
Anonim
Pengesan Batuk Berukuran Poket
Pengesan Batuk Berukuran Poket

COVID19 benar-benar merupakan wabak bersejarah yang memberi kesan buruk kepada seluruh dunia dan orang ramai membina banyak peranti baru untuk melawannya. Kami juga telah membina mesin sanitasi automatik dan Thermal Gun untuk pemeriksaan suhu tanpa sentuh. Hari ini kita akan membina satu lagi peranti untuk membantu memerangi Coronavirus. Ini adalah sistem pengesanan batuk, yang dapat membezakan antara bunyi dan bunyi batuk dan dapat membantu mencari suspek Corona. Ia akan menggunakan teknik pembelajaran mesin untuk itu.

Dalam tutorial ini, kita akan membina sistem Pengesanan Batuk menggunakan Arduino 33 BLE Sense dan Edge Impulse Studio. Ia dapat membezakan antara bunyi latar belakang biasa dan batuk dalam audio masa nyata. Kami menggunakan Edge Impulse Studio untuk melatih kumpulan data sampel batuk dan kebisingan latar belakang dan membina model TInyML yang sangat dioptimumkan, yang dapat mengesan bunyi Batuk secara real-time.

Bekalan

Perkakasan

  • Arduino 33 BLE Sense
  • Pelompat LED
  • Wayar

Perisian

  • Studio Edge Impulse
  • Arduino IDE

Langkah 1: Diagram Litar

Rajah Litar
Rajah Litar
Rajah Litar
Rajah Litar

Litar Diagram untuk Pengesanan Batuk Menggunakan Arduino 33 BLE Sense diberikan di atas. Bahagian fritzing untuk Arduino 33 BLE tidak tersedia, jadi saya menggunakan Arduino Nano kerana kedua-duanya mempunyai pin-out yang sama.

Pimpin positif LED disambungkan ke pin digital 4 Arduino 33 BLE sense dan Negative lead disambungkan ke pin GND Arduino.

Langkah 2: Membuat Dataset untuk Mesin Pengesanan Batuk

Membuat Dataset untuk Mesin Pengesanan Batuk
Membuat Dataset untuk Mesin Pengesanan Batuk

Seperti disebutkan sebelumnya, kami menggunakan Edge Impulse Studio untuk melatih model pengesanan batuk kami. Untuk itu, kita harus mengumpulkan set data yang mempunyai sampel data yang ingin kita kenali di Arduino kami. Oleh kerana tujuannya adalah untuk mengesan batuk, anda perlu mengumpulkan beberapa sampel itu dan beberapa sampel lain untuk kebisingan, sehingga dapat membezakan antara Batuk dan Bunyi yang lain. Kami akan membuat kumpulan data dengan dua kelas "batuk" dan "kebisingan". Untuk membuat set data, buat akaun Edge Impulse, sahkan akaun anda dan kemudian mulakan projek baru. Anda boleh memuatkan sampel dengan menggunakan telefon bimbit, papan Arduino anda atau anda boleh mengimport set data ke dalam akaun impuls tepi anda. Cara termudah untuk memasukkan sampel ke dalam akaun anda adalah dengan menggunakan telefon bimbit anda. Untuk itu, anda harus menyambungkan telefon bimbit anda dengan Edge Impulse. Untuk menyambungkan telefon bimbit anda, klik pada ‘Peranti’ dan kemudian klik ‘Sambungkan Peranti Baru’.

Langkah 3: Sambungkan ke Telefon bimbit

Sambungkan ke Telefon Mudah Alih
Sambungkan ke Telefon Mudah Alih

Sekarang di tetingkap seterusnya, klik 'Gunakan Telefon Bimbit Anda', dan kod QR akan muncul. Imbas kod QR dengan Telefon bimbit anda menggunakan Google Lens atau aplikasi pengimbas kod QR yang lain.

Ini akan menghubungkan telefon anda dengan studio Edge Impulse.

Dengan telefon anda disambungkan dengan Edge Impulse Studio, kini anda boleh memuatkan sampel anda. Untuk memuatkan sampel, klik pada 'Pemerolehan data'. Sekarang di halaman Pemerolehan data, masukkan nama label, pilih mikrofon sebagai sensor, dan masukkan panjang sampel. Klik pada ‘Start sampling’, untuk mula mengambil sampel 40 Sec. Daripada memaksa diri untuk batuk, anda boleh menggunakan sampel batuk dalam talian dengan panjang yang berbeza. Catat sejumlah 10 hingga 12 sampel batuk dengan panjang yang berbeza.

Langkah 4:

Imej
Imej
Imej
Imej

Setelah memuat naik sampel batuk, sekarang tetapkan label ke 'noise' dan kumpulkan 10 hingga 12 sampel noise lagi.

Sampel ini adalah untuk Melatih modul, pada langkah seterusnya, kami akan mengumpulkan Data Ujian. Data ujian mestilah sekurang-kurangnya 30% daripada data latihan, jadi kumpulkan 3 sampel 'noise' dan 4 hingga 5 sampel 'batuk'. Daripada mengumpulkan data anda, anda boleh mengimport set data kami ke dalam akaun Edge Impulse anda menggunakan Edge Pemuat naik Impulse CLI. Untuk memasang CLI Uploader, pertama, muat turun dan pasang Node.js pada komputer riba anda. Selepas itu buka arahan arahan dan masukkan arahan di bawah:

npm pasang -g edge-impulse-cli

Sekarang muat turun dataset (Dataset Link) dan ekstrak fail di folder projek anda. Buka command prompt dan arahkan ke lokasi set data dan jalankan arahan berikut:

edge-impulse-uploader --cleanedge-impulse-uploader - latihan latihan kategori / *. json

edge-impulse-uploader - latihan latihan kategori / *. cbor

edge-impulse-uploader - pengujian ujian kategori / *. json edge-impulse-uploader - ujian ujian kategori / *. cbor

Langkah 5: Melatih Model dan Mengambil Kod

Oleh kerana set data sudah siap, sekarang kita akan membuat dorongan untuk data. Untuk itu pergi ke halaman 'Buat impuls'.

Sekarang di halaman ‘Buat impuls’, klik pada ‘Tambah blok pemprosesan’. Di tetingkap seterusnya, pilih blok Audio (MFCC). Selepas itu klik pada ‘Tambah blok pembelajaran’ dan pilih blok Rangkaian Neural (Keras). Kemudian klik pada 'Save Impulse'.

Pada langkah seterusnya, pergi ke halaman MFCC dan kemudian klik pada 'Generate Features'. Ia akan menghasilkan blok MFCC untuk semua tetingkap audio kami.

Selepas itu pergi ke halaman ‘NN Classifier’ dan klik pada tiga titik di sudut kanan atas ‘Tetapan Rangkaian Neural’ dan pilih ‘Beralih ke mod Keras (pakar)’.

Ganti yang asli dengan kod berikut dan ubah ‘Peringkat keyakinan minimum’ menjadi ‘0.70’. Kemudian klik pada butang ‘Mula latihan’. Ia akan mula melatih model anda.

import tensorflow sebagai tffrom tensorflow.keras.models import Sequential dari tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D dari tensorflow.keras.optimflowers import dari tensorflow.keras.optimizers Model seni bina MaxNorm # = 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))) # ini mengawal kadar pembelajaran opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # latih model rangkaian saraf.compile (loss ='ategorical_crossentropy ', optimizer = opt, metrik = [' ketepatan ']) model.fit (X_train, Y_train, batch_size = 32, zaman = 9, validation_data = (X_test, Y_test), verbose = 2)

Langkah 6:

Setelah melatih model, ia akan menunjukkan prestasi latihan. Bagi saya, ketepatannya adalah 96.5% dan kerugian adalah 0.10 yang baik untuk diteruskan.

Sekarang kerana model pengesanan batuk kami sudah siap, kami akan menggunakan model ini sebagai perpustakaan Arduino. Sebelum memuat turun model sebagai perpustakaan, anda boleh menguji prestasinya dengan pergi ke halaman ‘Klasifikasi Langsung’. Pergi ke halaman 'Penerapan' dan pilih 'Perpustakaan Arduino'. Sekarang tatal ke bawah dan klik pada ‘Build’ untuk memulakan prosesnya. Ini akan membina perpustakaan Arduino untuk projek anda.

Sekarang tambahkan perpustakaan di Arduino IDE anda. Untuk itu buka Arduino IDE dan kemudian klik pada Sketch> Include Library> Add. ZIP library. Kemudian, muatkan contoh dengan pergi ke Fail> Contoh> Nama projek anda - Edge Impulse> nano_ble33_sense_microphone. Kami akan membuat beberapa perubahan pada kod tersebut sehingga kami dapat mengeluarkan suara waspada ketika Arduino mengesan batuk. Untuk itu, buzzer dihubungkan dengan Arduino dan setiap kali mengesan batuk, LED akan berkelip tiga kali. Perubahan dibuat dalam fungsi loop kosong () di mana ia mencetak nilai kebisingan dan batuk. Dalam kod asal, ia mencetak label dan nilainya bersama-sama. untuk (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", hasil.klasifikasi [ix].label, result.classification [ix].value); } Kami akan menyimpan kedua-dua nilai kebisingan dan batuk dalam pemboleh ubah yang berbeza dan membandingkan nilai kebisingan. Sekiranya nilai kebisingan berada di bawah 0.50 itu bermaksud nilai batuk lebih dari 0.50 dan itu akan mengeluarkan suaranya. Gantikan kod asal untuk gelung () dengan ini: untuk (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); data terapung = hasil.klasifikasi [ix].value; jika (Data <0.50) {Serial.print ("Batuk Dikesan"); penggera (); }} Setelah membuat perubahan, muat naik kod ke Arduino anda. Buka monitor bersiri pada 115200 baud.

Jadi ini adalah bagaimana mesin pengesan batuk dapat dibina, ini bukan kaedah yang sangat berkesan untuk mencari mana-mana suspek COVID19 tetapi boleh berfungsi dengan baik di beberapa kawasan yang sesak.

Langkah 7: Kod

Sila cari fail yang dilampirkan, Dan jika anda suka, jangan lupa memilih saya dalam pertandingan di bawah.

Disyorkan: