TensorFlow Lite na Androida

TensorFlow Lite pozwala uruchamiać modele systemów uczących się TensorFlow (ML) w aplikacjach na Androida. System TensorFlow Lite udostępnia gotowe i możliwe do dostosowania środowiska wykonawcze umożliwiające szybkie i efektywne uruchamianie modeli na Androidzie, w tym opcje akceleracji sprzętowej.

Modele systemów uczących się

TensorFlow Lite wykorzystuje modele TensorFlow, które są konwertowane na mniejszy, przenośny i wydajniejszy format modelu systemów uczących się. Możesz użyć gotowych modeli z TensorFlow Lite na Androidzie lub utworzyć własne modele TensorFlow i przekonwertować je na format TensorFlow Lite.

Na tej stronie omawiamy korzystanie z gotowych modeli systemów uczących się. Nie omawiamy tworzenia, trenowania, testowania ani konwertowania modeli. Więcej informacji o wybieraniu, modyfikowaniu, tworzeniu i konwertowaniu modeli systemów uczących się dla TensorFlow Lite znajdziesz na stronie Modele.

Uruchamianie modeli na Androidzie

Model TensorFlow Lite działający w aplikacji na Androida pobiera dane, przetwarza je i generuje prognozę na podstawie logiki modelu. Wykonywanie modelu TensorFlow Litete wymaga specjalnego środowiska wykonawczego do działania, a dane przekazywane do niego muszą mieć określony format nazywany tensorem. Gdy model przetwarza dane (czyli przeprowadza wnioskowanie), generuje wyniki prognozy jako nowe tenisery i przekazuje je do aplikacji na Androida, aby mogła ona podjąć działanie, np. pokazać wynik użytkownikowi lub wykonać dodatkową logikę biznesową.

Funkcjonalny proces wykonywania modeli TensorFlow Lite w aplikacjach na Androida

Rysunek 1. Funkcjonalny proces wykonywania modeli TensorFlow Lite w aplikacjach na Androida.

Na poziomie projektowania funkcjonalnego Twoja aplikacja na Androida potrzebuje tych elementów, aby uruchomić model TensorFlow Lite:

  • Środowisko wykonawcze TensorFlow Lite do uruchomienia modelu
  • Moduł obsługi danych wejściowych modelu służący do przekształcania danych w tensory
  • Moduł obsługi danych wyjściowych modelu do otrzymywania tensorów wyników wyjściowych i interpretowania ich jako wyników prognozy

W kolejnych sekcjach opisano, jak biblioteki i narzędzia TensorFlow Lite udostępniają te elementy funkcjonalne.

Tworzenie aplikacji za pomocą TensorFlow Lite

W tej sekcji opisujemy zalecaną i najbardziej typową ścieżkę implementacji TensorFlow Lite w aplikacji na Androida. Zwróć szczególną uwagę na sekcje dotyczące środowiska wykonawczego i bibliotek programistycznych. Jeśli masz model niestandardowy, zapoznaj się z sekcją Zaawansowane ścieżki programowania.

Opcje środowiska wykonawczego

Istnieje kilka sposobów na włączenie środowiska wykonawczego na potrzeby wykonywania modeli w aplikacji na Androida. Oto preferowane opcje:

Ogólnie rzecz biorąc, korzystaj ze środowiska wykonawczego udostępnianego przez Usługi Google Play, ponieważ zajmuje ono mniej miejsca niż środowisko standardowe, ponieważ wczytuje się dynamicznie, co pozwala zmniejszyć rozmiar aplikacji. Usługi Google Play również automatycznie korzystają z najnowszej, stabilnej wersji środowiska wykonawczego TensorFlow Lite, zapewniając Ci z czasem dostęp do dodatkowych funkcji. Jeśli oferujesz swoją aplikację na urządzeniach, które nie obejmują Usług Google Play, lub musisz ściśle zarządzać środowiskiem wykonawczym ML, użyj standardowego środowiska wykonawczego TensorFlow Lite. Ta opcja łączy w aplikacji dodatkowy kod, co daje Ci większą kontrolę nad środowiskiem wykonawczym ML w aplikacji, ale jednocześnie zwiększa rozmiar pobieranej aplikacji.

Aby uzyskać dostęp do tych środowisk wykonawczych w aplikacji na Androida, musisz dodać biblioteki programistyczne TensorFlow Lite do środowiska programistycznego aplikacji. Informacje o tym, jak korzystać w aplikacji ze standardowych środowisk wykonawczych, znajdziesz w następnej sekcji.

Biblioteki

Dostęp do interfejsu Interpreter API możesz uzyskać za pomocą Usług Google Play. W swojej aplikacji na Androida możesz używać podstawowych bibliotek TensorFlow Lite i support. Szczegółowe informacje o używaniu bibliotek TensorFlow Lite i środowisk wykonawczych znajdziesz w artykule Narzędzia dla programistów na Androida.

Uzyskiwanie modeli

Uruchomienie modelu w aplikacji na Androida wymaga modelu w formacie TensorFlow Lite. Możesz użyć gotowych modeli lub utworzyć nowy za pomocą TensorFlow i przekonwertować go na format Lite. Więcej informacji o uzyskiwaniu modeli dla aplikacji na Androida znajdziesz na stronie modeli TensorFlow Lite.

