关于行人重识别方法PCB《Beyond Part Models: Person Retrieval with Refined Part Pooling 》及代码实现解读

论文地址:https://arxiv.org/abs/1711.09349
代码地址:code

什么是行人重识别(ReID)

行人重识别(Person re-identification)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题。 给定一个监控行人图像,检索跨设备下的该行人图像。旨在弥补目前固定的摄像头的视觉局限,并可与行人检测/行人跟踪技术相结合 ,可广泛应用于智能视频监控、智能安保等领域。

如下图,给定一个行人图或行人视频作为查询query,在大规模底库中找出与其最相近的同一ID的行人图或行人视频。
在这里插入图片描述

ReID任务描述

ReID任务一般包括两个部分:

  1. 特征工程,设计网络来学习不同场景下都general的visual feature,用probe-gallery的特征相关性来作为ranking的依据,一般直接Softmax分类。
  2. 、度量学习,设计损失函数,用多张图像的label来约束它们特征之间的关系,使学到的特征尽量类内间隔短,类间间隔大。

Beyond Part Models: Person Retrieval with Refined Part Pooling是清华大学孙奕帆于ECCV2018发表的一篇文章

摘要

论文包括两个部分:(1)

  1. 一个Part-based的Part-based Convolutional Baseline (PCB)框架,融合了水平切块的局部特征来得到一个强大的ReID特征;
  2. 一个refined part pooling (RPP) 方法,RPP会对水平切块边缘处的网格像素进行重新调整,将它们修正到正确的part分区。RPP可以理解为是一种注意力机制。

最终PCB+RPP不用任何re-ranking的方式来提点,在Market1501上可以达到93.8%的rank-1,是个很高的结果。
在这里插入图片描述

PCB框架流程:

  1. 对输入384128行人图提取深度特征(ResNet50),把最后一个block( averagepooling前)的下采样层丢弃掉,得到空间大小 248*2048的 tensor T。
  2. 按照水平方向分成均匀分成6parts,即6个空间大小 482048 tensor,然后各自进行 average pooling,得到6个column vectors g。
  3. 使用1*1卷积对g降维通道数,然后接6个FC层(权值不共享),Softmax进行分类。
  4. 训练时等于有 6个cross-entropy loss;测试时则将 6个 vectors h 合并在一起,再算相似度。

RPP(Refined Part Pooling)

在这里插入图片描述
为了了搞懂RPP,我们先定义一个术语——列向量。直观一点,列向量是指上图中每一个小网格的特征向量,即总共有24×8个列向量。接下来我们要调整每个列向量的part归属,假设某个列向量为f,我们要判断f要属于哪个水平块Pi
在这里插入图片描述
如上图所示,RPP思路:

  1. 把深度特征tensor T 中每个column vectors f 都分为6类(假设共有6个parts),文中是通过线性函数加Softmax来实现(其实就类似用1*1卷积来作segmentation一样。即最后对于所有的f,我们构造六个概率图(或者理解为mask、attention图都行),分别代表每个像素属于第i个part的概率。实现方式为在最后一层的特征图T后面接一个Conv2d得到一个6通道的张量,然后在最后在针对channel维度做softmax。
    在这里插入图片描述
    在这里插入图片描述
  2. 把每个part对应的attention map 权值叠加回 tensor T 里(即上图的 GAP过程),得到各 part 的spatial 空间压缩后的 feature vector g ~ 后续步骤都和PCB一样~
  3. 得到了概率图之后,再和原始的的特征进行相乘便可以得到最终refine之后的特征。现在的问题是如何训练这个新的Conv2d层来得到合适的概率图。这个卷积层是随机初始化的,要怎么才可以得到和PCB一样差不多的水平切块的概率图。论文提出的方式是先训练一个PCB网络,然后固定住除这个Conv2d层以外的所有层。因为PCB的概率图是人工切分的,所以用训练好的PCB去引导这个Conv2d层的训练,最后训练得到的概率图和水平切块的方式不会差太多,但是会微调一点点。

代码实现:

代码解读见下篇代码解读

参考资料:知乎–罗浩

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQLNonTransientConnectionException: Public Key Retrieval is not allowed 是一个Java异常错误信息,表示在MySQL数据库连接时发生了问题。具体而言,可能是由于连接字符串URL中缺少 "allowPublicKeyRetrieval=true" 参数导致的。为了解决这个异常,可以尝试以下几种方法: 1. 修改MySQL数据库连接字符串URL,在末尾添加 "?allowPublicKeyRetrieval=true" 参数。例如: ```java String url = "jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false"; ``` 2. 如果使用的是Java 8及以上版本,您可以将SSL模式设置为 "false",通过在JDBC驱动程序中添加额外的属性来关闭SSL。例如: ```java String url = "jdbc:mysql://localhost:3306/mydatabase?sslMode=DISABLED"; ``` 在这种情况下,您可能不需要 "allowPublicKeyRetrieval=true" 参数选项。 3. 更新MySQL Connector/J驱动程序到最新版本。如果您正在使用旧版本的MySQL Connector/J驱动程序,建议您将驱动程序更新到最新版本,并重新尝试连接,因为较新版本的驱动程序可能修复了一些与公钥检索相关的问题。 希望以上方法能够解决您遇到的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [报错MySQLNonTransientConnectionException: Public Key Retrieval is not allowed 解决方法](https://blog.csdn.net/qq_53332052/article/details/131596103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [解决问题:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowe](https://blog.csdn.net/qq_51447496/article/details/131147302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值