第一步把tensorflow保存的.ckpt模型转为pb模型, 并记下模型的输入输出名字.
第二步去ncnn的github上把仓库clone下来, 按照上面的要求装好依赖并make.
第三步是修改ncnn的CMakeList, 具体修改的位置有:
ncnn/CMakeList.txt文件, 在文件开头处加入add_definitions(-std=c++11), 末尾处加上add_subdirectory(examples), 如果ncnn没有examples文件夹,就新建一个, 并加上CMakeList.txt文件.ncnn/tools/CMakeList.txt文件, 加入add_subdirectory(tensorflow)
原版的tools/tensorflow/tensorflow2ncnn.cpp里, 不支持tensorflow的elu, FusedBathNormalization, Conv2dBackpropback操作, 其实elu是支持的,只需要仿照relu的格式, 在.cpp文件里加上就行. FusedBatchNormalization就是ncnn/layer/里实现的batchnorm.cpp, 只是`tensorflow2ncnn里没有写上, 可以增加下面的内容:
else if (node.op() == "FusedBatchNorm")
{
fprintf(pp, "%-16s", "BatchNorm");
}
...
else if (node.op() == "FusedBatchNorm")
{
std::cout << "node name is

本文详细介绍了如何将TensorFlow的.ckpt模型转换为PB模型,并进一步转化为NCNN模型。过程中涉及修改NCNN的CMakeList,添加缺失的层支持,如卷积、反卷积和空洞卷积。虽然NCNN对TensorFlow的支持有限,需要手动实现一些层,但通过理解原理和适配,可以成功完成转换。
最低0.47元/天 解锁文章
5004

被折叠的 条评论
为什么被折叠?



