Instal TensorFlow Lite 2.7 Terkompilasi di Raspberry Pi

TensorFlow Lite adalah pustaka sumber terbuka yang memungkinkan untuk menjalankan caral pembelajaran engine dan melakukan inferensi pada perangkat akhir, seperti perangkat seluler atau perangkat yang disematkan. Kami tidak dapat melatih caral menggunakan TensorFlow Lite. Sebelum menjalankan caral, kita harus mengonversi caral TensorFlow ke caral TensorFlow Lite menggunakan konverter TensorFlow Lite.

Tutorial ini menunjukkan cara menginstal TensorFlow Lite 2.7 yang telah dikompilasi di Raspberry Pi.

Paket Debian

Kami telah membuat paket Debian ( .deb) yang berisi biner TensorFlow Lite 2.7.0 yang telah dikompilasi sebelumnya untuk Raspberry Pi 3 Model A+/B+ dan Raspberry Pi 4 Model B. Binari kompatibel dengan Raspberry Pi OS Bullseye (32-bit). Kami telah membuat rilis di repositori GitHub dan mengunggah tensorflow-lite.debpaket.

TensorFlow Lite dibuat dengan fitur berikut:

  • Optimasi NEON
  • Pengoptimalan VFPv4
  • delegasi XNNPACK
  • Pustaka perkalian matriks Ruy
  • Alokasi berbasis MMAP
  • C dan C++ API

Pengujian dilakukan pada Raspberry Pi 4 Model B (8 GB).

Instal TensorFlow Lite

Gunakan SSH untuk terhubung ke Raspberry Pi. Jalankan perintah berikut untuk mengdownload .debpaket dari halaman rilis repositori:

 wget https://github.com/prepkg/tensorflow-lite-raspberrypi/releases/latest/download/tensorflow-lite.deb

Setelah downloadan selesai, instal TensorFlow Lite:

 sudo apt install -y ./tensorflow-lite.deb

Anda dapat menghapus .debpaket karena tidak lagi diperlukan:

 rm -rf tensorflow-lite.deb

Menguji TensorFlow Lite (C API)

Paket Debian berisi pustaka bersama dari C dan C++ API. Pertama, kita akan menguji C API. Sebelum memulai, instal kompiler GNU C:

 sudo apt install -y gcc

Untuk pengujian, kita perlu memiliki caral TensorFlow Lite. Anda dapat membaca posting cara mengonversi caral TensorFlow 2 ke caral TensorFlow Lite atau Anda dapat mengdownload caral yang sudah disiapkan dari Internet:

 wget -O caral.tflite https://www.dropbox.com/s/b1426ewx13idlr0/simple_linear_regression.tflite?dl=1

Model ini memecahkan masalah regresi linier sederhana yang dijelaskan dalam posting .

Buat main.cfile:

 nano main.c

Tambahkan kode berikut:

#include <stdio.h>

#include <tensorflow/lite/c/common.h>

#include <tensorflow/lite/c/c_api.h>

int main()

{

    int numThreads = 4;

    TfLiteModel *model = TfLiteModelCreateFromFile("model.tflite");

    TfLiteInterpreterOptions *options = TfLiteInterpreterOptionsCreate();

    TfLiteInterpreterOptionsSetNumThreads(options, numThreads);

    TfLiteInterpreter *interpreter = TfLiteInterpreterCreate(model, options);

    TfLiteInterpreterAllocateTensors(interpreter);

    float x[] = {15.0f};

    TfLiteTensor *inputTensor = TfLiteInterpreterGetInputTensor(interpreter, 0);

    TfLiteTensorCopyFromBuffer(inputTensor, x, sizeof(x));

    TfLiteInterpreterInvoke(interpreter);

    float y[1];

    const TfLiteTensor *outputTensor = TfLiteInterpreterGetOutputTensor(interpreter, 0);

    TfLiteTensorCopyToBuffer(outputTensor, y, sizeof(y));

    printf("%.4f\n", y[0]);

    TfLiteInterpreterDelete(interpreter);

    TfLiteInterpreterOptionsDelete(options);

    TfLiteModelDelete(model);

    return 0;

}

Sebuah kode digunakan untuk memprediksi nilai yuntuk nilai yang sebelumnya tidak diketahui x. Model dilatih menggunakan hubungan antar variabel berikut: y = 2 * x + 1.

Kami memuat caral dan menginisialisasi penerjemah TensorFlow Lite. Nilai xvariabel dicopy ke buffer tensor input. Kami mengeksekusi sebuah caral. Nilai dari buffer tensor keluaran dicopy ke yvariabel. Akhirnya, kami mencetak hasil dan merilis sumber daya.

Kompilasi kode:

 gcc main.c -o test -ltensorflowlite_c

Jalankan program:

 ./tes

Dalam hal ini, x adalah 15.0 dan pengembalian mode y adalah 31.0044. Hasil dapat diverifikasi:

 y = 2 * x + 1 = 2 * 15 + 1 = 31

Menguji TensorFlow Lite (C++ API)

C API dapat digunakan dari kode C++. Namun, TensorFlow Lite juga memiliki C++ API. Pastikan Anda telah menginstal kompiler GNU C++:

 sudo apt install -y g++

Buat  main.cpp file:

 nano main.cpp

Ketika sebuah file dibuka, tambahkan kode berikut:

#include <iostream>

#include <tensorflow/lite/interpreter.h>

#include <tensorflow/lite/kernels/register.h>

using namespace tflite;

int main()

{

    int numThreads = 4;

    std::unique_ptr<FlatBufferModel> model = FlatBufferModel::BuildFromFile("model.tflite");

    ops::builtin::BuiltinOpResolver resolver;

    std::unique_ptr<Interpreter> interpreter;

    InterpreterBuilder(*model, resolver)(&interpreter, numThreads);

    interpreter->AllocateTensors();

    float x[] = {15.0f};

    float *inputTensor = interpreter->typed_input_tensor<float>(0);

    memcpy(inputTensor, x, sizeof(x));

    interpreter->Invoke();

    float *y = interpreter->typed_output_tensor<float>(0);

    std::cout << y[0] << std::endl;

    return 0;

}

Sebuah kode diimplementasikan menggunakan C++ API dan melakukan pekerjaan yang sama seperti kode yang diimplementasikan dengan C API.

Jalankan perintah berikut untuk mengkompilasi kode:

g++ main.cpp -o test -ltensorflow-lite -ldl

Jalankan program:

 ./tes

Copot pemasangan TensorFlow Lite

Jika Anda ingin menghapus TensorFlow Lite sepenuhnya, jalankan perintah berikut:

sudo apt purge --autoremove -y tensorflow-lite

Related Posts