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-mlrozšíření Azure Machine Učení ( nebo v1). 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 mlrozšíř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í v Azure Machine Učení.

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.

Diagram that shows an image being divided into a grid of overlapping tiles.

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_sizemax_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.

Diagram that shows object proposals from image and tiles being merged to form the final predictions.

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