关于yolo中遇到的一些问题(持续更新)

1.yolo v3网络结构是怎么样的

关于yolo中遇到的一些问题(持续更新)

2.yolo v3中使用的标签形式究竟是什么(darknet)?

应该是归一化后的数据,这是我在训练yolo v3过程中使用的label的txt文件。
关于yolo中遇到的一些问题(持续更新)

具体的每一个值的计算方式是这样的:假设一个标注的boundingbox的左下角和右上角坐标分别为(x1,y1)(x2,y2),图像的宽和高分别为w,h

归一化的中心点x坐标计算公式:((x2+x1) / 2.0)/ w

归一化的中心点y坐标计算公式:((y2+y1) / 2.0)/ h

归一化的目标框宽度的计算公式: (x2-x1) / w

归一化的目标框高度计算公式:((y2-y1)/ h

3.yolo v2中边框是如何计算的?

       最后输出参数是13*13*125,  是因为一共有13*13个格子,每个格子预测出5个bounding box,每个bounding box预测25个数,其中20个是class的probability,其余5个参数中有四个表示stx、sty、tw、th,这4个来识别边框的位置和大小,还有1个数是confidence,表示边框预测里有真正的对象的概率,所以一共是13*13*125个数。接下来看一下四个参数stx、sty、tw、th,是如何预测框的位置的。faster rcnn在每个位置上产生了9个不同长宽比例的anchor boxes ,这几种比例以及比例的种数作者认为不合理,是手动选出来的,虽然网络最终可以学出来,但如果我们可以给出更好的anchor,那么网络肯定更加容易训练而且效果更好。于是作者灵光一闪,通过K-Means聚类的方式在训练集中聚出了好的anchor模板。经过分析,确定了anchor boxes的个数以及比例。如下图
关于yolo中遇到的一些问题(持续更新)

上图的左边可以看出,有5中类型的长宽比例。后面预测出stx、sty、tw、th,四个参数,再根据上图右边的计算就可以计算出预测出的box大小了,注意!上图右边里面的σ(tx)可以理解为stx,σ(ty)可以理解为sty。每一个输出的bbox是针对于一个特定的anchor,anchor其实是bbox的width及height的一个参考。pw和ph是某个anchor box的宽和高,一个格子的Cx和Cy单位都是1,σ(tx),σ(ty)是相对于某个格子左上角的偏移量。

   这个地方不是很好理解,我举个例子,比如说我预测出了stx、sty、tw、th四个参数分别是0.2,0.1,0.2,0.32,row:1,col:1假如anchor比例取:w:3.19275,h:4.00944,这其中row和col就是锚点相对于整个网格的偏移的格子数,在这个偏移量的基础上计算格子中心位置,

  计算出:

                                                                       bx=0.2+1=1.2

                                                                       by=0.1+1=1.1

                                                                       bw=3.19275*exp(0.2)=3.89963

                                                                       bh=4.00944*exp(0.32)=5.52151

然后分别将这些归一化(同除以13),得:bx=0.09,by=0.08,bw=0.30,bh=0.42.具体是否要输出当前的边框,它的概率,还有生成的物体的类别,这个取决于后面的probability和confidence。