Tiny Machine Learning - TinyML
Professora: Rosana Rego
Este repositório abriga uma coleção de slides, material de leitura, solicitações de projetos e exemplos para você começar a criar seu próprio projeto de aprendizado de máquina em sistema embarcado.
Os alunos devem estar familiarizados com os seguintes tópicos para completar os exemplos de perguntas e tarefas práticas:
- Álgebra
- Resolvendo equações lineares
- Probabilidade e Estatística
- Expressando probabilidades de eventos independentes
- Distribuições normais
- Média e mediana
- Programação
- Programação Arduino/C++ (condicionais, loops, arrays/buffers, ponteiros, funções)
- Programação Python (condicionais, loops, arrays, funções, NumPy)
Os alunos precisarão de um computador e acesso à Internet para realizar treinamento em modelo de aprendizado de máquina e exercícios práticos com o Edge Impulse Studio e o Google Colab.
-
É necessária uma conta do Google para o Google Colab.
-
Um Edge Impulse é necessário para o Edge Impulse Studio.
-
Os alunos precisarão instalar o Arduino IDE mais recente.
- Módulo 1: Machine Learning embarcado
- Módulo 2: Iniciando com Deep Learning
- Módulo 3: Fluxo de trabalho com Machine Learning
- Módulo 4: Implantação de modelos
- Módulo 5: Classificação de imagens com aprendizado profundo
Este módulo fornece uma visão geral do aprendizado de máquina e como ele pode ser usado para resolver problemas. Ele também introduz a ideia de executar algoritmos de aprendizado de máquina em dispositivos com recursos limitados, como microcontroladores.
ID | Descrição | Links | Fonte |
---|---|---|---|
1.1.1 | O que é machine learning | video slides | [1] |
1.1.2 | Machine learning em sistemas embarcados | video slides | [1] |
1.1.3 | O que é tiny machine learning | slides | [3] |
Este módulo fornece uma visão geral das redes neurais e como elas podem ser usadas para fazer previsões.
ID | Description | Links | Attribution |
---|---|---|---|
2.1.1 | O paradigma do aprendizado de máquina | slides | [3] |
2.1.2 | Pensando na perda | slides | [3] |
2.1.3 | Minimizando perdas | slides | [3] |
2.1.5 | Primeira rede neural | slides | [3] |
Neste módulo, os alunos compreenderão como os dados são coletados e usados para treinar um modelo de aprendizado de máquina. Eles terão a oportunidade de coletar seu próprio conjunto de dados, carregá-lo no Edge Impulse e treinar um modelo usando a interface gráfica. A partir daí, eles aprenderão como avaliar um modelo usando uma matriz de confusão para calcular precisão, recall, exatidão e pontuações F1.
ID | Descrição | Links | Fonte |
---|---|---|---|
3.1.1 | Aplicações TinyML | slides | [3] |
3.1.3 | Ciclo de vida do Machine learning | slides | [3] |
3.1.3 | Coletando dados com Edge Impulse | video slides | [1] |
ID | Descrição | Links | Fonte |
---|---|---|---|
3.2.1 | Extração de recursos (features) | video slides | [1] |
3.2.2 | Seleção de features com Edge Impulse | video tutorial | [1] |
3.2.3 | Machine learning pipeline | video slides | [1] |
3.2.4 | Treinamento do modelo no dge impulse | video slides | [1] |
3.2.5 | Como avaliar um model | video slides | [1] |
3.3.6 | Underfitting e overfitting | video slides | [1] |
Este módulo aborda as etapas para implantar um modelo de machine learning treinado no Edge Impulse em uma placa Arduino.
- Objetivos
- Forneça exemplos de como o aprendizado de máquina embarcado pode ser usado para resolver problemas (onde outras formas de aprendizado de máquina seriam limitadas ou inadequadas);
- Descrever os desafios associados à execução de algoritmos de aprendizado de máquina em sistemas embarcados
- Descreva amplamente o que acontece durante o treinamento do modelo de aprendizado de máquina;
- Demonstrar a capacidade de realizar inferência em um sistema embarcado para resolver um problema.
ID | Descrição | Links | Fonte |
---|---|---|---|
4.1.1 | Sistemas embarcados | slides | [3] |
4.1.2 | Arduino Nano 33 BLE Sense | doc | [3] |
4.1.3 | Hardware de computação embarcado | slides | [3] |
4.1.4 | Microcontroladores | doc | [3] |
4.1.5 | TinyML kit peripherals | slides | [3] |
4.1.6 | Software de ML embarcados | slides | [3] |
ID | Descrição | Links | Fonte |
---|---|---|---|
4.2.1 | Usando um modelo para inferência | video slides | [1] |
4.2.2 | Testando inferência com um smartphone | video | [1] |
4.2.3 | Implantar modelo no Arduino | video slides | [1] |
4.2.4 | Implantar modelo no Arduino | tutorial |
Este módulo apresenta o conceito de classificação de imagens, por que ela é importante no aprendizado de máquina e como pode ser usada para resolver problemas. São abordadas operações de convolução e pooling, que formam os blocos de construção para redes neurais convolucionais (CNNs).
ID | Descrição | Links | Fonte |
---|---|---|---|
5.1.1 | O que é visão computacional? | video | [2] |
5.1.2 | Visão geral das imagens digitais | video | [2] |
5.1.3 | Coleta de conjunto de dados | video | [2] |
5.1.4 | Visão geral da classificação de imagens | video | [2] |
5.1.5 | Treinando um classificador de imagens com Keras | video | [2] |
ID | Descrição | Links | Fonte |
---|---|---|---|
5.2.1 | Convolução de imagem | video | [2] |
5.2.2 | Camada de pooling | video | [2] |
5.2.3 | Rede neural convolucional | video | [2] |
5.2.4 | CNN no keras | slides | [3] |
5.2.5 | Treinando uma CNN no Edge Impulse | video doc | [2] |
ID | Descrição | Links | Fonte |
---|---|---|---|
5.3.1 | Visualizações da CNN | video | [2] |
5.3.2 | Data augmentation | video | [2] |
5.3.3 | Evitando overfitting com aumento de dados | slides | [3] |
5.3.4 | Explorando funções de perda e otimizadores | doc | [3] |
5.3.5 | Transferir aprendizagem e MobileNet | video | [2] |
5.3.6 | Transfer learning com Edge Impulse | video slides | [2] |
[1] Slides and written material for "Introduction to Embedded Machine Learning" by Edge Impulse is licensed under CC BY-NC-SA 4.0
[2] Slides and written material for "Computer Vision with Embedded Machine Learning" by Edge Impulse is licensed under CC BY-NC-SA 4.0
[3] Slides and written material for "TinyML Courseware" by Prof. Vijay Janapa Reddi of Harvard University is licensed under CC BY-NC-SA 4.0
UFERSA - Campus Pau dos Ferros