语义分割

举报
j_f 发表于 2020/03/31 11:04:51 2020/03/31
【摘要】 语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,与图像分类或目标检测相比,语义分割使我们对图像有更加细致的了解。本项目使用FCN(Fully Convolutional Networks)在Atlas200DK 实现图片的语义分割。

语义分割

 

效果图:
1.png2.png

1  简介

语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,与图像分类或目标检测相比,语义分割使我们对图像有更加细致的了解。本项目使用FCNFully Convolutional Networks)在Atlas200DK 实现图片的语义分割。

 

2  模型介绍

本项目采用FCN模型。FCN可以对图像进行像素级的分类,实现端到端的语义分割。

FCN代码下载地址:

https://github.com/shelhamer/fcn.berkeleyvision.org 

 

3.png 

2-1 FCN模型结构图

 

FCN模型结构1如图2-1所示。FCN采用反卷积层对最后一个卷积层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而对每一个像素都产生一个预测。

3 流程设计

Atlas200DK 实现语义分割功能。整体代码分为为数据处理、模型推理数据后处理三个模块模块结构图如3-1所示。

1585623769915616.png


spacer.gifspacer.gif

3-1 模块结构图

 

数据处理general_image):使用Opencvimread函数读图片信息将图片数据发送给模型推理模块。

模型推理(general_inference):调用DVPP接口,将BGR图片转为YUV格式。推理引擎首先调用ai_model_manager_CreateOutputTensor接口创建输出Tensor, 然后调用ai_model_manager_Process接口进行推理。将推理结果发送给数据后处理模块。

数据后处理(general_post):分析模型推理的结果,得到图片每个像素点的类别概率。每个像素点选定概率最大的类别作为它的类别。给不同类别设置不同像素颜色,输出推理结果图片。数据后处理模块流程参见图3-2

1585623782647994.png


spacer.gif

3-2 后处理模块流程

 

语义分割网络的代码:   

C++版本:https://gitee.com/Atlas200DK/sample-segmentation

4 扩展说明

 本项目替换使用Ernet 等语义分割模型。

 

5  效果图片

 

6.png7.png 

 

 

  

 

8.png 

9.png 

 

  

 

参考资料:

1】https://github.com/shelhamer/fcn.berkeleyvision.org

2】Fully Convolutional Networks for Semantic Segmentation   https://arxiv.org Evan ShelhamerJonathan LongTrevor Darrell

3】https://www.cityscapes-dataset.com/license/

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。