TensorFlow Lite na Androida

TensorFlow Lite umożliwia uruchamianie modeli uczenia maszynowego TensorFlow (ML) w aplikacjach na Androida. System TensorFlow Lite zapewnia wstępnie zbudowane i konfigurowalne środowiska wykonawcze do szybkiego i wydajnego uruchamiania modeli na Androidzie, w tym opcje akceleracji sprzętowej.

Plan nauki

Projekt kodu Poznaj koncepcje i projektowanie kodu do tworzenia aplikacji na Androida za pomocą TensorFlow Lite, po prostu czytaj dalej .
Szybki start kodu Zacznij od razu kodować aplikację na Androida za pomocą TensorFlow Lite, korzystając z przewodnika Szybki Start .
Modele M.L Dowiedz się o wybieraniu i używaniu modeli ML z TensorFlow Lite, zobacz dokumentację modeli .

Modele uczenia maszynowego

TensorFlow Lite wykorzystuje modele TensorFlow, które są konwertowane na mniejszy, przenośny i wydajniejszy format modelu uczenia maszynowego. Możesz używać gotowych modeli w TensorFlow Lite na Androidzie lub tworzyć własne modele TensorFlow i konwertować je do formatu TensorFlow Lite.

Na tej stronie omówiono korzystanie z już zbudowanych modeli uczenia maszynowego i nie opisano tworzenia, szkolenia, testowania ani konwertowania modeli. Dowiedz się więcej o wybieraniu, modyfikowaniu, budowaniu i konwertowaniu modeli uczenia maszynowego dla TensorFlow Lite w sekcji Modele .

Uruchamiaj modele na Androidzie

Model TensorFlow Lite działający w aplikacji na Androida pobiera dane, przetwarza je i generuje prognozę w oparciu o logikę modelu. Model TensorFlow Lite wymaga do wykonania specjalnego środowiska wykonawczego, a dane przekazywane do modelu muszą mieć określony format danych, zwany tensorem . Gdy model przetwarza dane, co nazywa się wnioskowaniem , generuje wyniki prognoz w postaci nowych tensorów i przekazuje je do aplikacji na Androida, aby mogła podjąć działania, takie jak pokazanie wyniku użytkownikowi lub wykonanie dodatkowej logiki biznesowej.

Funkcjonalny przepływ wykonywania modeli TensorFlow Lite w aplikacjach na Androida

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

Na poziomie projektu funkcjonalnego aplikacja na Androida potrzebuje następujących elementów, aby uruchomić model TensorFlow Lite:

  • Środowisko uruchomieniowe TensorFlow Lite do wykonania modelu
  • Procedura obsługi danych wejściowych modelu do przekształcania danych w tensory
  • Modeluj procedurę obsługi danych wyjściowych , aby otrzymać tensory wyników wyjściowych i zinterpretować je jako wyniki przewidywań

W poniższych sekcjach opisano, w jaki sposób biblioteki i narzędzia TensorFlow Lite zapewniają te elementy funkcjonalne.

Twórz aplikacje za pomocą TensorFlow Lite

W tej sekcji opisano zalecaną, najczęstszą ścieżkę implementacji TensorFlow Lite w aplikacji na Androida. Największą uwagę powinieneś zwrócić na sekcje środowiska uruchomieniowego i bibliotek programistycznych . Jeżeli opracowałeś model niestandardowy, koniecznie zapoznaj się z sekcją Zaawansowane ścieżki rozwoju .

Opcje środowiska wykonawczego

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

Ogólnie rzecz biorąc, powinieneś używać środowiska wykonawczego udostępnianego przez Usługi Google Play, ponieważ zajmuje ono mniej miejsca niż środowisko standardowe, ponieważ ładuje się dynamicznie, dzięki czemu rozmiar aplikacji jest mniejszy. Usługi Google Play automatycznie korzystają z najnowszej, stabilnej wersji środowiska wykonawczego TensorFlow Lite, zapewniając z czasem dodatkowe funkcje i lepszą wydajność. Jeśli oferujesz swoją aplikację na urządzeniach, które nie zawierają usług Google Play lub musisz ściśle zarządzać środowiskiem wykonawczym ML, powinieneś skorzystać ze standardowego środowiska wykonawczego TensorFlow Lite. Ta opcja dołącza dodatkowy kod do aplikacji, dzięki czemu możesz mieć większą kontrolę nad środowiskiem wykonawczym ML w aplikacji, kosztem zwiększenia rozmiaru pobieranej aplikacji.

