Oktatóanyag: Objektumészlelési modell betanítása az AutoML és a Python használatával
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Ebből az oktatóanyagból megtudhatja, hogyan taníthat be objektumészlelési modellt az Azure Machine Learning automatizált gépi tanulással a v2-es Azure Machine Learning CLI-bővítménnyel vagy az Azure Machine Learning Python SDK v2-vel. Ez az objektumészlelési modell azonosítja, hogy a kép tartalmaz-e objektumokat, például dobozt, dobozt, tejes palackot vagy vízpalackot.
Az automatizált gépi tanulás elfogadja a betanítási adatokat és a konfigurációs beállításokat, és automatikusan iterálja a különböző funkció normalizálási/szabványosítási módszerek, modellek és hiperparaméter-beállítások kombinációit a legjobb modell eléréséhez.
Ebben az oktatóanyagban a Python SDK használatával írhat kódot, és a következő feladatokat sajátíthatja el:
- Adatok letöltése és átalakítása
- Automatizált gépi tanulási objektumészlelési modell betanítása
- Hiperparaméter-értékek megadása a modellhez
- Hiperparaméter-takarítás végrehajtása
- A modell üzembe helyezése
- Észlelések vizualizációja
Előfeltételek
-
Az Azure Machine Learning használatához először egy munkaterületre lesz szüksége. Ha nincs ilyenje, végezze el az Erőforrások létrehozása című témakört, amely a munkaterület létrehozásának megkezdéséhez szükséges , és többet is megtudhat a használatáról.
A Python 3.6 vagy 3.7 támogatott ehhez a funkcióhoz
Töltse le és csomagolja ki a *odFridgeObjects.zip adatfájlt. Az adatkészlet Pascal VOC formátumban van jegyzetelve, ahol minden kép egy XML-fájlnak felel meg. Minden xml-fájl információkat tartalmaz arról, hogy a megfelelő képfájl hol található, valamint információkat tartalmaz a határolókeretekről és az objektumcímkékről. Az adatok használatához először a szükséges JSONL-formátumra kell konvertálnia azokat a jegyzetfüzet Letöltött adatok konvertálása JSONL-be című szakaszában leírtak szerint.
Számítási példány használatával további telepítés nélkül követheti ezt az oktatóanyagot. (Tekintse meg, hogyan hozhat létre számítási példányt.) Vagy telepítse a CLI/SDK-t a saját helyi környezetének használatához.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Ez az oktatóanyag a GitHub azureml-examples adattárában is elérhető. Ha saját helyi környezetben szeretné futtatni:
- Telepítse és állítsa be a CLI-t (v2), és győződjön meg arról, hogy telepíti a bővítményt
ml
.
- Telepítse és állítsa be a CLI-t (v2), és győződjön meg arról, hogy telepíti a bővítményt
Számítási cél beállítása
Megjegyzés
A kiszolgáló nélküli számítás (előzetes verzió) kipróbálásához hagyja ki ezt a lépést, és folytassa a Kísérlet beállítással.
Először be kell állítania egy számítási célt az automatizált gépi tanulási modell betanításához. A rendszerkép-feladatok automatizált gépi tanulási modelljei GPU-termékváltozatokat igényelnek.
Ez az oktatóanyag az NCsv3 sorozatot használja (V100 GPU-kkal), mivel ez a számítási céltípus több GPU-t használ a betanítás felgyorsításához. Emellett több csomópontot is beállíthat, hogy kihasználhassa a párhuzamosságot a hiperparaméterek modellhez való hangolása során.
Az alábbi kód egy gpu-számítást Standard_NC24s_v3
hoz létre négy csomóponttal.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Hozzon létre egy .yml-fájlt az alábbi konfigurációval.
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: gpu-cluster
type: amlcompute
size: Standard_NC24s_v3
min_instances: 0
max_instances: 4
idle_time_before_scale_down: 120
A számítás létrehozásához futtassa a következő CLI v2 parancsot a .yml fájl elérési útjával, a munkaterület nevével, az erőforráscsoporttal és az előfizetés azonosítójával.
az ml compute create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Kísérlet beállítása
A kísérlet segítségével nyomon követheti a modell betanítási feladatait.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
A kísérlet neve a következő kulcs használatával experiment_name
adható meg:
experiment_name: dpv2-cli-automl-image-object-detection-experiment
Bemeneti adatok vizualizációja
Miután elkészítette a bemeneti képadatokat JSONL (JSON Lines) formátumban, megjelenítheti a kép alapigazság-határoló mezőinek megjelenítését. Ehhez győződjön meg arról, hogy telepítve van matplotlib
.
%pip install --upgrade matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib.patches as patches
from PIL import Image as pil_image
import numpy as np
import json
import os
def plot_ground_truth_boxes(image_file, ground_truth_boxes):
# Display the image
plt.figure()
img_np = mpimg.imread(image_file)
img = pil_image.fromarray(img_np.astype("uint8"), "RGB")
img_w, img_h = img.size
fig,ax = plt.subplots(figsize=(12, 16))
ax.imshow(img_np)
ax.axis("off")
label_to_color_mapping = {}
for gt in ground_truth_boxes:
label = gt["label"]
xmin, ymin, xmax, ymax = gt["topX"], gt["topY"], gt["bottomX"], gt["bottomY"]
topleft_x, topleft_y = img_w * xmin, img_h * ymin
width, height = img_w * (xmax - xmin), img_h * (ymax - ymin)
if label in label_to_color_mapping:
color = label_to_color_mapping[label]
else:
# Generate a random color. If you want to use a specific color, you can use something like "red".
color = np.random.rand(3)
label_to_color_mapping[label] = color
# Display bounding box
rect = patches.Rectangle((topleft_x, topleft_y), width, height,
linewidth=2, edgecolor=color, facecolor="none")
ax.add_patch(rect)
# Display label
ax.text(topleft_x, topleft_y - 10, label, color=color, fontsize=20)
plt.show()
def plot_ground_truth_boxes_jsonl(image_file, jsonl_file):
image_base_name = os.path.basename(image_file)
ground_truth_data_found = False
with open(jsonl_file) as fp:
for line in fp.readlines():
line_json = json.loads(line)
filename = line_json["image_url"]
if image_base_name in filename:
ground_truth_data_found = True
plot_ground_truth_boxes(image_file, line_json["label"])
break
if not ground_truth_data_found:
print("Unable to find ground truth information for image: {}".format(image_file))
A fenti segédfüggvények használatával bármely képhez futtathatja az alábbi kódot a határolókeretek megjelenítéséhez.
image_file = "./odFridgeObjects/images/31.jpg"
jsonl_file = "./odFridgeObjects/train_annotations.jsonl"
plot_ground_truth_boxes_jsonl(image_file, jsonl_file)
Adatok feltöltése és MLTable létrehozása
Az adatok betanításhoz való használatához töltse fel az adatokat az Azure Machine Learning-munkaterület alapértelmezett Blob Storage-ba, és regisztrálja azt eszközként. Az adatok regisztrálásának előnyei a következők:
- Egyszerűen megosztható a csapat többi tagjával
- A metaadatok verziószámozása (hely, leírás stb.)
- Életút nyomon követése
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Hozzon létre egy .yml-fájlt az alábbi konfigurációval.
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: ./data/odFridgeObjects
type: uri_folder
A képek adategységként való feltöltéséhez futtassa a következő CLI v2 parancsot az .yml fájl elérési útjával, a munkaterület nevével, az erőforráscsoporttal és az előfizetés-azonosítóval.
az ml data create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
A következő lépés az adatok jsonl formátumban történő létrehozása MLTable
az alább látható módon. Az MLtable betanításhoz csomagolja az adatokat egy használható objektumba.
paths:
- file: ./train_annotations.jsonl
transformations:
- read_json_lines:
encoding: utf8
invalid_lines: error
include_path_column: false
- convert_column_types:
- columns: image_url
column_type: stream_info
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Az alábbi konfiguráció betanítási és érvényesítési adatokat hoz létre az MLTable-ból.
target_column_name: label
training_data:
path: data/training-mltable-folder
type: mltable
validation_data:
path: data/validation-mltable-folder
type: mltable
Az objektumészlelési kísérlet konfigurálása
Ha automatikus gépi tanulási feladatokat szeretne konfigurálni a rendszerképhez kapcsolódó feladatokhoz, hozzon létre egy feladatspecifikus AutoML-feladatot.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
A kiszolgáló nélküli számítás (előzetes verzió) használatához cserélje le a sort
compute: azureml:gpu-cluster
a következő kódra:resources: instance_type: Standard_NC24s_v3 instance_count: 4
task: image_object_detection
primary_metric: mean_average_precision
compute: azureml:gpu-cluster
Automatikus hiperparaméter-takarítás képfeladatokhoz (AutoMode)
Fontos
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.
Az AutoML-feladatban automatikus hiperparaméter-takarítást végezhet az optimális modell megtalálásához (ezt a funkciót AutoMode-nak nevezzük). Csak a próbaverziók számát adja meg; a hiperparaméteres keresési területre, a mintavételezési módszerre és a korai megszakítási szabályzatra nincs szükség. A rendszer automatikusan meghatározza a hiperparaméter-terület régióját a kísérletek száma alapján. A 10 és 20 közötti értékek valószínűleg sok adathalmazon jól működnek.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
limits:
max_trials: 10
max_concurrent_trials: 2
Ezután elküldheti a feladatot egy képmodell betanítása gombra.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Az AutoML-feladat elküldéséhez futtassa a következő CLI v2 parancsot a .yml fájl elérési útjával, a munkaterület nevével, az erőforráscsoporttal és az előfizetés azonosítójával.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Manuális hiperparaméter-takarítás képfeladatokhoz
Az AutoML-feladatban paraméterrel model_name
adhatja meg a modellarchitektúrákat, és konfigurálhatja a beállításokat úgy, hogy egy hiperparaméter-átsöprést hajtanak végre egy meghatározott keresési területen az optimális modell megtalálásához.
Ebben a példában betanítunk egy objektumészlelési modellt yolov5
a és fasterrcnn_resnet50_fpn
a használatával, amelyek mindegyike előre be van tanítva a COCO-ra, egy nagyméretű objektumészlelési, szegmentálási és feliratozási adatkészlettel, amely több mint ezer címkézett képet tartalmaz több mint 80 címkekategóriával.
Az optimális modell megkereséséhez hyperparaméter-átsöprést végezhet egy meghatározott keresési területen.
A feladat korlátja
Az AutoML-rendszerkép betanítási timeout_minutes
feladatára fordított erőforrásokat a korlátbeállításokban a , max_trials
és a max_concurrent_trials
feladat értékének megadásával szabályozhatja. Tekintse meg a feladatkorlátok paramétereinek részletes leírását.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Az alábbi kód határozza meg az egyes definiált architektúrák hiperparaméter-söpredékének előkészítéséhez szükséges keresési területet, yolov5
valamint fasterrcnn_resnet50_fpn
a következőt: . A keresési területen adja meg a , optimizer
, lr_scheduler
stb. értéktartományát learning_rate
az AutoML-hez, amely közül választhat, amikor az optimális elsődleges metrikával rendelkező modellt próbál létrehozni. Ha a hiperparaméter-értékek nincsenek megadva, akkor az egyes architektúrákhoz az alapértelmezett értékeket használja a rendszer.
A hangolási beállításokhoz véletlenszerű mintavételezéssel válasszon mintákat ebből a paraméterterületből a random
sampling_algorithm használatával. A fent konfigurált feladatkorlátok arra utasítják az automatizált gépi tanulást, hogy összesen 10 próbaverziót próbáljanak ki ezekkel a különböző mintákkal, és egyszerre két próbaverziót futtasson a számítási célon, amelyet négy csomóponttal állítottunk be. Minél több paraméterrel rendelkezik a keresési terület, annál több próbaidőszakra van szükség az optimális modellek megtalálásához.
A Bandit korai felmondási szabályzata is használatos. Ez a szabályzat leállítja a gyenge teljesítményt nyújtó próbaverziókat; vagyis azok a próbaverziók, amelyek nem a legjobban teljesítő próbaverzió 20%-os tartalékidőn belül vannak, ami jelentősen megtakarítja a számítási erőforrásokat.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
sweep:
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
search_space:
- model_name:
type: choice
values: [yolov5]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.01
model_size:
type: choice
values: [small, medium]
- model_name:
type: choice
values: [fasterrcnn_resnet50_fpn]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.001
optimizer:
type: choice
values: [sgd, adam, adamw]
min_size:
type: choice
values: [600, 800]
A keresési terület és a takarítási beállítások megadása után elküldheti a feladatot, hogy betanítson egy képmodellt a betanítási adathalmaz használatával.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
Az AutoML-feladat elküldéséhez futtassa a következő CLI v2 parancsot a .yml fájl elérési útjával, a munkaterület nevével, az erőforráscsoporttal és az előfizetés azonosítójával.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
A hiperparaméterek átvizsgálásakor hasznos lehet megjeleníteni a HyperDrive felhasználói felületén kipróbált különböző kísérleteket. Ehhez a felhasználói felülethez a fenti fő automl_image_job , a HyperDrive szülőfeladatának felhasználói felületén található "Gyermekfeladatok" lapra léphet. Ezután ennek a Gyermekfeladatok lapjára léphet.
Másik lehetőségként az alábbiakban közvetlenül láthatja a HyperDrive szülőfeladatot, és a Gyermekfeladatok lapra navigálhat:
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
CLI example not available, please use Python SDK.
Modell regisztrálása és üzembe helyezése
A feladat befejezése után regisztrálhatja a legjobb próbaverzióból létrehozott modellt (a konfiguráció a legjobb elsődleges metrikát eredményezte). A modellt a letöltés után regisztrálhatja, vagy a megfelelő jobid
elérési út megadásávalazureml
.
A legjobb próbaverzió beszerzése
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
CLI example not available, please use Python SDK.
A modell regisztrálása
Regisztrálja a modellt az elérési út vagy a azureml
helyileg letöltött elérési út használatával.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
az ml model create --name od-fridge-items-mlflow-model --version 1 --path azureml://jobs/$best_run/outputs/artifacts/outputs/mlflow-model/ --type mlflow_model --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
A használni kívánt modell regisztrálása után üzembe helyezheti azt a felügyelt online végponttal deploy-managed-online-endpoint
Online végpont konfigurálása
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
Végpont létrehozása
MLClient
A korábban létrehozott paranccsal most létrehozzuk a végpontot a munkaterületen. Ez a parancs elindítja a végpont létrehozását, és megerősítési választ ad vissza, amíg a végpont létrehozása folytatódik.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
az ml online-endpoint create --file .\create_endpoint.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Kötegvégpontot is létrehozhatunk nagy mennyiségű adat kötegkövetkeztetéshez egy adott időszakban. Tekintse meg az objektumészlelési köteg pontozási jegyzetfüzetét a kötegvégpont használatával történő kötegelt következtetéshez.
Online üzemelő példány konfigurálása
Az üzembe helyezés a modell üzemeltetéséhez szükséges erőforrások készlete, amely elvégzi a tényleges következtetést. A osztály használatával létrehozunk egy üzembe helyezést a ManagedOnlineDeployment
végponthoz. Az üzembehelyezési fürthöz GPU- vagy CPU-alapú virtuálisgép-termékváltozatokat is használhat.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
name: od-fridge-items-mlflow-deploy
endpoint_name: od-fridge-items-endpoint
model: azureml:od-fridge-items-mlflow-model@latest
instance_type: Standard_DS3_v2
instance_count: 1
liveness_probe:
failure_threshold: 30
success_threshold: 1
timeout: 2
period: 10
initial_delay: 2000
readiness_probe:
failure_threshold: 10
success_threshold: 1
timeout: 10
period: 10
initial_delay: 2000
Az üzembe helyezés létrehozása
MLClient
A korábban létrehozott paranccsal létrehozzuk az üzembe helyezést a munkaterületen. Ez a parancs elindítja az üzembe helyezés létrehozását, és megerősítést kérő választ ad vissza, miközben az üzembe helyezés létrehozása folytatódik.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
az ml online-deployment create --file .\create_deployment.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Forgalom frissítése:
Alapértelmezés szerint az aktuális üzemelő példány 0%-os forgalmat fogad. Beállíthatja, hogy az aktuális üzemelő példány hány százalékos forgalmat kapjon. Az egy végponttal rendelkező üzemelő példányok forgalmi százalékos aránya nem haladhatja meg a 100%-ot.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
az ml online-endpoint update --name 'od-fridge-items-endpoint' --traffic 'od-fridge-items-mlflow-deploy=100' --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Az üzemelő példány tesztelése
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
CLI example not available, please use Python SDK.
Észlelések vizualizációja
Most, hogy pontozott egy tesztképet, megjelenítheti a kép határolókeretét. Ehhez győződjön meg arról, hogy telepítve van a matplotlib.
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
CLI example not available, please use Python SDK.
Az erőforrások eltávolítása
Ne fejezze be ezt a szakaszt, ha más Azure Machine Learning-oktatóanyagok futtatását tervezi.
Ha nem tervezi használni a létrehozott erőforrásokat, törölje őket, így nem kell díjat fizetnie.
- Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal szélen.
- Válassza ki a listában az Ön által létrehozott erőforráscsoportot.
- Válassza az Erőforráscsoport törlése elemet.
- Írja be az erőforráscsoport nevét. Ezután válassza a Törlés elemet.
Megtarthatja az erőforráscsoportot is, de egyetlen munkaterületet törölhet. Jelenítse meg a munkaterület tulajdonságait, és válassza a Törlés lehetőséget.
Következő lépések
Ebben az automatizált gépi tanulási oktatóanyagban a következő feladatokat végezte el:
- Konfigurált egy munkaterületet, és előkészítette az adatokat egy kísérlethez.
- Automatizált objektumészlelési modell betanítása
- Megadott hiperparaméter-értékek a modellhez
- Hiperparaméter-takarítást hajtott végre
- A modell üzembe helyezése
- Vizualizációs észlelések
További információ a számítógépes látásról az automatizált gépi tanulásban.
Ismerje meg, hogyan konfigurálhatja a növekményes betanítást a számítógépes látási modelleken.
Tekintse meg , hogy milyen hiperparaméterek érhetők el a számítógépes látási feladatokhoz.
Példakódok:
A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)
- Tekintse át a részletes kódpéldákat és használati eseteket az azureml-examples adattárban automatizált gépi tanulási mintákhoz. Ellenőrizze a mappákat a "cli-automl-image-" előtaggal a számítógépes látási modellek készítésére vonatkozó mintákhoz.
Megjegyzés
A hűtőobjektum-adatkészlet használata az MIT-licenc alatt található licencen keresztül érhető el.