从TensorFlow模型导出到OpenCV部署详解

引言

对于机器视觉从事者或者研究者来说,把训练好模型部署到项目中是关键的一步。现如今各大相机厂商都会提供相机的二次开发包,供给使用者进行使用和开发。据博主所知,目前大部分的相机开发包并不支持Python语言,而主流的深度学习框架都是基于Python语言,训练好的模型难以部署到自己的软件中。举个例子,博主一般使用C/C++语言对相机进行二次开发及编写工业软件,使用Python语言的TensorFlow框架训练模型,博主一般采用两种方式在C/C++中调用训练好的模型:

  • C/C++和Python混合编程,网上这部分的教程很多,博主这边就不过多说明。这个方法虽然不难,但是在使用过程中需要常常需要释放变量内存,并且程序在出错时难以排查。
  • 使用OpenCV的DNN模块加载TensorFlow训练好的模型,这个方式博主十分推荐,无需混合语言编程,避免难以察觉的错误,并且在OpenCV支持使用OpenVINO对CPU加速以及在4.2版本以后支持CUDA加速推理,部署方法在博主这两篇博客中有介绍。

本文将对使用TensorFlow训练模型、导出模型、模型转化以及OpenCV模型导入方法及过程详细介绍。

使用过程

1.模型训练

模型训练这块博主以自己写的UNet网络为例,见下面的代码。

input = tf.placeholder(shape=[None, 640, 640, 3], name="input", dtype=tf.float32)
gt = tf.placeholder(shape=[None, 640, 640, 1], dtype=tf.uint8)

weight_regularizer = contrib.layers.l2_regularizer(0.0005)
with slim.arg_scope([slim.conv2d, slim.conv2d_transpose], weights_regularizer = weight_regularizer,
                    biases_regularizer = weight_regularizer, biases_initializer = tf.constant_initializer(0.0),
                    weights_initializer = 'he_normal',
                    reuse=None):
    logits = Unet
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值