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

Aby wytrenować model oznaczania obrazów, musisz udostępnić 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żyć do oznaczania obrazów etykietami na urządzeniu w aplikacji. Ogólne informacje o tej funkcji znajdziesz w omówieniu.

AutoML Vision Edge to usługa Google Cloud. Korzystanie z usługi podlega Umowie licencyjnej na Google Cloud Platform i Szczegółowym warunkom korzystania z usługi oraz podlega odpowiednim opłatom. Informacje rozliczeniowe znajdziesz na stronie Ceny AutoML.

Zanim zaczniesz

1. Zbieranie danych do trenowania

Najpierw musisz utworzyć zbiór danych treningowych 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 żadnego obrazu nie może przekraczać 30 MB. Pamiętaj, że AutoML Vision Edge skaluje większość obrazów podczas wstępnego przetwarzania w dół, więc przesyłanie obrazów o bardzo wysokiej rozdzielczości zwykle nie zwiększa dokładności.

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

  • Dla każdej etykiety dołącz różne kąty, rozdzielczość i tło.

  • Dane treningowe powinny być jak najbardziej zbliżone do danych, dla których tworzone są 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 zawierać rozmyte obrazy o niskiej rozdzielczości.

  • Modele generowane przez AutoML Vision Edge są zoptymalizowane pod kątem fotografowania obiektów w świecie rzeczywistym. Może 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, prawdopodobnie modelu tego też nie będzie można wytrenować.

Po przygotowaniu obrazów do trenowania przygotuj je do zaimportowania do Firebase. Dostępne są 3 opcje:

Opcja 1. Uporządkowane archiwum ZIP

Uporządkuj obrazy do trenowania w katalogi, każdy z nazwami od etykiety i zawierający obrazy stanowiące przykłady tej etykiety. Następnie skompresuj strukturę katalogów do archiwum ZIP.

Nazwy katalogów w tym archiwum ZIP mogą składać się z maksymalnie 32 znaków ASCII. Mogą zawierać tylko znaki alfanumeryczne i 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 adresami URL poszczególnych obrazów oraz opcjonalnie z prawidłowymi etykietami każdego obrazu. Ta opcja jest przydatna, gdy używasz 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 projektu Google Cloud Twojego projektu Firebase.

Więcej informacji o przygotowywaniu pliku CSV znajdziesz w sekcji Przygotowywanie danych do trenowania w dokumentacji Cloud AutoML Vision.

Opcja 3. Obrazy bez etykiet

Po przesłaniu obrazów do trenowania oznacz je w konsoli Firebase – pojedynczo lub w nieuporządkowanym pliku ZIP. Zobacz następny krok.

2. Trenowanie modelu

Następnie wytrenuj model z użyciem 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 do trenowania i kliknij Utwórz zbiór danych.

  3. Na karcie Importuj zbioru danych prześlij archiwum ZIP z obrazami do trenowania lub plik CSV zawierający lokalizacje Cloud Storage, do których zostały przesłane. Zobacz Zbieranie 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 Trenuj kliknij Rozpocznij trenowanie.

    1. Nazwij model i wybierz typ modelu Edge.

    2. Skonfiguruj te ustawienia trenowania, które regulują wydajność wygenerowanego modelu:

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

      Maksymalny czas (w godzinach obliczeniowych) przeznaczony na trenowanie modelu. Dłuższy czas trenowania zapewnia zwykle dokładniejszy model.

      Pamiętaj, że trenowanie można ukończyć w krótszym czasie, jeśli system ustali, że model jest zoptymalizowany, a dodatkowe trenowanie nie poprawi dokładności. Płacisz tylko za rzeczywiście wykorzystane godziny.

      Typowe czasy trenowania
      Bardzo małe zestawy1 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. zdjęć13 godzin
      1 000 000 obrazów18 godzin

3. Ocenianie modelu

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

Ważnym zastosowaniem tej strony jest określenie progu ufności, który najlepiej sprawdzi się w przypadku Twojego modelu. Próg ufności to minimalny poziom ufności, jaki musi mieć model, aby przypisać etykietę 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 oznaczone, do liczby obrazów, które model oznaczył etykietami przy określonym poziomie. Gdy model ma dużą precyzję, nieprawidłowo przypisuje etykiety rzadziej (mniej wyników fałszywie pozytywnych).

Czułość to stosunek liczby obrazów, które zostały prawidłowo oznaczone etykietami, do liczby obrazów zawierających treści, które model powinien był w stanie oznaczyć etykietą. Gdy model ma dużą czułość, rzadziej przypisuje etykietę (mniej wyników fałszywie negatywnych).

To, czy wybierzesz optymalizację pod kątem precyzji czy czułości, zależy od konkretnego przypadku użycia. Więcej informacji znajdziesz w przewodniku dla początkujących użytkowników AutoML Vision i w przewodniku po systemach uczących się, które promują integrację społeczną – AutoML.

Gdy znajdziesz próg ufności, który generuje odpowiednie dla Ciebie wskaźniki, zapisz go. Użyjesz go do skonfigurowania modelu w aplikacji. Za pomocą tego narzędzia możesz w każdej chwili uzyskać odpowiednią wartość progu.

4. Publikowanie lub pobieranie modelu

Jeśli wydajność modelu spełnia Twoje oczekiwania i chcesz go wykorzystać w aplikacji, masz 3 opcje, spośród których możesz wybrać dowolną kombinację: wdrożyć model na potrzeby prognozowania online, opublikować go w Firebase lub pobrać model i dodać go do pakietu z aplikacją.

Wdróż model

Na karcie Testowanie i użycie zbioru danych możesz wdrożyć model do prognozowania online, który uruchamia go w chmurze. Tę opcję znajdziesz w dokumentacji Cloud AutoML. Pozostałe 2 opcje opisaliśmy w dokumentacji w tej witrynie.

Publikowanie modelu

Po opublikowaniu modelu w Firebase możesz go aktualizować bez publikowania nowej wersji aplikacji. Możesz też korzystać ze Zdalnej konfiguracji i Testów A/B do dynamicznego udostępniania różnych modeli różnym grupom użytkowników.

Jeśli zdecydujesz się udostępniać model tylko w ramach hostingu w Firebase i nie chcesz go połączyć z aplikacją, możesz zmniejszyć początkowy rozmiar pobieranej aplikacji. Pamiętaj jednak, że jeśli model nie jest połączony 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 dwóch metod:

  • Pobierz model TF Lite ze strony Testowanie i użytkowanie zbioru danych w konsoli Google Cloud, a potem prześlij go na stronie Model niestandardowy w konsoli Firebase. Zwykle jest to najprostszy sposób na opublikowanie pojedynczego modelu.
  • Publikowanie modelu bezpośrednio z projektu Google Cloud w Firebase za pomocą pakietu Admin SDK. Przy użyciu tej metody możesz zbiorczo opublikować kilka modeli lub utworzyć automatyczne potoki publikowania.

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

  1. Zainstaluj i zainicjuj pakiet SDK.

  2. Opublikuj model.

    Musisz podać identyfikator zasobu modelu, czyli ciąg znaków podobny do tego 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 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);
    

Pobierz model i połącz go z aplikacją

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

Jeśli opublikujesz model i połączysz go z aplikacją, aplikacja będzie używać najnowszej dostępnej wersji.

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

Dalsze kroki

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