This commit is contained in:
Jim Bennett 2021-10-21 15:00:12 -07:00
Родитель 6625d22537
Коммит ccae3d89c5
26 изменённых файлов: 21 добавлений и 18 удалений

Просмотреть файл

@ -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. 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. 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. 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 ## Prerequisites
@ -58,7 +58,7 @@ If you get stuck, you can always ask a mentor for additional help.
## Exploring the application ## 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: 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 - 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: When a dog breed needs to be detected:

3
goals/index.md Normal file
Просмотреть файл

@ -0,0 +1,3 @@
{%
include-markdown "../README.md"
%}

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 60 KiB

После

Ширина:  |  Высота:  |  Размер: 60 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 32 KiB

После

Ширина:  |  Высота:  |  Размер: 32 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 7.8 KiB

После

Ширина:  |  Высота:  |  Размер: 7.8 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 445 KiB

После

Ширина:  |  Высота:  |  Размер: 445 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 12 KiB

После

Ширина:  |  Высота:  |  Размер: 12 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 608 KiB

После

Ширина:  |  Высота:  |  Размер: 608 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 79 KiB

После

Ширина:  |  Высота:  |  Размер: 79 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 61 KiB

После

Ширина:  |  Высота:  |  Размер: 61 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 387 KiB

После

Ширина:  |  Высота:  |  Размер: 387 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 297 KiB

После

Ширина:  |  Высота:  |  Размер: 297 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 402 KiB

После

Ширина:  |  Высота:  |  Размер: 402 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 63 KiB

После

Ширина:  |  Высота:  |  Размер: 63 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 147 KiB

После

Ширина:  |  Высота:  |  Размер: 147 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 226 KiB

После

Ширина:  |  Высота:  |  Размер: 226 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 26 KiB

После

Ширина:  |  Высота:  |  Размер: 26 KiB

Просмотреть файл

@ -6,13 +6,13 @@ The goal of this section is to deploy an IoT Central application, and define a d
## The Azure Service ## 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. 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. 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. 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 ## 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 ## Next challenge

Просмотреть файл

@ -6,7 +6,7 @@ The goal here is to set up your Raspberry Pi ready to use as an IoT device.
## Raspberry Pi ## Raspberry Pi
![The Raspberry Pi logo](../images/raspberry-pi-logo.png) ![The Raspberry Pi logo](./media/raspberry-pi-logo.png)
## Flash an SD card ## 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/). 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! 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. 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](./media/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 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. 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.

Просмотреть файл

@ -10,11 +10,11 @@ Your team will use a cloud service that uses transfer learning to train an ML mo
## The Azure Service ## 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. 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: 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. 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: 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 ## Final result
![A published iteration of the model](../images/published-iteration.png) ![A published iteration of the model](./media/published-iteration.png)
## Next challenge ## Next challenge

Двоичные данные
media/app-flow.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 60 KiB

Двоичные данные
media/app-icons.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 32 KiB

Двоичные данные
media/dog-pictures.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 608 KiB

Двоичные данные
media/iot-central-dashboard.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 79 KiB

Двоичные данные
media/mutt-matcher-device.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 387 KiB

Просмотреть файл

@ -81,7 +81,7 @@ plugins:
# Navigation # Navigation
nav: nav:
- Overview: 'README.md' - Overview: 'index.md'
- 'Goals': - 'Goals':
- 'set-up-pi.md' - 'set-up-pi.md'
- 'set-up-pc-mac.md' - 'set-up-pc-mac.md'