Daftar Isi:

Detektor Batuk Berukuran Saku: 7 Langkah
Detektor Batuk Berukuran Saku: 7 Langkah

Video: Detektor Batuk Berukuran Saku: 7 Langkah

Video: Detektor Batuk Berukuran Saku: 7 Langkah
Video: 70+ Teka-Teki Sulit Ini Bakal Bikin Kamu Bingung 2024, Juli
Anonim
Detektor Batuk Berukuran Saku
Detektor Batuk Berukuran Saku

COVID19 benar-benar pandemi bersejarah yang mempengaruhi seluruh dunia dengan sangat buruk dan orang-orang membangun banyak perangkat baru untuk melawannya. Kami juga telah membangun mesin sanitasi otomatis dan Thermal Gun untuk penyaringan suhu nirkontak. Hari ini kami akan membangun satu perangkat lagi untuk membantu memerangi Coronavirus. Ini adalah sistem pendeteksi batuk, yang dapat membedakan antara kebisingan dan suara batuk dan dapat membantu menemukan tersangka Corona. Ini akan menggunakan teknik pembelajaran mesin untuk itu.

Dalam tutorial ini, kita akan membangun sistem Deteksi Batuk menggunakan Arduino 33 BLE Sense dan Edge Impulse Studio. Hal ini dapat membedakan antara kebisingan latar belakang normal dan batuk dalam audio real-time. Kami menggunakan Edge Impulse Studio untuk melatih kumpulan data batuk dan sampel kebisingan latar belakang dan membangun model TInyML yang sangat dioptimalkan, yang dapat mendeteksi suara Batuk secara real-time.

Perlengkapan

Perangkat keras

  • Arduino 33 BLE Sense
  • LEDJumper
  • kabel

Perangkat lunak

  • Studio Impuls Tepi
  • Arduino IDE

Langkah 1: Diagram Sirkuit

Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit
Diagram Sirkuit

Diagram Sirkuit untuk Deteksi Batuk Menggunakan Arduino 33 BLE Sense diberikan di atas. Bagian fritzing untuk Arduino 33 BLE tidak tersedia, jadi saya menggunakan Arduino Nano karena keduanya memiliki pin-out yang sama.

Kabel Positif LED terhubung ke pin digital 4 Arduino 33 BLE sense dan kabel Negatif terhubung ke pin GND Arduino.

Langkah 2: Membuat Dataset untuk Mesin Deteksi Batuk

Membuat Dataset untuk Mesin Deteksi Batuk
Membuat Dataset untuk Mesin Deteksi Batuk

Seperti yang disebutkan sebelumnya, kami menggunakan Edge Impulse Studio untuk melatih model deteksi batuk kami. Untuk itu, kita harus mengumpulkan dataset yang memiliki sampel data yang ingin kita kenali di Arduino kita. Karena tujuannya adalah untuk mendeteksi batuk, Anda perlu mengumpulkan beberapa sampel itu dan beberapa sampel lain untuk kebisingan, sehingga dapat membedakan antara Batuk dan Suara lainnya. Kami akan membuat dataset dengan dua kelas "batuk" dan "kebisingan". Untuk membuat kumpulan data, buat akun Edge Impulse, verifikasi akun Anda, lalu mulai proyek baru. Anda dapat memuat sampel dengan menggunakan ponsel Anda, papan Arduino Anda atau Anda dapat mengimpor dataset ke akun impuls tepi Anda. Cara termudah untuk memuat sampel ke akun Anda adalah dengan menggunakan ponsel Anda. Untuk itu, Anda harus menghubungkan ponsel Anda dengan Edge Impulse. Untuk menghubungkan ponsel Anda, klik 'Perangkat' dan kemudian klik 'Hubungkan Perangkat Baru'.

Langkah 3: Hubungkan ke Ponsel

Hubungkan ke Ponsel
Hubungkan ke Ponsel

Sekarang di jendela berikutnya, klik 'Gunakan Ponsel Anda', dan kode QR akan muncul. Pindai kode QR dengan Ponsel Anda menggunakan Google Lens atau aplikasi pemindai kode QR lainnya.

Ini akan menghubungkan ponsel Anda dengan studio Edge Impulse.

Dengan ponsel Anda terhubung dengan Edge Impulse Studio, Anda sekarang dapat memuat sampel Anda. Untuk memuat sampel, klik 'Akuisisi data'. Sekarang di halaman Akuisisi data, masukkan nama label, pilih mikrofon sebagai sensor, dan masukkan panjang sampel. Klik 'Mulai pengambilan sampel', untuk mulai mengambil sampel sampel 40 Detik. Alih-alih memaksakan diri untuk batuk, Anda dapat menggunakan sampel batuk online dengan panjang yang berbeda. Catat total 10 hingga 12 sampel batuk dengan panjang yang berbeda.

Langkah 4:

Gambar
Gambar
Gambar
Gambar

Setelah mengupload sampel batuk, sekarang atur label ke 'noise' dan kumpulkan 10 hingga 12 sampel noise lainnya.

