YOLO v3(学习笔记)

目录

[1.YOLO v3 网络介绍](#1.YOLO v3 网络介绍)

(1)网络结构

(2)输入尺度3种

(3)网络输出

(4)边界框预测

(5)正负样本的划分

2.损失计算

[(1)置信度损失(confidence loss)](#(1)置信度损失(confidence loss))

(2)分类损失

(3)目标定位损失


1.YOLO v3 网络介绍
(1)网络结构
  • 网络叫Darknet-53是因为有53个卷积层,右下角有计算
  • 其中框起来的部分是残差结构,可以看出来整体Darknet-53的网络结构和残差网络区别不大,都是堆叠残差结构,但是Darknet-53中没有最大池化层(max pooling layer),所有的下采样都是通过卷积层(s=2)来实现的
  • 每个Convolutional也是由卷积+BN+激活函数组成;残差结构如图。
(2)输入尺度3种
  • YOLO v3选取了三种预测尺度(三种尺度的输出),每种尺度有对应的3种anchor。
(3)网络输出
  • YOLO v3每个网格生成3个边界框,80个类别,所以最后的输出维度为 N×N×(3×(5+80))
  • 上图是以YOLO v3 416模型进行绘制的,所以输入的尺寸是416x416,预测的三个特征层大小分别是13,26,52。
  • 可以看到,13×13的特征图,先经过第一个Convolutional Set,一个分支是去输出第一个尺度(13×13)的预测结果;另一个分支是通过上采样 ,使宽高扩大两倍变为26×26,并和上面浅层网络26×26的特征图拼接 ,得到的特征图再去进行第二个尺度(26×26)的预测;同样的操作,进行第三个尺度(52×52)的预测
(4)边界框预测
  • 在 YOLO v2 中没有仔细将关于目标边界框预测的东西,这里详细讲一下。
  • 和Faster RNN不同,YOLO v3的边界框预测不是相对于anchor,而是相对于每个网格的左上角的。
  • 如上图,虚线框是anchor,蓝色框是我们最终预测的目标框,cx、cy是当前cell左上角的坐标。我们网络输出的四个参数tx,ty,tw,th,套入公式得到bx,by,bw,bh。
(5)正负样本的划分
  • 每张图片中有几个目标就分配几个正样本。

  • 划分原则:对于每个目标:<1>每个和目标重合程度最大的anchor作为正样本;<2>重合程度不是最大的anchor,但超过了设定阈值的,直接丢弃;<3>其余的作为负样本

  • 上面是原论文中的划分方法,但是这种方法会使得样本数量太少,ultralytics版的划分方法更好一点:

  • ultralytics版中的划分方法是:针对每个目标每个预测特征层,将三个anchor和目标框左上角对齐,然后计算IOU,IOU大于设定阈值的anchor作为正样本(目标框中心落在哪个cell,就作为那个cell的正样本)。

2.损失计算
  • 损失包含三部分:置信度损失,分类损失,定位损失
(1)置信度损失(confidence loss)
  • 目标置信度可以理解为预测目标矩形框内存在目标的概率,目标置信度损失Lconf(o,c) ,其中oi​∈{0,1},表示预测目标边界框i中是否真实存在目标,0表示不存在,1表示存在。c^i表示预测目标矩形框i内是否存在目标的Sigmoid概率(将预测值​ci通过sigmoid函数得到)。
(2)分类损失
  • 目标类别损失Lcla(O,C)同样采用的是二值交叉熵损失(采用二值交叉熵损失的原因是,作者认为同一目标可同时归为多类,比如猫可归为猫类以及动物类,这样能够应对更加复杂的场景),注意论文中作者说了只有正样本才有目标类别损失。其中Oij∈{0,1},表示预测目标边界框i中是否真实存在第j类目标,0表示不存在,1表示存在。C^ij表示网络预测目标边界框i内存在第j类目标的Sigmoid概率(将预测值Cij通过sigmoid函数得到)。
(3)目标定位损失
  • 目标定位损失采用的是(Sum of Squared Error Loss),注意只有正样本才有目标定位损失。( gx, gy , gw , gh ) 分别代表真实目标框中心点的坐标x, y以及宽度和高度(映射在Grid网格中的)。
相关推荐
JHC0000002 小时前
基于Ollama,Milvus构建的建议知识检索系统
人工智能·python·milvus
ZPC82102 小时前
如何创建一个单例类 (Singleton)
开发语言·前端·人工智能
AppOS3 小时前
手把手教你 Openclaw 在 Mac 上本地化部署,保姆级教程!接入飞书打造私人 AI 助手
人工智能·macos·飞书
workflower3 小时前
AI制造-推荐初始步骤
java·开发语言·人工智能·软件工程·制造·需求分析·软件需求
wukangjupingbb3 小时前
解析Computational driven drug discovery: from structure to clinic
人工智能·机器学习
tctasia3 小时前
TCT Asia 2026现场观察:中国增材制造,已经进入“规模化时刻”(上)
大数据·人工智能·制造
AI周红伟3 小时前
AI自动盯盘与定时行情分析:OpenClaw股票辅助Agent集成完整使用指南-周红伟
运维·服务器·人工智能·音视频·火山引擎
Legend NO243 小时前
大模型与知识图谱的协同技术体系
人工智能·自然语言处理·知识图谱
fuquxiaoguang3 小时前
MetaClaw:让AI在对话中悄悄变强,不用GPU也能持续进化
人工智能·metaclaw