Wytrenuj model etykietowania obrazów za pomocą AutoML Vision Edge

Aby wytrenować model etykietowania obrazów, udostępniasz AutoML Vision Edge zestaw obrazów i odpowiadające im etykiety. AutoML Vision Edge wykorzystuje ten zbiór danych do uczenia nowego modelu w chmurze, którego możesz używać do etykietowania obrazów na urządzeniu w swojej aplikacji. (Zobacz Omówienie , aby uzyskać ogólne informacje na temat tej funkcji.)

AutoML Vision Edge to usługa Google Cloud. Korzystanie z usługi podlega Umowie licencyjnej Google Cloud Platform i Warunkom szczegółowym usługi i jest odpowiednio rozliczane. Informacje rozliczeniowe można znaleźć na stronie Cennik AutoML.

Zanim zaczniesz

1. Zbierz dane treningowe

Najpierw musisz utworzyć zbiór danych szkoleniowych składający się z oznaczonych obrazów. Należy pamiętać o następujących wskazówkach:

  • Obrazy muszą być w jednym z następujących formatów: JPEG, PNG, GIF, BMP, ICO.

  • Każdy obraz musi mieć 30 MB lub mniej. Należy pamiętać, że AutoML Vision Edge skaluje większość obrazów podczas wstępnego przetwarzania, więc dostarczanie obrazów o bardzo wysokiej rozdzielczości zazwyczaj nie zapewnia korzyści w zakresie dokładności.

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

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

  • Dane uczące powinny być jak najbardziej zbliżone do danych, na podstawie których mają zostać wykonane prognozy. Na przykład, jeśli przypadek użycia obejmuje rozmyte obrazy o niskiej rozdzielczości (np. z kamery bezpieczeństwa), dane szkoleniowe powinny składać się z rozmytych obrazów o niskiej rozdzielczości.

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

    Ponadto modele generalnie nie są w stanie przewidzieć etykiet, których ludzie nie mogą przypisać. Zatem jeśli człowiek nie potrafi przypisać etykiet, patrząc na obraz przez 1–2 sekundy, modelu prawdopodobnie nie da się też tego wyszkolić.

Gdy będziesz mieć gotowe obrazy szkoleniowe, przygotuj je do zaimportowania do Firebase. Masz trzy opcje:

Opcja 1: Strukturalne archiwum zip

Uporządkuj obrazy szkoleniowe w katalogi, z których każdy nosi nazwę etykiety i zawiera obrazy będące przykładami tej etykiety. Następnie skompresuj strukturę katalogów do archiwum zip.

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

Na 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: Magazyn w chmurze z indeksem CSV

Prześlij obrazy treningowe do Google Cloud Storage i przygotuj plik CSV zawierający adres URL każdego obrazu oraz, opcjonalnie, prawidłowe etykiety każdego obrazu. Ta opcja jest przydatna w przypadku korzystania z bardzo dużych zbiorów danych.

Na przykład prześlij swoje obrazy do Cloud Storage i przygotuj plik CSV w następujący 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 będącym częścią odpowiedniego projektu Google Cloud powiązanego z Twoim projektem Firebase.

Aby uzyskać więcej informacji na temat przygotowywania pliku CSV, zobacz Przygotowywanie danych szkoleniowych w dokumentacji Cloud AutoML Vision.

Opcja 3: obrazy bez etykiet

Oznacz swoje obrazy szkoleniowe w konsoli Firebase po ich przesłaniu, pojedynczo lub w nieustrukturyzowanym pliku ZIP. Zobacz następny krok.

2. Wytrenuj swój model

Następnie wytrenuj model, korzystając ze swoich obrazów:

  1. Otwórz stronę Zbiory danych Vision w konsoli Google Cloud. Po wyświetleniu monitu wybierz projekt.

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

  3. Na karcie Import zbioru danych prześlij archiwum zip obrazów szkoleniowych lub plik CSV zawierający lokalizacje Cloud Storage, do których je przesłałeś. Zobacz Tworzenie danych treningowych .

  4. Po zakończeniu zadania importowania użyj karty Obrazy , aby zweryfikować dane szkoleniowe i oznaczyć wszelkie nieoznaczone obrazy.

  5. Na karcie Pociąg kliknij Rozpocznij szkolenie .

    1. Nazwij model i wybierz typ modelu Edge .

    2. Skonfiguruj następujące ustawienia uczenia, które regulują wydajność wygenerowanego modelu:

      Zoptymalizuj model pod kątem... Konfiguracja modelu do użycia. Możesz trenować szybsze, mniejsze modele, gdy ważne są małe opóźnienia lub mały rozmiar pakietu, lub wolniejsze, większe modele, gdy najważniejsza jest dokładność.
      Budżet godzinowy węzła

      Maksymalny czas (w godzinach obliczeniowych) spędzony na szkoleniu modelu. Dłuższy czas szkolenia zazwyczaj skutkuje dokładniejszym modelem.

      Należy pamiętać, że szkolenie można ukończyć w czasie krótszym niż określony, jeśli system uzna, że ​​model jest zoptymalizowany, a dodatkowe szkolenie nie poprawi dokładności. Płacisz tylko za faktycznie wykorzystane godziny.

      Typowe godziny treningów
      Bardzo małe zestawy 1 godzina
      500 obrazów 2 godziny
      1000 obrazów 3 godziny
      5000 obrazów 6 godzin
      10 000 obrazów 7 godzin
      50 000 obrazów 11 godzin
      100 000 obrazów 13 godzin
      1 000 000 obrazów 18 godzin

