Parmi l' ensemble d'exemples d'Azure sur GitHub , un très intéressant a été trouvé: la reconnaissance d'image sur le Raspberry Pi, hors ligne. Les auteurs proposent de préparer un modèle d'apprentissage automatique dans l'un des services cloud Azure, puis de le transférer sur un ordinateur qui n'a pas de connexion Internet la plupart du temps, après quoi la reconnaissance de formes fonctionnera hors ligne. Les développeurs ont préparé un projet pour deux plates-formes: ARM32 (Raspberry Pi lui-même) et AMD64 (mais sans prise en charge de la webcam).
À la suite du battage médiatique des coronavirus, nous avons décidé d'adapter l'exemple pour reconnaître si une personne porte un masque ou non. Il est immédiatement apparu que les étapes pour adapter l'exemple n'étaient pas tout à fait évidentes. Dans ce document, nous examinerons séquentiellement comment cet exemple, d'une part, peut être modifié pour fonctionner avec notre modèle d'apprentissage automatique, et d'autre part, il peut être transféré sur la plate-forme AMD64. Supposons que notre ordinateur, sur lequel tourne le modèle, contrôle le tourniquet: si une personne vient porter un masque, le tourniquet s'ouvre, sinon, il reste fermé.
C'est compliqué...
Presque tous les fournisseurs de cloud disposent d'un ensemble d'outils d'apprentissage automatique et les barrières à l'entrée sont souvent faibles.
Azure Computer Vision, , : API, . Azure Custom Vision, , . , . - , , .
, . , "" , :
- , - , ;
- ;
- .
, :
- ;
- , . , "" 100 ?
?
, " ", " ". — . , " ". , Azure Custom Vision, , , .
: Azure IoT Edge . , :
- ;
- — ;
- , .. , ;
Azure IoT Edge
IoT Edge . , IoT Edge — Linux, "" , , , Docker- . IoT Edge Azure IoT Hub. IoT Edge , , Azure, IoT Edge , .
"" IoT Edge Linux, 2019 IoT Edge Windows 10 Enterprise LTSC — .
IoT Edge , "" Azure:
- Azure Functions ( )
- Azure Stream Analytics ( )
- Azure Machine Learning ( "")
- Azure Custom Vision ( )
- Azure SQL Server ( "")
Custom Vision. "" .
IoT Edge . , (), Microsoft HTTP, .. web-, .
Microsoft
. , , .
-, USB , IoT Edge.
IoT Edge? , , IoT Hub, ( ) IoT Hub. "" .
IoT Hub. IoT Edge "" , . , Container Registry ( ).
, , :
- Camera: . "" ( ! ) HTTP ;
- AI: , . , , "" . Custom Vision;
- Display: , . , , , ( ).
, IoT Hub.
- , . , - Raspberry Pi , .
, . AMD64 , - - , , . , "" -, ARM32.
. AMD64 "" SenseHat, Raspberry Pi, , SenseHat, , - .
(Custom Vision)
Custom Vision ( Azure) New Project.
- Name — ;
- Description — ;
- Resource — Create new Cognitive Services;
- Classification Types — Multilabel, / , — ( " ")
- Domains — General (compact).
:
- , MaskOnFace;
- (" "), MaskNotOnFace — - , (, -, );
- , , (Negative).
.
Train, Advanced training , . Performace .
, , .
Probability Threshold — , . Probability Threshold = 90% , , 90%. , . , (/), "" " " "" "". , - " 89%". , "" "". Probability Threshold 90%, " 89%" "", " 91%" "".
- Recall () ;
- Precision () — .
— .
, .
(Publish), (Export — Dockerfile — Linux). IoT Edge.
- ( — ) AVX (, AVX , , grep avx /proc/cpuinfo) — tensorflow. AVX, , . . Intel NUC Core i5.
Ubuntu 20.04 LTS. , IoT Edge ( Microsoft?), .
, Edge. (~).
:
sudo apt-get update sudo apt-get install wget nano
:
wget https://packages.microsoft.com/config/ubuntu/20.04/prod.list mv prod.list microsoft-prod.list
sources.list.d, "" Microsoft:
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
Microsoft GPG:
wget https://packages.microsoft.com/keys/microsoft.asc cat microsoft.asc | gpg --dearmor > microsoft.gpg sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
( — , apt " "):
sudo apt-get update sudo apt-get install moby-engine
IoT Edge:
sudo apt-get install iotedge
, ( Ubuntu 20.04 — ), . Ubuntu (18.04 — , , ) (, , ). GitHub. Latest release dpkg. libssl :
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb wget https://github.com/Azure/azure-iotedge/releases/download/1.0.10.4/libiothsm-std_1.0.10.4-1_ubuntu16.04_amd64.deb sudo dpkg -i libiothsm-std_1.0.10.4-1_ubuntu16.04_amd64.deb wget https://github.com/Azure/azure-iotedge/releases/download/1.0.10.4/iotedge_1.0.10.4-1_ubuntu16.04_amd64.deb sudo dpkg -i iotedge_1.0.10.4-1_ubuntu16.04_amd64.deb
IoT Edge , Azure. , :
sudo nano /etc/iotedge/config.yaml
, Azure device_connection_string provisioning. , , IoT Edge Azure.
Azure
IoT Edge IoT Hub, Azure. — .
IoT Hub IoT Edge . , , :
- IoT Hub;
- IoT Edge;
- ;
IoT Edge IoT Hub, .
IoT Edge :
- . -, USB. HTTP;
- , ( / / ). HTTP, ;
- (-). -, .
:
, , .
! Windows 10, IoT Edge.
- Visual Studio Code. Visual Studio;
- Azure IoT Edge Extension. Select IoT Hub, IoT Hub;
- Azure IoT Tools;
- Python 3.8.3. Add Python to PATH — Task 4;
- , , , Hyper-V . — , OK ;
- Docker for Windows — Task 5;
- Git Windows .
! Docker : bcdedit /set {current} hypervisorlaunchtype Auto .
! Hyper-V VirtualBox. , VirtualBox, : bcdedit /set {current} hypervisorlaunchtype off, "" Hyper-V Docker.
, :
git clone https://github.com/Azure-Samples/Custom-vision-service-iot-edge-raspberry-pi.git
, :
git checkout 6b3540f9b31121321f9e75d8df0ed86397c9324f
Visual Studio Code (File — Open Folder) . , . , .
, , . , , , . , , .
. — . — , , .
, .
.env
() , Azure:
- CONTAINER_REGISTRY_ADDRESS="__.azurecr.io"
- CONTAINER_REGISTRY_USERNAME="_"
- CONTAINER_REGISTRY_PASSWORD=""
deployment.template.json
- modules — camera-capture — env — RESIZE_WIDTH — 640, RESIZE_HEIGHT — 480
- modules — camera-capture — settings — image — ${MODULES.CameraCapture.amd64}
- modules — sensehat-display — env — THRESHOLD — value — 0.9
- modules — sensehat-display — settings — image — ${MODULES.SenseHatDisplay.amd64}, createOptions — HostConfig "PortBindings": { "8000/tcp": [ { "HostPort": "8000" } ] }
- modules — image — settings — image — ${MODULES.ImageClassifierService.amd64}
deployment.template_AMD64
.
ameraCapture\amd64.Dockerfile
AMD64 -, , , . .
CameraCapture.py
( Raspberry Pi), , . time.sleep(1.0) 1.0 0.1.
ImageClassifierService\amd64.Dockerfile
AMD64. .
labels.txt
, . Custom Vision, :
MaskNotOnFace MaskOnFace
model.pb
Custom Vision — .
SenseHatDisplay\amd64.Dockerfile
, .
SenseHatDisplay — . AMD64 SenseHat , , , , SenseHat, , - Python, .
.
SenseHatDisplay\module.json
platform , amd64:
"amd64": "./amd64.Dockerfile",
SenseHatDisplay\app ()
, . -, .
- custom.js
- index.htm
- jquery.js
- style.css
- DisplayManager.py
- MessageParser.py
- "". , :
- : IoT Edge, http://127.0.0.1:5012;
- — http://127.0.0.1:8000/status.
, - — , . , , . http://127.0.0.1:8000.
.
- VS Code View — Command Pallette — Azure IoT Edge: Set Default Target Platform for IoT Edge Solution amd64;
- Azure IoT Edge: Build and Push IoT Edge Solution. , IoT Edge;
- IoT Edge, config/deployment.json Create Deployment for Single device, , ;
- ( -!). IoT Edge Extension Start Monitoring D2C Message, .
IoT Edge UI - http://localhost:8000, -, . , , .
— , .
, , MaskNotOnFace, , .
- ...
, , IoT Edge . ( , , , AVX / tensorflow ). IoT Edge . . , :
- : iotedge list. ( );
- : iotedge logs _. , .
, IoT Edge, , ( Azure), IoT Edge .
?
IoT Edge , .
, , IoT Edge, , , , , " " - SQL Edge, .
IoT Edge Azure, .
— , , — .
, Azure , , , .
Microsoft — .
.
— , . sergant (at) quarta.ru.