yolo思想总结

一、总览

YOLO 把物体检测任务作为一个回归任务,一个回归任务应该有输入,输出,损失函数三要素。
1.输入:448×448的图片
2.输出:Bbox的位置坐标,confidence,以及class类别
3.损失函数:Loss(位置)+Loss(分类)+Loss(IOU)

二、细节

1.网络细节(如图)
24conv+2fcl
在这里插入图片描述
2.train
图片划分为S×S个grid,每个grid检测出B个Bbox,C个类别的概率。每个Bbox包含5个信息:x,y,w,h,confidence,这里有必要说一下confidence,它等于Pr(object)*IOU,Pr(object)代表着如果grid里面存在物体的时候值为1,不存在值为0,IOU表示检测物体与标注GT的重合率
损失函数(如下图):
在这里插入图片描述注:x,y,w,C,p为网络预测值,x,y,w,C,p帽 为标注值。\Pi _{i}^{obj} 表示物体落入格子i中,\Pi _{ij}^{obj} 和\Pi _{ij}^{noobj} 分别表示物体落入与未落入格子i的第j个bounding box内。
3.预测
结果为:S×S×(C+B×5)的Tensor
根据阈值和NMS筛选准确的检测结果

三、trick

1.grid里面有无物体对损失函数的影响应该是不同的,所以在计算损失函数的时候给予不同的权重,存在object的权重较高,不存在object的权重较低
2.为防止过拟合,加入dropout layer,以及相关的数据增强
3.learning rate 的调整是根据epoch的次数决定的,不同的epoch阶段,learning rate调整为不同的数值。
4.penalizes(惩罚):loss计算的时候,只有grid里面存在object的才会对classification进行惩罚,只有gird负责检测某一物体的时候,也就是说物体的中心落入某一grid的时候才会对这个grid进行惩罚,增加grid存在物体对loss的作用。
5.预测出来w,h的平方根,而不是直接预测出结果,目的是为了解决大一点的box与小一点的box之间的误差。

猜你喜欢

转载自blog.csdn.net/weixin_43310928/article/details/84025699