Trénování malého modelu rozpoznávání objektů pomocí AutoML (Preview) (v1)
PLATÍ PRO: Python SDK azureml v1
Důležité
Některé příkazy Azure CLI v tomto článku používají azure-cli-ml
rozšíření (nebo v1) pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data budete moct nainstalovat a používat rozšíření v1.
Doporučujeme přejít na ml
rozšíření (nebo v2) před 30. zářím 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure ML CLI a Python SDK v2.
Důležité
Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
V tomto článku se dozvíte, jak vytrénovat model rozpoznávání objektů tak, aby detekovat malé objekty v obrázcích s vysokým rozlišením pomocí automatizovaného strojového učení ve službě Azure Machine Learning.
Modely počítačového zpracování obrazu pro detekci objektů obvykle dobře fungují u datových sad s relativně velkými objekty. Vzhledem k paměťovým a výpočetním omezením se ale tyto modely při zjišťování malých objektů na obrázcích s vysokým rozlišením obvykle méně provádějí. Vzhledem k tomu, že obrázky s vysokým rozlišením jsou obvykle velké, před vstupem do modelu se mění jejich velikost, což omezuje jejich schopnost detekovat menší objekty vzhledem k počáteční velikosti obrázku.
S tímto problémem pomáhá automatizované strojové učení v rámci funkcí počítačového zpracování obrazu ve verzi Public Preview. Funkce pro provazování v automatizovaném strojovém učení vychází z konceptů v oblasti výkonu pro detekci malých objektů.
Při provazování se každý obrázek rozdělí do mřížky dlaždic. Sousední dlaždice se vzájemně překrývají v rozměrech šířky a výšky. Dlaždice se oříznou z původního obrázku, jak je znázorněno na následujícím obrázku.
Požadavky
Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření prostředků pracovního prostoru.
Tento článek předpokládá určitou znalost konfigurace experimentu automatizovaného strojového učení pro úlohy počítačového zpracování obrazu.
Podporované modely
Malé rozpoznávání objektů pomocí provazování je podporováno pro všechny modely podporované automatizovaným strojovém učení pro obrázky pro úlohu detekce objektů.
Povolení provazování během trénování
Pokud chcete povolit provazování, můžete parametr nastavit tile_grid_size
na hodnotu jako (3, 2); kde 3 je počet dlaždic podél rozměru šířky a 2 je počet dlaždic podél rozměru výšky. Pokud je tento parametr nastavený na (3, 2), každý obrázek se rozdělí do mřížky 3 x 2 dlaždic. Každá dlaždice se překrývají se sousedními dlaždicemi, takže všechny objekty, které spadají na ohraničení dlaždice, jsou zcela zahrnuty do jedné z dlaždic. Toto překrytí může být řízeno tile_overlap_ratio
parametrem, který má výchozí hodnotu 25 %.
Pokud je povolené provázání, projde se modelem celý obrázek a dlaždice vygenerované z něj. Tyto obrázky a dlaždice se před podáváním modelu mění podle min_size
max_size
parametrů. Doba výpočtu se úměrně zvyšuje kvůli zpracování těchto dodatečných dat.
Například pokud tile_grid_size
je parametr (3, 2), výpočetní doba by byla přibližně sedmkrát vyšší než bez provazování.
Hodnotu tile_grid_size
v prostoru hyperparametrů můžete zadat jako řetězec.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(3, 2)'),
...
}
Hodnota parametru tile_grid_size
závisí na rozměrech obrázku a velikosti objektů v rámci obrázku. Například větší počet dlaždic by byl užitečný, když jsou na obrázcích menší objekty.
Pokud chcete zvolit optimální hodnotu pro tento parametr pro datovou sadu, můžete použít vyhledávání hyperparametrů. Uděláte to tak, že v prostoru hyperparametrů zadáte výběr hodnot pro tento parametr.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(2, 1)', '(3, 2)', '(5, 3)'),
...
}
Svázání během odvozování
Když je model natrénovaný pomocí provazování nasazený, dojde také k odvozování. Automatizované strojové učení používá tile_grid_size
hodnotu z trénování k vygenerování dlaždic během odvozování. Celý obrázek a odpovídající dlaždice se předávají modelem a návrhy objektů z nich se sloučí s výstupem konečných předpovědí, jako na následujícím obrázku.
Poznámka:
Je možné, že stejný objekt je zjištěn z více dlaždic, detekce duplicit se provádí k odebrání takových duplicit.
Detekce duplicit se provádí spuštěním NMS na návrzích z dlaždic a obrázku. Pokud se více návrhů překrývají, vybere se ten s nejvyšším skóre a ostatní se zahodí jako duplikáty. Dva návrhy se považují za překrývající se, když je průsečík nad sjednocením (iou) větší než tile_predictions_nms_thresh
parametr.
Máte také možnost povolit odvozování pouze během odvozování, aniž byste ji povolili při trénování. Pokud to chcete udělat, nastavte tile_grid_size
parametr pouze během odvozování, ne pro trénování.
Pokud to uděláte, může se zvýšit výkon některých datových sad a neúčtují se vám další náklady, které jsou součástí provázání v době trénování.
Svázání hyperparametrů
Níže jsou uvedené parametry, které můžete použít k řízení funkce provazování.
Název parametru | Popis | Výchozí |
---|---|---|
tile_grid_size |
Velikost mřížky, která se má použít pro provazování jednotlivých obrázků. K dispozici pro použití během trénování, ověřování a odvozování. Řazená kolekce členů dvou celých čísel předaných jako řetězec, např. '(3, 2)' Poznámka: Nastavením tohoto parametru se proporcionálně zvýší doba výpočtu, protože model zpracovává všechny dlaždice a obrázky. |
žádná výchozí hodnota |
tile_overlap_ratio |
Řídí poměr překrytí mezi sousedními dlaždicemi v jednotlivých dimenzích. Pokud jsou objekty, které spadají na hranici dlaždice, příliš velké, aby se zcela vešly do jedné z dlaždic, zvyšte hodnotu tohoto parametru, aby se objekty vešly alespoň do jedné z dlaždic úplně. Musí to být plovák v [0, 1). |
0.25 |
tile_predictions_nms_thresh |
Průsečík přes sjednocovací prahovou hodnotu, který se použije k nevýkonné potlačení (nms) při slučování předpovědí z dlaždic a obrázků. K dispozici během ověřování a odvozování. Tento parametr změňte, pokud se v konečných předpovědích zjistí více polí pro jednotlivé objekty. Musí být plovoucí v [0, 1]. |
0.25 |
Příklady poznámkových bloků
Podrobné příklady nastavení a trénování modelu rozpoznávání objektů najdete v ukázkovém poznámkovém bloku pro rozpoznávání objektů.
Poznámka:
Všechny obrázky v tomto článku jsou k dispozici v souladu s oddílem povoleného použití licenční smlouvy MIT. Copyright © 2020 Roboflow, Inc.
Další kroky
- Přečtěte si další informace o tom, jak a kde nasadit model.
- Definice a příklady výkonnostních grafů a metrik poskytovaných pro každou úlohu najdete v tématu Vyhodnocení výsledků experimentů automatizovaného strojového učení.
- Kurz: Trénování modelu rozpoznávání objektů (Preview) pomocí AutoML a Pythonu
- Podívejte se , jaké hyperparametry jsou k dispozici pro úlohy počítačového zpracování obrazu.
- Vytváření předpovědí pomocí ONNX na modelech počítačového zpracování obrazu z AutoML