Reid系列论文学习——换装Reid

news2024/10/7 6:47:46

今天要学习的有关Reid的论文是2019年提出的一篇名为:Beyond Scalar Neuron: Adopting Vector-Neuron Capsules for Long-Term Person Re-Identification.

论文链接:https://opus.lib.uts.edu.au/bitstream/10453/137156/4/Binder1.pdf

Code链接:https://github.com/Huang-3/Celeb-reID

大多数Reid的研究都聚集在人员几乎不会更换衣服的场景,也就是说针对人员来说,数据分布相似度是比较大的。但在一些场景中人员是有可能换衣服的,这里举个例子,比如在追寻一个嫌疑人,该嫌疑人在A场景穿的红色衣服,当他进入B场景后换了一件黑衣服,那么用传统的方法可能就不太行了。

因此这篇文章主要解决的问题就是如何针对这种换装场景下也能实现行人重识别

文章将传统的研究任务(同一个人不同角度但不会更换衣服)称为short-term ReID。将自己的研究称为long-term ReID。

文章的贡献有两点

        1.制作了“换装”数据集(Celeb-reid)用于行人重识别;

        2.提出了vector-neuron(VN)capsules来代替传统的传统的标量神经元(SN);

注:文章指出,VN与SN相比只是多一个维度用来提取同一个人不同衣服的特征提取

为什么提出Celeb-reid数据集

文章指出,数据集收集方式往往有两种:

        一种是收集非合作人的数据,另一种是收集受限环境内合作人的数据集。

显然第一种方法是好的(因为便利啊,随机收集),不过说打标签的时候需要标签人员根据一些特征(比如人脸)来判断是否为一个人,但如果人脸等信息看不清,就需要根据经验来标注是否为同一个ID(其实就是作者解释为什么想在网上找图片,这就是写作的艺术么?),而像Markt1501、CUHK03、VIPeR等就无法满足long-term,因为人员没有显著的变化(比如服饰)。

第二种收集方法说可以模拟一些极端情况,包括一些衣服的改变,但这种太有限了,比如ID就不会那么的多(其实这里也是说明为什么网上找图片的必要性)

因此!!Celeb-ReID数据集诞生了,然后还解释了一下为什么用名人的图像,这里我就不再多说(以后大家要是也是网上找图像制作自己的数据集可以学学人家这说法,说的有理有据)。该数据集有1052个ID,34186张图像,其中70%以上的图像都是具有不同的衣服。

Celeb-reid数据集说明

Celeb-reid数据集有1052个ID,34186张图像。图像的高宽比为2:1,图像大小为256x128.

Celeb-reid数据集说明如下:

数据集划分说明
splittrainingquerygallerytotal
#ID6324204201,052
#Images20,2082,97211,00634,186

对应网盘链接:

百度网盘 请输入提取码 code:ix2j 

 图像示例如下:

当然文章也提供了一个轻量的数据集Celeb-reid-light:

splittrainingquerygallerytotal
#ID490100100590
Images902188793410,842

 网盘链接:

百度网盘 请输入提取码 code:14k5

为什么提出ReIDcaps

但人员的衣服等外观发生了改变,如果采用传统的Reid识别方法,可靠性会大大降低。这是为什么呢?因为当衣服改变,那么CNN提取的特征(比如纹理特征和颜色特征)会很大的改变,然后再计算特征距离的时候就会差距比较大,导致算法鲁棒性差。

而现如今大多数ReID网络都是针对衣服(外观)特征不会改变的场景下,这些方法在short-term中的性能是比较好的,但却不适合long-term。

也有一些研究试图去做一些不同类别之间的衣物变化,但是,并没有关注感知和区分同类中衣物大变化的能力。所以这些研究在Long-term是存在问题的。