Dostęp do tych środowisk wykonawczych można uzyskać w aplikacji na Androida, dodając biblioteki programistyczne TensorFlow Lite do środowiska programistycznego aplikacji. Aby uzyskać informacje na temat korzystania ze standardowych środowisk wykonawczych w aplikacji, zobacz następną sekcję.

Programistyczne interfejsy API i biblioteki

Istnieją dwa główne interfejsy API, których możesz użyć do zintegrowania modeli uczenia maszynowego TensorFlow Lite z aplikacją na Androida:

Interfejs API interpretera udostępnia klasy i metody umożliwiające wyciąganie wniosków z istniejących modeli TensorFlow Lite. Interfejs API zadań TensorFlow Lite otacza interfejs API interpretera i zapewnia interfejs programistyczny wyższego poziomu do wykonywania typowych zadań uczenia maszynowego w zakresie obsługi danych wizualnych, dźwiękowych i tekstowych. Powinieneś użyć interfejsu API zadań, chyba że okaże się, że nie obsługuje on Twojego konkretnego przypadku użycia.

Biblioteki

Dostęp do API zadań lub API interpretera można uzyskać za pomocą usług Google Play . Możesz także używać bibliotek autonomicznych do zadań TensorFlow Lite lub bibliotek podstawowych i pomocniczych TensorFlow Lite w aplikacji na Androida. Aby uzyskać szczegółowe informacje na temat korzystania z bibliotek TensorFlow Lite i środowisk wykonawczych, zobacz Narzędzia programistyczne dla systemu Android .

Zdobądź modele

Uruchamianie modelu w aplikacji na Androida wymaga modelu w formacie TensorFlow Lite. Możesz użyć gotowych modeli lub zbudować jeden za pomocą TensorFlow i przekonwertować go do formatu Lite. Aby uzyskać więcej informacji na temat uzyskiwania modeli dla aplikacji na Androida, zobacz sekcję Modele TensorFlow Lite.

Obsługuj dane wejściowe

Wszelkie dane przekazywane do modelu ML muszą być tensorem o określonej strukturze danych, często nazywanej kształtem tensora. Aby przetwarzać dane za pomocą modelu, kod aplikacji musi przekształcić dane z formatu natywnego, takiego jak obraz, tekst lub dane audio, w tensor o kształcie wymaganym dla modelu.

Biblioteka zadań TensorFlow Lite zapewnia logikę obsługi danych służącą do przekształcania danych wizualnych, tekstowych i dźwiękowych w tensory o prawidłowym kształcie do przetworzenia przez model TensorFlow Lite.

Uruchom wnioski

Przetwarzanie danych za pomocą modelu w celu wygenerowania wyniku przewidywania nazywa się wnioskowaniem . Uruchamianie wnioskowania w aplikacji na Androida wymaga środowiska wykonawczego TensorFlow Lite, modelu i danych wejściowych .

Szybkość, z jaką model może wygenerować wnioski na temat konkretnego urządzenia, zależy od rozmiaru przetwarzanych danych, złożoności modelu oraz dostępnych zasobów obliczeniowych, takich jak pamięć i procesor lub wyspecjalizowane procesory zwane akceleratorami . Modele uczenia maszynowego mogą działać szybciej na tych wyspecjalizowanych procesorach, takich jak jednostki przetwarzania grafiki (GPU) i jednostki przetwarzania tensoru (TPU), korzystając ze sterowników sprzętowych TensorFlow Lite zwanych delegatami . Aby uzyskać więcej informacji na temat delegatów i przyspieszania sprzętowego przetwarzania modelu, zobacz Omówienie przyspieszania sprzętowego .

Obsługuj wyniki wyjściowe

