Técnico

Quando a eletrônica encontra o aprendizado de máquina

Compartilhar

Neste post, tentamos resumir a experiência de trabalhar em um projeto que combina processamento de sinais, aprendizado de máquina e eletrônicos. Seu objetivo era desenvolver um dispositivo manipulável embutido em sensor a partir do qual inferir o tipo de movimento ou atividade realizada por seu usuário. Por inferência, queremos dizer a classificação da atividade com base em um conjunto de classes conhecidas e predefinidas. Esses três campos mencionados geraram interesse individualmente por décadas, e cada um tem uma variedade de desafios característicos de sua natureza. Portanto, nosso objetivo é dar aos nossos leitores um vislumbre dos principais desafios que enfrentamos ao abordar o projeto.

Compreensão da eletrônica

A peça central do dispositivo é uma unidade de medição inercial (IMU) contendo um acelerômetro e um giroscópio. O primeiro mede a aceleração do dispositivo e o segundo a velocidade angular (ambas em três eixos). Embora não tenhamos projetado o hardware para esse projeto, garantimos que podemos receber e interpretar as medidas formatadas em um protocolo de comunicação. Para isso, transmitimos os dados por meio do BLE (Bluetooth Low Energy) para um PC que armazena as informações coletadas do dispositivo. Em primeiro lugar, precisávamos interagir com o dispositivo para coletar os dados e processá-los de forma coerente. Por exemplo, uma mudança na frequência de amostragem precisa ser levada em consideração para garantir a compatibilidade. Ao trabalhar com ângulos formatados em 16 bits, é necessária uma etapa de desempacotamento da fase posterior. Estar ciente das especificações de hardware é crucial para definir que tipo de técnicas de processamento aplicar.

Processamento de sinal

Como os dados não são informações por si só, as medições brutas fazem pouco para resolver o problema sem um processamento posterior. Portanto, o processamento de sinais traduz essas medições brutas em informações valiosas. Analisamos o intervalo de dados, a periodicidade e o impacto do ruído e aplicamos filtros passa-banda e Kalman para suavizar o sinal. Ao trabalhar com dados multivariados, a transformação da dimensionalidade pode ser útil: as medidas triaxiais podem ser transformadas em unidimensionais (como uma magnitude) ou projetadas em espaços de maior interesse (por exemplo, quatérnios, PCA). Observar diferentes representações de dados nos leva a uma melhor compreensão da realidade. Por exemplo, quando a aceleração medida é constante e sua magnitude é igual à gravidade, isso significa que o dispositivo fica parado.

Aprendizagem automática

Um modelo de aprendizado de máquina bem-sucedido exige dados de boa qualidade. Isso significa procurar um conjunto de dados disponível publicamente ou criar um personalizado. Escolhemos a segunda opção, pois os dados devem representar com precisão a saída da IMU. Para criar o conjunto de dados, precisamos definir quais atividades (ou classes) amostrar, obter os dados e rotulá-los adequadamente. Também é importante saber se algum tipo de segmentação é necessário, se o início e o fim da atividade estão definidos ou se precisamos reconhecê-los a partir dos dados. Se quisermos que o modelo se generalize, devemos alimentá-lo com as variações mais relevantes. No nosso caso, realizando as atividades por pessoas diferentes, em dias diferentes. A construção de um conjunto de dados pode exigir muito tempo e pode ser feita gradualmente: começando com algumas classes e avançando na análise exploratória de dados e no benchmarking de modelos. Sabemos que esse processo é longo e tedioso, por isso é imperativo fazê-lo em paralelo com outras tarefas. Com o conjunto de dados em mãos, é hora de começar com a engenharia de recursos. Os dados brutos são suficientes? Todas as classes são representadas com as mesmas características? Seria útil criar novos recursos projetando os existentes em outro espaço? E agregando-os? Além disso, como receberemos os dados na inferência? Se precisarmos processar os dados em tempo real, talvez um algoritmo de janela deslizante seja melhor, mas se precisarmos processar todos os dados ao mesmo tempo, talvez seja melhor alimentar todos os dados como um todo. Em seguida, iniciamos a parte de modelagem. Como sempre, partimos dos modelos mais simples, como SVMs, e seguimos para os mais complexos, como LSTMs e CNNs. O último, por exemplo, é um modelo comum de visão computacional, mas pode ser adaptado a dados de séries temporais por meio de convoluções em apenas uma dimensão. As melhores soluções geralmente exigem algumas ideias inovadoras. Por fim, precisamos de uma maneira de medir a qualidade do nosso modelo. É aqui que as métricas entram em jogo. Escolher a métrica certa para seu modelo e seus dados é crucial para avaliar o desempenho do projeto. Se você sabe que os dados estão distorcidos para determinadas classes, por exemplo, uma métrica de precisão não pode refletir o desempenho do modelo, então outra métrica, como a pontuação F1, é necessária.

Resumindo

Na jornada desse projeto muito inovador, testamos nossa capacidade de incorporar diferentes disciplinas ao desenvolvimento. Enfrentamos com sucesso os desafios que descobrimos em cada uma das áreas mencionadas. É importante fazer uma pesquisa inicial completa e refiná-la iterativamente posteriormente, para ter uma compreensão mais profunda do projeto. Dessa forma, você não pode perder nenhuma técnica de última geração. Como em todo projeto, as opções mais promissoras costumam ser mais arriscadas, e as abordagens mais clássicas e seguras geralmente são mais limitadas. Finalmente, chegamos a uma compreensão prática do projeto e das diferentes áreas que o impactam: definir, analisar, experimentar, desenvolver (e redefinir).

Toda jornada de IA começa com uma conversa

Vamos conversar
Vamos conversar