Índice:

Detector de tosse de bolso: 7 etapas
Detector de tosse de bolso: 7 etapas

Vídeo: Detector de tosse de bolso: 7 etapas

Vídeo: Detector de tosse de bolso: 7 etapas
Vídeo: CÉLULA EXPLOTA DESPUÉS DE SER MORDIDA POR OTRO ORGANISMO 2024, Novembro
Anonim
Detector de tosse de bolso
Detector de tosse de bolso

COVID19 é realmente uma pandemia histórica que afeta gravemente o mundo inteiro e as pessoas estão construindo muitos novos dispositivos para lutar contra ela. Também construímos uma máquina de higienização automática e uma pistola térmica para triagem de temperatura sem contato. Hoje vamos construir mais um dispositivo para ajudar no combate ao Coronavirus. É um sistema de detecção de tosse, que pode distinguir entre ruído e som de tosse e pode ajudar a localizar o suspeito Corona. Para isso, ele usará técnicas de aprendizado de máquina.

Neste tutorial, vamos construir um sistema de detecção de tosse usando o Arduino 33 BLE Sense e o Edge Impulse Studio. Ele pode diferenciar entre ruído de fundo normal e tosse em áudio em tempo real. Usamos o Edge Impulse Studio para treinar um conjunto de dados de amostras de tosse e ruído de fundo e construir um modelo TInyML altamente otimizado, que pode detectar um som de tosse em tempo real.

Suprimentos

Hardware

  • Sentido Arduino 33 BLE
  • LEDJumper
  • Fios

Programas

  • Estúdio Edge Impulse
  • IDE Arduino

Etapa 1: Diagrama de Circuito

Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito

O diagrama de circuito para detecção de tosse usando o Arduino 33 BLE Sense é fornecido acima. A peça Fritzing para Arduino 33 BLE não estava disponível, então usei o Arduino Nano, pois ambos têm a mesma pinagem.

O terminal positivo do LED é conectado ao pino 4 digital do Arduino 33 BLE e o terminal negativo é conectado ao pino GND do Arduino.

Etapa 2: Criação do conjunto de dados para máquina de detecção de tosse

Criação do conjunto de dados para máquina de detecção de tosse
Criação do conjunto de dados para máquina de detecção de tosse

Como mencionado anteriormente, estamos usando o Edge Impulse Studio para treinar nosso modelo de detecção de tosse. Para isso, temos que coletar um conjunto de dados que contém as amostras de dados que gostaríamos de reconhecer em nosso Arduino. Como o objetivo é detectar a tosse, você precisará coletar algumas amostras disso e outras amostras de ruído, para que possa distinguir entre tosse e outros ruídos. Criaremos um conjunto de dados com duas classes “tosse” e “ruído”. Para criar um conjunto de dados, crie uma conta do Edge Impulse, verifique sua conta e inicie um novo projeto. Você pode carregar as amostras usando seu celular, sua placa Arduino ou pode importar um conjunto de dados para sua conta de impulso de borda. A maneira mais fácil de carregar as amostras em sua conta é usando seu telefone celular. Para isso, você deve conectar seu celular com o Edge Impulse. Para conectar seu telefone celular, clique em ‘Dispositivos’ e, em seguida, clique em ‘Conectar um Novo Dispositivo’.

Etapa 3: conectar ao celular

Conectar ao celular
Conectar ao celular

Agora, na próxima janela, clique em ‘Usar seu telefone celular’, e um código QR aparecerá. Digitalize o código QR com o seu celular usando o Google Lens ou outro aplicativo de leitura de código QR.

Isso conectará seu telefone ao estúdio Edge Impulse.

Com seu telefone conectado ao Edge Impulse Studio, agora você pode carregar suas amostras. Para carregar as amostras, clique em ‘Aquisição de dados’. Agora, na página de aquisição de dados, insira o nome do rótulo, selecione o microfone como sensor e insira o comprimento da amostra. Clique em ‘Iniciar amostragem’, para iniciar a amostragem de uma amostra de 40 segundos. Em vez de se forçar a tossir, você pode usar amostras de tosse online de diferentes comprimentos. Registre um total de 10 a 12 amostras de tosse de diferentes comprimentos.

Passo 4:

Imagem
Imagem
Imagem
Imagem

Depois de enviar as amostras de tosse, agora defina o rótulo para 'ruído' e colete outras 10 a 12 amostras de ruído.

