跨境追踪(ReID)多粒度网络(MGN)详解及代码实现(1)

跨境追踪(ReID)多粒度⽹络(MGN)详解及代码实现(1)多粒度⽹络(MGN)的结构设计与技术实现
云从科技多粒度⽹络公开介绍:
(⼀)多粒度⽹络(MGN)设计思路。
设计思想是这样⼦的,⼀开始是全局特征,把整张图⽚输⼊,我们提取它的特征,⽤这种特征⽐较 Loss 或⽐较图⽚距离。但这时我们发现有⼀些不显著的细节,还有出现频率⽐较低的特征会被忽略。⽐如⾐服上有个 LOGO,但不是所有⾐服上有 LOGO,只有部分⼈⾐服上有LOGO。全局特征会做特征均匀化,LOGO 的细节被忽略掉了。
我们基于局部特征也去尝试过,⽤关键点、⼈体姿态等。但这种有⼀些先验知识在⾥⾯,⽐如遮挡、姿态⼤范围的变化对这种⽅案有⼀些影响,效果并不是那么强。
后来我们想到全局特征跟多粒度局部特征结合在⼀起搞,思路⽐较简单,全局特征负责整体的宏观上⼤家共有的特征的提取,然后我们把图像切分成不同块,每⼀块不同粒度,它去负责不同层次或者不同级别特征的提取。
相信把全局和局部的特征结合在⼀起,能够有丰富的信息和细节去表征输⼊图⽚的完整情况。在观察中发现,确实是随着分割粒度的增加,模型能够学到更详细的细节信息,最终产⽣ MGN 的⽹络结构。
下⾯演⽰⼀下多粒度特征,演⽰两张图,左边第⼀列有 3 张图,中间这列把这3张图⽤⼆分之⼀上下均分,你可以看到同⼀个⼈有上半⾝、下半⾝,第三列是把⼈从上到下分成三块——头部、腹胸、腿部,它有 3 个粒度,每个粒度做独⽴的引导,使得模型尽量对每个粒度学习更多信息。
右图表⽰的是注意⼒的呈现效果,这不是基于我们模型产⽣的,是基于之前的算法看到的。左边是整张图在输⼊时⽹络在关注什么,整个⼈看着⽐较均匀,范围⽐较⼴⼀点。第三栏从上到下相当于把它切成 3 块,每⼀块看的时候它的关注点会更加集中⼀点,亮度分布不会像左边那么均匀,更关注局部的亮点,我们可以理解为⽹络在关注不同粒度的信息。
▌(⼆)多粒度⽹络(MGN)——⽹络结构
面瘫的中药这是 MGN 的⽹络架构完整的图,这个⽹络图⽐较复杂,第⼀个,⽹络从结构上⽐较直观,从效果来讲是⽐较有效的,如果想复现我们的⽅案还是⽐较容易的。如果你是做深度学习其他⽅向的,我们这个⽅案也有⼀定的普适性,特别是关注细粒度特征时,因为我们不是只针对ReID 做的。我们设计的结构是有⼀定普适性,我把它理解为“易迁移”,⼤家可以作为参考。
⾸先,输⼊图的尺⼨是 384×128,我们⽤的是 Resnet50,如果在不做任何改变的情况下,它的特征图谱输出尺⼨,从右下⾓表格可以看到,global 这个地⽅就相当于对 Resnet 50不做任何的改变,特征图谱输出是 12×4。
下⾯有⼀个 part-2 跟 part-3,这是在 Res4_1 的位置,本来是有⼀个stride 等于 2 的下采样的操作,
我们把 2 改成 1,没有下采样,这个地⽅的尺⼨就不会缩⼩ 2,所以 part-2 跟 part-3 ⽐ global ⼤⼀倍的尺⼨,它的尺⼨是 24×8。为什么要这么操作?因为我们会强制分配 part-2 跟 part-3 去学习细粒度特征,如果把特征尺⼨做得⼤⼀点,相当于信息更多⼀点,更利于⽹络学到更细节的特征。
⽹络结构从左到右,先是两个⼈的图⽚输⼊,这边有 3 个模块。3 个模块的意思是表⽰ 3 个分⽀共享⽹络,前三层这三个分⽀是共享的,到第四层时分成三个⽀路,第⼀个⽀路是 global 的分⽀,第⼆个是 part-2 的分⽀,第三个是 part-3 的分⽀。在 global 的地⽅有两块,右边这个⽅块⽐左边的⽅块⼤概缩⼩了⼀倍,因为做了个下采样,下⾯两个分⽀没有做下采样,所以第四层和第五层特征图是⼀样⼤⼩的。
接下来我们对 part-2 跟 part-3 做⼀个从上到下的纵向分割,part-2 在第五层特征图谱分成两块,part-3 对特征图谱从上到下分成三块。在分割完成后,我们做⼀个 pooling,相当于求⼀个最值,我们⽤的是 Max-pooling,得到⼀个 2048 的向量,这个是长条形的、横向的、黄⾊区域这个地⽅。
但是 part-2 跟 part-3 的操作跟 global 是不⼀样的,part-2 有两个 pooling,第⼀个是蓝⾊的,两个 part 合在⼀起做⼀个 global-pooling,我们强制 part-2 去学习细节的联合信息,part-2 有两个细的长条形,就是我们刚才引导它去学细节型的信息。淡蓝⾊这个地⽅变成⼩⽅体⼀样,是做降维,从 2048 维做成 256 维,这个主要⽅便特征计算,因为可以降维,更快更有效。我们在测试的时候会在淡蓝⾊
的地⽅,⼩⽅块从上到下应该是 8 个,我们把这 8 个 256 维的特征串连⼀个 2048 的特征,⽤这个特征替代前⾯输⼊的图⽚。
▌(三)多粒度⽹络(MGN)——Loss设计
Loss 说简单也简单,说复杂也复杂也复杂,为什么?简单是因为整个模型⾥只⽤了两种Loss,是机器学习⾥最常见的,⼀个是SoftmaxLoss ⼀个是 TripletLoss。复杂是因为分⽀⽐较多,包括 global 的,包括刚才 local 的分⽀,⽽且在各个分⽀的 Loss 设计上不是完全均等的。我们当时做了些实验和思考去想 Loss 的设计。现在这个⽅案,第⼀,从实践上证明是⽐较好的,第⼆,从理解上也是容易理解的。
生产数据采集
⾸先,看⼀下 global 分⽀。上⾯第⼀块的 Loss 设计。这个地⽅对 2048 维做了SoftmaxLoss,对 256 维做了⼀个 TripletLoss,这是对 global 信息通⽤的⽅法。下⾯两个部分 global 的处理⽅式也是⼀样的,都是对 2048 做⼀个 SoftmaxLoss,对 256 维做⼀个TripletLoss。中间 part-2 地⽅有⼀个全局信息,有 global 特征,做 SoftmaxLoss+TripletLoss。
但是,下⾯两个 Local 特征看不到 TripletLoss,只⽤了 SoftmaxLoss,这个在⽂章⾥也有讨论,我们当时做了实验,如果对细节当和分⽀做 TripletLoss,效果会变差。为什么效果会变差?
⼀张图⽚分成从上到下两部分的时候,最完美的情况当然是上⾯部分是上半⾝,下⾯部分是下半⾝,但是在实际的图⽚中,有可能整个⼈都在上半部分,下半部分全是背景,这种情况⽤上、下部分来区分,假设下半部分都是背景,把这个背景放到 TripletLoss 三元损失⾥去算这个 Loss,就会使得这个模型学到莫名其妙的特征。
⽐如背景图是个树,另外⼀张图是某个⼈的下半⾝,⽐如⼀个⼥⽣的下半⾝是⼀个裙⼦,你让裙⼦跟另外图的树去算距离,⽆论是同类还是不同类,算出来的距离是没有任何物理意义或实际意义的。从模型的⾓度来讲,它属于污点数据,这个污点数据会引导整个模型崩溃掉或者学到错误信息,使得预测的时候引起错误。所以以后有同学想复现我们⽅法的时候要注意⼀下, Part-2、part-3 的 Local 特征千万不要加TripletLoss。
手机背光▌(四)多粒度⽹络(MGN)——实验参数
图⽚展⽰的是⼀些实验参数,因为很多同学对复现我们的⽅案有⼀定兴趣,也好奇到底这个东西为什么可以做那么好。其实我们在⽂章⾥把很多参数说得⾮常透,⼤家可以按照我们的参数去尝试⼀下。
我们当时⽤的框架是 Pytorch。TripletLoss 复现是怎么选择的?我们这个 batch是选 P=16,K=4,16×4,64 张图作为 batch,是随机选择16 个⼈,每个⼈随机选择 4 张图。
然后⽤ SGD 去训练,我们的参数⽤的是 0.9。另外,我们做了weight decay,参数是万分之五。像 Market1501 是训练 80epochs,是基于 Resnet50 微调了。我们之前实验过,如果不基于 Resnet50,
⽤随机初始化去训练的话效果很差,很感谢 Resnet50 的作者,对这个模型训练得 ⾮常有意义。
初始学习率是百分之⼀,到 40 个 epoch 降为千分之⼀,60 个 epoch 时降为万分之⼀。我们评估时会对评估图⽚做左右翻转后提取两个特征,这两个特征求⼀个平均值,代表这张图⽚的特征。刚才有⼈问到我们⽤了什么硬件,我们⽤了 2 张的 TITAN 的 GPU。
在 Market1501 上训练 80 epoch的时间⼤概差不多是 2 ⼩时左右,这个时间是可以接受的,⼀天训练得快⼀点可以做出 5-10 组实验。
▌(五)多粒度⽹络(MGN)——实验结果
我们发表成果时,这个结果是属于三个数据集上最好的。
锻件法兰1、Market1501。我们不做 ReRank 的时候,原始的 Rank1 是 95.7%,mAP 是 86.9%,跟刚才讲的业内⽐较好的 PCB 那个⽂章相⽐,我们的 Rank1 提⾼差不多 1.9 个点,mAP 整整提⾼ 5.3 个点,得到⾮常⼤的提升。
2、RK。Rank1 达到 96.6%,mAP 是 94.2%。RK 是 ReRank 重新排序的简称, ReID 有⼀篇⽂章是专门讲 ReRank 技术的,不是从事 ReID 的同学对 ReRank 的技术可能有⼀定迷惑,⼤家就理解为这是某种技术,这种技术是⽤在测试结果重新排列的结果,它会⽤到测试集本⾝的信息。因为在现实意义中很有可能这个测试集是开放的,没有办法⽤到测试集信息,就没有办法做ReRank,前⾯那个原始的Rank1 和 mAP ⽐较有⽤。
邮购盒
但是对⼀些已知道测试集数据分布情况下,可以⽤ ReRank 技术把这个指标有很⼤的提⾼,特别是 mAP,像我们⽅案⾥从 86.9% 提升到94.2%,这其中差不多 7.3% 的提升,是⾮常显著的。
3、DukeMTMC-reID 和 CUHKO3 这两个结果在我们公布研究成果时算是最好的,我们是4⽉份公布
的成果,现在是 6 ⽉份了,最近 2个⽉ CEPR 对关于 ReID 的⽂章出了差不多 30 ⼏篇,我们也在关注结果。现在除了我们以外最好的成果,原始 Rank1 在 93.5%-94%之间,mAP 在83.5%-84% 之间,很少看到 mAP 超过 84% 或者 85% 的关于。
▌(六)多粒度⽹络(MGN)——有趣的对⽐实验
因为⽹络结构很复杂,这么复杂的事情能说得清楚吗?⾥⾯各个分⽀到底有没有效?我们在⽂章⾥做了⼏组⽐较有意思的实验,这⾥跟⼤家对⽐⼀下。
第⼀个对⽐,对⽐ MGN 跟 Resnet50,这倒数第⼆⾏,就是那个 MGN w/o TP,跟第⼀⾏对⽐,发现
我们的多粒度⽹络⽐ Resnet50 ⽔平,Rank1 提⾼了 7.8%,mAP 提⾼了 14.8%,整体效果是不错的。
第⼆个对⽐,因为我们的⽹络有三个分⽀,⾥⾯参数量肯定会增加,增加的幅度跟 Resnet101的⽔平差不多,是不是我们⽹络成果来⾃于参数增加?我们做了⼀组实验,第⼆⾏有⼀个 Resnet101,它的 rank1 是 90.4%,mAP 是 78%,这个⽐ Resnet50 确实好了很多,但是跟我们的⼯作成果有差距,说明我们的⽹络也不是纯粹堆参数堆出来的结果,应该是有⽹络设计的合理性在。
第三个对⽐,表格第⼆个⼤块,搞了三个分⽀,把这三个分⽀做成三个独⽴的⽹络,同时独⽴训练,然后把结果结合在⼀起,是不是效果跟我们差不多,或者⽐我们好?我们做了实验,最后的结果是“G+P2+P3(single)”,Rank1 有 94.4%,mAP85.2%,效果也不错,但跟我们三个⽹络联合的⽹络结构⽐起来,还是我们的结构更合理。我们的解释是不同分⽀在学习的时候,会互相去督促或者互相共享有价值的信息,使得⼤家即使在独⽴运作时也会更好。
▌(七)多粒度⽹络(MGN)——多粒度⽹络效果⽰例
这是排序图⽚的呈现效果,左图是排序位置,4 个⼈的检索结果,前 2 个⼈可以看到我们的模型是很强的,⽆论这个⼈是侧⾝、背⾝还是模糊的,都能够检测出来。尤其是第 3 个⼈,这张图是⾮常模糊的,整个⼈是⽐较⿊的,但是我们这个模型根据他的绿⾊⾐服、⽩⾊包的信息,还是能够出来,尽
管在第 9 位有⼀个判断失误。第 4 个⼈⽤了⼀张背⾯的图,背个包去检索,可以发现结果⾥正脸照基本被搜出来了。
右边是我们的⽹络注意⼒模型,⽐较有意思的⼀个结果,左边是原图,右边从左到右有三列,是 global、part2、part3 的特征组,可以看到 global 的时候分布是⽐较均匀的,说明它没有特别看细节。
越到右边的时候,发现亮点越⼩,越关注在局部点上,并不是完整的整个⼈的识别。第 4 个⼈我⽤红圈圈出来了,这个⼈左胸有⼀个LOGO,看 part3 右边这张图的时候,整个⼈只有在 LOGO 地⽅有⼀个亮点或者亮点最明显,说明我们⽹络在 part3 专门针对这个LOGO 学到⾮常强的信息,检索结果⾥
肯定是有这个 LOGO 的⼈排列位置⽐较靠前。
>多媒体操作系统

本文发布于:2024-09-23 02:17:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/163712.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   信息   结果   模型   粒度   没有   测试   效果
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议