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 Learning.
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.
Wymagania wstępne
Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów obszaru roboczego.
W tym artykule założono, że znasz sposób konfigurowania eksperymentu zautomatyzowanego uczenia maszynowego na potrzeby zadań przetwarzania obrazów.
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 ml 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 ml 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.
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
- Dowiedz się więcej o tym, jak i gdzie wdrożyć model.
- Aby zapoznać się z definicjami i przykładami wykresów wydajności i metryk podanych dla każdego zadania, zobacz Ocena wyników eksperymentu zautomatyzowanego uczenia maszynowego.
- Samouczek: trenowanie modelu wykrywania obiektów za pomocą rozwiązania AutoML i języka Python.
- Zobacz , jakie hiperparametry są dostępne dla zadań przetwarzania obrazów.
- Przewidywanie za pomocą języka ONNX w modelach przetwarzania obrazów z rozwiązania AutoML