Trénování malého modelu rozpoznávání objektů pomocí AutoML

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)

V tomto článku se dozvíte, jak vytrénovat model detekce 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.

Pro pomoc s tímto problémem automatizované strojové učení podporuje v rámci možností počítačového zpracování obrazu svázání. 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 znázorňující rozdělení obrázku do mřížky překrývajících se dlaždic

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, například 3x2, 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 3x2; každý obrázek je rozdělený 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řekrývání je řízeno parametrem tile_overlap_ratio , který ve výchozím nastavení činí 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.

Pokud je například tile_grid_size parametr 3x2, výpočetní doba by byla přibližně sedmkrát vyšší než bez provazování.

Hodnotu pro tile_grid_size trénovací parametry můžete zadat jako řetězec.

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)

training_parameters:
  tile_grid_size: '3x2'

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.

PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

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 znázorňující návrhy objektů z obrázků a dlaždic, které se sloučí za účelem vytvoření konečných předpovědí

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

Tím se může zvýšit výkon některých datových sad a nebudou vám účtovány dodatečné náklady, které jsou součástí vazby 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í.

Měla by být předána jako řetězec ve '3x2' formátu.

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