YOLO v3算法详解「建议收藏」

YOLO v3算法详解「建议收藏」论文地址:YOLOv3:AnIncrementalImprovementYOLO算法详解,YOLOv2算法详解1.TheDeal接下来,从头梳理整个网络,如果对YOLO和YOLOv2不熟悉,可以看一下我之前的博客。1.1BoundingBoxPredictionYOLOv3沿用YOLO9000预测boundingbox的方法,通过尺寸聚类确定anchorbox。对每个boundingbox网络预测4个坐标偏移。如果featuremap某一单元偏移图片左上角坐标

大家好,又见面了,我是你们的朋友全栈君。

论文地址:YOLOv3: An Incremental Improvement

YOLO算法详解YOLO v2算法详解

1.The Deal

接下来,从头梳理整个网络,如果对YOLO和YOLO v2不熟悉,可以看一下我之前的博客。

1.1 Bounding Box Prediction

YOLO v3沿用YOLO9000预测bounding box的方法,通过尺寸聚类确定anchor box。对每个bounding box网络预测4个坐标偏移t_x,t_y,t_w,t_h。如果feature map某一单元偏移图片左上角坐标(c_x,c_y),bounding box预选框尺寸为p_w,p_h,即anchor尺寸,那么生成对预测坐标为b_x, b_y, b_w, b_h,此为feature map层级.而g_x,g_y,g_w,g_h为真值在feature map上的映射,通过预测偏移t_x,t_y,t_w,t_h使得b_x, b_y, b_w, b_hg_x,g_y,g_w,g_h一致。宽高回归采用指数的形式,防止出现负值。

YOLO v3算法详解「建议收藏」

YOLO v3算法详解「建议收藏」

 每个bounding box只对应一个目标得分,通过logistic回归计算。目标得分为1的情况:1.某个bounding box与ground truth的重合度比其他bounding box都高;2.某个bounding box与ground truth的重合度不是最大的,但是超过某个阈值(0.5)。

关于正负样本

github链接:GitHub – eriklindernoren/PyTorch-YOLOv3: Minimal PyTorch implementation of YOLOv3

在上面链接所提的YOLOV3实现代码中,定义mask以及conf_mask,其中mask负责bbox正样本,conf_mask负责bbox负样本。过程如下:

1、mask初始化为0,conf_mask初始化为1。

2、计算bbox与gt的IOU,当大于某一阈值时,conf_mask相应位置也会设置为0。

3、对于与gt最佳匹配的bbox,mask与相应位置会设置为1,conf_mask相应位置也会设置为1。

对于mask为1的位置都为正样本,而对于conf_mask-mask为1的位置为负样本。因此gt周围大于阈值的bbox会被无视。

1.2 Class Prediction

YOLO v3中每个bounding box都预测一组类别,与YOLO v2相同,与YOLO不同,YOLO在每个网格预测(2\times5+20)=30个参数。作者没有使用softmax损失。当一个目标仅属于一个类时,softnax比较适合,当某一目标分属于多个类时,需要用逻辑回归对每个类做二分类。

1.3 Predictions Across Scales

YOLO v3中预测3中不同尺寸box,所以在COCO数据集上输出张量为N\times N\times\left [ 3\ast \left ( 4+1+80 \right ) \right ],4表示4个坐标偏移,1表示包含目标得分,80表示数据集含有80个类别。

YOLO v2中通过passthrough层增加细粒度特性。YOLO v3中对前面两层得到的feature map进行上采样2倍,将更之前得到的feature map与经过上采样得到的feature map进行连接,这种方法可以让我们获得上采样层的语义信息以及更之前层的细粒度信息,将合并得到的feature map经过几个卷积层处理最终得到一个之前层两倍大小的张量。下面以YOLO v3网络结构图举例说明,原图在之前博客——深度学习-yolov3网络结构

79个卷积层得到13*13*512特征图,经过84卷积层得到13*13*256特征图,79与84卷积层也就是前面说的前两层,得到的13*13*256特征图进行上采样得到26*26*256特征图,与更之前层,也就是61层得到的26*26*512特征图进行合并,得到26*26*768特征图,再经过几个卷积得到26*26*18张量用于预测,尺寸为前一个预测张量13*13*18的两倍。对于COCO数据集,用于检测的卷积层的卷积核个数是255不是18,3*(4+1+80)=255。

YOLO v3算法详解「建议收藏」

