C++ 实现 语义分割 deeplab_v3

本文介绍了使用C++实现语义分割模型Deeplab_v3的过程,针对Tensorflow 1.0版本进行了模型修改,删除了不兼容的属性。文章提到了实现关键步骤,包括SpaceToBatchND和BatchToSpaceND函数,并展示了模型的实际应用效果。
摘要由CSDN通过智能技术生成

https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md

中有许多个模型。

先下一个试试效果如何:
http://download.tensorflow.org/models/deeplabv3_mnv2_dm05_pascal_trainaug_2018_10_01.tar.gz

由于
我的Tensoflow是1.0版。不能直接运行,先把模型编辑一下,去掉

     “Conv2D”的属性“dilations”和“data_format”

     以及“Cast”的属性“Truncate”

     “ArgMax”的属性“output_type”,然后就可以运行了。


模型中的空洞卷积是用SpaceToBatchND 和 BatchToSpaceND,先要用C++实现这两个函数

1。SpaceToBatchND 函数:

//四维 pad1(左、上补边),pad2(右、下补边)
张量 * SpaceToBatchND(张量 &in,int block_shape,int pad1,int pad2)
{

	张量* out= new张量(in.num);
	out->value=new int[out->num];
//	//批,高,宽,通道 N,H,W,C
	//输入四维[b, h, w, c], padding后[b, new_h, new_w, c]
	//x = np.pad(out_in, ((0,0), (4,7),(4,7), (0,0)), 'constant') // from shape (1, 2, 2, 1) to (1, 6, 6, 1)
	//x_shape=x.shape
	//b     = x_shape[0]
	//new_h = x_shape[1]
	//new_w = x_shape[2]
	//c     = x_shape[3]

	//批,通道&#x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值