2D视觉检测算法整理

目录

1.ROI pooling 和 ROI align的区别

2.YOLO3-YOLO5模型结构与正负样本分配策略

正负样本分配策略

3.yolov6和yolox

4.sort和deepsort跟踪算法


1.ROI pooling 和 ROI align的区别

 ROI pooling第一步根据候选区域找特征图的位置,可能不是刚好对应,需要一次量化,如上图所示,第二次是特征图需要转化为特定的大小,这时候pooling可能也不能正好整除,所以第二次量化,这两次量化在像素级的任务上会有很大的误差。而align则不会量化,是直接取小数部分,最后每个格子分四块,求一个maxpooling,这四块区域的特征是通过双线性插值得到的。这样就没有量化导致的较大的损失。

2.YOLO3-YOLO5模型结构与正负样本分配策略

 yolov3的网络结构DarkNet53和FPN的结构,多尺度预测,三个不同分辨率的特征图。

 yolov5的输入端:mosaic数据增强,将四张图片随即缩放裁剪排布放在一起。

自适应锚框计算:根据不同数据集自适应的得到锚框的大小。

自适应图片缩放:不同分辨率的图片会变为同样的,进行黑边填充

模型端:

 首先是FOCUS切片操作,降低计算量。

CSPNet结构:降低计算量,丰富梯度传播,将特征channel分为两份,不同的传播下去。

FPN+PAN的neck结构,相当于又将特征图传播上去了。

使用的CIOU-loss,GIOU-loss加上最大外接矩形,DIOU-loss加入中心点距离,CIOU-loss加入长宽比。

正负样本分配策略

yolov3的话是一个GT只有一个正样本,只在一个分辨率特征图上的一个网格里选择一个anchor为正。剩下的IOU小于阈值为负。

yolov4里面把GT先分到一个分辨率特征图里,每一个特征图分别进行正负样本计算,只要IOU大于阈值,就为正样本。

yolov5里面一个GT分给三个特征图,GT落在一个网格里,再找相近的两个网格,一个GT跟27个anchor匹配,只要宽高比小于阈值就为正。

3.yolov6和yolox

yoloX首先对预测头进行了解耦操作。

yolov6相对于v5加入了结构重参数化的结构,也就是RepVGG思想。在head部分对预测头进行了解耦操作,之前的头都是在一个预测分支上,直接出分类,置信度,物体回归,现在解耦之后用三个分支分别来预测这三个东西,互不干扰,有利于提升指标。不过三个头导致网络计算复杂度提高,作者用1*1先降维,再计算,这样加快运算速度,减少模型大小。​​​

 使用anchor-free的head,yolov5使用的基于anchor的方法来预测候选框,而yolox直接在每个位置预测四个参数进行回归,每个GT只分配到一个尺度特征图上,同时只有中心点落到的位置是正样本,这样每个对象只有一个位置来进行预测。这样也加快了推理速度。

如果一个对象只有一个位置预测,会导致正负样本极度不均衡,所以yolox将一个对象附近的样本也作为正样本。减缓正负样本不均衡问题。(借鉴FOCUS中心点采样策略)。

4.sort和deepsort跟踪算法

目标跟踪算法sort,追求快,使用卡尔曼滤波进行目标运动状态估计,使用匈牙利匹配算法进行位置匹配(构建代价矩阵求最小化代价,1-iou)。缺点就是经常出现ID-switch的现象。

deepsort:主要是为了解决sort的ID-switch和遮挡时ID丢失的问题。引入了目标跟踪器的一个网络,也就是ReID的一个模型,将目标检测的候选框输入,然后提取特征,每个特征对应一个ID,把这个特征也融入到匈牙利匹配算法损失矩阵构造中。

对于遮挡丢失ID的问题,引入了级联匹配算法。Tracks分为确认态(confirmed),和不确认态(unconfirmed),新产生的Tracks是不确认态的;不确认态的Tracks必须要和Detections连续匹配一定的次数(默认是3)才可以转化成确认态。确认态的Tracks必须和Detections连续失配一定次数(默认30次),才会被删除。

猜你喜欢

转载自blog.csdn.net/slamer111/article/details/132063367