mmdnn tensorflow 转 caffe

参考

https://github.com/Microsoft/MMdnn/blob/master/mmdnn/conversion/tensorflow/README.md#how-to-prepare-your-model-and-conversion-parameters

查看可用模型:

How to prepare your model and conversion parameters

You can refer Slim Model Extractor to extract your own tensorflow model, which is a sample tool to extract both architecture and weights from slim pre-trained models.

$ mmdownload -f tensorflowSupport frameworks: ['inception_v3_frozen', 'resnet_v2_200', 'inception_v1', 'mobilenet_v1_1.0', 'mobilenet_v2_1.0_224', 'resnet_v2_152', 'vgg16', 'mobilenet_v1_1.0_frozen', 'resnet_v1_50', 'resnet_v2_50', 'inception_v3', 'inception_resnet_v2', 'resnet_v1_152', 'inception_v1_frozen', 'vgg19', 'nasnet-a_large']

有几条路:

1. ckpt 转

Checkpoint File Conversion

We will give an example to convert TensorFlow resnet slim model with checkpoint files to caffe.

# Download TensorFlow pre-trained model first
$ mmdownload -f tensorflow -n resnet_v2_152Downloading file [./resnet_v2_152_2017_04_14.tar.gz] from [http://download.tensorflow.org/models/resnet_v2_152_2017_04_14.tar.gz]
100% [......................................................................] 675629399 / 675629399
Model saved in file: ./imagenet_resnet_v2_152.ckpt# Convert the TensorFlow model to Caffe
$ mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNodeName MMdnn_Output -df caffe -om tf_resnet
.
.
Caffe model files are saved as [tf_resnet.prototxt] and [tf_resnet.caffemodel], generated by [203e03ef187a42f59942737dace8773d.py] and [203e03ef187a42f59942737dace8773d.npy].

-in is used to specify the ".ckpt.meta" file.

-iw is used to specify the ".ckpt" file.

--dstNodeName is used to specify the output node of your model, which can be found in your code or tensorboard graph. We provide a tool vis_meta to help visualize your meta graph.

2. frozen pb 转

We will give an example to convert TensorFlow mobilenet slim model with frozen_pb to caffe

# Download TensorFlow pre-trained model first
$ mmdownload -f tensorflow -n mobilenet_v1_1.0_frozenDownloading file [mobilenet_v1_1.0_224_frozen.tgz] from [https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_1.0_224_frozen.tgz]
progress: 18712.0 KB downloaded, 100%k# Convert the TensorFlow model to Caffe
$ mmconvert -sf tensorflow -iw mobilenet_v1_1.0_224/frozen_graph.pb --inNodeName input --inputShape 224,224,3 --dstNodeName MobilenetV1/Predictions/Softmax -df caffe -om tf_mobilenet
.
.
Caffe model files are saved as [tf_mobilenet.prototxt] and [tf_mobilenet.caffemodel], generated by [e96550a4c55141afa8cd94372b858613.py] and [e96550a4c55141afa8cd94372b858613.npy].

For frozen graph parser, --inNodeName and --inputShape are required, and don't need to set -in.

3. debug 模式一步一步来

Step-by-step conversion for debugging

We will give an example to convert TensorFlow mobilenet slim model with frozen_pb to caffe.

# Convert frozen graph to IR
$ mmtoir -f tensorflow -w mobilenet_v1_1.0_224/frozen_graph.pb --inNodeName input --inputShape 224,224,3 --dstNodeName MobilenetV1/Predictions/Softmax -o mobilenet_v1IR network structure is saved as [mobilenet_v1.json].
IR network structure is saved as [mobilenet_v1.pb].
IR weights are saved as [mobilenet_v1.npy].# Convert IR to Caffe network building code
$ mmtocode -f caffe -n mobilenet_v1.pb -w mobilenet_v1.npy -o tf_mobilenet.py -ow tf_mobilenet.npyParse file [mobilenet_v1.pb] with binary format successfully.
Target network code snippet is saved as [tf_mobilenet.py].
Target weights are saved as [tf_mobilenet.npy].# Use Caffe network building code to generate an original Caffe model
$ mmtomodel -f caffe -in tf_mobilenet.py -iw tf_mobilenet.npy -o tf_mobilenet
.
.
.
Caffe model files are saved as [tf_mobilenet.prototxt] and [tf_mobilenet.caffemodel], generated by [tf_mobilenet.py] and [tf_mobilenet.npy].

The you can use tf_mobilenet.prototxt and tf_mobilenet.caffemodel in Caffe directly.

第三个方法的好处是,如果前两条路出现cuda error,可以用debug模式一步一步来减轻GPU的负担从而解决问题。

常见问题是

DummyData 出现 "'LayerParameter' object has no attribute 'shape'" 在 _to_proto 的时候,

解决办法:caffe在dummydata 进行了更新,我们也需要更新caffe并重新 make pycaffe

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core 3.0 部署在docker上运行

自从.NET Core3.0发布之后,写了几篇关于.NET Core 3.0的文章,有助于你快速入门.NET Core3.0。本篇文章主要讲解如何一步步创建一个mvc项目,然后发布并部署在Docker上运行。需要你本地有docker环境1.创建一个站点创建一个ASP.NET Core Web应用…

Deeplab unexpected label

另一种可能的原因是,输入图像尺寸不当,比如奇数偶数不对,导致进入网络中需要补或resize,这样就造成了不确定的label值。

2019 .NET China Conf:路一直都在,社区会更好

这个周末,我从成都飞到了上海参加了首届由社区组织而非官方(比如Microsoft)组织的.NET开发者峰会(.NET Conf)。为此,我特意请了两天的假(周五周六,对,我们是大小周&#…

“开源、共享、创新”, 中国最具前景开发者峰会落幕魔都

点击蓝字关注我们作者:张善友编辑:吴珊珊校正:潘淳、许豪、刘腾飞、朱兴亮、郑和阳、张潇、韩骏问卷制作:杨乐2019年,注定会是 .NET Core 社区发展的关键一年,诸多重大事件在这一年发生!正如大家…

tensorflow atrous convoltion

conv2d_same 就是专门针对 atrous convolution 的 dilation 进行的卷积 https://blog.csdn.net/u013200703/article/details/79300217 def conv2d_same(inputs, num_outputs, kernel_size, stride, rate1, scopeNone): if stride 1: return slim.conv2d(inputs, num_o…

GitHub 2019年度报告,用户超4000万

GitHub 发布了 2019 年年度报告《The State of the Octoverse》,下边来看看一些主要数据。全球用户超过 4 千万 目前 GitHub 上有超过 4000 万开发人员,其中有 80% 来自美国以外的地区。去年一年里有 1000 万新加入的开发者,2019 …

如何基于k8s快速搭建TeamCity(YAML分享)

前言最近有朋友基于之前的博客《Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)》搭建TeamCity时出现了一些问题,由于平常比较忙,没有及时答复,非常抱歉。这里分享下基于本地k8s集群(云端k8s服务…

github 创建文件夹

https://blog.csdn.net/zhaomengszu/article/details/80354929 在我们不适用本地Git的情况下,我们怎么在网页上创建类似下图一样的文件夹呢 四步方法: 第一步:找到新增按钮 第二步:输入文件夹名,你想要用的文件夹名字。 第三步…

ML.NET 终于在Jupyter NoteBook 上跑起来了

对.NETer来说,刚结束的.NET Conf 2019是非常难忘的,毕竟这个个人觉得比微软在中国办的大会更加清真,当然现阶段.NET 已经不单跑在Windows的一项技术了,它可以跑在Linux/macOS/iOS/Android/IoT等,也可以融合当今最热门的…

tf.variable_scope() and tf.name_scope()

https://blog.csdn.net/UESTC_C2_403/article/details/72328815 tf.variable_scope可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量 tf.name_scope可以让变量有相同的命名,只是限于tf.Variable的变量 例如&a…

2019.NET Conf China,.NET之崛起,已势不可挡

本文来自DotNET技术圈作者:邹溪源一、背景当今时代,气象更新,技术飞速发展。当今时代,开发者大概是最优秀的群体。每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战&#…

Pocketflow 使用

Pocketflow的简介:https://pocketflow.github.io/ 由两个modules组成:Learner module 负责利用随机hyperparameters压缩并fine-tuning,optimizer module 负责依据随机参数对应的结果确定最佳的压缩参数。Learn module 遍历的hyperparameter来…

PowerBI 11月更新 数据PPT是否会引领新一轮革命

PowerBI Desktop 2019年11月更新新鲜出炉了:罗叔作为全球第 80 人观看更新内容者,快速将本月更新全部奉上,供大家参考。 打开预览特性,如下:本次更新出了三大功能: Power Query 支持 AI新的功能区&#xff…

pip ImportError: cannot import name 'main' after update

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall Chang pip to pip3

WeihanLi.Npoi 近期更新

WeihanLi.Npoi 近期更新Intro最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一下最近的更新默认导入/导出格式变更在 1.5.0 版本…

【.NETCore 3】Ids4 ║ 多项目集成统一认证中心的思考

前言哈喽大家好,好久都没有写文章了,这次又重新开始写技术文章了,半年前我还是一直保持每周都写文章的,后来是为了响应群友的号召,开始踏上了录制视频(https://www.bilibili.com/video/av58096866&#xff…

darknet 训练 cannot load image

train.txt 的末尾 不应是\r\n 而应是 \n

.NET 社区 NB,2019 中国 .NET 开发者峰会

点击蓝字关注我们作为广州 .NET 技术俱乐部的一名成员,很荣幸以志愿者的身份见证并参与了 首届社区组织的中国 .NET 开发者峰会 ,这次大会共分为三天,第一天的 .NET 之夜,第二天的 .NET 开发者峰会,第三天的 .NET Core…