论文笔记:《LSDA: Large Scale Detection Through Adaptation》(NIPS2014)

来源:互联网 发布:apache禁止访问根目录 编辑:程序博客网 时间:2024/06/05 21:17

文章标题:

LSDA: Large Scale Detection Through Adaptation

Judy Hoffman, Sergio Guadarrama, Eric Tzeng, Jeff Donahue, Ross Girshick, Trevor Darrell, Kate Saenko
NIPS2014

Core: Transfer image classifiers to object detectors when bounding box annotations are only available for some subset of categories.

简介:
Image-level annotation比较容易得到,object-level annotation不太容易得到。对于一些类,具有both image & object level annotation;另一些类,只有image level annotation,本文的方法可以做到transfer前者的knowledge来对没有object level annotation的那些类,训练得到object detector。满足对于更大规模的object detection的要求(本文训练了7.6K个detectors)。

1. 前言
本文提出了Deep Detector Adaptation (DDA)算法,该方法能够学习将一个image classifier转换成一个object detector。作者将这个问题视为domain adaptation问题:
source domain: 用来训练classifier的数据(image level annotation的图像);
target domain: 用来训练detector的数据(both image & object level annotation的图像)
 为了达到这个目标,用了有监督的卷积神经网络(supervised CNN)。
本文idea见Figure 1。(笔者认为Figure 1第一行的detectors应该是作者笔误,应为classifiers)

R-CNN是通过fine-tuning来做的adaptation。但R-CNN仍然需要大量的bounding boxes来训练detectors。
本文的DDA算法,只需要一个很小的subset of categories的bounding box,和更少的时间。

2. 相关工作
MIL (Multiple Instance Learning): 用weak labels (只有image level annotation) 来训练object detectors.
Deep CNN是state-of-the-art的object classification和detection方法 (R-CNN)。
Domain adaptation方法旨在减轻数据集偏差的影响,比如:训练数据集和测试数据集在统计分布上不同造成的bias。

3. Deep Detector Adaptation (DDA)



DDA算法的流程图见Figure 2,主要分三步:
a). 对于所有K个类(有image level annotations, A+B),学习CNN classifiers;(A只有image level annotation, B有both)
b). 在B上m个类做Fine-tuning(用fine-tune RCNN相同的方法,需要B的bounding box),得到适用于detection的network(加了一个背景类,图中b的红色部分),也就是类似m个detectors;(detection adaptation layers, 后来试验证明这一步对mAP的提高最大)
c). 把没有object level annotation的A (K-m个类)一起再输入这个network,得到adapted network。(output layer adaptation, 实验证明,这一步可以提高mAP, 但是效果不是太明显)
下面作者详细介绍了这三步。

3.1 训练分类网络 (对A+B)
用Caffe在A+B上训练一个CNN网络来区分K个类,pre-training用的是ILSVRC 2012的classification数据集(包含120万张图像,1000个不同的类)。然后保留第1-7层,去掉了最后一层(soft-max层),接一个新的multinomial logistic regression层,来对特定的这K个类进行识别。这样比训练整个网络快很多(5 hours vs. 5 days)。

3.2 Adapting 分类网络 for detection (只对B)
这一步,用B包含的object level annotations, 将classification网络转换成detection网络。用类似R-CNN的方法,用bounding box做fine-tuning。增加了一个background类!这一步相当于adapt fcB.
调整好fcB后,接下来的任务是调整fcA(Figure2中黄色部分)。文章介绍了三种方法。
1). 最简单直接的方法:直接合并。直接把fcA层、学习到的背景层以及adpted det fcB层叠加到一起,这样确实可以adapt for detecting所有A的类。这是假定fcA层的权重没有发生变化。但事实上,fcA的输入是有变化的(因为adaptation)。
2). 求平均。假定fcA的权重变化是和fcB的权重变化有着类似的方式。作者考虑计算对于B做adaptation (也就是fine-tuning)产生的平均权重开销,来计算fcA的权重变化(参见公式1)。但是该方法对于每一类的classification到detection的权重变换是一样的,作者举例:对于鸟和人,实际上从分类到检测的权重变化(自适应调整)相差是很大的。
3). 由于每一类的权重变化是不一样的,对于A中的某个类,作者选出B中跟它最近的k个邻居类(fc7层特征的最小欧氏距离,L2-norm),计算这k个类的平均变化,把这个平均变化当做A的变化(加在A上)。公式见论文(2)。此方法真是简单粗暴!

3.3 用自适应模型来做检测
给出一幅测试图像,先用Selective Search来生成region proposals, 和R-CNN一样pad & warp每个region成指定大小,输入network。把每个region前向传入调整好的网络,得到K+1维的特征向量(target domain, 也就是detection有K类),其中K个目标类,1个是背景类。最后,对于每个类i,作者计算一个discriminative score。也就是说,对于每张测试图像,最后的输出是K个score。

4. 实验
作者在ILSVRC2013 detection数据集上做evaluation. 该数据库有200个类,训练集约有40万张标记的图,平均每张图有1.534个object classes;validation集有2万张标记的图,有约5万个objects。对于200个类,都有image-level annotations, 但是假定只有前100个类有object-level annotations。

4.1 实验设置&实现细节
数据准备:
训练集:把ILSVRC2013 detection集分成classification set和detection set;(ILSVRC2013 detection set: training set没有很好地做object-level annotation, validation 和 test sets的object level annotation比较准确。)
a. classification训练集:ILSVRC2013 detection的训练集;(注意:对于classification数据,只有weak image-level annotation:一个类的标签,但是一张图可能会含多个objects)
b. detection训练集:将validation集划分成val1和val2,取val1中包含了前100个类的图像(假定有bounding box的)作为detection training set。(因为valdidation集相对较小,所以需要放大detection set。方法:对于每一个类:从ILSVRC2013训练集中,取出1000张带有bounding box的图像作为扩充。)详情参见R-CNN论文。
测试集:val2.
实现细节:
用Caffe的CNN实现和fine-tuning。

4.2 定量分析


4.3 Held-our类上的错误分析

4.4 大规模检测
作者训练了7604个detectors (ILSVRC2013上200个有both annotations的类+ImageNet上7404个只有image level annotations的类)。因为对于后7404个类,作者也没有ground truth bounding boxes,只能可视化显示了一些top detections (用NMS去掉一些重复detections)。

5. 总结
0 0
原创粉丝点击