Skip to content

roscibely/course_tinyML

Repository files navigation

Curso de aprendizado de máquina em sistemas embarcados

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.

Pré requisitos

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)

Hardware e Software Necessários

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.

Cronograma de Estudos

Material de apoio


Módulo 1: Machine Learning Embarcado

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.

Material
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]

Módulo 2: Iniciando com Deep Learning

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]

Módulo 3: Fluxo de trabalho com Machine Learning

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.

Material

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]

Treinando e validando o modelo de ML

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]

Módulo 4: Implantação de modelos

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.

Microcontroladores embarcados

Material
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]

Implantando um modelo em uma placa Arduino

Material
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

Módulo 5: Classificação de imagens com aprendizado profundo

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).

Classificação de imagens

Material
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]

Convolutional Neural Network (CNN)

Material
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]

Analisando CNNs, Data Augmentation e aprendizagem por transferência (transfer learning)

Material
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]

Fontes

[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

About

Curso de aprendizado de máquina em sistemas embarcados

Resources

License

Stars

Watchers

Forks

Languages