Transfer uczenia się dla modeli wykrywania obiektów TensorFlow w Amazon SageMaker

Amazon Sage Maker zapewnia pakiet wbudowane algorytmy, wstępnie wytrenowane modele, gotowe szablony rozwiązań aby pomóc naukowcom zajmującym się danymi i praktykom uczenia maszynowego (ML) rozpocząć szybkie szkolenie i wdrażanie modeli ML. Możesz używać tych algorytmów i modeli zarówno do uczenia nadzorowanego, jak i nienadzorowanego. Mogą przetwarzać różne typy danych wejściowych, w tym tabelaryczne, graficzne i tekstowe.

Ten post jest drugim z serii na temat nowych wbudowanych algorytmów w SageMakerze. w pierwszy post, pokazaliśmy, jak SageMaker zapewnia wbudowany algorytm klasyfikacji obrazów. Dziś ogłaszamy, że SageMaker udostępnia nowy wbudowany algorytm wykrywania obiektów za pomocą TensorFlow. Ten nadzorowany algorytm uczenia obsługuje uczenie transferu dla wielu wstępnie wytrenowanych modeli dostępnych w TensorFlow. Pobiera obraz jako wejście i wyprowadza obiekty obecne na obrazie wraz z obwiedniami. Te wstępnie wytrenowane modele można dostroić za pomocą uczenia transferu, nawet jeśli nie jest dostępna duża liczba obrazów szkoleniowych. Jest dostępny przez SageMaker wbudowane algorytmy jak również poprzez Interfejs programu SageMaker JumpStart in Studio Amazon SageMaker. Aby uzyskać więcej informacji, zobacz Przepływ tensorowy wykrywania obiektów i przykładowy notatnik Wprowadzenie do SageMaker Tensorflow – Wykrywanie obiektów.

Wykrywanie obiektów za pomocą TensorFlow w programie SageMaker zapewnia naukę transferu w wielu wstępnie wytrenowanych modelach dostępnych w TensorFlow Hub. Zgodnie z liczbą etykiet klas w danych uczących nowa, losowo inicjowana głowica wykrywania obiektów zastępuje istniejącą głowicę modelu TensorFlow. Cała sieć, w tym wstępnie wytrenowany model, lub tylko górna warstwa (głowica wykrywania obiektów) może zostać dostrojona na podstawie nowych danych uczących. W tym trybie uczenia transferu można przeprowadzić szkolenie nawet przy mniejszym zbiorze danych.

Jak korzystać z nowego algorytmu wykrywania obiektów TensorFlow

W tej sekcji opisano, jak korzystać z algorytmu wykrywania obiektów TensorFlow z: SageMaker SDK dla Pythona. Aby uzyskać informacje o tym, jak z niego korzystać w interfejsie użytkownika Studio, zobacz SageMaker Szybki start.

Algorytm obsługuje uczenie transferu dla wstępnie wytrenowanych modeli wymienionych w Modele TensorFlow. Każdy model jest oznaczony unikalnym model_id. Poniższy kod pokazuje, jak dostroić model FPN ResNet50 V1 zidentyfikowany przez model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 na niestandardowym zestawie danych treningowych. Dla każdego model_id, w celu uruchomienia zadania szkoleniowego SageMaker poprzez Taksator klasy SageMaker Python SDK, musisz pobrać identyfikator URI obrazu platformy Docker, identyfikator URI skryptu szkoleniowego i wstępnie wytrenowany identyfikator URI modelu za pomocą funkcji narzędziowych dostępnych w programie SageMaker. Identyfikator URI skryptu szkoleniowego zawiera cały kod niezbędny do przetwarzania danych, ładowania wstępnie wytrenowanego modelu, trenowania modelu i zapisywania przeszkolonego modelu do wnioskowania. Wstępnie wytrenowany identyfikator URI modelu zawiera wstępnie wytrenowaną definicję architektury modelu i parametry modelu. Należy zauważyć, że identyfikator URI obrazu platformy Docker i identyfikator URI skryptu szkoleniowego są takie same dla wszystkich modeli wykrywania obiektów TensorFlow. Wstępnie wytrenowany identyfikator URI modelu jest specyficzny dla konkretnego modelu. Wstępnie wytrenowane archiwum modeli zostały wstępnie pobrane z TensorFlow i zapisane z odpowiednią sygnaturą modelu w Usługa Amazon Simple Storage (Amazon S3), dzięki czemu zadanie szkoleniowe działa w izolacji sieciowej. Zobacz następujący kod:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Dzięki tym artefaktom treningowym specyficznym dla modelu można skonstruować obiekt Taksator klasa:

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

