由于工作需要,目前开始学习一些目标检测的项目。将自己目前掌握的一些知识进行整理和总结。
目标识别任务:
- 分类(判断是否有目标,属于二分类)
- 定位(localization,判断目标的坐标)
- 检测(检测是什么)
- 分割(场景级/实例级分割)
算法分类
Two-stage: R-CNN系列(实时性低,mAP高,目前主要学习Cascade R-CNN,其余后续进行补充)
One-stage:Yolo系列(实时性高,但是mAP一般)
常用名词
- anchor
新手也能彻底搞懂的目标检测Anchor是什么?怎么科学设置?
【目标检测】anchor基础知识整理
根据这一篇文章终于看懂了anchor的作用,以及如何进行科学设置和anchor-based和anchor-free的区别。
anchor:与传统目标识别算法不同,不需要设定不同尺度大小的滑动窗对整张图像进行检测(耗时、耗费算力)。anchor是提前设定的预选框,判断该预选框中是否有目标,若有目标计算相对坐标偏移以及anchor的长宽比例。
需要注意的是,由实验结果表明,anchor的比例与目标比例越接近,让anchor与物体的IoU为正样本的概率更高,否则会造成许多漏检。
- IoU
交并比,一般设定交并比阈值为0.5,但是这样会出现很多错检。
- mAP
平均精确度(average precision)的平均值。
开源项目
根据这篇文章尝试跑Cascade R-CNN。
Cascade Rcnn 的简单理解
开源项目链接easy_detection,这个开源项目用CPU即可训练,但是速度较慢。
安装过程根据文档操作即可,中间可能会在tensorboard可视化中出现错误,这时可以将代码由
python3 preview.py --config configs/faster_rcnn_voc.yml
tensorboard --logdir logs/preview
改成
python preview.py --config configs/faster_rcnn_voc.yml
tensorboard --logdir logs/preview
下载了训练的faster-rcnn日志,对数据进行测试,验证模型的mAP指标。
代码理解
依据这篇文章进行学习理解:
保姆级 faster rcnn 源码逐行解读—概览
模型faster rcnn文件包含三部分。
faster rcnn包含frcnn、backbone和model三个部分:
- backbone这里使用vgg16,用于提取图像特征。
- frcnn中包含生成