图像处理不应该单单只有深度学习。我决定将数字图像处理和深度学习两部分算法结合在一起。之前的opencv代码都是在c++上完成的,tensorflow使用Python版本的。由此决定配置一个c++接口的tensorflow,将两部分代码融合。
但是万万没有想到配置一个自认为简单的接口会耗费将近4天的时间,基本将所有的tensorflow的坑都踩了一遍。
本文是在配置成功后,重新回忆梳理整个配置流程。好像还是增长了一些对源码的debug能力,和对tensorflow的认识,但是这个过程实在是太痛苦了。。。
安装环境:
Ubuntu 16.04
Python 3.6
CUDA 9.1
cuDNN 7
TensorFlow 1.12.0
安装环境一致非常的重要。建议重新在anaconda环境下新建一个Python3.6的环境,哪怕安装失败也不会产生什么心疼环境的改变。
安装c++接口需要从源码重新编译tensorflow,最重要的参考来自于官方文档。
https://www.tensorflow.org/install/source
进行到 安装 Bazel 时需要注意,版本一定要和你选择安装的tensorflow版本相一致。通常来讲版本需要低点才可以成功。本文使用的是0.17.2采用官网里的第一种方式安装https://docs.bazel.build/versions/master/install-ubuntu.html
这个装错了不要紧,卸载了重新装就可以,一般不会出问题。
卸载bazel: which bazel sudo rm -rf your-directory
然后安装对应版本的protobuf,就是安装protoc。这个一定要和tensorflow的版本相匹配
在这个文件中可以找到对应的版本 /tensorflow-1.12.2/tensorflow/workspace.bzl,可以看到是3.6.0版本的。