Skip to content

Course Repository - TinyML - Machine Learning for Embedding Devices

License

Notifications You must be signed in to change notification settings

adugnaNecho/UNIFEI-IESTI01-TinyML-2022.1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UNIFEI-IESTI01-TinyML-2022.1

TinyML - Machine Learning for Embedding Devices

2022 - 1st Semester

Instituto de Engenharia de Sistemas e Tecnologias da Informação – IESTI - Campus de Itajubá

For the previous versions of IESTI01 courses, please visit:


Material

  • All material will be uploaded to this repo at the classes' base
    • Slides, Noteboooks, Code and Docs in English
    • Videos in Portuguese

Optional pre-course activities:

Parte 1: Fundamentals

Parte 2: Applications & Deploy


Relevancia do aprendizado do TinyML

Como sabemos, os microcontroladores (ou MCUs) são componentes eletrônicos muito baratos, geralmente com apenas alguns kilobytes de RAM e projetados para consumir pequenas quantidades de energia. Hoje em dia, os MCUs podem ser encontrados incorporados em quase todos os dispositivos residenciais, médicos, automotivos e industriais. Estima-se que mais de 40 bilhões de microcontroladores serão vendidos este ano e provavelmente centenas de bilhões deles esteja em serviço atualmente. Mas, curiosamente, esses dispositivos não recebem muita atenção porque muitas vezes são usados apenas para substituir funcionalidades que os sistemas eletromecânicos mais antigos faziam em carros, máquinas de lavar ou controles remotos.

Mais recentemente, com a era da IoT (Internet das Coisas), uma parte significativa desses MCUs está gerando “quintilhões” de dados, que em sua maioria, não são utilizados devido ao alto custo e complexidade de sua transmissão de dados (largura de banda e latência).

Por outro lado, nas últimas décadas, assistimos ao desenvolvimento de modelos de Aprendizado de Máquina (também conhecido como Inteligência Artificial) treinados com "toneladas" de dados e em poderosos mainframes. Mas o que está acontecendo hoje é que, de repente, tornou-se possível, à partir de sinais "ruidosos" e complexos como imagens, áudio ou acelerômetros e extrair significado deles através do uso de redes neurais. E o que é mais importante, é que podemos executar esses modelos de redes neurais em microcontroladores e sensores usando muito pouca energia e assim, interpretando muito mais dos dados de sensores que estamos atualmente ignorando. Este é o TinyML, uma nova área que permite extrair "inteligência de máquina" bem no mundo físico (onde os dados são gerados).

Visão geral do curso

TinyML é um curso introdutório na interseção entre o Aprendizado de Máquina (Machine Learning) e dispositivos embarcados (Embedded Devices). A difusão de dispositivos embarcados com ultra-baixo consumo de energia (da ordem de miliwatts), juntamente com a introdução de frameworks de aprendizado de máquina dedicados a dispositivos embarcados, como TensorFlow Lite para Microcontroladores (TF Lite Micro), permitirão a proliferação em massa de dispositivos IoT potencializados por IA (“AioT”).

O crescimento explosivo do aprendizado de máquina e a facilidade de uso de plataformas como TensorFlow (TF) o tornam um tópico de estudo indispensável para estudantes de Engenharia Eletrônica, da Computação e Controle & Automação.

O TinyML difere do aprendizado de máquina convencional (por exemplo, servidor - nuvem) porque requer não apenas conhecimentos em software, mas também conhecimentos em hardware integrado. Este curso procura fornecer uma base para o entendimento deste campo emergente.

Referências

A atual versão deste curso, pioneiro na América Latina, tem como principais referências:

IESTI01 faz parte do TinyML4D, uma iniciativa para tornar a ensino do TinyML disponível para todos em todo o mundo.

Tópicos do curso

  • Fundamentos de IoT
  • Fundamentos de aprendizado de máquina (ML)
  • Fundamentos de Deep Learning (DL)
  • Como coletar dados para ML
  • Como treinar e implantar modelos de ML
  • Noções básicas sobre ML embarcado
  • O código por trás de alguns dos aplicativos mais amplamente utilizados no TinyML
  • Casos reais de aplicação do TinyML na indústria
  • Princípios de reconhecimento automático de fala (KeyWord Spotting apps como Alexa, Hey Google, Siri, etc.)
  • Princípios do classificação automática de imagens (Visual Wake Words)
  • Conceito de detecção de anomalias e modelos de ML aplicáveis
  • Princípios de Engenharia de Dados aplicado ao TinyML
  • Visão geral do hardware de dispositivos baseados em microcontroladores
  • Visão geral do software por trás de dispositivos baseados em microcontroladores
  • Projetos reais utilizando plataformas de mercado
  • Design, desenvolvimento e Implantação de uma IA responsável

Carga horária:

  • 30hs (Classes de 2hs, durante 15 semanas)
  • 15hs de tarefas/labs
  • 15hs em pesquisas e estudos individuais + trabalho final (em grupo)

Processo de aprovação:

  • Participação individual em classe (Quiz semanal): 20%
  • Code Assignments (ML/DL) (Jupyter Notebook / CoLab): 25%
  • Projetos práticos (Relatórios de Laboratórios): 25%
  • Projeto Final em Grupo(com apresentação): 30%

Pré-requisitos

  • Conhecimentos do idioma inglês (leitura).
  • Conhecimentos básicos de programação em C/C++ (Arduino IDE) e Python. Todas as tarefas de classe envolverão uma ou ambas linguagens de programação.
  • Familiaridade com ferramentas de linha de comando em Mac, Windows ou Linux. Os projetos exigirão algumas operações em um terminal.
  • Noções de Algebra linear, análise de sinais, probabilidade básica e estatística. Muitos tópicos de ML giram em torno de compreender operações e notação de vetores e matrizes, bem como conceitos de distribuições gaussianas, médias, desvios-padrão etc.

Metodologia/Recursos:

  • As aulas serão ministradas de maneira remota e ao vivo (aulas síncronas) pela plataforma Google Meet, todas as quartas-feiras das 13:30h às 15:30h (horário de Brasília). As gravações das aulas estarão disponíveis aos alunos para revisão.
  • Exercícios e projetos poderão ser desenvolvidos em computadores pessoais com TensorFlow V.2x instalados ou utilizando-se de ferramentas on-line como Google CoLab.
  • Modelos reais de TinyML serão desenvolvidos e treinados utilizando-se do Edge Impulse Studio.
  • Para a captura inicial de dados, deployment dos modelos treinados e familiarização das ferramentas de mercado, serão utilizados inicialmante smart-phones pessoais dotados de pelo menos sensores do tipo: acelerômetro, microfone e camera.
  • Na segunda parte do curso será utilizado um Kit composto de um Arduino BLE Sense (Cortex-M4) e uma camera digital modelo OV7675 (Cada aluno receberá um Kit, disponibilizado pela universidade para seu uso pessoal durante o decorrer do curso).

Professor do curso:

Supervisão e apoio:

About

Course Repository - TinyML - Machine Learning for Embedding Devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 93.2%
  • C++ 6.8%