首先还是先向我学习路上的前辈致谢:
https://blog.csdn.net/Light_Dream/article/details/88813227
https://github.com/amir-abdi/keras_to_tensorflow
大家都知道,现在进行深度学习和图像识别最流行的平台就是TensorFlow了,基本上也都是Python+TensorFlow进行项目搭建,但现在大多数web端仍然还是Java编写的,将深度学习模型移植到Java平台成了一个需要解决的问题。当前国内介绍这个的移植工作还是比较少的,现存的教程也有一堆坑,踩了一堆后总算是摸索出些东西,分享给大家。
平台:Java+Tomcat+TensorFlow
第一步:固化模型为pb文件
(直接摘的前辈)将需要移植的模型保存为二进制pb文件,主要的点是output_node_names数组,该数据的名称表示需要保存的tensorflow tensor名。既是在python中定义模型时指定的计算操作的name。填写什么就保存到什么节点。在cnn模型中,通常是分类输出的名称。
由于我图像识别模型是用keras做的,所以还需要固化为Pb模型,这里强烈推荐一个github上的转化脚本:
https://github.com/amir-abdi/keras_to_tensorflow
第二步:在Java上搭建tensorflow环境
这个地方非常重要,需要强调的是,目前国内教程上基本上都是说利用Java和Maven才能搭建,但实际上并不是这样,Maven只是个项目管理工具,对程序本身其实没多大影响,建立好依赖库即可。
步骤如下:
1.下载tensorflow支持的移植jar包:libtensorflow.jar和移植所需的JNI:libtensorflow_jni.dll (windows cpu version)
下载