Następnie, w celu przeniesienia uczenia się na niestandardowym zestawie danych, może być konieczna zmiana domyślnych wartości hiperparametrów uczenia, które są wymienione w Hiperparametry. Możesz pobrać słownik Pythona tych hiperparametrów z ich domyślnymi wartościami, wywołując hyperparameters.retrieve_default, zaktualizuj je w razie potrzeby, a następnie przekaż je do klasy Estimator. Zauważ, że wartości domyślne niektórych hiperparametrów są różne dla różnych modeli. W przypadku dużych modeli domyślny rozmiar partii jest mniejszy, a train_only_top_layer hiperparametr jest ustawiony na True. Hiperparametr train_only_top_layer definiuje, które parametry modelu zmieniają się podczas procesu dostrajania. Jeśli train_only_top_layer is True, parametry warstw klasyfikacyjnych zmieniają się, a reszta parametrów pozostaje stała podczas procesu dostrajania. Z drugiej strony, jeśli train_only_top_layer is False, wszystkie parametry modelu są dostrojone. Zobacz następujący kod:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Zapewniamy Zbiór danych PennFudanPed jako domyślny zbiór danych do dostrajania modeli. Zbiór danych zawiera obrazy pieszych. Poniższy kod zawiera domyślny treningowy zbiór danych hostowany w zasobnikach S3:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Na koniec, aby uruchomić zadanie szkoleniowe SageMaker w celu dostrojenia modelu, zadzwoń .fit na obiekcie klasy Estimator, przekazując lokalizację S3 zestawu danych uczących:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Aby uzyskać więcej informacji o tym, jak używać nowego algorytmu wykrywania obiektów SageMaker TensorFlow do uczenia transferu w niestandardowym zestawie danych, wdrażać model dostrojony, uruchamiać wnioskowanie na wdrożonym modelu i wdrażać wstępnie wytrenowany model bez uprzedniego dostrajania w niestandardowym zestawie danych zobacz następujący przykładowy notatnik: Wprowadzenie do SageMaker TensorFlow – Wykrywanie obiektów.

Interfejs wejścia/wyjścia dla algorytmu wykrywania obiektów TensorFlow

Możesz dostroić każdy z przeszkolonych modeli wymienionych w Modele TensorFlow do dowolnego zestawu danych zawierającego obrazy należące do dowolnej liczby klas. Celem jest zminimalizowanie błędu predykcji w danych wejściowych. Model zwrócony przez dostrajanie może być dalej wdrażany do celów wnioskowania. Poniżej znajdują się instrukcje dotyczące formatowania danych uczących w celu wprowadzenia ich do modelu:

  • Wkład – Katalog z obrazami podkatalogów i plikiem annotations.json.
  • Wydajność – Istnieją dwa wyjścia. Pierwszy to model dostrojony, który można wdrożyć do wnioskowania lub dalej trenować przy użyciu szkolenia przyrostowego. Drugi to plik, który odwzorowuje indeksy klas na etykiety klas; jest to zapisywane wraz z modelem.

Katalog wejściowy powinien wyglądać jak w poniższym przykładzie:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

Połączenia annotations.json plik powinien zawierać informacje dla bounding_boxes i ich etykiety klasowe. Powinien mieć słownik z klawiszami "images" i "annotations". Wartość "images" klucz powinien być listą wpisów, po jednym dla każdego obrazu formularza {"file_name": image_name, "height": height, "width": width, "id": image_id}, Wartość "annotations" klucz powinien być listą wpisów, po jednym dla każdego obwiedni formularza {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

Wnioskowanie z algorytmem wykrywania obiektów TensorFlow

Wygenerowane modele mogą być hostowane w celu wnioskowania i obsługi zakodowanych formatów obrazów .jpg, .jpeg i .png jako application/x-image Typ zawartości. Obraz wejściowy jest automatycznie zmieniany. Dane wyjściowe zawierają pola, przewidywane klasy i wyniki dla każdej prognozy. Model wykrywania obiektów TensorFlow przetwarza jeden obraz na żądanie i generuje tylko jeden wiersz w pliku JSON. Poniżej znajduje się przykład odpowiedzi w formacie JSON:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept jest ustawione na application/json, model wyprowadza tylko przewidywane pola, klasy i wyniki. Więcej informacji na temat szkolenia i wnioskowania można znaleźć w przykładowym notatniku Wprowadzenie do SageMaker TensorFlow – Wykrywanie obiektów.

Korzystaj z wbudowanych algorytmów programu SageMaker w interfejsie użytkownika JumpStart

Możesz także użyć wykrywania obiektów SageMaker TensorFlow i dowolnych innych wbudowanych algorytmów za pomocą kilku kliknięć za pośrednictwem interfejsu użytkownika JumpStart. JumpStart to funkcja programu SageMaker, która umożliwia trenowanie i wdrażanie wbudowanych algorytmów i wstępnie wytrenowanych modeli z różnych platform ML i centrów modeli za pośrednictwem interfejsu graficznego. Umożliwia także wdrażanie w pełni rozwiniętych rozwiązań ML, które łączą modele ML i różne inne usługi AWS w celu rozwiązania docelowego przypadku użycia.

Poniżej znajdują się dwa filmy wideo, które pokazują, jak można odtworzyć ten sam proces dostrajania i wdrażania, który właśnie przeszliśmy, za pomocą kilku kliknięć za pomocą interfejsu użytkownika JumpStart.

Dostosuj wstępnie wytrenowany model

Oto proces dostrajania tego samego wstępnie wytrenowanego modelu wykrywania obiektów.

Wdróż dopracowany model

Po zakończeniu trenowania modelu można jednym kliknięciem bezpośrednio wdrożyć model w trwałym punkcie końcowym w czasie rzeczywistym.

Wnioski

W tym poście ogłosiliśmy uruchomienie wbudowanego algorytmu wykrywania obiektów SageMaker TensorFlow. Dostarczyliśmy przykładowy kod, jak przeprowadzić uczenie transferu na niestandardowym zestawie danych przy użyciu wstępnie wytrenowanego modelu z TensorFlow przy użyciu tego algorytmu.

Aby uzyskać więcej informacji, sprawdź dokumentacja oraz przykładowy notatnik.


O autorach

Transfer uczenia się dla modeli wykrywania obiektów TensorFlow w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Vivek Madan jest naukowcem z Zespół Amazon SageMaker JumpStart. Uzyskał doktorat na Uniwersytecie Illinois w Urbana-Champaign i był badaczem podoktoranckim w Georgia Tech. Jest aktywnym badaczem w dziedzinie uczenia maszynowego i projektowania algorytmów. Publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA.

Transfer uczenia się dla modeli wykrywania obiektów TensorFlow w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Joao Moura jest specjalistą ds. rozwiązań AI/ML w Amazon Web Services. Koncentruje się głównie na przypadkach użycia NLP i pomaga klientom zoptymalizować szkolenie i wdrażanie modelu uczenia głębokiego. Jest również aktywnym zwolennikiem rozwiązań ML typu low-code oraz sprzętu wyspecjalizowanego w ML.

Transfer uczenia się dla modeli wykrywania obiektów TensorFlow w Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Ashish Khetan jest Starszym Naukowcem Stosowanym z Wbudowane algorytmy Amazon SageMaker i pomaga rozwijać algorytmy uczenia maszynowego. Doktoryzował się na University of Illinois Urbana Champaign. Jest aktywnym badaczem uczenia maszynowego i wnioskowania statystycznego. Opublikował wiele artykułów na konferencjach NeurIPS, ICML, ICLR, JMLR, ACL i EMNLP.

Znak czasu:

Więcej z Uczenie maszynowe AWS