Model wykrywania obiektów jest podobny do modelu etykietowania obrazów, ale zamiast przypisywać etykiety do całych obrazów, przypisuje je do ich obszarów. Modele wykrywania obiektów możesz wykorzystać do rozpoznawania i lokalizowania obiektów na obrazie lub do śledzenia ich ruchów na serii obrazów.
Aby wytrenować model wykrywania obiektów, musisz podać AutoML Vision Edge zestaw obrazów z odpowiednimi etykietami obiektów i granicami obiektów. AutoML Vision Edge używa tego zbioru danych do wytrenowania w chmurze nowego modelu, którego możesz używać do wykrywania obiektów na urządzeniu.
Zanim zaczniesz
Jeśli nie masz jeszcze projektu Firebase, utwórz go w Firebase konsoli.
Zapoznaj się z wytycznymi przedstawionymi w przewodniku po inkluzywnym uczeniu maszynowym – AutoML.
Jeśli chcesz tylko wypróbować AutoML Vision Edge i nie masz własnych danych treningowych, pobierz przykładowy zbiór danych, np. jeden z tych:
- Jeden z zalecanych zbiorów danych TensorFlow.
- Zbiór danych hostowany na platformie Kaggle.
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 przygotujesz obrazy treningowe, przygotuj je do zaimportowania doGoogle Cloud. Dostępne są dwie opcje:
Opcja 1. 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 obiektów i regionami ograniczającymi dla każdego obrazu. Ta opcja jest przydatna w przypadku 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,0.2,0.4,,,0.3,0.5,, gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,, gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,
Ramki ograniczające obiektów są określane jako współrzędne względne na obrazie. Zobacz Formatowanie pliku CSV z danymi do trenowania.
Obrazy muszą być przechowywane w zasobniku w regionie us-central1
, który jest częścią projektu Google Cloud odpowiadającego projektowi Firebase.
Opcja 2. Obrazy bez etykiet
Po przesłaniu obrazów do trenowania możesz je oznaczyć i narysować granice obiektów w Google Cloudkonsoli. Jest to zalecane tylko w przypadku małych zbiorów danych. Przejdź do następnego kroku.
2. Trenowanie modelu
Następnie wytrenuj model za pomocą swoich obrazów:
Otwórz stronę Zbiory danych Vision w konsoli Google Cloud. Gdy pojawi się prośba, wybierz projekt.
Kliknij Nowy zbiór danych, podaj nazwę zbioru danych, wybierz typ modelu, który chcesz wytrenować, i kliknij Utwórz zbiór danych.
Na karcie Import zbioru danych prześlij obrazy treningowe, 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.
Po zakończeniu importowania użyj karty Obrazy, aby zweryfikować dane treningowe.
Jeśli nie prześlesz pliku CSV, narysuj ramki ograniczające wokół obiektów, które chcesz rozpoznać, i oznacz każdy z nich etykietą.
Na karcie Trenowanie kliknij Rozpocznij trenowanie.
Nazwij model i wybierz typ modelu Edge.
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 zbiory 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 tys. obrazów 13 godzin 1 000 000 obrazów 18 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: 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 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 Vision i przewodniku 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 Config i A/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:
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 iOS i Androida.