Oktatóanyag: Objektumészlelési modell betanítása az AutoML és a Python használatával
ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)
Ebben az oktatóanyagban megtudhatja, hogyan taníthat be objektumészlelési modellt az Azure Machine Learning automatizált ML használatával az Azure Machine Learning CLI v2-es bővítményével 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ók normalizálási/szabványosítási módszereinek, modelljeinek és hiperparaméter-beállításainak kombinációjával, hogy a legjobb modellt érje el.
Ebben az oktatóanyagban a Python SDK használatával írhat kódot, és megismerheti a következő feladatokat:
- 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 munkaterületre van szüksége. Ha nem rendelkezik ilyen erőforrással, végezze el a munkaterület létrehozásához szükséges erőforrások létrehozását, és tudjon meg többet a használatáról.
A Python 3.9 vagy 3.10 támogatott ehhez a funkcióhoz
Töltse le és bontsa ki a *odFridgeObjects.zip adatfájlt. Az adathalmaz Pascal VOC formátumban van jegyzetelve, ahol minden kép egy XML-fájlnak felel meg. Minden xml-fájl információt tartalmaz arról, hogy hol található a megfelelő képfájl, valamint információkat tartalmaz a határolókeretekről és az objektumfeliratokról. Az adatok használatához először a szükséges JSONL-formátumra kell konvertálnia azokat, ahogyan az a letöltött adatok konvertálása a jegyzetfüzet JSONL-szakaszában látható.
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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 parancssori felületet (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 parancssori felületet (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
Feljegyzé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, amelyet az automatizált ml-modell betanításához használ. 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 az ilyen típusú számítási cél 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ág előnyeit a modell hiperparamétereinek finomhangolá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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 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
Kísérlet használatával nyomon követheti a modell betanítási feladatait.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
A kísérlet neve a következő kulccsal adható meg experiment_name
:
experiment_name: dpv2-cli-automl-image-object-detection-experiment
Bemeneti adatok megjelenítése
Miután JSONL (JSON Lines) formátumban előkészítette a bemeneti képadatokat, 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 a következő 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 objektumké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.)
- Az életút nyomon követése
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 rendszerképek adategységként való feltölté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 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 való létrehozása MLTable
az alább látható módon. Az MLtable betanításhoz csomagolja az adatokat egy hasznosítható 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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 ml-feladatokat szeretne konfigurálni a rendszerképhez kapcsolódó feladatokhoz, hozzon létre egy feladatspecifikus AutoML-feladatot.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 megszüntetési szabályzatra nincs szükség. A rendszer automatikusan meghatározza a hiperparaméter területének 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ŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
limits:
max_trials: 10
max_concurrent_trials: 2
Ezután elküldheti a feladatot egy képmodell betanítása érdekében.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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étert az optimális modell megkeresése érdekében egy megadott keresési területen végezzen.
Ebben a példában betanítunk egy objektumészlelési modellt yolov5
fasterrcnn_resnet50_fpn
, és mindkettőt előre betanítjuk a COCO-ra, egy nagyméretű objektumészlelést, szegmentálást és feliratozási adatkészletet, 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 hiperparaméter-keresést hajthat végre egy meghatározott keresési területen.
A feladat korlátja
Az AutoML-rendszerkép betanítási feladatára fordított erőforrásokat úgy szabályozhatja, max_trials
hogy a korlátbeállításokban megadja a timeout_minutes
feladat és a max_concurrent_trials
feladat erőforrását. Tekintse meg a feladatkorlátok paramétereinek részletes leírását.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Az alábbi kód határozza meg a keresési területet az egyes definiált architektúrák hiperparaméteres takarításának előkészítése során, yolov5
és fasterrcnn_resnet50_fpn
. A keresési területen adja meg az AutoML értéktartományátlearning_rate
optimizer
lr_scheduler
, amelyből választani szeretne, amikor az optimális elsődleges metrikával rendelkező modellt próbál létrehozni. Ha a hiperparaméter-értékek nincsenek megadva, akkor a rendszer az egyes architektúrákhoz alapértelmezett értékeket használ.
A hangolási beállításokhoz szúrópróbaszerű mintavételezéssel válasszon mintákat ebből a paramétertérből a random
sampling_algorithm használatával. A fent konfigurált feladatkorlátok azt jelzik, hogy az automatizált gépi tanulás összesen 10 próbaverziót próbál ki ezekkel a különböző mintákkal, és egyszerre két próbaverziót futtat a számítási célon, amelyet négy csomópont használatával á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óbaidőszak 20%-os tartalékideje alatt vannak, ami jelentősen megtakarítja a számítási erőforrásokat.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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]
Miután definiálta a keresési területet és a takarítási beállításokat, elküldheti a feladatot egy képmodell betanításához a betanítási adatkészlet használatával.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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]
Hiperparaméteres takarítás esetén hasznos lehet a HyperDrive felhasználói felületén kipróbált különböző kísérletek megjelenítése. Ehhez a felhasználói felülethez a fő automl_image_job felhasználói felületén található "Gyermekfeladatok" lapra lépve navigálhat felülről, amely a HyperDrive szülőfeladata. Ezután a gyermekfeladatok lapfülre léphet.
Az alábbiakban közvetlenül a HyperDrive szülőfeladatát láthatja, és a Gyermekfeladatok lapra navigálhat:
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
CLI example not available, please use Python SDK.
Modell regisztrálása és üzembe helyezése
Miután a feladat befejeződött, regisztrálhatja a legjobb próbaverzióból létrehozott modellt (olyan konfigurációt, amely a legjobb elsődleges metrikát eredményezte). A modellt a letöltés után is regisztrálhatja, vagy megadhatja a azureml
megfelelő jobid
elérési utat.
A legjobb próbaverzió lekérése
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
CLI example not available, please use Python SDK.
Regisztrálja a modellt
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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 , a deploy-managed-online-endpoint használatával.
Online végpont konfigurálása
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
A végpont létrehozása
A MLClient
korábban létrehozottak használatával 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ő választ ad vissza, amíg a végpont létrehozása folytatódik.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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övetkezéséhez egy adott időszakban. Tekintse meg az objektumészlelési kötegpontozási jegyzetfüzetet 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 tényleges következtetést okozó modell üzemeltetéséhez szükséges erőforrások készlete. Az osztály használatával létrehozunk egy üzembe helyezést a ManagedOnlineDeployment
végponthoz. Az üzembehelyezési fürthöz GPU-t vagy CPU-beli virtuálisgép-termékváltozatokat is használhat.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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
A MLClient
korábban létrehozottak használatával 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, amíg a telepítés létrehozása folytatódik.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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 forgalommal rendelkezzen. Az egy végponttal rendelkező üzemelő példányok forgalmi százalékának összege nem haladhatja meg a 100%-ot.
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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ŐRE VONATKOZIK: Azure CLI ml-bővítmény v2 (aktuális)
CLI example not available, please use Python SDK.
Észlelések vizualizációja
Most, hogy elért 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ŐRE VONATKOZIK: Azure CLI ml-bővítmény 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óanyagokat szeretne futtatni.
Ha nem tervezi használni a létrehozott erőforrásokat, törölje őket, így nem kell 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.
- Adja meg 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éteres 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.
Megtudhatja, hogyan állíthatja be az AutoML-t a számítógépes látásmodellek Pythonnal való betanítása érdekében.
Megtudhatja, hogyan konfigurálhat növekményes betanítást számítógépes látásmodelleken.
Tekintse meg , milyen hiperparaméterek érhetők el a számítógépes látási feladatokhoz.
Példakódok:
A KÖVETKEZŐRE VONATKOZIK: Azure CLI ml-bővítmény 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ák "cli-automl-image-" előtagját a számítógépes látásmodellek készítésére vonatkozó mintákhoz.
Feljegyzés
A hűtőobjektum-adatkészlet használata az MIT-licenc alatt található licencen keresztül érhető el.