1. Wprowadzenie
Dzięki niedawnemu postępowi w dziedzinie uczenia maszynowego komputery mogą stosunkowo łatwo rozpoznawać obiekty na obrazach. W tym laboratorium kodowania przeprowadzimy Cię przez cały proces tworzenia modelu klasyfikacji obrazów, który rozpoznaje różne typy obiektów, a następnie wdrożymy go w aplikacji na Androida i iOS. ML Kit i AutoML umożliwiają tworzenie i wdrażanie modelu na dużą skalę bez konieczności posiadania wiedzy z zakresu uczenia maszynowego.
Co to jest ML Kit?
ML Kit to mobilny pakiet SDK, który udostępnia w prosty sposób zaawansowane funkcje uczenia maszynowego Google w aplikacjach na Androida i iOS. Niezależnie od tego, czy dopiero zaczynasz, czy masz już doświadczenie w uczeniu maszynowym, możesz łatwo wdrożyć potrzebne funkcje za pomocą kilku linii kodu. Istnieje kilka interfejsów API, które mogą rozpoznawać tekst, twarze itp. i których możesz używać od razu. Jeśli jednak chcesz rozpoznawać obiekty, które nie są obsługiwane przez interfejsy API, np. różne rodzaje kwiatów na obrazie, musisz wytrenować własny model. W tym może Ci pomóc AutoML.
Co to jest AutoML?
Cloud AutoML to pakiet usług obejmujących systemy uczące się, który umożliwia programistom z niewielkim doświadczeniem w tej dziedzinie trenowanie wysokiej jakości modeli odpowiadających ich potrzebom biznesowym. Wykorzystuje on najnowocześniejsze technologie Google, takie jak uczenie przez przenoszenie i wyszukiwanie architektury sieci neuronowych.
W tym laboratorium kodowania użyjemy AutoML Vision Edge w ML Kit do wytrenowania modelu klasyfikacji kwiatów. Model jest trenowany w chmurze, ale następnie jest dołączany do aplikacji lub pobierany przez nią, aby w pełni przeprowadzać wnioskowanie na urządzeniu.

Czego się nauczysz
- Jak wytrenować model klasyfikacji obrazów za pomocą AutoML Vision Edge w ML Kit.
- Jak uruchomić go w przykładowej aplikacji na Androida lub iOS przy użyciu pakietu ML Kit SDK.
Czego potrzebujesz
W przypadku aplikacji na Androida
- Najnowsza wersja Androida Studio (3.4 lub nowsza)
- emulator Android Studio ze Sklepem Play lub fizyczne urządzenie z Androidem (w wersji 5.0 lub nowszej);
- Podstawowa wiedza na temat tworzenia aplikacji na Androida w języku Kotlin
Aplikacja na iOS
- najnowsza wersja Xcode (10.2 lub nowsza);
- Symulator iOS lub fizyczne urządzenie z iOS (wersja 9.0 lub nowsza)
- CocoaPods
- Podstawowa wiedza na temat tworzenia aplikacji na iOS w języku Swift
2. Konfiguracja
Pobieranie kodu i zbioru danych treningowych
Pobierz archiwum ZIP zawierające kod źródłowy tego ćwiczenia i zbiór danych treningowych. Rozpakuj archiwum na komputerze lokalnym.
Tworzenie projektu w konsoli Firebase
- Otwórz konsolę Firebase.
- Kliknij Utwórz nowy projekt i nadaj mu nazwę „ML Kit Codelab”.
Konfigurowanie aplikacji na Androida
- Dodaj naszą aplikację na Androida do projektu w Firebase. Nazwa pakietu na Androida:
com.google.firebase.codelab.mlkit.automl - Pobierz plik konfiguracyjny
google-services.jsoni umieść go w aplikacji na Androida w kataloguandroid/mlkit-automl/app/google-services.json.
Konfigurowanie aplikacji na iOS
- Dodaj aplikację na iOS do projektu w Firebase. Identyfikator pakietu na iOS:
com.google.firebase.codelab.mlkit.automl - Pobierz plik konfiguracyjny
GoogleService-Info.plisti postępuj zgodnie z instrukcjami, aby umieścić go w aplikacji na iOS w lokalizacjiios/mlkit-automl/GoogleService-Info.plist.
3. Przygotowywanie zbioru danych treningowych
Aby wytrenować model do rozpoznawania różnych rodzajów obiektów, musisz przygotować zestaw obrazów i oznaczyć każdy z nich etykietą. Utworzyliśmy archiwum zdjęć kwiatów na licencji Creative Commons, które możesz wykorzystać w tym ćwiczeniu.
Zbiór danych jest spakowany w plik ZIP o nazwie flower_photos.zip, który znajduje się w archiwum ZIP pobranym w poprzednim kroku.
Przeglądanie zbioru danych
Jeśli wyodrębnisz plik flower_photos.zip, zobaczysz, że zbiór danych zawiera obrazy 5 rodzajów kwiatów: mniszków lekarskich, stokrotek, tulipanów, słoneczników i róż, które są uporządkowane w folderach nazwanych od tych kwiatów. To wygodny sposób na utworzenie zbioru danych treningowych, który można przekazać do AutoML i wytrenować model klasyfikacji obrazów.
W tym zbiorze danych treningowych znajduje się 200 obrazów każdego rodzaju kwiatów. Aby wytrenować model, wystarczy co najmniej 10 obrazów na klasę. Większa liczba obrazów treningowych zwykle prowadzi do lepszych modeli.

