一、LINUX环境下操作:
1.安装交叉编译工具
sudo apt-get install g++-arm-linux-gnueabihf
sudo apt-get install -y gcc-arm-linux-gnueabihf
2.下载Tensorflow
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout r1.12 #r.14
编译Tensorflow前需下载编译工具Bazel
如果编译时报nnapi的错误,需要回退Tensorflow版本至1.12.0
3、安装编译工具Bazel
安装依赖包:
sudo apt-get install pkg-config zip g++ zilb1g-dev unzip
下载Bazel包:
wget https://github.com/bazelbuild/bazel/releases/download/0.18.1/bazel-0.181-installer-linux-86_64.sh
安装Bazel:
chmod +x bazel-0.18.1-installer-linux-86_64.sh
./ bazel-0.18.1-installer-linux-86_64.sh --user
设置环境变量:
sudo vi ~/.bashrc,在文件最后添加:export PATH=$PATH":~/bin"
source ~/.bashrc
4、编译前测试:
bazel test -c opt -- //tensorflow/... -//tensorflow/compiler/... -//tensorflow/contrib/lite//...
如果 告警提示支持avx,avx2,fma,sse4.1,sse4.2,则 使用如下命令:
bazel test -c opt --copt=-mavx --copt=-avx2 --copt-=mfma --copt=-msse4.1 --copt-=msse4.2 -- //tensorflow/... -//tensorflow/compiler/... -//tensorflow/contrib/lite//...
5、编译配置:
在Tensorflow源码根目录运行:
./configure
6、编译pip:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
7、编译包:
./bazel-bin/tensorflow/tools/pip__package/build_pip_package /tmp/tensorflow_pkg
8、安装包:
pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
9、下载依赖库:
./tensorflow/contrib/lite/tools/make/download_dependencies.sh(不同版本,位置略有不同)
./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh
生成静态库位置为:
./tensorflow/contrib/lite/toos/make/gen/rpi_arm7l/lib/libtensorflow-lite.a
11、编译模型:
可以在./tensorflow/contrib/lite/tools/make/gen/rpi_arm7l/bin 下面生成可执行文件label_img
以下操作在ARM板子上:
1、拷贝生成的label_image到板子上
拷贝图片./tensorflow/examples/label_image/data/grace_hopper.jpg到板子上
2、下载模型mobilenet_v1_1.0_224.tflite(地址./tensorflow/contrib/lite/g3doc/models.md)
然后拷贝到板子上
3、下载模型所需文件:
curl -L "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz" | tar -C tensorflow/examples/label_image/data -xz
拷贝标签文件:./tensorflow/examples/label_image/data/imagenet_slim_labels.txt到板子上
4、运行label_image
./label_image -v 1 -m ./mobilenet_v1_1.0_224.tflite -i ./grace_hopper.jpg -l ./imagenet_slim_labels.txt
如果出现-sh: ./label_image: not found,可能是编译器不一致导致。
尝试方法1:重定向:ln -s ld-linux.so.3 ld-linux-armhf.so.3
新报错:./label_image:/lib/libm.so.6: version 'GLIBC_2.27' not found (required by ./label_image)
未完待续。。。
标签:bazel,Tensorflowlite,image,label,编译,lite,tensorflow,FLC,ARM
来源: https://www.cnblogs.com/jimchen1218/p/11551380.html