Trenowanie modelu oznaczania obrazów za pomocą AutoML Vision Edge

Aby wytrenować model etykietowania obrazów, musisz podać AutoML Vision Edge zestaw obrazów i odpowiadających im etykiet. AutoML Vision Edge używa tego zbioru danych do wytrenowania w chmurze nowego modelu, którego możesz używać do oznaczania obrazów na urządzeniu w swojej aplikacji. (Ogólne informacje o tej funkcji znajdziesz w tym artykule).

AutoML Vision Edge to usługa Google Cloud. Korzystanie z usługi podlega umowie licencyjnej Google Cloud Platform i szczegółowym warunkom korzystania z usługi, a opłaty są naliczane zgodnie z tymi dokumentami. Informacje rozliczeniowe znajdziesz na stronie Cennik AutoML.

Zanim zaczniesz

1. Zbieranie danych do trenowania

Najpierw musisz przygotować treningowy zbiór danych z obrazami oznaczonymi etykietami. Pamiętaj o tych wskazówkach:

  • Obrazy muszą być w jednym z tych formatów: JPEG, PNG, GIF, BMP, ICO.

  • Rozmiar każdego obrazu nie może przekraczać 30 MB. Pamiętaj, że AutoML Vision Edge zmniejsza rozmiar większości obrazów podczas przetwarzania wstępnego, więc dostarczanie obrazów o bardzo wysokiej rozdzielczości zwykle nie zwiększa dokładności.

  • Dodaj co najmniej 10, a najlepiej 100 przykładów każdej etykiety.

  • Do każdej etykiety dodaj zdjęcia z różnych perspektyw, w różnych rozdzielczościach i na różnych tłach.

  • Dane treningowe powinny być jak najbardziej podobne do danych, na podstawie których mają być generowane prognozy. Jeśli na przykład Twój przypadek użycia obejmuje rozmyte obrazy o niskiej rozdzielczości (np. z kamery monitoringu), dane treningowe powinny składać się z rozmytych obrazów o niskiej rozdzielczości.

  • Modele wygenerowane przez AutoML Vision Edge są zoptymalizowane pod kątem zdjęć obiektów w rzeczywistym świecie. Mogą nie działać dobrze w przypadku zdjęć rentgenowskich, rysunków odręcznych, zeskanowanych dokumentów, rachunków itp.

    Modele nie mogą też zwykle przewidywać etykiet, których nie mogą przypisać ludzie. Jeśli człowiek nie jest w stanie przypisać etykiet, patrząc na obraz przez 1–2 sekundy, prawdopodobnie nie da się wytrenować modelu, aby to robił.

Gdy obrazy do trenowania będą gotowe, przygotuj je do zaimportowania do Firebase. Masz 3 możliwości:

Opcja 1. Uporządkowane archiwum ZIP

Uporządkuj obrazy do trenowania w katalogach, z których każdy ma nazwę etykiety i zawiera obrazy będące przykładami tej etykiety. Następnie skompresuj strukturę katalogu do archiwum ZIP.

Nazwy katalogów w tym archiwum ZIP mogą mieć maksymalnie 32 znaki ASCII i zawierać tylko znaki alfanumeryczne oraz znak podkreślenia (_).

Przykład:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

Opcja 2. Cloud Storage z indeksem CSV

Prześlij obrazy do trenowania do Google Cloud Storage i przygotuj plik CSV z listą adresów URL poszczególnych obrazów oraz opcjonalnie z prawidłowymi etykietami każdego obrazu. Ta opcja jest przydatna w przypadku bardzo dużych zbiorów danych.

Na przykład prześlij obrazy do Cloud Storage i przygotuj plik CSV podobny do tego:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

Obrazy muszą być przechowywane w zasobniku, który jest częścią odpowiedniego Google Cloud projektu w projekcie Firebase.

Więcej informacji o przygotowywaniu pliku CSV znajdziesz w artykule Przygotowywanie danych treningowych w dokumentacji Cloud AutoML Vision.

Opcja 3. Obrazy bez etykiet

Po przesłaniu obrazów treningowych do Firebase konsoli oznacz je etykietami, przesyłając je pojedynczo lub w nieustrukturyzowanym pliku ZIP. Przejdź do następnego kroku.

