当前位置:   article > 正文

yolov3原理学习_yolo3学习

yolo3学习

1、主要来源:

yolov3网络硬核讲解!全网独一份!!!【看不懂来打我!!!】_哔哩哔哩_bilibili

里面提到了从目标分类到目标检测的思路。

在目标分类中预测值和目标值对应关系明确,目标是2×1,则预测值就为2×1一一对应,这样的话在利用损失函数梯度回传去调整神经网络参数,就可以得到与目标值最接近的预测结果。

而在目标检测任务中,无法确定目标数量,而神经网络一定是要先固定网络输入输出维度。

例如:一个人的参数是5×1(x,y,w,h,class),则输入输出均为5×1的时候是可以实现的。但是如果突然出现了两个人,则需要2×5×1,此时神经网络做不到自动调整成2×5×1,所以目标分类中这种明确的一一对应关系难以解决目标检测任务的要求。

2、解决思路是:

预测20×5×1,其中20为图中出现目标最大数,也就是在图里人数最多20个的时候这样预测,要是最多有100个人则为100×5×1。

目前视频的思路是:如果最多4个目标,我分2×2,然后假如1个目标落在右下角,那就让原本目标的1×5×1编码成1×5×2×2,就是其它3个格子输出0呗,这样就实现了预测和目标的维度统一。

但是按照视频的思路有两个问题:

1、2×2是按照最多4个目标吗?如果按这个思路,那假如我最多96个目标,那我应该弄10×10

2、如果两个目标的中心点同时在一个格子内呢? 实际上我看yolo算法里,是格子中也存在着一个最大预测数,大致思路就是物体中心点落在哪个格子就由哪个格子负责,然后一个格子最多预测例如2个bounding box。这样如果7×7的格子数理论上最多可以预测7×7×2个目标。如果物体类别有20种,那最后输出的数据为7×7×(5×2+20)

3、深度学习的关键

up主给出的观点是:明白真实值如何编码

这样就能让他们一一对应,然后挨个损失函数计算传回等等。

 回归值在0-1相对来说计算量比较小。

所以x,y在确定第几个格子之后,就可以直接回归至0-1,这样就能大大减少工作量。而w,h也想让它从无范围限制回归到这种0-1回归,用的就是锚框。

锚框以一个格子左上角为中心点,有多种锚框,正方形长方形

思路就是让锚框和真实框去做一个交并比,交并比越大说明该锚框与目标框最为接近。

 这里设置一个阈值,如果交并比大于阈值,就视作该锚比较接近目标框(被称作先验框),然后再在这个锚框的基础上进行回归。用kmeans来得到w,h。此时回归的是比值。

 e是保证非负。

 加入锚框以后输出为3×7×7×(5×2+20),其中3为锚框种类。

4、小目标解决方案

yolo除了输出13×13×(5+80)×3以外,还一种26×26×(5+80)×3,甚至52×52,这就相当于把一个大格子又细分成2×2或者4×4来适应小目标的要求。

5、看程序

先看懂yolo的输入输出数据对应的是什么。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/584954
推荐阅读
相关标签
  

闽ICP备14008679号