Агуулгын хүснэгт:

Халаасны хэмжээтэй ханиалга илрүүлэгч: 7 алхам
Халаасны хэмжээтэй ханиалга илрүүлэгч: 7 алхам

Видео: Халаасны хэмжээтэй ханиалга илрүүлэгч: 7 алхам

Видео: Халаасны хэмжээтэй ханиалга илрүүлэгч: 7 алхам
Видео: 20 Creative Tiny Home and Mini House Designs you will Love 2024, Долдугаар сарын
Anonim
Халаасны хэмжээтэй ханиалга илрүүлэгч
Халаасны хэмжээтэй ханиалга илрүүлэгч

COVID19 бол үнэхээр дэлхий нийтэд маш ихээр нөлөөлж буй түүхэн тахал бөгөөд хүмүүс түүнтэй тэмцэхийн тулд маш олон шинэ төхөөрөмж бүтээж байна. Мөн бид контактгүй температурыг хэмжих автомат ариутгах төхөөрөмж, Дулааны бууг бүтээжээ. Өнөөдөр бид Коронавирусын эсрэг тэмцэхэд туслах өөр нэг төхөөрөмж бүтээх болно. Энэ бол ханиалга илрүүлэх систем бөгөөд дуу чимээ, ханиалгах дууг ялгаж чаддаг бөгөөд Корона вирусын сэжигтнийг олоход тусалдаг. Үүний тулд машин сургалтын техникийг ашиглах болно.

Энэхүү гарын авлагад бид Arduino 33 BLE Sense болон Edge Impulse Studio ашиглан ханиалга илрүүлэх системийг бүтээх гэж байна. Энэ нь бодит цагийн аудиогоор энгийн арын дуу чимээ, ханиалгах хоёрыг ялгаж чаддаг. Бид Edge Impulse Studio-ийг ашиглан ханиалгах, дуу чимээний дээжийг цуглуулж, ханиалгах дууг бодит цаг хугацаанд нь илрүүлэх өндөр оновчтой TInyML загварыг бий болгосон.

Хангамж

Техник хангамж

  • Arduino 33 BLE Sense
  • LEDJumper
  • Утас

Програм хангамж

  • Edge Impulse студи
  • Arduino IDE

Алхам 1: Хэлхээ диаграм

Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм
Хэлхээ диаграм

Arduino 33 BLE Sense ашиглан ханиалга илрүүлэх схемийг дээр өгөв. Arduino 33 BLE-ийн Fritzing хэсэг байхгүй байсан тул хоёулаа ижил зүү гаргадаг тул би Arduino Nano-г ашигласан.

LED -ийн эерэг туяа нь Arduino 33 BLE мэдрэхүйн дижитал 4 -р зүүтэй холбогдсон ба сөрөг туяа нь Arduino -ийн GND зүүтэй холбогдсон байна.

Алхам 2: Ханиалга илрүүлэх машины мэдээллийн санг бий болгох

Ханиалга илрүүлэх машины мэдээллийн санг бий болгох
Ханиалга илрүүлэх машины мэдээллийн санг бий болгох

Өмнө дурьдсанчлан бид Edge Impulse Studio ашиглан ханиалга илрүүлэх загвараа сургаж байна. Үүний тулд бид Arduino дээрээ танихыг хүсч буй өгөгдлийн дээж бүхий өгөгдлийн санг цуглуулах ёстой. Зорилго нь ханиалгыг илрүүлэх тул та үүнээс болон бусад зарим дээжийг чимээ шуугианаас цуглуулах хэрэгтэй бөгөөд ингэснээр ханиалга болон бусад дуу чимээг ялгаж чадна. Бид "ханиалгах" ба "чимээ шуугиан" гэсэн хоёр ангиллын өгөгдлийн сан үүсгэх болно. Өгөгдлийн сан үүсгэхийн тулд Edge Impulse данс үүсгээд дансаа баталгаажуулаад дараа нь шинэ төсөл эхлүүлнэ үү. Та дээжийг гар утас, Arduino самбар ашиглан ачаалах эсвэл өгөгдлийн санг импульсийн данс руу импортлох боломжтой. Дээжийг дансандаа оруулах хамгийн хялбар арга бол гар утсаа ашиглах явдал юм. Үүнийг хийхийн тулд та гар утсаа Edge Impulse -тэй холбох хэрэгтэй. Гар утсаа холбохын тулд "Төхөөрөмжүүд" дээр дараад "Шинэ төхөөрөмж холбох" дээр дарна уу.

