换个dataloader函数, COCO提升3mAP ,上海交大MVIG团队提出InstaBoost-阿里云开发者社区

开发者社区> 超努力的写代码> 正文

换个dataloader函数, COCO提升3mAP ,上海交大MVIG团队提出InstaBoost

简介: 近年来最新的一系列实例分割模型,例如 Mask R-CNN 等,其高准确度很大程度上依赖于大量的训练数据(COCO 数据集包含 20 余万张训练图片)。但是获取像素级别的标注是一项成本高昂且复杂精细的工作。为此,上海交通大学 MVIG 实验室(卢策吾团队)提出了 InstaBoost——一种基于 crop-paste 的实例分割数据增强方法。实验表明,在 Mask R-CNN 和 Cascade R-CNN 等框架中应用 InstaBoost,可以在 COCO 实例分割数据集上达到 2.2 mAP 的提升。同时,该方法还能够将物体检测的精度在 COCO 数据集上最高提升 4mAP。该论文已被I
+关注继续查看

目前,研究团队已将代码及训练好的模型全部开源,包括 Res50, Res101 base 的 Mask R-CNN, Cascade Mask R-CNN, SSD 等,未来还将有更多模型开源,如 yolact 等。


该方法的操作非常简单,目前已发布为 pip 包,只需 python 中加一行代码,import instaboost,换一个 dataloader 函数就可以在 COCO 实例分割数据集上实现显著的性能提升。

近年来,基于 CNN 的深度学习算法,如 Mask R-CNN 等,在实例分割任务中有了非常广泛的应用。但是出于像素级别的标注成本高,周期长,难度大等原因,这些深度学习框架的潜力因为缺少大量的训练数据而难以被充分挖掘出来。
此前我们报道过,Google 研究团队曾研究利用 bounding box 标签,运用强化学习进行数据增强,并获得了一定提升。不过,在实例分割领域,如何利用 mask 标签在 COCO 数据集上获得提升,仍是一个需要探索的问题。


然而实例分割这种像素级的分类要比目标检测难很多,对应的数据增强也要困难很多,这主要体现在它并不能随意把目标切割并移到另外的背景上,因为它们对分割结果也有很大的影响。


来自上海交通大学 MVIG 实验室的研究人员在实例分割应用中对其进行改进优化,成功的将模型的实例分割精度大幅提升,同时也能实现目标检测的提升。

微信图片_20211201204545.jpg



实例分割任务中的数据增强


早期一些方法使用 domain adaptation 等思路,将其他领域的数据作为信息来源辅助数据增强,但是这些方法没有充分利用训练集的 mask 标注信息。


近期一些研究使用基于 crop-paste 的方法在目标检测任务中取得了不错的效果。简单来说,这些方法将物体按照 mask 标注的信息从原图片中剪下来,然后粘贴到一个随机的背景图片上。但是研究者发现这种方法在分割任务中,由于实例和背景契合程度较差,在实验中表现比 baseline 要差。为了解决这一问题,一些论文提出了使用 context model 去为二者一致性打分,但是这种该方法计算成本过高,难以在实际场景中应用。


研究者在这篇论文中提出了两种递进的实例层面的数据增强算法:Random InstaBoost 和 Map-guided InstaBoost。这类算法极大地提高了检测和分割精度。

Matting 和 Inpainting


在将图片前景和背景按照标注进行分离的过程中,如果完全按照标注去切割前景,前景的边界处会呈不自然的多边形锯齿状,这与 COCO 数据标注方式有关。为了解决这一问题,研究者使用《A global sampling method for alpha matting》一文中提出的方法对前景轮廓做 matting 处理,以得到与物体轮廓契合的边界。


在前景背景分离后,背景上会存在若干个空白区域,这些区域可以使用 inpainting 算法进行填补。论文中使用了《Navier-stokes, fluid dynamics, and image and videoinpainting》文章中提出的 inpainting 算法。

微信图片_20211201204543.jpg

从左至右:原图,inpainting 处理后的背景,matting 处理后的前景。


Random InstaBoost


为了尽可能保证粘贴后前景和背景融合的契合程度,直觉上来说将前景粘贴到原位置的附近是最可靠的。Random InstaBoost 方法即是在上述先验的判断下提出的。研究者通过定义一个四元数 (tx, ty, s, r) 来映射前景在数据增强前后的变换。四个参数从左至右分别表示了水平位移,垂直位移,放缩程度和旋转角度。将这四个参数在 (0, 0, 1, 0) 附近进行独立的随机扰动,即可生成一系列符合外观一致性的增强图片。

