一、LINUX环境下操作:
1.安装交叉编译SDK (仅针对该型号:i.MX6,不同芯片需要对应的交叉编译SDK)
编译方法参考:手动编译用于i.MX6系列的交叉编译SDK
2.下载Tensorflow
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout r1.10
Tensorflow与Bazel编译器(及CUDA,CUDNN)之间需要对应,否则会有兼容性问题。
tensorflowr1.10 python 2.7,3.6 Bazel:0.18.0-0.19.2
tensorflowr1.12 python 2.7,3.6 Bazel:0.18.0-0.19.2
tensorflowr1.14 python 2.7,3.6 Bazel:0.24.0 - 0.25.2
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
(如果仅仅是测试DEMO在ARM板上使用,可直接跳过4,5,6,7,8步,直接进行第9步)
4、编译配置:
在Tensorflow源码根目录运行:
./configure (编译LINUX平台时使用默认设置:-march=native,编译ARM平台时需设置成相应值:-march=armv7-a)
5、编译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(不同版本,位置略有不同,本文路径为r1.10版本)
10、编译Tensorflow Lite:
方法1:(参考网上的,但我调试了几天,并未生成该库,可行性待验证!)
目前Tensorflow仅支持树莓派: ./tensorflow/contrib/lite/tools/make/build_rpi_lib.sh,该脚本的目标编译平台是ARMv7,即使目标平台是ARMv8,也不要更改。因为设置编译平台为ARMv7可以优化编译,提高运行速度。
所以,需要针对iMX6,制作一份build_imx6_lib.sh
1 set -e 2 3 SCRIPT_DIR="$(cd "$(dirname "$(BASH_SOURCE[0]}")" && pwd)" 4 cd "$SCRIPT_DIR/../../.." 5 6 CC_PREFIX=arm-poky-linux-gnueabi- make -j 3 -f tensorflow/contrib/lite/Makefile TARGET-imx6 TARGET_ARCH=armv7-a