Skip to content

Latest commit

 

History

History
124 lines (83 loc) · 6.16 KB

README_zh-CN.md

File metadata and controls

124 lines (83 loc) · 6.16 KB

Localization Distillation for Object Detection

English | 简体中文

水平框目标检测器的LD代码在 https://github.com/HikariTJU/LD, 基于MMDetection.

本代码基于MMRotate框架.

论文解读: 目标检测-定位蒸馏 (LD, CVPR 2022), 目标检测-定位蒸馏续集——logit蒸馏与feature蒸馏之争

这是我们论文的代码实现

@Inproceedings{LD,
  title={Localization Distillation for Dense Object Detection},
  author={Zheng, Zhaohui and Ye, Rongguang and Wang, Ping and Ren, Dongwei and Zuo, Wangmeng and Hou, Qibin and Cheng, Ming-Ming},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  pages={9407--9416},
  year={2022}
}

@Article{zheng2023rotatedLD,
  title={Localization Distillation for Object Detection},
  author= {Zheng, Zhaohui and Ye, Rongguang and Hou, Qibin and Ren, Dongwei and Wang, Ping and Zuo, Wangmeng and Cheng, Ming-Ming},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
  year={2023},
  volume={45},
  number={8},
  pages={10070-10083},
  doi={10.1109/TPAMI.2023.3248583}}

[2021.3.30] LD被集成至MMDetection V2, 感谢 @jshilong , @Johnson-Wang@ZwwWayne.

LD是知识蒸馏在目标定位任务上的拓展,利用教师所学习到的定位分布来指导学生的定位学习。

LD可稳定提高旋转检测器精度,几乎无附加计算消耗!

简介

以往的目标检测知识蒸馏(KD)方法由于在蒸馏定位信息时效率低下,大多侧重于feature模仿而非模仿分类logit。 在本文中,我们研究了logit模仿是否总是落后于feature模仿。 为了实现这一目标,我们首先提出了一种新的定位蒸馏(LD)方法,可以有效地将定位知识从教师传递给学生。 其次,我们引入有价值定位区域的概念,有助于在特定区域中有选择地蒸馏分类知识和定位知识。 结合这两个新的组件,我们首次证明了logit模仿的表现可优于feature模仿,而缺乏定位蒸馏是logit模仿多年来表现不佳的一个关键原因。 深入的研究表明,logit模仿具有强大的潜力,可以显著缓解定位模糊性,学习到鲁棒的feature表示,并在训练早期阶段缓解训练难度。 我们还提供了LD和分类KD之间的理论联系,它们共享等价的优化效果。 我们的蒸馏方案简单有效,可以很容易地应用于密集水平和旋转目标探测器。 在MS COCO、PASCAL VOC和DOTA基准上的大量实验表明,我们的方法可以在不牺牲推理速度的情况下实现相当大的AP改进。

环境安装

参见INSTALL.md, 里面包含了安装和数据集准备。我们使用的是Pytorch=1.5.1与cudatoolkits=10.1。

快速入门

参见GETTING_STARTED.md, 包含了MMDetection的基本使用方法。

数据集准备

参见data_preparation.md

训练一个教师

你必须先训练一个教师检测器,它必须是一般分布的类型。注意学习率应与GPU数量匹配。

./tools/dist_train.sh configs/gwd/rotated_retinanet_distribution_hbb_gwd_r34_fpn_2x_dota_oc.py 1

评估指南

将文件 tests/val_set.txt 移动至 /yourpath/dataset/DOTAv1/ 目录下。

下载官网DOTA评估代码 https://github.com/CAPTAIN-WHU/DOTA_devkit

替换文件 dota_evaluation_task1.py 为我们的 dota_evaluation_task1.py, 并修改其中 detpath, annopath and imagesetfile 的路径为你的路径。

在运行测试结束后,运行如下命令

python yourpath/DOTA_devkit-master/dota_evaluation_task1.py

AP, AP50, AP55, ... , AP95 将在终端打印出来.

转换模型

如果你发现蒸馏训练后的模型大小很大,你可以转换模型,参见publish_model.py

python tools/model_converters/publish_model.py your_model.pth your_new_model.pth

评估结果

DOTA-v1.0 val

Rotated-RetinaNet, LD + KD

Teacher Student Training schedule AP AP50 AP70 AP90 download
-- R-18 1x 33.7 58.0 42.3 4.7
R-34 R-18 1x 39.1 63.8 48.8 8.8 model

GWD, LD + KD

Teacher Student Training schedule AP AP50 AP70 AP90 download
-- R-18 1x 37.1 63.1 46.7 6.2
R-34 R-18 1x 40.2 66.4 50.3 8.5 model

注:

  • 教师模型训练2x (24 epochs),学生训练1x (12 epochs)。以DOTA-v1.0 train set为训练集,val set为测试集。

  • 训练GPU数量为2,mini batchsize 1 per GPU。经发现,单卡训练可比双卡训练获得更高的精度,即便二者的batchsize相同。

  • 经大量实验,在DOTA上,我们发现LD与KD同等重要,均可在baseline的基础上(如33.7 AP的R-RetinaNet)提高超过3.5 AP,综合LD与KD则达到最高。

致谢

感谢yangxue0827给予的数据集准备的帮助,以及他一系列杰出的旋转目标检测的工作。