Modele generują wyniki przewidywań w postaci tensorów, które muszą zostać obsłużone przez aplikację na Androida, podejmując działanie lub wyświetlając wynik użytkownikowi. Wyniki wyjściowe modelu mogą być tak proste, jak liczba odpowiadająca pojedynczemu wynikowi (0 = pies, 1 = kot, 2 = ptak) klasyfikacji obrazu, lub znacznie bardziej złożone wyniki, takie jak wiele obwiedni dla kilku sklasyfikowanych obiektów w obraz, z oceną pewności przewidywania pomiędzy 0 a 1.

Zaawansowane ścieżki rozwoju

W przypadku korzystania z bardziej wyrafinowanych i dostosowanych modeli TensorFlow Lite może być konieczne zastosowanie bardziej zaawansowanych podejść programistycznych niż opisano powyżej. W poniższych sekcjach opisano zaawansowane techniki wykonywania modeli i opracowywania ich dla TensorFlow Lite w aplikacjach na Androida.

Zaawansowane środowiska uruchomieniowe

Oprócz standardowych środowisk wykonawczych i środowisk wykonawczych usług Google Play dla TensorFlow Lite istnieją dodatkowe środowiska wykonawcze, których możesz używać z aplikacją na Androida. Najbardziej prawdopodobnym zastosowaniem tych środowisk jest model uczenia maszynowego korzystający z operacji ML, które nie są obsługiwane przez standardowe środowisko wykonawcze dla TensorFlow Lite.

Środowisko wykonawcze TensorFlow Lite Flex umożliwia dołączenie określonych operatorów wymaganych dla Twojego modelu. Jako zaawansowaną opcję uruchamiania modelu możesz zbudować TensorFlow Lite dla systemu Android, aby uwzględnić operatory i inne funkcje wymagane do uruchomienia modelu uczenia maszynowego TensorFlow. Aby uzyskać więcej informacji, zobacz Tworzenie TensorFlow Lite dla systemu Android .

Interfejsy API C i C++

TensorFlow Lite zapewnia również interfejs API do uruchamiania modeli przy użyciu języków C i C++. Jeśli Twoja aplikacja korzysta z Androida NDK , powinieneś rozważyć użycie tego interfejsu API. Możesz także rozważyć użycie tego interfejsu API, jeśli chcesz mieć możliwość udostępniania kodu między wieloma platformami. Aby uzyskać więcej informacji na temat tej opcji programowania, zobacz stronę Narzędzia programistyczne .

Wykonanie modelu opartego na serwerze

Ogólnie rzecz biorąc, należy uruchamiać modele w aplikacji na urządzeniu z Androidem, aby skorzystać z mniejszych opóźnień i większej prywatności danych użytkowników. Są jednak przypadki, w których lepszym rozwiązaniem jest uruchomienie modelu na serwerze w chmurze, poza urządzeniem. Na przykład, jeśli masz duży model, którego nie można łatwo skompresować do rozmiaru mieszczącego się na urządzeniach z Androidem użytkowników lub który można wykonać z rozsądną wydajnością na tych urządzeniach. To podejście może być również preferowanym rozwiązaniem, jeśli priorytetem jest spójne działanie modelu na szerokiej gamie urządzeń.

Google Cloud oferuje pełny pakiet usług do uruchamiania modeli uczenia maszynowego TensorFlow. Więcej informacji znajdziesz na stronie produktów Google Cloud poświęconych sztucznej inteligencji i uczeniu maszynowemu .

Tworzenie i optymalizacja modeli niestandardowych

Bardziej zaawansowane ścieżki rozwoju prawdopodobnie będą obejmować tworzenie niestandardowych modeli uczenia maszynowego i optymalizację tych modeli do użytku na urządzeniach z Androidem. Jeśli planujesz budować niestandardowe modele, pamiętaj o zastosowaniu technik kwantyzacji do modeli w celu zmniejszenia kosztów pamięci i przetwarzania. Aby uzyskać więcej informacji na temat tworzenia modeli o wysokiej wydajności do użytku z TensorFlow Lite, zobacz Najlepsze praktyki dotyczące wydajności w sekcji Modele.

Następne kroki