【Double Head】《Rethinking Classification and Localization for Object Detection》

Wu Y, Chen Y, Yuan L, et al. Rethinking classification and localization for object detection[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 10186-10195.

https://openaccess.thecvf.com/content_CVPR_2020/papers/Wu_Rethinking_Classification_and_Localization_for_Object_Detection_CVPR_2020_paper.pdf

CVPR-2020


文章目录

  • [1、Background and Motivation](#1、Background and Motivation)
  • [2、Related Work](#2、Related Work)
  • [3、Advantages / Contributions](#3、Advantages / Contributions)
  • 4、Method
    • [4.1、Analysis: Comparison between fc-head and conv-head](#4.1、Analysis: Comparison between fc-head and conv-head)
    • [4.2、Our Approach: Double-Head](#4.2、Our Approach: Double-Head)
  • [5、Experimental Results](#5、Experimental Results)
    • [5.1、Datasets and Metrics](#5.1、Datasets and Metrics)
    • [5.2、Ablation Study](#5.2、Ablation Study)
    • [5.3、Main Results](#5.3、Main Results)
    • 5.4、APPENDIX
  • [6、Conclusion(own) / Future work / Reference](#6、Conclusion(own) / Future work / Reference)

1、Background and Motivation

R-CNN 目标检测框架的头部结构中,full connection 和 full convolution 被广泛应用于分类和回归任务

However, there is a lack of understanding of how does these two head structures work for these two tasks.

作者实验分析了两种头部结构的优缺点,结合两种结构的优点,提出了 double head 结构,涨点明显

2、Related Work

  • One-stage Object Detectors

  • Two-stage Object Detectors

  • Backbone Networks

  • Detection Heads

3、Advantages / Contributions

基于 R-CNN 二阶段的目标检测框架,分析了全卷积头和全连接头的优缺点,结合两者的长处提出 double head,COCO 上提涨点明显

4、Method

4.1、Analysis: Comparison between fc-head and conv-head

(1)Data Processing for Analysis

公平起见,作者没有采用训练好的RPN产生RoI,而是通过在ground-truth box 周围滑动窗口(sliding window)来生成大小和交并比都不同的proppsals。然后比较在相同交并比的情况下,fc-head 和 conv-head 在classification 任务上的精度和 bbx regression 任务后的 IoU,以及相应的均值和标准差。

The predefined proposals include sliding windows around the ground truth box with different sizes

读第一遍的时候确实没有读出来 sliding window 的意思,看了同行的小伙伴解读才豁然开朗

(2)Comparison on Classification Task

图2,第一行是纵坐标是分类 score(得分应该是 train 出来的,不太清楚是 sliding window proposal 后只训头还是整体训完后替换 rpn 的 proposal),横坐标是 sliding window 的 proposal 和 GT 的 IoU

可以看到 fc-head 确实比 Conv-head 对位置更加敏感

classification score is more correlated to the intersection over union (IoU) between a proposal and its corresponding ground truth box

图 3 左图也能佐证这一点,皮尔逊系数的介绍看本文最后章节

图 3 右图没有用 sliding window 的 proposal,而是用 RPN 的 proposal(anchor + bbox regression),也看出同样的趋势

(3)Comparison on Localization Task

图 2 第二行,横坐标是 sliding window 的 proposal regression 后的 bbox 与 GT 的 IoU

实话说,区别不是很明显(蓝色比红色高了一点点)

作者还是给出了 conv-head has better regression ability than fc-head.

(4)Discussion

本文将特征层输出的7x7的feature map,以余弦距离计算其相似度,每一个feature point 都要与其他 48个计算相似度,所以一共 49 张小图,每一个有7x7的网格

确实可以看出,一个是 fc-head 对位置敏感,一个是 fc-head 可能更擅长物体部分区域的响应,而不是整体区域(可以理解为感受野有限吗?)

fc-head is better to distinguish between a complete object and part of an object (classification)

4.2、Our Approach: Double-Head

(1)Network Structure

基于 mask rcnn 框架

backbone 用的是 resnet50 or resnet101,配合 FPN(【FPN】《Feature Pyramid Networks for Object Detection》

改进:引入了 non-local 模块(【NL】《Non-local Neural Networks》


作者权衡速度和精度采用的是 3 residual blocks and 2 non-local blocks (K = 5 in the second group)

损失函数

也即头部的 loss 和 rpn 结构的 loss 的加权,分类用的是 cross entropy loss,回归用的是 Smooth-L1 loss

回顾一下 mask rcnn 的 RPN 细节

(2)Extension: Leveraging Unfocused Tasks

Ext 是 extension 的意思

unfocused task supervision

fc-head 和 conv-head 都有,然后两者的分类损失和回归损失加权在了一起

加权系数 λ f c \lambda^{fc} λfc 和 λ c o n v \lambda^{conv} λconv 均为 1 时,double-head-ext 就等价于 double head


作者仅融合了分类损失,没有融合回归损失,细节如下(Complementary Fusion of Classifiers

s f c s^{fc} sfc 是 fc-head 的 classification score

s c o n v s^{conv} sconv 是 conv-head 的 classification score

5、Experimental Results

5.1、Datasets and Metrics

  • MS COCO2017

  • Pascal VOC07

AP

5.2、Ablation Study

  • Double-FC

  • Double-Conv

  • Double-Head

    作者的方法

  • Double-Head-Reverse

    倒反天罡,fc for bbox regression,conv for classification

作者的 double-head 效果最好

single-conv 比 double-conv 的分类效果更好,所以作者在 double-conv 的基础上升级加权成了 double-conv-ext

sliding window analysis,double-fc 比 single-fc 要强一些的------有没有一种可能,是头部的参数量多了一些,网络的上限可以更高了

这里作者想说明,sharing two tasks in a single fully connected head (Single-FC) is not as good as separating them in two heads (Double-FC).


More training iterations,这个就有点赖皮了,万精油基本上是,不过参数量多了,确实可能要多训一些,2x有点太多了

Double-Head gains 0.6 AP (from 39.8 to 40.4)


Balance Weights λ f c \lambda ^{fc} λfc 和 λ c o n v \lambda ^{conv} λconv

这个应该是只训练了 double-head-ext,然后选择不同的 head,配合 λ \lambda λ 做的实验

还是作者的方法精度最高,实验做的无懈可击,哈哈,很完整

double-head-ext 看起来确实比 double-head 整体精度是要好


Fusion of Classifiers

这里实验的是 fc-head 和 conv-head 的 classification 的融合形式,作者融合的方法效果最好

5.3、Main Results

Comparison with Baselines on VOC07

Comparison with Baselines on COCO,table 5

Comparison with State-of-the-art on COCO,table 6

作者只比较 only has one training stage,抛开这个约束的话,slightly below Cascade RCNN (42.8 AP)

fc-head has more capability to distinguish a complete object from part of an object, but is not robust to regress the whole object.

5.4、APPENDIX

(1)Sliding Window Analysis on Different Difficulty Levels of Classes

classes 的难易程度怎么区分的呢?

rank all object classes based upon AP results of the FPN

确实 fc-head 有利于分类,这个信号特别明显

(2)Effect of Joint Training in Double-Head-Ext

还是在 classification 上信号特别明显,double-head-ext 冠绝全场

在 bbox regression 上并不是特别的明显

(3)Qualitative Analysis

d
inaccurate proposal

It is not suppressed by NMS

就会导致重复检测

6、Conclusion(own) / Future work / Reference

相关推荐
苏苏susuus10 小时前
NLP:Transformer之self-attention(特别分享3)
人工智能·自然语言处理·transformer
猫天意10 小时前
【目标检测】metrice_curve和loss_curve对比图可视化
人工智能·深度学习·目标检测·计算机视觉·cv
山烛10 小时前
OpenCV:图像透视变换
人工智能·opencv·计算机视觉·图像透视变换
艾醒(AiXing-w)11 小时前
探索大语言模型(LLM):Ollama快速安装部署及使用(含Linux环境下离线安装)
linux·人工智能·语言模型
月小水长11 小时前
大模型接入自定义 MCP Server,我开发了个免费使用的基金涨跌归纳和归因分析的 Agent
人工智能·后端
咏方舟【长江支流】11 小时前
AI+华为HarmonyOS开发工具DevEco Studio详细安装指南
人工智能·华为·移动开发·harmonyos·arkts·deveco studio·长江支流
阿里云云原生11 小时前
Qoder 全新「上下文压缩」功能正式上线,省 Credits !
人工智能
我星期八休息11 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
蒋星熠12 小时前
如何在Anaconda中配置你的CUDA & Pytorch & cuNN环境(2025最新教程)
开发语言·人工智能·pytorch·python·深度学习·机器学习·ai
Hcoco_me12 小时前
什么是机器学习?
人工智能·机器学习