文章目录
一、yolov4较yolov3的优化点1.1 网络结构层面(1) CSPDarknet53(借用CSP结构)(2) SPP(3) PAN(借用PANet) 1.2 优化策略(1) mosaic 4张不同的图片拼接起来(2) ciou(3) *消除grid网格敏感——预测目标中心点可以取到网格边界/增加正样本的数量* Eliminate grid sensitivity 二、yolox较yolov4的优化点2.1 网络更新--解耦检测头2.2 Anchor-Free机制以及优缺点2.2.1 (附录) Anchor-based机制的优缺点 2.3 *更先进的正负样本匹配策略(simOTA)*步骤 三、focal loss3.1 背景3.2 做法3.3 更细节一、yolov4较yolov3的优化点
/cucwwb/p/13166288.html
总结:
(1)对主干网络进行了修改,将原先的Darknet53改为CSPDarknet53,其中是将激活函数改为Mish激活函数,并且在网络中加入了CSP结构。
(2)对特征提取过程的加强,添加了SPP,PANet结构。
(3)在数据预处理阶段加入Mosaic方法。
(4)在损失函数中做了改进使用了CIOU作为回归Loss。
M i s h ( ) = x × t a n h ( l n ( 1 + e x ) ) Mish() = x×tanh(ln^{(1+e^x)}) Mish()=x×tanh(ln(1+ex))
1.1 网络结构层面
(1) CSPDarknet53(借用CSP结构)
CSP是可以增强CNN学习能力的新型结构,CSPNet将底层的特征映射分为两部分,一部分经过密集块和过渡层,另一部分与传输的特征映射结合到下一阶段。
原文表达的作用:
加快网络的推理速度,减少对显存的使用,并且提升网络的学习能力。
更强的CNN的学习能力;移除计算瓶颈;减小使用的内存;
原文通过通道分割,但实际上不是,代码中是先用卷积下采样,然后分别输入两个conv结构中。
(2) SPP
优点:解决多尺度的问题
分别经过卷积和大小5X5,步距为1,padding为2;卷积和大小9X9,步距为1,padding为4;卷积和大小13X13,步距为1,padding为6;输出都是13X13X2046,和原始的拼接起来,最后的shape为13X13X2046。
附:卷积和的计算公式
o u t p u t = i n p u t − k e r a l + p a d d i n g ∗ 2 s t r i d e + 1 output = \frac{input - keral + padding * 2}{stride} + 1 output=strideinput−keral+padding∗2+1
(3) PAN(借用PANet)
上采样:FPN
上采样+下采样:PAN
特征融合:CONCAT策略,在深度方向进行拼接
1.2 优化策略
(1) mosaic 4张不同的图片拼接起来
(2) ciou
IOU:一般的iou,两个框的交集除以并集
GIOU:= i o u − ( ( A C − U ) / A C ) iou - ((AC-U)/AC) iou−((AC−U)/AC)
其中, AC为两个框的外接矩形的面积,U为两个框的并集的面积
缺点:
当两个框并列时,退化为IOU计算公式;两个框,小框在大框中时,无法衡量两个框的位置关系,基于这一点提出DIOU;
DIOU:= i o u − ( d 2 / c 2 ) iou - (d^2 / c^2) iou−(d2/c2)
其中d为两个框中心点的距离,c为两个框外接矩形的对角线的距离
CIOU:= i o u − ( d 2 / c 2 + a v ) iou - (d^2 / c^2 + av) iou−(d2/c2+av)
考虑到了距离和框的宽高
这也是两者在loss function上的区别:
YOLO V4相较于YOLO V3,只在bounding box regression做了创新,用CIOU代替了MSE,其他两个部分没有做实质改变。
(3)消除grid网格敏感——预测目标中心点可以取到网格边界/增加正样本的数量Eliminate grid sensitivity
回顾yolov3
预测目标边界框的时候,通过1X1卷积层滑动grid cell会针对每个anchor预测回归框参数以及每个类别的score分数,回归参数则为 t x , t y , t w , t h t_x,t_y,t_w,t_h tx,ty,tw,th,公式如下:虚线为anchor,蓝色为gt框。
问题在于sigmoid激活函数在0和1范围内取值,因此如果真实目标的中心点刚好落在grid cell边界上,是无法预测正确的。
yolov4的改进:修改激活函数
二、yolox较yolov4的优化点
网络结构基于yolov5 v5.0构建的
2.1 网络更新–解耦检测头
加速收敛,提升AP,参数不共享;类别一个检测头,位置和objectness共用一个检测头;
需要注意的是,实验效果是跟yolov3进行比较,看结果是能更快的收敛,但网络是从yolov5借鉴的,所以效果就emmm值得商榷,结果如下:
2.2 Anchor-Free机制以及优缺点
anchor-free机制
在每个grid cell来预测四个参数 t x , t y , t w , t h t_x, t_y, t_w, t_h tx,ty,tw,th,这里是相对特征层的,还原到原图需要乘以步距。可以看到跟anchor没关,是个anchor-free的网络。
优点:
使用类似分割的思想来解决目标检测问题;不需要调优与anchor相关的超参数;避免大量计算GT boxes和anchor boxes 之间的IoU,使得训练过程占用内存更低。 缺点:
/news//0413/10766620.html
1.正负样本极端不平衡;
2.语义模糊性(因为主要靠关键点检测,如果两个目标中心点距离太近,更甚重叠,就会造成语义模糊);
现在这两者大多是采用Focus Loss和FPN来缓解的,但并没有真正解决。
2.2.1 (附录) Anchor-based机制的优缺点
优点:
(1)使用anchor机制产生密集的anchor box,使得网络可直接在此基础上进行目标分类及边界框坐标回归;
(2)密集的anchor box可有效提高网络目标召回能力,对于小目标检测来说提升非常明显。
缺点:
(1)anchor机制中,需要设定的超参:尺度(scale)和长宽比( aspect ratio)是比较难设计的。这需要较强的先验知识。
(2)冗余框非常之多,会造成正负样本严重不平衡问题,也是one-stage算法难以赶超two-stage算法的原因之一。
(3)网络实质上是看不见anchor box的,在anchor box的基础上进行边界回归更像是一种在范围比较小时候的强行记忆。
(4)基于anchor box进行目标类别分类时,IOU阈值超参设置也是一个问题。
————————————————
版权声明:本文为CSDN博主「ytusdc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:/ytusdc/article/details/107864527
2.3更先进的正负样本匹配策略(simOTA)
一句话解释:目标时怎样以最低的成本(cost)将GT分配给对应的样本,公式为:
最小化cost可以理解为让网络以最小的学习成本学习到有用的知识。
步骤
(1)预筛选grid cell
根据GT box和fixed center area来选取grid cell
(2)cost具体计算公式
(3)计算得到grid去预测哪个GT代价更小
(3.1) 计算grid与GT的cost矩阵
(3.2) 计算grid与GT的IoU矩阵
(3.3) 在grid与GT的IoU矩阵中计算grid的数量
(3.4)最后根据grid数量取cost矩阵中cost最小的 grid对应的gt框,再得到分配矩阵,1为正样本,0为负样本
(3.5) 如果同一个grid分配给了多个GT框的话,选取cost最小的那个GT。
三、focal loss
3.1 背景
针对one-stage的模型,目的是解决正负样本不均衡的问题。(负样本会有1w-10w,权重小,数量多也会过多关注)
3.2 做法
降低易分样本的loss贡献,让网络专注于学习难分的样本,达到平衡样本的目的,因为负样本数量巨多,就会有很多的易分样本。
3.3 更细节
类别不平衡问题是目标检测任务中常见的问题之一,即在标注数据中,某些类别的样本数量远远大于其他类别的样本数量。这会导致模型对于少数类别的识别能力较弱,易于因为平衡问题导致分类性能下降。Focal Loss正是为了解决这一问题而提出的一种损失函数。
Focal Loss是一种动态平衡损失函数,它主要通过调整难易样本的权重,使得难以分类的样本更受重视,而易分类的样本则更加忽略,从而解决了数据类别不平衡的问题。具体而言,Focal Loss将正常的二元交叉熵损失函数分解为两个部分,分别考虑易分和难分样本的权重:
F L ( p t ) = − ( 1 − p t ) γ log ( p t ) FL(p_t) = -(1-p_t)^\gamma \log(p_t) FL(pt)=−(1−pt)γlog(pt)
其中, p t p_t pt是预测概率, 1 − p t 1-p_t 1−pt是样本权重, γ \gamma γ 是调整因子,用于平衡易分和难分样本的权重。 γ \gamma γ 取值越大,难分样本获得的权重越多,容易分样本的权重越少。
Focal Loss的原理是通过平衡权重,让难分样本在损失函数中所占据的比例变大,从而给予更大的惩罚,在训练中更容易识别这些样本。在实验中,Focal Loss已经被证明可以提高目标检测的性能和准确性,特别是在类别不平衡问题比较严重的数据集中表现更为突出。
参考:
yolo系列:
/ThomasCai001/article/details/123593690?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22123593690%22%2C%22source%22%3A%22ThomasCai001%22%7D
yolov3:/leviopku/article/details/82660381
yolox:/video/BV1JW4y1k76c/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=82b50e78f6d8c4b40bd90af87f9a980b
如果觉得《目标检测之yolo系列模型-yolov4/yolox》对你有帮助,请点赞、收藏,并留下你的观点哦!