3. Oceń swój model

Po zakończeniu uczenia możesz kliknąć kartę Oceń , aby wyświetlić metryki 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 to minimalna pewność, jaką musi mieć model, aby przypisać etykietę do obrazu. Przesuwając suwak Próg ufności , możesz zobaczyć, jak różne progi wpływają na wydajność modelu. Wydajność modelu mierzy się za pomocą dwóch wskaźników: precyzji i przypominalności .

W kontekście klasyfikacji obrazów precyzja to stosunek liczby obrazów, które zostały poprawnie oznaczone, do liczby obrazów, które model opisał przy wybranym progu. Gdy model ma wysoką precyzję, rzadziej przypisuje niepoprawne etykiety (mniej wyników fałszywie dodatnich).

Przypomnienie to stosunek liczby obrazów, które zostały prawidłowo oznaczone, do liczby obrazów zawierających treść, którą model powinien był w stanie oznaczyć. Kiedy model jest dobrze zapamiętywany, rzadziej nie przypisuje żadnej etykiety (mniej wyników fałszywie negatywnych).

To, czy optymalizujesz pod kątem precyzji, czy przypominania, będzie zależeć od przypadku użycia. Aby uzyskać więcej informacji, zobacz przewodnik dla początkujących AutoML Vision i podręcznik Inclusive ML — AutoML .

Gdy znajdziesz próg ufności, który pozwala uzyskać satysfakcjonujące Cię metryki, zanotuj go; użyjesz progu ufności do skonfigurowania modelu w swojej aplikacji. (Możesz użyć tego narzędzia w dowolnym momencie, aby uzyskać odpowiednią wartość progową.)

4. Opublikuj lub pobierz swój model

Jeśli jesteś zadowolony z wydajności modelu i chcesz go użyć w aplikacji, masz trzy opcje, spośród których możesz wybrać dowolną kombinację: wdrożyć model do prognozowania online, opublikować model w Firebase lub pobrać model i spakować go z Twoją aplikacją.

Wdróż model

Na karcie Testuj i używaj w zestawie danych możesz wdrożyć model na potrzeby prognozowania online, które uruchamia model w chmurze. Ta opcja jest opisana w dokumentacji Cloud AutoML . Dokumenty na tej stronie dotyczą pozostałych dwóch opcji.

Opublikuj model

Publikując model w Firebase, możesz zaktualizować model bez wydawania nowej wersji aplikacji, a także możesz użyć zdalnej konfiguracji i testów A/B, aby dynamicznie udostępniać różne modele różnym grupom użytkowników.

Jeśli zdecydujesz się udostępnić model tylko poprzez hostowanie go w Firebase, a nie łączyć go z aplikacją, możesz zmniejszyć początkowy rozmiar pobieranej aplikacji. Pamiętaj jednak, że jeśli model nie jest dołączony do Twojej aplikacji, wszelkie 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 dwóch metod:

  • Pobierz model TF Lite ze strony Testuj i używaj swojego zbioru danych w konsoli Google Cloud, a następnie prześlij model na stronie Model niestandardowy w konsoli Firebase. Jest to zazwyczaj najłatwiejszy sposób opublikowania pojedynczego modelu.
  • Opublikuj model bezpośrednio z projektu Google Cloud w Firebase, korzystając z pakietu Admin SDK. Tej metody można użyć do zbiorczego publikowania kilku modeli lub do tworzenia automatycznych potoków publikowania.

Aby opublikować model za pomocą interfejsu API zarządzania modelami pakietu Admin SDK:

  1. Zainstaluj i zainicjuj zestaw SDK .

  2. Opublikuj model.

    Będziesz musiał określić identyfikator zasobu modelu, który jest ciągiem znaków wyglądającym jak w poniższym 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 konsoli Firebase lub w panelu konsoli Google Cloud.
    MODEL_ID Identyfikator modelu, który uzyskałeś z API AutoML Cloud.

    Pyton

    # 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);
    

Pobierz i połącz model ze swoją aplikacją

Łącząc model z aplikacją, możesz mieć pewność, że funkcje uczenia maszynowego w aplikacji będą nadal działać, gdy model hostowany przez Firebase nie będzie dostępny.

Jeśli opublikujesz model i dołączysz go do aplikacji, aplikacja użyje najnowszej dostępnej wersji.

Aby pobrać model, kliknij TF Lite na stronie Testuj i używaj swojego zbioru danych.

Następne kroki

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