Spindle Net

论文:Spindle Net:Person Re-Identification with Human Body Region Guide Feature Decomposition and Fusion,cvpr,2017

论文地址:链接

代码:SpindleNet

摘要

背景:由检测算和姿势变化引起的行人身体不对准的问题会为不同图像间的特征匹配造成严重的影响。

贡献:本文提出了一种基于人体区域引导的多阶段特征分解和树形结构的竞争特征融合的新型卷积神经网络-SpindleNet,首次在ReID 中考虑人体结构信息,帮助对齐不同图像中的人体区域特征,增强局部细节信息的表示能力。SpindleNet 包括两个步骤:(1)不同语义层次的特征在不同阶段进行提取。(2)合并不同语义层的特征。还提出了一个ReID 数据集—SenseReID.

引言

在匹配过程中,存在行人的不同图像语义信息不对齐,局部遮挡等现象,如下图:

网络结构

1、Body Region Proposal Network(RPN)

RPN用于提取行人的区域,分为七个部分:肩膀上、上半身、下半身、左右手、左右脚,如下图示:

Step1:定位输入图片的14个关键节点

借鉴了CPM(一种姿态估计网络),利用Sequential framework 以由粗到细的方式来生成响应图,全卷积网络——> 14个response map(14个关节heatmap)

  • 在每个阶段,CNN提取特征并结合上一个阶段的响应图来refine关键点估计的位置

    对CPM进行修改来降低其复杂度:

    • 共享前几层的卷积参数
    • 用s=2的卷积代替池化层
    • 减小了输入大小、阶段数、卷积层的通道数
  • 14个关节点可以通过最大化特征图上的值得到:
    P i = [ x i , y i ] = a r g max ⁡ x ∈ [ 1 , X ] , y ∈ [ 1 , Y ] F i ( x , y ) P_i = [x_i, y_i] = arg \max \limits_{x\in[1,X],y\in[1,Y]} F_i (x,y) Pi​=[xi​,yi​]=argx∈[1,X],y∈[1,Y]max​Fi​(x,y)

Step2:产生7个身体区域:

  • 根据14个关节点生成3个宏观区域(头-肩,上体、下体)、4个微观区域(双腿、双臂),具体可参考上图

2、Body Region Guided Spindle Net

两个主要部分

  • the Feature Extraction Network(FEN):输入为行人图片和候选区域,计算全局特征和子区域特征
  • the Feature Fusion Network(FFN):合并不同区域的特征向量

2.1 Feature Extraction Network(FEN)

FEN 由三个卷积层(FEN-C1,FEN-C2,FEN-C3)、两个roi pooling stages(FEN-P1,FEN-P2)

  • 1个全图+7个身体子部分,每个部分产生256-dim 向量
  • sub-region 的特征从全图的特征上在不同阶段crop到
  • 在FEN-C3后通过一个全局池化层和一个内积层将输出转换为256-dim向量

下图表示区域特征有效性:

  • b)、(e)为经过FEN-C1的全局特征,由该特征计算非对准的相同人的距离将远,相似人两个人距离较近
  • (c )、(f)为FEN-P1后的特征,利用该特征计算相似性对于非对准的相同人距离减小,相似人的距离增大

2.2 Feature Fusion Network(FFN)

A tree-structured fusion strategy:根据子区域的不同语义层次与关系在不同的阶段将特征向量进行合并,双腿、双臂 ——>双腿 + 下半身 、双臂+上半身 ——>上半身结果+下半身结果+头-肩部 ——>合并图像+全局图像特征进行拼接,并转换为256-dim 向量。

特征融合单元包含两个步骤:① 特征的计算和选择,采用元素最大策略(理解是三个区域的特征向量每个元素都选值最大的那个,如下图所示);② 特征的转换,采用内积计算(理解是对全局、区域特征融合时候采用了内积,将两个256维向量融合为一个256维向量)。

2.3 训练细节

  • progressive strategy:先训练FEN、再训练FFN;权重全部随机初始化
  • FEN训练步骤:
    • 先训练输入为全图
    • 固定FEN-C1参数,训练三个宏观分支
    • 固定FEN-C1、FEN-C2,训练四个微观分支
  • FFN由FEN产生的特征向量进行训练,Softmax,在训练过程中只用了分类损失,没有用到Triplet loss 损失函数

Experiments

1、实验数据集以及划分策略如下表:

2、比较结果

Investigations

1、Investigations on FEN

  • ROI pooling得到宏观区域以及微观区域的最佳位置

  • 由上图可以看到:

    • Marco最佳为FEN-C1:macro包含更复杂的身份信息,应该更早的pool out来得到更多独立的学习参数
    • Micro最佳为FEN-C2
  • 全图特征与在不同阶段提取宏观及微观特征的组合实验

2、Investigations on FFN

  • 测试每种特征的效果:全图 > 宏观 > 微观

  • 树型融合策略与其他融合策略的对比:

