TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library をソースからビルドしてみた。

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#9 LSTM で経路計画をする。 で、Tensorflow Lite 用の a.model.tflite が出来たので、C++ から実行する事になるので、試してみた。

ソースのダウンロードは、TensorFlow 2.16.2 C++ library build と同じなので、そちらを参考にしてください。

PC環境:
Ubuntu 22.04
Tensorflow 12.6.2

参考にしたのは、
CMake を使用した TensorFlow Lite の構築

1. build
ソースが、
~local/tensorflow/tensorflow-2.16.2
に展開済みとします。
$ cd ~local/tensorflow/tensorflow-2.16.2
$ mkdir build-nishi
$ cd build-nishi
$ cmake ../tensorflow/lite
$ cmake --build . -j3

注) build-essential が必要。まだの場合は。
$ sudo apt install build-essential

これで、libtensorflow-lite.a が、カレントディレクトリーにできる。

2. deploy
とりあえず、必要なファイルを~/usr/local/ へコピーします。
~/usr/local/
  lib
  include

注) include ファイルは、自分でコピーしないといけないみたい。
後、FlatBuffers 、 Abseil も必要とのこと。
同じ様に、copy shell を作った。
~/local/tensorflow/deploy-lite-nishi.sh

注) 中のパスは、自分の PC に合せて変えとうせ。
注2) flatbuffers のコピー元が、最初間違っていたみたい。
build-nishi/flatbuffers <--- NG
build-nishi/flatbuffers/include <-- OK

$ cd ~local/tensorflow
$ chmod 755 deploy-lite-nishi.sh
$ ./deploy-lite-nishi.sh

3. lite/examples/label_image をビルドして試す。
$ cd ~/local/tensorflow/tensorflow-2.16.2/build-nishi
$ cmake --build . -j -t label_images

./examples/label_image/ 下に実行ファアイルができる。
$ cd examples/label_image
実行の前に、 mobilenet_quant_v1_224.tflite , labels.txt , grace_hopper.bmp が必要。
上記ファイルを、集める。
tensorflow-2.16.2/tensorflow/lite/examples/ios/download_model.sh を叩くか、
tensorflow/lite/examples/label_image
の、Download sample model and image を参考にする。

image データは、tensorflow/lite/examples/label_image/testdata/grace_hopper.bmp
あるのでそれを使うそうな。
$ ./label_image --image ../../../tensorflow/lite/examples/label_image/testdata/grace_hopper.bmp

動くみたい。結構早い。

3. Cmake でのビルド。
自分のプログラムをビルドするにも、Cmake を使うみたい。
TensorFlow Lite C++ minimal example
を参考に、自分用の Cmake を作る必要がある。

CMakeLists.txt
を自分のプログラムデイレクトリーへコピーして、変更して試してみる。

下記、デイレクトリーに、
/home/nishi/Documents/VisualStudio-CPP/tflite/opp_tflite
  predict-test.cpp
  CMakeLists.txt
を用意して、
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . j3

CMakeLists.txt

これで、
predict-test ができるが、
この方法だと、全て再コンパイルになる。
先に作った、Tensorflow lite static Library が、まるきり使われない。

どうやら、下記箇所みたい。
CMake を使用した TensorFlow Lite の構築
インストール可能なパッケージのビルド

しかし、cmake 自体が、エラーになる。

とりあえず、opp_tflite の Cmake で作られる、 build.make と link.txt を参考にMakefileを作ってみた。


$ make
$ ./predict-test
一応、動いた。

参考にしたのは、
build/CMakeFiles/predict-test.dir
  build.make
  link.txt

やはり、最終的には、cmake でビルドできるようにしないと、ROS2 の中で使えない。

このブログ記事について

このページは、おんちゃんが2024年12月 9日 12:54に書いたブログ記事です。

ひとつ前のブログ記事は「TensorFlow 2.16.2 C++ library build for GPU.」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