Esses exemplos são para o módulo de Treinamento, nas próximas etapas coletaremos os Dados de Teste. Os dados de teste devem ser de pelo menos 30% dos dados de treinamento, então colete 3 amostras de 'ruído' e 4 a 5 amostras de 'tosse'. Em vez de coletar seus dados, você pode importar nosso conjunto de dados para sua conta do Edge Impulse usando o Edge Impulse CLI Uploader. Para instalar o CLI Uploader, primeiro baixe e instale o Node.js em seu laptop. Depois disso, abra o prompt de comando e digite o comando abaixo:

npm install -g edge-boost-cli

Agora baixe o dataset (Dataset Link) e extraia o arquivo na pasta do seu projeto. Abra o prompt de comando, navegue até o local do conjunto de dados e execute os comandos abaixo:

edge-Impulse-uploader --cleanedge-Impulse-uploader --category training training / *. json

edge-boost-uploader --category training training / *. cbor

edge-impulso-uploader - teste de categoria / *. json edge-impulso-uploader - teste de categoria / *. cbor

Etapa 5: treinar o modelo e ajustar o código

Como o conjunto de dados está pronto, agora vamos criar um impulso para os dados. Para isso, vá para a página ‘Criar impulso’.

Agora, na página ‘Criar impulso’, clique em ‘Adicionar um bloco de processamento’. Na próxima janela, selecione o bloco de Áudio (MFCC). Depois disso, clique em ‘Adicionar um bloco de aprendizagem’ e selecione o bloco Rede Neural (Keras). Em seguida, clique em ‘Salvar impulso’.

Na próxima etapa, vá para a página MFCC e clique em ‘Gerar recursos’. Ele irá gerar blocos MFCC para todas as nossas janelas de áudio.

Depois disso, vá para a página ‘NN Classifier’ e clique nos três pontos no canto superior direito de ‘Neural Network settings’ e selecione ‘Switch to Keras (expert) mode’.

Substitua o original pelo código a seguir e altere a 'Classificação de confiança mínima' para '0,70'. Em seguida, clique no botão ‘Iniciar treinamento’. Ele começará a treinar seu modelo.

import tensorflow as tffrom tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D de tensorflow.keras.optimizers import Adam de tensorflow.keras.constraints MaxNorm # model architecture 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 = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'mesmo')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'mesmo')) model.add (Flatten ()) model.add (Dense (classes, ativação = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # isso controla a taxa de aprendizagem opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # treinar a rede neural model.compile (loss = 'categorical_crossentropy', otimizador = opt, metrics = ['precisão']) model.fit (X_train, Y_train, batch_size = 32, épocas = 9, validação_data = (X_test, Y_test), verbose = 2)

Etapa 6:

Depois de treinar o modelo, ele mostrará o desempenho do treinamento. Para mim, a precisão foi de 96,5% e a perda de 0,10, é bom prosseguir.

Agora que nosso modelo de detecção de tosse está pronto, vamos implantar esse modelo como uma biblioteca Arduino. Antes de baixar o modelo como uma biblioteca, você pode testar o desempenho acessando a página ‘Classificação ao vivo’. Vá para a página ‘Deployment’ e selecione ‘Arduino Library’. Agora role para baixo e clique em ‘Construir’ para iniciar o processo. Isso criará uma biblioteca Arduino para o seu projeto.

Agora adicione a biblioteca em seu Arduino IDE. Para isso, abra o Arduino IDE e clique em Sketch> Include Library> Add. ZIP library. Em seguida, carregue um exemplo acessando Arquivo> Exemplos> Nome do seu projeto - Edge Impulse> nano_ble33_sense_microphone. Faremos algumas alterações no código para que possamos emitir um som de alerta quando o Arduino detectar tosse. Para isso, uma campainha é conectada ao Arduino e sempre que detecta tosse, o LED pisca três vezes. As alterações são feitas nas funções void loop () onde são impressos os valores de ruído e tosse. No código original, ele está imprimindo os rótulos e seus valores juntos. para (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Vamos salvar os valores de ruído e tosse em diferentes variáveis e comparar os valores de ruído. Se o valor do ruído ficar abaixo de 0,50, isso significa que o valor da tosse é mais do que 0,50 e fará o som. Substitua o código original para loop () por este: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Dados <0,50) {Serial.print ("Tosse detectada"); alarme(); }} Depois de fazer as alterações, carregue o código em seu Arduino. Abra o monitor serial em 115200 baud.

Portanto, é assim que uma máquina de detecção de tosse pode ser construída. Não é um método muito eficaz para localizar qualquer suspeito de COVID19, mas pode funcionar muito bem em uma área lotada.

Etapa 7: Código

Por favor encontre o arquivo em anexo, E se gostou não esqueça de votar em mim no concurso abaixo.

Recomendado: