深度学习之目标检测(一)前言
从今天开始学习深度学习目标检测任务,从Faster R-CNN到SSD,再到YoloV1开始到YoloV5。本章节学习资源见 Bilibili 。前言中讲解常用数据集以及评价指标。
1. 数据集
目标检测常用数据集 PASCAL VOC2012数据集讲解 和 COCO数据集讲解 。PASCAL VOC2012 主要有二十个类别,自己标注的话为了一致建议使用 LabelImg(而非LabelMe,因为它生成json而不是xml),labelImg 的使用也可参考讲解。
相比而言,COCO则是非常大型且常用的数据集,可以使用 pycocotools 读取 COCO 标注文件。
2. 评价指标
本小节主要讲解:目标检测mAP计算以及coco评价标准,学习自 Bilibili。首先讲解 mAP 的计算方法。
我们以小猫类别检测举例,网络预测结果都是非极大值抑制之后的检测框,假设第一张测试图片中有两只猫,网络预测结果如下,我们使用列表来统计检测信息。表格是按照Confidence降序排列的,OB是说IoU是否大于0.5。然后把第二张图片加进去,此时总猫个数变为3,然后依然按照Confidence降序插入预测结果。同理加入第三张图。
有了表格之后就能来计算 TP,FP 和 FN,以及 Precision 和 Recall 了。需要根据我们设定的 confidence 来计算。比如设定 confidence = 0.98,总目标个数为7,漏检6个,没有假阳性,正确检出1个。
如果降低 confidence 阈值,则结果如下所示:
最后就可以得到 Precision-Recall 曲线了,注意横坐标 Recall 需要滤除一些重复的 Recall,只需要保留 Precision 值最大的结果就行了:
接下来我们看看 COCO 评价指标怎么来看,参考于官网:
结果主要看什么?
- 第一行很重要,COCO 主要看的指标
- 第二行很重要,PASCAL VOC 主要看的指标
- 第三行,定位精度比较高
- 第四行,小目标要求比较高
- ……
最后的开篇前言:目标检测任务,分类网络是基础!
目标检测分两类:
- One-stage:SSD,YOLO
- 基于anchors直接进行分类以及调整边界框
- 优点:检测速度快
- Two-stage:Faster-RCNN
- 通过专门模块去生成候选框(RPN),寻找前景以及调整边界框(基于anchors)
- 基于之前生成的候选框进行进一步分类以及调整边界框(基于proposals)
- 优点:检测更准确