Isi kandungan:
- Bekalan
- Langkah 1: Diagram Litar
- Langkah 2: Membuat Dataset untuk Mesin Pengesanan Batuk
- Langkah 3: Sambungkan ke Telefon bimbit
- Langkah 4:
- Langkah 5: Melatih Model dan Mengambil Kod
- Langkah 6:
- Langkah 7: Kod
Video: Pengesan Batuk Berukuran Poket: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
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
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
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
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:
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:
Pembesar Suara Berukuran Poket: 3 Langkah
Pocket Sized Speaker: Bawa Ke Mana sahaja anda pergi! Muzik yang sedang dalam perjalanan! Halo semua dalam arahan ini (yang pertama saya) saya akan menunjukkan kepada anda bagaimana saya membuat Speaker Pocket Sized ini
Lengan Robot Berukuran Poket MeArm V0.4: 20 Langkah (dengan Gambar)
Pocket Sized Robot Arm MeArm V0.4: MeArm adalah Pocket Sized Robot Arm. Ini adalah projek yang dimulakan pada bulan Februari 2014, yang telah melakukan perjalanan yang sangat cepat ke keadaannya sekarang berkat Open Development sebagai projek Open Hardware. Versi 0.3 dipaparkan di Instructables kembali
Penjana Hidrogen / Oksigen Berukuran Poket: 5 Langkah
Penjana Hidrogen / Oksigen Berukuran Poket: Hidrogen sangat menyeronokkan untuk dimainkan, tetapi penjana yang paling cekap adalah besar. Saya mahu membuat sesuatu yang kecil dan dapat menghasilkan hidrogen. Tutorial ini akan menunjukkan kepada anda cara membuat penjana hidrogen / oksigen bersaiz poket. Malangnya, ia bukan
Roda Tembikar Berukuran Poket: 11 Langkah (dengan Gambar)
Pocket Sized Pottery Wheel: Membuat tembikar adalah bentuk hiburan yang sangat menyeronokkan dan bermanfaat. Satu-satunya masalah dengan tembikar adalah bahawa ia memerlukan banyak bekalan dan studio besar sehingga anda tidak dapat melakukannya di mana sahaja, sehingga sekarang! Dalam tutorial ini, saya akan menunjukkan kepada anda bagaimana membuat
Cara Membuat Stesen Cuaca IoT Berukuran Poket: 7 Langkah (dengan Gambar)
Cara Membuat Stesen Cuaca IoT Pocket Sized: Hello pembaca! Dalam instruksional ini, anda akan belajar bagaimana membuat Weather Cube kecil menggunakan D1 mini (ESP8266) yang disambungkan ke WiFi rumah anda, sehingga anda dapat melihat outputnya dari mana saja dari bumi, tentu saja selagi anda mempunyai sambungan internet