Incremental Learning of Object Detectors without Catastrophic Forgetting 论文阅读

来源:互联网 发布:淘宝温湿度控制板 编辑:程序博客网 时间:2024/06/06 02:42

本文概览

  • CNN用于目标检测任务的缺陷——类别遗忘:假设CNN模型A为在一个物体检测训练集1上训练得到的性能较好的检测器,现在有另外一个训练集2,其中物体类别与1不同,使用训练集2在A的基础上进行fine-tune得到模型B,模型B在训练集2中的类别上可以达到比较好的检测结果,但是在训练集1中的类别上检测性能就会大幅度下降;

  • 本文目的:缓解CNN用于目标检测任务的类别遗忘,在训练集1中原始图片不可得以及新图片中不包含训练集1中存在的类别的标注的情况下,在训练集2上fine-tune模型A得到模型B,可以同时在训练集1和2中的类别上获得较好的检测性能;

  • 本文核心:在fine-tune模型A得到模型B的过程中提出一个新的损失函数,用于同时考虑网络在新的类别上的预测性能以及原始类别在新模型B和旧模型A上的响应差异,LOSS=新类别检测LOSS+旧类别在模型A和模型B上的差异LOSS;

Motivation

  • 实用性:当已有一个模型A可以较好的检测N个类别的物体时,如果此时获得另一个区别于N各类别的物体类别表述数据,想得到一个模型实现对N+1个物品类别进行检测,这是一个增加学习问题,此时可以重新在N+1个类别物体上进行重新训练得到模型B,但是这会消耗大量时间,如何简单的通过A得到B,是一个有意义的问题;

这里写图片描述

  • CNN遗忘问题:启发式的,解决上述问题可以再模型A上增加对新类别的预测分支,随即初始化该分支后,用新类别数据fine-tune这个分支,但是这样做会导致一个问题,此时得到的网络对原来N个类别的检测性能会大幅下降;

  • 本文方法特点:仅使用新数据fine-tune模型A;得到的模型B可以同时检测旧数据和新数据中的目标类别;设计了一个新颖的损失函数,其中主要增加了蒸馏损失

其他解决增加学习问题的手段

  • 不断更新训练集,使用所有收集的数据重新训练模型;

  • 使用图像的固定表达学习分类器;

本文方法

这里写图片描述

  • 原始网络A的作用:在图片中提出原始类别目标框并参与计算蒸馏损失;

  • 新网络B:模型A+用于预测新类别的分支,是最终可以同时检测旧类别和新类别的网络;

  • 避免遗忘灾难的方法:在fine-turn模型B中的新分支过程中,加入蒸馏损失,用于保留模型B在旧类别上的检测性能;

  • 蒸馏损失计算:对于一个新的图片的采样框,通过模型A得到一些的proposal,并且记录他们在模型A中的响应值,同时这些proposal通过模型B也得到其响应,通过两个模型中的响应计算蒸馏损失;

  • 目标检测网络:Fast-RCNN,由于Faster-RCNN网络中存在对目标类别敏感的RPN网络,不利于同时进行蒸馏proposal的提取和RPN的fine-tune,所以才用Fast-RCNN,其中proposal对类别是不敏感的;

  • Proposal提取方法:Edge Boxes方法;

  • 主干网络:ResNet50,在最后的卷积层前插入RoI Pooling层,最后为两个全连接层分别用于类别预测和目标框回归,全连接层独立连接每个类别的得分输出和回归输出,使用该主干网络训练用于检测类别集合1的模型A;

  • 模型B训练①:根据新增加的类别数对网络A进行扩展,即增加全连接层的输出个数,得到初始化的B网络;

  • 模型B训练②:对于每一个训练图片,随机从128个RoI中选取64的背景得分最低的RoI,并分别得到其通过模型A后在类别集合1上的得分和回归目标,同样得到其在通过模型B后在类别集合1上的得分和回归目标;

  • 模型B训练③:使用如下公式计算蒸馏损失,其中使用L2损失;

这里写图片描述

  • 模型B训练④:总损失函数定义如下,这里写图片描述其中平衡项参数定为1;

  • 采样策略:选择非背景proposal进行蒸馏学习相比随机选择proposal进行蒸馏学习得到的网络更检测性能更好;

阅读全文
1 0