Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Zacznij korzystać z TensorFlow Lite

TensorFlow Lite zapewnia wszystkie narzędzia potrzebne do konwertowania i uruchamiania modeli TensorFlow na urządzeniach mobilnych, wbudowanych i IoT. Poniższy przewodnik przedstawia każdy etap przepływu pracy dewelopera i zawiera łącza do dalszych instrukcji.

1. Wybierz model

Model TensorFlow to struktura danych zawierająca logikę i wiedzę sieci uczenia maszynowego przeszkoloną do rozwiązywania określonego problemu. Istnieje wiele sposobów uzyskania modelu TensorFlow, od korzystania z wstępnie wytrenowanych modeli po trenowanie własnych.

Aby użyć modelu z TensorFlow Lite, należy przekonwertować pełny model TensorFlow do formatu TensorFlow Lite - nie można tworzyć ani trenować modelu przy użyciu TensorFlow Lite. Musisz więc zacząć od zwykłego modelu TensorFlow, a następnie przekonwertować model .

Użyj wstępnie wytrenowanego modelu

Zespół TensorFlow Lite udostępnia zestaw wstępnie przeszkolonych modeli, które rozwiązują różnorodne problemy związane z uczeniem maszynowym. Modele te zostały przekonwertowane do pracy z TensorFlow Lite i są gotowe do użycia w Twoich aplikacjach.

Wstępnie wyszkolone modele obejmują:

Zobacz naszą pełną listę wstępnie wytrenowanych modeli w Modelach .

Modele z innych źródeł

Istnieje wiele innych miejsc, w których można uzyskać gotowe modele TensorFlow, w tym TensorFlow Hub . W większości przypadków modele te nie będą dostarczane w formacie TensorFlow Lite i przed użyciem trzeba będzie je przekonwertować .

Przeszkolenie modelu (transfer uczenia się)

Przenieś uczenie się pozwala na pobranie wytrenowanego modelu i ponowne przeszkolenie go do wykonania innego zadania. Na przykład model klasyfikacji obrazów można ponownie wyszkolić, aby rozpoznawać nowe kategorie obrazów. Ponowne uczenie zajmuje mniej czasu i wymaga mniej danych niż uczenie modelu od podstaw.

Możesz użyć transferu uczenia się, aby dostosować wstępnie wytrenowane modele do swojej aplikacji. Dowiedz się, jak przeprowadzić uczenie transferowe w witrynie Rozpoznawanie kwiatów z kodem TensorFlow.

Wytrenuj model niestandardowy

Jeśli zaprojektowałeś i wyszkoliłeś własny model TensorFlow lub wytrenowałeś model uzyskany z innego źródła, musisz przekonwertować go do formatu TensorFlow Lite .

Możesz także wypróbować bibliotekę TensorFlow Lite Model Maker, która upraszcza proces uczenia modelu TensorFlow Lite przy użyciu niestandardowych zestawów danych.

2. Przekonwertuj model

TensorFlow Lite jest przeznaczony do wydajnego wykonywania modeli na urządzeniach mobilnych i innych urządzeniach wbudowanych z ograniczonymi zasobami obliczeniowymi i pamięcią. Część tej wydajności wynika ze stosowania specjalnego formatu do przechowywania modeli. Modele TensorFlow muszą zostać przekonwertowane do tego formatu, zanim będą mogły być używane przez TensorFlow Lite.

Konwersja modeli zmniejsza rozmiar ich pliku i wprowadza optymalizacje, które nie wpływają na dokładność. Konwerter TensorFlow Lite zapewnia opcje, które pozwalają na dalsze zmniejszenie rozmiaru pliku i zwiększenie szybkości wykonywania z pewnymi kompromisami.

Konwerter TensorFlow Lite

Konwerter TensorFlow Lite to narzędzie dostępne jako interfejs API języka Python, które konwertuje wyszkolone modele TensorFlow do formatu TensorFlow Lite. Może również wprowadzać optymalizacje, które są omówione w sekcji 4, Optymalizacja modelu .

Poniższy przykład przedstawia konwersję TensorFlow SavedModel do formatu TensorFlow Lite:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

W podobny sposób można konwertować modele TensorFlow 2.0 .

Konwertera można również używać z wiersza poleceń , ale zalecane jest użycie interfejsu API języka Python.

Opcje

Konwerter może konwertować z różnych typów wejść.

Podczas konwersji modeli TensorFlow 1.x są to:

Podczas konwersji modeli TensorFlow 2.x są to:

Konwerter można skonfigurować tak, aby stosował różne optymalizacje, które mogą poprawić wydajność lub zmniejszyć rozmiar pliku. Jest to omówione w sekcji 4, Optymalizacja modelu .

Zgodność z operacjami

TensorFlow Lite obsługuje obecnie ograniczony podzbiór operacji TensorFlow . Celem długoterminowym jest wsparcie wszystkich operacji TensorFlow.

Jeśli model, który chcesz przekonwertować, zawiera nieobsługiwane operacje, możesz użyć TensorFlow Select, aby uwzględnić operacje z TensorFlow. Spowoduje to, że na urządzeniach zostanie wdrożony większy plik binarny.

3. Uruchom wnioskowanie z modelem

Wnioskowanie to proces przepuszczania danych przez model w celu uzyskania prognoz. Wymaga modelu, interpretera i danych wejściowych.

Interpreter TensorFlow Lite

Interpreter TensorFlow Lite to biblioteka, która pobiera plik modelu, wykonuje zdefiniowane przez siebie operacje na danych wejściowych i zapewnia dostęp do danych wyjściowych.

