人像精细分割问题分析

最近参加了一个oppo举办的比赛,做人像精细分割。题目要求是这样的:

  • 任务描述

随着手机硬件平台和人工智能技术的飞速发展,目前的智能手机基本都可以实现后置双摄像头和前置单摄像头对人像拍照时的背景虚化。在虚化的方法上,后置通过双摄像头来计算景深从而实现前景人像的分割,进而对背景虚化;而前置则直接对单帧图像进行人像分割的方式来虚化背景。这两种方式来带的虚化效果是显著的,但是也存在很多弊端,无论哪种分割方式,都难以实现对人像发丝的精细分割,这导致了最终人像头部边缘的虚化效果不是很理想。随着用户对手机相机拍照功能要求的逐年升级,为了达到单反相机级别的背景虚化效果,需要能够实现人像的精细分割,尤其是发丝边缘。这样不仅可以实现更加精确的背景虚化,同时也为人像照片换背景提供了技术支持,而这些可以进一步增强用户的使用体验。

  • 输入:RGB 人像图片
  • 输出:分割为人像和背景的图片
  • 评价方法
  • 本题目分为基于 groundtruth 的评价和算法运行时间。

  • 基于 groundtruth 的评价。在测试集中,会给定多张人像图像及其对应的分割好的图像作为 groundtruth。基于参赛者生成的分割图像和 groundtruth 的比对,利用 F1-score 和 Mean Intersection Over Union (mIOU) 作为评价指标。
  • 为 groundtruth,A 为其人像区域;为算法估计的分割,B 为其人像区域,则

     

上网看了一些论文和相关算法,目前的思路如下:

1、它题目中所提到的人像分割更像是抠图(Image Matting),如果想要结合人工智能算法,我们的第一种思路是:以传统image matting算法,作为最终方法,分割前景与背景。但使用这些方法需要trimap图像(划定中间区域的图像),所以我们考虑用cnn网络进行初步分割,以分割得到的结果图作为trimap。

2、训练网络loss的建立:以最终抠图结果的groundtruth作为计算loss的标准,更新cnn网络,最终得到的网络与传统分割网络不同,它是一个更好划分出trimap的网络。


2018.12.15:

1.传统抠图算法学习:https://www.cnblogs.com/Imageshop/p/3550185.html

传统抠图算法的确能够得到发丝精度的图像,但是速度较慢,这篇10年左右的文章实现了实时的抠图算法。也比较典型。我把它的linux抠图软件下载下来但是没跑通。似乎是版本太旧了,我们最终的算法也不考虑用这个抠图算法。

2.图像分割网络的学习:https://github.com/lxtGH/dfn_seg

https://github.com/lxtGH/fuse_seg_pytorch

这两个似乎都是face++的分割网络,还都比较新,但是没有训练代码,只有训练好的网络框架,均使用的pytorch的网络框架。


2018.12.16:

1.学习了一下本题的评估标准:F1分数(F1-Score),又称为平衡F分数(BalancedScore),它被定义为精确率和召回率的调和平均数。参考https://blog.csdn.net/sinat_28576553/article/details/80258619

先看四个概念定义: 

TP、True Positive   真阳性:预测为正,实际也为正

FP、False Positive  假阳性:预测为正,实际为负

FN、False Negative 假阴性:预测与负、实际为正

TN、True Negative 真阴性:预测为负、实际也为负。

精确率和召回率

计算我们预测出来的某类样本中,有多少是被正确预测的。针对预测样本而言。

总结一句话就是:准确率是正确预测个数在预测数据中占得比例,召回率是正确预测个数在原始数据中占得比例。

针对原先实际样本而言,有多少样本被正确的预测出来了。

  •   F1=2Tp/(2Tp+FN+Fp)

 


2018.12.17

1.花费巨款50C币下载了一个抠图程序sharedmatting,并成功调通。

原图
trimap图
结果图

但是仍然需要trimap图来帮助划分区域。

2.在这个网址看到了一种训练网络的方法也是输入原图和trimap图,实现分割图像。细节可去网址:https://sites.google.com/view/deepimagematting

大体思路是:用原图和trimap图作为输入,抠出前景之后,再放到完整的背景图像中,作为网络输出结果。将结果与原图进行比较计算loss。

3.用区域生长算法获得trimap图像。 

区域生长算法的基本思想是将有相似性质的像素点合并到一起。对每一个区域要先指定一个种子点作为生长的起点,然后将种子点周围领域的像素点和种子点进行对比,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的像素被包括进来为止。这样一个区域的生长就完成了。这个过程中有几个关键的问题:

a.给定种子点(种子点如何选取?)

      种子点的选取很多时候都采用人工交互的方法实现,也有用其他方式的,比如寻找物体并提取物体内部点或者利用其它算法找到的特征点作为种子点。

b. 确定在生长过程中能将相邻像素包括进来的准则

     这个准则很重要:例如包括灰度值的差值;彩色图像的颜色;梯度特征,包括梯度的方向和幅值特征。该点周围的区域特征,例如harr特征,也就是区域像素和特征。

 


 

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值