- Компоненте потребне
- Кружни дијаграм
- Израда скупа података за машину за откривање кашља
- Обука модела и подешавање кода
ЦОВИД19 је заиста историјска пандемија која веома лоше погађа цео свет и људи граде пуно нових уређаја за борбу с њим. Такође смо направили аутоматску машину за дезинфекцију и термалну пушку за бесконтактно испитивање температуре. Данас ћемо направити још један уређај за помоћ у борби против коронавируса. То је систем за откривање кашља који може разликовати буку од звука кашља и може помоћи у проналажењу осумњиченог за Цорону. За то ће користити технике машинског учења.
У овом упутству ћемо изградити систем за откривање кашља користећи Ардуино 33 БЛЕ Сенсе и Едге Импулсе Студио. Може разликовати нормалну позадинску буку и кашаљ у звуку у реалном времену. Користили смо Едге Импулсе Студио за обуку скупа података о узорцима кашља и позадинске буке и изградњу високо оптимизованог ТИниМЛ модела који може да детектује звук кашља у реалном времену.
Компоненте потребне
Хардвер
- Ардуино 33 БЛЕ Сенсе
- ЛЕД
- Јумпер Вирес
Софтвер
- Едге Импулсе Студио
- Ардуино ИДЕ
Обрадили смо детаљан водич о Ардуино 33 БЛЕ Сенсе.
Кружни дијаграм
Дијаграм кола за откривање кашља помоћу Ардуино 33 БЛЕ Сенсе-а дат је у наставку. Фритзинг део за Ардуино 33 БЛЕ није био доступан, па сам користио Ардуино Нано јер оба имају исти пин-оут.
Позитивни кабл ЛЕД-а повезан је на дигитални пин 4 Ардуино 33 БЛЕ сенс-а, а негативни кабл је повезан на ГНД пин Ардуино-а.
Израда скупа података за машину за откривање кашља
Као што је раније поменуто, користимо Едге Импулсе Студио за обуку нашег модела откривања кашља. За то морамо прикупити скуп података који садржи узорке података које бисмо желели да можемо да препознамо на нашем Ардуину. Будући да је циљ открити кашаљ, мораћете да сакупите неколико узорака тог и неких других узорака за буку, тако да може разликовати кашаљ од других бука.
Направићемо скуп података са две класе „кашаљ“ и „бука“. Да бисте креирали скуп података, направите Едге Импулсе налог, верификујте свој налог и започните нови пројекат. Узорке можете учитати помоћу мобилног телефона, плоче Ардуино или можете увести скуп података на свој налог импулса на ивици. Узорке ћете најлакше учитати на свој рачун помоћу мобилног телефона. За то морате повезати свој мобилни телефон са Едге Импулсе.
Да бисте повезали свој мобилни телефон, кликните на „ Уређаји “, а затим на „ Повежи нови уређај“ .
Сада у следећем прозору кликните на „ Користи свој мобилни телефон“ и појавиће се КР код. Скенирајте КР код својим мобилним телефоном помоћу Гоогле Ленс-а или друге апликације за скенирање КР кода.
Ово ће повезати ваш телефон са Едге Импулсе студијем.
Када је ваш телефон повезан са Едге Импулсе Студио, сада можете да учитате узорке. Да бисте учитали узорке, кликните на „ Прикупљање података“ . Сада на страници Прикупљање података унесите име налепнице, одаберите микрофон као сензор и унесите дужину узорка. Кликните на „ Почни узорковање“ да бисте започели узорковање узорка од 40 секунди. Уместо да се приморате на кашљање, можете да користите Интернет узорке кашља различитих дужина. Снимите укупно 10 до 12 узорака кашља различите дужине.
Након постављања узорака кашља, сада поставите етикету на „бука“ и сакупите још 10 до 12 узорака буке.
Ови узорци су за модул Обука, у следећим корацима прикупљаћемо податке о тестирању. Подаци о тестовима треба да чине најмање 30% података о тренингу, па сакупите 3 узорка „буке“ и 4 до 5 узорака „кашља“.
Уместо да прикупљате своје податке, можете да увезете наш скуп података на свој Едге Импулсе налог помоћу Едге Импулсе ЦЛИ Уплоадер-а.
Да бисте инсталирали ЦЛИ Уплоадер, прво преузмите и инсталирајте Ноде.јс на свој лаптоп. Након тога отворите командну линију и унесите следећу команду:
нпм инсталл -г едге-импулсе-цли
Сада преузмите скуп података (Линк скупа података) и издвојите датотеку у фасциклу вашег пројекта. Отворите командну линију и дођите до локације скупа података и покрените наредбе у наставку:
едге-импулсе-уплоадер --цлеан едге-импулсе-уплоадер --категорија за обуку / *. јсон едге-импулсе-уплоадер --категорија за обуку / *. цбор едге-импулсе-уплоадер - тестирање категорија / *. јсон едге-импулсе-уплоадер - тестирање категорије испитивања / *. цбор
Обука модела и подешавање кода
Како је скуп података спреман, сада ћемо створити импулс за податке. За то идите на страницу „ Стварање импулса “.
Сада на страници „ Направи импулс“ кликните на „ Додај блок обраде“ . У следећем прозору изаберите блок Аудио (МФЦЦ). Након тога кликните на „ Додај блок за учење“ и изаберите блок Неурал Нетворк (Керас). Затим кликните на „ Сачувај импулс“ .
У следећем кораку идите на страницу МФЦЦ, а затим кликните на „ Генериши карактеристике“ . Генерираће МФЦЦ блокове за све наше аудио прозоре.
Након тога идите на страницу „ НН класификатор“ и кликните на три тачке у горњем десном углу „ Подешавања неуронске мреже“ и изаберите „ Пребаци у Керас (стручни) режим“) .
Замените оригинал следећим кодом и промените „ Минималну оцену поузданости“ на „0,70“. Затим кликните на дугме „ Започни тренинг“ . Почеће да тренира ваш модел.
импорт тенсорфлов ас тф фром тенсорфлов.керас.моделс импорт Секуентиал фром тенсорфлов.керас.лаиерс импорт Денсе, ИнпутЛаиер, Дропоут, Флаттен, Ресхапе, БатцхНормализатион, Цонв2Д, МакПоолинг2Д, АверагеПоолинг2Д фром тенсорфлов.керас.оптенсизстрантс импорт МакНорм # модел архитектуре модел = Секуентиал () модел.адд (ИнпутЛаиер (инпут_схапе = (Кс_траин.схапе,), наме = 'к_инпут')) модел.адд (Преобликовање ((инт (Кс_траин.схапе / 13), 13, 1), инпут_схапе = (Кс_траин.схапе,))) модел.адд (Цонв2Д (10, кернел_сизе = 5, ацтиватион = 'релу', паддинг = 'саме', кернел_цонстраинт = МакНорм (3))) модел.адд (АверагеПоолинг2Д (поол_сизе = 2, паддинг = 'саме')) модел.адд (Цонв2Д (5, кернел_сизе = 5, ацтиватион = 'релу', паддинг = 'саме', кернел_цонстраинт = МакНорм (3))) модел.адд (АверагеПоолинг2Д (величина базена = 2,паддинг = 'саме')) модел.адд (Флаттен ()) модел.адд (Густ (класе, активација = 'софтмак', наме = 'и_пред', кернел_цонстраинт = МакНорм (3))) # ово контролише брзину учења опт = Адам (лр = 0,005, бета_1 = 0,9, бета_2 = 0,999) # обучи модел неуронске мреже.цомпиле (губитак = 'цатегорицал_цроссентропи', оптимизер = опт, метрицс =) модел.фит (Кс_траин, И_траин, батцх_сизе = 32, епохе = 9, подаци о потврди = (Кс_тест, И_тест), детаљно = 2)опширно = 2)опширно = 2)
Након тренинга модела, приказаће се перформансе тренинга. За мене је тачност била 96,5%, а губитак 0,10 што је добро да наставим.
Сада када је наш модел за откривање кашља спреман, применићемо овај модел као Ардуино библиотеку. Пре него што преузмете модел као библиотеку, можете да тестирате перформансе тако што ћете отићи на страницу „ Класификација уживо “.
Идите на страницу „ Примена “ и изаберите „ Ардуино Либрари“ . Сада се померите надоле и кликните на 'Буилд' да бисте започели процес. Ово ће изградити Ардуино библиотеку за ваш пројекат.
Сада додајте библиотеку у свој Ардуино ИДЕ. За то отворите Ардуино ИДЕ, а затим кликните на Скица> Укључи библиотеку> Додај.ЗИП библиотеку.
Затим учитајте пример тако што ћете отићи у Датотека> Примери> Назив вашег пројекта - Едге Импулсе> нано_бле33_сенсе_мицропхоне.
Унећемо неке измене у код како бисмо могли да чујемо звук упозорења када Ардуино открије кашаљ. Због тога је зујалица повезана са Ардуином и кад год открије кашаљ, ЛЕД ће трепнути три пута.
Промене се врше у функцијама воид лооп () где се исписују вредности буке и кашља. У оригиналном коду се заједно штампају налепнице и њихове вредности.
за (сизе_т ик = 0; ик <ЕИ_ЦЛАССИФИЕР_ЛАБЕЛ_ЦОУНТ; ик ++) {еи_принтф ("% с:%.5ф \ н", ресулт.цлассифицатион.лабел, ресулт.цлассифицатион.валуе); }
Сачуваћемо вредности буке и кашља у различите променљиве и упоредити вредности буке. Ако је вредност буке испод 0,50, то значи да је вредност кашља већа од 0,50 и то ће произвести звук. Замените оригинални код фор лооп () овим:
за (сизе_т ик = 1; ик <ЕИ_ЦЛАССИФИЕР_ЛАБЕЛ_ЦОУНТ; ик ++) {Сериал.принт (ресулт.цлассифицатион.валуе); флоат Подаци = резултат.класификација.валуе; иф (Подаци <0,50) {Сериал.принт ("Откривен кашаљ"); алармни(); }}
Након уношења промена, отпремите код у свој Ардуино. Отворите серијски монитор на 115200 бауд.
Дакле, овако се може направити машина за откривање кашља, није баш ефикасан метод за проналажење осумњичених за ЦОВИД19, али може лепо да делује у неком препуном простору.
Комплетан радни видео са библиотеком и кодом дат је у наставку: