Na forma de tecnologias pessoais, a inteligência artificial (IA) e a ciência da computação têm ganhado cada vez mais destaque nos últimos anos
Embora a convergência entre as duas ainda esteja em estágio inicial, juntas elas têm o potencial de revolucionar a vida de consumidores e empresas. Mas há desafios, especialmente quando se trata de implementação prática, já que a inteligência artificial (IA) exige um poder de computação considerável.
Tarefas como a classificação simples são menos complexas e podem ser realizadas em um microcontrolador de baixo consumo. A Maxim apresentou o microcontrolador MAX78000, que é de baixo consumo e energeticamente eficiente no processamento dessa tarefa de IA. O hardware é baseado em um acelerador de rede neural convolucional (CNN) que permite que aplicações alimentadas por bateria executem inferências de IA.
A classificação no MAX78000 envolve três etapas, ou seja, preparação dos dados, treinamento do modelo e inferências, que são discutidas em detalhes a seguir.
Preparação dos Dados
No ciclo de desenvolvimento da aplicação, uma das primeiras etapas é preparar e pré-processar os dados disponíveis para criar os conjuntos de dados de treinamento e validação/teste. Além do pré-processamento usual dos dados, várias restrições de hardware precisam ser consideradas para executar o modelo no MAX78000. Para o treinamento, espera-se que os dados de entrada estejam na faixa [-128/128, +127/128]. Ao avaliar pesos quantizados, ou ao executar no hardware, espera-se que os dados de entrada estejam na faixa nativa do MAX7800X, de [-128, +127]. Se a faixa de dados disponível for [0, 255], é necessário dividi-la por 256 para trazê-la à faixa [0, 1].
As fontes de dados podem conter arquivos de dados não processados em diferentes tamanhos e formatos. A funcionalidade do conjunto de dados e da função de carregamento de dados é responsável por lidar com as conversões necessárias. Um dos papéis principais do uso de carregadores de dados é ajustar as faixas de dados e gerenciar os tipos de dados antes que o conjunto de dados seja apresentado ao modelo CNN. O pacote TorchVision
Criação e Treinamento do Modelo
As Redes Neurais Convolucionais (CNNs) são úteis porque conseguem aprender por meio da entrada de dados e extrair características independentes de escala a partir dos dados de entrada. Os kernels convolucionais costumam ser pequenos, como 3×3, 7×7, etc., o que lhes confere muito mais eficiência de memória.
O PyTorch ou a toolchain TensorFlow-Keras podem ser usados para desenvolver os modelos de ML no MAX78000. O modelo é construído com um conjunto de subclasses definidas que representam o hardware. Esse modelo é treinado usando pesos em ponto flutuante e dados de treinamento. Os pesos podem ser quantizados durante ou após o treinamento. O resultado da quantização pode ser avaliado no conjunto de dados de teste para determinar a queda de precisão causada por ela.
A ferramenta sintetizador MAX78000 (ai8xize) aceita como entrada um checkpoint do PyTorch ou arquivos ONNX exportados do TensorFlow, junto com uma descrição do modelo em formato YAML. Um arquivo de dados de entrada do modelo (arquivo .npy) é fornecido tanto para o sintetizador quanto para verificar o modelo montado na máquina. O resultado da inferência desse arquivo de dados é comparado com a saída esperada do modelo pré-síntese.
O sintetizador MAX78000 gera automaticamente o código C que roda no MAX78000. O código C inclui chamadas de Interface de Programação de Aplicações (API) para carregar os pesos e dados de amostra fornecidos ao hardware, realizar uma inferência sobre os dados de amostra e comparar o resultado da classificação com o resultado esperado, indicando aprovação ou reprovação. Esse código C gerado pode ser usado como exemplo para construir aplicações personalizadas. A figura abaixo mostra o fluxo geral de desenvolvimento do MAX78000.

Teste e Inferência do Modelo
A Maxim desenvolveu o kit de avaliação MAX78000 para o treinamento do modelo e a demonstração da inferência. Vamos supor que o modelo seja treinado com o conjunto de dados de classificação facial. A classificação de imagens é feita em três etapas principais:
- Extração Facial: detectar rostos em uma imagem e extrair uma subimagem retangular contendo apenas um rosto.
- Alinhamento Facial: determinar o ângulo de rotação (3D) do rosto na subimagem para compensar os efeitos de transições afins.
- Identificação Facial: identificar a pessoa usando a subimagem extraída e personalizada.
Existem vários métodos para as duas primeiras etapas. Redes Neurais Convolucionais em Cascata Multitarefa (MTCNNs) conseguem resolver as etapas de reconhecimento e alinhamento facial. O kit de avaliação MAX78000 é usado para identificar rostos não recortados de uma imagem, cada uma contendo apenas um rosto.
A abordagem adotada baseia-se em aprender uma assinatura, ou seja, um embedding, para cada imagem facial, cuja distância em relação a outro embedding fornece uma medida da similaridade entre os rostos. Espera-se observar distâncias pequenas entre rostos da mesma pessoa e distâncias grandes entre rostos de pessoas diferentes.

O FaceNet é um dos modelos baseados em CNN mais populares desenvolvidos para o método de reconhecimento facial embutido. A triplet loss (perda de tripla) é a chave para seu sucesso. Essa função de perda exige três amostras de entrada: uma âncora, uma amostra positiva com a mesma identidade da âncora e uma amostra negativa de identidade diferente. A função de triplet loss fornece valores baixos quando a distância da âncora está próxima da amostra positiva e distante da negativa.
No entanto, esse modelo tem 7,5 milhões de parâmetros, o que é bastante grande para o MAX78000. Ele também exige 1,6G de operações em ponto flutuante, tornando muito difícil executar o modelo em diversos dispositivos móveis ou de IoT. Por isso, um novo modelo arquitetural com menos de 450.000 parâmetros foi projetado para se adequar ao MAX78000.
O método de Destilação de Conhecimento (Knowledge Distillation) foi adotado para desenvolver esse pequeno modelo CNN a partir do FaceNet, já que ele é uma rede neural amplamente valorizada para aplicações de FaceID.
No aprendizado de máquina, a destilação cognitiva é o processo de transferir conhecimento de uma amostra grande para uma amostra pequena. O modelo maior pode saber mais do que o modelo menor. No entanto, sua capacidade não será totalmente utilizada. O objetivo aqui, portanto, é fazer com que redes pequenas reproduzam o comportamento de redes grandes.
Contato da Newark no Brasil
Para mais informações e adquirir componentes, contate a LATeRe, representante da Newark, pelo Telefone (11) 4066-9400 ou e-mail: [email protected]
- Texto originalmente publicado em: link










