Point-Set Anchors for Object Detection, Instance Segmentation and Pose Estimation_MatthewHsw的博客-程序员秘密

技术标签: Anchors  HumanPoseEstimation  Point-Set  

微软亚洲研究院新出的一篇很有意思的文章,从另外一个角度统一了object detection、instance segmentation、pose estimation。对于object detection和pose estimation任务而言,之前有过像CenterNet、SPM等通过检测中心点回归的方法来统一这两个方向的任务,但作者认为这样做有一些问题:

  • 仅仅使用中心点做回归能够利用的特征信息太少。像CenterNet,通过中心点回归object的中心点和宽高,如果是人的话,还可以回归N个关键点,这个问题在于通过中心点来回归的一些位置,可能会非常远离center点,那么center点能够利用的有效信息就会比较少甚至没有(个人认为这个解释不是很能站得住脚,因为cnn都有感受野,一般走到最后一层的时候感受野其实很大了,一般都是能conver掉原始的回归范围)。
  • 之前的方法只关注于解决object detection和pose estimation这两个任务,而没有去做过instance segmentation相关的任务

所以针对以上问题,本文提出了一种叫做Point-Set Anchors的方法,使用一种思路来解决三个方向的任务。

Point-Set Anchors

先说Point-Set。Point-Set是一系列点的集合用来表示具体的object。针对不同的任务,它有不同的表达方式,如下图所示:
在这里插入图片描述
Detection/Segmentation任务使用的是包含object中心点及object shape边缘点的结合。Pose Estimation就是人体的N个关键点的集合。既然是anchor,那么就需要是个固定的shape,detection/segmentation就是通过object box得到,pose的point-set是通过k-means算法统计训练数据集中所有人的pose,求得k个mean pose得到的。

只要想明白,这些point-set就是一个个anchor,作用和传统anchor一样,只不过修改了anchor的表达方式,不再是一个个box而是point-set,这篇文章就很容易理解了

那么既然有point-set anchor了,怎么来回归呢,对于object detection和pose estimation来说,我们只需要计算point-set和gt之间的IOU/OKS值就可以,对于Instance Segmentati,文中提出了三种方式:
在这里插入图片描述

  1. Nearest Point。图片上黄色的点是object的mask上的点,属于ground truth,绿色的点是定义好的Point-Set。Nearest way意思就是对于point-set上的每个点,去找离它最近的mask上的gt point,当作其要回归的对象。这样会造成多个point-set里的点对应同一个ground truth
  2. Nearest Line。我们在mask上取了N个point作为ground truth,两两之间可以组成一个线段,point-set里的点去找其离哪个线段的距离最短,并将和这个线段的交点当作其ground truth point,并按照这个点来回归,同样会造成多个point-set里的点对应同一个ground truth,但概率远比第一种方法小的多
  3. Corner Point with Project。首先对point-set里的四个角点,通过Nearest Point的方式找到离这四个角点最近的4个ground truth点,这4个ground truth点是这四个角点需要回归的对象。由这4对点的连线,产生4条线段,将整个object的mask分在了4个区域内:左上角的连线和右上角的连线中间的区域属于top,左上角连线和左下角连线之间的区域属于left,right和bottom依此类推。这样,mask上的点就被分在了四个区域上,然后,对于point-set上除4个角点外的其它点,按水平方向和竖直方向分别做线,判断哪个方向的线段和mask有交点。例如对于point-set里的点A,其位于object的top区域,并且其竖直方向的线段和mask有个交点B,如果B同样位于top区域,那么这个点B就是点A要回归的ground truth,否则,点A属于invalid point,不参与之后的计算,也就是说,只有valid point才有用。

网络结构

在这里插入图片描述
仍然使用RetianNet的结构,就是把之前RetinaNet中之前的bounding box anchor根据任务换成point-set anchor,对于pose estimation任务则具有特别的处理,使用了DCN网络来计算regression,具体细节可以查看网络

结果

在这里插入图片描述
在这里插入图片描述
个人认为这个思路很清奇,也确实从一个很general的角度解决了三个不同的任务,但其也只能一次解决一个任务,并不能像CenterNet那样,可以将object detection和pose estimation一起做。另外从结果看精度尚可,但速度不知道怎样,因为对目前的算法而言,精度都陷入了一个瓶颈,在保证可用精度情况下的速度才是我们真正关心的,而文章中针对这部分内容并没有做介绍,期待后续可以补全。总的来说,这篇文章提出了一个新颖的思路来解决问题(特别是对于pose estimation)来说,值得借鉴。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Murdock_C/article/details/107415235

智能推荐

再次换博客,地址http://iwood.co.nr_不会种地的老农的博客-程序员秘密

