本文主要介绍了YOLOV3的网络结构损失函数,其他部分几乎与YOLOV2相差无几。

YOLOV3算法Pytorch实现:https://github.com/codecat0/CV/tree/main/Object_Detection/YOLOV3

1. Introduction

2. The Deal

2.1 Bounding Box Prediction

在YOLOV2后,我们的系统开始使用聚类来确定anchor的尺寸和比例。网络会为每一个bounding box预测4个坐标:tx,ty,tw,tht_x,t_y,t_w,t_htx​,ty​,tw​,th​。如果网格单元相对于图像的左上角的偏移为哦(cx,cy)(c_x,c_y)(cx​,cy​),而且anchor的宽高为pw,php_w,p_hpw​,ph​,那么对应的预测值为:
bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=phethb_x=\sigma(t_x)+c_x \\ b_y=\sigma(t_y)+c_y \\ b_w=p_we^{t_w} \\ b_h=p_he^{t_h}bx​=σ(tx​)+cx​by​=σ(ty​)+cy​bw​=pw​etw​bh​=ph​eth​

在训练期间,我们采用均方误差作为损失函数。anchor的坐标信息:(cx,cy,pw,ph)(c^x,c^y,p^w,p^h)(cx,cy,pw,ph),预测框的坐标信息:(bx,by,bw,bh)(b^x,b^y,b^w,b^h)(bx,by,bw,bh),真实框的坐标信息:(gx,gy,gw,gh)(g^x,g^y,g^w,g^h)(gx,gy,gw,gh),lll表示预测框与anchor的偏移量,ggg表示真实框与anchor的偏移量。那么损失函数定义如下:
Lloc=∑i∈pos∑m∈{x,y,w,h}(lim−gim)2lix=bix−cix,liy=biy−ciyliw=log(biw/piw),lih=log(bih/pih)gix=gix−cix,giy=giy−ciygiw=log(giw/piw),gih=log(gih/pih)L_{loc}=\sum_{i \in pos}\sum_{m \in \{x,y,w,h\}}(l_i^m - g_i^m)^2 \\ l_i^x = b_i^x - c_i^x, \quad l_i^y = b_i^y - c_i^y \\ l_i^w = log(b_i^w / p_i^w), \quad l_i^h=log(b_i^h / p_i^h) \\ g_i^x = g_i^x - c_i^x, \quad g_i^y = g_i^y - c_i^y \\ g_i^w = log(g_i^w / p_i^w), \quad g_i^h=log(g_i^h / p_i^h)Lloc​=i∈pos∑​m∈{x,y,w,h}∑​(lim​−gim​)2lix​=bix​−cix​,liy​=biy​−ciy​liw​=log(biw​/piw​),lih​=log(bih​/pih​)gix​=gix​−cix​,giy​=giy​−ciy​giw​=log(giw​/piw​),gih​=log(gih​/pih​)

上式中w、h的均方损失可以对其取平方根与YOLOV1一样,达到对小目标增加权重的效果,毕竟小目标偏移一点相对于大目标偏移一点误差应该更大才对

YOLOV3用逻辑回归预测每一个预测框的置信度,即预测框内是否存在目标的概率。我们为每一个GT box分配一个anchor,如果一个anchor没有被分配给相应GT box,那么该anchor没有目标定位损失和目标类别损失,只有置信度损失(如果一个未分配GT box的anchor与其他GT box的IOU值超出某一个阈值,我们会忽视它,这个阈值为0.5)。oi∈{0,1}o_i \in \{0,1\}oi​∈{0,1}表示预测框iii中是否真实存在目标,c^i\hat c_ic^i​表示预测框iii内存在目标的SigmoidSigmoidSigmoid概率,其置信度损失如下所示:
Lconf(o,c)=−∑(oiln(c^i)+(1−oi)ln(1−c^i))c^i=Sigmod(ci)L_{conf}(o,c)=-\sum(o_iln(\hat c_i)+(1-o_i)ln(1-\hat c_i)) \\ \hat c_i = Sigmod(c_i)Lconf​(o,c)=−∑(oi​ln(c^i​)+(1−oi​)ln(1−c^i​))c^i​=Sigmod(ci​)

2.2 Class Prediction

类别预测方面主要是将原来的单标签分类改进为多标签分类,因此网络结构上就将原来用于单标签多分类的 softmax 层换成用于多标签多分类的逻辑回归层。

首先说明一下为什么要做这样的修改,原来分类网络中的 softmax 层都是假设一张图或一个 object只属于一个类别,但是在一些复杂场景下,一个 object 可能属于多个类,比如有的类别中有woman和 person 两个类,这就是多标签分类,需要用逻辑回归层来对每个类别做二分类。逻辑回归层主要用到 Sigmoid函数,该函数可以将输入约束在0~1的范围内,因此当一张图片经过特征提取后的某一类输出经过Sigmoid 函数约束后如果大于 0.5就表示属于该类

对于类别损失,我们使用二值交叉熵损失函数。其中Oij∈{0,1}O_{ij} \in \{0,1\}Oij​∈{0,1}表示预测框iii是否真实存在第jjj类目标,C^ij\hat C_{ij}C^ij​表示预测框iii存在第jjj类目标的SigmoidSigmoidSigmoid概率
Lcls(O,C)=−∑i∈pos∑j∈cls(Oijln(C^ij)+(1−Oij)ln(1−C^ij))C^ij=Sigmoid(Cij)L_{cls}(O,C)=-\sum_{i \in pos} \sum_{j \in cls}(O_{ij}ln(\hat C_{ij}) + (1 - O_{ij})ln(1-\hat C_{ij})) \\ \hat C_{ij} = Sigmoid(C_{ij})Lcls​(O,C)=−i∈pos∑​j∈cls∑​(Oij​ln(C^ij​)+(1−Oij​)ln(1−C^ij​))C^ij​=Sigmoid(Cij​)

