From 567d0bbfe8e814dac1d6b1c117d726cb68124ca3 Mon Sep 17 00:00:00 2001 From: Ikechukwu Uchendu Date: Thu, 5 Oct 2023 21:11:33 +0000 Subject: [PATCH 1/4] added jveejay to excluded contributors --- .github/workflows/contributors/update_contributors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/contributors/update_contributors.py b/.github/workflows/contributors/update_contributors.py index 5333b9acd..f3d3fbc3b 100644 --- a/.github/workflows/contributors/update_contributors.py +++ b/.github/workflows/contributors/update_contributors.py @@ -6,7 +6,7 @@ import requests CONTRIBUTORS_FILE = '.all-contributorsrc' -EXCLUDED_USERS = {'web-flow', 'github-actions[bot]', 'mrdragonbear'} +EXCLUDED_USERS = {'web-flow', 'github-actions[bot]', 'mrdragonbear', 'jveejay'} OWNER = "harvard-edge" REPO = "cs249r_book" @@ -68,7 +68,7 @@ def main(_): existing_contributor_logins.append(existing_contributor['login']) existing_contributor_logins_set = set(existing_contributor_logins) print('Existing contributors: ', existing_contributor_logins_set) - + existing_contributor_logins_set -= EXCLUDED_USERS # All contributors in the file should be in the API assert existing_contributor_logins_set.issubset( users_from_api), 'All contributors in the .all-contributorsrc file should be pulled using the API' From 56ec049077c83bf99f9ef8c888e37a3b67aef5e4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 5 Oct 2023 21:12:56 +0000 Subject: [PATCH 2/4] Update readme and contributors.qmd with contributors --- .all-contributorsrc | 32 ++++++++++++++++---------------- README.md | 8 ++++---- contributors.qmd | 8 ++++---- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 2f96552a2..6fafe84ac 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -7,19 +7,19 @@ ], "contributors": [ { - "login": "mpstewart1", - "name": "Matthew Stewart", - "avatar_url": "https://avatars.githubusercontent.com/mpstewart1", - "profile": "https://github.com/mpstewart1", + "login": "ShvetankPrakash", + "name": "Shvetank Prakash", + "avatar_url": "https://avatars.githubusercontent.com/ShvetankPrakash", + "profile": "https://github.com/ShvetankPrakash", "contributions": [ "doc" ] }, { - "login": "uchendui", - "name": "Ikechukwu Uchendu", - "avatar_url": "https://avatars.githubusercontent.com/uchendui", - "profile": "https://github.com/uchendui", + "login": "mpstewart1", + "name": "Matthew Stewart", + "avatar_url": "https://avatars.githubusercontent.com/mpstewart1", + "profile": "https://github.com/mpstewart1", "contributions": [ "doc" ] @@ -34,19 +34,19 @@ ] }, { - "login": "jveejay", - "name": "Vijay Janapa Reddi", - "avatar_url": "https://avatars.githubusercontent.com/jveejay", - "profile": "https://github.com/jveejay", + "login": "uchendui", + "name": "Ikechukwu Uchendu", + "avatar_url": "https://avatars.githubusercontent.com/uchendui", + "profile": "https://github.com/uchendui", "contributions": [ "doc" ] }, { - "login": "ShvetankPrakash", - "name": "Shvetank Prakash", - "avatar_url": "https://avatars.githubusercontent.com/ShvetankPrakash", - "profile": "https://github.com/ShvetankPrakash", + "login": "profvjreddi", + "name": "Vijay Janapa Reddi", + "avatar_url": "https://avatars.githubusercontent.com/profvjreddi", + "profile": "https://github.com/profvjreddi", "contributions": [ "doc" ] diff --git a/README.md b/README.md index da0e46726..c0b3a9ff5 100644 --- a/README.md +++ b/README.md @@ -86,11 +86,11 @@ quarto render - - - - + + + +
Matthew Stewart
Matthew Stewart

📖
Ikechukwu Uchendu
Ikechukwu Uchendu

📖
Jessica Quaye
Jessica Quaye

📖
Vijay Janapa Reddi
Vijay Janapa Reddi

📖
Shvetank Prakash
Shvetank Prakash

📖
Matthew Stewart
Matthew Stewart

📖
Jessica Quaye
Jessica Quaye

📖
Ikechukwu Uchendu
Ikechukwu Uchendu

📖
Vijay Janapa Reddi
Vijay Janapa Reddi

📖
diff --git a/contributors.qmd b/contributors.qmd index 180f65d4d..f655ffbe3 100644 --- a/contributors.qmd +++ b/contributors.qmd @@ -8,11 +8,11 @@ We extend our sincere thanks to the diverse group of individuals who have genero - - - - + + + +
Matthew Stewart
Matthew Stewart

