Matting任务里的Gradient与Connectivity指标

主要背景

Matting任务就是把α(不透明度, 也就是像素属于前景的概率)、F(前景色)和B(背景色)三个变量给解出来.

C为图像当前可观察到的颜色, 这是已知的. 问题是一个等式解不出三个变量, 因此就必须引入额外的约束使这个方程可解, 这个额外的约束就是由用户指定的trimap(有人译为三元图)图, 或者是仅仅在前景和背景画几笔的草图(scribbles).

主要的手段

  • 传统方法: Poisson Matting/Bayes Matting/Closed Form Matting/KNN Matting

    • Color sampling方法, 以Bayesian Matting为代表, 通过对前景和背景的颜色采样构建高斯混合模型, 但是这种方法需
      要高质量的trimap, 不易获取
    • Propagation的方法, 根据像素亲和度将用户绘制的信息传播到不确定像素, 以Poisson Matting和KNN matting为代
      表, 但是也不是自动抠图
  • CNN方法:
    • Natural Image Matting Using Deep CNN(ECCV 2016)
    • Deep Automatic Portrait Matting(ECCV 2016)
    • Automatic Portrait Segmentation for Image Stylization(2016)
    • Deep Image Matting(CVPR 2017)
    • Semantic Human Matting(2018)等

主要评价指标

来自于论文: Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, Pamela Rott. A Perceptually Motivated Online Benchmark for Image Matting. Conference on Computer Vision and Pattern Recognition (CVPR), June 2009.

  • Gradient
  • Connectivity
  • SAD
  • MSE

一些相关的术语, 来自参考链接[1]
SAD(Sum of Absolute Difference)= SAE(Sum of Absolute Error)即绝对误差和
SATD(Sum of Absolute Transformed Difference)即hadamard变换后再绝对值求和
SSD(Sum of Squared Difference)= SSE(Sum of Squared Error)即差值的平方和
MAD(Mean Absolute Difference)= MAE(Mean Absolute Error)即平均绝对差值
MSD(Mean Squared Difference)= MSE(Mean Squared Error)即平均平方误差

大致内容

因为若是仅仅考虑SAD和MSE指标, 在和人类判断的对比中, 发现, 并不能很好地反映人类的实际判断标准. 为此文章引入了两个新的指标, 梯度和连通性. 先来说下连通性.

Connectivity

这个图基于matting任务中获得的alpha matte, 这是一个灰度图, 表示的就是前面的公式里的\(\alpha\).

由于这里的图上出现了几个参数, $\alpha_i , \Omega, d_i, l_i, i$, 下面结合具体的公式来理解.

\[
\sum_{i}\left(\varphi\left(\alpha_{i}, \Omega\right)-\varphi\left(\alpha_{i}^{*}, \Omega\right)\right)^{p}
\]

这里的p是自定义参数. 具体见后.

该公式给出了连通性误差的计算方法, 这里是对整个预测出来的alpha matte图和对应的真值的图的对应的差异的累和. 这里的关键是里面的\(\varphi\left(\alpha_{i}, \Omega\right)\)函数.

首先要解释这里的\(\Omega\), 它表示的是对于预测结果图和真值共有的最大的值为1的连通区域, 被称为"源域(source region)", 也就是在上图中红线区域大致表示的范围. 这里的\(\varphi\)计算的是有着透明度\(\alpha_i\)的像素i, 与源域的连通度(degree of connectivity), 当其为1则认为该像素与源域全连通, 等于0表示完全不连通. 另一个加星号的表示真值图上的对应像素的连通度的计算. 二者计算差异, 来累计误差. 好的结果应该有着更低的误差, 更相似的连通情况.

公式里的\(l_i\)表示像素i四连通到源域所需要的最大阈值, 也就是上图中的虚线, 用它对alpha matte进行二值化, 正好处于使像素i与源域连通(实际需要四连通)/不连通的临界. 若是对于一个像素而言, 它的\(l=\alpha\), 那么就可以认为它与源域是全连通的.

而公式里的\(d_i\)如图所示, 表示的就是像素i处的\(\alpha\)值和对应的临界阈值\(l_i\)的差距.

\[
\varphi\left(\alpha_{i}, \Omega\right)=1-\left(\lambda_{i} \cdot \delta\left(d_{i} \geq \theta\right) \cdot d_{i}\right)
\]

这里的\(\theta\)是自定义参数, 具体见后. 它用在指示函数\(\delta\)里作为一个阈值, 来忽略小于它的\(d_i\)的情况, 认为小于它就已经是全连通了, 使得误差计算更为灵活.

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

Gradient

主要计算的是预测的alpha matte \(\alpha\)和ground truth \(\alpha^{*}\)的之间的梯度差异, 定义如下:

\[
\sum_{i}\left(\nabla \alpha_{i}-\nabla \alpha_{i}^{*}\right)^{q}
\]

这里的q是自定义参数. 具体见后

这里的\(\nabla \alpha_{i}\)和\(\nabla \alpha_{i}^{*}\)表示的是对应的alpha matte的归一化梯度, 这是通过将matte与具有方差\(σ\)的一阶Gaussian导数滤波器进行卷积计算得到的. 二者计算差异, 进而累计损失. 总体越相似, 指标值越小.

这里的方差\(σ\)也是自定义参数, 具体见后

关于参数的选择

对于这里存在四个需要人工设置的参数: \(\theta, p, q\), 在参考文章3中, 有进一步的测试与设定, 文章最终选择了这样的设定: \(\sigma=1.4, q=2, \theta=0.15, p=1\).

参考文章

  1. https://zhidao.baidu.com/question/1701594942558730300.html
  2. http://alphamatting.com/index.html
  3. Christoph Rhemann, Carsten Rother, Jue Wang, Margrit Gelautz, Pushmeet Kohli, Pamela Rott. A Perceptually Motivated Online Benchmark for Image Matting. Conference on Computer Vision and Pattern Recognition (CVPR), June 2009.`

Matting任务里的Gradient与Connectivity指标的更多相关文章

  1. .Net内存泄露原因及解决办法

    .Net内存泄露原因及解决办法 1.    什么是.Net内存泄露 (1).NET 应用程序中的内存 您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆.这里我们需 ...

  2. Elasticsearch 聚合统计与SQL聚合统计语法对比(一)

    Es相比关系型数据库在数据检索方面有着极大的优势,在处理亿级数据时,可谓是毫秒级响应,我们在使用Es时不仅仅进行简单的查询,有时候会做一些数据统计与分析,如果你以前是使用的关系型数据库,那么Es的数据 ...

  3. 转:.Net内存泄露原因及解决办法

    1.    什么是.Net内存泄露 (1).NET 应用程序中的内存 您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆.这里我们需要简单回顾一下. 以运行库为目标 ...

  4. 解决连锁零售行业IT运维管理四大困境

    解决连锁零售行业IT运维管理四大困境   中国近年来,连锁零售行业进入了行业的发展高潮,迅速崛起一批大型连锁业态.而随着IT技术的不断进步,连锁零售企业已经步入IT信息化快速发展的重要阶段:在面对激烈 ...

  5. TOP100summit:【分享实录】链家网大数据平台体系构建历程

    本篇文章内容来自2016年TOP100summit 链家网大数据部资深研发架构师李小龙的案例分享. 编辑:Cynthia 李小龙:链家网大数据部资深研发架构师,负责大数据工具平台化相关的工作.专注于数 ...

  6. Android 计算器

    首先在activity_main.xml加入一个EditText 通过xml的方式来沈成一个图像在drawable中新建一个white_bg.xml文件,同时选择一个shape标签corners设置圆 ...

  7. CloudStack 4.3功能前瞻

    今天CloudStack 4.3已经Feature Freeze了,不会再有新功能加入到这个版本里.我们也可以坐下来看看哪些功能是值得期待的.首先,4.3的UI也秉承扁平化设计,看着更加简洁清爽.见下 ...

  8. 解决Net内存泄露原因

    Net内存泄露原因及解决办法 https://blog.csdn.net/changtianshuiyue/article/details/52443821 什么是.Net内存泄露 (1).NET 应 ...

  9. (转)Linux 系统性能分析工具图解读(一、二)

    Linux 系统性能分析工具图解读(一.二) 原文:http://oilbeater.com/linux/2014/09/08/linux-performance-tools.html 最近看了 Br ...

随机推荐

  1. this 指向详细解析(箭头函数)

    前言 this 指向问题是入坑前端必须了解知识点,现在迎来了ES6时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,遂有此文 在非箭头函数下, this 指向调用其所在函数的对象,而 ...

  2. HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP

    REMOTE_ADDR 表示发出请求的远程主机的 IP 地址,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间 ...

  3. html--form表单

    <!-- form 标签 作用:收集并提交用户的信息 属性: id   表单的id,用于js获取表单 name 表单的名字,用于js获取表单 action 表单提交的地址 method 表单提交 ...

  4. python shutil模块&random模块

    shutil模块 import shutil shutil.copyfileobj(open("os_.py", "r"), open("os_2.p ...

  5. Python第5天

    今日学习的主要内容: 数据类型和变量的总结:(可变:列表,字典)(不可变:字符串,数字,元组) 引出集合概念:不同元素,无序,不可变类型 set方法—>集合 add添加:clear清空:pop删 ...

  6. 深度学习原理与框架- batch_normalize(归一化操作)

    1. batch_normalize(归一化操作),公式:传统的归一化公式 (number - mean) / std, mean表示均值, std表示标准差 而此时的公式是 scale * (num ...

  7. ubuntu 外接显示器

    xrandr --help xrandr   # 列出显示器 sudo xrandr --output eDP-1 --off   # 关闭eDP-1显示器 sudo xrandr --output ...

  8. css:伪类和伪元素

    一:伪类 1.   :active   想被激活的元素添加样式 2.   :focus   向拥有键盘输入焦点的元素添加样式 3.   :hover   当鼠标悬浮在元素上方时,向元素添加样式 4.  ...

  9. 好用的截图picpick工具,无需注册,无需破解

    链接:https://pan.baidu.com/s/1KtgF2wPdbRXAAenvrPiPzA 提取码:vasu

  10. cf1047C-Enlarge GCD-(欧拉筛+map+gcd+唯一分解定理)

    https://vjudge.net/problem/CodeForces-1047C 题意:有n个数,他们有个最大公约数设为maxxgcd,要删去一些数,使得剩下的数的gcd大于maxxgcd. 解 ...