Съдържание:
- Консумативи
- Стъпка 1: Електрическа схема
- Стъпка 2: Създаване на набор от данни за машина за откриване на кашлица
- Стъпка 3: Свържете се с мобилен телефон
- Стъпка 4:
- Стъпка 5: Обучение на модела и промяна на кода
- Стъпка 6:
- Стъпка 7: Код
Видео: Джобен детектор за кашлица: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
COVID19 е наистина историческа пандемия, която засяга много лошо целия свят и хората изграждат много нови устройства за борба с него. Също така сме изградили автоматична машина за дезинфекция и термопистолет за безконтактен температурен скрининг. Днес ще изградим още едно устройство, което да помогне в борбата с коронавируса. Това е система за откриване на кашлица, която може да прави разлика между шума и звука на кашлицата и може да помогне за намирането на заподозрян в корона. За това ще използва техники за машинно обучение.
В този урок ще изградим система за откриване на кашлица, използвайки Arduino 33 BLE Sense и Edge Impulse Studio. Той може да прави разлика между нормален фонов шум и кашлица в аудио в реално време. Използвахме Edge Impulse Studio, за да обучим набор от данни за проби от кашлица и фонов шум и да изградим силно оптимизиран модел TInyML, който може да открие звук от кашлица в реално време.
Консумативи
Хардуер
- Arduino 33 BLE Sense
- LEDJumper
- Проводници
Софтуер
- Edge Impulse Studio
- Arduino IDE
Стъпка 1: Електрическа схема
Схема за откриване на кашлица с помощта на Arduino 33 BLE Sense е дадена по -горе. Частта за нарязване за Arduino 33 BLE не беше налична, затова използвах Arduino Nano, тъй като и двете имат един и същ извод.
Положителният проводник на LED е свързан към цифров извод 4 на Arduino 33 BLE sense, а отрицателният проводник е свързан към GND щифта на Arduino.
Стъпка 2: Създаване на набор от данни за машина за откриване на кашлица
Както бе споменато по -рано, ние използваме Edge Impulse Studio, за да обучим нашия модел за откриване на кашлица. За целта трябва да съберем набор от данни, който има извадки от данни, които бихме искали да можем да разпознаем на нашия Arduino. Тъй като целта е да се открие кашлицата, ще трябва да съберете някои проби от тази и някои други проби за шум, така че да може да прави разлика между кашлица и други шумове. Ще създадем набор от данни с два класа „кашлица“и „шум“. За да създадете набор от данни, създайте акаунт в Edge Impulse, потвърдете акаунта си и след това стартирайте нов проект. Можете да заредите пробите, като използвате мобилния си телефон, дъската си Arduino или можете да импортирате набор от данни във вашия акаунт за импулси на край. Най -лесният начин да заредите пробите във вашия акаунт е като използвате мобилния си телефон. За целта трябва да свържете мобилния си телефон с Edge Impulse. За да свържете мобилния си телефон, кликнете върху „Устройства“и след това върху „Свързване на ново устройство“.
Стъпка 3: Свържете се с мобилен телефон
Сега в следващия прозорец кликнете върху „Използвайте мобилния си телефон“и ще се появи QR код. Сканирайте QR кода с мобилния си телефон с помощта на Google Lens или друго приложение за скенер на QR код.
Това ще свърже телефона ви с Edge Impulse studio.
С телефона си, свързан с Edge Impulse Studio, вече можете да зареждате пробите си. За да заредите пробите, щракнете върху „Събиране на данни“. Сега на страницата за събиране на данни въведете името на етикета, изберете микрофона като сензор и въведете дължината на извадката. Кликнете върху „Стартиране на вземане на проби“, за да започнете вземане на проби от 40 Sec. Вместо да се принуждавате да кашляте, можете да използвате онлайн проби за кашлица с различна дължина. Запишете общо 10 до 12 проби от кашлица с различна дължина.
Стъпка 4:
След като качите проби от кашлица, сега задайте етикета на „шум“и съберете още 10 до 12 проби от шум.
Тези проби са за обучение на модула, в следващите стъпки ще съберем тестовите данни. Данните от теста трябва да са поне 30% от данните за обучение, така че съберете 3 -те проби от „шум“и 4 до 5 проби от „кашлица“. Вместо да събирате данните си, можете да импортирате нашия набор от данни във вашия акаунт в Edge Impulse, използвайки Edge Impulse CLI Uploader. За да инсталирате CLI Uploader, първо изтеглете и инсталирайте Node.js на вашия лаптоп. След това отворете командния ред и въведете командата по -долу:
npm install -g edge-impulse-cli
Сега изтеглете набора от данни (Dataset Link) и извлечете файла в папката на вашия проект. Отворете командния ред и отидете до местоположението на набора от данни и изпълнете командите по -долу:
edge-impulse-uploader --cleanedge-impulse-uploader-обучение по категории/*. json
edge-impulse-uploader-обучение по категория обучение/*. cbor
edge-impulse-uploader-тестване на категория тестване/*. json edge-impulse-uploader-тестване на категория тестване/*. cbor
Стъпка 5: Обучение на модела и промяна на кода
Тъй като наборът от данни е готов, сега ще създадем импулс за данни. За целта отидете на страницата „Създаване на импулс“.
Сега на страницата „Създаване на импулс“кликнете върху „Добавяне на блок за обработка“. В следващия прозорец изберете блока Audio (MFCC). След това кликнете върху „Добавяне на учебен блок“и изберете блока Невронна мрежа (Keras). След това кликнете върху „Запазване на импулса“.
В следващата стъпка отидете на страницата MFCC и след това кликнете върху „Генериране на функции“. Той ще генерира MFCC блокове за всички наши аудио прозорци.
След това отидете на страницата „NN Classifier“и щракнете върху трите точки в горния десен ъгъл на „Neural Network settings“и изберете „Switch to Keras (expert) mode“.
Заменете оригинала със следния код и променете „Минимален рейтинг на доверие“на „0,70“. След това кликнете върху бутона „Започнете обучение“. Той ще започне да тренира вашия модел.
импортира tensorflow като tffrom tensorflow.keras.models импортира последователно от tensorflow.keras.layers импортира Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D от tensorflow.keras.optimizers 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 (classes, activation = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # това контролира скоростта на обучение opt = Adam (lr = 0.005, beta_ 1 = 0.9;, данни за валидиране = (X_test, Y_test), подробно = 2)
Стъпка 6:
След като обучите модела, той ще покаже тренировъчното представяне. За мен точността беше 96,5%, а загубата 0,10, което е добре да се продължи.
Сега, когато нашият модел за откриване на кашлица е готов, ще внедрим този модел като библиотека Arduino. Преди да изтеглите модела като библиотека, можете да тествате производителността, като отидете на страницата „Класификация на живо“. Отидете на страницата „Разгръщане“и изберете „Библиотека Arduino“. Сега превъртете надолу и кликнете върху „Изграждане“, за да започнете процеса. Това ще изгради библиотека Arduino за вашия проект.
Сега добавете библиотеката във вашата Arduino IDE. За това отворете Arduino IDE и след това щракнете върху Sketch> Include Library> Add. ZIP library. След това заредете пример, като отидете на Файл> Примери> Име на вашия проект - Edge Impulse> nano_ble33_sense_microphone. Ще направим някои промени в кода, за да можем да издадем предупредителен звук, когато Arduino открие кашлица. За това, зумер е свързан с Arduino и всеки път, когато открие кашлица, светодиодът ще мига три пъти. Промените се правят във функциите void loop (), където се отпечатват стойностите на шума и кашлицата. В оригиналния код той отпечатва заедно етикетите и техните стойности. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Ще запазим стойностите на шума и кашлицата в различни променливи и ще сравним стойностите на шума. Ако стойността на шума падне под 0,50, това означава, че стойността на кашлицата е повече от 0,50 и ще издаде звука. Заменете оригиналния код за цикъл () с това: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Данни <0,50) {Serial.print ("Открита кашлица"); аларма(); }} След като направите промените, качете кода във вашия Arduino. Отворете серийния монитор на 115200 бода.
Така че по този начин може да се изгради машина за откриване на кашлица, това не е много ефективен метод за намиране на всеки заподозрян в COVID19, но може да работи добре в някои претъпкани зони.
Стъпка 7: Код
Моля намерете прикачения файл, И ако ви хареса, не забравяйте да ме гласувате в конкурса по -долу.
Препоръчано:
Направи си сам джобен часовник: 9 стъпки
„Направи си сам“джобен часовник: В този зает свят следенето на времето е задължително за по -добро представяне и да си любител, защо не направиш устройство, което да следи времето. Благодарение на технологиите съществуват устройства, наречени „часовник“, но! когато правиш нещата сам удоволствието
Джобен детектор за CO (въглероден оксид): 5 стъпки
Джобен детектор за CO (въглероден оксид): Както се казва в името, това е джобен детектор за CO, който се използва за откриване на въглероден окис във въздуха, целта ни беше да направим това устройство преносимо и което се побира в джобния размер. Сега сме изправени пред дни проблемът със замърсяването на въздуха поради индустриализацията
От джобен фазер до джобен лазер: 6 стъпки
От Pocket Phaser към Pocket Laser: В този проект ще преобразуваме малка играчка Star Trek Phaser, която намерих в Barnes & Благороден към лазерна показалка. Имам два от тези фазове и единият е изтощил батерията за осветяване, така че реших да го преобразувам в акумулаторен лазерен p
IOT детектор за дим: Актуализирайте съществуващ детектор за дим с IOT: 6 стъпки (със снимки)
IOT Smote Detector: Актуализирайте съществуващия детектор на дим с IOT: Списък на сътрудниците, Изобретател: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Надзорник: Д -р Chia Kim Seng Катедра по мехатронно и роботизирано инженерство, Факултет по електротехника и електронно инженерство, Universiti Tun Хюсеин Он Малайзия. Разпространение
Най -готиният USB L.E.D. Светлина с джобен размер (вход с джобен размер): 6 стъпки
Най -готиният USB L.E.D. Светлина с джобен размер (запис с джобен размер): В тази инструкция ще ви покажа как да направите L.E.D с USB захранване светлина, която може да се сгъне в размер на калай X-it Mints и може лесно да се побере в джоба ви. Ако ви харесва, не забравяйте да го + и гласувате за мен в конкурса! Материалите и