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

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

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 oraz jest odpowiednio rozliczane. Informacje rozliczeniowe znajdziesz na stronie Ceny AutoML.

Zanim zaczniesz

1. Zbieranie danych do trenowania

Najpierw musisz przygotować zbiór danych treningowych z oznaczonymi obrazami. 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 rozdzielczość większości obrazów podczas wstępnego przetwarzania, więc udostępnianie obrazów w bardzo wysokiej rozdzielczości nie przynosi zwykle korzyści w zakresie dokładności.

  • Dodaj co najmniej 10 a najlepiej 100 lub więcej przykładów każdej etykiety.

  • Uwzględnij różne kąty, rozdzielczości i tła dla każdej etykiety.

  • Dane treningowe powinny być jak najbardziej zbliżone do danych, na podstawie których mają być tworzone prognozy. Jeśli na przykład Twój przypadek użycia obejmuje niewyraźne obrazy o niskiej rozdzielczości (np. z kamery bezpieczeństwa), dane szkoleniowe powinny składać się z niewyraźnych obrazów o niskiej rozdzielczości.

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

    Modele nie mogą też przewidywać etykiet, których ludzie nie mogą przypisać. Jeśli więc człowiek nie może przypisać etykiet, patrząc na obraz przez 1–2 sekundy, model prawdopodobnie też nie będzie w stanie tego zrobić.

Gdy masz już gotowe obrazy do trenowania, przygotuj je do zaimportowania do Firebase. Masz 3 opcje:

Opcja 1. Uporządkowane archiwum ZIP

Uporządkuj obrazy treningowe w katalogach, które mają nazwy odpowiadające etykietom i zawierają obrazy będące przykładami danej etykiety. Następnie skompresuj strukturę katalogu do archiwum ZIP.

Nazwy katalogów w tym archiwum ZIP mogą składać się z maksymalnie 32 znaków 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 każdego obrazu i 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 usługi Cloud Storage i przygotuj plik CSV w ten sposób:

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 należącym do odpowiedniego projektu Google Cloud Twojego projektu 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 etykietuj obrazy szkoleniowe w konsoli Firebase, przesyłając je pojedynczo lub w nieustrukturyzowanym pliku ZIP. Zobacz następny krok.

2. Trenowanie modelu

Następnie wytrenuj model na podstawie swoich obrazów:

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

  2. Kliknij Nowy zbiór danych, podaj nazwę zbioru danych, wybierz typ modelu do trenowania i kliknij Utwórz zbiór danych.

  3. Na karcie Import w swoim zbiorze danych prześlij archiwum ZIP ze swoimi obrazami treningowymi lub plik CSV zawierający ich Cloud Storagelokalizacje. Zobacz Przygotowanie danych do trenowania.

  4. Po zakończeniu zadania importu użyj karty Obrazy, aby sprawdzić dane do trenowania i oznaczyć etykietami wszystkie obrazy bez etykiet.

  5. Na karcie Trenowanie kliknij Rozpocznij trenowanie.

    1. Nazwij model i wybierz typ modelu Edge.

    2. Skonfiguruj te ustawienia treningu, które określają wydajność wygenerowanego modelu:

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

      Maksymalny czas (w godzinach obliczeniowych) przeznaczony na trenowanie modelu. Więcej czasu na trenowanie zwykle przekłada się na dokładniejszy model.

      Pamiętaj, że trenowanie może zakończyć się w krótszym czasie niż określony, jeśli system uzna, że model jest zoptymalizowany i dodatkowe trenowanie nie poprawi jego dokładności. Opłaty są naliczane tylko za faktycznie wykorzystane godziny.

      Typowe czasy trenowania
      bardzo małe zestawy,1 godzina
      500 obrazów2 godziny
      1000 obrazów3 godziny
      5000 obrazów6 godzin
      10 tys. obrazów7 godzin
      50 tys. 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ć dane o skuteczności modelu.

Ta strona umożliwia m.in. określenie progu ufności, który najlepiej pasuje do 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 zobaczyć, jak różne progi wpływają na wydajność modelu. Skuteczność modelu jest mierzona za pomocą 2 rodzajów danych: precyzji i czułości.

W kontekście klasyfikacji obrazów precyzja to stosunek liczby obrazów, które zostały prawidłowo otagowane, do liczby obrazów, które model otagował przy wybranej wartości progowej. Gdy model ma wysoką precyzję, rzadziej przypisuje etykiety błędnie (mniej wyników fałszywie pozytywnych).

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

To, czy optymalizujesz model pod kątem dokładności czy trafności, zależy od przypadku użycia. Więcej informacji znajdziesz w przewodniku dla początkujących użytkowników AutoML Visionprzewodniku Inclusive ML – AutoML.

Gdy znajdziesz próg ufności, który generuje wskaźniki, które Ci odpowiadają, zanotuj go. Użyjesz go do skonfigurowania modelu w aplikacji. (W dowolnym momencie możesz użyć tego narzędzia, aby uzyskać odpowiednią wartość progową).

4. Publikowanie i pobieranie modelu

Jeśli jesteś zadowolony z wyników działania modelu i chcesz go używać w aplikacji, masz do wyboru 3 opcje: wdrożenie modelu na potrzeby prognozowania online, opublikowanie modelu w Firebase lub pobranie modelu i dodanie go do aplikacji.

Wdróż model

Na karcie Testowanie i użycie zbioru danych możesz wdrożyć model do prognozowania online, który uruchamia go w chmurze. Ta opcja jest opisana w dokumentacji Cloud AutoML. Dokumenty na tej stronie 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ć funkcji Remote ConfigA/B Testing, aby dynamicznie wyświetlać różne modele różnym grupom użytkowników.

Jeśli zdecydujesz się udostępnić tylko model, hostując go w Firebase, a nie w pakiecie z aplikacją, możesz zmniejszyć początkowy rozmiar pobierania aplikacji. Pamiętaj jednak, że jeśli model nie jest w pakiecie z aplikacją, funkcje związane z modelem nie będą dostępne, dopóki aplikacja nie pobierze modelu po raz pierwszy.

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

  • Pobierz model TF Lite ze strony Testy i użytkowanie w konsoli Google Cloud, a następnie prześlij model na stronie Model niestandardowy w konsoli Firebase. Jest to zazwyczaj najprostszy sposób publikowania pojedynczego modelu.
  • Opublikuj model bezpośrednio z projektu Google Cloud w Firebase za pomocą pakietu Admin SDK. Możesz użyć tej metody, aby opublikować kilka modeli w grupie lub utworzyć automatyczne procesy publikowania.

Aby opublikować model za pomocą interfejsu API do zarządzania modelem z pakietu Admin SDK:

  1. Zainstaluj i inicjuj pakiet SDK.

  2. Opublikuj model.

    Musisz podać identyfikator zasobu modelu, który jest ciągiem znaków podobnym do tego:

    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 konsoli Firebase lub w panelu konsoli Google Cloud.
    MODEL_ID Identyfikator modelu pobrany 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 i łączenie modelu z aplikacją

Dzięki połączeniu modelu z aplikacją masz pewność, że jej funkcje ML nadal będą działać, gdy model hostowany przez Firebase będzie niedostępny.

Jeśli opublikujesz model i umieścisz go w pakiecie z aplikacją, aplikacja będzie używać najnowszej dostępnej wersji.

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

Dalsze kroki

Po opublikowaniu lub pobraniu modelu dowiedz się, jak go używać w aplikacjach iOS+Android.