当前位置: 首页 > 编程日记 > 正文

行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...

640?wx_fmt=png

作者 | Jiaxu Miao、Yu Wu、Ping Liu、Yuhang Ding、Yi Yang
译者 | 刘畅
编辑 | Jane
出品 | AI科技大本营(ID:rgznai100)
【导语】在以人搜人的场景中,行人会经常被各种物体遮挡。之前的行人再识别(re-id)方法要么忽略了此问题,要么是基于极端假设来解决该问题。为了解决遮挡问题,作者提出检测遮挡区域,并在特征生成和匹配过程中去排除那些遮挡区域。
在本文中,作者介绍了一种称为姿态引导特征对齐(PGFA)的新方法,该方法利用姿势界标从带遮挡的图片中分离出有用的信息。在特征构建阶段,作者利用人的关键点信息去生成注意力图。生成的注意力图会表明指定的身体部位是否被遮挡,并引导模型去关注非遮挡区域。在匹配过程中,作者将全局特征明确划分为多个部分,并使用姿态关键点信息来得到哪些部分特征属于目标。仅将可见区域用于检索。
此外,作者为遮挡行人重识别问题构建了一个大规模数据集,即OccludedDukeMTMC,这是迄今为止针对遮挡行人重识别问题最大的数据集。作者在本文构造的遮挡Re-id数据集,两个partial Reid数据集和两个常用的无遮挡Re-id数据集上进行了实验。实验结果电视,作者的方法在三个遮挡数据集上的性能大大优于现有的行人再识别方法,而在两个无遮挡的数据集上仍保持优异的性能。
640?wx_fmt=png

论文地址:
https://yu-wu.net/pdf/ICCV2019_Occluded-reID.pdf
引言
行人再识别的任务是从图像集合中检索待查询行人图像,它在近年来取得了快速的发展。之前的行人再识别方法是从整个图像中提取特征,并将这些特征用作视觉表征,再整个图像集里面去匹配。为了构建有效的表示,已有的方法要么直接利用全局人物特征,要么结合身体部位的局部特征。
但是,这些已有工作中提出的方法并未考虑到目标人被各种物体(例如汽车,树木或其他人)遮挡的情况。当一个人被部分遮挡时,从整个图像中提取的特征表达可能会分散目标信息。如果模型无法区分遮挡区域和行人区域,则可能导致错误的检索结果。例如,如图1所示,在给定的查询图像中,行人被白色汽车挡住,已有的方法可能会错误地检索具有相似汽车的人的图像。
640?wx_fmt=png
最近,有一些工作尝试解决遮挡问题。如图2的第一行所示,在其部分ReID的问题条件中,检索图像是被物体遮挡住的,而库图像仍然是整体图像。为了抑制由遮挡引入的额外信息,这类方法首先在带检索的图像中手动裁剪被遮挡的目标,然后将未遮挡的部分用作新的查询。但是,部分ReID问题有两个局限性:(1)他们需要强有力的假设,即库图像里面的目标都是完整的(2)他们需要手动裁剪操作。这样的手动过程会使裁剪结果产生人为偏见。
640?wx_fmt=png
与部分Re-ID问题不同,本文提出了遮挡的Re-ID问题,在该问题中,检索图像和库图像都包含遮挡。所有待搜索图像都有遮挡,使得在检索时至少存在一个遮挡的图像。除了整体图像之外,图库集也包含被遮挡的图像,这与现实世界的场景一致。此外,考虑到效率和人为因素,遮挡的Re-ID不采用人工裁剪过程。
图2显示了部分Re-ID和被遮挡的Re-ID两个问题之间的区别。为了便于研究遮挡的Re-ID问题,我们引入了一个大数据集,名为OccludedDukeMTMC,该数据集是派生自DukeMTMC-ReID数据集。在新数据集中,所有查询图像都被各种各样的遮挡物(例如树木,汽车,其他人)遮挡,而图库图像同时包含整体图像和被遮挡的图像。
为了解决这个更具挑战性的遮挡Re-ID问题,作者提出了两种策略来区分遮挡区域中的可见区域信息:(1)在特征构建阶段,模型应更加注意非遮挡部分。(2)在匹配阶段,作者将全局特征显式划分为多个部分,并且仅考虑待检索图像和图库图像之间的共同可见区域。
受这两种策略的驱动,作者提出以姿势关键点为引导信息,在图库和待检索图像之间比对提取的特征,并将其命名为“ Pose Guided Feature Alignment(PGFA)”方法。 

与已有的工作相比,作者提出的PGFA具有两大优点:首先,PGFA不需要任何手动裁剪操作,效率更高。其次,检测到的关键点信息可以明确地指导模型关注非遮挡人的区域,并在特征构建和匹配阶段过滤遮挡区域的信息。在Occluded-DukeMTMC数据集上进行的实验表明,本文的方法在很大程度上优于已有的方法。
在两个部分Re-ID数据集和两个常用的整体基准测试集中,本文的方法效果不差。本文有两大贡献:(1)本文介绍了一个具有挑战性的大规模被遮挡的re-id数据集Occluded-DukeMTMC,它是迄今为止最大的专注于带遮挡Re-ID问题的数据集。(2)本文提出了PGFA,这是一种解决遮挡的Re-ID问题的有效方法。PGFA充分利用了检测到的人体关键点信息,并将其用来引导模型,在特征构建阶段关注非遮挡区域,并在匹配阶段对齐。
方法
  • 网络架构

640?wx_fmt=png
上图是作者提出的姿势引导特征对齐(PGFA)方法,该方法包括两个阶段,一个是表征构造阶段,另一个是匹配阶段。
表征构造阶段主要的结构包含两部分,一个是局部特征分支(Partial Feature Branch),另一个是姿态引导全局特征分支(Pose-Guided Global Feature Branch),这个分支是利用姿态估计去检测人体关键点并引导更健壮的表征结构。
匹配阶段如下图所示,待查询图像和图库图像之间的最终距离由两部分组成,一个是共享可见区域中局部特征的距离,另一个是姿态引导全局特征的距离。
640?wx_fmt=png
其中,每个部分具体的实现构造过程,作者在论文中有详细的叙述。
实验
  • 实现细节

作者使用ResNet50作为骨干网络,并仅做了较小的修改:删除平均池化层和全连接层,将conv4_1的stride设置为1。并通过ImageNet预训练模型初始化模型。在实验设置中,输入图像的大小调整为384×128,并通过随机翻转和随机遮挡进行了增强。

将批次大小设置为32,将训练epoch设置为60。在Occluded-DukeMTMC,Market-1501和DukeMTMC-reID上,基本学习率初始化为0.1,并在40个epoch后衰减为0.01,衰减系数λ 为0.2。在Partial-REID和Partial-iLIDS上,基础学习速率初始化为0.02,衰减系数λ设置为0.9。
为了从遮挡的图像中检测出关键点,作者使用了在COCO数据集上经过预训练的AlphaPose。设置关键点的置信度得分大于0.2。
  • 结果对比

下图展示了在多个测试集上的对比效果。包括Occluded-DukeMTMC,Partial-REID,Partial-iLIDS,Market-1501,DukeMTMC-reID五个数据集。
640?wx_fmt=png
640?wx_fmt=png
另外,作者为了验证本文提出的各个模块的有效性。做了一系列的消融实验(Ablation study)。如下所示,其中包括局部特征分支和姿态引导全局特征分支之间的平衡系数;局部特征的参数Part Number;筛选姿态关键点的阈值;以及使用不同姿态估计方法下的效果对比。
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
结论
在本文中,作者为解决带遮挡的ReID问题做出了贡献。首先,本文提出了PGFA方法,该方法在遮挡式Re-ID问题上优于现有方法。其次,为便于研究带遮挡的Re-ID问题,本文介绍了一个大型数据集Occluded-DukeMTMC。

(*本文为 AI科技大本营编译文章,转载请微信联系 1092722531


精彩推荐



2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。5 折票倒计时 1 天!

640?wx_fmt=png
【END】

640?wx_fmt=png

【进群了解最新免费公开课、技术沙龙信息】


推荐阅读

相关文章:

WinAPI: Arc - 绘制弧线

为什么80%的码农都做不了架构师?>>> //声明: Arc(DC: HDC; {设备环境句柄}X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer {四个坐标点} ): BOOL;//举例: procedure TForm1.FormPaint(Sender: TObject); constx1 10;y1 10;…

提高C++性能的编程技术笔记:跟踪实例+测试代码

当提高性能时,我们必须记住以下几点: (1). 内存不是无限大的。虚拟内存系统使得内存看起来是无限的,而事实上并非如此。 (2). 内存访问开销不是均衡的。对缓存、主内存和磁盘的访问开销不在同一个数量级之上。 (3). 我们的程序没有专用的CPU&#xff…

2019年不可错过的45个AI开源工具,你想要的都在这里

整理 | Jane 出品 | AI科技大本营(ID:rgznai100)一个好工具,能提高开发效率,优化项目研发过程,无论是企业还是开发者个人都在寻求适合自己的开发工具。但是,选择正确的工具并不容易,有时这甚至是…

swift中delegate与block的反向传值

swift.jpg入门级 此处只简单举例并不深究,深究我也深究不来。对于初学者来说delegate或block都不是一下子能理解的,所以我的建议和体会就是,理不理解咱先不说,我先把这个格式记住,对就是格式,delegate或blo…

Direct2D (15) : 剪辑

为什么80%的码农都做不了架构师?>>> 绘制在 RenderTarget.PushAxisAlignedClip() 与 RenderTarget.PopAxisAlignedClip() 之间的内容将被指定的矩形剪辑。 uses Direct2D, D2D1;procedure TForm1.FormPaint(Sender: TObject); varcvs: TDirect2DCanvas;…

女朋友啥时候怒了?Keras识别面部表情挽救你的膝盖

作者 | 叶圣出品 | AI科技大本营(ID:rgznai100)【导读】随着计算机和AI新技术及其涉及自然科学的飞速发展,整个社会上的管理系统高度大大提升,人们对类似人与人之间的交流日渐疲劳而希望有机器的理解。计算机系统和机械人如果需要…

提高C++性能的编程技术笔记:构造函数和析构函数+测试代码

对象的创建和销毁往往会造成性能的损失。在继承层次中,对象的创建将引起其先辈的创建。对象的销毁也是如此。其次,对象相关的开销与对象本身的派生链的长度和复杂性相关。所创建的对象(以及其后销毁的对象)的数量与派生的复杂度成正比。 并不是说继承根…

swim 中一行代码解决收回键盘

//点击空白收回键盘 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { view.endEditing(true) }

WinAPI: SetRect 及初始化矩形的几种办法

为什么80%的码农都做不了架构师&#xff1f;>>> 本例分别用五种办法初始化了同样的一个矩形, 运行效果图: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 class(TForm)Butto…

Windows10上使用VS2017编译OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.6.2操作步骤

1. 从https://github.com/opencv/opencv/releases 下载opencv-3.4.2.zip并解压缩到D:\soft\OpenCV3.4.2\opencv-3.4.2目录下&#xff1b; 2. 从https://github.com/opencv/opencv_contrib/releases 下载opencv_contrib-3.4.zip并解压缩到D:\soft\OpenCV3.4.2\opencv_contrib-3…

swift 跳转网页写法

var alert : UIAlertView UIAlertView.init(title: "公安出入境网上办事平台", message: "目前您可以使用网页版进行出入境业务预约与查询&#xff0c;是否进入公安出入境办事平台&#xff1f;", delegate: nil, cancelButtonTitle: "取消", o…

智能边缘计算:计算模式的再次轮回

作者 | 刘云新来源 | 微软研究院AI头条&#xff08;ID:MSRAsia&#xff09;【导读】人工智能的蓬勃发展离不开云计算所带来的强大算力&#xff0c;然而随着物联网以及硬件的快速发展&#xff0c;边缘计算正受到越来越多的关注。未来&#xff0c;智能边缘计算将与智能云计算互为…

WinAPI: 钩子回调函数之 SysMsgFilterProc

为什么80%的码农都做不了架构师&#xff1f;>>> SysMsgFilterProc(nCode: Integer; {}wParam: WPARAM; {}lParam: LPARAM {} ): LRESULT; {}//待续...转载于:https://my.oschina.net/hermer/blog/319736

提高C++性能的编程技术笔记:虚函数、返回值优化+测试代码

虚函数&#xff1a;在以下几个方面&#xff0c;虚函数可能会造成性能损失&#xff1a;构造函数必须初始化vptr(虚函数表)&#xff1b;虚函数是通过指针间接调用的&#xff0c;所以必须先得到指向虚函数表的指针&#xff0c;然后再获得正确的函数偏移量&#xff1b;内联是在编译…

ICCV 2019 | 无需数据集的Student Networks

译者 | 李杰 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本文是华为诺亚方舟实验室联合北京大学和悉尼大学在ICCV2019的工作。摘要在计算机视觉任务中&#xff0c;为了将预训练的深度神经网络模型应用到各种移动设备上&#xff0c;学习一个轻便的网络越来越重要。…

oc中特殊字符的判断方法

-(BOOL)isSpacesExists { // NSString *_string [NSString stringWithFormat:"123 456"]; NSRange _range [self rangeOfString:" "]; if (_range.location ! NSNotFound) { //有空格 return YES; }else { //没有空格 return NO; } } -(BOOL)i…

理解 Delphi 的类(十) - 深入方法[23] - 重载

为什么80%的码农都做不了架构师&#xff1f;>>> {下面的函数重名, 但参数不一样, 此类情况必须加 overload 指示字;调用时, 会根据参数的类型和个数来决定调用哪一个;这就是重载. }function MyFun(s: string): string; overload; beginResult : 参数是一个字符串: …

玩转ios友盟远程推送,16年5月图文防坑版

最近有个程序员妹子在做远程推送的时候遇到了困难&#xff0c;求助本帅。尽管本帅也是多彩的绘图工具&#xff0c;从没做过远程推送&#xff0c;但是本着互相帮助&#xff0c;共同进步的原则&#xff0c;本帅还是掩饰了自己的彩笔身份&#xff0c;耗时三天&#xff08;休息时间…

提高C++性能的编程技术笔记:临时对象+测试代码

类型不匹配&#xff1a;一般情况是指当需要X类型的对象时提供的却是其它类型的对象。编译器需要以某种方式将提供的类型转换成要求的X类型。这一过程可能会产生临时对象。 按值传递&#xff1a;创建和销毁临时对象的代价是比较高的。倘若可以&#xff0c;我们应该按指针或者引…

北美欧洲顶级大咖齐聚,在这里读懂 AIoT 未来!

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwE随着海量移动设备的时代到来&#xff0c;以传统数据中心运行的人工智能计算正在受到前所未有的挑战。在这一背景下&#xff0c;聚焦于在远离数据中心的互联网边缘进行人工智能运算的「…

c# 关闭软件 进程 杀死进程

c# 关闭软件 进程 杀死进程 foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Server")){p.Kill();} 转载于:https://www.cnblogs.com/lxctboy/p/3999053.html

提高C++性能的编程技术笔记:单线程内存池+测试代码

频繁地分配和回收内存会严重地降低程序的性能。性能降低的原因在于默认的内存管理是通用的。应用程序可能会以某种特定的方式使用内存&#xff0c;并且为不需要的功能付出性能上的代价。通过开发专用的内存管理器可以解决这个问题。对专用内存管理器的设计可以从多个角度考虑。…

【Swift】 GETPOST请求 网络缓存的简单处理

GET & POST 的对比 源码&#xff1a; https://github.com/SpongeBob-GitHub/Get-Post.git 1. URL - GET 所有的参数都包含在 URL 中 1. 如果需要添加参数&#xff0c;脚本后面使用 ? 2. 参数格式&#xff1a;值对 参数名值 3. 如果有多个参数&#xff0c;使用 & 连接 …

深度CTR预估模型的演化之路2019最新进展

作者 | 锅逗逗来源 | 深度传送门&#xff08;ID: deep_deliver&#xff09;导读&#xff1a;本文主要介绍深度CTR经典预估模型的演化之路以及在2019工业界的最新进展。介绍在计算广告和推荐系统中&#xff0c;点击率&#xff08;Click Through Rate&#xff0c;以下简称CTR&…

2015大型互联网公司校招都开始了,薪资你准备好了嘛?

2015年的校招早就开始了&#xff0c;你还不知道吧&#xff1f;2015年最难就业季来了&#xff0c;你还没准备好嘛&#xff1f;现在就开始吧&#xff0c;已经很多大型互联网公司祭出毕业生底薪了看谷歌、看百度、看腾讯、看阿里巴巴再看传统软件公司&#xff1a;看微软、看联想、…

提高C++性能的编程技术笔记:多线程内存池+测试代码

为了使多个线程并发地分配和释放内存&#xff0c;必须在分配器方法中添加互斥锁。 全局内存管理器(通过new()和delete()实现)是通用的&#xff0c;因此它的开销也非常大。 因为单线程内存管理器要比多线程内存管理器快的多&#xff0c;所以如果要分配的大多数内存块限于单线程…

iOS中几种定时器

一、NSTimer 1. 创建方法 NSTimer *timer [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:selector(action:) userInfo:nil repeats:NO];TimerInterval : 执行之前等待的时间。比如设置成1.0&#xff0c;就代表1秒后执行方法target : 需要执行方法的对象…

手把手教你使用Flask轻松部署机器学习模型(附代码链接) | CSDN博文精选

作者 | Abhinav Sagar翻译 | 申利彬校对 | 吴金笛来源 | 数据派THU&#xff08;ID&#xff1a;DatapiTHU&#xff09;本文旨在让您把训练好的机器学习模型通过Flask API 投入到生产环境 。当数据科学或者机器学习工程师使用Scikit-learn、Tensorflow、Keras 、PyTorch等框架部署…

JQuery遮罩层

2019独角兽企业重金招聘Python工程师标准>>> css样式&#xff1a;<style type"text/css"> .mask { position: absolute; top: 0px; filter: alpha(opacity60); background-color: #777; z-index: 1002; left: 0px; …

代码覆盖测试工具Kcov简介及使用

Kcov是一个代码覆盖测试工具&#xff0c;最初基于Bcov&#xff0c;它可在FreeBSD、Linux、OSX系统中使用&#xff0c;支持的语言包括编译语言(compiled languages)、Python和Bash。与Bcov一样&#xff0c;Kcov对编译的程序使用DWARF调试信息&#xff0c;以便无需特殊编译器开关…