Interpreter działa na wielu platformach i zapewnia proste API do uruchamiania modeli TensorFlow Lite w językach Java, Swift, Objective-C, C ++ i Python.

Poniższy kod pokazuje, że interpreter jest wywoływany z języka Java:

try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
  interpreter.run(input, output);
}

Akceleracja GPU i delegaci

Niektóre urządzenia zapewniają akcelerację sprzętową dla operacji uczenia maszynowego. Na przykład większość telefonów komórkowych ma procesory graficzne, które mogą wykonywać operacje na macierzach zmiennoprzecinkowych szybciej niż procesor.

Przyspieszenie może być znaczne. Na przykład model klasyfikacji obrazów MobileNet v1 działa 5,5 razy szybciej na telefonie Pixel 3, gdy używana jest akceleracja GPU.

Interpreter TensorFlow Lite można skonfigurować z delegatami, aby korzystać z akceleracji sprzętowej na różnych urządzeniach. Delegat GPU umożliwia tłumaczowi wykonywanie odpowiednich operacji na GPU urządzenia.

Poniższy kod przedstawia delegata GPU używanego z języka Java:

GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(tensorflow_lite_model_file, options);
try {
  interpreter.run(input, output);
}

Aby dodać obsługę nowych akceleratorów sprzętowych, możesz zdefiniować własnego pełnomocnika .

Android i iOS

Interpreter TensorFlow Lite jest łatwy w użyciu z obu głównych platform mobilnych. Aby rozpocząć, zapoznaj się z przewodnikami Szybki start dla Androida i iOS . Przykładowe aplikacje są dostępne dla obu platform.

Aby uzyskać wymagane biblioteki, programiści Androida powinni korzystać z TensorFlow Lite AAR . Deweloperzy iOS powinni używać CocoaPods dla Swift lub Objective-C .

Linux

Embedded Linux to ważna platforma do wdrażania uczenia maszynowego. Aby rozpocząć korzystanie z języka Python w celu wnioskowania z modelami TensorFlow Lite, skorzystaj z przewodnika Szybki start dla języka Python .

Aby zamiast tego zainstalować bibliotekę C ++, zapoznaj się z instrukcjami kompilacji dla płyt opartych na Raspberry Pi lub Arm64 (dla płyt takich jak Odroid C2, Pine64 i NanoPi).

Mikrokontrolery

TensorFlow Lite for Microcontrollers to eksperymentalny port TensorFlow Lite przeznaczony dla mikrokontrolerów i innych urządzeń posiadających tylko kilobajty pamięci.

Operacje

Jeśli Twój model wymaga operacji TensorFlow, które nie zostały jeszcze zaimplementowane w TensorFlow Lite, możesz użyć TensorFlow Select, aby użyć ich w swoim modelu. Musisz stworzyć niestandardową wersję interpretera, która zawiera operacje TensorFlow.

Możesz używać operatorów niestandardowych do pisania własnych operacji lub przenoszenia nowych operacji do TensorFlow Lite.

Wersje operatorskie umożliwiają dodawanie nowych funkcjonalności i parametrów do istniejących operacji.

4. Zoptymalizuj swój model

TensorFlow Lite zapewnia narzędzia do optymalizacji rozmiaru i wydajności modeli, często z minimalnym wpływem na dokładność. Zoptymalizowane modele mogą wymagać nieco bardziej złożonego szkolenia, konwersji lub integracji.

Optymalizacja uczenia maszynowego to rozwijająca się dziedzina, a zestaw narzędzi do optymalizacji modelu TensorFlow Lite stale się rozwija w miarę opracowywania nowych technik.

Wydajność

Celem optymalizacji modelu jest osiągnięcie idealnej równowagi wydajności, rozmiaru modelu i dokładności na danym urządzeniu. Sprawdzone metody dotyczące wydajności mogą pomóc Ci przejść przez ten proces.

Kwantyzacja

Zmniejszając precyzję wartości i operacji w modelu, kwantyzacja może zmniejszyć zarówno rozmiar modelu, jak i czas potrzebny do wnioskowania. W przypadku wielu modeli utrata dokładności jest minimalna.

Konwerter TensorFlow Lite ułatwia kwantyzację modeli TensorFlow. Poniższy kod Pythona kwantyfikuje SavedModel i zapisuje go na dysku:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quantized_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_quantized_model)

TensorFlow Lite obsługuje zmniejszanie precyzji wartości z pełnej liczby zmiennoprzecinkowej do półprecyzyjnych liczb zmiennoprzecinkowych (float16) lub 8-bitowych liczb całkowitych. Istnieją pewne kompromisy w rozmiarze i dokładności modelu dla każdego wyboru, a niektóre operacje mają zoptymalizowane implementacje dla tych typów o zmniejszonej precyzji.

Aby dowiedzieć się więcej o kwantyzacji, zobacz kwantyzację po treningu .

Zestaw narzędzi do optymalizacji modelu

Zestaw narzędzi do optymalizacji modeli to zestaw narzędzi i technik zaprojektowanych w celu ułatwienia programistom optymalizacji ich modeli. Wiele technik można zastosować do wszystkich modeli TensorFlow i nie są one specyficzne dla TensorFlow Lite, ale są one szczególnie cenne w przypadku uruchamiania wnioskowania na urządzeniach o ograniczonych zasobach.

Następne kroki

Teraz, gdy znasz już TensorFlow Lite, zapoznaj się z następującymi zasobami: