任务简介
- 目标:object detection
- 输入:图片
- 输出:框住前景物体(有可能多种且每种有多个),并且给物体标上类别
思路
- 分解成两个子任务
- localization
- classification
- localization:枚举
- classification:CNN
- 最后再筛掉多余的
实现流程
- localization:用selective search提取region proposals(即一个个候选框)
- warped region:为了适配CNN输入,将region proposals格式归一化
- feature extraction:CNN
- classification:对于每个类别训练一个二分类SVM
- 综合策略:NMS(non-maximum suppression),重叠的选最有信心的
实现细节
- pre-training:直接用ILSVRC 2012训练CNN
- fine-tuning:将pre-training训练出来的CNN换上匹配当前任务的输入层(warped region)和分类层(1000-way to 21-way)来训练模型
- 训练集:warped region的label根据其与GT(Ground Truth)的IoU(Intersection-over-Union,交集/并集)的大小来定。这里将threshold设为0.5
- classifier:将fine-tuning训练出来的模型换上SVM作为分类层
- 训练集:方法同fine-tuning的训练集,不过这里的threshold设为0.3
Visualization
- 学习:定义某个unit学习的内容为让这个unit输出最高的input,即给定一堆input,unit对某个input_0的输出最高,则认为这个unit识别的就是这个input_0。通过这个定义可以将各个unit学习什么输出出来
Ablation studies(切除)(用于验证有效性)
- ablation:比较要不要某一个层,对于结果的影响
- 结果:
- 在不进行fine-tuning的情况下,CNN中的全连接层并没有什么卵用
- 在进行fine-tuning的情况下,提升很大
Detection error analysis
- 量化误差:给出了percentage of each type - total false positives图,说明了在各个FP时的误差类型分布。错误类型有以下
- 框错位置
- 分成相似的类
- 分成不相似的类
- 分成背景
- 结果:RCNN的错误基本都是框错了位置,作者认为这时因为bottom-up region proposals还有positional invariance learned from pre-training CNN导致的
- 解决方案:对于生成的框,要使用BB(Bounding box regression)进行进一步调整
收获
- object detection的任务
- RCNN
- 评价模型的指标
- 定性:visualization
- 定量:Ablation, detection error