Aby wytrenować model etykietowania obrazu, dostarczasz AutoML Vision Edge z zestawem 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. (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 oraz Warunkom szczegółowym usługi i jest odpowiednio rozliczane. Aby uzyskać informacje rozliczeniowe, zobacz stronę Cennik AutoML.
Zanim zaczniesz
Jeśli nie masz jeszcze projektu Firebase lub Google Cloud, utwórz go w konsoli Firebase .
Zapoznaj się z wytycznymi zawartymi w przewodniku Inclusive ML – AutoML .
Jeśli chcesz tylko wypróbować AutoML Vision Edge i nie masz własnych danych treningowych, pobierz przykładowy zestaw danych, taki jak jeden z następujących:
- Oficjalny zbiór przykładowych obrazów kwiatów TensorFlow
- Ten zbiór danych alfabetu amerykańskiego języka migowego (ASL) .
Możesz znaleźć więcej zestawów danych hostowanych na Kaggle .
1. Zbierz dane treningowe
Najpierw musisz zebrać zestaw danych szkoleniowych z etykietowanymi obrazami. 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ć maksymalnie 30 MB. Należy pamiętać, że AutoML Vision Edge zmniejsza większość obrazów podczas wstępnego przetwarzania, więc generalnie dostarczanie obrazów o bardzo wysokiej rozdzielczości nie przynosi żadnych korzyści w zakresie dokładności.
Dołącz 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ć wykonane predykcje. Na przykład, jeśli Twój przypadek użycia obejmuje rozmyte 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 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 nie mogą ogólnie 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, prawdopodobnie nie da się tego nauczyć modelu.
Gdy masz gotowe obrazy szkoleniowe, przygotuj je do zaimportowania do Firebase. Masz trzy możliwości:
Opcja 1: Ustrukturyzowane archiwum ZIP
Uporządkuj obrazy szkoleniowe w katalogach, z których każdy nosi nazwę etykiety i zawiera 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ć maksymalnie 32 znaki 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 szkoleniowe do Google Cloud Storage i przygotuj plik CSV zawierający adresy URL każdego obrazu oraz opcjonalnie prawidłowe etykiety 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 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, 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, używając swoich obrazów:
Otwórz stronę Vision Datasets w Google Cloud Console. Wybierz projekt po wyświetleniu monitu.
Kliknij Nowy zestaw danych , podaj nazwę zestawu danych, wybierz typ modelu, który chcesz wytrenować, a następnie kliknij Utwórz zestaw danych .
Na karcie Import zestawu danych prześlij archiwum ZIP z obrazami szkoleniowymi lub plik CSV zawierający lokalizacje Cloud Storage, do których je przesłałeś. Zobacz Zbieranie danych treningowych .
Po zakończeniu zadania importowania użyj karty Obrazy , aby zweryfikować dane treningowe i oznaczyć etykietami obrazy bez etykiet.
Na karcie Trenuj kliknij Rozpocznij szkolenie .
Nazwij model i wybierz typ modelu Edge .
Skonfiguruj następujące ustawienia uczenia, które regulują wydajność generowanego 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) poświęcony na szkolenie modelu. Dłuższy czas szkolenia generalnie skutkuje dokładniejszym modelem.
Należy pamiętać, że szkolenie można ukończyć w czasie krótszym niż określony, jeśli system ustali, że model jest zoptymalizowany, a dodatkowe szkolenie nie poprawi dokładności. Opłata jest naliczana tylko za faktycznie wykorzystane godziny.
Typowe godziny szkolenia 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 sprawdza się w przypadku Twojego modelu. Próg pewnoś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 jest mierzona za pomocą dwóch metryk: precyzji i przypominania .
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 oznaczył przy wybranym progu. Kiedy model ma wysoką precyzję, rzadziej przypisuje niepoprawnie etykiety (mniej fałszywych trafień).
Recall to stosunek liczby obrazów, które zostały prawidłowo oznaczone, do liczby obrazów, które zawierały treść, którą model powinien był oznaczyć. Gdy model ma wysoką pamięć, rzadziej nie udaje mu się przypisać żadnej etykiety (mniej fałszywych negatywów).
To, czy optymalizujesz pod kątem precyzji, czy przypominania, będzie zależeć od przypadku użycia. Więcej informacji można znaleźć w przewodniku AutoML Vision dla początkujących i Inclusive ML — AutoML .
Kiedy znajdziesz próg ufności, który daje metryki, z którymi czujesz się komfortowo, zanotuj to; 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 predykcji online, opublikować model w Firebase lub pobrać model i spakować go z Twoją aplikacją.
Wdróż model
Na karcie Testuj i używaj swojego zestawu danych możesz wdrożyć model do prognozowania online, który uruchamia model w chmurze. Ta opcja jest omówiona 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 użyć 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ępnić model tylko przez hostowanie go w Firebase, a nie w pakiecie 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ć 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 stronę Model niestandardowy w konsoli Firebase. Jest to zwykle 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 publikowania wsadowego kilku modeli lub tworzenia zautomatyzowanych potoków publikowania.
Aby opublikować model za pomocą interfejsu API zarządzania modelem Admin SDK :
Opublikuj model.
Konieczne będzie określenie identyfikatora zasobu modelu, który jest ciągiem znaków podobnym do poniższego 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. Możesz znaleźć tę wartość na stronie Ustawienia w konsoli Firebase lub na pulpicie nawigacyjnym 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 połącz model ze swoją aplikacją
Łącząc swój model z aplikacją, możesz mieć pewność, że funkcje uczenia maszynowego będą nadal działać, gdy model hostowany przez Firebase nie będzie dostępny.
Jeśli zarówno opublikujesz model, jak i dodasz go do swojej aplikacji, aplikacja użyje najnowszej dostępnej wersji.
Aby pobrać swój model, kliknij TF Lite na stronie Testuj i używaj swojego zestawu danych.
Następne kroki
Po opublikowaniu lub pobraniu modelu dowiedz się, jak używać go w aplikacjach na iOS+ i Androida .