Алхам 3: Гар утас руу холбогдоно уу

Гар утас руу холбогдох
Гар утас руу холбогдох

Одоо дараагийн цонхонд "Гар утсаа ашиглах" дээр дарахад QR код гарч ирнэ. QR кодыг гар утсаараа Google Lens эсвэл QR код сканнерын бусад програм ашиглан сканнердах.

Энэ нь таны утсыг Edge Impulse студитэй холбох болно.

Утсаа Edge Impulse Studio -тай холбосноор та дээжээ ачаалж болно. Дээжийг ачаалахын тулд "Мэдээлэл цуглуулах" дээр дарна уу. Мэдээлэл олж авах хуудсан дээр шошгоны нэрийг оруулаад микрофоныг мэдрэгч болгон сонгож, дээжийн уртыг оруулна уу. 40 секундын түүвэрлэлтийг эхлүүлэхийн тулд "Дээж авах ажлыг эхлүүлэх" дээр дарна уу. Өөрийгөө хүчээр ханиалгахын оронд өөр өөр урттай ханиалгын дээжийг ашиглаж болно. Янз бүрийн урттай ханиалгын нийт 10-12 дээжийг тэмдэглэнэ.

Алхам 4:

Зураг
Зураг
Зураг
Зураг

Ханиалгах дээжийг байршуулсны дараа шошгыг "дуу чимээ" болгож өөр 10-12 дуу чимээний дээж цуглуулна уу.

Эдгээр дээжүүд нь модулийг сургахад зориулагдсан бөгөөд дараагийн алхамуудад бид туршилтын өгөгдлийг цуглуулах болно. Туршилтын өгөгдөл нь сургалтын өгөгдлийн 30% -иас багагүй байх ёстой тул "чимээ шуугиан" -ын 3 дээж, 4-5 ханиалгын дээжийг цуглуулаарай. Өгөгдлөө цуглуулахын оронд та Edge ашиглан манай өгөгдлийн санг Edge Impulse дансандаа оруулж болно. Импульс CLI байршуулагч. CLI Uploader -ийг суулгахын тулд эхлээд зөөврийн компьютер дээрээ Node.js татаж аваад суулгаарай. Үүний дараа командын мөрийг нээгээд доорх тушаалыг оруулна уу.

npm суулгах -g edge-impulse-cli

Одоо өгөгдлийн санг (Dataset Link) татаж аваад төслийн хавтсандаа байгаа файлыг гаргаж аваарай. Тушаал хүлээх мөрийг нээж өгөгдлийн сангийн байршил руу очоод дараах тушаалуудыг ажиллуулна уу.

