Trenowanie małego modelu wykrywania obiektów za pomocą rozwiązania AutoML

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

W tym artykule dowiesz się, jak wytrenować model wykrywania obiektów w celu wykrywania małych obiektów na obrazach o wysokiej rozdzielczości za pomocą zautomatyzowanego uczenia maszynowego w usłudze Azure Machine Edukacja.

Zazwyczaj modele przetwarzania obrazów do wykrywania obiektów działają dobrze w przypadku zestawów danych z stosunkowo dużymi obiektami. Jednak ze względu na ograniczenia pamięci i obliczeń modele te mają tendencję do niedostatecznego wykonywania, gdy zadanie wykrywania małych obiektów w obrazach o wysokiej rozdzielczości. Ponieważ obrazy o wysokiej rozdzielczości są zwykle duże, są zmieniane przed wprowadzeniem danych wejściowych do modelu, co ogranicza możliwość wykrywania mniejszych obiektów — względem początkowego rozmiaru obrazu.

Aby pomóc w tym problemie, zautomatyzowane uczenie maszynowe obsługuje układanie w ramach funkcji przetwarzania obrazów. Możliwość układania w zautomatyzowanym uczeniu maszynowym opiera się na pojęciach w temacie The Power of Tiling for Small Object Detection (Moc tiling for Small Object Detection).

Podczas układania każdy obraz jest podzielony na siatkę kafelków. Sąsiadujące kafelki nakładają się na siebie w wymiarach szerokości i wysokości. Kafelki są przycinane z oryginału, jak pokazano na poniższej ilustracji.

Diagram przedstawiający obraz podzielony na siatkę nakładających się kafelków.

Wymagania wstępne

Obsługiwane modele

Wykrywanie małych obiektów przy użyciu tilingu jest obsługiwane dla wszystkich modeli obsługiwanych przez zautomatyzowane uczenie maszynowe dla obrazów dla zadania wykrywania obiektów.

Włączanie układania kafelków podczas trenowania

Aby włączyć układanie kafelków, można ustawić tile_grid_size parametr na wartość podobną do "3x2", gdzie 3 jest liczbą kafelków wzdłuż wymiaru szerokości, a 2 jest liczbą kafelków wzdłuż wymiaru wysokości. Gdy ten parametr jest ustawiony na wartość "3x2"; każdy obraz jest podzielony na siatkę 3 x 2 kafelków. Każdy kafelek nakłada się na sąsiadujące kafelki, dzięki czemu wszystkie obiekty, które znajdują się na obramowanie kafelka, są całkowicie zawarte w jednym z kafelków. To nakładanie się jest kontrolowane przez tile_overlap_ratio parametr , który domyślnie wynosi 25%.

Po włączeniu tilinga cały obraz i kafelki wygenerowane na jego podstawie są przekazywane przez model. Rozmiar tych obrazów i kafelków jest zmieniany zgodnie z min_size parametrami i max_size przed przejściem do modelu. Czas obliczeń zwiększa się proporcjonalnie z powodu przetwarzania tych dodatkowych danych.

Na przykład, gdy tile_grid_size parametr ma wartość "3x2", czas obliczeń będzie około siedem razy wyższy niż bez tilingu.

Wartość parametrów tile_grid_size treningowych można określić jako ciąg.

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)

training_parameters:
  tile_grid_size: '3x2'

Wartość tile_grid_size parametru zależy od wymiarów obrazu i rozmiaru obiektów na obrazie. Na przykład większa liczba kafelków przydaje się w przypadku mniejszych obiektów na obrazach.

Aby wybrać optymalną wartość dla tego parametru dla zestawu danych, możesz użyć wyszukiwania hiperparametrów. W tym celu można określić wybór wartości dla tego parametru w obszarze hiperparametrów.

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (bieżąca)

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

Układanie podczas wnioskowania

Po wdrożeniu modelu trenowanego przy użyciu tilingu podczas wnioskowania występuje również układanie. Zautomatyzowane uczenie maszynowe tile_grid_size używa wartości z trenowania do generowania kafelków podczas wnioskowania. Cały obraz i odpowiadające im kafelki są przekazywane przez model, a propozycje obiektów są scalane z nimi do końcowych przewidywań wyjściowych, takich jak na poniższej ilustracji.

Diagram przedstawiający propozycje obiektów z obrazów i kafelków scalonych w celu utworzenia końcowych przewidywań.

Uwaga

Możliwe, że ten sam obiekt jest wykrywany z wielu kafelków, wykrywanie duplikacji odbywa się w celu usunięcia takich duplikatów.

Wykrywanie duplikatów odbywa się przez uruchomienie rozwiązania NMS na propozycjach z kafelków i obrazu. Gdy wiele propozycji nakłada się na siebie, jest wybierany jeden z najwyższym wynikiem, a inne są odrzucane jako duplikaty. Dwa propozycje są uważane za nakładające się, gdy skrzyżowanie nad unią (iou) między nimi jest większe niż tile_predictions_nms_thresh parametr.

Istnieje również możliwość włączenia układania kafelków tylko podczas wnioskowania bez włączania jej w trakcie trenowania. W tym celu ustaw tile_grid_size parametr tylko podczas wnioskowania, a nie na potrzeby trenowania.

Może to poprawić wydajność niektórych zestawów danych i nie będzie ponosić dodatkowych kosztów, które są dostarczane z tilingiem w czasie trenowania.

Hiperparametry tilinga

Poniżej przedstawiono parametry, których można użyć do sterowania funkcją układania kafelków.

Nazwa parametru opis Wartość domyślna
tile_grid_size Rozmiar siatki do użycia do układania każdego obrazu. Dostępne do użycia podczas trenowania, walidacji i wnioskowania.

Należy przekazać jako ciąg w '3x2' formacie.

Uwaga: ustawienie tego parametru zwiększa proporcjonalnie czas obliczeń, ponieważ wszystkie kafelki i obrazy są przetwarzane przez model.
brak wartości domyślnej
tile_overlap_ratio Steruje współczynnikiem nakładania się między sąsiednimi kafelkami w każdym wymiarze. Gdy obiekty, które znajdują się na granicy kafelka, są zbyt duże, aby zmieścić się całkowicie w jednym z kafelków, zwiększ wartość tego parametru, aby obiekty mieściły się w co najmniej jednym kafelku.

Musi być zmiennoprzecinkiem [0, 1).
0.25
tile_predictions_nms_thresh Przecięcie ponad próg unii do użycia w celu wykonania nieskoncementacji maksymalnej (nms) podczas scalania przewidywań z kafelków i obrazu. Dostępne podczas walidacji i wnioskowania. Zmień ten parametr, jeśli w końcowych przewidywaniach wykryto wiele pól dla każdego obiektu.

Musi być zmiennoprzecinkowy [0, 1].
0.25

Przykładowe notesy

Zobacz przykładowy notes wykrywania obiektów, aby uzyskać szczegółowe przykłady kodu konfigurowania i trenowania modelu wykrywania obiektów.

Uwaga

Wszystkie obrazy w tym artykule są udostępniane zgodnie z sekcją dozwolonego użytkowania umowy licencyjnej MIT. Copyright © 2020 Roboflow, Inc.

Następne kroki