而解决以上所说的传统的方法就是SN(标量神经元),为了可以适应于long-term,作者建议使用Vector-Neuron (VN) capsules结构的网络[1]。SN和VN的区别可以看文末。在常见的卷积神经网络(CNNs)中,每个标量的值反映了神经元属于某个现有人员ID的可能性(比如在分类网络中用全连接+softmax来看是哪个人的ID)。但如果外观(衣服)发生了改变,那么这种方式就不太行了,作者受到了VN这篇文章的启发,用输出的第一个维度表示目标是否存在,第二个维度是目标的属性。而对应到ReID任务中,第一个维度就是表示分类ID,第二个维度就是同一个ID的不同衣服。下图是论文中展示的SNs和VNs的不同:

图中是两个人(两个ID),VN可以很好将两个人进行区别(即便是衣服不同),蓝色箭头为同个ID,绿色箭头为同一个ID,而SN会将不同的人相似服饰的ID搞混,比如d和A是两个ID,但由于都穿的相似的衣服,那么会识别错误。因此给这个网络取了一个名字叫"ReIDCaps"。

ReIDcaps网络结构

文章所提出的ReIDcaps主要有三个模块:

1.特征提取模块:先用已经训练过的模型在图像上提取一些浅层特征,这些特征将会送入caps进行ID分类和其他特征的提取

2.ID和穿着感知模块:使用caps层去进行分类和穿着属性。ID分类主要通过VN输出向量的长度,每个人的着装信息是通过每个VN的方向来感知的。通过调整网络参数,使得相同ID的VN长度相近,不同ID的VN长度差异较大,从而实现ID的分类。VN的方向(Orientation)可以代表相同ID下不同衣物的类型。这意味着,即使两个人的ID相同,他们穿着的衣服可能不同,这时VN的长度可能相近但方向不同。网络通过学习这些方向信息,来区分相同ID下不同的衣物属性。

3.辅助模块,比如SEA和FSR。

完整的ReIDCaps网络结构如下:

结构说明:将图像送入CNN中(这里是DenseNet为例)进行特征提取,然后将得到特征图分成三部分进一步的处理,分支1是得到ID和dressing感知的,分支2和3对应的辅助模块SEA和FSR模块。(就是为了提高准确率,相当于作者把改进也放进去了,涨点用)。

(可以看到,DenseNet的输出为7x7x1024,只看第一个分支,采用2x2,步长为2的卷积核进行卷积,输出卷积为256,分成8组,这样每组就是32个通道,然后再进行reshape,而最后的输出上面可以看到是24,这里的24是将前面的P-Caps进行了一个维度映射,采用的方法为R-by-A(这里R-by-A的iter数取4),而行数为ID数量,也是分类数量。那么就是24xN,如果我们对每行的特征向量求模的大小那么就可以得到每个ID的概率,而这每个特征向量中的特征中也包含了衣服等一些特征属性) 

 因为有三个分支,所以有三个分支,所以也有三个loss。这个就是ID loss(三个ID loss)。公式中的\gamma是一个平衡参数,通过实验验证,取0.5效果比较好

ID & Dressing Perception模块

作者提出使用VN中的Capsule来学习衣物的改变,上面提到了经过CNN特征提取后,需要进行ID分类,而VN中有两个维度,一个是ID的分类,另一个维度是衣服属性(两个caps,一个叫P-Caps,一个叫C-Caps)。其实该部分就是结构图上的第一个分支。

P-Caps和C-Caps分别指什么?

  • P-Caps(Primary Capsules):主要胶囊层。这一层负责从输入的特征中提取和表示基础的特征信息,这些信息是后续分类和识别的基础。在论文中,P-Caps层可能用于提取与ID和衣物属性相关的初步特征。(我这里的理解就是P-Caps只是起个名字而已,其实就是特征层)
  • C-Caps(Classification Capsules):分类胶囊层。这一层在P-Caps层的基础上,进一步对特征进行分类和识别。在ID和衣物属性的识别中,C-Caps层负责根据P-Caps层提取的特征,给出最终的分类结果。(我这里的理解就是特征向量,shape为24xN,每行的模值表示该ID的概率)

网络的训练

作者指出,网络的训练采用pytorch,没有改变网络设计,但分别为短期和长期重识别(re-ID)场景使用了两种不同的训练策略。作者认为,对于长期重识别,新模型需要产生更多的可学习参数来适应关于衣物变化的额外信息。因此,当它被应用于没有衣物变化的相对简单的短期重识别案例时,可能会导致一定的过拟合问题。

对于长期重识别场景,我们在ImageNet预训练的DenseNet-121中设置初始学习率为1e-4,在DenseNet输出之后的新层中设置初始学习率为1e-3,将这种训练策略称为TS1。为了缓解过拟合问题,对于短期重识别场景,我们在通用SN网络上预训练了主干网络(DenseNet-121)。在ReIDCaps中采用了在SN上训练的DenseNet-121主干网络。在SN训练的DenseNet-121中,初始学习率设置为1e-5,在新层中设置为1e-4。将这种训练策略命名为TS2。(总结为对于VN和SN网络设置了不同的学习参数,分别将两个实验命名为TS1和TS2)。

对于以上两种场景(TS1和TS2),所有输入图像在训练前都被调整为224×224的大小,并随机翻转。训练过程中使用了Adam随机优化算法,其参数设置为β1 = 0.9,β2 = 0.999。学习率在训练40个周期后降低10倍,并在第50个周期后停止训练(就是训练了50个epoch)。对于Celeb-reID、Celeb-reID-light、Market1501和DukeMTMC-reID这四个数据集,训练ID的数量(N)分别为632、490、751和702。

在测试中,会将平均池化后的1024D的特征向量用于计算query和gallery中两个图像的欧式距离来判断两个人的相似性。使用mAP、Rank进行评估。

测试

作者对于他所提出的ReidCaps网络的测试分了两部分,一个是对于行人全身的测试,另一个是将人体分块进行测试(这也是文章最终所得到的评价指标),将身体分别分为三部分和两部分。对身体分块效果如下:

第一张 是全身图,第二张是分成三部分,第三张图是分成两部分。这么做的原因是更细粒度的进行比较。

对于粗粒度而言(没有获取获取身体部位信息),评价指标如下:

Celeb-reID
mAPrank-1rank-5
ReIDCaps (Ours)9.8%51.2%65.4%

对于细粒度(获取身体部位信息)

Celeb-reID
mAPrank-1rank-5
ReIDCaps (Ours)15.8% 63.0%76.3%

参考资料

[1] Sara Sabour, Nicholas Frosst, and Geoffrey E Hinton. Dynamic routing between capsules. In Proc. Adv. Neural Inf. Process. Syst. (NIPS), pages 3856–3866, 2017.

 


论文总结 

介绍了一种在长期情况下进行人物再识别(re-ID)的新方法,特别是在个体更换衣物的情况下。论文的主要贡献和关键点总结如下:

1.Celeb-reID 数据集的引入

  • 作者引入了一个新的大规模数据集,名为 "Celeb-reID",专门用于长期 re-ID 任务。该数据集包含 1,052 个 ID 和 34,186 张图片,是目前最大的针对衣物变化问题的数据集。
  • Celeb-reID 数据集中的图片来自于网络上的名人街拍,确保了环境的多样性和高衣物变化度。

2.向量神经元胶囊(VN 胶囊)

  • 论文提出采用 VN 胶囊取代传统的标量神经元(SN)用于 re-ID 任务。
  • VN 胶囊提供了一个额外的维度,可以编码衣物变化,增强了模型在外观变化情况下识别个体的能力。
  • VN 胶囊中的向量长度表示实体(人物)存在的可能性,而向量的方向编码了诸如衣物之类的属性。

3.ReIDCaps 网络

  • 论文引入了一种名为 "ReIDCaps" 的新网络架构,结合了 VN 胶囊。
  • 网络还集成了软嵌入注意力(SEA)和特征稀疏表示(FSR)机制以提升性能。
  • ReIDCaps 在有衣物变化的场景中相较于现有的最先进方法显示了显著的改进

个人认为,该文章最大的贡献就是贡献了数据集,作者开源的项目代码有些问题,经过个人修改可以正常运行代码,需要的可以私聊(有偿) 。

SN和VN的区别

1.输出形式不同

        · SN(Scalar Neuron)的输出是一个标量,也就是输出的为"置信度"或者说是"概率"。

        · VN的输出是一个向量形式,包括实体的位置、角度、纹理等信息。向量的模长可以表示为概率。

2.关注的焦点不同

        · SN只关注目标是否存在,也就是答案为"是"或"否"

        · VN不仅仅关注目标是否存在,还会有其他的属性

3.辅助模块:辅助模块用于进一步提高从我们的ReIDCaps模块中学习到的特征的区分性。

VN网络和SN网络基本结构如下图,上面一行是VN,下面一行是SN,SN网络和VNbackbone是一样的,均采用了DenseNet,只是DenseNet的输出后的处理是有区别的, 对于VN而言,需要经过caps模块,得到的输出shape应该是24xN(N表示为多少个ID),用这种方式代替了全连接层,用向量长度(模值)表示可能为哪个ID。

对于SN而言,DenseNet的输出先经过平均池话后再经过FC层、BN、ReLu等最后用FC进行输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1849575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搜索python包的说明

当我发现bug时,就怀疑是sns包的版本问题了(原代码是原作者以前成功运行的代码),于是直接到网上搜,找到对应的说明文档 根据该示例代码进行改写: 达成目的。

Elasticsearch 数据提取 - 最适合这项工作的工具是什么?

作者:来自 Elastic Josh Asres 了解在 Elasticsearch 中为你的搜索用例提取数据的所有不同方式。 对于搜索用例,高效采集和处理来自各种来源的数据的能力至关重要。无论你处理的是 SQL 数据库、CRM 还是任何自定义数据源,选择正确的数据采集…

2024年全国青少信息素养大赛python编程复赛集训第八天编程题分享

整理资料解析答案非常不容易,感谢各位大佬给个点赞和分享吧,谢谢 今天题目较难:适合初中组 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准函…

进程、线程的区别

进程、线程的关系 开工厂生产手机,制作一条生产线,这个生产线上有很多的器件以及材料。一条生产线就是一个进程。 只有生产线是不够的,使用找五个工人来进行生产,这个工人能够利用这些材料最终一步步的将手机做出来,这…

上位机图像处理和嵌入式模块部署(mcu之静态库生成和使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多同学做了很长时间的mcu和keil开发,都认为keil工程中必须包含所有的源代码,其实这是不对的。如果有一些代码我们不希望别…

C#.net6.0+Vue+Ant-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解

C#.net6.0VueAnt-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解 医护人员通过手麻信息系统可以进行手术的预约申请、受理、安排,从门诊医生下医嘱到发起手术申请、护士长审核通过,均实现了全流程信息化管理,大大…

内容安全复习 4 - 深度生成模型

文章目录 概述经典算法自回归模型(Autoregressive model)变分自编码器(VAE)生成对抗网络(GAN)扩散模型(Diffusion model)总结 应用 概述 深度生成模型是一类使用深度学习技术构建的…

【第25章】Vue实战篇之用户登出

文章目录 前言一、后端代码二、前端代码1.接口调用2.界面代码3.事件代码 三、效果总结 前言 这里来演示用户登出。 一、后端代码 /*** 登出* param token token* return Result*/RequestMapping("logout")public Result logout(RequestHeader("Authorization&…

【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

🔥 个人主页:空白诗 文章目录 引言一、Python简介1.1 历史背景1.2 设计哲学1.3 语言特性1.4 应用场景1.5 为什么选择Python 二、Python语言基础2.1 注释规则2.1.1 单行注释2.1.2 多行注释2.1.3 文件编码声明注释 2.2 代码缩进2.3 编码规范2.3.1 命名规范…

镜像发布至dockerHub

1、login 没有账号的话去注册一个 https://hub.docker.com docker login 输入账号密码和账号2、修改镜像名格式 可以直接招我的修改 格式为你的 hub名/镜像名 3、推送

2D图形引擎Cairo例子

代码; #include<cairo.h> int main() {cairo_surface_t *surface;cairo_t *cr;surfacecairo_image_surface_create(CAIRO_FORMAT_ARGB32,320,240);crcairo_create(surface);cairo_set_source_rgb(cr,0,1,0);cairo_rectangle(cr,10,10,200,200);cairo_fill(cr);cairo_mov…

OpenMVS算法流程

OpenMVS安装使用教程 源码与注释代码地址 . 源码: GitHub - cdcseacave/openMVS: open Multi-View Stereo reconstruction library . 注释代码: GitHub - electech6/openMVS_comments: open Multi-View Stereo reconstruction library 依赖项与安装工具说明 OpenMVS 依赖的…

分享一个 Fail2ban 过滤规则

今天明月给大家分享个 Fail2ban 的过滤&#xff08;Filter&#xff09;规则&#xff0c;有关 Fail2ban 的文章大家可以参考【服务器全面使用 Fail2Ban 初见成效】和【使用 Fail2ban 禁止垃圾采集爬虫&#xff0c;保护 Nginx 服务器】等文了解&#xff0c;总之 Fail2ban 是 Linu…

求解FAT表大小

540M/1K 540k 540 * 1024 b 512k对应2的19次方<540k<1024k对应2的20次方 取比540k大的1024k 八位一个字节 20对应2.5个字节 所以FAT占用 2.5*5401350k 1.2G/1k1.2M 1M1024k对应2的20次方<1.2M<2M对应2的21次方 取2M 21/8是循环小数不可以直接用 所以四舍五…

hdfs高可用文件系统架构

1、整体架构 2、角色简介 2.1、namenode NameNode 是 HDFS 集群中的核心组件&#xff0c;负责管理文件系统的元数据、处理客户端请求、管理数据块、确保数据完整性和高可用性。由于其重要性&#xff0c;NameNode 的性能和可靠性直接影响整个 HDFS 集群的性能和可靠性。在生产…

GD32 MCU的选项字节是什么?

GD32 MCU的选项字节是什么&#xff0c;有什么功能呢&#xff1f;选项字节被误篡改如何回复&#xff1f; 读者朋友们是否会有以上的疑问&#xff0c;首先我们先为大家介绍选项字节是什么以及选项字节的功能。 以GD32F30X系列MCU为例&#xff0c;其选项字节说明如下表所示&…

Acrobat Pro DC 2021:Mac/Win平台上全面高效的PDF编辑器

Acrobat Pro DC 2021是一款在Mac和Windows平台上广受欢迎的PDF编辑器&#xff0c;它凭借其全面的功能和高效的性能&#xff0c;为用户提供了卓越的PDF处理体验。 一、编辑功能全面强大 Acrobat Pro DC 2021允许用户轻松创建、编辑、合并、转换、签署和分享PDF文件。无论是对P…

慧天卓特:6月18日FYDI旱情监测分析

旱情监测 - 6月18日 重点干旱区域FYDI监测图 黄淮海流域和新疆内蒙甘肃干旱区域分布地图如下所示&#xff1a; 图1 重点旱情区域FYDI分布图 &#xff08;上&#xff1a;黄淮海流域&#xff1b;下&#xff1a;新疆内蒙甘肃地区&#xff09; 重点省市干旱面积占比统计 重点省…

upload-labs实验过程中遇到的问题

第6题问题&#xff1a;500异常码 发现500异常码&#xff0c;这个应该是apache版本问题&#xff0c;可更换其他版本&#xff0c;或者更换为nginx 12题问题&#xff1a;上传出错 出现上传错误&#xff0c;大概率是php版本问题&#xff0c;需要下载php5.2.17版本的php或者更换其他…

让全栈AI的旗帜猎猎作响:“逆行者”华为云

如果有人问&#xff0c;AI大模型行业&#xff0c;最近的风向是什么&#xff1f;相信很多人都会说&#xff0c;是“内卷”。 近段时间&#xff0c;“降价”成了大模型的第一关键词。各大云服务商争相加入AI降价潮&#xff0c;甚至有公司模型降价达到了97%的惊人幅度。加上厂商抢…