diff --git a/README.md b/README.md index bf45333..5dc8891 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,17 @@ According to the World Health Organization there are more than 200 million stray Different breeds have different needs, or react differently to people, so when a stray or lost dog is found, identifying the breed can be a great help. -![A Raspberry Pi with a camera](./images/mutt-matcher-device.png) +![A Raspberry Pi with a camera](./media/mutt-matcher-device.png) Your team has been asked by a fictional animal shelter to build a Mutt Matcher - a device to help determine the breed of a dog when it has been found. This will be an IoT (Internet of Things) device based around a Raspberry Pi with a camera, and will take a photo of the dog, and then use an image classifier Machine learning (ML) model to determine the breed, before uploading the results to a web-based IoT application. This device will help workers and volunteers to be able to quickly detect the breed and make decisions on the best way to approach and care for the dog. -![An application dashboard showing the last detected breed as a German wire pointer, as well as a pie chart of detected breeds](./images/iot-central-dashboard.png) +![An application dashboard showing the last detected breed as a German wire pointer, as well as a pie chart of detected breeds](./media/iot-central-dashboard.png) -The animal shelter has provided [a set of images](./model-images) for a range of dog breeds to get you started. These can be used to train the ML model using a service called Custom Vision. +The animal shelter has provided [a set of images](https://github.com/microsoft/hack-workshop-iot/tree/main/model-images) for a range of dog breeds to get you started. These can be used to train the ML model using a service called Custom Vision. -![Pictures of dogs](./images/dog-pictures.png) +![Pictures of dogs](./media/dog-pictures.png) ## Prerequisites @@ -58,7 +58,7 @@ If you get stuck, you can always ask a mentor for additional help. ## Exploring the application -![Icons for Custom Vision, IoT Central and Raspberry Pi](./images/app-icons.png) +![Icons for Custom Vision, IoT Central and Raspberry Pi](./media/app-icons.png) The application your team will build will consist of 3 components: @@ -68,7 +68,7 @@ The application your team will build will consist of 3 components: - A Raspberry Pi based IoT device with a camera -![The application flow described below](./images/app-flow.png) +![The application flow described below](./media/app-flow.png) When a dog breed needs to be detected: diff --git a/goals/index.md b/goals/index.md new file mode 100644 index 0000000..4129e67 --- /dev/null +++ b/goals/index.md @@ -0,0 +1,3 @@ +{% + include-markdown "../README.md" +%} diff --git a/images/app-flow.png b/goals/media/app-flow.png similarity index 100% rename from images/app-flow.png rename to goals/media/app-flow.png diff --git a/images/app-icons.png b/goals/media/app-icons.png similarity index 100% rename from images/app-icons.png rename to goals/media/app-icons.png diff --git a/images/azure-iot-central-logo.png b/goals/media/azure-iot-central-logo.png similarity index 100% rename from images/azure-iot-central-logo.png rename to goals/media/azure-iot-central-logo.png diff --git a/images/custom-vision-detect-dog.png b/goals/media/custom-vision-detect-dog.png similarity index 100% rename from images/custom-vision-detect-dog.png rename to goals/media/custom-vision-detect-dog.png diff --git a/images/custom-vision-logo.png b/goals/media/custom-vision-logo.png similarity index 100% rename from images/custom-vision-logo.png rename to goals/media/custom-vision-logo.png diff --git a/images/dog-pictures.png b/goals/media/dog-pictures.png similarity index 100% rename from images/dog-pictures.png rename to goals/media/dog-pictures.png diff --git a/images/iot-central-dashboard.png b/goals/media/iot-central-dashboard.png similarity index 100% rename from images/iot-central-dashboard.png rename to goals/media/iot-central-dashboard.png diff --git a/images/mutt-matcher-device-new.png b/goals/media/mutt-matcher-device-new.png similarity index 100% rename from images/mutt-matcher-device-new.png rename to goals/media/mutt-matcher-device-new.png diff --git a/images/mutt-matcher-device.png b/goals/media/mutt-matcher-device.png similarity index 100% rename from images/mutt-matcher-device.png rename to goals/media/mutt-matcher-device.png diff --git a/images/pi-camera-ribbon-cable.png b/goals/media/pi-camera-ribbon-cable.png similarity index 100% rename from images/pi-camera-ribbon-cable.png rename to goals/media/pi-camera-ribbon-cable.png diff --git a/images/pi-camera-socket-ribbon-cable.png b/goals/media/pi-camera-socket-ribbon-cable.png similarity index 100% rename from images/pi-camera-socket-ribbon-cable.png rename to goals/media/pi-camera-socket-ribbon-cable.png diff --git a/images/prediction-key-url.png b/goals/media/prediction-key-url.png similarity index 100% rename from images/prediction-key-url.png rename to goals/media/prediction-key-url.png diff --git a/images/published-iteration.png b/goals/media/published-iteration.png similarity index 100% rename from images/published-iteration.png rename to goals/media/published-iteration.png diff --git a/images/raspberry-pi-imager.png b/goals/media/raspberry-pi-imager.png similarity index 100% rename from images/raspberry-pi-imager.png rename to goals/media/raspberry-pi-imager.png diff --git a/images/raspberry-pi-logo.png b/goals/media/raspberry-pi-logo.png similarity index 100% rename from images/raspberry-pi-logo.png rename to goals/media/raspberry-pi-logo.png diff --git a/goals/set-up-iot-central.md b/goals/set-up-iot-central.md index 16c3ed3..8af64bc 100644 --- a/goals/set-up-iot-central.md +++ b/goals/set-up-iot-central.md @@ -6,13 +6,13 @@ The goal of this section is to deploy an IoT Central application, and define a d ## The Azure Service -[![The IoT Cental logo](../images/azure-iot-central-logo.png)](https://azure.microsoft.com/services/iot-central/?WT.mc_id=academic-36256-jabenn) +[![The IoT Cental logo](./media/azure-iot-central-logo.png)](https://azure.microsoft.com/services/iot-central/?WT.mc_id=academic-36256-jabenn) Azure IoT Central is an IoT software-as-a-service (SaaS) application. You can use it to create an IoT application in the cloud that can manage IoT devices, as well as communicating with those devices. You can use it to define *device templates* that define that telemetry data an IoT device will send, and what commands you can send to that device to control it. You can then register devices inside the application, ensuring you have control over what physical IoT devices will connect to your IoT application. You can also set up views and dashboards to visualize the data send from your devices. -![An application dashboard showing the last detected breed as a German wirehaired pointer, as well as a pie chart of detected breeds](../images/iot-central-dashboard.png) +![An application dashboard showing the last detected breed as a German wirehaired pointer, as well as a pie chart of detected breeds](./media/iot-central-dashboard.png) For this workshop, you will need an IoT application that has a device template for Mutt Matchers, defining a *command* that instructs the device to take a picture and detect the breed, and *telemetry* data that the device will send with the detected breed. @@ -98,7 +98,7 @@ Your team might find these resources helpful: ## Final result -![A mutt matcher device in IoT Central with no data](../images/mutt-matcher-device-new.png) +![A mutt matcher device in IoT Central with no data](./media/mutt-matcher-device-new.png) ## Next challenge diff --git a/goals/set-up-pi.md b/goals/set-up-pi.md index 5ec5138..2d4e4fb 100644 --- a/goals/set-up-pi.md +++ b/goals/set-up-pi.md @@ -6,7 +6,7 @@ The goal here is to set up your Raspberry Pi ready to use as an IoT device. ## Raspberry Pi -![The Raspberry Pi logo](../images/raspberry-pi-logo.png) +![The Raspberry Pi logo](./media/raspberry-pi-logo.png) ## Flash an SD card @@ -20,7 +20,7 @@ You will need to install either Raspberry Pi OS (which contains a full desktop e To install Raspberry Pi OS on an SD Card, you will need to use the Raspberry Pi imager. You can download the imager from the [Raspberry Pi downloads page](https://www.raspberrypi.org/software/). -![The imageer choosing Raspberry Pi OS lite](../images/raspberry-pi-imager.png) +![The imageer choosing Raspberry Pi OS lite](./media/raspberry-pi-imager.png) Run the imager, select the Raspberry Pi OS Lite OS, and select your SD card. Don't select the write button yet! @@ -44,8 +44,8 @@ Once you have configured these options, write the image to the SD card. When the write has completed, insert the SD card into your Pi. -![The camera cable connected to the Pi](../images/pi-camera-socket-ribbon-cable.png) -![The camera cable connected to the Pi Camera module](../images/pi-camera-ribbon-cable.png) +![The camera cable connected to the Pi](./media/pi-camera-socket-ribbon-cable.png) +![The camera cable connected to the Pi Camera module](./media/pi-camera-ribbon-cable.png) If you are using a Raspberry Pi Camera module, insert the camera into the camera socket using the ribbon cable. You can find instructions on doing this in the [Raspberry Pi Getting started with the Camera Module documentation](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2). If you are using a USB web cam, connect it to one of the USB ports on the Pi. diff --git a/goals/train-model.md b/goals/train-model.md index 9d7cb34..6d4588d 100644 --- a/goals/train-model.md +++ b/goals/train-model.md @@ -10,11 +10,11 @@ Your team will use a cloud service that uses transfer learning to train an ML mo ## The Azure Service -[![The custom vision logo](../images/custom-vision-logo.png)](https://customvision.ai?WT.mc_id=academic-36256-jabenn) +[![The custom vision logo](./media/custom-vision-logo.png)](https://customvision.ai?WT.mc_id=academic-36256-jabenn) The transfer learning service to use is [Custom Vision](https://customvision.ai?WT.mc_id=academic-36256-jabenn). This is a service from Microsoft that can train image classifiers using only a small number of images for each tag. Once your model has been trained, it can be published to be run in the cloud, using one of the Custom Vision SDKs for programming languages such as Python, Java or C#, or via a REST API. You can also download your model and run it locally on an IoT device, a web page, or in an application. -![An american staffordshire terrier detected with an 89.5% probability](../images/custom-vision-detect-dog.png) +![An american staffordshire terrier detected with an 89.5% probability](./media/custom-vision-detect-dog.png) Image classifiers don't give a single fixed answer of the detected tag, instead they provide a list of all the tags that the model has been trained on with the probability that the image matches that tag. In the image above, the results show values against each tag: @@ -67,7 +67,7 @@ You can validate your model using a Python script inside this repo. 1. When prompted, enter the prediction key and the image file URL for your published model iteration. You can get these from the prediction API dialog from the **Prediction URL** button of the published iteration. You then need the *Image file* url and prediction key. - ![The prediction key and url dialog](../images/prediction-key-url.png) + ![The prediction key and url dialog](./media/prediction-key-url.png) This validation script will take the testing images, and test them against the model to ensure the correct tag is found as the most probable. You will see output like the following: @@ -100,7 +100,7 @@ Your team might find these resources helpful: ## Final result -![A published iteration of the model](../images/published-iteration.png) +![A published iteration of the model](./media/published-iteration.png) ## Next challenge diff --git a/media/app-flow.png b/media/app-flow.png new file mode 100644 index 0000000..2827caf Binary files /dev/null and b/media/app-flow.png differ diff --git a/media/app-icons.png b/media/app-icons.png new file mode 100644 index 0000000..7385e79 Binary files /dev/null and b/media/app-icons.png differ diff --git a/media/dog-pictures.png b/media/dog-pictures.png new file mode 100644 index 0000000..94094b4 Binary files /dev/null and b/media/dog-pictures.png differ diff --git a/media/iot-central-dashboard.png b/media/iot-central-dashboard.png new file mode 100644 index 0000000..7fdf5bc Binary files /dev/null and b/media/iot-central-dashboard.png differ diff --git a/media/mutt-matcher-device.png b/media/mutt-matcher-device.png new file mode 100644 index 0000000..9b0db90 Binary files /dev/null and b/media/mutt-matcher-device.png differ diff --git a/mkdocs.yml b/mkdocs.yml index 8a45ea3..38fec3e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -81,7 +81,7 @@ plugins: # Navigation nav: - - Overview: 'README.md' + - Overview: 'index.md' - 'Goals': - 'set-up-pi.md' - 'set-up-pc-mac.md'