Trenowanie małego modelu wykrywania obiektów za pomocą rozwiązania AutoML (wersja zapoznawcza) (wersja 1)
DOTYCZY: Zestaw SDK języka Python w wersji 1
Ważne
Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają azure-cli-ml
rozszerzenia , lub w wersji 1 dla usługi Azure Machine Learning. Obsługa rozszerzenia w wersji 1 zakończy się 30 września 2025 r. Będzie można zainstalować rozszerzenie v1 i używać go do tej daty.
Zalecamy przejście do ml
rozszerzenia , lub w wersji 2 przed 30 września 2025 r. Aby uzyskać więcej informacji na temat rozszerzenia w wersji 2, zobacz Rozszerzenie interfejsu wiersza polecenia usługi Azure ML i zestaw Python SDK w wersji 2.
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
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ści 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 w publicznej wersji zapoznawczej. 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 (3, 2); 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 (3, 2), 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ę może być 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 to (3, 2), czas obliczeń będzie około siedem razy wyższy niż bez tilinga.
Możesz określić wartość dla tile_grid_size
w przestrzeni hiperparametrów jako ciąg.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(3, 2)'),
...
}
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.
parameter_space = {
'model_name': choice('fasterrcnn_resnet50_fpn'),
'tile_grid_size': choice('(2, 1)', '(3, 2)', '(5, 3)'),
...
}
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. Krotka dwóch liczb całkowitych przekazywanych jako ciąg, np. '(3, 2)' 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 (wersja zapoznawcza) przy użyciu 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