/UNIFEI-IESTI01-T01-2021.1

Course Repository - TinyML - Machine Learning for Embedding Devices

Primary LanguageJupyter NotebookMIT LicenseMIT

UNIFEI-IESTI01-T01-2021.1

Course Repository - TinyML - Machine Learning for Embedding Devices

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

For the current IESTI01 course version, please go to: UNIFEI-IESTI01-TinyML


NOTA: O curso será ministrado majoritariamente em português, mas uma base de inglês será fundamental ao aluno para o acompanhamento do mesmo, pois todo o material de leitura, vídeos e slides, serão disponibilizados no idioma inglês.

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 Micro), permitirá 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.

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 como Alexa, Hey Google, Siri, etc.)
  • Princípios do reconhecimento automático 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: 10%
  • Listas de exercícios (Jupyter Notebook): 30%
  • Projetos práticos (Labs): 30%
  • Projeto Final (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 operações em um terminal.
  • Noções de Algebra linear, 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 16:30h às 18:30h. 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 de dados e deployment dos modelos treinados (Parte 2) deverão ser utilizados smart-phones pessoais dotados de pelo menos sensores do tipo: acelerômetro, microfone e camera.
  • Na parte 3 do curso será também utilizado um Kit composto de um Arduino BLE Sense (Cortex-M4) e uma camera digital modelo OV7675 (disponibilizado pela universidade e enviado diretamante aos alunos).

Professor do curso:

Supervisão e apoio:

Planejamento das Classes (Turma 1 - 2021.1)

Planejamento das Tarefas/Trabalhos (Turma 1 - 2021.1)

Material (All in English)

All material will be uploaded to this repo at the classes' base.

Optional pre-course activities:

Parte 1: Fundamentals

Parte 2: Applications & Deploy