Fork me on GitHub

yolo系列

非极大值抑制

** 画出框的,代表这个框内部预测出东西了,但是这些框可能是重合的,所以要把一些画的歪的框去除掉,用nms方法**
选取这些框中scores最大的哪一个,记为box_best,并保留它计算box_best与其余的box的IOU如果其IOU>0.5了,那么就舍弃这个box(由于可能这两个box表示同一目标,所以保留分数高的哪一个)从最后剩余的boxes中,再找出最大scores的哪一个,如此循环往复

yolov1

划分49个格子,如果物体中落入某个格子,这个格子就负责检测检测这个物体,在格子内部画固定数量个框(直接使用回归方法),每个框的置信度反映了所预测的框内是否含有物体,以及预测的边界框与任何真实框(ground truth box)的吻合程度,最后对每个框进行预测。

算法首先把输入图像划分成S*S的格子,然后对每个格子都预测B个bounding boxes,每个bounding box都包含5个预测值:x,y,w,h和confidence。
如果一个物体的中心点落入一个格子,那么这个格子负责预测这个物体。
每个bounding box的confidence和每个类别的score相乘,得到每个bounding box属于哪一类的confidence score。

将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标。

Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。
结构:
image
Yolo算法将目标检测看成回归问题,所以采用的是均方差损失函数。但是对不同的部分采用了不同的权重值。首先区分定位误差和分类误差。对于定位误差,即边界框坐标预测误差,采用较大的权重。

对于Yolo算法先使用NMS,然后再确定各个box的类别。其基本过程如图12所示。对于98个boxes,首先将小于置信度阈值的值归0,然后分类别地对置信度值采用NMS,这里NMS处理结果不是剔除,而是将其置信度值归为0。最后才是确定各个box的类别,当其置信度值不为0时才做出检测结果输出。

** 那么我们有每个object的标注信息,也就是知道每个object的中心点坐标在输入图像的哪个位置,那么不就相当于知道了每个object的中心点坐标属于哪个grid cell了吗,而只要object的中心点坐标落在哪个grid cell中,这个object就由哪个grid cell负责预测,也就是该grid cell包含这个object。另外由于一个grid cell会预测两个bounding box,实际上只有一个bounding box是用来预测属于该grid cell的object的,因为这两个bounding box到底哪个来预测呢?答案是:和该object的ground truth的IOU值最大的bounding box。**

yolov2

yolov2使用聚类方法对图片进行聚类,得到一组代表性的锚框,这就是yolov2的锚框机制

对于YOLOv1,每个cell都预测2个boxes,每个boxes包含5个值:前4个值是边界框位置与大小,最后一个值是置信度(confidence scores,包含两部分:含有物体的概率以及预测框与ground truth的IOU)。但是每个cell只预测一套分类概率值(class predictions,其实是置信度下的条件概率值),供2个boxes共享。YOLOv2使用了anchor boxes之后,每个位置的各个anchor box都单独预测一套分类概率值,这和SSD比较类似(但SSD没有预测置信度,而是把background作为一个类别来处理)。

yolov3

特征提取部分采用darknet-53网络结构代替原来的darknet-19,分类方法使用逻辑回归代替了softmax,在兼顾实时性的同时保证了目标检测的准确性。为了能够预测多尺度的目标,YOLOv3 选择了三种不同shape的Anchors,同时每种Anchors具有三种不同的尺度,一共9种不同大小的Anchors。
image
image
上图中的Multi-Scale多尺度检测----使用上采样+维度拼接
在网络预测的最后某些层进行上采样+维度拼接操作。提高对小目标的检测效果

将yolov2的softmax改成了logistic函数logistic()通过对每个类别都进行二分类,以实现多标签分类。
先使用sigmoid函数将特征图的预测结果约束在[0, 1]之间,若有一个或多个值大于设定阈值,就认定该目标框所对应的目标属于该类别,然后使用logistic进行是/不是的判断。

posted @ 2024-03-11 19:47  sy-  阅读(28)  评论(0编辑  收藏  举报