Go to the challenge page:
https://www.udacity.com/scholarships/intel-edge-ai-scholarship
Go the website:
https://sites.google.com/udacity.com/intel-edge-ai-scholarship
Go to the classroom:
https://classroom.udacity.com/nanodegrees/nd132/
Exercise Guide:
【Jupyter Notebook】
Setting up environment:
【Google Colab】
【Detailed Notebook】
Lesson 1 Intro to Edge AI
1.1 Instructor Intro
https://youtu.be/KogUwtKPv7Q
1.2 What is AI at the Edge?
https://youtu.be/4dro5ZHQLa4
1.3 Why is AI at the Edge Important?
https://youtu.be/TP3LMX_1uwA
1.4 Applications of AI at the Edge
https://youtu.be/E1StqFO7j9Q
1.5 Historical Context
https://youtu.be/Gp0CqY4_TGI
1.6 Course Structure
https://youtu.be/BD3nzcTAczg
Intel® Distribution of OpenVINO™ Toolkit
https://software.intel.com/en-us/openvino-toolkit
1.7 Why Are the Topics Distinct?
https://youtu.be/ZFrb7ZXJ_bA
1.8 Relevant Tools and Prerequisites
https://youtu.be/s3wUC-4M4Uk
hardware requirements for the Intel® Distribution of OpenVINO™ Toolkit
https://software.intel.com/en-us/openvino-toolkit/hardware
If you do want to do the exercises on your local machine (or perhaps even on a set-up like a Raspberry Pi with an Intel® Neural Compute Stick 2), you can follow the instructions here for your operating system.
https://docs.openvinotoolkit.org/latest/index.html
1.9 What You Will Build
https://youtu.be/e38WWETUZ8g
Convert a model to an Intermediate Representation (IR)
Use the IR with the Inference Engine
Process the output of the model to gather relevant statistics
Send those statistics to a server, and
Perform analysis on both the performance and further use cases of your model.
Project Demo
https://youtu.be/uWkMjUiqk0M
1.10 Recap
https://youtu.be/tpZHjx2r5gs
The structure of the course:
Pre-Trained Models
The Model Optimizer
The Inference Engine
More edge topics (MQTT, servers, etc.)
Lesson 2 Leveraging Pre-Trained Models
2.1 Introduction
https://youtu.be/vFNZu1VpdwE
In this lesson we'll cover:
Basics of the Intel® Distribution OpenVINO™ Toolkit
Different Computer Vision model types
Available Pre-Trained Models in the Software
Choosing the right Pre-Trained Model for your App
Loading and Deploying a Basic App with a Pre-Trained Model
2.2 The Intel® Distribution of OpenVINO™ Toolkit
https://youtu.be/-pM9pLCnzJk
2.3 Pre-Trained Models in OpenVINO™
https://youtu.be/1-Vije0cMBQ
2.4 Types of Computer Vision Models
https://youtu.be/E8yBgSKfCoo
Classification, Detection, Segmentation, etc.
2.5 Case Studies in Computer Vision
https://youtu.be/7mUaovlA4aQ
Single Shot Multibox Detector (SSD) model, ResNet, MobileNet
2.6 Available Pre-Trained Models in OpenVINO™
https://youtu.be/SoTH1jr3-HA
2.7 Exercise: Loading Pre-Trained Models
【Jupyter Notebook】, requirements.txt
2.8 Solution: Loading Pre-Trained Models
https://youtu.be/QMfTUdWFsGw
Setting up environment:【Google Docs】
Choosing Models
Human Pose Estimation: human-pose-estimation-0001
Text Detection: text-detection-0004
Determining Car Type & Color: vehicle-attributes-recognition-barrier-0039
2.9 Optimizations on the Pre-Trained Models
https://youtu.be/nKvZYnOnWm4
2.10 Choosing the Right Model for Your App
https://youtu.be/CWC195DzgAI
2.11 Pre-processing Inputs
https://youtu.be/E9huKos96Uk
2.12 Exercise: Pre-processing Inputs
【Google Colab】
2.13 Solution: Pre-processing Inputs
https://youtu.be/erNsB5nXgW4
2.14 Handling Network Outputs
https://youtu.be/pREe4P5yygM
2.15 Running Your First Edge App
https://youtu.be/FANZZXUqGac
2.16 Exercise: Deploy An App at the Edge
【Google Colab】
2.17 Solution: Deploy an App at the Edge
Early Steps and Car Meta Model Output Handling
https://youtu.be/X9yI7U2Rn00
Pose Estimation Output Handling
https://youtu.be/fvFuMgYUibs
Text Detection Model Handling
https://youtu.be/0tuVuyD6ffM
2.18 Recap
https://youtu.be/o-fWs0BwbyM
2.19 Lesson Glossary
【Google Docs】
3.1 Introduction
https://youtu.be/wxrPEdI9Sj4
3.2 The Model Optimizer
https://youtu.be/Gyj7VPmGOVM
3.3 Optimization Techniques
https://youtu.be/FKgkB4lSn-U
3.4 Supported Frameworks
https://youtu.be/5tnzgZuuVsk
Caffe
TensorFlow
MXNet
ONNX (which can support PyTorch and Apple ML models through another conversion step)
Kaldi
3.5 Intermediate Representations
https://youtu.be/EImZN2nk1t4
The Intermediate Representation is a model where specific layers of
supported deep learning frameworks are replaced with layers in the
“dialect” of the Inference Engine.
3.6 Using the Model Optimizer with TensorFlow Models
https://youtu.be/IcZKqDTsp4c
3.7 Exercise: Convert a TF Model
Converting a TensorFlow* Model
3.8 Solution: Convert a TensorFlow Model
https://youtu.be/_E2EP3ZM92s
【Google Colab】
3.9 Using the Model Optimizer with Caffe Models
https://youtu.be/nUvJ7aXeyMg
3.10 Exercise: Convert a Caffe Model
Excercise
3.11 Solution: Convert a Caffe Model
https://youtu.be/kfb7BGByUdM
3.12 Using the Model Optimizer with ONNX Models
https://youtu.be/EeDZn7aeSxM
Converting a ONNX* Model
ONNX Model Zoo
Converting a PyTorch model using ONNX for use with the OpenVINO™ Toolkit
3.13 Exercise: Convert an ONNX Model
【Google Colab】
3.14 Solution: Convert an ONNX Model
https://youtu.be/KuERfGMco1A
3.15 Cutting Parts of a Model
https://youtu.be/jhZIkgysCWM
OpenVINO Toolkit
3.16 Supported Layers
https://youtu.be/bwVlEaAsHvk
Supported Framework Layers
3.17 Custom Layers
https://youtu.be/ciSpU0kyjH8
Custom Layers in the Model Optimizer
Offloading Sub-Graph Inference to TensorFlow*
3.18 Exercise: Custom Layers
The exercise is adapted from this repository.
3.19 Recap
https://youtu.be/Zf5zOMg2PjQ
In this lesson we covered:
Basics of the Model Optimizer
Different Optimization Techniques and their impact on model performance
Supported Frameworks in the Intel® Distribution of OpenVINO™ Toolkit
Converting from models in those frameworks to Intermediate Representations
And a bit on Custom Layers
3.20 Lesson Glossary
【Google Docs】
4.1 Introduction
https://youtu.be/BUpkwGhboLg
In this lesson we'll cover:
Basics of the Inference Engine
Supported Devices
Feeding an Intermediate Representation to the Inference Engine
Making Inference Requests
Handling Results from the Inference Engine
Integrating the Inference Model into an App
4.2 The Inference Engine
https://youtu.be/dZA4QGbDrs4
4.3 Supported Devices
https://youtu.be/m2d1urdJegA
4.4 Using the Inference Engine with an IR
https://youtu.be/b90ny0AmQF8
4.5 Exercise: Feed an IR to the Inference Engine
【Google Colab】
4.6 Solution: Feed an IR to the Inference Engine
https://youtu.be/jEmebNVBlc4
4.7 Sending Inference Requests to the IE
https://youtu.be/wLN8HYZ05rg
4.8 Asynchronous Requests
https://youtu.be/JGuUIDpn1PY
4.9 Exercise: Inference Requests
【Google Colab】
4.10 Solution: Inference Requests
https://youtu.be/QeBpEkkoZ74
4.11 Handling Results
https://youtu.be/wO_Io3wDwTM
(Blob class reference)[https://docs.openvinotoolkit.org/latest/classInferenceEngine_1_1Blob.html]
e.g code snippets could be used to extract the output from an inference request, given an ExecutableNetwork named exec_net?
code snippets could be used to extract the output from an inference request, given an ExecutableNetwork named exec_net
.
4.12 Integrating into Your App
https://youtu.be/vQpLv1Y3pnU
Further Research
Intel®’s IoT Apps Across Industries
Starting Your First IoT Project
OpenVINO™ on a Raspberry Pi and Intel® Neural Compute Stick
4.13 Exercise: Integrate into an App
【Google Colab】
4.14 Solution: Integrate into an App
https://youtu.be/BIdLJkDD5vM
Note: There is one small change from the code on-screen for running on Linux machines versus Mac. On Mac, cv2.VideoWriter
uses cv2.VideoWriter_fourcc('M','J','P','G')
to write an .mp4
file, while Linux uses 0x00000021
.
4.15 Behind the Scenes of Inference Engine
https://youtu.be/ZWpNQjXSEEc
What is the best programming language for Machine Learning?
OpenVINO Toolkit - Optimization Guide
4.16 Recap
https://youtu.be/AVmFgZyk0T0
4.17 Lesson Glossary
【Google Docs】
5.1 Introduction
https://youtu.be/IBP4tsdFRPg
In this lesson we'll cover:
Basics of OpenCV
Handling Input Streams in OpenCV
Processing Model Outputs for Additional Useful Information
The Basics of MQTT and their use with IoT devices
Sending statistics and video streams to a server
Performance basics
And finish up by thinking about additional model use cases, as well as end user needs
5.2 OpenCV Basics
https://youtu.be/c-pyJ3XwWko
Useful OpenCV function:
VideoCapture
, resize
, cvtColor
, rectangle
, imwrite
...
Some pretty extensive tutorials
5.3 Handling Input Streams
https://youtu.be/F-7ofR4pdNE
5.4 Exercise: Handling Input Streams
[【Google Colab】](https://colab.research.google.com/drive/1xla23daYYbTIfbdHF0nyHzHyoAvVtyaG?authuser=1#scrollTo=UV9NyVe1jNUq)
5.5 Solution: Handling Input Streams
https://youtu.be/p6Hd3dnf-LY
5.6 Gathering Useful Information from Model Outputs
https://youtu.be/uNoIZI9bm6U
5.7