CVPR2021| 行人搜索中的第一个anchor-free模型:AlignPS
论文地址:https://arxiv.org/abs/2103.11617
代码地址:https://github.com/daodaofr/AlignPS
前言:
本文针对anchor-free模型用于行人搜索中会出现三个不对齐问题:Scale misalignment,Region misalignment,Task misalignment提出了相应的解决方案,进一步提出了一个更简单更有效的anchor-free模型--AlignPS。
Introduction
行人重识别的方法分为两个类别,一类是基于two-step的方法,如图a所示,先使用现成的模型进行行人检测,将其裁剪出来,再放进re-id网络识别。这种方法可以获得比较好的效果,但对时间和资源消耗比较大。第二类是基于one-step的方法,如图b所示,使用一种端到端的方式检测并识别。
如图b所示,这种一步到位的方式在检测出行人后,将检测框内的feature通过ROI Align得到相同大小feature maps, 再进行回归,分类,re-id损失值的计算。这种方式类似于目标检测的two-stages的方法,我们称之为one-step two-stage模型。
这种one-step two-stage模型不可避免的与目标检测的two-stages模型一样,也有一些内在缺陷,例如密集anchors带来的高计算量,对大小、比例和anchor数量这些超参数的高敏感性。
最近几年,基于anchor-free的模型展现了独有的优点,即更简单的结构和更快的速度。基于这一点,作者提出要在Re-ID中构建一个anchor free模型。
但这会存在以下三个不对齐的问题:
1) 许多anchor-free模型通过FPN的方式学习多尺度特征以实现目标检测的尺度不变性。但在Re-ID上会存在尺度不对齐的问题,这是因为在gallery set中会存在各种尺度的人。
2) 没有了ROI-Align操作,anchor-free模型无法根据指定区域将re-id和检测联系起来。因此,必须直接从特征图中学习re-id embedding,而无需显式的区域对齐。
3) 行人搜索可以直观地认为是一个把检测和Re-ID作为自认为的多任务学习框架,因此需要找到这两个任务的平衡。
在这篇论文中提出了第一个用于行人搜索的anchor-free模型,称之为Feature Aligned Person Search Network (AlignPS),AlignPS遵循Re-ID优先的原则提出了aligned feature aggregation (AFA) module,用于处理上面这三个问题。
AFA通过可变形卷积重塑了FPN的一些构造块,通过特征融合解决了在Re-ID特征学习中区域和尺度不对齐的问题。同时优化了Re-ID和检测在训练过程中的步骤,更注重生成更鲁棒的Re-ID embeddings。这些简单有效的设计成功的将一个经典的anchor-free模型变成了一个很强很有效率的行人搜索框架,超过了anchor-based模型。
Feature Aligned Person Search Network
AlignPS的基础框架是FCOS,FCOS是目标检测中最常用的one-stage anchor-free框架之一。
前面提到,AlignPS是基于Re-ID优先的原则,为了学习Re-ID embedding,直接使用AFA输出的feature maps进行flatten,没有使用额外的embedding layers。
对于检测,使用了FCOS中的检测头。检测头分成两个分支,两条分支都由四个3x3卷积层组成,第一个分支预测回归偏移和中心得分,第二个对前景背景进行分类。最后,AFA输出feature maps的每个位置都会与一个含有分类、中心得分以及Re-ID embedding的Bounding boxes联系起来。
Aligned Feature Aggregation
Scale Alignment--FCOS采用在不同层检测不同大小的目标,对于一些重叠的有歧义的目标很有可能会分到不同的层,因此可以很好的提升检测效果。然而这对于Re-ID来说这并不好,因为Re-ID需要与gallery set进行比较,在不同的尺度下检测将会出现尺度不对齐的问题。
本文的解决办法是只使用P3层的信息,这样就不存在尺度不对齐的问题,注意,可以这样做的原因是P3层基本融合了全部的语义信息。在上一篇论文分享《YOLOF: 特征金字塔的新方式》中提到,特征金字塔的最顶层基本融合了全部语义信息,进行多尺度融合对精度提升影响不大。
Region Alignment--前面提到没有ROI-Align操作会出现Region misalignment问题,AlignPS从三个方面处理这个问题。
第一,使用3x3可变形卷积来代替FPN中邻侧连接过程中的1x1卷积。3x3可变形卷积可以使网络自适应input feature maps的感受野,很好地完成Region Alignment。
第二,使用concatenation代替自顶向下路径中的求和操作,这可以整合多尺度特征。
第三,再次使用3x3可变形卷积代替FPN输出层的3x3卷积。这可以对其多尺度特征从而生成更精确的feature map。
Task Alignment--提出Re-ID优先是基于以下两点考虑。
第一,因为现有的一些检测框架有比较强的效果,以至于检测任务相比Re-ID更好处理,因此学习判别Re-ID embedding是首要关注的问题。经过作者们讨论,在anchor-free框架中,Re-ID的performance对Region misalignment更敏感。因此,倾向于Re-ID对于行人搜索是比较理想的。
第二,对比于检测优先和两者并重的结构,Re-ID优先的结构不需要额外的层去生成Re-ID embedding,从而更有效率。
Triplet-Aided Online Instance Matching Loss
目前典型的行人搜索方法大多采用Online Instance Matching(OIM)损失来监督ReID任务的训练过程。
具体而言,OIM将所有带标签个体的特征中心存储在一个查找表(Lookup Table,简称LUT)中,其中L代表特征个数、D代表特征维度。同时,维护一个循环队列(Circular Queue),其包含了Q个无标签个体的特征。在每次迭代过程中,给定标签为i的输入特征x,OIM分别将x与查找表和循环队列中的所有特征计算相似度,这样可得到x属于标签i的概率pi。
本文发现,尽管OIM能够有效地利用带标签和无标签样本,但还是具有下面两个局限性:1)相似度计算只局限在输入特征与查找表或循环队列之间,输入特征之间并没有任何相似度计算操作。2)对数似然损失并没有给出特征对之间的明确距离度量。
为此,提出了一种三元组损失(Triplet Loss)来进一步增强OIM损失。对于输入图像中的每个行人,首先采用中心采样(Center Sampling)策略对特征进行采样。这样,每个人中心附近的特征被认为是正样本,这里目标是拉近同一个人采样到的不同特征,将不同人的特征尽量分开。
与此同时,带标签个体采样到的不同特征也应与查找表中相应的个体中心特征相接近,与查找表中不同个体的中心特征相远离。虚线框中展示的就是根据上述策略构建得到的三元组。
其中M代表正负样本间的边界大小,Dpos和Dneg分别代表正、负样本对之间的欧氏距离。最后,本文所提出的TOIM损失即为OIM和三元组损失函数的简单叠加。
Conclusion
AlignPS在CUHK-SYSU上比baseline anchor-free模型提高了20%的mAP。且以更快的速度超过了two-stages 的SOTA。
本文来源于公众号CV技术指南的技术总结系列,更多相关技术总结请扫描文末二维码关注公众号。
公众号其它技术总结内容
CVPR2021| 行人搜索中的第一个anchor-free模型:AlignPS的更多相关文章
- Phaser中很多对象都有一个anchor属性
游戏要用到的一些图片.声音等资源都需要提前加载,有时候如果资源很多,就有必要做一个资源加载进度的页面,提高用户等待的耐心.这里我们用一个state来实现它,命名为preload. 因为资源加载进度条需 ...
- 【转载】关于BooleanQuery在搜索中的用处
我们在搜索中可能会遇到要搜索索引文件中不同字段,不同字段之间就存在了与或非的运算关系,如:这个xx字段中必须存在什么什么关键词,而另一个 XXX字段可以存在或不存在什么什么关键词等等等.这就需要有Bo ...
- [原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则
[原创]用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则 转载请注明出处:http://www.codelast.com/ line search(一维 ...
- 在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程)
在浏览器中简单输入一个网址,解密其后发生的一切(http请求的详细过程) 原文链接:http://www.360doc.com/content/14/1117/10/16948208_42571794 ...
- pojg2744找一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。
http://poj.grids.cn/practice/2744 描述现在有一些由英文字符组成的大小写敏感的字符串,你的任务是找到一个最长的字符串x,使得对于已经给出的字符串中的任意一个y,x或者是 ...
- 如果将Joomla网站搜索结果显示到一个“干净”页面
有时候大家会发现Joomla网站自带的或者第三方的搜索功能时,搜索结果会显示在首页,和首页其它的模块如图片橱窗等显示在一起,非常混乱. 在这里教大家一个不需要修改代码的小技巧来解决这个问题,使搜索结果 ...
- iOS中如何创建一个滑出式导航面板(1)
本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...
- vc++ 在程序中运行另一个程序的方法
在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...
- c++多个文件中如何共用一个全局变量
例子: 头文件:state.h 源文件:state.cpp 其它源文件:t1.cpp t2.cpp t3.cpp, 这些源文件都包含头文件state.h. 需要定义一个全局变量供这些源文件中使 ...
随机推荐
- Android Studio & zh-Hans
Android Studio & zh-Hans https://developer.android.com/studio?hl=zh-cn https://developer.android ...
- node.js & read argv
node.js & read argv https://nodejs.org/docs/latest/api/process.html https://flaviocopes.com/node ...
- YAML & .yml
YAML & .yml YAML: YAML Ain't Markup Language https://yaml.org/ https://github.com/yaml/www.yaml. ...
- alipay 小程序 & online IDE & demos
alipay 小程序 & online IDE & demos system-info iOS / Andriod https://opendocs.alipay.com/mini/a ...
- 【Notes_9】现代图形学入门——光线追踪(基本原理)
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 目录 光线追踪 为什么要光线追踪 soft shadow ...
- MySQL like查询使用索引
在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...
- Ch1-What is DAX?
What is DAX? 数据分析表达式 (DAX) 是在 Analysis Services.Power BI 以及 Excel 中的 Power Pivot 使用的公式表达式语言.在第一版Powe ...
- Hi3559AV100-自己编译了u-boot、kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路
这篇随笔主要给出了Hi3559AV100-自己编译了u-boot.kernel及rootfs后,出现烧写错误或者烧写后板载无法启动的解决思路. 问题 (1)对于 u-boot 为官方的,kernel ...
- Nginx解析漏洞复现以及哥斯拉连接Webshell实践
Nginx解析漏洞复现以及哥斯拉连接Webshell实践 目录 1. 环境 2. 过程 2.1 vulhub镜像拉取 2.2 漏洞利用 2.3 webshell上传 2.4 哥斯拉Webshell连接 ...
- 因MemoryCache闹了个笑话
前言 是这么一回事: 我正在苦思一个业务逻辑,捋着我还剩不多的秀发,一时陷入冥想中...... 突然聊天图标一顿猛闪,打开一看,有同事语音: 大概意思是:同事把项目中Redis部分缓存换成Memory ...