再次换博客, Geek woodworker . 请猛点进入。博入其名,内容有计算机技术相关的,比如 http://ifq.github.com/blog/2012/09/10/baidu-blog-to-octo/ ,介绍如何通过脚本将百度博客的数据导入到octopress的博客系统中。也有木工相关的,木工作为一种业余爱好在国内并不被人熟知,可以说手工木工在中国基本绝迹,没有生态环境。我

Windows 10 安装Tensorflow gpu-1.3.0_Icoding_F2014的博客-程序员秘密

硬件配置:cpu: 锐龙1700x 显卡:GTX 1060OSWindows 10 64 企业版配置过程安装cuda8.0官网链接:https://developer.nvidia.com/cuda-80-ga2-download-archive 如果官方下载失败,则使用网盘资源: 链接:https://pan.baidu.com/s/1o9uby2m

python编程在哪里写程序-教你如何编写、保存与运行Python程序的方法_weixin_37988176的博客-程序员秘密

第一步接下来我们将看见如何在 Python 中运行一个传统的“Hello World”程序。Python教程本章将会教你如何编写、保存与运行 Python 程序。通过 Python 来运行的你的程序有两种方法——使用交互式解释器提示符或直接运行一个源代码文件。我们将了解如何使用他们二者的功能。使用解释器提示符在你的操作系统中打开终端(Terminal)程序(正如我们先前在安装章节所讨论过的那样)然...

学习PXE高效批量网络装机_码薯的博客-程序员秘密

PXE概述PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。实现的硬件条件1.BIOS支持2.网卡支持(现在基本都已支持)3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置5.服务器通过 tftp服务(简单文件...

计算广告学_X-Dragon烟雨任平生的博客-程序员秘密_计算广告学

计算广告学计算广告1、在线广告综述1.1 广告的定义与目的1.1.1 定义:1.2 在线广告类型1.3 在线广告简史1.4 广告有效性原理1.5 在线广告相关行业协会计算广告作者:刘鹏 北冥乘海生 参考视频链接:https://www.bilibili.com/video/BV1jz411z7UT笔记:X-Dragon [email protected]、在线广告综述广告越占一个国家GDP的0.5%-1%左右。网络广告》电视广告》报纸广告(后面会逐渐消退)数据:个性化流量:规模化

linux-samba服务器配置_ywhfdl的博客-程序员秘密

1. Samba软件包的安装使用源安装,在终端中输入如下命令:#sudo apt-get install samba#sudo apt-get install smbclient2. Samba服务器的启动、关闭和重启启动Samba服务器只需执行如下命令:#sudo /etc/init.d/samba start关闭Samba服务器:

随便推点

[Err] 2013 - Lost connection to MySQL server during query 的解决_咕噜呜的博客-程序员秘密

[Err] 2013 - Lost connection to MySQL server during query 的解决mysql导入表结构和数据报错在配置中找到my.ini文件,我的是mysql5.7加入max_allowed_packet = 500Mmysql配置详解: max_allowed_packethttps://www.jianshu.com/p/45967d3408d4原链接地址:https://blog.csdn.net/weixin_42259631/arti

Android 菜单(Menu)控件的使用_stoneson的博客-程序员秘密_android menu 控件

<br /><br />1.通过XML布局添加菜单<br />首先在项目目录res下建立文件夹menu,然后在新建的menu文件夹下添加<br />menu.xml<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/about" android:title="About" />

rxjs为什么用的人少_为什么刘邦的“狐朋狗友”,都是治国大才?_weixin_39780784的博客-程序员秘密

来源:朝文社(ID:ailishi777)作为明太祖朱元璋之前,中国历代皇帝里最神奇的“创业奇迹”。汉高祖刘邦常被人津津乐道(吐槽)的,就是其无比“草根”的“创业团队”。刘邦的“创业团队”有多“草根”?以东汉学者王符的话说:“ 高祖所以共取天下者,缯肆、狗屠也;骊山之徒,钜野之盗,皆为名将”。特别是那几位最早跟刘邦“创业”的团队成员,樊哙“以屠狗为事”,夏侯婴“为沛厩司御”,灌婴“贩缯者...

页面重绘和回流以及优化_追寻北极的博客-程序员秘密

在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程。可能不同的浏览器略微会有些不同。但基本上都是类似的。1.  浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个tag都是DOM树中的1个节点,根节点就是我们常用的document对象。DOM树里包含了所有HTML标签,包括d

CDH部署Livy服务_訾零的博客-程序员秘密_cdh livy

Livy的CDH环境parcel和csd制作1. 添加Livy parcel到CM的parcel-repoll -hmv LIVY-1.0-el7.parcel manifest.json /opt/cloudera/parcel-repoecho "b68875cb5e5dcf437deee5618843b5cd49413d11" &gt; LIVY-1.0-el7.pa...

vue-cli4创建项目导入Element-UI踩过的坑_j-ymg的博客-程序员秘密

错误1:Uncaught TypeError: Cannot read property ‘prototype‘ of undefined错误2:unknown option – skipGetStart

推荐文章

热门文章

相关标签