2. Trenowanie modelu

Następnie wytrenuj model za pomocą swoich obrazów:

  1. Otwórz stronę Zbiory danych Vision w konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.

  2. Kliknij Nowy zbiór danych, podaj nazwę zbioru danych, wybierz typ modelu, który chcesz wytrenować, i kliknij Utwórz zbiór danych.

  3. Na karcie Import zbioru danych prześlij archiwum ZIP z obrazami treningowymi lub plik CSV zawierający lokalizacje Cloud Storage, do których zostały przesłane. Zobacz Zbieranie danych do trenowania.

  4. Po zakończeniu importowania użyj karty Obrazy, aby zweryfikować dane treningowe i oznaczyć etykietami obrazy bez etykiet.

  5. Na karcie Trenowanie kliknij Rozpocznij trenowanie.

    1. Nazwij model i wybierz typ modelu Edge.

    2. Skonfiguruj te ustawienia trenowania, które wpływają na wydajność wygenerowanego modelu:

      Optymalizuj model pod kątem… Konfiguracja modelu, która ma być używana. Możesz trenować szybsze i mniejsze modele, gdy ważna jest mała latencja lub mały rozmiar pakietu, albo wolniejsze i większe modele, gdy najważniejsza jest dokładność.
      Budżet godzinowy węzła

      Maksymalny czas (w godzinach obliczeniowych) przeznaczony na trenowanie modelu. Dłuższy czas trenowania zwykle przekłada się na większą dokładność modelu.

      Pamiętaj, że trenowanie może się zakończyć wcześniej, jeśli system uzna, że model jest zoptymalizowany, a dodatkowe trenowanie nie zwiększy jego dokładności. Opłaty są naliczane tylko za faktycznie wykorzystane godziny.

      Typowe czasy trenowania
      Bardzo małe zbiory1 godzina
      500 obrazów2 godziny
      1000 obrazów3 godziny
      5000 obrazów6 godzin
      10 000 obrazów7 godzin
      50 000 obrazów11 godzin
      100 tys. obrazów13 godzin
      1 000 000 obrazów18 godzin

3. Ocenianie modelu

Po zakończeniu trenowania możesz kliknąć kartę Ocena, aby wyświetlić wskaźniki wydajności modelu.

Jednym z ważnych zastosowań tej strony jest określenie progu ufności, który najlepiej sprawdza się w przypadku Twojego modelu. Próg ufności określa minimalny poziom ufności modelu wymagany do przypisania etykiety do obrazu. Przesuwając suwak Poziom ufności, możesz sprawdzić, jak różne progi wpływają na wydajność modelu. Wydajność modelu jest mierzona za pomocą 2 rodzajów danych: precyzjiczułości.

W kontekście klasyfikacji obrazów precyzja to stosunek liczby obrazów, które zostały prawidłowo oznaczone, do liczby obrazów oznaczonych przez model przy wybranym progu. Model o wysokiej precyzji rzadziej przypisuje etykiety nieprawidłowo (mniej wyników fałszywie pozytywnych).

Recall to stosunek liczby obrazów, które zostały prawidłowo oznaczone, do liczby obrazów, które zawierały treści, które model powinien był być w stanie oznaczyć. Gdy model ma wysoką czułość, rzadziej nie przypisuje żadnej etykiety (mniej wyników fałszywie negatywnych).

To, czy zoptymalizujesz precyzję czy kompletność, zależy od konkretnego przypadku użycia. Więcej informacji znajdziesz w przewodniku dla początkujących użytkowników AutoML Visionprzewodniku po inkluzywnym uczeniu maszynowym – AutoML.

Gdy znajdziesz próg ufności, który generuje satysfakcjonujące Cię dane, zanotuj go. Użyjesz go do skonfigurowania modelu w aplikacji. (Możesz w każdej chwili użyć tego narzędzia, aby uzyskać odpowiednią wartość progową).

4. Publikowanie lub pobieranie modelu

Jeśli jesteś zadowolony(-a) z skuteczności modelu i chcesz go używać w aplikacji, masz 3 opcje, z których możesz wybrać dowolną kombinację: wdrożyć model do prognozowania online, opublikować go w Firebase lub pobrać i dołączyć do aplikacji.

