首页 > 其他分享 >基于深度学习的行人重识别

基于深度学习的行人重识别

时间:2024-07-14 19:57:01浏览次数:15  
标签:loss 样本 损失 三元组 深度 识别 行人 图片

目录

1、基于表征学习的ReID方法

2、基于度量学习的ReID方法

(1)对比损失(Contrastive loss)

(2)三元组损失(Triplet loss)

(3) 四元组损失(Quadruplet loss)

(4)难样本采样三元组损失(Triplet loss with batch hard mining, TriHard loss)

(5)边界挖掘损失(Margin sample mining loss, MSML)

(6)各种loss的性能对比

3、基于局部特征的ReID方法


1、基于表征学习的ReID方法

        基于表征学习(Representation learning)的方法是一类非常常用的行人重识别方法[1-4]。这主要得益于深度学习,尤其是卷积神经网络(Convolutional neural network, CNN)的快速发展。由于CNN可以自动从原始的图像数据中根据任务需求自动提取出表征特征(Representation),所以有些研究者把行人重识别问题看做分类(Classification/Identification)问题或者验证(Verification)问题:(1)分类问题是指利用行人的ID或者属性等作为训练标签来训练模型;

(2)验证问题是指输入一对(两张)行人图片,让网络来学习这两张图片是否属于同一个行人。

        论文[1]利用Classification/Identification loss和verification loss来训练网络,其网络示意图如下图所示。网络输入为若干对行人图片,包括分类子网络(Classification Subnet)和验证子网络(Verification Subnet)。分类子网络对图片进行ID预测,根据预测的ID来计算分类误差损失。验证子网络融合两张图片的特征,判断这两张图片是否属于同一个行人,该子网络实质上等于一个二分类网络。经过足够数据的训练,再次输入一张测试图片,网络将自动提取出一个特征,这个特征用于行人重识别任务。

         但是也有论文认为光靠行人的ID信息不足以学习出一个泛化能力足够强的模型。在这些工作中,它们额外标注了行人图片的属性特征,例如性别、头发、衣着等属性。通过引入行人属性标签,模型不但要准确地预测出行人ID,还要预测出各项正确的行人属性,这大大增加了模型的泛化能力,多数论文也显示这种方法是有效的。下图是其中一个示例[2],从图中可以看出,网络输出的特征不仅用于预测行人的ID信息,还用于预测各项行人属性。通过结合ID损失和属性损失能够提高网络的泛化能力。

        如今依然有大量工作是基于表征学习,表征学习也成为了ReID领域的一个非常重要的baseline,并且表征学习的方法比较鲁棒,训练比较稳定,结果也比较容易复现。但是个人的实际经验感觉表征学习容易在数据集的domain上过拟合,并且当训练ID增加到一定程度的时候会显得比较乏力。 

2、基于度量学习的ReID方法

        度量学习(Metric learning)是广泛用于图像检索领域的一种方法。不同于表征学习,度量学习旨在通过网络学习出两张图片的相似度。在行人重识别问题上,具体为同一行人的不同图片相似度大于不同行人的不同图片。最后网络的损失函数使得相同行人图片(正样本对)的距离尽可能小,不同行人图片(负样本对)的距离尽可能大。常用的度量学习损失方法有对比损失(Contrastive loss)[5]、三元组损失(Triplet loss)[6-8]、 四元组损失(Quadruplet loss)[9]、难样本采样三元组损失(Triplet hard loss with batch hard mining, TriHard loss)[10]、边界挖掘损失(Margin sample mining loss, MSML)[11]。首先,假如有两张输入图片 

标签:loss,样本,损失,三元组,深度,识别,行人,图片
From: https://blog.csdn.net/lbr15660656263/article/details/140362458

相关文章

  • 深度学习-6-自编码器和去噪自动编码器和变分自编码器
    参考keras基于自编码器的语音信号降噪参考今天来介绍一下什么是去噪自动编码器(DenoisingAutoencoder)1keras实现自编码器图像去噪自编码器是一种简单的人工神经网络(ANN),经过训练可以学习输入数据的编码表示,这种无监督机制不需要标签。自编码器由两个神经网络组成,前半......
  • 终结文件观察之痛:深度解析PyCharm中的文件观察程序错误
    终结文件观察之痛:深度解析PyCharm中的文件观察程序错误引言PyCharm,作为Python开发者的首选IDE之一,提供了强大的文件观察功能,以实现诸如自动编译、即时运行等高级功能。然而,在使用过程中,用户可能会遇到文件观察程序错误,这些错误可能由多种原因引起,包括IDE配置问题、文件系......
  • 插件魔法:深度解析Gradle插件系统的运作机制
    插件魔法:深度解析Gradle插件系统的运作机制在自动化构建的奇幻世界中,Gradle以其插件系统的强大灵活性和扩展性而著称。插件是Gradle自动化构建的基石,它们为构建过程提供了额外的能力,使得构建脚本更加简洁、功能更加丰富。本文将深入探讨Gradle插件系统的工作原理,揭示其背后......
  • 优化编码体验:深度定制PyCharm的代码自动完成功能
    优化编码体验:深度定制PyCharm的代码自动完成功能引言在现代软件开发过程中,代码自动完成功能已成为提升开发效率的关键因素之一。PyCharm,作为一款广受Python开发者喜爱的集成开发环境(IDE),提供了丰富的代码自动完成设置选项。本文将深入探讨如何调整PyCharm的代码自动完成设......
  • 对象的生存期 内存 深度拷贝 拷贝构造函数 笔记
    栈上的东西如何存在?栈是类似一种数据结构,像摞在桌子上的一堆书,要看中间的书需要把上面的书拿走作用域:形象成一本书,书内声明的变量作用域结束,要把这本书从书堆中拿出来作用域指针是什么:基本是个类是一个指针的包装器,在构造时用堆分配指针析构时删除指针,可以实现自动化new......
  • 深度解析前端开发中的解构赋值
    在现代JavaScript开发中,解构赋值(DestructuringAssignment)是一种非常实用且强大的语法。它可以从数组或对象中提取值,并将其赋值给变量,使代码更加简洁和可读。本文将详细介绍解构赋值的各种用法及其应用场景,帮助你更好地在前端开发中运用这一特性。什么是解构赋值?解构赋值是ES......
  • 固态硬盘无法识别的原因
    1、硬件连接问题固态硬盘与电脑主板之间的连接不良是最常见的问题之一,这可能是由于SATA数据线或电源线接触不良或损坏导致的,检查并确保所有连接都牢固且没有磨损或损坏。2、BIOS设置不当在有些情况下,需要在BIOS中手动启用SATA控制器,以识别固态硬盘,重新启动计算机并进入BIOS设置......
  • 深度学习第P6周:VGG-16算法-Pytorch实现人脸识别
    >-**......
  • 【深度学习入门篇 ⑤ 】PyTorch网络模型创建
    【......
  • 数据结构第25节 深度优先搜索
    深度优先搜索(Depth-FirstSearch,简称DFS)是一种用于遍历或搜索树或图的算法。DFS从根节点开始,尽可能深的搜索树的分支,当节点v的所在边都己被探寻过,搜索将回溯到上一个节点w,然后探索w的其他未搜索过的子节点。DFS有两种常用的方式:递归方式和非递归方式(通常使用栈来实......