Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 (aktuální)
Python SDK azure-ai-ml v2 (aktuální)
V tomto kurzu se naučíte trénovat model rozpoznávání objektů pomocí automatizovaného strojového učení Azure Machine Learning s rozšířením Azure Machine Learning CLI v2 nebo sadou Azure Machine Learning Python SDK v2. Tento model rozpoznávání objektů identifikuje, zda obrázek obsahuje objekty, jako je plechovky, krabička, láhev mléka nebo láhev vody.
Automatizované strojové učení přijímá trénovací data a nastavení konfigurace a automaticky iteruje kombinací různých metod normalizace a standardizace funkcí, modelů a nastavení hyperparametrů, aby bylo dosaženo nejlepšího modelu.
V tomto kurzu napíšete kód pomocí sady Python SDK a naučíte se následující úlohy:
- Stažení a transformace dat
- Trénování modelu automatizovaného rozpoznávání objektů strojového učení
- Zadání hodnot hyperparametrů pro váš model
- Proveď průchod hyperparametrů
- Nasadit váš model
- Vizualizace detekcí
Požadavky
-
Pokud chcete používat Azure Machine Learning, potřebujete pracovní prostor. Pokud ho nemáte, dokončete vytváření prostředků, které potřebujete, abyste mohli začít vytvářet pracovní prostor a získat další informace o jeho používání.
Důležité
Pokud je váš pracovní prostor Azure Machine Learning nakonfigurovaný se spravovanou virtuální sítí, možná budete muset přidat odchozí pravidla, která povolí přístup k veřejným úložištím balíčků Pythonu. Další informace najdete v tématu Scénář: Přístup k veřejným balíčkům strojového učení.
Použijte Python 3.10 nebo novější.
Datová
odFridgeObjectssada je opatřena poznámkami ve formátu Pascal VOC, kde každý obrázek odpovídá souboru XML. Každý soubor XML obsahuje informace o tom, kde se nachází odpovídající soubor obrázku, a obsahuje také informace o ohraničujících polích a popiscích objektů. Pokud chcete tato data použít, musíte je nejprve převést do požadovaného formátu JSONL, jak je znázorněno v části Převést stažená data do formátu JSONL v souboru automl-image-object-detection-task-fridge-items.ipynb.K dokončení tohoto kurzu bez další instalace použijte výpočetní instanci. (Viz Vytvoření výpočetní instance.) Nebo nainstalujte rozhraní příkazového řádku nebo sadu SDK, abyste mohli používat vlastní místní prostředí.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)Tento kurz je také k dispozici v úložišti azureml-examples na GitHubu. Pokud ho chcete spustit v místním prostředí, nainstalujte a nastavte rozhraní příkazového řádku (v2) a ujistěte se, že jste rozšíření nainstalovali
ml.
Nastavení cílového výpočetního objektu
Poznámka:
Pokud chcete vyzkoušet bezserverové výpočetní prostředky, přeskočte tento krok a přejděte do nastavení experimentu.
Nejdřív musíte nastavit cílový výpočetní objekt, který se použije pro trénování automatizovaného modelu ML. Modely automatizovaného strojového učení pro obrazové úlohy vyžadují verze GPU.
V tomto kurzu se používá řada NCsv3 (s grafickými procesory V100), protože tento typ cílového výpočetního objektu používá k urychlení trénování více GPU. Kromě toho můžete nastavit více uzlů, abyste při ladění hyperparametrů pro váš model využili paralelismu.
Následující kód vytvoří GPU instanci typu Standard_NC64as_T4_v3 se čtyřmi uzly.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Vytvořte soubor .yml s následující konfigurací.
$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json
name: gpu-cluster
type: amlcompute
size: Standard_NC64as_T4_v3
min_instances: 0
max_instances: 4
idle_time_before_scale_down: 120
Pokud chcete vytvořit výpočetní prostředky, spusťte následující příkaz CLI v2 s cestou k souboru .yml, názvu pracovního prostoru, skupině prostředků a ID předplatného.
az ml compute create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Nastavení experimentu
Experiment můžete použít ke sledování trénovacích úloh modelu.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Název experimentu experiment_name můžete zadat pomocí klíče:
experiment_name: dpv2-cli-automl-image-object-detection-experiment
Vizualizace vstupních dat
Poté, co budete mít vstupní data obrázků připravená ve formátu JSONL (řádky JSON), můžete vizualizovat referenční rámečky ohraničující objekty na obrázku. Pokud to chcete udělat, ujistěte se, že jste nainstalovali 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))
Pomocí předchozích pomocných funkcí můžete pro každý daný obrázek spustit následující kód, který zobrazí ohraničující rámečky.
image_file = "./odFridgeObjects/images/31.jpg"
jsonl_file = "./odFridgeObjects/train_annotations.jsonl"
plot_ground_truth_boxes_jsonl(image_file, jsonl_file)
Nahrání dat a vytvoření tabulky MLTable
Pokud chcete data použít k trénování, nahrajte je do výchozího úložiště objektů blob pracovního prostoru Azure Machine Learning a zaregistrujte je jako prostředek. Mezi výhody registrace dat patří:
- Snadné sdílení s ostatními členy týmu.
- Správa verzí metadat (umístění, popis atd.)
- Sledování rodokmenu.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Vytvořte soubor .yml s následující konfigurací.
$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
Pokud chcete nahrát obrázky jako datový prostředek, spusťte následující příkaz CLI v2 s cestou k souboru .yml, názvu pracovního prostoru, skupině prostředků a ID předplatného.
az ml data create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Dalším krokem je vytvoření tabulky MLTable z dat ve formátu JSONL, jak je znázorněno v následujícím příkladu. MlTable zabalí vaše data do spotřebního objektu pro trénování.
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
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Následující konfigurace vytváří data pro trénink a validaci z MLTable.
target_column_name: label
training_data:
path: data/training-mltable-folder
type: mltable
validation_data:
path: data/validation-mltable-folder
type: mltable
Konfigurace experimentu detekce objektů
Pokud chcete nakonfigurovat automatizované úlohy ML pro úlohy související s imagemi, vytvořte úlohu AutoML specifickou pro konkrétní úkol.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Poznámka:
Pokud chcete používat bezserverové výpočetní prostředky, nahraďte řádek compute: azureml:gpu-cluster tímto kódem:
resources:
instance_type: Standard_NC64as_T4_v3
instance_count: 4
task: image_object_detection
primary_metric: mean_average_precision
compute: azureml:gpu-cluster
Automatické sweepování hyperparametrů pro obrazové úlohy (AutoMode)
V úloze AutoML můžete provést automatické úklidy hyperparametrů, abyste našli optimální model. (Tato funkce se nazývá AutoMode). Určíte pouze počet pokusů. Prostor pro vyhledávání hyperparametrů, metodu vzorkování a zásady předčasného ukončení nejsou potřeba. Systém automaticky určí oblast prostoru hyperparametrů pro prohledání na základě počtu experimentů. Hodnota mezi 10 a 20 bude pravděpodobně dobře fungovat u mnoha datových sad.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
limits:
max_trials: 10
max_concurrent_trials: 2
Poté můžete odeslat úlohu pro trénování obrázkového modelu.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Pokud chcete odeslat úlohu AutoML, spusťte následující příkaz CLI v2 s cestou k souboru .yml, názvu pracovního prostoru, skupině prostředků a ID předplatného.
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]
Ruční ladění hyperparametrů pro úlohy s obrázky
V úloze AutoML můžete určit architektury modelu pomocí parametru model_name a nakonfigurovat nastavení pro provedení úklidu hyperparametrů přes definovaný vyhledávací prostor, abyste našli optimální model.
V tomto příkladu vytrénujete model detekce objektů pomocí FPN YOLOv5 a FasterRCNN ResNet50, z nichž oba jsou předem natrénované v COCO, rozsáhlé detekci objektů, segmentaci a datové sadě titulků, která obsahuje tisíce označených obrázků s více než 80 kategoriemi popisků.
Pokud chcete najít optimální model, můžete provést úklid hyperparametrů nad definovaným vyhledávacím prostorem.
Limity úloh
Prostředky vynaložené na trénovací úlohu image AutoML můžete řídit zadáním parametru timeout_minutes, max_trialsa max_concurrent_trials pro úlohu v nastavení limitu. Další informace najdete v popisu parametrů limitů úloh.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Následující kód definuje prostor pro vyhledávání při přípravě na sweep hyperparametrů pro každou definovanou architekturu, YOLOv5 a FasterRCNN ResNet50 FPN. Do vyhledávacího prostoru zadejte rozsah hodnot pro learning_rate, optimizerlr_schedulera tak dále, aby AutoML zvolil při pokusu o vygenerování modelu s optimální primární metrikou. Pokud nejsou zadané hodnoty hyperparametrů, použijí se výchozí hodnoty pro každou architekturu.
Pro nastavení ladění použijte náhodné vzorkování k výběru vzorků z tohoto prostoru parametrů pomocí random algoritmu vzorkování. Limity úloh zadané v předchozím kódu konfigurují automatizované strojové učení tak, aby vyzkoušely celkem 10 zkušebních verzí s těmito různými ukázkami, přičemž na cílovém výpočetním objektu byly spuštěny dvě zkušební verze najednou, což je nastavené pomocí čtyř uzlů. Čím více parametrů má vyhledávací prostor, tím více pokusů potřebujete k nalezení optimálních modelů.
Používá se také politika předčasného ukončení Bandit. Tato zásada ukončí špatně prováděné pokusy. To znamená, že pokusy, které nejsou v rámci 20% tolerance od nejlepšího výkonného pokusu. Toto ukončení výrazně šetří výpočetní prostředky.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
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]
Jakmile definujete vyhledávací prostor a nastavení hledání, můžete úlohu odeslat pro natrénování modelu pro zpracování obrázků s využitím vaší trénovací datové sady.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
Pokud chcete odeslat úlohu AutoML, spusťte následující příkaz CLI v2 s cestou k souboru .yml, názvu pracovního prostoru, skupině prostředků a ID předplatného.
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]
Když provedete sweepování hyperparametrů, může být užitečné vizualizovat různé pokusy, které byly zkoušeny, pomocí uživatelského rozhraní Hyperdrive UI. K tomuto uživatelskému rozhraní se dostanete tak, že přejdete na kartu Podřízené úlohy v uživatelském rozhraní hlavní úlohy AutoML image, která se zobrazí dříve, což je nadřazená úloha HyperDrivu. Poté můžete přejít na kartu Podřízené úlohy.
Případně můžete přímo zobrazit nadřazenou úlohu HyperDrivu a přejít na její kartu Podřízené úlohy :
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
CLI example not available. Use the the Python SDK.
Registrace a nasazení modelu
Po dokončení úlohy můžete zaregistrovat model vytvořený z nejlepší zkušební verze (konfigurace, která způsobila nejlepší primární metriku). Model můžete zaregistrovat buď po stažení, nebo zadáním azureml cesty s odpovídající jobid.
Získání nejlepší zkušební verze
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
CLI example not available. Use the Python SDK.
Registrace modelu
Zaregistrujte model pomocí cesty azureml nebo místní stažené cesty.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
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]
Jakmile zaregistrujete model, který chcete použít, můžete ho nasadit pomocí spravovaného online koncového bodu.
Nakonfigurujte online koncový bod
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
Vytvoření koncového bodu
Pomocí dříve vytvořeného MLClient nyní vytvoříte koncový bod v pracovním prostoru. Tento příkaz spustí vytvoření koncového bodu a během vytváření koncového bodu vrátí potvrzovací odpověď.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
az ml online-endpoint create --file .\create_endpoint.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Můžete také vytvořit dávkový koncový bod pro dávkové odvozování u velkých objemů dat v určitém časovém období. V poznámkovém bloku dávkového skórování pro detekci objektů najdete příklad dávkového odvozování pomocí koncového bodu dávky.
Nakonfigurujte online nasazení
Nasazení je sada prostředků vyžadovaných pro nasazování modelu, který provádí samotný proces inference. Následující kód vytvoří nasazení pro koncový bod. Pro cluster nasazení můžete použít instance virtuálních počítačů typu GPU nebo CPU.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
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
Vytvořte nasazení
Pomocí dříve vytvořeného MLClient vytvoříte nasazení v pracovním prostoru. Tento příkaz spustí vytvoření nasazení a během vytváření nasazení vrátí potvrzovací odpověď.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
az ml online-deployment create --file .\create_deployment.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Aktualizace provozu
Ve výchozím nastavení je aktuální nasazení nastavené na příjem 0% provozu. Můžete nastavit procento provozu, které má aktuální nasazení přijímat. Součet procent provozu všech nasazení s jedním koncovým bodem by neměl překročit 100%.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
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]
Otestování nasazení
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
CLI example not available. Use the Python SDK.
Vizualizace detekcí
Teď, když jste ohodnoceli testovací obrázek, můžete vizualizovat ohraničující rámečky obrázku. K tomu musíte mít nainstalovaný Matplotlib.
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)
CLI example not available. Use the Python SDK.
Vyčištění prostředků
Pokud plánujete dokončit další kurzy služby Azure Machine Learning, nedokončíte tuto část.
Pokud nemáte v úmyslu používat vytvořené prostředky, odstraňte je, abyste za ně nemuseli účtovat žádné poplatky.
- Na webu Azure Portal vyberte v levém podokně skupiny prostředků .
- V seznamu skupin prostředků vyberte skupinu prostředků, kterou jste vytvořili.
- Vyberte Odstranit skupinu prostředků.
- Zadejte název skupiny prostředků. Poté vyberte Odstranit.
Můžete také zachovat skupinu zdrojů, ale odstranit jeden pracovní prostor. Přejděte na stránku pracovního prostoru a pak vyberte Odstranit.
Další kroky
V tomto kurzu automatizovaného strojového učení jste dokončili následující úlohy:
- Konfigurace pracovního prostoru a připravených dat pro experiment
- Trénování modelu automatizovaného rozpoznávání objektů
- Zadané hodnoty hyperparametrů pro váš model
- Provedli jsme úklid hyperparametrů.
- Nasadili jste model
- Vizualizované detekce
Přečtěte si další informace o počítačovém zpracování obrazu v automatizovaném strojovém učení.
Zjistěte, jak nastavit AutoML pro trénování modelů počítačového zpracování obrazu pomocí Pythonu.
Zjistěte, jak nakonfigurovat přírůstkové trénování na modelech počítačového zpracování obrazu.
Podívejte se , jaké hyperparametry jsou k dispozici pro úlohy počítačového zpracování obrazu.
Zobrazit příklady kódu:
PLATÍ PRO:
Rozšíření Azure CLI ml v2 - aktuální (current)- Projděte si podrobné příklady kódu a případy použití v úložišti azureml-examples pro ukázky automatizovaného strojového učení. Ukázky specifické pro vytváření modelů počítačového zpracování obrazu najdete ve složkách s předponou cli-automl-image .
Poznámka:
Použití datové sady objektů ledniček je dostupné prostřednictvím licence MIT License.