我们再次执行相同的操作,预测新的尺寸,对于COCO数据集,YOLO v3预测输出三个尺寸为:18*18*255,26*26*255,52*52*255,因此在预测52*52*255输出时,受益于所有之前的计算以及网络前期的细粒度特性。

YOLO v2有5个尺寸预选框,YOLO v3有3个尺寸预选框,但是YOLO v3有3个输出检测层,所以YOLO v3的bounding box比YOLO v2还是要多,因为(13*13+26*26+52*52)*3  > 13*13*5。

YOLO v3沿用YOLO v2通过聚类的方法获得bounding box预选框尺寸,3种尺寸9个聚类结果,在coco数据集上9个聚类结果为:

(10*13); (16*30); (33*23); (30*61); (62*45); (59*119); (116*90); (156*198); (373*326)。这应该是按照输入图像的尺寸是416*416计算得到的。

1.4 Feature Extractor

YOLO v3所使用的特征提取的新网络集成了YOLO v2中网络 Darknet-19和新流行的残差网络(ResNet的residual结构)。该网络大量使用3*3与1*1卷积层依次连接的形式,并且添加了shortcut连接,所以其网络结构比复杂,有53个卷积层,因此YOLO v3特征提取网络称作Darknet-53.结构如下图:

YOLO v3算法详解「建议收藏」

Darknet-53只是特征提取层,源码中只使用了pooling层前面的卷积层来提取特征,因此multi-scale的特征融合和预测支路并没有在该网络结构中体现。

表二为Darknet-53与其他几个网络在ImageNet数据集上效果对比。可以看出 Darknet-53与ResNet-152效果差不多,但是速度快2倍。

YOLO v3算法详解「建议收藏」

1.5 Training

训练过程中作者使用多尺寸,数据增强,BN层等常规操作。

2. 实验结果

YOLO v3在COCO数据集上训练结果与其他检测算法比较如表3。原来YOLO v2对于小目标的检测效果是比较差的,通过引入多尺度特征融合的方式,可以看出YOLO v3的APS要比YOLO v2的APS高出不少。

YOLO v3算法详解「建议收藏」

 图三为各个模型在COCO数据集上mAP及速度比较。YOLO v3速度快,准确性高。在coco数据集上,在AP50评估标准上效果不错,但在AP between .5 and .95评估标准上,效果一般。

YOLO v3算法详解「建议收藏」

3. ThingsWe Tried That Didn’t Work

1. 将box宽度与高度与x,y偏移建立线性关系,发现模型不稳定。

2. x,y偏移用线性激活而非logistic激活函数,导致mAP下降。

3.Focal loss,导致mAP下降。

4. 两个IOU阈值设置。 Faster RCNN中,bounding box与ground truth的IOU大于0.7为正样本,小于0.3为负样本。作者使用同样的方法,但是效果并不好。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148669.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos7单节点部署RabbitMQ

    Centos7单节点部署RabbitMQ

    2021年5月30日
    123
  • 初识ABP vNext(9):ABP模块化开发-文件管理

    初识ABP vNext(9):ABP模块化开发-文件管理

    2020年11月20日
    215
  • pg数据库杀进程_centos杀死进程命令

    pg数据库杀进程_centos杀死进程命令SELECTpg_stat_get_backend_pid(s.backendid)ASprocpid,      pg_stat_get_backend_activity(s.backendid)AScurrent_query   FROM(SELECTpg_stat_get_backend_idset()ASbackendid)ASs;  杀掉某个

    2022年9月5日
    11
  • 推荐6款常用的Java开源报表制作工具

    推荐6款常用的Java开源报表制作工具1.JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其他IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出

    2022年8月1日
    0
  • 卡尔曼滤波原理详解及系统模型建立(simulink)

    卡尔曼滤波原理详解及系统模型建立(simulink)卡尔曼滤波原理详解及系统模型建立(simulink)卡尔曼滤波器卡尔曼滤波器是在上个世界五六十年代的时候提出的,到今天已经有六十年左右的时间,但卡尔曼滤波算法不管在控制、制导、导航或者通讯方面对数据的预测能力依然处在一个不可撼动的位置上,但是很多人对于其算法内部的工作原理究竟是怎么运作的依然不理解,所以在工程上很多人都只是把卡尔曼滤波当成是一种“黑箱”预测算法,并不清楚内部原理。但实际上没有任…

    2022年6月16日
    24
  • jlink 与 swd 接口定义

    jlink 与 swd 接口定义1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号