Conclusion

  • 本文提出的Spindle Net:

    • a multi-stage ROI pooling network:分开提取不同身体区域特征
    • tree-structured fusion network:合并不同身体区域特征
  • 不同层次的身体特征有助于对齐不同行人图片的身体区域
  • 通过实验验证了feature competition and fusion network的有效性
    提取不同身体区域特征

    • tree-structured fusion network:合并不同身体区域特征
  • 不同层次的身体特征有助于对齐不同行人图片的身体区域
  • 通过实验验证了feature competition and fusion network的有效性
  • 本文的方法在多个数据集上取得了SOTA的方法

Spindle Net相关推荐

  1. 2017-2018-1 20155202 《信息安全系统设计基础》第9周学习总结

    2017-2018-1 20155202 <信息安全系统设计基础>第9周学习总结 第6章 存储器层次结构 教材学习内容总结 随机访问存储器(Random-AccessMem)分为两类:静态 ...

  2. bcache状态和配置文件详细介绍(翻译自官网)

    参考文献 http://www.cnblogs.com/zimufeng/p/6640439.html 有参考价值 https://www.kernel.org/doc/Documentation/b ...

  3. 史上最全的“大数据”学习资源

    2019独角兽企业重金招聘Python工程师标准>>> 资源列表: 关系数据库管理系统(RDBMS) 框架 分布式编程 分布式文件系统 文件数据模型 Key -Map 数据模型 键- ...

  4. html5 css3雪花效果,HTML5 | CSS3水晶皇冠雪花形状

    CSS 语言: CSSSCSS 确定 *, *:after, *:before { box-sizing: border-box; } html, body { width: 100%; height ...

  5. b树与b+树的区别_Linux内核-数据结构系列(B树、B-树、B+树)的区别

    一.B树 (二叉搜索树) B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点. 根节点至少有两个子节点 每个节点有M-1个key,并且以升序排列 位于M-1和M key的子节点 ...

  6. 干货丨不可错过的大数据学习资源推荐

    今天为大家推荐一些翻译整理的大数据相关的非常棒的学习资源,希望能给大家一些帮助. 关系数据库管理系统(RDBMS) MySQL:世界最流行的开源数据库: PostgreSQL:世界最先进的开源数据库: ...

  7. [9-1]磁盘基本知识、分区基本概念

    本文旨在复习磁盘基础知识.分区基本概念 知识储备 按照磁盘接口类型,常有ATA.SATA.SCSI.SAS.FC等: 按照磁盘芯片组分,常有HDD机械式.SSD闪存式等: 同一芯片组可能有多种类型的接 ...

  8. innodb一页为什么要存储两行记录_InnoDB中的页合并与分裂

    原文标题:InnoDB Page Merging and Page Splitting 原文链接:https://www.percona.com/blog/2017/04/10/innodb-page ...

  9. 脑波的振幅、位相、分类

    目录 脑电图 脑波的振幅 脑波的位相 脑波的分类 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 脑电图 脑电图是由电极记录下来的大脑细胞群的自发性生物电活动. ...

最新文章

  1. webservice 暴漏接口_webService接口是什么?
  2. TensorFlow 学习(3)——MNIST机器学习入门
  3. copy时候明细消失没有了
  4. 2013NOIP普级组-- 小朋友的数字
  5. java循环单链表比较相等_java的循环单链表
  6. 4.6模拟 宽度优先搜索
  7. Java命令行界面(第24部分):MarkUtils-CLI
  8. 解题:2017清华集训 无限之环
  9. 1970“变种”bug连WiFi热点iOS设备会变砖?
  10. 飞行器真的是计算机!
  11. linux shell 0403-011,shell脚本出现 test:0403-004 Specify a paramater with this command
  12. 开拓新格局 共赢新 Power 2021浪潮商用机器新布局
  13. jqgrid columnChooser列的自定义及存储和获取
  14. RocketMQ(四)—— 单机与集群安装
  15. html file对象修改,HTML DOM
  16. jquery ajax实例get,jQuery中ajax的get()方法用法实例
  17. 前端获取小程序二维码参数_微信小程序实现带参分享并消息卡片获取参数
  18. java.lang.UnsupportedOperationException WebView is not allowed in privileged processes
  19. 关于一直卡死的两段代码,望对LDD3有兴趣者戳开这个blog : )
  20. 区块链大本营专访 | MiiX全球技术开发者超级大赛,36小时,3支获胜队伍有哪些不一样的感受?

热门文章

  1. 全球经济状况调研报告:亚太和南亚地区的信心指数大幅下降
  2. vue项目引入社交分享插件
  3. 实用类网站软件地址收集
  4. 没时间做副项目?这个程序员是如何做到的
  5. 旅游有哪些好玩的地方? 今天用python分析适合年轻人的旅游攻略
  6. python格式化输出多个变量_Python变量的格式化输出
  7. 判断一个数值是否为正数、负数、零、整数。
  8. Python库安装失败解决办法
  9. 前置usb接口接m2固态失效
  10. C语言socket编程广播