语义分割
语义分割
效果图:
1 简介
语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别,与图像分类或目标检测相比,语义分割使我们对图像有更加细致的了解。本项目使用FCN(Fully Convolutional Networks)在Atlas200DK 实现图片的语义分割。
2 模型介绍
本项目采用FCN模型。FCN可以对图像进行像素级的分类,实现端到端的语义分割。
FCN代码下载地址:
https://github.com/shelhamer/fcn.berkeleyvision.org
图2-1 FCN模型结构图
FCN模型结构【1】如图2-1所示。FCN采用反卷积层对最后一个卷积层的特征图(feature map)进行上采样,使它恢复到输入图像相同的尺寸,从而对每一个像素都产生一个预测。
3 流程设计
Atlas200DK 实现语义分割功能。整体代码分为为数据预处理、模型推理、数据后处理三个模块。模块结构图如图3-1所示。
图3-1 模块结构图
数据预处理(general_image):使用Opencv的imread函数读图片信息,将图片数据发送给模型推理模块。
模型推理(general_inference):调用DVPP接口,将BGR图片转为YUV格式。推理引擎首先调用ai_model_manager_的CreateOutputTensor接口创建输出Tensor, 然后调用ai_model_manager_的Process接口进行推理。将推理结果发送给数据后处理模块。
数据后处理(general_post):分析模型推理的结果,得到图片每个像素点的类别概率。每个像素点选定概率最大的类别作为它的类别。给不同类别设置不同像素颜色,输出推理结果图片。数据后处理模块流程参见图3-2。
图3-2 后处理模块流程
语义分割网络的代码:
C++版本:https://gitee.com/Atlas200DK/sample-segmentation
4 扩展说明
本项目替换使用Ernet 等语义分割模型。
5 效果图片
参考资料:
【1】https://github.com/shelhamer/fcn.berkeleyvision.org
【2】Fully Convolutional Networks for Semantic Segmentation https://arxiv.org Evan Shelhamer, Jonathan Long, Trevor Darrell
【3】https://www.cityscapes-dataset.com/license/
- 点赞
- 收藏
- 关注作者
评论(0)