Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby wytrenować model etykietowania obrazów, dostarczasz AutoML Vision Edge zestaw obrazów i odpowiadających im etykiet. AutoML Vision Edge używa tego zestawu danych do trenowania nowego modelu w chmurze, którego możesz użyć do etykietowania obrazów na urządzeniu w swojej aplikacji. (Patrz Przegląd , 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 oraz Warunkom szczegółowym usługi i jest odpowiednio rozliczane. Informacje rozliczeniowe znajdziesz na stronie Ceny AutoML.

Zanim zaczniesz

1. Zbierz swoje dane treningowe

Najpierw musisz zebrać treningowy zestaw danych z obrazami oznaczonymi etykietami. Pamiętaj 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. Zwróć uwagę, że AutoML Vision Edge zmniejsza większość obrazów podczas przetwarzania wstępnego, więc generalnie nie ma korzyści z dokładności dostarczania obrazów o bardzo wysokiej rozdzielczości.

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

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

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

  • Modele generowane przez AutoML Vision Edge są zoptymalizowane pod kątem zdjęć 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 nie mogą generalnie przewidywać etykiet, których ludzie nie mogą przypisać. Tak więc, jeśli człowiek nie może przypisać etykiet, patrząc na obraz przez 1-2 sekundy, model prawdopodobnie również nie może być wyszkolony, aby to robić.

Gdy przygotujesz obrazy treningowe, przygotuj je do zaimportowania do Firebase. Masz trzy opcje:

Opcja 1: uporządkowane archiwum zip

Uporządkuj obrazy szkoleniowe w katalogi, każdy nazwany po etykiecie i zawierający obrazy, które są przykładami tej etykiety. Następnie skompresuj strukturę katalogów do archiwum zip.

Nazwy katalogów w tym archiwum zip mogą mieć długość do 32 znaków ASCII i mogą zawierać tylko 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: Cloud Storage z indeksem CSV

Prześlij obrazy treningowe do Google Cloud Storage i przygotuj plik CSV z adresem URL każdego obrazu i opcjonalnie poprawnymi etykietami dla każdego obrazu. Ta opcja jest przydatna w przypadku korzystania z bardzo dużych zestawów danych.

Na przykład prześlij swoje obrazy do Cloud Storage i przygotuj plik CSV podobny do poniższego:

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 projektu Firebase.

Zobacz Przygotowywanie danych treningowych w dokumentacji Cloud AutoML Vision, aby uzyskać więcej informacji o przygotowywaniu pliku CSV.

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. Trenuj swój model

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

  1. Otwórz stronę Vision Datasets w Google Cloud Console. Po wyświetleniu monitu wybierz swój projekt.

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

  3. Na karcie Importuj swojego zbioru danych prześlij archiwum ZIP ze swoimi obrazami treningowymi lub plik CSV zawierający lokalizacje Cloud Storage, do których je przesłałeś. Zobacz Gromadzenie danych treningowych .

  4. Po zakończeniu zadania importowania użyj karty Obrazy , aby zweryfikować dane uczące i oznaczyć wszystkie obrazy bez etykiet.

  5. Na karcie Szkolenie kliknij Rozpocznij szkolenie .

    1. Nazwij model i wybierz typ modelu Edge .

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

      Zoptymalizuj model dla... 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) przeznaczony na trenowanie modelu. Dłuższy czas uczenia zwykle skutkuje dokładniejszym modelem.

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

      Typowe godziny treningu
      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 szkolenia możesz kliknąć kartę Oceń , aby wyświetlić metryki wydajności dla modelu.

Jednym z ważnych zastosowań tej strony jest określenie progu ufności, który najlepiej pasuje do Twojego modelu. Próg ufności to minimalna ufność, 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 metryk: precyzji i odwołania .

W kontekście klasyfikacji obrazów precyzja to stosunek liczby obrazów, które zostały prawidłowo oznakowane, do liczby obrazów oznaczonych przez model przy wybranym progu. Gdy model ma wysoką precyzję, rzadziej przypisuje etykiety nieprawidłowo (mniej fałszywych trafień).

Przypominanie to stosunek liczby obrazów, które zostały prawidłowo oznaczone do liczby obrazów, które miały treść, którą model powinien móc oznaczyć. Gdy model ma wysoką pamięć, rzadziej przypisuje etykietę (mniej wyników fałszywie negatywnych).

To, czy zoptymalizujesz pod kątem precyzji, czy przypomnisz, będzie zależeć od przypadku użycia. Więcej informacji znajdziesz w przewodniku dla początkujących AutoML Vision i Inclusive ML Guide — AutoML .

Gdy znajdziesz próg ufności, który daje metryki, z którymi czujesz się komfortowo, 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, z których możesz wybrać dowolną kombinację: wdrożyć model do prognozowania online, opublikować model w Firebase lub pobrać model i połączyć go w pakiet z Twoją aplikacją.

Wdróż model

Na karcie Testuj i używaj zestawu danych możesz wdrożyć swój model do prognozowania online, który uruchamia go w chmurze. Ta opcja jest opisana w dokumentach Cloud AutoML . Dokumentacja na tej stronie dotyczy pozostałych dwóch opcji.

Opublikuj model

Publikując model w Firebase, możesz zaktualizować model bez wydawania nowej wersji aplikacji, a także za pomocą Zdalnej konfiguracji i testów A/B możesz 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 łą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, żadne funkcje związane z modelem nie będą dostępne, dopóki Twoja aplikacja nie pobierze modelu po raz pierwszy.

Aby opublikować swój model, możesz użyć jednej z dwóch metod:

  • Pobierz model TF Lite ze strony Testuj i używaj swojego zbioru danych w Google Cloud Console, 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 za pomocą pakietu Admin SDK. Tej metody można użyć do zbiorczego publikowania kilku modeli lub ułatwienia tworzenia automatycznych potoków publikowania.

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

  1. Zainstaluj i zainicjuj SDK .

  2. Opublikuj model.

    Będziesz musiał określić identyfikator zasobu modelu, który jest ciągiem podobnym do następującego przykładu:

    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 Google Cloud Console.
    MODEL_ID Identyfikator modelu uzyskany z interfejsu AutoML Cloud API.

    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 dołącz model do swojej aplikacji

Łącząc swój model z aplikacją, możesz mieć pewność, że funkcje ML aplikacji będą nadal działać, gdy model hostowany przez Firebase nie jest dostępny.

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

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

Następne kroki

Teraz, gdy już opublikowałeś lub pobrałeś model, dowiedz się, jak korzystać z modelu w aplikacjach na iOS+ i Androida .