使用Dice loss实现清晰的边界检测
前言:
在深度学习和计算机视觉中,人们正在努力提取特征,为各种视觉任务输出有意义的表示。在一些任务中,我们只关注对象的几何形状,而不管颜色、纹理和照明等。这就是边界检测的作用所在。
关注公众号CV技术指南,及时获取更多计算机视觉技术总结文章。
问题定义
图1是一个边界检测的例子,顾名思义,边界检测是从图像中检测对象边界的任务。这是一个不适定的问题,因为问题设置本身存在歧义。如图所示,对于室内房间图像(左),ground truth(中)定义房间内的ground truth对象边界,并且预测(右)估计房间的对象边界。然而,我们可以看到,估计的边界远不止是ground truth,包括来自房间布局、窗帘,甚至沙发纹理的不必要的边界线。提取干净且有意义的对象边界并不容易。
原始方法
边界检测的一个直接解决方案是将其视为语义分割问题。在标注中简单地将边界为1和其他区域标记为0,我们可以将其表示为一个二分类语义分割问题,以二值交叉熵损失为损失函数。然而,它有两个原因:高度不平衡的标签分布和每像素交叉熵损失的内在问题。
Cross Entropy Loss的局限性
当使用交叉熵损失时,标签的统计分布对训练精度起着很重要的作用。标签分布越不平衡,训练就越困难。虽然加权交叉熵损失可以减轻难度,但改进并不显著,交叉熵损失的内在问题也没有得到解决。在交叉熵损失中,损失按每像素损失的平均值计算,每像素损失按离散值计算,而不知道其相邻像素是否为边界。因此,交叉熵损失只考虑微观意义上的损失,而不是全局考虑,这还不足以预测图像水平。

图2 具有交叉熵损失的边界预测
如图2所示。对于输入图像(左),比较了交叉熵损失(中)和加权交叉熵损失(右)的预测。右边的边界比中间的要好得多,但预测的边界并不干净,肮脏的草地纹理边界仍然存在。
Dice Loss
Dice Loss起源于Sørensen-Dice系数,这是20世纪40年代用来测量两个样本之间的相似性的统计数据。它是由米勒塔里等人带到计算机视觉的。2016年进行三维医学图像分割。

图3 骰子系数
上式显示了骰子系数方程,其中pi和gi分别表示对应的像素预测值和ground truth。在边界检测场景中,pi和gi的值为0或1,表示像素是否为边界,是的时候值为1,否则值为0。因此,分母是预测和ground truth的总边界像素的和,数值是正确预测的边界像素的和,因为只有当pi和gi值匹配时(两个值1)才递增。

图4 骰子系数(设定视图)
图4是图3的另一个视图。从集理论的角度来看,其中骰子系数(DSC)是两个集合之间重叠的度量。例如,如果两组A和B完全重叠,DSC的最大值为1。否则,DSC开始减少,如果两个组完全不重叠,则最小值为0。因此,DSC的范围在0到1之间,越大越好。因此,我们可以使用1-DSC作为骰子损失来最大化两组之间的重叠。
在边界检测任务中,ground truth边界像素和预测的边界像素可以被视为两个集合。通过利用Dice Loss,这两组被训练一点地重叠。如图4所示。分母考虑全局尺度上的边界像素的总数,而数值考虑局部尺度上的两个集合之间的重叠。因此,Dice Loss在本地和全局上都考虑了损失信息,这对于高精度至关重要。
结果

图5 边界预测的结果
如图5所示。使用Dice Loss(c列)的预测结果比其他方法(d、e列)具有更高的精度。特别是对于薄边界,因为只有当预测的边界像素与ground truth薄边界重叠,并且在其他区域没有预测的边界像素时,才可以减少Dice Loss
参考论文
V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation, Milletari et al., 3DV 2016
Learning to Predict Crisp Boundaries, Deng et al., ECCV 2018
原文链接:
https://medium.com/ai-salon/understanding-dice-loss-for-crisp-boundary-detection-bb30c2e5f62b
本文来源于公众号 CV技术指南 的论文分享系列。
欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。
在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

