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
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ONNX(Open Neural Network Exchange)是今天最流行的深度学习模型格式之一,被广泛用于将训练好的模型在不同的平台间进行交换和部署。ONNX语义分割是指使用ONNX格式的模型进行图像语义分割任务。 语义分割是计算机视觉领域中的重要任务,其目标是将图像中的每个像素分类为不同的预定义类别。传统的方法通常使用卷积神经网络(CNN)进行语义分割,而ONNX为这些CNN模型提供了一个通用的格式。 使用ONNX进行语义分割有以下几个步骤: 1. 训练模型:使用深度学习框架(如PyTorch、TensorFlow等)训练一个语义分割模型,确保模型能够准确地将图像中的像素分类为需要的类别。 2. 导出为ONNX格式:将训练好的模型导出为ONNX格式。不同的深度学习框架通常都提供了导出模型为ONNX格式的功能,可以通过相应的API或命令来完成。 3. 部署和推理:将导出的ONNX模型部署到目标平台上以进行推理。ONNX模型可以在支持ONNX的平台上进行部署和推理,如移动设备、物联网设备、嵌入式系统等。 4. 图像分割:使用部署的ONNX模型对新的图像进行语义分割。将待分割的图像输入到ONNX模型中,模型将根据其学习到的知识对每个像素进行分类。 ONNX语义分割提供了一种通用的、跨平台的解决方案,使得开发人员能够在不同的设备上部署和使用训练好的语义分割模型。它具有跨平台兼容性、高性能、低资源消耗等优势,因此在计算机视觉领域得到了广泛应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值