版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ResNet行人重识别实战行人重识别的介绍行人重识别,是指在给定某个监控摄像机下的行人图像,利用行人的外观特征,在不重叠的跨域场景下摄像机拍摄的行人图像集合中准确的检索到该特定行人。广泛应用于智能城市,刑事侦查等重要的应用场景中。图片来源:https://zhuanlan.zhihu.com/p人重识别主要是在多摄像头多场景下,识别行人身份一项技术。由于是在无约束场景下识别行人,因此会受到外观;姿态;遮挡;光线;检测误差等一些难点问题,比如行人外观上会存在非常相似的问题,在姿态方面会存在非刚性变换,造成检测部位不匹配,在遮挡方面会存在行人身体遮挡,这也是行人识别需要克服一大难题,光线较
暗,起雾,也会问题识别上的问题。行人重识别的介绍图片来源:《基于深度学习的行人重识别研究进展_罗浩》01行人重识别系统一般是分两步骤:先检测+再识别。而当前的行人重识别研究重点是识别。它的主要任务包含特征提取和相似度量两个步骤。传统的方法思路为手工提取图像特征,例如颜色。但是它很难适应
复杂场景下的大量数据量任务。近年来,更多以卷积神经网络来提取行人图像的深层次特征。行人重识别的介绍图片来源:《基于深度学习的行人重识别研究进展_罗浩》01行人重识别的介绍基于不同损失函数的行人识别模型:表征学习和度量学习表征学习:直接在训练网络的时候考虑图片间的相似度,而把行人重识别任务当做分类问题或者验证问题来看待。表征学习下的损失函数包括:分类损失和验证损失。分类损失包括两大类,一类是属性损失,例如行人外貌标签,有没有戴帽子,是否为短头发,一类是ID损失,是否是小明,及确定行人的ID。验证损失:输入一对(两张)行人图片,让网络来学习这两张图片是否属于同一个行人,等效于二分类问题。下图中:图片通过主干是Resnet网络提取到的特征后,再经过平均池化,与各个全连接层连接分别计算分类损失。图片来源:《基于深度学习的行人重识别研究进展_罗浩》01行人重识别的介绍度量学习:基于表征模型的Re-id模型存在一个问题,因为最后一层是分类ID层,它会随着行人ID的n的增大而增大。因此只适用于闭集下的情况。将行人重识别问题看作是距离问题
:
通过网络提取到样本的特征,然后定义一个度量函数来计算两个特征向量的距离,最后通过最小化网络度量损失,来寻找一个最优的映射f
x
。使得相同行人两张图片的距离尽可能小,不同行人图片尽可能大。如下图:Triplet
Loss是度量学习的一种基准损失函数,Anchor(锚示例)(是指选择的已知ID的示例,正示例、负示例都要以Anchor作为参照)、Positive(正示例,与Anchor
ID相同)、Negative(负示例,与Anchor
ID相反),通过优化让锚示例与正示例的距离尽可能的小,让锚示例与负示例的距离尽可能的大来解决Re-id问题。图片来源:arXiv:1503.03832v3[cs.CV]17Jun2015FaceNet:A
Unified
Embedding
for
FaceRecognitionandClustering01Market1501行人重识别数据集Market1501数据集简介Market-1501数据集在清华大学校园中采集,夏天拍摄,在2015年构建并公开。它包括由6个摄像头(其中5个高清摄像头和1个低清摄像头)拍摄到的1501个行人、32668个检测到的行人矩形框。每个行人至少由2个摄像头捕获到,并且在一个摄像头中可能具有多张图像。训练集有751人,包含12,936张图像,平均每个人有17.2张训练数据;测试集有750人,包含19,732张图像,平均每个人有26.3张测试数据。3368张查询集图像的行人检测矩形框是人工绘制的,而gallery候选集中的行人检测矩形框则是使用DPM检测器检测得到的。该数据集提供的固定数量的训练集和测试集均可以在single-shot或multi-shot测试设置下使用。该数据集仅用于学习和学术研究,不能用于商业目的。02bounding_box_test——用于测试集的750人,包含19,732张图像,前缀为0000表示-1表示为垃圾图片,也就是不完整图片,可以图仅拍摄到了四肢等情况。bounding_box_train——用于训练集的751个不同的人,包含12,936张图像。训练集中没有与测试集中的人。query——为750人在每个摄像头中随机选择一张图像作为query,因此一个人的query最多有6个,共有3,368张图像,都来自测试集。gt_query——对query集中3,368张图像加注了好或坏的标签,可用于图像质量评估。gt_bbox——包括对25259张图片手工标注的bounding
box,这些图片来自训练集和测试集中的1501个人的照片。可用于判断DPM检测的bounding
box是不是一个好的box。Market1501行人重识别数据集Market1501数据集简介02
02Market1501行人重识别数据集图片命名规则图片命名规则:0001_c1s1_000151_01.jpg为例:0001表示每个人的标签编号,从0001到1501;c1表示第一个摄像头(camera1),共有6个摄像头;s1
表示第一个录像片段(sequece1),每个摄像机都有数个录像段;000151表示c1s1的第000151帧图片,视频帧率25fps;01表示c1s1_001051这一帧上的第1个检测框,由于采用DPM检测器,对于每一帧上的行人可能会框出好几个bbox。00表示手工标注框。图片来源:Market1501数据集Market1501行人重识别数据集Junk
imageMarket1501在采样图片时候,会采样到一些垃圾图片,这种图片只拍摄到部分肢体,例如:脚、手、上半身、没有训练价值的图像。在训练阶段时,会选择删除掉这些这些以0000和-1开头的图片。02图片来源:Market1501数据集
03Pytorch实现行人重识别数据集管理器data_manager在数据集管理器,首先指定各个文件路径:使用变量来存储训练集、测试集(查询集和画廊)的文件夹路径,这里定义了一个__process_dir函数它会返回数据集(包括图片路径img_path,图片id(pid),相机id(camid等))以及图片id数量(num_pids),图片数量(num_imgs)。通过__process_dir获取了这些值后,再利用print打印出来。
03Pytorch实现行人重识别数据集管理器_process_dir函数使用re.compile,来提取每张图片的类别值和摄像头的id值。其中pid_container集合对象来存储图片类别值,使用pid2label字典类型来存储图片的类别值与索引值。这里如果relabel为true就将索引值来充当图片类别值。最后为dataset列表添加图片路径、图片类别id、以及摄像头的id值。返回dataset,num_pids,num_imgs,其中num_pids,num_imgs只是做统计用的,最重要的是dataset。Pytorch实现行人重识别图像数据库类ImageDatasetImageDataset(图像数据库类)和之前介绍的一样需要重载之前的__getitem__()方法和__init__()方法。这里__getitem__()方法可以对图片进行预处理并返回每张图片的img,pid,
camid信息。它通过调用read_image来完成数据的加载。03
03Pytorch实现行人重识别网络模型ResNet50由于原ResNet是用于ImageNet库的模型,该库有1000个类别,所以最后的全连接层为1000个神经元。这里需要将ResNet最后一层变换为Market1501的数据集类别数num_classes.如图所示:将原始模型的fc层(2048,1000)变成了(2048,num_classes),训练时num_classes=751,测试时为750。Pytorch实现行人重识别Softmax
损失函数crossEnttropyLoss(交叉熵损失)多分类任务中输出的是目标属于每个类别的概率,所有类别概率的和为1,其中概率最大的类别就是目标所属的分类。而softmax函数能将一个向量的每个分量映射到[0,1]区间,并且对整个向量的输出做了归一化,保证所有分量输出的和为1,正好满足多分类任务的输出要求。所以,在多分类中,在最后就需要将提取的特征经过softmax函数输出为每个类别的概率,然后再使用交叉熵作为损失函数。03Pytorch实现行人重识别优化设计部分Init_optim在初始化,可以训练不同的训练策略,有Adam、SGD(随机梯度下降)、RMSprop。SGD每次更新时对每个样本进行梯度更新,对很大的数据集来说,可能会有相似的样本,SGD一次只进行一次更新,就没有冗余,而且比较快,并且可以新增样本。RMSprop使用了指数加权平均,旨在消除梯度下降中的摆动,与动量(Momentum的效果一样),某维度的导数比较大,则指数加权平均就大,某一维度的导数比较小,则其指数加权平均就小,这样就保证各维度导数都在一个量级,进而减少摆动。Adam自适应学习率的方法相当于RMSprop+Momentum,一般会选择Adam比其他自适应方法效果要好。03Pytorch实现行人重识别模型训练Train训练函数参数有epoch(循环次数)、model(模型)、critertion_loss(分类损失函数)optimizer(优化器)、trainloader(数据加载器)、use_gpu(GPU调度器)。主要过程还是在for循环体里面,具体过程还是读取数据,通过模型得到最终特征,然后放入损失函数中,反向传播、更新参数。并且打印训练过程中的信息。03Pytorch实现行人重识别模型测试测试集是由(qurey库与gallary库组成)测试集函数主要是利用模型qurey特征和gallary特征,然后使用度量函数利用欧式距离或者余弦距离对qurey和gallary进行特征度量,以最小距离作为模型的预测类别值,在与ground
true进行比对判断是否评估正确。如下代码是分类提取出qurey和gallary库中图像的特征保存在qf与gf变量中。03Pytorch实现行人重识别模型评估指标使用评估指标CMC和mAP,采用欧式距离对qf和gf进行度量。其中,CMC表示top-k的击中率,主要用来评估数据集中的rank正确率,代码中设定为rank1、rank5、rank10、rank20来表示,即前1,前5,前10,前20张的正确率是多少。mAP是指所有类别的平均精确度是多少,它用于衡量所有类别的好坏。 x2
−x1
2
+y2
−y1
2二维空间的欧式距离公式:03=pPytorch实现行人重识别模型运行过程信息上面介绍就是基准网络Resnet50训练行人重识别数据集主体代码,模型训练效果如下图所示:首先会打印出数据集信息内容,包括train训练集,id数751,和images图像数量12936等信息。然后开始训练,并打印
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国电信北京分公司校园招聘考试参考题库及答案解析
- 人教版(2024)八年级下册(2024)第3节 摩擦力教案设计
- 2026广西南宁市青少年活动中心招聘专业技术人员7人考试参考题库及答案解析
- 第1课 枚举算法教学设计小学信息科技清华版新疆2024五年级下册-清华版(新疆)2024
- 2026福建事业单位统考招聘永安市52人考试备考试题及答案解析
- 2026年中国石油独山子石化分公司校园招聘考试模拟试题及答案解析
- 第三单元 物质构成的奥秘 课题2 原子的结构 教学设计-九年级上学期化学(人教版2024)
- 2026年中国电气装备集团有限公司校园招聘笔试模拟试题及答案解析
- 2026爱莎荔湾学校专任教师招聘(广东)考试参考题库及答案解析
- 2025年体育教师个人培训总结
- (2025年)医师定期考核题库附答案
- 2026年建安杯信息通信建设行业安全竞赛重点题库(新版)
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 短剧网络播出要求与规范手册
- 高二物理下学期期中考试试卷含答案
- 自建房安全施工合同协议书
- 《金属非金属地下矿山人员定位系统建设规范》
- JJG 693-2011可燃气体检测报警器
- 矿山生态修复治理实施方案
- 名著导读:《西游记》课件
- 抗美援朝战场上的感人故事三则
评论
0/150
提交评论