Sampel ini untuk Pelatihan modul, pada langkah selanjutnya, kami akan mengumpulkan Data Uji. Data pengujian harus setidaknya 30% dari data pelatihan, jadi kumpulkan 3 sampel 'kebisingan' dan 4 hingga 5 sampel 'batuk'. Alih-alih mengumpulkan data Anda, Anda dapat mengimpor dataset kami ke akun Edge Impulse Anda menggunakan Edge Pengunggah Impuls CLI. Untuk menginstal CLI Uploader, pertama, unduh dan instal Node.js di laptop Anda. Setelah itu buka command prompt dan masukkan perintah di bawah ini:

npm install -g edge-impulse-cli

Sekarang unduh dataset (Tautan Dataset) dan ekstrak file di folder proyek Anda. Buka command prompt dan arahkan ke lokasi dataset dan jalankan perintah di bawah ini:

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

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

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

Langkah 5: Melatih Model dan Mengubah Kode

Saat dataset sudah siap, sekarang kita akan membuat impuls untuk data. Untuk itu buka halaman 'Buat impuls'.

Sekarang di halaman 'Buat impuls', klik 'Tambahkan blok pemrosesan'. Di jendela berikutnya, pilih blok Audio (MFCC). Setelah itu klik ‘Add a learning block’ dan pilih blok Neural Network (Keras). Kemudian klik 'Simpan Impuls'.

Pada langkah selanjutnya, buka halaman MFCC dan kemudian klik ‘Generate Features’. Ini akan menghasilkan blok MFCC untuk semua jendela audio kami.

Setelah itu masuk ke halaman 'NN Classifier' dan klik tiga titik di sudut kanan atas 'Neural Network settings' dan pilih 'Switch to Keras (expert) mode'.

Ganti yang asli dengan kode berikut dan ubah 'Peringkat kepercayaan minimum' menjadi '0,70'. Kemudian klik tombol 'Mulai pelatihan'. Ini akan mulai melatih model Anda.

import tensorflow as tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D dari tensorflow.keras.optimizers import Adam.constraints importkeras dari tensorflow. MaxNorm # model arsitektur model = 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='sama', kernel_constraint=MaxNorm(3))) model.add(AveragePooling2D(pool_size=2, padding='sama')) model.add(Conv2D(5, kernel_size=5, activation='relu', padding='sama', kernel_constraint=MaxNorm(3))) model.add(AveragePooling2D(pool_size=2, padding='sama')) model.add(Flatten()) model.add(Dense(classes, activation='softmax', name='y_pred', kernel_constraint=MaxNorm (3))) # ini mengontrol kecepatan pembelajaran opt = Adam(lr=0,005, beta_ 1=0.9, beta_2=0.999) # melatih jaringan saraf model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=32, epochs=9, validasi_data=(X_test, Y_test), verbose=2)

Langkah 6:

Setelah melatih model, itu akan menunjukkan kinerja pelatihan. Bagi saya, akurasinya adalah 96,5% dan kerugiannya adalah 0,10 yang bagus untuk dilanjutkan.

Sekarang setelah model deteksi batuk kami siap, kami akan menerapkan model ini sebagai perpustakaan Arduino. Sebelum mengunduh model sebagai perpustakaan, Anda dapat menguji kinerjanya dengan membuka halaman 'Klasifikasi Langsung'. Buka halaman 'Deployment' dan pilih 'Arduino Library'. Sekarang gulir ke bawah dan klik 'Bangun' untuk memulai proses. Ini akan membangun perpustakaan Arduino untuk proyek Anda.

Sekarang tambahkan perpustakaan di Arduino IDE Anda. Untuk itu buka Arduino IDE lalu klik Sketch > Include Library > Add. ZIP library. Kemudian, muat contoh dengan membuka File > Contoh > Nama proyek Anda - Edge Impulse > nano_ble33_sense_microphone. Kami akan membuat beberapa perubahan pada kode sehingga kami dapat membuat suara peringatan ketika Arduino mendeteksi batuk. Untuk itu, buzzer dihubungkan dengan Arduino dan setiap kali mendeteksi batuk, LED akan berkedip tiga kali. Perubahan dibuat dalam fungsi void loop() di mana ia mencetak nilai noise dan batuk. Dalam kode aslinya, itu mencetak label dan nilainya bersama-sama. for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { ei_printf(" %s: %.5f\n", result.classification[ix].label, result.classification[ix].value); }Kami akan menyimpan nilai kebisingan dan batuk dalam variabel yang berbeda dan membandingkan nilai kebisingan. Jika nilai kebisingan turun di bawah 0,50 itu berarti nilai batuk lebih dari 0,50 dan akan mengeluarkan suara. Ganti kode for loop() asli dengan ini: for (size_t ix = 1; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { Serial.print(result.classification[ix].value); float Data = hasil.klasifikasi[ix].nilai; if (Data < 0.50){ Serial.print("Terdeteksi Batuk"); alarm(); } }Setelah melakukan perubahan, unggah kode ke Arduino Anda. Buka monitor serial pada 115200 baud.

Jadi beginilah cara membuat mesin pendeteksi batuk, ini bukan metode yang sangat efektif untuk menemukan tersangka COVID19 tetapi bisa bekerja dengan baik di beberapa area ramai.

Langkah 7: Kode

Silakan temukan file terlampir, Dan jika Anda menyukainya jangan lupa untuk memilih saya dalam kontes di bawah ini.

Direkomendasikan: