首页 > 其他分享 >Deep Spatial Feature Reconstruction for Partial Person Re-identification: Alignment-free Approach(三)

Deep Spatial Feature Reconstruction for Partial Person Re-identification: Alignment-free Approach(三)

时间:2022-09-21 16:24:24浏览次数:81  
标签:Partial 特征 模型 DSR Feature Re 图像 FCN 图片

摘要

本文介绍的是Partial person re-identification(基于部分身体的行人重检测)。这是一个很有挑战性的问题,因为只有完整行人的一部分可以获得用来进行匹配。但是它具有很高的现实意义,因为在真实的场景中,我们很难直接获得一个行人完整的图片,大多数的行人都是partial的,比如被建筑物,车辆,其他行人所遮挡,如下图所示。

 

 

文章中,作者提出了一种快速准确的方法用来解决这个问题,主要依靠FCN生成固定大小的特征图,同时为了对不同大小的图片进行匹配,文章中还提出了Deep Spatial feature Reconstruction(DSR)的方法来避免这个问题。他把从模型中比较图片的相似度变成了模型提取特征,DSR计算spatial相似度。

对于这个问题,也存在一些现行的解决方法,比如将图片resize之后进行比较,然而因为resize之后图片变形,会丢失空间信息,对于模型的performance会有较大的影响。利用固定大小的滑窗对图片进行搜索与检索图片进行比较,但是这个方法也存在弊端,当检测图片的大小大于数据集中图片的大小的时候,这个方法就没有办法进行。将图片分为固定大小的part,然后计算part与part之间的相似度,这个办法可行,但是所需要的计算量太大。上述三种方法的简单示意图,可以见下图。

 

模型介绍

(1)FCN without fully-connected layers

当人们使用CNN网络作为检测器在视觉检测任务重来提取特征的时候,通常需要一个固定大小的图片来进行输入。然而在partial ReID中,因为行人的图片是partial的,他们有着不同的尺寸,而resize有不可避免会导致性能的下降。文中作者提出,之所以需要固定大小的输入,是因为全连接层最后需要输出固定大小的特征向量。因此,在本文的模型中,作者删掉了所有的全连接层只保留了卷基层和池化层。这样FCN就能接收任意尺寸的partial图片作为输入了。模型中最后采取的FCN包含了13个卷基层和五个池化层,最后的输入是跟随输入大小可变的特征图。

 

2)Deep Spatial Feature Reconstruction

这部分主要是介绍如何匹配不同大小图片之间的相似度。假定现在给定一对图像,一个是完整的行人图像j,另一个是任意partial的行人图像I。通过FCN提取相应尺寸的特征图 x = conv(I,θ) 和 y = conv(J,θ),θ 是FCN中的参数。x是一个w*h*d的张量,这三个参数分别代表了图像的高度宽度以及通道数。相应的,如下图所示,将x分为N个块Xn,n从1到N,N=w*h,每个块的大小是1*1。相应的Y也是这样分,于是x和y分别服从下列分布。

 

 

 

 

然后,每个Xn都可以用Y的现行组合来表示。那就是说,我们尝试在Y中搜索相似的块来重建Xn.因此,我们希望获得Xn的系数Wn和Y相关, w n ∈ R M×1 。又因为Y中只有很少的一部分和X重建相关,所以Wn使用了L1-norm。然后就有了下面这个表达式:

 

其中β固定取0.4,控制Wn的稀疏度。 ||x n − Yw n || 2这个范数用来表示xn和y之间的相似度。对于x中的n个模块,匹配距离定义如下:

 

下面给大家展示一下DSR的整个运算过程,直接上原文,大致是先提出特征图X和Y,然后将他们分块生成模块集合X和Y,利用方程三来计算出系数矩阵,利用方程四来计算相似度:

 

3、 Fine-tuning on Pre-trained FCN with DSR

有了上面两个之后,将他们整合到一起,利用DSR基于FCN建立模型,这是加了DSR与没有加DSR的对比图,相比较于之前的方法,现行的方法增加了FCN提取深度特征的判别度以及能力。

 

DSR能够相同图片产生的特征图有很高的相似度,不同的图片产生的特征图则相似度距离很远。整个框架的损失函数定义为:

 

 其中α = 1意味着两个图片来自同一个人,α =- 1意味着他们来自不同的人,模型的优化目标主要是模型的参数θ以及系数矩阵W。训练主要分为两步进行:

步骤一:固定θ,优化W。这一步的目的是求解重建矩阵系数W。

步骤二:固定w,优化θ,为了优化FCN里的参数,我们计算损失函数对于X和Y的梯度:

 

 

 显然,基于DSR的FCN是可以训练的,并且可以通过随机梯度下降进行优化,在算法二中具体讲解了他的优化过程:

4、Multi-scale Block Representation
输入的局部图像(partial image)和整体图像(holistic image)的大小不同,因此无法进行匹配,导致识别性能的下降。为了应对图像尺度的变化,让图像能更好的匹配,同时也是为了提高鲁棒性,这篇文章选择了1 ∗ 1 1*11∗1,2 ∗ 2 2*22∗2和3 ∗ 3 3*33∗3三种尺度的blocks,这些blocks按照滑窗的形式对feature maps 进行特征提取。
一些传统基于区域的模型都是在图像层次上进行multi—scale,由于在计算特征时有重复操作,因此模型对计算力的消耗较大。本文的multi scale在像素层次上进行处理,特征只需要被计算一次,且不同的blocks之间可以进行参数共享,因此大大的减少了计算力的消耗。

 

 实验

在实验部分主要对图片的变形、多尺度、与state-of-the-art算法的性能比较等部分进行,每个实验都在Partial RELD和Partial-iLIDS两个数据集上进行。

 

 

 

 

 

 

 

 

 实验的三个结论如下:
(1)与欧几里得距离相比,DSR的效率更高,因为他可以自动寻找相似的特征来实现匹配;
(2)多尺度表示考虑了尺度变化对检测精度的影响,因此准确率更高;
(3)带有DSR的模型识别出更多空间特征,便于对图像进行区分。

 

标签:Partial,特征,模型,DSR,Feature,Re,图像,FCN,图片
From: https://www.cnblogs.com/yaoao/p/16715980.html

相关文章

  • redis基础系列~监控模板
    {"annotations":{"list":[{"builtIn":1,"datasource":"--Grafana--","enable":true,"hide":true,......
  • Oracle Database “record locked by another user” solution (recommended)
      1.数据库为什么会被锁数据库是多个用户使用的共享资源。当多个用户同时访问同一个数据库中的数据时。如果不控制并发操作,可能会读取和存储不正确的数据,破坏数据库的......
  • Linux(Debian) 配置netcore环境
    一、准备工作    ①、开启粘贴板#进入defaults.vim【未安装vim,按需安装】linaro@linaro-alip:~$sudovi/usr/share/vim/vim81/defaults.vim#将setmouse=......
  • Cannot read properties of null (reading 'pickAlgorithm')的解决方法
    在使用npmi安装项目的依赖包时,出现如下报错:解决办法执行npmcacheclear--force指令后,再执行npmi即可正常安装依赖包......
  • nginx系列---【解决 413 Request Entity Too Large(请求实体太大)】
    1.问题描述后台管理系统上传一个30M视频的时候,报“413RequestEntitytoolarge”错误,导致文件无法上传。2.原因分析F12打开控制台,发现调用后端上传接口失败,报......
  • ScrewUtil - NullPointer问题
    一、问题描述使用ScrewUtil导出PostgreSQL的表结构时,报错NullPointer; 二、问题排查首先,ScrewUtil确实很好用,之前导出mysql的表一点问题没有;而且只需要一些简单的配置,r......
  • Failed to download 'https://github.com/xerial/sqlite-jdbc/releases/download/3.39
    1.原因外网原因无法下载2.解决办法下载sqlite-jdbc-3.39.2.0.jar,放这个目录下:C:\用户\你的用户名\AppData\Roaming\JetBrains\PyCharm2021.1\jdbc-drivers\XerialS......
  • Java IO流(Stream)
    1.Stream流一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Stream可以定义为数据序列。有两种流-InPutStream   -......
  • Object.freeze的应用
    概念Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可......
  • Java8之list.stream的常见使用
    List<Integer>list=newArrayList<Integer>();从小到大方法:Collections.sort(list);从大到小方法:Collections.sort(list,Collections.reverseOrder());stream获取l......