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 pozwalają rozpoznawać i lokalizować obiekty na obrazie oraz śledzić ruch obiektu na wielu obrazach.
Aby wytrenować model wykrywania obiektów, prześlij do AutoML Vision Edge zestaw obrazów z odpowiednimi etykietami i obrzeżami obiektów. AutoML Vision Edge używa tego zbioru danych do wytrenowania nowego modelu w chmurze, którego możesz używać do wykrywania obiektów na urządzeniu.
Funkcja trenowania modelu wZanim zaczniesz
Jeśli nie masz jeszcze projektu Firebase, utwórz go w konsoli Firebase.
Zapoznaj się z wytycznymi przedstawionymi w przewodniku Inclusive ML – AutoML.
Jeśli chcesz tylko wypróbować AutoML Vision Edge i nie masz własnych danych do trenowania, pobierz przykładowy zbiór danych, np.:
- Jeden z zalecanych zbiorów danych TensorFlow.
- Zbiór danych hostowany w Kaggle.
1. Przygotuj dane do trenowania
Najpierw musisz przygotować zbiór danych treningowych z oznaczonymi obrazami. 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 rozdzielczość większości obrazów podczas wstępnego przetwarzania, więc udostępnianie obrazów w bardzo wysokiej rozdzielczości nie przynosi zwykle korzyści w zakresie dokładności.
Dodaj co najmniej 10 a najlepiej 100 lub więcej przykładów każdej etykiety.
Uwzględnij różne kąty, rozdzielczości i tła dla każdej etykiety.
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 niewyraźne obrazy o niskiej rozdzielczości (np. z kamery bezpieczeństwa), dane szkoleniowe powinny składać się z niewyraźnych obrazów o niskiej rozdzielczości.
Modele wygenerowane przez AutoML Vision Edge są zoptymalizowane pod kątem zdjęć obiektów w rzeczywistym świecie. 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 nie można przypisać ludziom. Jeśli więc człowiek nie może przypisać etykiet, patrząc na obraz przez 1–2 sekundy, model prawdopodobnie też nie będzie w stanie tego zrobić.
Gdy masz już gotowe obrazy do trenowania, przygotuj je do zaimportowania do Google 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 wykazem adresów URL poszczególnych obrazów oraz opcjonalnie z poprawnymi etykietami obiektów i regionami ograniczającymi każdy obraz. Ta opcja jest przydatna w przypadku dużych zbiorów danych.
Możesz na przykład przesłać obrazy do usługi Cloud Storage i przygotować plik CSV w taki sposób:
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 obiekty 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ą odpowiadającego projektowi Firebase projektu Google Cloud.
Opcja 2. Obrazy bez etykiet
Po przesłaniu etykietuj obrazy szkoleniowe i narysuj granice obiektów w konsoli Google Cloud. Jest to zalecane tylko w przypadku małych zbiorów danych. Zobacz następny krok.
2. Trenowanie modelu
Następnie wytrenuj model z użyciem swoich obrazów:
W konsoli Google Cloud otwórz stronę Zbiory danych Vision. Gdy pojawi się prośba, wybierz projekt.
Kliknij Nowy zbiór danych, podaj nazwę zbioru danych, wybierz typ modelu, który chcesz trenować, i kliknij Utwórz zbiór danych.
Na karcie Import zbioru danych prześlij obrazy treningowe, archiwum ZIP obrazów treningowych lub plik CSV zawierający Cloud Storagelokalizacje, do których je przesłano. Zobacz Przygotowanie danych do trenowania.
Po zakończeniu importowania na karcie Obrazy możesz sprawdzić dane szkoleniowe.
Jeśli nie przesłano pliku CSV, narysuj ramki ograniczające wokół obiektów, które chcesz rozpoznać, i oznacz je etykietami.
Na karcie Trenowanie kliknij Rozpocznij trenowanie.
Nazwij model i wybierz typ modelu Edge.
Skonfiguruj te ustawienia treningu, które określają wydajność wygenerowanego modelu:
Optymalizuj model pod kątem: Konfiguracja modelu, której chcesz użyć. 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 godzinowy węzła Maksymalny czas trenowania modelu podany w godzinach obliczeniowych. Więcej czasu na trenowanie zwykle przekłada się na dokładniejszy model.
Pamiętaj, że trenowanie może zakończyć się w krótszym czasie niż określony, jeśli system uzna, że model jest zoptymalizowany i dodatkowe trenowanie nie poprawi jego dokładności. Opłaty są naliczane tylko za faktycznie wykorzystane godziny.
Typowe czasy trenowania 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 tys. obrazów 11 godzin 100 tys. zdjęć 13 godzin 1 000 000 obrazów 18 godzin
3. Ocenianie modelu
Po zakończeniu trenowania możesz kliknąć kartę Ocena, aby wyświetlić dane o skuteczności modelu.
Ta strona umożliwia m.in. określenie progu ufności, który najlepiej pasuje do 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 zobaczyć, jak różne progi wpływają na wydajność modelu. Wydajność modelu mierzy się za pomocą 2 wskaźników: precyzyjności i czułości.
W kontekście klasyfikacji obrazów precyzja to stosunek liczby obrazów, które zostały prawidłowo otagowane, do liczby obrazów, które model otagował przy wybranej wartości progowej. Gdy model ma wysoką precyzję, rzadziej przypisuje etykiety błędnie (mniej wyników fałszywie pozytywnych).
Przyrost to stosunek liczby obrazów, które zostały prawidłowo otagowane, do liczby obrazów, które zawierały treści, które model powinien rozpoznać. Gdy model ma wysoką czułość, rzadziej nie przypisuje etykiety (mniej wyników fałszywie negatywnych).
To, czy optymalizujesz model pod kątem dokładności czy trafności, zależy od przypadku użycia. Więcej informacji znajdziesz w przewodniku dla początkujących użytkowników AutoML Vision i przewodniku Inclusive ML – 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 aplikacji.
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
Publikując model w Firebase, możesz go aktualizować bez wydawania nowej wersji aplikacji. Możesz też używać funkcji Remote Config i A/B Testing, aby dynamicznie wyświetlać różne modele 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ą, żadne 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.
- Opublikuj model bezpośrednio z poziomu projektu Google Cloud w Firebase za pomocą pakietu SDK Admin. Możesz użyć tej metody, aby opublikować kilka modeli w grupie lub utworzyć automatyczne procesy publikowania.
Aby opublikować model za pomocą interfejsu model management API z pakietu Admin SDK:
Opublikuj model.
Musisz podać identyfikator zasobu modelu, który jest ciągiem znaków podobnym do tego:
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
Numer projektu zasobnika Cloud Storage, który zawiera model. Może to być Twój projekt Firebase lub inny projekt Google Cloud. Wartość tę znajdziesz na stronie Ustawienia w konsoli Firebase lub na pulpicie 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);
Pobieranie i łączenie modelu z aplikacją
Dzięki połączeniu modelu z aplikacją masz pewność, że jej funkcje ML nadal będą działać, gdy model hostowany przez Firebase będzie niedostępny.
Jeśli opublikujesz model i umieścisz go w pakiecie z aplikacją, aplikacja będzie używać najnowszej dostępnej wersji.
Aby pobrać model, na stronie Testy i użytkowanie zbioru danych kliknij TF Lite.
Dalsze kroki
Po opublikowaniu lub pobraniu modelu dowiedz się, jak go używać w aplikacjach iOS+ i Android.