微信图片_20211201204540.jpg


Map-guided InstaBoost


在 Random InstaBoost 方法中,前景的中心位置 (x,y) 被严格限制在了原位置 (x0,y0) 附近。为了解决这一问题,作者提出了使用外观一致性热度图(appearance consistency heatmap)来引导前景中心粘贴的位置。外观一致性热度图计算原理大致如下。


外观描述符 D(•)

image.gif

公式中,(cx, cy) 表示实例的中心坐标,Ci 表示第 i 个轮廓线,wi 表示其对应的权重,i=1 表示最内部的轮廓线。轮廓线通过将实例轮廓膨胀后取差集获得。如下图所示,内外黑色区域之前的三个不同深度区域即为果盘的三个轮廓线。在 w 的取值上,我们按照先验,规定越靠近实例影响越大,权重越大,即 w1>w2>w3。

微信图片_20211201204537.jpg


外观距离


外观距离定义为,外观描述符之间局部外观一致性的度量。由于我们已经定义了具有三个轮廓区域和相应权重关联描述符,D1=D(c1x, c1y) 和 D2=D(c2x, c2y) 之间的外观距离被定义为:

微信图片_20211201204535.jpg


其中 Ik(x, y) 表示图片 k 在 (x, y) 坐标像素点的 RGB 值,Δ可以表示任何距离公式,在实验中作者使用了欧氏距离。对于部分坐标点移出图片的情况,我们将其距离定义为无穷大。


热度图生成与引导平移


通过固定 D0 为实例的原始位置,遍历图片中其余像素点,计算背景上所有可能的 d(D, D0),并通过下列公式将其归一化:

微信图片_20211201204533.jpg


其中 M=max(d(D, D0)),m=min(d(D, D0))。通过将 h(•) 映射到背景图片上的每一个像素,即可获得一个热度图。通过热度与概率之间的映射,可以使用蒙特卡洛方法进行采样,得到高外观一致性的粘贴位置。下图为几则热度图与增强后的实例。

微信图片_20211201204530.jpg


实验结果


在实验过程中,作者使用 Mask R-CNN 和 Cascade R-CNN 两个框架在 COCO 数据集上分别进行了测试,测试结果如下图所示。结果显示,在目标检测和实例分割任务上,InstaBoost 在 mAP 标准下最高带来 4mAP 和 2.2mAP 的提升。


微信图片_20211201204528.jpg


研究人员还使用 Mask R-CNN 在 VOCSDS 数据集上进行实验,目标检测和实例分割提升分别是 4.2mAP 和 3.9mAP,仍旧十分可观。

微信图片_20211201204525.jpg


随后,研究人员从速度和鲁棒性方面将 InstaBoost 与现有方法进行对比。
从速度上来看,InstaBoost 可以作为在线算法嵌入到 dataloader 内部,在 Mask R-CNN 上对比,使用前后每轮迭代仅增加了 0.03s 的时间成本。而使用 context model 的算法,需要对特定数据集预先进行训练等操作,花费大量额外时间,并且难以作为在线算法内嵌到代码框架内。

微信图片_20211201204523.jpg


从鲁棒性的角度来看,传统的 Mask R-CNN 的框架,在训练到 24 个 Epoch 的时候,出现比较严重的过拟合现象,精度开始下降。使用 InstaBoost 之后,模型在 48 个 Epoch 之后精度仍然呈上升趋势。说明 InstaBoost 很大程度上提升了分割框架的鲁棒性。

微信图片_20211201204520.jpg


为了更直观的反应 InstaBoost 对实例分割效果的提升,这里列出部分可视化对比结果:

微信图片_20211201204517.jpg



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Loadrunner在Java Vuser当中常用的一些Web函数
习惯了录制脚本的初学者们,会觉得通过Java vuser来写脚本比较陌生,其实看完以下的Loadrunner常用Web函数对比,你就不会觉得Java Vuser有多么神秘了,而且通过Java写性能测试脚本的灵活性要远远高于C语言
999 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10092 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
关于Loadrunner并发组函数web_concurrent的注意事项
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/79557231 web_concurrent_start函数是并发组开始的标记。
915 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11893 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7365 0
1946
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载