10

简单有效的遮挡ReID解决方案(Simple Baseline for Occluded ReID)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/342281302
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Simple-Baseline-4-Occluded-ReID (基础方法,简单有效): https:// github.com/wangguanan/l ight-reid/tree/master/examples/occluded_reid

High-Order-Information-Matters(扩展方法,点更高): wangguanan/HOReID

Paper(论文): CVPR 2020 Open Access Repository

作者主页: https:// wangguanan.github.io/

知乎惯例,先介绍一下背景。

本人在CVPR2020上发了一篇关于遮挡行人重识别(Occluded Re-ID)的文章,并起了一个霸气的名字,叫 High-Order Information Matters [1],翻译成中文就是【高阶信息真管用】,简称简称 HONet。(此处感谢我的 co-authors 给我想出了这么优秀的名字。)

方法非常优雅,点刷的也非常高。对论文和代码感兴趣的同学欢迎移步paper 和 github 。论文和代码开源之后,受到了很多小伙伴的好评,在此感谢Re-ID社区伙伴们的支持与鼓励。

时光荏苒,转眼到了CVPR2021的投稿时间(估计现在已经快出reviews了),近两三个月突然突然收到了很多咨询我论文的邮件。邮件开头一顿赞赏,搞得我很是开心。阅读到邮件末尾,不约而同的都提到了一个问题:那就是能不能把【Baseline】的参数配置详细说明一下,如果能【顺便】把【源代码】给一下就更好了。

敏锐的我立即发现,原来大家是在刷点的路上遇到了困难。本着有求必应的原则,作为一个 Re-IDer,时隔一年,义无反顾的操起了上古代码进行整理,把这块代码开源了出来。在刷点的路上送大家一程。

背景: 什么是遮挡行人重识别(Occluded Re-ID)?非常好理解,就是一个人被遮挡了,你还要识别他是谁。那么 Occluded Re-ID 又有什么难点呢?如下所示,难点有二:

  1. 噪声特征 :遮挡会使得遮挡区域噪声被学习成行人特征,从而影响识别精度。比如如果两个人都被同一个物体遮挡(比如一辆小轿车),那么他们很容易被匹配到一起。
  2. 对齐问题 :遮挡/半身/outlier 会造成不对齐的问题,从而导致本来能算对的距离也是错误的。比如黑色的头部特征和橘黄色的衣服特征显然是不相似的,如果他们计算了特征,那么本来相同的人也会被误认为不同(距离太远了)。
eAjYbuU.jpg!mobile 图1 问题分析

实验性能: 好了,介绍完故事背景,我们正式上方法吧。话不多少,先看点到底有多高。

nAZZj2r.jpg!mobile 图2 实验结果

其中OONet是本文的方法(既然我CVPR的方法叫 High-Order,那这个方法就叫 One-Order吧,没办法就是这么随意),HONet是本人CVPR2020的工作。看起来点确实高, Occluded-ReID,Partial-ReID 和 Partial-iLIDs 基本碾压了所有2020年之前的工作。在Partial-ReID 和 Partial-iLIDs上,也勉强超过了我 HONet 的精度。真是狠起来连自己都打。

训练阶段: 报完了点,也来讲讲方法。整个方法非常简洁,一共包含3个部分:1个卷积骨架网络(CNN Backbone),和一个基于人体关键点的多头模块(SkeletonMultiHeads),以及目标函数(Objective Function)。

  1. CNN Backbone :把输入的图片(image)编码成特征图(feature map),这里采用了ResNet50或者ResNet50-ibna,当然也可以采用任意 CNN Backbone。为了提取高分辨率特征,我们把 layer4 最后一个卷积层的 stride=1。
  2. SkeletonMultiHeads: 提取基于人体骨骼点模型(Skeleton Model)的局部特征向量(local features)以及全局特征。局部特征通过归一化的骨骼点热图(normalized skeleton heatmap)和均匀池化(average pooling)操作得到。比如,我们要得到头部特征,我们就使用来自第一步的 feature map 和 头部热图进行 pixel-wise 点积操作,然后在进行均匀池化操作,就可以得到头部的局部特征。
  3. Objective Function包含3个
    1. 基于全局+局部特征特分类损失。这里采用 cross-entropy-loss-with-label-smooth,平滑系数设置为 0.1。
    2. 度量损失这里只对全局特征(global feature)使用度量损失,损失函数为 triplet-loss-with-batch-hard [2],margin 设置为 0.35。
    3. 对称损失。考虑到人体的对称性质,我们另人体对称区域骨骼点特征尽可能一致。比如,左右肩膀局部特征尽可能相似。

推理阶段: 我们把所有局部特征进行平均,并与全局特征串联(concat),最后得到一个4096维的特征。最后,使用这个4096维特整进行推理。

总结: 总的来说,我们提出的这个 方法简单 ,训练和推理阶段均 不会明显增加时间效果非常明显 。值得各位研究 occluded-reid 的小伙伴一试。

致谢 :感谢陪我刷点的 co-author 们,杨硕、环宇、成哥等。

参考文献:

[1] Wang, Guan ’an, Shuo Yang, Huanyu Liu, Zhicheng Wang, Yang Yang, Shuliang Wang, Gang Yu, Erjin Zhou, and Jian Sun. 2020. “High-Order Information Matters: Learning Relation and Topology for Occluded Person Re-Identification.” In 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 6449–58.

[2] Hermans, Alexander, Lucas Beyer, and Bastian Leibe. 2017. “In Defense of the Triplet Loss for Person Re-Identification.” ArXiv Preprint ArXiv:1703.07737.

[3] Luo, Hao, Youzhi Gu, Xingyu Liao, Shenqi Lai, and Wei Jiang. 2019. “Bag of Tricks and a Strong Baseline for Deep Person Re-Identification.” In 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW), 0–0.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK