数据标记系列——图像分割 & PolygonRNN++(一)
当前大多数图像语义分割算法都是基于深度学习的方式,但是深度学习的效果很大程度上是依赖于大量训练数据的。目前的图像分割方法无非两种,一种是通过标注人员手动标注,如Cityscapes(提供无人驾驶环境下图像分割的数据集)中的标注,但这种方法需要花费大量的人力、物力和时间。例如,下面这张包含28个目标事例的图,处理它就需要人工手动点击580次,这真的要点到手疼。

另一种则是将目标分割看作是像素标注的问题(pixel-labeling problem)自动完成分割工作。但是这种方法自身有较大的不精确性,而又无法通过人员干涉来修正,所以很难用来作为地面实况的评测数据。那么在填充评测数据集(例如Cityscapes)时,我们能否做到既可以自动标注以节省成本,在需要的时候又能通过人工修正来保证精度呢?
下面我们引入两篇CVPR的论文来给出答案:
一.(CVPR 2017) Annotating Object Instances with a Polygon-RNN
1.简介
作者采用了一种不同于像素标注的方法,而是将目标分割看做是一个多边形预测的问题(polygon prediction problem),然后基于深度学习实现“半自动化”目标事例的标注。

那这篇文章为何称为半自动目标事例标注呢?这是因为以下两点:
①、这篇文章算法首先需要给定一个bounding box真值,然后使用一个RNN(Recurrent Neural Network),文中称为Polygon-RNN在这个目标框中画出目标一个多边形圈住的轮廓。因为相比较手动标注目标轮廓,bounding box标注只要两下鼠标点击即可,容易很多(见上方右图)。
②、算法标注轮廓过程,人为可干预从而产生更精确的标注结果。这块细节下文再仔细介绍过程。
2 Polygon-RNN:
2.1 介绍
我们再来好好总结一下整个过程,作者是想创建一个有效的标注工具(annotation tool),从而以多边形形式标注目标事例。当给定bounding box中的图像块(image patch),文章算法基于RNN可以预测一个封闭的多边形来圈出目标的轮廓。多边形设计方法就是先找到一个起点,然后以顺时针方式连续生成多边形的其他顶点,顺序连接所有顶点即形成这个圈出目标轮廓的多边形。
作者是想创建一个有效的标注工具(annotation tool),从而以多边形形式标注目标事例。当给定bounding box中的图像块(image patch),文章算法基于RNN可以预测一个封闭的多边形来圈出目标的轮廓。多边形设计方法就是先找到一个起点,然后以顺时针方式连续生成多边形的其他顶点,顺序连接所有顶点即形成这个圈出目标轮廓的多边形。
模型是一个RNN,每一次迭代预测一个多边形顶点。RNN每一次的迭代输入包含以下三个方面:
第一是图片的CNN特征表示(图中绿色方块);
第二是前两个RNN迭代输出的顶点(图中t-1和t-2的结果),依一个方向形成多边形;
第三是起点,帮助RNN决定何时封闭多边形。
整个网络框架如下图:

网络是端到端(end-to-end)训练RNN+CNN,其中关键是帮助CNN能够微调(fine-tuned)来预测目标边界,并且帮助RNN从这些边界学习来利用其循环特性编码目标形状。
数据标记系列——图像分割 & PolygonRNN++(一)的更多相关文章
- 数据标记系列——图像分割 & PolygonRNN++(二)
实践 1.export PATH=~/anaconda3/bin:$PATH 2.Anaconda3 中创建新环境 Conda create –name=labelme_polyrnn_pp pyth ...
- 数据标记系列——图像分割 & Curve-GCN
在之前的文章中(参考:),我们提到了Polygon-RNN++在数据标注中的应用.今天不得不提到多伦多大学与英伟达联合公布的一项最新研究:Curve-GCN的应用结果显示图像标注速度提升10倍. Cu ...
- 数据标记系列——标记工具Imagtagger
https://github.com/bit-bots/imagetagger 待有空说一说!
- Java 数据持久化系列之池化技术
在上一篇文章<Java 数据持久化系列之JDBC>中,我们了解到使用 JDBC 创建 Connection 可以执行对应的SQL,但是创建 Connection 会消耗很多资源,所以 Ja ...
- C# 数据操作系列 - 6 EF Core 配置映射关系
0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端 ...
- C# 数据操作系列 - 8. EF Core的增删改查
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1 ...
- C# 数据操作系列 - 16 SqlSugar 完结篇
0. 前言 前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了.但是还有一点点在开发中并不常用,但是却非常有用的方法.接下来让我们一起来看看还有哪些有意思的内容 ...
- C# 数据操作系列 - 19 FreeSql 入坑介绍
0. 前言 前几天FreeSql的作者向我推荐了FreeSql框架,想让我帮忙写个文章介绍一下.嗯,想不到我也能带个货了.哈哈,开个玩笑-看了下觉得设计的挺有意思的,所以就谢了这篇文章. 简单介绍一下 ...
- Tapdata 肖贝贝:实时数据引擎系列(四)-关于 Oracle 与 Oracle CDC
摘要:想实现 Oracle 的 CDC,排除掉一些通用的比如全量比对, 标记字段获取之外, 真正的增量形式获取变更, 有三种办法: Logminer .XStream .裸日志解析,但不管哪种方法 ...
随机推荐
- 学JAVA第四天,JAVA获取年月日
先添加引用import java.util.Calendar; 然后编写代码: Calendar calendar = null;//声明 calendar= Calendar.getInstance ...
- 【eclipse】eclipse报错:the resource is not on the build path of a java project
最近在eclipse中,使用svn导入svn上的一个maven项目,但是导入后类的包并没有以源码包的方式显示,而是以普通文件包的方式显示出来,在对类进行F3等操作时就报错:“the resource ...
- SpringMVC进行文件上传
进行文件上传前需要添加相应的依赖 在xml文件中进行相应的文件上传解析器的配置 注意:这里有个坑,因为没注意,再排查错误的时候花了一点时间.就是给bean的id一定要是. 否者就会报如下的错误:
- java开发环境配置——IDEA SVN的使用
一.安装svn客户端,在idea中配置svn 装小乌龟,TortoiseSVN ,就下图一个要注意的地方,这里默认 command line client tools是不安装的,选上.如果已经安装过了 ...
- 荣耀MagicBook黑苹果(i7)High Sierra 10.13.6
这里有大佬维护的新版本EFI,对应10.14.4:https://github.com/hjmmc/Honor-Magicbook ---------------------------------- ...
- JButton 按钮,JRadioJButton单选按钮,JChectBox复选框
一. [按钮JButton] //导入Java类 import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;im ...
- Spark之谓词下推
谓词下推就是指将各个条件先应用到对应的数据上,而不是根据写入的顺序执行,这样就可以先过滤掉部分数据,降低join等一系列操作的数据量级,提高运算速度,如下图:
- huffman树即Huffma编码的实现
自己写的Huffman树生成与Huffman编码实现 (实现了核心功能 ,打出了每个字符的huffman编码 其他的懒得实现了,有兴趣的朋友可以自己在我的基础增加功能 ) /* 原创文章 转载请附上原 ...
- JavaScript对象类型之简单介绍
引言 对象是JavaScript的基本数据类型. 对象是一种复合值:将很多值(原始值或者其他对象)聚合在一起,通过名字访问这些值. 对象可以看做属性的无序集合,每个属性都是一个名/值对.属性名是字符串 ...
- web Deploy发布问题
使用vs开发的时候,经常会发布项目.传统发布是登陆远程桌面.或ftp这些发布都有一定的麻烦.不能灵活的管理发布的文件.因此后来研究了web Deploy,研究之后发现是很不错的发布工具.这里把我使用w ...