Trénování modelu detekce malých objektů pomocí automatického strojového učení

PLATÍ PRO: Sada Python SDK azure-ai-ml v2 (aktuální)

V tomto článku se dozvíte, jak pomocí automatizovaného strojového učení ve službě Azure Machine Learning vytrénovat model detekce objektů k detekci malých objektů v obrázcích s vysokým rozlišením.

Modely počítačového zpracování obrazu pro detekci objektů obvykle dobře fungují u datových sad s relativně velkými objekty. Z důvodu omezení paměti a výpočtů však mají tyto modely tendenci k nedostatečnému výkonu, když jsou pověřeny detekcí malých objektů v obrázcích s vysokým rozlišením. Vzhledem k tomu, že obrázky s vysokým rozlišením jsou obvykle velké, před vstupem do modelu se změ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í jako součást funkcí počítačového zpracování obrazu. Funkce vytváření dlaždic v automatizovaném strojovém učení vychází z konceptů v tématu Síla dlaždic pro detekci malých objektů.

Při dlaždicích se každý obrázek rozdělí do mřížky dlaždic. Sousední dlaždice se překrývají z hlediska šířky a výšky. Dlaždice se oříznou z originálu, 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

Podporované modely

Detekce malých objektů pomocí dlaždic se podporuje u všech modelů podporovaných automatizovaným strojovém učení pro obrázky pro úlohu detekce objektů.

Povolení vázání během trénování

Pokud chcete povolit dlaždici, můžete parametr nastavit tile_grid_size na hodnotu 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 hodnotu 3x2, rozdělí se každý obrázek do mřížky o 3 x 2 dlaždicích. Každá dlaždice se překrývá se sousedními dlaždicemi, takže všechny objekty, které spadají na okraj dlaždice, jsou zcela zahrnuty do jedné z dlaždic. Toto překrytí může být řízeno parametrem tile_overlap_ratio , který má výchozí hodnotu 25 %.

Pokud je povoleno dlaždice, celý obrázek a dlaždice z něj vygenerované se předávají modelem. Velikost těchto obrázků a dlaždic se před odesláním do modelu změní podle min_size parametrů a max_size . Výpočetní doba se úměrně prodluž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 delší než bez dlaždic.

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

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

training_parameters:
  tile_grid_size: '3x2'

Hodnota tile_grid_size parametru 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ý, pokud jsou v obrázcích menší objekty.

Pokud chcete zvolit optimální hodnotu tohoto parametru pro datovou sadu, můžete použít hledání hyperparametrů. Uděláte to tak, že zadáte výběr hodnot pro tento parametr v prostoru hyperparametru.

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']

Uklidení během odvozování

Při nasazení modelu vytrénovaného pomocí dlaždic dochází 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čí a vydají se konečné předpovědi, jako na následujícím obrázku.

Diagram znázorňující návrhy objektů z obrázku a dlaždic, které se sloučí, aby vytvořily konečné předpovědi

Poznámka

Je možné, že stejný objekt je rozpoznána z více dlaždic, detekce duplicit se provádí, aby se takové duplicity odstranily.

Zjišťování duplicit se provádí spuštěním NMS u návrhů z dlaždic a obrázku. Když se překrývá více návrhů, 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, pokud je průnik sjednocení (iou) mezi nimi větší než tile_predictions_nms_thresh parametr.

Máte také možnost povolit vázání pouze během odvozování, aniž byste ho povolili v trénování. Provedete to tak, že parametr nastavíte tile_grid_size 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 se vám účtovat dodatečné náklady, které jsou spojené s vázáním v době trénování.

Uklidňující hyperparametry

Níže jsou uvedené parametry, které můžete použít k řízení funkce dlaždic.

Název parametru Description Výchozí
tile_grid_size Velikost mřížky, která se má použít pro dlaždici jednotlivých obrázků. K dispozici pro použití během trénování, ověřování a odvozování.

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

Poznámka: Nastavením tohoto parametru se proporcionálně produžuje 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řekrývání mezi sousedními dlaždicemi v jednotlivých dimenzích. Pokud jsou objekty, které spadají na okraj dlaždice, příliš velké, aby se zcela nevešly do jedné z dlaždic, zvyšte hodnotu tohoto parametru tak, aby se objekty zcela vešly alespoň do jedné z dlaždic.

Musí být float v [0, 1).
0,25
tile_predictions_nms_thresh Průsečík přes prahovou hodnotu sjednocení, který se použije k dosažení potlačení maximálního počtu (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í na objekt.

Musí být plovoucí v [0, 1].
0,25

Příklady poznámkových bloků

Podrobné příklady kódu nastavení a trénování modelu detekce objektů najdete v ukázkovém poznámkovém bloku detekce objektů.

Poznámka

Všechny obrázky v tomto článku jsou k dispozici v souladu s oddílem o povoleném použití licenční smlouvy MIT. Copyright © 2020 Roboflow, Inc.

Další kroky