2.3 Predictions Across Scales

YOLOV3采用了类似FPN网络提取了3个不同尺度的特征,与FPN不同的是在进行不同尺度特征融合时不是像FPN采用相加而是采用concatenate拼接,最后融合了3个scale,分别是13x13、26x26和52x52,并在这3个scale的特征图进行检测。下文会有详细的网络结构图

和YOLOV2一样,YOLOV3使用的聚类方法还是K-Means,它能用来确定边界框的先验。在实验中,我们选择了9个聚类和3个尺寸,然后在不同尺寸的边界框上均匀分割维度聚类。在COCO数据集上,这9个聚类分别是:(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116 × 90)、(156 × 198)、(373 × 326)。

2.4 Feature Extractor

我们使用一个新的网络来提取特征,它融合了YOLOV2,Darknet-19以及其他新型残差网络,由连续的3x3和1x1卷积层组合而成,当然,其中也添加了一些shortcut connection,因为一共有53个卷积层,所以我们称它 Darknet-53。

这个新网络性能上远超DarkNet-19,准确性与ResNet-101和ResNet-152差不多,但效率更高。

3. YOLOV3网络结构

YOLOV3论文详解相关推荐

  1. 目标检测YOLOv3论文详解

    第二节 YOLOv3 2.1 YOLOv3简介 YOLO系列的目标检测算法可以说是目标检测史上的宏篇巨作,YOLOv3是YOLO (You Only Look Once)系列目标检测算法中的第三版,v ...

  2. Keras YOLOv3代码详解(三):目标检测的流程图和源代码+中文注释

    Keras YOLOv3源代码下载地址:https://github.com/qqwweee/keras-yolo3 YOLOv3论文地址:https://pjreddie.com/media/fil ...

  3. 智能城市dqn算法交通信号灯调度_博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型...

    原标题:博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型 国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共 ...

  4. Fast R-CNN论文详解

    Fast R-CNN论文详解 作者:ture_dream &创新点 规避R-CNN中冗余的特征提取操作,只对整张图像全区域进行一次特征提取: 用RoI pooling层取代最后一层max po ...

  5. 限时9.9元 | 快速领取数学建模竞赛备战必备技巧与论文详解!

    全世界只有3.14 % 的人关注了 青少年数学之旅 大家晚上好,随着美赛时间的公布以及大大小小的数学建模竞赛的进行,小天经常可以收到来自很多小伙伴们提出的问题,"竞赛中如何去考虑选题?&qu ...

  6. transfromer-XL论文详解

    transfromer-XL论文详解 – 潘登同学的NLP笔记 文章目录 transfromer-XL论文详解 -- 潘登同学的NLP笔记 Vanilla Transformer Segment-Le ...

  7. KernelGAN论文详解分享

    KernelGAN- Blind Super-Resolution Kernel Estimation using an Internal-GAN论文详解 论文地址:https://arxiv.org ...

  8. yolov3代码详解(七)

    Pytorch | yolov3代码详解七 test.py test.py from __future__ import divisionfrom models import * from utils ...

  9. ShuffleNetv2论文详解

    ShuffleNet v2 论文详解 近期在研究轻量级 backbone 网络,我们所熟悉和工业界能部署的网络有 MobileNet V2.ShuffleNet V2.RepVGG 等,本篇博客是对 ...

最新文章

  1. tomcat 日志分割脚本
  2. Django静态文件配置
  3. Android 使用 ActivityResult 处理 Activity 之间的数据通信及调起拍照实例
  4. C++继承中的普通函数,纯虚函数、虚函数
  5. 剑指offer--二维数组的查找
  6. html怎么设置字体竖直,CSS3 writing-mode 控制字体竖直显示
  7. c++ 获得linux进程内存大小,C/C++获取进程常驻内存大小(get the process resident set size )...
  8. macos 管理员权限 黑苹果_Mac OS X 黑苹果系统安装驱动Kext方法
  9. 对于PHP面试知识点的小结
  10. 陈国君Java程序设计基础笔记和习题
  11. FreeRTOS 教程指南 学习笔记 第三章 任务管理(二)
  12. 微信接口请求次数_微信接口调用次数限制 支付宝微信提现
  13. python画圆及其内接多边形_用Shapely求多边形的最大内接矩形
  14. Linux服务端rpm包安装Jenkins
  15. 核磁共振谱仪定义、发展及基本原理
  16. 【Golang】Go 语言 XML 的序列与反序列化实践
  17. NISP证书换取CISP证书需要哪些条件?
  18. 图卷积神经网络4-空域卷积:空域卷积局限性分析和过平滑解决方案
  19. 机器学习笔记--PR曲线和ROC曲线
  20. java.sql.SQLException: 批处理中出现错误: batch must be either executed or cleared

热门文章

  1. mac怎么更新python_mac上更新python的方法
  2. Linux知识点概要之课堂总结
  3. Pointnet++中tf_ops三个.so文件的生成
  4. Qt实战(二)——方块游戏
  5. Unreal4+Qt+Plugins(unrealcv)安装教程
  6. pythontrun什么意思_python 新手笔记一
  7. 解决问题就像剥洋葱,解决的关键是基础知识
  8. 2021年度济南职工医保门统定点医疗机构名单
  9. 电视墙解码服务器不在线,超高清电视墙服务器
  10. 基于ibeacons三点定位(微信小程序)