📖
Ikechukwu Uchendu
Ikechukwu Uchendu

📖
Jessica Quaye
Jessica Quaye

📖
Vijay Janapa Reddi
Vijay Janapa Reddi

📖
Shvetank Prakash
Shvetank Prakash

📖
Matthew Stewart
Matthew Stewart

📖
Jessica Quaye
Jessica Quaye

📖
Ikechukwu Uchendu
Ikechukwu Uchendu

📖
Vijay Janapa Reddi
Vijay Janapa Reddi

📖
From 08e2a023480a3911cfe9502b4b9b29d8376837b4 Mon Sep 17 00:00:00 2001 From: Vijay Janapa Reddi Date: Fri, 6 Oct 2023 13:31:10 -0400 Subject: [PATCH 3/4] Cleaning up merges --- _quarto.yml | 2 ++ embedded_ml_exercise.qmd => embedded_ml_exercise.qmd | 10 ---------- embedded_sys.qmd | 2 ++ embedded_sys_exercise.qmd | 10 ---------- 4 files changed, 4 insertions(+), 20 deletions(-) rename embedded_ml_exercise.qmd => embedded_ml_exercise.qmd (99%) diff --git a/_quarto.yml b/_quarto.yml index b2d7a7223..9df485f17 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,6 +1,8 @@ project: type: book output-dir: _book + render: + - "*.qmd" website: comments: diff --git a/ embedded_ml_exercise.qmd b/embedded_ml_exercise.qmd similarity index 99% rename from embedded_ml_exercise.qmd rename to embedded_ml_exercise.qmd index d07ef188b..c8145773d 100644 --- a/ embedded_ml_exercise.qmd +++ b/embedded_ml_exercise.qmd @@ -1,13 +1,3 @@ ---- -title: "4 Embedded AI - Exercise: Image Classification" -format: - html: - code-fold: false -execute: - eval: false -jupyter: python3 ---- - ### **Introduction** As we initiate our studies into embedded machine learning or tinyML, diff --git a/embedded_sys.qmd b/embedded_sys.qmd index 6397e26e6..cbaedfa74 100644 --- a/embedded_sys.qmd +++ b/embedded_sys.qmd @@ -377,3 +377,5 @@ The table provides a side-by-side comparison between these two distinct types of As we gaze into the future, it's clear that the realm of embedded systems stands on the cusp of a transformative era, characterized by groundbreaking innovations, abundant opportunities, and formidable challenges. The horizon is replete with the promise of enhanced connectivity, heightened intelligence, and superior efficiency, carving out a trajectory where embedded systems will serve as the guiding force behind society's technological progress. The path forward is one of discovery and adaptability, where the confluence of technological prowess and creative ingenuity will sculpt a future that is not only rich in technological advancements but also attuned to the intricate and continually shifting needs of a dynamic global landscape. It's a field teeming with possibilities, inviting trailblazers to embark on a journey to define the parameters of a bright and flourishing future. + +[Setup Nicla Vision](./embedded_sys_exercise.qmd) \ No newline at end of file diff --git a/embedded_sys_exercise.qmd b/embedded_sys_exercise.qmd index b2289da64..bb5e218b5 100644 --- a/embedded_sys_exercise.qmd +++ b/embedded_sys_exercise.qmd @@ -1,13 +1,3 @@ ---- -title: "2 Embedded Systems - Exercise: The Nicla Vision" -format: - html: - code-fold: false -execute: - eval: false -jupyter: python3 ---- - ## Introduction ## The [Arduino Nicla From 21b24e87af224cdb5ff85dea32f922c9168a8c60 Mon Sep 17 00:00:00 2001 From: Vijay Janapa Reddi Date: Fri, 6 Oct 2023 17:33:59 -0400 Subject: [PATCH 4/4] Minor customizations --- _quarto.yml | 24 ++++++++++++++++++------ embedded_ml_exercise.qmd | 6 +++--- embedded_sys.qmd | 6 +++++- embedded_sys_exercise.qmd | 10 +++++----- introduction.qmd | 4 +++- test.qmd | 3 +++ 6 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 test.qmd diff --git a/_quarto.yml b/_quarto.yml index 9df485f17..2ca0f7771 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,7 +1,10 @@ project: type: book output-dir: _book - render: + preview: + browser: true + navigate: true + render: - "*.qmd" website: @@ -10,13 +13,14 @@ website: theme: clean openSidebar: true -#abstract: Machine Learning Systems for TinyML offers comprehensive guidance on deploying machine learning on embedded devices. As edge computing and the Internet of Things proliferate, this textbook provides professionals and students the expertise to implement performant AI on resource-constrained hardware. A unique aspect of this book elucidates the entire machine learning workflow, from data engineering through training, optimization, acceleration, and production deployment. Key topics covered include deep learning and classical ML algorithms for embedded systems, efficient neural network architectures, hardware-aware training techniques, model compression, benchmarking for tinyML, and on-device learning. Additional chapters highlight cutting-edge advances like on-device data generation and crucial considerations around reliability, privacy, security, and responsible AI. With its rigorous approach spanning theory and practice across diverse tinyML application domains like smart homes, wearables, and industrial IoT, the book enables readers to develop specialized knowledge. Using concrete use cases and hands-on examples, readers will learn to apply machine learning to transform embedded and IoT systems. Overall, this indispensable guide provides a research-based foundation for leveraging machine learning in embedded systems. include-in-header: text: book: page-navigation: true title: "MACHINE LEARNING SYSTEMS for TinyML" + abstract: Machine Learning Systems for TinyML offers comprehensive guidance on deploying machine learning on embedded devices. As edge computing and the Internet of Things proliferate, this textbook provides professionals and students the expertise to implement performant AI on resource-constrained hardware. A unique aspect of this book elucidates the entire machine learning workflow, from data engineering through training, optimization, acceleration, and production deployment. Key topics covered include deep learning and classical ML algorithms for embedded systems, efficient neural network architectures, hardware-aware training techniques, model compression, benchmarking for tinyML, and on-device learning. Additional chapters highlight cutting-edge advances like on-device data generation and crucial considerations around reliability, privacy, security, and responsible AI. With its rigorous approach spanning theory and practice across diverse tinyML application domains like smart homes, wearables, and industrial IoT, the book enables readers to develop specialized knowledge. Using concrete use cases and hands-on examples, readers will learn to apply machine learning to transform embedded and IoT systems. Overall, this indispensable guide provides a research-based foundation for leveraging machine learning in embedded systems. + subtitle: "" search: true repo-url: https://github.com/harvard-edge/cs249r_book repo-actions: [edit, issue, source] @@ -27,7 +31,7 @@ book: favicon: cover.png page-footer: left: | - Edited by Prof. Vijay Janapa Reddi (Harvard University) and Prof. Song Han (MIT). + Edited by Prof. Vijay Janapa Reddi (Harvard University) right: | This book was built with Quarto. @@ -59,7 +63,12 @@ book: - generative_ai.qmd - ai_for_good.qmd - sustainable_ai.qmd - - references.qmd + + - part: HANDS-ON EXERCISES + chapters: + - embedded_sys_exercise.qmd + + references: references.qmd appendices: - tools.qmd @@ -68,6 +77,7 @@ book: - learning_resources.qmd - community.qmd - case_studies.qmd + - embedded_sys_exercise.qmd citation: true bibliography: references.bib @@ -96,9 +106,11 @@ format: link-external-newwindow: true callout-appearance: simple anchor-sections: true - smooth-scroll: true + smooth-scroll: false toc: true citations-hover: false + fig-width: 8 + fig-height: 6 editor: - render-on-save: true \ No newline at end of file + render-on-save: true diff --git a/embedded_ml_exercise.qmd b/embedded_ml_exercise.qmd index c8145773d..d24aad626 100644 --- a/embedded_ml_exercise.qmd +++ b/embedded_ml_exercise.qmd @@ -294,7 +294,7 @@ or rotating the images). Under the rood, here you can see how Edge Impulse implements a data Augmentation policy on your data: -```{python} +```{{python}} # Implements the data augmentation policy def augment_image(image, label): # Flips the image randomly @@ -453,7 +453,7 @@ on the OpenMV IDE. GitHub,]{.underline}](https://github.com/Mjrovai/Arduino_Nicla_Vision/blob/main/Micropython/nicla_image_classification.py) or modify it as below: -```{python} +```{{python}} # Marcelo Rovai - NICLA Vision - Image Classification # Adapted from Edge Impulse - OpenMV Image Classification Example # @24Aug23 @@ -556,7 +556,7 @@ For that, we should [[upload the code from GitHub]{.underline}](https://github.com/Mjrovai/Arduino_Nicla_Vision/blob/main/Micropython/nicla_image_classification_LED.py) or change the last code to include the LEDs: -```{python} +```{{python}} # Marcelo Rovai - NICLA Vision - Image Classification with LEDs # Adapted from Edge Impulse - OpenMV Image Classification Example # @24Aug23 diff --git a/embedded_sys.qmd b/embedded_sys.qmd index cbaedfa74..bd30fdb7f 100644 --- a/embedded_sys.qmd +++ b/embedded_sys.qmd @@ -378,4 +378,8 @@ The table provides a side-by-side comparison between these two distinct types of As we gaze into the future, it's clear that the realm of embedded systems stands on the cusp of a transformative era, characterized by groundbreaking innovations, abundant opportunities, and formidable challenges. The horizon is replete with the promise of enhanced connectivity, heightened intelligence, and superior efficiency, carving out a trajectory where embedded systems will serve as the guiding force behind society's technological progress. The path forward is one of discovery and adaptability, where the confluence of technological prowess and creative ingenuity will sculpt a future that is not only rich in technological advancements but also attuned to the intricate and continually shifting needs of a dynamic global landscape. It's a field teeming with possibilities, inviting trailblazers to embark on a journey to define the parameters of a bright and flourishing future. -[Setup Nicla Vision](./embedded_sys_exercise.qmd) \ No newline at end of file +## Exercises + +coming soon. + +[Setup Nicla Vision](./embedded_sys_exercise.qmd) diff --git a/embedded_sys_exercise.qmd b/embedded_sys_exercise.qmd index bb5e218b5..9253c89a2 100644 --- a/embedded_sys_exercise.qmd +++ b/embedded_sys_exercise.qmd @@ -1,4 +1,4 @@ -## Introduction ## +# Introduction The [Arduino Nicla Vision](https://docs.arduino.cc/hardware/nicla-vision) (sometimes called @@ -255,7 +255,7 @@ height="3.9722222222222223in"} Let\'s go through the [helloworld.py](http://helloworld.py/) script: -```{python} +```{{python}} # Hello World Example 2 # # Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script! @@ -390,7 +390,7 @@ The Nicla Pins 3 (Tx) and 4 (Rx) are connected with the Shield Serial connector. The UART communication is used with the LoRaWan device. Here is a simple code to use the UART.: -```{python} +```{{python}} # UART Test - By: marcelo_rovai - Sat Sep 23 2023 import time @@ -425,7 +425,7 @@ uploaded to the Nicla (the can be found in GitHub). -```{python} +```{{python}} # Nicla_OLED_Hello_World - By: marcelo_rovai - Sat Sep 30 2023 #Save on device: MicroPython SSD1306 OLED driver, I2C and SPI interfaces created by Adafruit @@ -444,7 +444,7 @@ oled.show() Finally, here is a simple script to read the ADC value on pin \"PC4\" (Nicla pin A0): -```{python} +```{{python}} # Light Sensor (A0) - By: marcelo_rovai - Wed Oct 4 2023 diff --git a/introduction.qmd b/introduction.qmd index 249c74f10..9c4d00213 100644 --- a/introduction.qmd +++ b/introduction.qmd @@ -1,5 +1,7 @@ # Introduction +[//]: [testing](test.qmd) + ## Overview Welcome to this comprehensive exploration of Tiny Machine Learning (TinyML). This book aims to bridge the gap between intricate machine learning theories and their practical applications on small devices. Whether you're a newcomer, an industry professional, or an academic researcher, this book offers a balanced mix of essential theory and hands-on insights into TinyML. @@ -102,4 +104,4 @@ As we navigate the multifaceted world of embedded AI, we'll cover a broad range ## Contribute Back -Learning in the fast-paced world of embedded AI is a collaborative journey. This book aims to nurture a vibrant community of learners, innovators, and contributors. As you explore the concepts and engage with the exercises, we encourage you to share your insights and experiences. Whether it's a novel approach, an interesting application, or a thought-provoking question, your contributions can enrich the learning ecosystem. Engage in discussions, offer and seek guidance, and collaborate on projects to foster a culture of mutual growth and learning. By sharing knowledge, you play a pivotal role in fostering a globally connected, informed, and empowered community. \ No newline at end of file +Learning in the fast-paced world of embedded AI is a collaborative journey. This book aims to nurture a vibrant community of learners, innovators, and contributors. As you explore the concepts and engage with the exercises, we encourage you to share your insights and experiences. Whether it's a novel approach, an interesting application, or a thought-provoking question, your contributions can enrich the learning ecosystem. Engage in discussions, offer and seek guidance, and collaborate on projects to foster a culture of mutual growth and learning. By sharing knowledge, you play a pivotal role in fostering a globally connected, informed, and empowered community. diff --git a/test.qmd b/test.qmd new file mode 100644 index 000000000..72a22085c --- /dev/null +++ b/test.qmd @@ -0,0 +1,3 @@ +# Testing page + +testing if this will render