2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification
论文地址
- 第一篇用深度学习来做Re-ID的工作,介绍了很多基础性的概念
- model部分对CNN的设计思路讲的很详细,有些细节还没有完全搞懂,回头会继续理解总结~
Motivation
- 传统的re-ID的流程如下图:
现在的re-ID工作要么是分开优化流程中的几个模块,要么是顺序优化,这种做法如果有用的信息在之前的步骤中丢失就难以在恢复了,影响整个系统的性能。
那么有没有办法来建立一个不同模块之间可以自动交互的系统呢?
- 端到端的深度学习
- 本文这里主要是针对后三个模块
Contribution
- 使用了深度学习方法,提出了filter pairing neural network(FPNN)
- 可以端到端联合处理对齐、光照与几何变化、遮挡、背景混杂的问题
- 不再需要手工提取特征,让网络从数据中来自动学习re-ID所需要的最优的特征,对于不同的摄像机视角,使用了two paired filters来编码光照变化
- 能够建模混合的复杂变化
- 一些训练网络的策略来应对检测算法造成的不对齐、过拟合、数据集中正负样本对不平衡问题
- dropout
- data augmengtation
- data balancing
- bootstrapping
- 建立了一个大规模的re-ID数据集-CUHK03,如下图:
- 13164张图像对应于1360个人
- 同时提供自动检测以及人工裁剪的行人框,可以来评估检测算法带来的不对齐问题,更加接近实际应用
1.Introduction
- Re-ID定义:跨摄像头(不重叠)检索行人。 本文是用视觉特征,如今也有结合时间信息的
- 挑战:不同摄像头下的行人的各种变化:光照、姿势、视角、分辨率、背景等等
- 具体流程以及本文贡献见上文。
2.Related Work
- 以前的工作都是分开改进各个模块:
- 特征模块:手工提取特征
- 全局特征:用颜色以及纹理分布构成的视觉词汇直方图,能具有一些不变性,但是缺少空间信息,判别能力较弱
- 分块的局部特征:比较两个图像对应的块来计算相似性,问题在于如何处理不同摄像头视角下的不对齐问题
- 手工特征很难实现判别能力与鲁棒性的平衡,文中举了特征设计与光照与几何形变的关系;以及特征选取不好对后面模块有很大影响
- 本文通过深度学习结合各个模块从数据中自动学习特征能够克服上述问题
- 光照、几何转换模块:
- 之前的工作都是将变化看作单模态来建模,从训练样本中学习模型参数
- 我们的FPNN能够建模混合的复杂变化:
- filter pairs and a maxout grouping layer来学习光照转换
- a patch matching layer学习几何转换
- 相似性度量:通过学习适当的距离/相似性度量可以进一步减弱跨摄像头的变化、遮挡以及背景混杂。
- 特征模块:手工提取特征
- 相比于其他的视觉任务,我们设计了特殊的层来直接处理re-ID中跨摄像头带来的种种问题,整个过程都是整体一起优化的
3.Model
- 整体结构如下图:6层FPNN
3.1.Feature extraction
- 第一层:convolutional and max-pooling layer
- 输入为:两个在不同摄像机下图的图像对III 与 JJJ`
- 卷积层:对光照变化建模,使用了两种不同的卷积核(Wk,Vk)(W_k, V_k)(Wk,Vk)分别对两张图像进行操作,定义卷积函数如下: f,g:RHim×Wim×3→RH0×W0×K1f, g:\mathbb{R}^{H_{im} \times W_{im} \times 3} \to \mathbb{R}^{H_0 \times W_0 \times K_1}f,g:RHim×Wim×3→RH0×W0×K1
fijk=σ((Wk∗I)ij+bkI)gijk=σ((Vk∗J)ij+bkJ)f^k_{ij} = \sigma((W_k * I)_{ij} + b^I_k) \\ g^k_{ij} = \sigma((V_k * J)_{ij} + b^J_k) fijk=σ((Wk∗I)ij+bkI)gijk=σ((Vk∗J)ij+bkJ)
- 本文使用了K1K_1K1对不同的卷积核
- maxpooling:使卷积得到的特征对local misalignment更加鲁棒,输出得到H1×W1×K1H_1 \times W_1 \times K_1H1×W1×K1feature map.
3.2 Patch matching
- 第二层:patch matching layer:匹配不同视角下局部块的卷积核响应
- 将第一层的输出划分成M个水平条,每个水平条有W1W_1W1个patches,相同的patch进行匹配
- 该层的输出具有K1MW1×W1K_1MW_1 \times W_1K1MW1×W1个patch displacement matrices:
S(i,j)(i′,j′)k=fijkgi′,j′kS^k_{(i,j)(i^\prime,j^\prime)} = f^k_{ij}g^k_{i^\prime,j^\prime}S(i,j)(i′,j′)k=fijkgi′,j′k
- 位移矩阵用来编码不同特征下的块匹配空间模式:当S(i,j)(i′,j′)kS^k_{(i,j)(i^\prime,j^\prime)}S(i,j)(i′,j′)k具有较高值时,patches(i,j)(i, j)(i,j)与(i′,j′)(i^\prime,j^\prime)(i′,j′)同时对filter pair(Wk,Vk)(W_k, V_k)(Wk,Vk)编码的特定特征有较高的响应
- 下图感觉左右两个人的框应该是个W1×W1W_1 \times W_1W1×W1的矩阵,对应向量作外积后得到了中间图,因为有两对不同的卷积核,所以有两个patch displacement matrices
3.3 Modeling mixture of photometric transforms
- 第三层:maxout-grouping layer:提高patch matchting的鲁棒性
- 把K1K_1K1个channel划分为T组,每组中只有最大的激活值传到下一层。这样每一个特征被多个冗余的通道所表示
- 在反向传播过程中,只有有最大响应的filter pair通过梯度得到更新,这样使在同一个组的filter pair竞争梯度,最终只有一个filter有对训练样本的最大响应
- 通过上面的方法图像块通过学习到的filter pairs将得到稀疏响应:sparsity is a property to eliminate noise and redundancy.
- 具体过程如下图:
3.4.Modeling part displacement
- 第四层:another convolution and max-pooling layer:输入为MTW1×W1MTW_1 \times W_1MTW1×W1 patch displacement matrices,输出为MW2×W2×K2MW_2 \times W_2 \times K_2MW2×W2×K2displacement matrices of body parts on a larger scale
- 卷积核可以学习捕捉local pattern of part displacements
3.5.Model pose and viewpoint transforms
- 第五层:fully connected layer
- 全局的几何变化是不同部分位移的结合,它们的分布是多模态的
- 由第四层得到的输出可以看做各种可能的part displacement,通过fc层的组合来表示全局的几何变化,以达到对混合的全局几何变化进行建模
3.6.Identity Recognition
- 第六层:softmax layer:由第五层输出的global geometric transform来判断输入的两张图片是否为同一个人:
p(y=i∣a0,a1,b0,b1,x)=e(ai⋅x+bi)∑ie(ai⋅x+bi)p(y=i|\mathbf{a_0},\mathbf{a_1},b_0,b_1,\mathbf{x}) = \frac{e^{(\mathbf{a_i}\cdot\mathbf x + b_i)}}{\sum_i{e^{(\mathbf a_i \cdot \mathbf x + b_i)}}} p(y=i∣a0,a1,b0,b1,x)=∑ie(ai⋅x+bi)e(ai⋅x+bi)
cost=−∑nHynlog(p(y=1∣Φ,(In,Jn)))+(1−yn)log(1−p(y=1∣Φ,(In,Jn)))cost = - \sum_n^H{y_nlog(p(y=1|\Phi,(\mathbf I_n, \mathbf J_n))) + (1 - y_n)log(1-p(y=1|\Phi,(\mathbf I_n, \mathbf J_n)))} cost=−n∑Hynlog(p(y=1∣Φ,(In,Jn)))+(1−yn)log(1−p(y=1∣Φ,(In,Jn)))
4.Traning Strategies
4.1. Dropout
- 在第一层卷积层后面使用了dropout:使网络提高应对不同视角下检测的行人图像块之间不匹配的问题
4.2. Data Augmentation
在训练集中,正样本对的数量远远少于负样本对(类别不平衡问题)
对每个图像进行简单的平移变化,将正样本数量扩大25倍
4.3. Data balancing
- 开始mini-batch中正负样本数量为1:1,随着训练进行逐渐增加负样本对的数量到1:5
4.4.Bootstrapping
- 当网络稳定后,不断选择hard negative samples:负样本对太多了,全部训练十分耗时,选择前一个epoch中hard simple来更新网络,这样容易产生较大的loss,对网络有较大的更新
- 文中公式:
s0=1−p(xisamatchedpair∣Φk),sk=1−p(xisamatchedpair∣Φk)+sk−12s_0 = 1 - p(x\ is\ a\ matched\ pair|\Phi_k), \\s_k = \frac{1-p(x\ is\ a\ matched pair|\Phi_k) + s_{k-1}}{2} s0=1−p(x is a matched pair∣Φk),sk=21−p(x is a matchedpair∣Φk)+sk−1 - 公式的目的就是每次选择把负样本对预测为正样本得分最高的(即hard negative sample),随着训练的进行,hard negative sample得分也会变低,所以sks_ksk也在逐渐增加
5.DataSet
- 已有的数据集规模相对较小,本文提出了一个相对较大的CUHK03数据集,如下图:
提供了检测得到的行人图片,更接近现实的应用
6个摄像头可以提供多种视角的图片,更具有复杂的变化
图像由几个月的录像中得到,会有天气、光照等对图片的影响
6.Experimental Results
- 图片预处理:
- histogram equlization并转换到LAB color space
- input size:64 x 64 x 3并减去均值
- 网络具体配置如下图:
6.1 Experiments on our new dataset
- 数据集划分
- train set:1160 persons
- val set:100 persons
- test set: 100 persons
- 使用手动标注图片的结果
- rank1相比最好的算法有46%的提升
- 使用检测算法图片的结果
- 性能并没有下降太多,说明相比其他算法,本文的算法对misalignment更加鲁棒
在训练集上增加了一些其他摄像机采集的107个人的照片:增加了训练数据集的复杂性
相比其他算法,本文算法有一定的提升,说明了算法有较强的学习能力以及泛化能力
6.2.Evaluation of training strategies
- 对于dropout以及bootstrap的策略进行了实验验证,效果如下图:
- 可以看到使用drop减少了网络的过拟合,提高了泛化能力
- bootstrap对准确率也有一定提升
6.3.Experiments on the CUHK01 dataset
- 在较小的数据集上进行实验与现有的方法进行了比较,结果如下图:
7. Conclusion
- 总结了本文提出网络的功效~
- 夸了下自己的训练策略与在数据集上的性能
2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification相关推荐
- 论文笔记:Person Re-identification with Deep Similarity-Guided Graph Neural Network
Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper: ...
- 【面向代码】学习 Deep Learning Convolution Neural Network(CNN)
转载自: [面向代码]学习 Deep Learning(三)Convolution Neural Network(CNN) - DarkScope从这里开始 - 博客频道 - CSDN.NET htt ...
- 【图像去模糊】Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring论文笔记
一.论文概述 一般因动态场景造成的非均匀模糊是图像去模糊中一个具有挑战性的问题,这类模糊由相机抖动.场景深度以及多个对象运动造成. 消除这类复杂运动模糊,传统的基于简单假设的方法不在适用 在本文中,作 ...
- 2018 CVPR Partially Shared Multi-Task Convolutional Neural Network with Local Constraint 学习
具有局部约束的部分共享多任务卷积神经网络用于人脸属性学习 摘要 在本文中,我们通过同时考虑身份信息和属性关系来研究面部属性学习问题.尤其是, 我们首先介绍一个部分共享的多任务卷积神经网络(PS-MCN ...
- DeepReID (2014 CVPR)
DeepReID: Deep Filter Pairing Neural Network for Person Re-Identification (香港中文大学Wei Li Rui Zhao Ton ...
- 2016 ECCV-Gated Siamese Convolutional Neural Network Architecture for Human Re-ID
论文地址 第一篇论文笔记,希望大家能多提些意见来帮助我提高论文笔记模型的性能.相关方向的童鞋可以加qq:396543018一起交流~ Motivation 现在的Siamese CNN对每个照片仅在f ...
- 3D Human Pose Estimation from Monocular Images with Deep Convolutional Neural Network(2014)
Deep network for 3D pose estimation(2014) 本文提出两种策略去训练deep convolutional neural network以进行3D pose est ...
- CVPR:Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estima
Weakly-supervised Deep Convolutional Neural Network Learning for Facial Action Intensity Estimation ...
- 《3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder》读书笔记
3D Point Cloud Registration for Localization using a Deep Neural Network Auto-Encoder 题目:基于深度神经网络自编码 ...
最新文章
- 借助Redis锁,完美解决高并发秒杀问题
- 电压放大倍数公式运放_【专题2:电子工程师 之 硬件】 之 【43.运算放大器详解e 运算放大器虚短和虚断】...
- 47 FI配置-财务会计-固定资产-一般评估-定义资产分类中的折旧范围
- GRUB 和 GRUB2 的区别
- 解决用SSIS组件导入CSV文件时,把CSV文件名一起插入到数据库表中的问题
- kindle看pdf乱码,Kindle中文乱码问题解决办法
- Passive Aggressive Alogrithm
- Team Foundation Server 开发流程管理管理研讨会
- 判断平面内三点是否共线
- 嗨!爱莫就是传说中隔壁家公司 | 精彩传送门
- 大学python考试题及答案_中国大学慕课mooc用Python玩转数据期末考试大全答案
- 什么是 VxLAN?
- 用Pandas秒秒钟搞定24张Excel报表,还做了波投放分析!
- 怎样上android官方下载,【图文教程】如何安装 iOS/Android(安卓)触动精灵?
- Kotlin读书笔记之函数式kotlin
- matlab中的聚类算法,kmeans聚类算法matlab matlab 聚类算法silhouette
- ZUCC_操作系统实验_Lab7进程通信---共享内存
- 2018.8.22日阿里巴巴java实习生面试答案整理
- 深入理解.sync修饰符
- 【愚公系列】2022年02月 U3D全栈班 002-Unity游戏结构和游戏开发流程
热门文章
- matlab可视化功能6,第6章MATLAB计算结果可视化
- 大数据告诉你:凌晨4点的中国人都在做什么?
- 无线降噪蓝牙耳机评测,南卡、JBL、OPPO、荣耀降噪蓝牙耳机推荐
- OSChina 周二乱弹 —— 我和高中女同学表白了
- 中科院博士论文致谢部分走红,感动无数网友,其实沉下心来,你我何尝不是前程万里
- esp32邮件服务器,ESP32智能家居集线器的制作
- 2021年起重机司机(限桥式起重机)考试题库及起重机司机(限桥式起重机)新版试题
- Java+MySQL基于ssm的物理竞赛管理系统
- 抖音 Android 性能优化系列:启动优化实践
- 怎么让蜘蛛快速抓取的方法