其它文章
在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
使用Dice loss实现清晰的边界检测的更多相关文章
- 不带Anchors和NMS的目标检测
前言: 目标检测是计算机视觉中的一项传统任务.自2015年以来,人们倾向于使用现代深度学习技术来提高目标检测的性能.虽然模型的准确性越来越高,但模型的复杂性也增加了,主要是由于在训练和NMS后处理过 ...
- 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...
- AAAI 2021 最佳论文公布
作者:Synced 翻译:仿佛若有光 第三十五届 AAAI 人工智能会议 (AAAI-21) 以虚拟会议的形式拉开帷幕.组委会在开幕式上公布了最佳论文奖和亚军.三篇论文获得了最佳论文奖,三篇被评为 ...
- 漫谈CUDA优化
作者:Lawliet 翻译:仿佛若有光 前言: 几个月前,我根据 Simoncelli 2016 年的论文编写了自己的自动编码器,用于研究目的.一开始,我想使用一些流行的深度学习框架(例如 Ten ...
- CVPR2021 | Transformer用于End-to-End视频实例分割
论文:End-to-End Video Instance Segmentation with Transformers 获取:在CV技术指南后台回复关键字"0005"获取该论文 ...
- ICCV2021 | 重新思考视觉transformers的空间维度
论文:Rethinking Spatial Dimensions of Vision Transformers 代码:https://github.com/naver-ai/pit 获取:在CV技 ...
- ICCV2021 |重新思考人群中的计数和定位:一个纯粹基于点的框架
论文:Rethinking Counting and Localization in Crowds:A Purely Point-Based Framework 代码:https://github ...
- CVPR2021 | 重新思考BatchNorm中的Batch
前言 公众号在前面发过三篇分别对BatchNorm解读.分析和总结的文章(文章链接在文末),阅读过这三篇文章的读者对BatchNorm和归一化方法应该已经有了较深的认识和理解.在本文将介绍一篇关于 ...
- ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别
前言:这篇论文旨在以极低的计算成本解决性能大幅下降的问题.提出了微分解卷积,将卷积矩阵分解为低秩矩阵,将稀疏连接整合到卷积中.提出了一个新的动态激活函数-- Dynamic Shift Max,通过 ...
随机推荐
- python从hello world开始(3)
"""# !usr/bin/env python# -*- coding:utf-8 _*-""""""@Au ...
- 025.Python面向对象以及对对象的操作
一 面向对象基本概念 1.1 OOP面向对象的程序开发 用几大特征表达一类事物称为一个类,类更像是一张图纸,表达只是一个抽象概念 对象是类的具体实现,更像是由这图纸产出的具体物品,类只有一个,但是对象 ...
- 生成多个ssh密钥-(转自 破男孩)
如果你已经有了一套名为 id_rsa 的公秘钥,将要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字. 步骤如下: 1.生成一个新的自定义名称的公钥: 1 ssh-keygen -t ...
- Linux命令学习—— fdisk -l 查看硬盘及分区信息
Linux命令学习(3)-- fdisk -l 查看硬盘及分区信息注意:在使用fdisk命令时要加上sudo命令,否则什么也不能输出linux fdisk 命令和df区别是什么? fdisk工具是分区 ...
- http keep-alive 的一些理解
在日常的工作中涉及到了关于检测用户是否在线的功能需求,在方案设计过程中考虑过使用http-keepalive的方式,由于我们获取到的keepalive是经过nginx转发的keep-alive,所以最 ...
- 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 Python语言是目前很火热的语言,极大的促进了人工智能发展.你知道在ArcGIS中也会有python的身影吗?事实上,在ArcG ...
- Linux C 文件IO
文件IO 2021-05-31 12:46:14 星期一 目录 文件IO 基础IO open 错误 creat read 一个例子 write close lseek 文件空洞 unlink删除 io ...
- WEB安全防护相关响应头(下)
前篇"WEB安全防护相关响应头(上)"中,我们分享了 X-Frame-Options.X-Content-Type-Options.HTTP Strict Transport Se ...
- 2. Servlet3.0注解方式 @WebServlet
web.xml配置还是比较麻烦,这次使用注解方式 编写servlet import javax.servlet.ServletException; import javax.servlet.annot ...
- [leetcode] (周赛)869. 重新排序得到 2 的幂
869. 重新排序得到 2 的幂 枚举排列,然后验证.比较暴力. 其实好一点的做法应该反过来,先把int范围下的2的N幂算出来,然后一个一个验证给出的数能不能拼成. class Solution { ...