Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记

本文主要是介绍Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation(边界Iou:改进以对象为中心的图像分割评价)

目录

一、论文出发点

二、论文核心思想

三、相关工作

四、敏感度分析

五、Boundary IoU定义和实验证明

六、应用

七、结论


一、论文出发点

对于分割任务,不同的评估指标对不同类型错误的敏感性不同,网络可以轻易解决指标对应敏感的类型,而其他错误类型的效果则不尽人意。mask的边界质量是图像分割的一个重要指标,但是很少有论文会提及他们mask的边界质量。以此作为出发点,提出来一种边界Iou,以此提高网络预测的边界质量。

二、论文核心思想

提出了一种新的基于边界质量的分割评价方法——Boundary IoU。基于边界IoU,分别提出了边界AP ( Average Precision )和边界PQ ( Panvision Quality )指标来更新实例和全景分割任务的标准评价协议。结果表明,对于较大的对象,Boundary IOU比标准的Mask IOU对边界错误更敏感。

三、相关工作

作者采用表2给出的统一表示法,定义了表1中常见的分割质量测量方法和新的Boundary IoU测量方法。将测量方法分为基于mask和基于boundary的两类,并讨论它们的差异。

表一:给出了不同分割质量测量方法的定义公式Definition),是否是对称的测量方法Symmetric),更偏向测量类型Preference),以及对什么样的错误类型不敏感Insensitivity)。

(该表是本文前半部分工作的核心所在,证明常用的IoU测量方法有哪些缺陷,由下文进行补充证明。)

表二:定义了表一公式中符号的含义。

四、敏感度分析

在敏感度分析所做的所有工作,是为了证明表一中对应Symmetric、Preference、Insensitivity的三列数据。

(1)敏感度分析的目的

将通过观察测量值响应不同大小的误差进行怎样的变化来比较几种mask一致性测量方法。观察和解释这些曲线,以得出关于这些测量方法的缺点,称之为敏感性分析的方法。

(2)具体方法

为了方便进行系统的比较,作者通过人为制造伪预测来模拟在不同掩码尺寸下的常见一组分割错误。如下图所示:

红色轮廓表示真值掩码。比例误差:(a)扩张mask,(b)削减mask;边界定位误差:(c)向多边形中的每个顶点添加随机高斯噪声;对象定位误差:(d)移动mask;边界近似误差:(e)简化多边形;内部掩码错误:(f)向mask添加空洞。

(3)实验结果

1. 如下图中(a)所示,在固定的错误严重性下,固定像素数对ground truth mask进行扩张/削减,较大对象的伪预测都能获得更高的分数。证明mask IoU偏向于大型对象

2. 如下图中(b)所示,交换预测和真实掩码再次进行测量会给出不同的评分,因此Trimap IoU不是对称的测量方法。在固定的错误严重性下,object area更大的对象的伪预测都能获得更高的分数,因此能证明Trimap IoU偏向于大型对象。

3. 如下图中(c)所示,F-measure可以忽略小的轮廓错位,也就是说F-measure对少量误差严重程度并不敏感,但是当误差严重程度较大时,F-measure会迅速降至零

五、Boundary IoU定义和实验证明

Boundary Iou可以克服以上所有测量方式的缺陷。

Boundary Iou定义公式如下:

Boundary IoU首先计算距离每个轮廓d以内的原始掩码像素集,然后计算这两个集合的并集上的交并比。(其中边界区域Gd和Pd分别是距离真实轮廓和预测轮廓d个像素内所有像素的集合。)

实验证明:

如下图所示,相比于Mask IoU,在固定的错误严重性下,Boundary IoU对于大对象的偏向性更小;相比于Trimap IoU,Boundary IoU是对称的测量方法;相比于Trimap IoU,Trimap IoU对误差严重程度要求十分严苛,一旦超过一定数值,Trimap IoU会直接降为0,而Boundary IoU以柔和的方式评估真实Mask与预测之间的一致性

(图中上半部分为在面积>96^2的对象使用伪预测,在所有考虑的错误类型中Boundary IoU与Mask IoU的对比表现,图中下半部分在面积16^2的对象使用伪预测)

六、应用

1. COCO实例分割数据集上对比Mask AP和Boundary AP。

 2. 在R-CNN得到真实预测上进行评价:分别对比Mask AP和Boundary AP更换backbones网络,对比Mask AP和Boundary AP使用PointRend和R-CNN分别输出预测,对比不同测量方法的AP与Boundary AP。

七、结论

本文提出了一种全新的IOU测量方法Boundary IoU,通过敏感度分析证明了现有的常用IOU计算方法的缺陷所在,并通过实验证明Boundary IoU在不同的误差类型下,能克服前者出现的各种不足之处。

这篇关于Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/218270

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres