迁移学习与图神经网络“合力”模型:用DoT-GNN克服组重识别难题
作者 | Ziling Huang、Zheng Wang、Wei Hu、Chia-Wen Lin、Shin’ichi Satoh
译者 | 刘畅
编辑 | Jane
出品 | AI科技大本营(ID:rgznai100)
【导读】目前,大多数行人重识别(ReID)方法主要是从收集的单个人图像数据库中检索感兴趣的人。在跨摄像头的监控应用中,除了单人ReID任务外,匹配一组行人(多个人)也起着重要的作用。这种组重识别(GReID)的任务非常具有挑战性,因为它不仅面临着单个人外观的变化,还有组的布局和成员身份变化也会带来更多困难。为了获得组图像的鲁棒表示,本文设计了一种域迁移图神经网络(DoT-GNN)方法。
DoT-GNN方法主要包括三个方面:
(1)类型迁移(Transferred Style):由于缺少训练样本,我们将标记的ReID数据集迁移为G-ReID数据集样式,并将迁移的样本提供给深度学习模型。利用深度学习模型的优势,本文得到了可区分的个体特征模型。
(2)图生成(Graph Generation):本文将每个组视为一个图,其中每个节点表示单个行人的特征,每个边沿表示几个个体之间的关系。本文提出了一种图生成策略来生成足够的图样本。
(3)图神经网络:本文利用生成的图样本来一个训练GNN,以获取针对大型图变化具有鲁棒性的图特征。DoT-GNN成功的关键在于,迁移的图解决了外观变化的问题,而GNN中的图表示克服了组布局和单个成员变化的问题。大量的实验结果证明了本文方法的有效性,与最优方法(SOTA)相比,本文方法在Road Group数据集上高1.8%CMC-1,在DukeMCMT数据集上高6.0%CMC-1。
行人重识别(ReID)由于其广泛的应用(例如监控)而备受关注。现有的研究主要集中于针对个人的行人重识别,而同时搜索特定人群的研究相对较少。实际上,在街道上一群人一起走动是很普遍的现象。如图1所示,一群人从摄像机A的视野走到摄像机B的视野。系统需要一种算法来重识别跨不同摄像机的一群人(称为Group ReID或G-ReID)。实际上,G-ReID在日常生活中变得越来越重要,这是对单人ReID的补充。
与单独的ReID不同,G-ReID的目标是将不同摄像机视图下的特定组相关联。除了单个ReID的传统挑战(例如低分辨率,姿势变化,照明变化和视觉模糊)之外,G-ReID还具有其自身的独特挑战。如图1所示,当组从摄像机A移到摄像机B时,1)人们改变了他们在组中的位置(称为组布局更改),2)一些人动态加入并离开了组(称为组成员资格更改)。也就是说,G-ReID是一个更具挑战性的任务,因为一个组具有可变形的特征。因此,将组作为一个整体来处理并提取其全局或半全局特征可能做不好,因为组的布局和成员资格变化会极大地改变组的视觉表征内容。
当一个小组由几个人组成时,其表示可以是个人及其关系表示的组合。这启发作者使用图来构造整个表示。作者选择采用无向图来表示组图像中的成对对称关系,并利用图神经网络(GNN)模型来标识图ID。通过表示图中各个行人之间的关系,GNN能够通过图卷积(即在相邻节点之间传递消息)来提取组特征。此外,GNN能在图上提供每个组里面关系的灵活表示,适于解决组布局更改和成员资格更改的问题。
为了更详细的了解清楚GReID任务的难点。作者列出了一个表格来详细说明。如下表格所示。
作者提出了一种用于组重识别的域迁移图网络模型,利用GNN学习组特征并识别相应的组。总而言之,主要有以下三个贡献:
1、利用图表示和建模的思想来解决G-ReID的不规则性问题。据我们所知,我们是第一个针对G-ReID提出基于GNN框架的人。尽管深度学习模型具有其优势,但尚未有针对G-ReID提出有效的深度学习模型,更不用说具有迁移学习功能的深度GNN了。
2、本文提出了一种域迁移图节点构造方法和两种分组策略来保存和更改组成员身份,用以克服在训练数据非常有限的情况下个人外观和G-ReID成员身份更改带来的问题。图的构建过程得益于迁移的图节点。
3、在G-ReID的两个数据集DukeMTMC Group和Road Group上,证明了本文方法的有效性。
方法
框架
本文所提出的框架如图2所示,其中包括了训练步骤和测试步骤。在训练步骤中,该框架包括一个域迁移模型,该模型负责将源域的个体图像迁移到其对应的目标域的图像;一个图生成器,它用迁移后的单图表示来构建图样本池作为节点,并在图样本池上训练一个GNN模型去对组ID进行分类。
在测试步骤中,本文通过GNN模型对待检测图像p和图库图像G提取特征,然后计算待检索特征与图库特征之间的距离,以便根据距离去重识别组ID。
域迁移模型
由于G-ReID图像集合中组数量非常有限,因此仅基于这些数据本身直接训练一个网络十分困难。为了学习更好的表示,我们应该利用外部信息。目前有大量的ReID数据集,且能有较好的针对单体图像的特征表示。但是由于现有的ReID数据集和目标G-ReID图像的获取条件不同,它们之间的域gap会显著降低表示学习的性能。
于是,本文提出了学习ReID数据集S到G-ReID数据集T之间的映射函数,这样生成的数据集T(S)与T的分布不会有差异。这样由CNN提取的域迁移个体特征就能用于图构建。
图生成器
我们可以从相邻的组成员那里获得更多有用的信息。在本文的工作中,每个组图像均以图表示,以表征行人的相互和全局关系。图中的每个节点代表组中的一个人,两个节点之间的边表示两个人之间的亲密关系,这是通过两个人的特征之间的相似度(基于预定义的相似性度量)来衡量的。如果使用图来表示组图像,则可以基于图之间的相似性度量来搜索目标组。
在本文中,作者使用GNN来表示图特征用以测量图相似度。为了训练GNN,作者使用了域迁移节点来构建图样本池。对一个图,它包含多个节点、多条边和对应的标签。本文的图生成器会采用两种策略来构造图样本,即成员资格保留组和成员资格可变组。
成员资格保留组(Membership-preserving grouping)
本文使用迁移的图特征来代替图样本。如果两个组图像包含相同的成员,则将这两个图像标记为同一组。当然,从一个摄像头到另一个摄像头,组的布局可能会发生变化,本文使用无向图来解决布局和外观变化的问题。
因此,作者提出了一种保留成员资格的分组策略,针对图像类Lx,作者首先随机选取一些人作为其成员。然后,针对每一个成员,再随机选择一个与其相关联的节点。第三,不同成员的节点共同构成一个图样本,并且计算两个节点之间的权重作为边。
成员资格可变组(Membership-varying grouping)
如上所示,组的成员也有可能会发生改变。这意味着对应于相同标签的图样本,可能会包含彼此不完全相同的节点。因此本文计算了两个图样本之间的成员相似度比率,该比率的定义是两个图的节点来自同一个公共组成员的百分比。如果两个组有相似的相似度比率。则可以认为它们共享相同的组ID。
实验
数据和实验数据
使用DukeMTMC Group和Road Group两个公共数据集。域迁移模型使用的是CycleGAN,GNN模型使用的是半监督图网络的源代码,图生成器的设定是组最大人数15,阈值0.1。
实验对比
消融实验对比
其中Tr.表示域迁移模型,S1表示成员资格保留组策略,S2表示成员资格可变组策略,GNN表示图网络。
总结
在本文中,作者解决了一个重要但研究较少的问题:组重识别。本文提出使用图节点生成(迁移),成员资格保留组和成员资格更改组来分别克服组重标识中的三个主要挑战:训练数据不足,布局和外在更改以及成员资格导致的布局更改。本文还提出了一种图网络,用以学习和提取构造图的组特征表示,以便更好地识别其组ID。实验结果表明,我们的方法优于现有的最新方法。
(*本文为AI科技大本营编译文章,转载请微信联系1092722531)
◆
精彩推荐
◆
开幕倒计时11天|2019 中国大数据技术大会(BDTC)即将震撼来袭!豪华主席阵容及百位技术专家齐聚,十余场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读。6.6 折票限时特惠(立减1400元),学生票仅 599 元!
马斯克发首款会上火星的电动皮卡:28万起,可防弹,造型相当“赛博朋克”
YC中国被撤,陆奇独立运营个人新品牌「奇绩创坛」
5种小型设备上深度学习推理的高效算法
中国工程院院士评选结果公布,阿里王坚当选
2097352GB地图数据,AI技术酷炫渲染,《微软飞行模拟器》游戏即将上线
用Go重构C语言系统,这个抗住春晚红包的百度转发引擎承接了万亿流量
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
揭秘支撑双 11 买买买背后的硬核黑科技!
假如有人把支付宝存储服务器炸了
乔布斯的简历 120 万被拍卖,HR 看了想打人
区块链+“中国制造”:一文看懂区块链如何提升供应链金融活力与效能!
你点的每个“在看”,我都认真当成了AI
相关文章:

struts2 select 默认选中
jsp:<s:select list"#{1:男,2:女}" name"sex"/> action:private String sex;sex属性有get/set方法。在业务方法中设置sex "2";select会默认选中。

通过Windows DShow获取设备名、支持的编解码及视频size列表实现
之前在https://blog.csdn.net/fengbingchun/article/details/102641967中介绍过通过DShow获取Camera视频的实现,即调用VideoCapture类。在OpenCV的VideoCapture类中并没有提供获取Camera设备列表、支持的编解码类型列表及支持的video size列表接口,这里基…
15篇论文全面概览BERT压缩方法
作者 | Mitchell A. Gordon译者 | 孙薇出品 | AI科技大本营(ID:rgznai100)模型压缩可减少受训神经网络的冗余——由于几乎没有BERT或者BERT-Large模型可用于GPU及智能手机上,这一点就非常有用了。另外,内存与推理速度的提高也能节…

iOS下JS与OC互相调用(七)--Cordova 基础
Cordova 简介 在介绍Cordova之前,必须先提一下PhoneGap。PhoneGap 是Nitobi软件公司2008年推出的一个框架,旨在弥补web 和iOS 之间的不足,使得web 和 iPhone SDK 之间的交互更容易。后来又加入了Android SDK 和BlackBerry SDK,再然…

在linux上MySQL的三种安装方式
安装MySQL的方式常见的有三种:方式一:rpm安装(1) 操作系统发行商提供的(2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mysql.com/downloads关于MySQL中rpm包类型的介绍:MySQL-client 客户端…

通过libjpeg-turbo实现对jpeg图像的解码
之前在https://blog.csdn.net/fengbingchun/article/details/89715416中介绍过通过libjpeg-turbo接口实现将数据编码或压缩成jpeg数据并通过FILE的fwrite接口将其直接保存成*.jpg图像,当时用的是libjpeg的接口,其实还可以使用turbojpeg api的接口即tjCom…
AI+大数据顶级技术盛会开幕在即,6.6折特惠票限时抢购
2019年12月5-7日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN、中科天玑数据科技股份有限公司协办的中国大数据技术大会(BDTC 2019)将于北京长城饭店隆重举行。届时,超过百位顶尖技术专家将齐聚于…

iOS下JS与OC互相调用(八)--Cordova详解+实战
1.新建工程,添加Cordova 关键类 我这里用Xcode 8 新建了一个工程,叫 JS_OC_Cordova,然后将Cordova关键类添加进工程。 有哪些关键类呢? 这里添加config.xml 、Private 和 Public 两个文件夹里的所有文件。工程目录结构如下: 然后…

iOS多线程编程之NSOperation和NSOperationQueue的使用
使用 NSOperation的方式有两种, 一种是用定义好的两个子类: NSInvocationOperation 和 NSBlockOperation。 另一种是继承NSOperation 如果你也熟悉Java,NSOperation就和java.lang.Runnable接口很相似。和Java的Runnable一样,NSOpe…

Swift - 使用SwiftHTTP通过HTTPS进行网络请求,及证书的使用
(本文代码已升级至Swift3)一,证书的生成,以及服务器配置参考我前面写的这篇文章:Tomcat服务器配置https双向认证(使用keytool生成证书)文章详细介绍了HTTPS,SSL/TLS。还有使用key to…

Linux下通过v4l2获取视频设备名、支持的编解码及视频size列表实现
早些时候给出了在Windows下通过dshow获取视频设备信息的实现,包括获取视频设备名、获取每种视频设备支持的编解码格式列表、每种编解码格式支持的video size列表,见:https://blog.csdn.net/fengbingchun/article/details/102806822 下面给出…
12种主流编程语言输出“ Hello World ”,把我给难住了!
作为一名程序员,在初步学习编程想必都绕不开一个最为基础的入门级示例“Hello World”,那么,你真的了解各个语言“Hello World”的正确写法吗?在我们刚开始打开编程世界的时候,往往写的第一个程序都是简单的文本输出&a…

军哥lnmp一键安装包nginx支持pathinfo配置
ssh里执行:cat > /usr/local/nginx/conf/pathinfo.conf << EOF set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "(.?\.php)(/.*)") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAM…

Effective STL 50条有效使用STL的经验笔记
Scott Meyers大师Effective三部曲:Effective C、More Effective C、Effective STL,这三本书出版已很多年,后来又出版了Effective Modern C。 Effective C的笔记见:https://blog.csdn.net/fengbingchun/article/details/102761542…

HTTPS网络加密双向验证-使用AFNetworking封装
1.首先使用OC封装请求头 #import <Foundation/Foundation.h> #import "AFNetworking.h" interface HttpsHandler : NSObject (AFHTTPSessionManager *)setHttpsMange; end 2.实现方法 (AFHTTPSessionManager *)setHttpsMange; { NSString *certFilePath […
30分钟搞定数据竞赛刷分夺冠神器LightGBM!
作者 | 梁云1991来源 | Python与算法之美(ID:Python_Ai_Road)【导读】LightGBM可以看成是XGBoost的升级加强版本,2017年经微软推出后,便成为各种数据竞赛中刷分夺冠的神兵利器。一,LightGBM和XGBoost对比正如其名字中的Light所蕴含…

js模块化例子
最近在看一本书,里面提到js的模块化,觉得很有必要,所以记录下来 Game.js /*** This is the main class that handles the game life cycle. It initializes* other components like Board and BoardModel, listens to the DOM events and* tr…

swift3.0提示框新用法
var alert: UIAlertController! alert UIAlertController(title: "提示", message: "添加照片", preferredStyle: UIAlertControllerStyle.actionSheet) let cleanAction UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel,han…

FFmpeg在Windows上通过dshow编解码方式设置为mjpeg并实时显示测试代码
Windows上默认的内置摄像头一般支持两种编解码格式:rawvideo和mjpeg。在调用FFmpeg接口时默认的采用rawvideo。这里通过DirectShow实现为mjpeg进行编解码。 通过命令行调用FFmpeg可执行文件: (1). 可获取Windows上连接的视频设备,命令如下&…
基于深度学习的低光照图像增强方法总结(2017-2019)| CSDN博文精选
扫码参与CSDN“原力计划”作者 | hyk_1996来源 | CSDN博客精选之前在做光照对于高层视觉任务的影响的相关工作,看了不少基于深度学习的低光照增强(low-light enhancement)的文章[3,4,5,7,8,9,10],于是决定简单梳理一下。光照估计&…

ios多线程和进程的区别(转载)
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。 今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者…

OC封装的轮播图-只用调用即可
先来使用方法 1.//创建显示本地图片view UIView *imageScorll[WTImageScroll ShowLocationImageScrollWithFream:CGRectMake(0, 0, SCREENWIDTH, 200) andImageArray:array andBtnClick:^(NSInteger tagValue) { NSLog("点击的图片----%",(tagValue)); self.didSele…
多核时代,并行编程为何“臭名昭著”?
作者 | Yan Gu来源 | 转载自知乎用户Yan Gu【导读】随着计算机技术的发展,毫无疑问现代计算机的处理速度和计算能力也越来越强。然而细心的同学们可能早已注意到,从2005年起,单核的 CPU 性能就没有显著的提升了。究其原因,是人们发…

Linux下获取usb视频设备vendor id和product id的8种方法
在使用usb摄像头获取视频时,有时需要获取此摄像头供应商ID(vendor id, vid)和产品ID(product id, pid),这里在Linux下提供获取vid和pid的8种方法: 1. 通过v4l2中结构体v4l2_capability的成员变量card:此变量中会包含设备名、vid、…

JAVA 设计模式 模板方法模式
定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代…
这类程序员成华为宠儿,分分钟秒杀众应届毕业生
近日,华为20亿奖励员工的新闻频频刷屏。其中20亿奖金不是面向所有的华为员工,20亿奖金包涉及到的是研发体系、造AI芯片和建设生态的员工。从5G开始部署以来,华为获得了来自全球各地运营商的订单,签订了40多个5G商用合同。另外华为…

Swift 使用CoreLocation获取定位与位置信息
大多数情况下APP会在开启应用的时候获取当前的位置,所以我写在APPDelegate里第一步 import CoreLocationvar locationManager CLLocationManager() 第二步func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: …

FFmpeg在Windows上设置dshow mjpeg编码+libyuv解码显示测试代码
之前在https://blog.csdn.net/fengbingchun/article/details/103444891中介绍过在Windows上通过ffmpeg dshow设置为mjpeg编解码方式进行实时显示的测试代码。这里测试仅调用ffmpeg的mjpeg编码接口,获取到packet后,通过libyuvlibjpeg-turbo对mjpeg进行解码…

转:浅谈Linux的内存管理机制
一 物理内存和虚拟内存 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提…

swift3.0阿里百川反馈
闲言少叙 直接上不熟 1.导入自己工程阿里百川demo中的Util文件,并引用其中的头文件 2.剩余就是swift3.0代码.在自己需要的地方书写 (前提是你已经申请了APPKey) 3.代码 //调用意见反馈 func actionOpenFeedback(){ //key self.appKey "此处填写自己申请的key" s…