Awesome
UNIFEI-IESTI01-T01-2021.1
Course Repository - TinyML - Machine Learning for Embedding Devices
<img src='images/IESTI_2.jpg'/> <figcaption><a href='https://unifei.edu.br/iesti/'>Instituto de Engenharia de Sistemas e Tecnologias da Informação – IESTI - Campus de Itajubá</a></figcaption> <hr>For the current IESTI01 course version, please go to: UNIFEI-IESTI01-TinyML
<hr> 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:
- Harvard School of Engineering and Applied Sciences - CS249r: Tiny Machine Learning
- Professional Certificate in Tiny Machine Learning (TinyML) – edX/Harvard
- Introduction to Embedded Machine Learning (Coursera)
- Text Book: "TinyML" by Pete Warden, Daniel Situnayake
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)
<img src='images/Class_Schedule.png'/>Planejamento das Tarefas/Trabalhos (Turma 1 - 2021.1)
<img src='images/Assignments_Schedule.png'/>Material (All in English)
All material will be uploaded to this repo at the classes' base.
Optional pre-course activities:
- Pre-course: : [Suggested readings]
- Pre-course: : [Jupyter Notebook, CoLab and Python Review]
Parte 1: Fundamentals
- Class 1 - About the Course and Syllabus [Slides] [Video]
- Class 2 - Introduction to TinyML [Slides] [Video]
- Class 3 - TinyML - Challenges [Slides][Extras] [Video]
- Class 4 - Jupyter Notebook, CoLab and Python Review [Docs] [Notebooks] [Video]
- Class 5 - The Machine Learning Paradigm [Slides] [Notebooks] [Docs] [Video]
- Class 6 - The Building Blocks of Deep Learning (DL) - Introduction [Slides] [Notebooks] [Docs] [Video]
- Class 7 - The Building Blocks of DL - Regression with DSS [Slides] [Notebooks] [Docs] [Video]
- Class 8 - The Building Blocks of DL - Classification with DSS [Slides] [Notebooks] [Docs] [Video]
- Class 9 - The Building Blocks of DL - DNN Recap, Datasets and Model Performance Metrics [Slides] [Notebooks] [Docs] [Video]
- Class 10 - Introducing Convolutions (CNN) [Slides] [Notebooks] [Docs] [Video]
- Class 11 - Convolutions (CNN) Recap [Slides] [Notebooks] [Video]
- Class 12 - Preventing Overfitting [Slides] [Notebooks] [Docs] [Video]
Parte 2: Applications & Deploy
- Class 13 - Preview of TinyML Applications [Slides] [Video]
- Class 14 - AI Lifecycle and ML Workflow [Slides] [Docs] [Video]
- Class 15 - Introduction to Edge Impulse Studio [Slides] [Video]
- Class 16 - Gesture Classification (EI Studio Project) [Slides] [Video]
- Class 17 - Anomaly Detection with TinyML [Slides] [Notebooks] [Docs] [Video]
- Class 18 - Data Engineering for TinyML [Slides] [Docs][Video]
- Class 19 - TinyML Kit Overview, Installation and test [Slides] [Docs] [Video]
- Class 20 - Lab Gesture Classification & Anomaly Detection using MCU [Slides] [Video]
- Class 21 - Keyword Spotting - Introduction [Slides] [Docs] [Video]
- Class 22 - Lab KWS using MCU [Slides] [Docs] [Video]
- Class 23 - Lecturer with Daniel Situnayaki, Edge Impulse [Slides] [Video]
- Class 24 - Collecting Data [Slides] [Docs] [Video]
- Class 25 - Visual Wake Words - Introduction [Slides] [Docs] [Video]
- Class 26 - VWW - Demo/Lab - [Slides] [Docs] [Video]
- Class 27 - Image Classification using Edge Impulse Studio [Slides] [Docs] [Video EI-Studio] [Video Arduino-IDE]
- Class 28 - Responsible AI & Course Wrapup [Slides] [Docs] [Video] [Privacy in Context]
- Class 29 and 30 - Group Presentations