关于yolo中anchor的理解

关于anchor的理解:

写在前面:

本文只针对anchor的位置和大小进行分析,并不涉及confidece及class。希望通过这个文章给初学yolo的人一点小小的帮助,能更好的理解anchor的思想

anchor box: 锚框,先验框
anchor box 的属性为:中心坐标Cx,Cy;长宽属性pw,ph
iou: 交并比
cell: yolo中将目标图像分割为不同大小的区域如1313,在1313的区域大小中,我们将这169个区域称为cell

正文:

在yolov2以后,yolo框架使用anchor技术对目标进行识别,通过聚类训练将不同的样本中的框分类出固定大小的几类anchor box。
在进行训练时,yolo通过样本的真实框的大小与不同anchor box进行iou运算,选择iou最大的一个先验框。先验框的大小位置是固定的(先验框的Cx,Cy为cell的左上角坐标),在进行回归时,我们并不对目标的真实坐标x,y进行预测,而是预测目标中心点相对于其所在的cell的左上角(也就是先验框的中心点)的偏移量(tx,ty),也就是按照其选择的先验框的绝对位置加上偏移量计算位置信息。(tx,ty)利于激活函数对预测的数值进行处理再与其cell左上角的坐标相加得到预测的绝对坐标bx,by。
公式为
bx = σ(tx) + Cx
by = σ(ty) + Cy
我们利用bx和by与样本标准的真实坐标x,y进行损失函数计算和反向传播,便可学习出相对准确的偏移量(tx,ty)。解决了anchor位置的问题,我们也可以通过类似的思想解决预测框的长宽大小问题。在yolo中我们也是通过预测其相对anchor的相对大小来计算预测框的真实大小,参数为(tw,th)。在这里我们利用指数函数的特性,使用e为底使用对tw,th进行激活,利用激活值与先验框的长宽进行乘法运算得出预测框的长宽bw,bh。
公式为:
bw = pwe^tw
bh = ph
e^th
这样通过预测中间变量计算中心坐标和宽高的真实值,能够将需要直接预测的参数值(tx,ty,tw,th)维持在一个较小的范围,利于模型的学习精度和梯度传播速度。
根据我对于yolo3框架源代码的阅读得知,作者在进行损失函数计算时,将真实框的标签数据根据box,by,be,bh的公式进行反函数的计算,计算出真实标签(true-label)相对于先验框的左标长宽数据,然后与预测值的tx,ty,tw,th计算损失。

你可能感兴趣的:(笔记,深度学习,图像识别)