当前位置:网站首页>损失函数与正负样本分配:YOLO系列
损失函数与正负样本分配:YOLO系列
2022-07-02 12:04:00 【cartes1us】
目标检测算法最难理解的,设计最复杂的就是正负样本分配和损失函数这块了,这两者将很大程度决定网络的训练效果,因此开帖对yolo系列做一总结,重点也在这两者,吸收他人优秀博客内容,进行整理。

YOLO v1:
2016 CVPR有两个明星,一个是resnet,另一个就是YOLO。
上图是网络输出,注意里面每个格子预测两个Box,即论文中的B设置为2,但只有一组class probabilities,即每个格子只能预测一个物体,两个Box是为了让每个Box。
论文中损失:
同济子豪兄的注释:
- 正负样本分配:某个grid cell的预测结果与gt中所有目标计算IoU,IoU最高的那个物体视为这个grid cell应该去预测的目标,即yolo的每个grid cell只负责预测一个物体,由于只有7*7个grid cell,所以yolo对密集排布的目标预测效果差。
- 损失平衡系数: λ c o o r d \lambda_{coord} λcoord是正样本BBox损失的权重系数,论文中设置为5。而负样本不计算BBox损失,只计算是否存在目标的obj损失,其系数 λ n o o b j \lambda_{noobj} λnoobj设置为0.5,正样本的该损失权重设置为1,正样本的obj损失中标签 C ^ i \hat{C}_i C^i不是1,是目前预测结果与分配到的正样本的IoU,负样本该项为0。
- x,y,w,h:w,h都相对输入尺寸归一化到0,1之间了,x,y是相对该grid cell位置的偏移量,也在0~1范围内。
- 对w,h开根号的原因:我们对BBox预测的评价指标是IoU,但IoU相同时,大框的w、h所求得的损失肯定是比小框要高的开根号可以认为是为了增加sum-squared error (L2 loss)的尺度不变性。
- 对分类也是用L2损失:根据我调研的几个第三方的代码实现,这个 p i ( c ) p_i (c) pi(c)和前式中的 C i C_i Ci也没做过softmax(我没有看到)或sigmoid,网络最后一层是线性层,而 p ^ i ( c ) \hat{p}_i (c) p^i(c)的正样本和负样本标签分别为1和0,这样如果初始化不好,刚开始训练就有可能梯度爆炸吧,不知道我的理解对不。
YOLO v2:
相比v1,在backbone上有更新,加入了BN层,且检测头多了一个passthrough layer的短接,但最后的检测头还是只有一个,并且使用了anchor box机制,因为预测偏移量比直接预测更好学习,锚框的shape和大小是根据k-means聚类得到了5种锚框。论文标题的9000意思是可以使用文中的方法使yolov2实现9000种目标的检测。
BN层:
每个grid cell(网格)可以最多预测5个物体,5代表五种不同的anchor:
预测时的计算方式:
其中的sigmoid函数使得每个cell的预测结果的中心位置都是落在该cell中。
损失函数:
上图是网友根据yolov2的代码整理的损失函数,式子中 b i j k o b_{ijk}^{o} bijko是obj置信度, b i j k r b_{ijk}^{r} bijkr是预测的BBox位置信息,其中 r ∈ ( x , y , w , h ) , b i j k c r\in (x,y,w,h),b_{ijk}^{c} r∈(x,y,w,h),bijkc是预测的框所属类别。 p r i o r k r prior_{k}^{r} priorkr是anchor的位置,因为每个cell中的五个anchor都是一样的,所以下角标只需要知道anchor属于这五个anchor的哪一个信息。 t r u t h r truth^{r} truthr是标注框的位置信息。 t r u t h c truth^{c} truthc是标注框的类别信息。 I O U t r u t h k IOU_{truth}^{k} IOUtruthk是anchor与标注框的IOU。
loss由三部分组成,其中标黄的部分非0即1。
第一部分标黄部分,为负样本惩罚,表示预测框与标注框的IOU如果小于阈值0.6,那视作这个预测框是与负样本匹配了,取值1,反之为0,后面的部分表示标签0与置信度 b i j k o b_{ijk}^{o} bijko的L2损失。这个IoU的计算是只根据大小和形状来计算的,与位置无关,即先将某个grid cell所属的anchor和gt(ground truth)中心位置重合,再计算IoU。
第二部分标黄部分,表示是在12800次迭代前,将anchor与预测框位置误差加入损失,可以使模型能够在前期学会预测anchor位置,使得输出的 t x , t y , t w , t h t^{x},t^{y},t^{w},t^{h} tx,ty,tw,th更稳定;(这一项自己的理解不是很清晰)
第三部分标黄部分,表示预测框是否负责预测物体,该anchor与标注框的IoU最大对应的预测框负责预测物体(IOU>0.6但非最大的预测框忽略不计),其中第一项表示预测框与标注框的定位误差,第二项表示预测框的置信度与标注框和anchor的IoU的误差,表示预测框的所属分类结果与标注框的类别信息的误差,这个预测类别结果我看到的代码都是做了softmax的。
图中还有五个 λ \lambda λ, 表示每一个损失的平衡系数。
YOLO v3:
边栏推荐
- Learn the method code of using PHP to realize the conversion of Gregorian calendar and lunar calendar
- Leetcode - Search 2D matrix
- 数据分析常见的英文缩写(一)
- 21_ Redis_ Analysis of redis cache penetration and avalanche
- Printf function and scanf function in C language
- 4. Data splitting of Flink real-time project
- IE 浏览器正式退休
- FPGA - 7系列 FPGA内部结构之Clocking -03- 时钟管理模块(CMT)
- vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases(sigmod‘2019)
- 19_Redis_宕机后手动配置主机
猜你喜欢
![[untitled] leetcode 2321 Maximum score of concatenated array](/img/a3/54d0e83f02ef0d0d8d269351c35b39.png)
[untitled] leetcode 2321 Maximum score of concatenated array

vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases(sigmod‘2019)

Internet Explorer officially retired

Jenkins Pipeline 应用与实践

Dragonfly low code security tool platform development path

IE 浏览器正式退休

18_ Redis_ Redis master-slave replication & cluster building

08_ strand

03_線性錶_鏈錶

CodeCraft-22 and Codeforces Round #795 (Div. 2)D,E
随机推荐
AtCoder Beginner Contest 254
17_ Redis_ Redis publish subscription
Printf function and scanf function in C language
[untitled] leetcode 2321 Maximum score of concatenated array
TiDB 集群最小部署的拓扑架构
Points clés de l'examen de principe de compilation pour l'année scolaire 2021 - 2022 [Université chinoise d'outre - mer]
MFC CString to char*
Set set you don't know
[noi simulation] Elis (greedy, simulation)
Btrace- (bytecode) dynamic tracking tool
LeetCode_ String_ Simple_ 412.Fizz Buzz
Mavn builds nexus private server
Common English abbreviations for data analysis (I)
YOLOV5 代码复现以及搭载服务器运行
06_ Stack and queue conversion
牛客练习赛101
TiDB 环境与系统配置检查
Map introduction
How to write sensor data into computer database
数据分析思维分析方法和业务知识——业务指标