算法思维
间接对bounding box的地位和置信度进行回归。
算法流程
- 将图片划分成
S*S
的格子,如果box核心落到某个格子内,则该格子负责预测这个box; - 每个格子负责预测b个bounding box(预测绝对于以后格子的坐标以及绝对于全图的长宽),最初选定置信度最大的格子输入;
- 计算回归损失。
推理流程
- 图片通过网络前向计算失去
S*S*(5*b+num_classes)
个输入,在pascal VOC数据集中,YOLOv1采纳S=7, b=2, 一共20类,所以num_classes=20, 最初的输入为7*7*30
,即每个格子预测两个bounding box; - 筛选出bounding box置信度(confidence)大于阈值的框(此时在YOLOv1中曾经过滤掉大部分);
- 对筛选出的bounding box进行nms(非极大克制)。依据业务不同要求,nms的模式也可能不同,YOLOv1中间接对所有bbox的score进行排序,在所有bbox中做nms;而在要求召回较高的场景须要对每一类别离做nms。
优缺点
长处
- 速度很快,pipline简略
- YOLO会基于整张图片信息进行预测,而其余滑窗式的检测框架,只能基于部分图片信息进行推理。
- YOLO学到的图片特色更为通用
- 背景误检率低
毛病
- 因为输入层为全连贯层,因而在检测时,YOLO训练模型只反对与训练图像雷同的输出分辨率;
- 每个格子只能预测一个bbox。当一个格子蕴含多个物体时,只能检出一个;
- 地位检测不精确。YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss奉献值靠近(尽管采纳求平方根形式,但没有基本解决问题)。因而,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而升高了物体检测的定位准确性。
代码
https://github.com/Howe-Young...