Image Matting 客观评价指标、数据集及主观评价

2021.7更新

PPM-100数据集已经开放,GitHub,详情见下文章节2.4


目录

  • Image Matting 客观评价指标、数据集及主观评价
    • 2021.7更新
  • 客观评价指标
    • 1. 精度
      • 1.1 SAD
      • 1.2 MSE 均方误差
      • 1.3 Gradient error
      • 1.4 Connectivity error
      • 1.5 MAD
      • 1.6 小结
    • 2. 数据集
      • 2.1爱分割[matting_human_datasets](https://github.com/aisegmentcn/matting_human_datasets)
      • 2.2 [Adobe Image Matting](https://sites.google.com/view/deepimagematting)
      • 2.3 [alphamatting](http://www.alphamatting.com/datasets.php)
      • 2.4 PPM-100
      • 2.5 小结
    • 3. 主观评价
    • Reference:

客观评价指标

1. 精度

目前常用的几个指标来自于这篇论文[1],SAD, MSE, Gradient error, Connectivity error.

1.1 SAD

SAD(Sum of Absolute Difference)绝对误差和,
S A D = ∑ i ∣ α i − α i ∗ ∣ SAD = \sum_i |\alpha_i - \alpha_i^*| SAD=i∑​∣αi​−αi∗​∣

def matte_sad(pred_matte, gt_matte):''' Sum of Absolute Differences pred_matte : np.array, shape : [h,w]gt_matte   : np.array, shape : [h,w]'''assert(len(pred_matte.shape) == len(gt_matte.shape))error_sad = np.sum(np.abs(pred_matte - gt_matte))return error_sad

1.2 MSE 均方误差

mean squared error (MSE)
M S E = 1 n ∑ i ( α i − α i ∗ ) 2 MSE = \frac {1}{n}\sum_i (\alpha_i - \alpha_i^*)^2 MSE=n1​i∑​(αi​−αi∗​)2

def matte_mse(pred_matte, gt_matte):''' Mean Squared Error '''assert(len(pred_matte.shape) == len(gt_matte.shape))error_mse = np.mean(np.power(pred_matte-gt_matte, 2))return error_mse

1.3 Gradient error

主要计算的是预测的 ∇ α i \nabla \alpha_i ∇αi​ 和 ∇ α i ∗ \nabla \alpha^*_i ∇αi∗​的之间的梯度差异, 定义如下:
∑ ( ∇ α i − ∇ α i ∗ ) q \sum (\nabla \alpha_i - \nabla \alpha^*_i)^q ∑(∇αi​−∇αi∗​)q

q q q为自定义函数,论文里设为2.

这里的 ∇ α i \nabla \alpha_i ∇αi​ 和 ∇ α i ∗ \nabla \alpha^*_i ∇αi∗​表示的是对应的alpha matte的归一化梯度, 这是通过将matte与具有方差 s i g m a sigma sigma的一阶Gaussian导数滤波器进行卷积计算得到的. 二者计算差异, 进而累计损失. 总体越相似, 指标值越小.

def matte_grad(pred_matte, gt_matte):''' Error measure with Gradient '''assert(len(pred_matte.shape) == len(gt_matte.shape))predict_grad = scipy.ndimage.filters.gaussian_filter(pred_matte, 1.4, order=1) # alpha matte的归一化梯度,标准差=1.4,1阶高斯导数的卷积gt_grad      = scipy.ndimage.filters.gaussian_filter(gt_matte,   1.4, order=1)error_grad   = np.sum(np.power(predict_grad - gt_grad, 2))return error_grad

这里调用的是SciPy模块,高斯滤波器用于高斯模糊是比较经典的图像卷积例子,这里使用高斯滤波器filters.gaussian_filter()来进行1阶高斯导数卷积计算。分别计算两者梯度,作差,然后累计其平方。两者越相似,Gradient error越小。

1.4 Connectivity error

connectivity error定义如下:
∑ i ( φ ( α i , Ω ) − φ ( α i ∗ , Ω ) ) \sum_{i}(\varphi(\alpha_i,\Omega) - \varphi(\alpha_i^*,\Omega)) i∑​(φ(αi​,Ω)−φ(αi∗​,Ω))
该公式给出了连通性误差的计算方法, 这里是对整个预测出来的alpha matte图和相应的Ground truth的对应的差异的累和. 这里的关键是里面的 φ ( α i , Ω ) \varphi(\alpha_i,\Omega) φ(αi​,Ω)函数,。源域(source region) Ω \Omega Ω由最大连通域定义,最大连通域是指alpha matte和它对应的Ground truth都完全不透明的部分(即 α \alpha α都为1),如上图红线区域大致表示。

连接程度由距离 d i d_i di​决定, d i = α i − l i d_i=\alpha_i - l_i di​=αi​−li​,其中 l i l_i li​是像素 i i i 能4连通到 Ω \Omega Ω的最大阈值,也就是上图中的虚线,阈值大于这个,像素i就与$ \Omega 不 连 通 了 。 用 它 对 ‘ a l p h a m a t t e ‘ 进 行 二 值 化 , 正 好 处 于 使 像 素 i 与 源 域 连 通 ( 实 际 需 要 四 连 通 ) / 不 连 通 的 临 界 . 若 是 对 于 一 个 像 素 而 言 , 它 的 不连通了。用它对`alpha matte`进行二值化, 正好处于使像素i与源域连通(实际需要四连通)/不连通的临界. 若是对于一个像素而言, 它的 不连通了。用它对‘alphamatte‘进行二值化,正好处于使像素i与源域连通(实际需要四连通)/不连通的临界.若是对于一个像素而言,它的l_i=\alpha_i$, 那么就可以认为它与源域是全连通的. i i i点连通度 φ \varphi φ的定义公式如下所示:
φ ( α i , Ω ) = 1 − ( λ i ⋅ δ ( d i ≥ θ ) ⋅ d i ) \varphi(\alpha_i,\Omega) = 1- (\lambda_i \cdot \delta(d_i \geq \theta) \cdot d_i) φ(αi​,Ω)=1−(λi​⋅δ(di​≥θ)⋅di​)
这里的 θ \theta θ是自定义参数, 文章[1]中取了0.15. 它用在指示函数 δ \delta δ里作为一个阈值, 来忽略小于它的 d i d_i di​的情况, 认为小于它就已经是全连通了, 使得误差计算更为灵活.

其中的 λ i = 1 K ∑ k ∈ K d i s t k ( i ) \lambda_i=\frac{1}{K}\sum_{k\in K}dist_k(i) λi​=K1​∑k∈K​distk​(i)用来对 d i d_i di​进行加权, 这里的K表示 l i l_i li​到 α i \alpha_i αi​之间的离散 α \alpha α值的集合, d i s t k dist_k distk​计算了设置为阈值k时, 对于像素i距离最近的连通到源域的像素, 与像素i之间的标准化欧式距离. 实际情况中, 远离连通区域的像素, 获得的权重 λ \lambda λ也应该相应会更大些, 这样导致得到的 φ \varphi φ会更小些, 也就是认为连通度更小.

因为按照公式定义的 λ \lambda λ的计算量太大,在实际应用中计算开销太大,为了减小计算[1]在公式中把 λ i \lambda_i λi​直接取为了1。

1.5 MAD

Mean Absolute Difference(MAD) 平均绝对差值
M A D = 1 n ∑ i ∣ α i − α i ∗ ∣ MAD = \frac{1}{n} \sum_i |\alpha_i - \alpha_i^*| MAD=n1​i∑​∣αi​−αi∗​∣
MAD和SAD类似,这两指标选择一个即可。

1.6 小结

[2],[3],[4] 等以上4个指标全都使用了, background matting[5]仅使用了SAD,MSE这两个指标, MODNet[6]主要使用了MSE,MAD这两个指标。

所以综合以上,我们的指标先选取MSE,MAD这两项,Gradient和Connectivity看结果最后再决定是否取用。

2. 数据集

2.1爱分割matting_human_datasets

该数据集包含34427张图像和对应的matting结果图。该数据集是公开数据集,且包含的数据量很大。

缺点:标注较为粗糙

2.2 Adobe Image Matting

该数据为非公开数据集,但是可以联系作者获取该数据集。431张训练图片,50张测试图片。通常按照一定比例和背景图片合成来扩充数据。

2.3 alphamatting

公开matting评估网http://www.alphamatting.com上的测试数据。

缺点: 数据量实在太少35object,包含各种object,人像极少。

2.4 PPM-100

由MODNet[6]提出,2021.7公开

大家可以从GitHub仓库查看,也可以直接下载:
Google Drive | 百度网盘 (提取码: PPMB)

优点: 高质量标注,更加多样化,可以作为benchmark data

2.5 小结

最终还是选择Adobe Image Matting数据集来评估,一是数据集便于获得,使用该数据集比较的论文较多;二是该数据集相较alphamatting更多更全面,且质量较好。

后续PPM-100如果放出来,且质量较好,可以考虑选用。

3. 主观评价

选取一些图片,用多种方法进行抠图,将原图,Ground Truth和多种方法的matting结果放在一起做比较,观察其毛发边缘,感受matting效果。

Reference:

[1] Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, and Pamela Rott. 2009. A perceptually motivated online benchmark for image matting. In Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 1826–1833.

[2] Chen Q, Ge T, Xu Y, et al. Semantic human matting[C]//Proceedings of the 26th ACM international conference on Multimedia. 2018: 618-626.

[3] Liu J, Yao Y, Hou W, et al. Boosting Semantic Human Matting with Coarse Annotations[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 8563-8572.

[4] Xu N, Price B, Cohen S, et al. Deep image matting[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 2970-2979.

[5] Sengupta S, Jayaram V, Curless B, et al. Background Matting: The World is Your Green Screen[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 2291-2300.

[6] Ke Z, Li K, Zhou Y, et al. Is a Green Screen Really Necessary for Real-Time Human Matting?[J]. arXiv preprint arXiv:2011.11961, 2020.

[7] Matting任务里的Gradient与Connectivity指标

[8] https://blog.csdn.net/On_theway10/article/details/102860040

[9] https://www.cnblogs.com/king-lps/p/6374916.html

Image Matting 客观评价指标、数据集及主观评价相关推荐

  1. 如何选择和使用视频质量客观评价指标

    "视频质量评定是个大坑",正如北京大学信息工程学院教授王荣刚所说.尽管可以通过火眼金睛的"专家"来主观评价(一种观点认为主观评价要由于客观评价,毕竟视频给人看的 ...

  2. 文本生成客观评价指标总结(附Pytorch代码实现)

    前言:最近在做文本生成的工作,调研发现针对不同的文本生成场景(机器翻译.对话生成.图像描述.data-to-text 等),客观评价指标也不尽相同.虽然网络上已经有很多关于文本生成评价指标的文章,本博 ...

  3. 音频质量客观评价指标

    原文地址:音频质量客观评价指标 作者:LeoLi6 (转载引用请注明出处) 干货分享,欢迎点赞收藏加关注! 语音增强中,常添加各种指标评估算法效果和语音质量,下面是常见的一些指标, All these ...

  4. 影像技术—行车记录仪客观评价指标

    作者:右下角 链接:https://www.zhihu.com/question/22499326/answer/100824096 在知乎上看到有关成像质量客观测试技术的文章,觉得讲的很精彩,作者以 ...

  5. 《贪婪之秋》——游戏主观评价及灵感提取

    <贪婪之秋>--游戏主观评价及灵感提取 前言 ​ 最开始接触这款游戏是在我研究生入学前的暑假,当时的情况属于刚打完老头环.英灵殿的真空期.我并没有对这款游戏给予很大的期待,纯当做消磨时间的 ...

  6. [DIP]客观保真度准则与主观保真度准则

    根据解码图象对原始被压缩图象的保真程度,图象压缩的方法可分成两大类:信息保存型和信息损失型.信息保存型在压缩和解压缩过程中没有信息损失,最后得到的解码图象与原始图象一样.信息损失型常能取得较高的压缩率 ...

  7. 视频质量评价方法:VQM

    本文转载自http://blog.csdn.net/leixiaohua1020/article/details/12685297 VQM 客观测试标准是利用统计学原理模拟实际的人眼视觉系统,在提取参 ...

  8. 【课题总结】OpenCV 抠图项目实战(11)算法实验平台

    Python 小白的课题报告-OpenCV 抠图项目实战(11)抠图算法实验平台 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能 ...

  9. 【课题报告】OpenCV 抠图项目实战(10)PyQt5 使用

    Python 小白的课题报告-OpenCV 抠图项目实战(10)PyQt5 使用 本系列是 Python 小白的课题作业<基于OpenCV 的图像分割和抠图>. 需要说明的是,本系列并不能 ...

最新文章

  1. 2021年举行的第一场智能车校内赛 - 上海海事大学
  2. 倒计时 | 7.24 阿里云 Serverless Developer Meetup 杭州站报名火热进行中!
  3. python内置函数 pdf_关于Python巧妙而强大的内置函数
  4. 设计模式(六)J2EE 模式
  5. win10雷电3接口驱动_“雷电3”接口知识大科普
  6. java canvas 画图片_canvas画布——画八卦图
  7. 统一并发 I——简介
  8. NFS服务启动:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
  9. linux启动找不到,pxe启动的时候找不到pxelinux.0的原因
  10. 阿里云技术专家张城:SLS可观测与AIOps的整体架构
  11. EMC相关标准 GB IEC EN对照(持续添加中……)
  12. Mac用bootcamp安装Windows 11双系统
  13. 推荐:百亿级微信红包的高并发资金交易系统设计方案
  14. 主板怎么开启csm_手把手教你查看电脑主板是否支持UEFI+GPT启动模式-网络教程与技术 -亦是美网络...
  15. 即时通信软件实现原理
  16. 【强化学习】在Pong环境下实现策略梯度
  17. Android studio 之 Menu(菜单)
  18. Wangle源码分析:ClientBootstrap
  19. 卡饭PDF转换器之CAJ转换
  20. [生命科学] 生物基础实验之PCR验证

热门文章

  1. PDF文件自带的密码,如何删除?
  2. 【从零开始游戏开发】 开发环境准备 | Intellij idea 编辑器 | EmmyLua插件 | Unity引擎 | 编程语言
  3. 西门子1500PLC博途程序实例,大型程序fanuc机器人汽车焊装自动生产线程序,程序硬件结构包括1台西门子1500PLC程序
  4. 实战 goproxy 为中国steam登录加速
  5. win10怎么下载python_w10怎么下载安装python|w10下载安装python的方法
  6. opencv各版本与VS配置
  7. Yolov7训练自己的数据-水果检测
  8. 知识焦虑时代如何进行学习
  9. 10 种主数据模型设计示例分享,推荐收藏
  10. android xposed如何写,Xposed插件开发入门详解