Skip to content

adugnaNecho/UNIFEI-IESTI01-TinyML-2021.2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 

Repository files navigation

UNIFEI-IESTI01-TinyML-2021.2

Course Repository - TinyML - Machine Learning for Embedding Devices

2nd Semester (Spring)

Instituto de Engenharia de Sistemas e Tecnologias da Informação – IESTI - Campus de Itajubá
For the previous IESTI01 TinyML 2021.1 course Version, please go to: https://github.com/Mjrovai/UNIFEI-IESTI01-T01-2021.1

NOTA: As classes on-line (síncronas) do curso serão ministrado na lingua portuguêsa, mas uma base de inglês (leitura) será fundamental ao aluno para o acompanhamento das mesmas, pois todo o material de leitura, vídeos extras e slides, serão disponibilizados majoritariamente no idioma inglês.

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.

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 (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. 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 (disponibilizado pela universidade e enviado diretamente a residencia dos alunos).

Professor do curso:

Supervisão e apoio:

Planejamento das Classes (2021.2)

Planejamento das Tarefas/Trabalhos (2021.2)

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

  • Class 15 - ML Applications Overview - AI Lifecycle and ML Workflow [Slides] [Video]
  • Class 16 - Introduction to TFLite and TFLite-Micro [Slides] [Notebooks] [Docs] [Video]
    • Class 16a - EdgeML with TensorFlow Lite (RaspberryPi Demo) [Slides] [Video]
  • Class 17 - TinyML Kit Overview - HW and SW Installation & Test [Slides] [Notebooks] [Docs] [Video]
  • Class 18 - TFLite-Micro Overview & Hello World Code Walkthrough [Slides] [Code] [Docs] [Video]
  • Class 19 - Motion Classification /Lab
  • Class 20 - Anomaly Detection using MCU /Lab
  • Class 21 - Keyword Spotting - Introduction
  • Class 22 - Lab KWS using MCU
  • Class 23 - Lecturer with Daniel Situnayaki, Edge Impulse
  • Class 24 - Collecting Data
  • Class 25 - Visual Wake Words - Introduction
  • Class 26 - VWW - Demo/Lab -
  • Class 27 - Image Classification using Edge Impulse Studio
  • Class 28 - Responsible AI & Course Wrap-up
  • Class 29 and 30 - Group Presentations

Group Projects

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 86.1%
  • C++ 13.8%
  • C 0.1%