4. Trenuj model
Przesyłanie zbioru danych treningowych
- W konsoli Firebase otwórz utworzony projekt.
- Wybierz ML Kit > AutoML.
- Możesz zobaczyć kilka ekranów powitalnych. Wybierz Rozpocznij, jeśli to konieczne.
- Po zakończeniu konfiguracji kliknij Dodaj zbiór danych i nadaj mu nazwę „Flowers”.
- W sekcji Cel modelu wybierz Klasyfikacja z jedną etykietą, ponieważ dane treningowe zawierają tylko jedną etykietę na obraz.
- Kliknij Utwórz.
- Aby zaimportować treningowy zbiór danych dotyczący kwiatów, prześlij plik
flower_photos.zippobrany w poprzednim kroku. - Poczekaj kilka minut, aż importowanie się zakończy.
- Teraz możesz sprawdzić, czy zbiór danych został prawidłowo zaimportowany.
- Ponieważ wszystkie obrazy w zbiorze danych treningowych zostały oznaczone etykietami, możesz przejść do trenowania modelu.

Trenowanie modelu klasyfikacji obrazów
Nasz model będzie działać na urządzeniu mobilnym o ograniczonej mocy obliczeniowej i pamięci, dlatego musimy zwracać uwagę nie tylko na jego dokładność, ale też na rozmiar i szybkość. Zawsze istnieje kompromis między dokładnością modelu, opóźnieniem (czyli czasem potrzebnym na sklasyfikowanie obrazu) a rozmiarem modelu. Zwykle model o większej dokładności jest też większy i dłużej klasyfikuje obraz.
AutoML udostępnia kilka opcji: możesz optymalizować pod kątem dokładności, opóźnienia i rozmiaru modelu lub zachować równowagę między tymi czynnikami. Możesz też określić, jak długo model ma być trenowany. Większe zbiory danych wymagają dłuższego trenowania.

Jeśli chcesz samodzielnie wytrenować model, wykonaj te czynności.
- Wybierz Wytrenuj model.
- Wybierz opcję Ogólnego przeznaczenia i czas trenowania 1 godzina obliczeniowa.
- Poczekaj, aż zakończy się trenowanie (może to potrwać kilka godzin).
- Po zakończeniu zadania trenowania zobaczysz wskaźniki oceny, które pokazują skuteczność wytrenowanego modelu.

5. Korzystanie z modelu w aplikacjach mobilnych
Przygotowanie
- Ten moduł zawiera przykładowe aplikacje na Androida i iOS, które pokazują, jak używać w aplikacji mobilnej wytrenowanego wcześniej modelu klasyfikacji obrazów. Obie aplikacje mają podobne funkcje. Możesz wybrać platformę, z której korzystasz najczęściej.
- Zanim przejdziesz dalej, pobierz aplikacje przykładowe i skonfiguruj je zgodnie z instrukcjami w kroku 2.
- Upewnij się też, że środowisko lokalne jest skonfigurowane tak, aby można było tworzyć aplikacje na wybraną platformę (Android/iOS).
Pobieranie modelu klasyfikacji obrazów
- Jeśli w poprzednim kroku wytrenowano model, kliknij Pobierz, aby go uzyskać.
- Jeśli nie przeprowadzono trenowania modelu lub zadanie trenowania nie zostało jeszcze ukończone, możesz użyć modelu dołączonego do przykładowych aplikacji.
Dodawanie modelu do przykładowych aplikacji
Wystarczy, że dodasz model do przykładowych aplikacji, a będą one działać od razu. Pełny przewodnik po integrowaniu ML Kit AutoML z aplikacją znajdziesz w naszej dokumentacji ( Android, iOS). Kod, który wchodzi w interakcję z pakietem ML Kit SDK, znajduje się odpowiednio w plikach ImageClassifier.kt i ImageClassifier.swift. Możesz zacząć od nich, aby dowiedzieć się, jak działają aplikacje.
Model możesz wdrożyć na 2 sposoby: lokalnie i zdalnie.
- Model lokalny jest używany głównie do dołączania modelu klasyfikacji obrazów do pliku binarnego aplikacji, ale można też udostępnić model zapisany w pamięci lokalnej. Dzięki pakietowi model jest dostępny dla użytkowników od razu po pobraniu aplikacji z App Store lub Sklepu Play i działa bez połączenia z internetem.
- Model zdalny oznacza, że model jest hostowany w Firebase i zostanie pobrany na urządzenie użytkownika tylko wtedy, gdy będzie potrzebny po raz pierwszy. Następnie model będzie działać również offline.

