- 基于fastai的目标检测算法,主要是2018年course
- ① 2018 coursev2 : https://nbviewer.org/github/fastai/fastai1/tree/master/courses/ pascal.ipynb pacal_multi.ipynb SSD
- ② jav fastai1.x SSD 没有mAP: https://nbviewer.org/github/jav0927/course-v3/blob/master/SSD_Object_Detection.ipynb
- ③ mAP计算代码: Calculating mAP (mean average precision) on fastai object detection
- daveluo的mAP计算非常详细 https://gist.github.com/daveluo/2ab83da32e623864e543d7251e9beef4
- daveluo参考了Sylvain Gugger的代码,Sylvain的mAP代码地址为:https://github.com/sgugger/Deep-Learning/blob/master/mAP/Computing%20the%20mAP%20metric.ipynb
- fastai 论坛的讨论地址为:http://forums.fast.ai/t/mean-average-precision-map/14345
一、mAP计算过程
daveluo的mAP计算代码:https://nbviewer.org/gist/daveluo/2ab83da32e623864e543d7251e9beef4
- input:bbox区间0~1。anchors区间0~1
- 最后的预测宽度那里:只能是anchor的宽度的0.5~1.5倍。所以,最小的目标为:
主要看类别的置信度高不高!
- 主干网络提取特征;检测头进行高级特征组合。主要看这里的特征组合后能不能解释,这个
- 空间位置对应关系得到了保留。那么就指的是整张图,256*21=得到21个类别阈值,这里就是一个线性分类器,每一列就是一个分类器。化为256个特征来表示这一张整图。
——
这里是锚框的所有尺寸: 可以看出,锚框最小的只有个1个,21*21;16个21*21 的最小的锚框。
实际的预测偏移还可以更小,【0.5~1.5】锚框宽度,所以可预测的最小框为10*10。
- 实际,就是在这些锚框的宽高上面,预测0.5~1.5。这样就可以统计一下,实际的锚框预测精度,看真实框到底是多大的,分在了哪个上面。
- 所以可以将clas和bbox分开来看,看bbox的预测精度好不好,如果bbox预测的OK,但是clas不好,就是网络的高级特征提取能力不够用于表达类别。
二、jav0927 基于fastai 1.0
https://github.com/jav0927/course-v3
https://nbviewer.org/github/jav0927/course-v3/blob/master/SSD_Object_Detection.ipynb
- fastai 1.0中,h,w is 2。所以anchor, bbox-gt 都是不一样的。
三、pascal-multi.ipynb
https://nbviewer.org/github/fastai/fastai1/blob/master/courses/dl2/pascal.ipynb
- SSD+bbox+clas:网络结构,一样的。