edge-impulse-uploader-cleaneded-impulse-uploader-категорийн сургалтын сургалт/*. json

edge-impulse-uploader-категорийн сургалтын сургалт/*. cbor

edge-impulse-uploader-категорийн туршилтын туршилт/*. json edge-impulse-uploader-категорийн туршилтын туршилт/*. cbor

Алхам 5: Загварыг сургах, кодыг тохируулах

Өгөгдлийн сан бэлэн болсон тул бид өгөгдөлд түлхэц өгөх болно. Үүнийг хийхийн тулд 'Импульс үүсгэх' хуудас руу очно уу.

Одоо 'Импульс үүсгэх' хуудсан дээр 'Боловсруулах блок нэмэх' дээр дарна уу. Дараагийн цонхонд Аудио (MFCC) блокыг сонгоно уу. Үүний дараа "Сургалтын блок нэмэх" дээр дараад Neural Network (Keras) блокыг сонгоно уу. Дараа нь 'Impulse Save' дээр дарна уу.

Дараагийн алхамд MFCC хуудас руу ороод "Онцлог үүсгэх" дээр дарна уу. Энэ нь манай бүх аудио цонхонд MFCC блок үүсгэх болно.

Үүний дараа 'NN Classifier' хуудас руу ороод 'Neural Network settings' баруун дээд буланд байгаа гурван цэг дээр дараад 'Keras (мэргэжилтэн) горимд шилжих' -ийг сонгоно уу.

Эх хувийг дараах кодоор сольж, "Хамгийн бага итгэлийн зэрэглэл" -ийг "0.70" болгон өөрчилнө үү. Дараа нь "Сургалтыг эхлүүлэх" товчийг дарна уу. Энэ нь таны загварыг сургаж эхлэх болно.

tensorflow.keras.models хэлбэрээр tensorflow импортлох tensorflow.keras.layers -аас дараалсан импортлох Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D -ээс tensorflow.keras.optimizstrain -аас импортлох. 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 (Нягт (ангиуд, идэвхжүүлэх = 'softmax', нэр = 'y_pred', kernel_constraint = MaxNorm) (3))) # энэ нь сурах хурдыг хянадаг opt = Adam (lr = 0.005, бета_ 1 = 0.9, бета_2 = 0.999) # мэдрэлийн сүлжээний загварыг сургах, validation_data = (X_test, Y_test), дэлгэрэнгүй = 2)

Алхам 6:

Загварыг сургасны дараа сургалтын гүйцэтгэлийг харуулах болно. Миний хувьд нарийвчлал 96.5%, алдагдал 0.10 байсан нь үргэлжлүүлэхэд тохиромжтой.

Одоо бидний ханиалга илрүүлэх загвар бэлэн болсон тул бид энэ загварыг Arduino номын сан болгон ашиглах болно. Загварыг номын сан болгон татаж авахаасаа өмнө 'Live Classification' хуудас руу орж гүйцэтгэлийг шалгаж болно. 'Deployment' хуудас руу ороод 'Arduino Library' -г сонгоно уу. Одоо доош гүйлгээд "Бүтээх" дээр дарж процессыг эхлүүлнэ үү. Энэ нь таны төсөлд зориулан Arduino номын сан байгуулах болно.

Одоо номын сангаа Arduino IDE дээрээ нэмээрэй. Үүнийг хийхийн тулд Arduino IDE -ийг нээгээд Sketch> Номын санг оруулах> Add. ZIP номын сан дээр дарна уу. Дараа нь Файл> Жишээ> Таны төслийн нэр - Edge Impulse> nano_ble33_sense_microphone руу очиж жишээг ачаална уу. Бид кодонд зарим өөрчлөлт оруулах бөгөөд ингэснээр Arduino ханиалгыг илрүүлэх үед дохио өгөх боломжтой болно. Үүний тулд дуут дохио нь Arduino -той холбогддог бөгөөд ханиалгах үед LED гурван удаа анивчих болно. Өөрчлөлтүүд нь дуу чимээ, ханиалгын утгыг хэвлэх void loop () функцэд хийгддэг. Анхны код дээр энэ нь шошго болон тэдгээрийн утгыг хоёуланг нь хэвлэж байна. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix]. шошго, result.classification [ix]. үнэ цэнэ); } Бид дуу чимээ, ханиалгын утгыг өөр өөр хувьсагчаар хадгалж, дуу чимээний утгыг харьцуулах болно. Хэрэв дуу чимээ 0.50 -аас доош байвал ханиалгах утга 0.50 -аас дээш байх бөгөөд энэ нь дуу гаргах болно. Loop () кодыг эхээр нь орлуулна уу: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = үр дүн. ангилал [ix].үнэлгээ; if (Өгөгдөл <0.50) {Serial.print ("Ханиалга илэрсэн"); дохиолол (); }} Өөрчлөлт хийсний дараа кодыг Arduino -д байршуулна уу. Цуваа дэлгэцийг 115200 baud дээр нээнэ үү.

Тиймээс ханиалга илрүүлэх төхөөрөмжийг хэрхэн яаж бүтээх вэ, энэ нь COVID19 -ийн сэжигтнүүдийг олох маш үр дүнтэй арга биш боловч зарим хүн ихтэй газарт сайн ажиллах боломжтой.

Алхам 7: Код

Хавсаргасан файлыг олж авна уу

Хэрэв танд таалагдсан бол доорх уралдаанд надад саналаа өгөхөө бүү мартаарай.

Зөвлөмж болгож буй: