Trenowanie małego modelu wykrywania obiektów za pomocą rozwiązania AutoML
DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)
Zestaw PYTHON SDK azure-ai-ml w wersji 2 (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ń te modele mają tendencję do niedostatecznego wykonywania w przypadku zadania wykrywania małych obiektów na 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 ich możliwości wykrywania mniejszych obiektów — względem początkowego rozmiaru obrazu.
Aby pomóc w tym problemie, zautomatyzowane uczenie maszynowe obsługuje porządkowanie w ramach funkcji przetwarzania obrazów. Możliwość układania kafelków w zautomatyzowanym uczeniu maszynowym opiera się na pojęciach w temacie The Power of Tiling for Small Object Detection (Możliwości tworzenia tilingu na potrzeby wykrywania małych obiektów).
Podczas układania kafelków 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 przyjęto założenie, ż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 to liczba kafelków wzdłuż wymiaru szerokości, a 2 to liczba kafelków wzdłuż wymiaru wysokości. Gdy ten parametr ma 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, tak aby wszystkie obiekty, które znajdują się na obramowanie kafelka, zostały całkowicie uwzględnione w jednym z kafelków. To nakładanie się może być kontrolowane przez tile_overlap_ratio
parametr , który domyślnie wynosi 25%.
Po włączeniu tilingu 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 dodaniem ich 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 uczenia maszynowego platformy Azure w wersji 2 (bieżąca)
training_parameters:
tile_grid_size: '3x2'
Wartość parametru tile_grid_size
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 uczenia maszynowego 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
Podczas wdrażania modelu wytrenowanego za pomocą tilingu podczas wnioskowania występuje również układanie kafelków. Zautomatyzowane uczenie maszynowe tile_grid_size
używa wartości z trenowania w celu wygenerowania kafelków podczas wnioskowania. Cały obraz i odpowiadające im kafelki są przekazywane przez model, a propozycje obiektów z nich są scalane do końcowych przewidywań wyjściowych, podobnie jak na poniższej ilustracji.
Uwaga
Istnieje możliwość wykrycia tego samego obiektu 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, wybierany jest jeden z najwyższym wynikiem, a inne są odrzucane jako duplikaty. Dwa propozycje są uważane za nakładające się, gdy skrzyżowanie między nimi (iou) 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.
W ten sposób może zwiększyć wydajność niektórych zestawów danych i nie będzie ponosić dodatkowych kosztów, które są dostarczane z tilingiem w czasie trenowania.
Hiperparametry pływu
Poniżej przedstawiono parametry, których można użyć do sterowania funkcją układania kafelków.
Nazwa parametru | Opis | Domyślny |
---|---|---|
tile_grid_size |
Rozmiar siatki do użycia na potrzeby układania obrazów. 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 całkowicie. Musi być zmiennoprzecinkiem [0, 1). |
0,25 |
tile_predictions_nms_thresh |
Przecięcie ponad próg unii do użycia w celu wykonania nie-maksymalnego pomijania (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 w wartości [0, 1]. |
0,25 |
Przykładowe notesy
Zobacz przykładowy notes wykrywania obiektów , aby uzyskać szczegółowe przykłady kodu dotyczące 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 uzyskać definicje i przykłady wykresów wydajności i metryk dostarczonych 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 przy użyciu języka ONNX w modelach przetwarzania obrazów z rozwiązania AutoML