昇腾社区首页
中文
注册
人像的语义分割

背景

图像分割是计算机视觉研究中的基础问题,其目的是将图像划分成多个不重叠的区域,每个区域对应一个语义标签。图像分割技术可应用在许多生活场景中,例如安防监控、自动驾驶、医疗影像分析等。本案例旨在设计一个高精度图像分割算法,并部署在华为Atlas 200 DK上,通过摄像头获取场景图片,对其进行分割。本案例以室内人像场景为例,对摄像头获取的图像进行人像分割。

本项目的硬件平台

- Atlas 200 DK 开发者套件(型号:3000)

- 树莓派摄像头

本项目实现的基于错误预测的图像分割算法介绍

为了对一个给定的现有分割算法进行错误预测、错误纠正,本项目设计了一个基于错误预测的分割网络,在现有分割网络基础上提高了分割准确率。本网络分为3个分支,分别是语义分支、错误预测分支、细节分支。网络结构如下图所示。


- 语义分支:语义分支是一个现有的分割网络。本案例中使用DeepLabV3+作为语义分支,用于得到初始分割概率图及相应的CNN特征。

- 错误预测分支:错误预测分支的目的是为每个像素判断语义分支给出的初始分割结果是否是错误的,即错误像素的检测可被当作是一个二分类问题。

- 细节分支:细节分支为上一步检测出的错误像素进行重新预测,得到新的图像分割结果。结合初始分割结果与细节分支的新预测结果,得到最终的分割结果。

- 在训练人像分割网络时,抽取MS COCO数据中的人像数据,构建一个人像分割数据集。训练得到的模型,通过MindStudio中的模型转换工具转换成可部署在Atlas 200 DK上的*.om格式的模型。

分割系统的实现

本案例实现的图像分割系统流程图如下所示。


- 摄像头模块:用于获取YUV420SP格式的视频数据。

- 推理模块:将摄像头模块传输来的YUV格式图像进行预处理,并解析为RGB图像,输入到分割网络中,得到一个二值mask。mask中值为1的像素属于人像,值为0的像素属于背景。

- 后处理模块:将分割网络输出的mask以半透明蒙版的形式叠加在原始图像上,以便对结果进行观察。生成的叠加图像压缩成JPEG格式,通过Presenter Agent API传输给PresentServer服务端,最终在Web UI上显示。

为了在现有数据集图像上进行测试和评估,本系统除了可从摄像头读取数据,还可将摄像头模块替换为自定义的数据集模块。如下图所示,数据集模块从文件系统中读取测试图片,对其进行分割推理,并将分割结果保存在文件系统上。


结果展示

系统对摄像头获取的每帧图像进行分割,最终分割结果以半透明蒙版的形式,通过PresentServer显示下浏览器前端。


本案例实现的分割系统对单人、多人、局部人体等场景都有一定适用性。


在COCO验证集上测试并计算交并比(mean inter-over-union, mIoU),得到的量化结果如下:


除了人像数据集,本案例介绍的方法在Cityscapes城市交通场景数据集也达到了提升分割精度的效果。


效果展示