Obsługa danych wejściowych

Wszystkie dane przekazywane do modelu ML muszą być tensorem o określonej strukturze danych, często nazywanej kształtem tensora. Aby można było przetworzyć dane za pomocą modelu, kod aplikacji musi przekształcić dane z formatu natywnego, np. obrazu, tekstu lub dźwięku, w tensora w kształcie wymaganym dla modelu.

Przeprowadź wnioskowanie

Przetwarzanie danych za pomocą modelu w celu wygenerowania wyniku prognozy jest nazywane wnioskowaniem. Uruchamianie wnioskowania w aplikacji na Androida wymaga środowiska wykonawczego TensorFlow Lite, model i danych wejściowych.

Szybkość, z jaką model może generować wnioskowania na konkretnym urządzeniu, zależy od rozmiaru przetwarzanych danych, złożoności modelu i dostępnych zasobów obliczeniowych, np. pamięci i procesorów, lub wyspecjalizowanych procesorów zwanych akceleratorami. Modele systemów uczących się mogą działać szybciej na tych specjalistycznych procesorach, takich jak procesory graficzne (GPU) i procesory tensorowe (TPU), które wykorzystują sterowniki sprzętowe TensorFlow Lite nazywane delegatami. Więcej informacji o przedstawicielach i sprzętowej akceleracji przetwarzania modelu znajdziesz w omówieniu akceleracji sprzętowej.

Obsługa wyników wyjściowych

Modele generują wyniki prognozy jako tensory, które muszą być obsługiwane przez aplikację na Androida przez podjęcie działania lub wyświetlenie wyniku użytkownikowi. Wyniki wyjściowe modelu mogą być proste w zakresie klasyfikacji obrazu (0 = pies, 1 = kot, 2 = ptak) do bardziej złożonych wyników, takich jak wiele ramek ograniczających kilka sklasyfikowanych obiektów na obrazie z poziomami ufności prognoz w zakresie od 0 do 1.

Zaawansowane ścieżki rozwoju

Gdy używasz bardziej zaawansowanych i niestandardowych modeli TensorFlow Lite, może być konieczne użycie bardziej zaawansowanych metod programowania niż opisane powyżej. W kolejnych sekcjach opisano zaawansowane techniki wykonywania i opracowywania modeli dla TensorFlow Lite w aplikacjach na Androida.

Zaawansowane środowiska wykonawcze

Oprócz standardowego środowiska wykonawczego i środowisk wykonawczych Usług Google Play dla TensorFlow Lite możesz też korzystać z dodatkowych środowisk wykonawczych, z których możesz korzystać w swojej aplikacji na Androida. Najbardziej prawdopodobne jest to, że masz model systemów uczących się, który wykorzystuje operacje ML, które nie są obsługiwane przez standardowe środowisko wykonawcze TensorFlow Lite.

Środowisko wykonawcze TensorFlow Lite pozwala uwzględnić określone operatory wymagane dla Twojego modelu. TensorFlow Lite na Androida to zaawansowana opcja uruchamiania modelu, która zawiera operatory i inne funkcje wymagane do uruchamiania modelu systemów uczących się TensorFlow. Więcej informacji znajdziesz w artykule o kompilowaniu TensorFlow Lite na Androida.

Interfejsy API C i C++

TensorFlow Lite udostępnia również interfejs API do uruchamiania modeli w językach C i C++. Jeśli Twoja aplikacja używa pakietu Android NDK, zastanów się nad użyciem tego interfejsu API. Zastanów się też nad użyciem tego interfejsu API, jeśli chcesz mieć możliwość współużytkowania kodu między wieloma platformami. Więcej informacji o tej opcji programowania znajdziesz na stronie Narzędzia dla programistów.

Wykonywanie modelu na serwerze

Ogólnie modele należy uruchamiać w aplikacji na urządzeniach z Androidem, aby skrócić czas oczekiwania i zapewnić użytkownikom lepszą prywatność danych. W niektórych przypadkach lepszym rozwiązaniem jest jednak uruchomienie modelu na serwerze w chmurze, poza urządzeniem. Dotyczy to na przykład dużego modelu, który nie da się łatwo skompresować do rozmiaru pasującego do urządzeń z Androidem użytkowników lub który można uruchomić na tych urządzeniach ze rozsądną wydajnością. To podejście może być też preferowanym rozwiązaniem, jeśli priorytetem jest spójna wydajność modelu na szerokiej gamie urządzeń.

Google Cloud oferuje pełny pakiet usług do uruchamiania modeli systemów uczących się TensorFlow. Więcej informacji znajdziesz na stronie AI i systemów uczących się w Google Cloud.

Opracowywanie i optymalizowanie modeli niestandardowych

Bardziej zaawansowane ścieżki rozwoju mogą obejmować tworzenie niestandardowych modeli systemów uczących się i optymalizowanie ich pod kątem urządzeń z Androidem. Jeśli planujesz tworzyć modele niestandardowe, pamiętaj o zastosowaniu do modeli technik kwantyfikacji, które pozwalają zmniejszyć koszty pamięci i przetwarzania. Więcej informacji o tworzeniu modeli o wysokiej wydajności do użycia z TensorFlow Lite znajdziesz w sekcji dotyczącej sprawdzonych metod dotyczących wydajności w sekcji Modele.