首页 > 编程知识 正文

中华v3各种功能使用,华晨中华v3保养灯怎么归零

时间:2023-05-05 02:44:53 阅读:11584 作者:1558

1、输入图像2、将图像送入卷积神经网络进行特征提取---得到特征图(特征图的提取,这里是使用darknet53网络得到特征图) ) ) ) )。

3、操作特征图,输出所需形状(后简单操作特征图,将形状调整为(13*13*255、26*26*255、52*52*255 ) ) ) )

由于这里采用了多个尺度,获得了三个特征图,但实际上与yolov1的一个特征图的目的相同。

这13*13*255本身没有意义,是作者赋予它意义,引导网络,按照作者的意思进行的。

13*13是作者将图像划分为13*13个区域,共有169个网格。 每个网格生成三个边框,这三个边框预测不同的类别。 coco数据集有80种类型,每个窗格有[c、x、y、w、h]五个参数,因此每个网格有[80]*3=255个参数。

4、将标签转换为均匀的形式进行损耗的计算(定制的损耗函数一般也继承到pytorch的类中,为了得到的损耗也进行梯度计算。 这相当于基于框架的一些计算,可以自动求出梯度) )。

4.1---标签形状与网络输出一致,首先确定网络输出的形状。 在网络输出的通道数255中,240是类别,其他三个c是可靠度,有三组(x、y、w、h )。 其实这里可以直接写) x、y、w、h )。 中心点坐标和宽度很高,但是这样没有范围,不方便优化,所以最好使这4个值为0-。 另外一方面,x和y被px和py代替,px、py是该中心点坐标在网格上相对位置,可能的值的范围也是0-1。 所以,此时的(x,y,w,h )被替换为) px,py,w/W,h/H )。 置换后的这四个值的范围都在0-1之间。

上面的做法是yolov1的操作。

yolov3时,对x和y的想法基本相同,即当前网格相对于左上角的偏移值。

但是,w和h改变了想法,引入了锚框架的结构。 相当于锚框的纵横,需要错开多少。 这个偏移量基本上很小,在这里重新说明了,http://www.Sina.com/http://www.Sina.com /锚定框的纵横是已知的,也就是说是人为设定的,所以根据偏移量进行预测

锚箱:实际上,我们对所有样本进行了人为统计,并观察了目标长宽比往往以何种长宽比出现。 将此纵横比设置为图像。 对于每个小网格,都有三个锚定框,锚定框的尺寸因比例特征图而异。 所以,其实有一个点,也就是9个不同尺度的锚框。

4.2---确定标签形状的标签也需要转换为13*13*255的矩阵,其中通道的各个数量的含义对于网络输出中的对应是必要的。

1、初始化全零13*13*255的矩阵。

2、计算真框在哪个网格上(I,j ) ) ) ) ) ) ) ) ) ) )。

3、将真框的(x、y、w、h )转换为(tx、ty、tw、th )

4、将第(I,j )网格的前15个通道设置为(tx,ty,tw,th,1,tx,ty,tw,th ),可靠性设置为1 ),其中tx、ty、tw、th

个锚框的偏移量)

5、将第(i,j)网格的后240个通道设置为(0,0,0,,,1,,,0,0,0)

 

损失函数部分,可以分为3个部分,第一个部分,就是框的坐标误差;第二个部分,就是框的置信度误差;第三个部分,就是框的类别误差。

前提:以图片中只有一个目标为例。

标签中,只有第(i,j)这个网格的位置,通道数的255个数有值,其他的位置都没有数值。

预测图中,所有的网格位置,每个网格的通道数的255个数,都是有值的。

所以,计算损失的时候,不同网格的不同锚框,计算不一样的损失。

正样本的损失计算:​ 对tx ty求均方误差,对tw th求均方误差,对80类分类结果求二类交叉熵误差,对置信度C计算二类交叉熵误差(C期望值=1)。

负样本的损失计算:负样本就是边框和真实值IOU<阈值(背景、负样本)只对置信度C计算二分类交叉熵误差(C期望值=0)

其余既不负责预测物体,且IOU较大的边框不参与loss计算

【负样本<阈值】【正样本>阈值,并且与gt的iou最大,也就是只有一个正样本】【不参与计算>阈值】

loss计算中,“负责预测目标”(即正样本)和背景(即负样本),以及不参与计算loss的部分是怎么选择的:

样本的选择:首先计算目标中心点落在哪个grid上,然后计算这个grid的9个先验框(anchor)和目标真实位置的IOU值(直接计算,不考虑二者的中心位置),取IOU值最大的先验框和目标匹配。于是,找到的 该grid中的 该anchor 负责预测这个目标,其余的网格、anchor都不负责。

样本的选择:计算各个先验框和所有的目标ground truth之间的IOU,如果某先验框和图像中所有物体最大的IOU都小于阈值(一般0.5),那么就认为该先验框不含目标,记作负样本,其置信度应当为0

不参与计算部分:这部分虽然不负责预测对象,但IOU较大,可以认为包含了目标的一部分,不可简单当作负样本,所以这部分不参与误差计算。

 

蓝色框为聚类得到的先验框,黄色框是ground truth,红框是目标中心点所在的网格。

不是很理解的地方:

 如果匹配的最优先验框所在的grid和gt box所在的grid不重合怎么办?既然不重合,那怎么使用sigmoid来预测中心点基于grid的偏移呢?因为我已经看过了一些开源实现,他还是在gtbox所在的grid里面选择一个IOU最大的anchor来作为匹配结果的

在原论文中,确实是使用先验框来训练的,也就是静态指定。静态指定就没有你说的问题了。动态的话,训练其实也是收敛的,中心点偏移只会发生在训练初期,就算照着错误的训练,慢慢的中心点偏移出grid的情况就会渐渐没有。这两种训练方式我都试过,并没有太大区别。关于动态训练的只是我个人见解,不一定正确哈。静态训练的方法肯定是没有问题的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。