yolo
将输入的图片分割成SxS份,并没有真正的分,只是假想的分,经过若干卷积后使得输出结果是形状为SxSxD的张量,这里SxS中的每个格点对应的管理原始输入图片的每一个网格,一旦物体中心落在某个网格内则对应的格点张量负责对类别、置信度、锚框(偏移)进行预测。
anchor box的作用
为了更好的预测bounding box.
yolov1
yolov1的缺点:
1 位置不准,2 召回率低.
疑问:
1 yolo怎样实现用224x224的图片进行训练,而检测时却可以用448x448的图片?
当yolo的网络结构确定后,输入图片的不同只会导致最终输出的网格格点数不同。
2 损失函数如何用代码实现?
yolo2
论文阅读疑问:
1 如何联合地在用于检测的数据以及用于分类的数据上进行训练的? (Our method leverages labeled detection images to learn to precisely localize objects while it uses classification images to increase its vocabulary and robustness)
2 为什么用了anchor boxes之后,yolov2可以对每张图预测超过1000个boxes
3 yolov2如何多尺度训练的?
3、个人认为yoloV2网络的难点
在训练阶段:经过用mxnet实现yoloV2,发现yoloV2代码实现的难点在于如何从真实label和网络前向传导的结果output tensor计算出用于和output tensor做loss的target tensor. 先细想一下,target tensor的组成部分:class part,score part,box part。所以计算target tensor时就可以分开三部分(三个小目标)。
要得到target tensor
第一步:对batch中的每一个true label,通过计算找到最佳匹配的锚框(anchor box);计算的方法如下:
1、根据label box的四个参数(x,y,w,h)计算出该box在格点量级的位置(所处的格点)。即:论文中的Cx, Cy,(取整得到的),小数部分就是box part中的部分回归目标tx,ty (sigmoid后).-------三个小目标中的box part已经实现一般。
2、anchor box出场,在Cx,Cy处计算出label box 与预设的每个anchor box 的iou,挑选出与label box的iou最大的anchor box作为bounding box的tw与th的回归基准(此处anchor boxs 有严格的顺序要求,anchor box的角标在接下来会被使用到)
第二步:
下面两张图手画了yolov2 output tensor的解析过程以及用来做损失函数的tensor的构造过程
IMG_20180803_151735.jpgIMG_20180803_151751.jpg