This repository contains the lab materials for Connected Environments DL4Sn module. The code folders are divided into the weekly activities. A summary overview of the course is below with a more detailed overview on the UCL Moodle site for CASA0018.
We suggest that students take a fork of this repository so that they can add their own work in progress as they work through the material.
Our environment is increasingly being connected with small computers that are aware and responsive. This introductory, hands on module will introduce students to machine learning applied to low power embedded devices. Students will learn the main concepts of deep learning, understand how to apply deep learning to data streams from cameras and other IoT sensors, and how to deploy AI onto sensor devices, such as mobile phones and microcontrollers. Students will learn about deep learning architectures for image and time series data and will apply these ideas to sensor data in order to do forecasting, image recognition, and object tracking. A significant component of the module will be an individual project to build and deploy an intelligent sensor application. Students will practice these ideas using Python, PyTorch and TensorFlow. The programme has been developed with support from the Google TensorFlow team, uses the TinyML book as a core text and utilises the Arduino Nano as the primary prototyping platform.
On completion, students will be able to:
Domain Knowledge
- Understand AI / machine learning terminology
- Understand deep learning opportunities and limitations
- Understand different types of deep learning models
Prototyping Skills
- Implement deep learning models in Python
- Prepare data for model training
- Select and train suitable models for different use cases (video & timeseries)
- Embed AI on sensor devices, such as a mobile phone or a microcontroller.
Collaboration
- Document and share project information to support reproducible research
- Provide peer feedback to fellow students on project work
- Present design decisions and prototypes to receive critical feedback
The ten week module is roughly split into 2 parts. The first half focuses on introducing the technical skills required to apply Deep Learning on embedded devices. Each lecture will be followed by a hands on, self paced lab session to build a working example of the material taught in the lecture.
The second half continues with lectures but is focused on building a student project. At mid term a project brief will be introduced and this will form the basis for the remaining lab sessions. Weeks 5-10 will include peer feedback via design crits (presentations of work in progress) and some guest lectures covering case studies from field applications.
The course references a large volume of freely available on-line learning material to support specific Machine Learning topics. An extra 5-7 hours per week of self-guided learning is recommended during the term (on top of three hours for the weekly lecture and lab session), with a subsequent 70 hours devoted to project work in the second half of term culminating in a final design presentation in week 10.
-
Skills development - during the first 5 weeks each lecture will be followed by a lab session with follow along technical exercises. These tutorials will help you develop the skills needed to work on your own project in the final 5 weeks.
-
Project crits - in the second half of the module students will work on an individual project. Work in progress will be presented at 3 way points with the final presentation on the last week of the module. At the crits students will also learn how to give peer feedback to their fellow students.
-
Project documentation - in weeks 5-10 students will update their project website on a weekly basis to document their design process, inspiration, experiments, code and product photos / videos.
There is a course reading list under the ReadingLists@UCL facilty which can be accessed here: (https://ucl.rl.talis.com/modules/casa0018.html)
The core text for the module is TinyML by Pete Warden and Daniel Situnayake
We also reference
- Deep Learning by Ian Goodfellow and Yoshua Bengio and Aaron Courville
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow by Aurélien Géron
(2500 word equiv)
- project build (30%),
- github page - code / docs / photos / video (30%),
- crit (40%)