Wdróż model

Na karcie Testy i użytkowanie zbioru danych możesz wdrożyć model do prognozowania online, które uruchamia model w chmurze. Ta opcja jest opisana w dokumentacji Cloud AutoML. Dokumenty w tej witrynie dotyczą pozostałych 2 opcji.

Publikowanie modelu

Publikując model w Firebase, możesz go aktualizować bez wydawania nowej wersji aplikacji. Możesz też używać Remote ConfigA/B Testing, aby dynamicznie udostępniać różne modele różnym grupom użytkowników.

Jeśli zdecydujesz się udostępnić model tylko przez hostowanie go w Firebase, a nie dołączyć go do aplikacji, możesz zmniejszyć początkowy rozmiar pobierania aplikacji. Pamiętaj jednak, że jeśli model nie jest dołączony do aplikacji, żadne funkcje z nim związane nie będą dostępne, dopóki aplikacja nie pobierze go po raz pierwszy.

Aby opublikować model, możesz użyć jednej z tych 2 metod:

  • Pobierz model TF Lite ze strony Testy i użytkowanie w konsoli Google Cloud, a następnie prześlij go na stronę Model niestandardowy w konsoli Firebase. Jest to zwykle najprostszy sposób opublikowania pojedynczego modelu.
  • Opublikuj model bezpośrednio z projektu Google Cloud w Firebase za pomocą pakietu Admin SDK. Możesz użyć tej metody do publikowania wielu modeli jednocześnie lub do tworzenia zautomatyzowanych potoków publikowania.

Aby opublikować model za pomocą interfejsu model management API z pakietu Admin SDK:

  1. Zainstaluj i zainicjuj pakiet SDK.

  2. Opublikuj model.

    Musisz podać identyfikator zasobu modelu, czyli ciąg znaków, który wygląda jak w tym przykładzie:

    projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
    PROJECT_NUMBER Numer projektu zasobnika Cloud Storage zawierającego model. Może to być Twój projekt Firebase lub inny projekt Google Cloud. Tę wartość znajdziesz na stronie Ustawienia w Firebase konsoli lub na pulpicie konsoli Google Cloud.
    MODEL_ID Identyfikator modelu uzyskany z interfejsu AutoML Cloud API.

    Python

    # First, import and initialize the SDK.
    
    # Get a reference to the AutoML model
    source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format(
        # See above for information on these values.
        project_number,
        model_id
    ))
    
    # Create the model object
    tflite_format = ml.TFLiteFormat(model_source=source)
    model = ml.Model(
        display_name="example_model",  # This is the name you will use from your app to load the model.
        tags=["examples"],             # Optional tags for easier management.
        model_format=tflite_format)
    
    # Add the model to your Firebase project and publish it
    new_model = ml.create_model(model)
    new_model.wait_for_unlocked()
    ml.publish_model(new_model.model_id)
    

    Node.js

    // First, import and initialize the SDK.
    
    (async () => {
      // Get a reference to the AutoML model. See above for information on these
      // values.
      const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`;
    
      // Create the model object and add the model to your Firebase project.
      const model = await ml.createModel({
        displayName: 'example_model',  // This is the name you use from your app to load the model.
        tags: ['examples'],  // Optional tags for easier management.
        tfliteModel: { automlModel: automlModel },
      });
    
      // Wait for the model to be ready.
      await model.waitForUnlocked();
    
      // Publish the model.
      await ml.publishModel(model.modelId);
    
      process.exit();
    })().catch(console.error);
    

Pobieranie modelu i łączenie go z aplikacją

Dzięki dołączeniu modelu do aplikacji możesz mieć pewność, że funkcje ML aplikacji będą nadal działać, gdy model hostowany w Firebase będzie niedostępny.

Jeśli opublikujesz model i dołączysz go do aplikacji, będzie ona używać najnowszej dostępnej wersji.

Aby pobrać model, kliknij TF Lite na stronie Testy i użytkowanie zbioru danych.

Dalsze kroki

Po opublikowaniu lub pobraniu modelu dowiedz się, jak go używać w aplikacjach na iOSAndroida.