算法思维

间接对bounding box的地位和置信度进行回归。

算法流程

  1. 将图片划分成S*S的格子,如果box核心落到某个格子内,则该格子负责预测这个box;
  2. 每个格子负责预测b个bounding box(预测绝对于以后格子的坐标以及绝对于全图的长宽),最初选定置信度最大的格子输入;
  3. 计算回归损失。

推理流程

  1. 图片通过网络前向计算失去S*S*(5*b+num_classes)个输入,在pascal VOC数据集中,YOLOv1采纳S=7, b=2, 一共20类,所以num_classes=20, 最初的输入为7*7*30,即每个格子预测两个bounding box;
  2. 筛选出bounding box置信度(confidence)大于阈值的框(此时在YOLOv1中曾经过滤掉大部分);
  3. 对筛选出的bounding box进行nms(非极大克制)。依据业务不同要求,nms的模式也可能不同,YOLOv1中间接对所有bbox的score进行排序,在所有bbox中做nms;而在要求召回较高的场景须要对每一类别离做nms。

优缺点

长处

  1. 速度很快,pipline简略
  2. YOLO会基于整张图片信息进行预测,而其余滑窗式的检测框架,只能基于部分图片信息进行推理。
  3. YOLO学到的图片特色更为通用
  4. 背景误检率低

毛病

  1. 因为输入层为全连贯层,因而在检测时,YOLO训练模型只反对与训练图像雷同的输出分辨率;
  2. 每个格子只能预测一个bbox。当一个格子蕴含多个物体时,只能检出一个;
  3. 地位检测不精确。YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss奉献值靠近(尽管采纳求平方根形式,但没有基本解决问题)。因而,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而升高了物体检测的定位准确性。

代码

https://github.com/Howe-Young...