Aplikacja na Androida
- Otwórz Android Studio.
- Zaimportuj aplikację na Androida w sekcji
android/mlkit-automl/. - (Opcjonalnie) Wyodrębnij pobrany model i skopiuj jego zawartość do modelu dołączonego do przykładowej aplikacji.

- Teraz na pasku narzędzi Android Studio kliknij Uruchom (
) i sprawdź, czy aplikacja rozpoznaje różne rodzaje kwiatów.

Aplikacja na iOS
- Otwórz Terminal i przejdź do folderu
ios/mlkit-automl/. - Uruchom
pod install, aby pobrać zależności za pomocą CocoaPods. - Uruchom
open MLVisionExample.xcworkspace/, aby otworzyć obszar roboczy projektu w Xcode. - (Opcjonalnie) Wyodrębnij pobrany model i skopiuj jego zawartość do modelu dołączonego do przykładowej aplikacji w folderze
ios/ml-automl/Resources/automl/
. - Teraz na pasku narzędzi Xcode kliknij Uruchom (
) i sprawdź, czy aplikacja rozpoznaje różne rodzaje kwiatów.

6. (Opcjonalnie) Używanie modelu zdalnego
Zdalny model ML Kit umożliwia nieumieszczanie modeli TensorFlow Lite w binarnej wersji aplikacji, ale pobieranie ich na żądanie z Firebase w razie potrzeby. Modele zdalne mają kilka zalet w porównaniu z modelami lokalnymi:
- Mniejszy plik binarny aplikacji
- możliwość aktualizowania modeli bez aktualizowania aplikacji,
- Testy A/B z kilkoma wersjami modelu
W tym kroku opublikujemy model zdalny i użyjemy go w przykładowych aplikacjach. Upewnij się, że w kroku 4 tego ćwiczenia z programowania zakończono trenowanie modelu.
Publikowanie modelu
- Otwórz konsolę Firebase.
- Wybierz utworzony wcześniej projekt „ML Kit AutoML Codelab”.
- Wybierz ML Kit > AutoML.
- Wybierz utworzony wcześniej zbiór danych „Flowers”.
- Potwierdź, że zadanie trenowania zostało wykonane, a następnie wybierz model.
- Wybierz Opublikuj i nadaj mu nazwę „mlkit_flowers”.

Rozpoznawanie kwiatów za pomocą modelu zdalnego
Przykładowe aplikacje są skonfigurowane tak, aby używać modelu zdalnego, jeśli jest dostępny. Po opublikowaniu modelu zdalnego wystarczy ponownie uruchomić aplikacje, aby pobrać model. Aby sprawdzić, czy aplikacja korzysta z modelu zdalnego, poszukaj wartości „Źródło” w stopce ekranu aplikacji. Jeśli to nie zadziała, zapoznaj się z sekcją „Rozwiązywanie problemów” poniżej.

Rozwiązywanie problemów
Jeśli aplikacja przykładowa nadal korzysta z modelu lokalnego, sprawdź, czy nazwa modelu zdalnego jest prawidłowo ustawiona w kodzie.
Aplikacja na Androida
- Otwórz
ImageClassifier.kti znajdź ten blok.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- Sprawdź, czy nazwa modelu ustawiona w kodzie jest zgodna z nazwą modelu opublikowanego wcześniej w konsoli Firebase.
- Teraz na pasku narzędzi Android Studio kliknij Uruchom (
), aby ponownie uruchomić aplikację.
Aplikacja na iOS
- Otwórz stronę
ImageClassifier.swifti znajdź ten blok.
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- Sprawdź, czy nazwa modelu ustawiona w kodzie jest zgodna z nazwą modelu opublikowanego wcześniej w konsoli Firebase.
- Teraz kliknij Uruchom (
) na pasku narzędzi Xcode, aby ponownie uruchomić aplikację.
7. Gratulacje!
Przeszliśmy kompleksową ścieżkę trenowania modelu klasyfikacji obrazów z użyciem własnych danych treningowych za pomocą AutoML, a następnie wykorzystaliśmy ten model w aplikacji mobilnej za pomocą ML Kit.
Aby dowiedzieć się, jak zintegrować AutoML Vision Edge w ML Kit z własną aplikacją, zapoznaj się z naszą dokumentacją.
Możesz też wypróbować nasze przykładowe aplikacje ML Kit, aby poznać inne funkcje Firebase ML Kit.
Przykłady na Androida
Przykłady w iOS