目标检测算法YOLOv3简介

news2024/11/23 3:06:34

      YOLOv3由Joseph Redmon等人于2018年提出,论文名为:《YOLOv3: An Incremental Improvement》,论文见:https://arxiv.org/pdf/1804.02767.pdf ,项目网页:https://pjreddie.com/darknet/yolo/ 。YOLOv3是对YOLOv2的改进。

      以下内容主要来自论文:

      1.Bounding Box Prediction:遵循YOLO9000,我们的系统使用维度簇(dimension clusters)作为锚框来预测边界框。网络为每个边界框预测4个坐标:tx、ty、tw、th,如下图所示。在训练过程中,我们使用误差平方和损失(sum of squared error loss)。YOLOv3使用逻辑回归预测每个边界框的目标得分(objectness score)。如果先验边界框(bounding box prior)与真实目标(ground truth object)框的重叠程度超过任何其他先验边界框,则该值应该为1。如果先验边界框不是最好的,但确实与真实目标框重叠超过某个阈值,我们将忽略预测。我们使用0.5的阈值。我们的系统只为每个真实目标分配一个先验边界框。如果先验边界框未分配给真实目标,则不会导致坐标或类别预测损失,只会损失目标性(objectness,描述了某个图像区域是否可能包含一个目标的可能性)。

      2.Class Prediction:每个框使用多标签分类(multilabel classification)来预测边界框可能包含的类别。我们不使用softmax,因为我们发现它对于良好的性能来说是不必要的,而是简单地使用独立的逻辑分类器(logistic classifiers)。在训练过程中,我们使用二元交叉熵损失(binary cross-entropy loss)进行类别预测。多标签方法可以更好地对数据进行建模。

      3.Predictions Across Scales: YOLOv3预测3个不同尺度的框。我们的系统使用与特征金字塔网络(feature pyramid networks)类似的概念从这些尺度中提取特征。从我们的基本特征提取器中,我们添加了几个卷积层。最后一个预测3-d张量编码边界框、目标性和类别预测。在我们使用COCO的实验中,我们在每个尺度上预测 3个框,因此对于4个边界框偏移(bounding box offsets)、1个对象性预测和80个类别预测,张量为N*N*[3∗(4+1+80)]。接下来,我们从前2层获取特征图(feature map),并将其上采样2倍。我们还从网络的早期获取特征图,并使用串联(concatenation)将其与我们的上采样特征合并。这种方法使我们能够从上采样的特征中获得更有意义的语义信息(semantic information),并从早期的特征图中获得更细粒度(finer-grained)的信息。然后,我们添加更多的卷积层来处理这个组合特征图,并最终预测一个类似的张量(tensor),尽管现在大小是原来的两倍。我们再次执行相同的设计来预测最终尺度的框。因此,我们对第三个尺度的预测受益于所有先前的计算以及网络早期的细粒度特征(finegrained features)。我们仍然使用k均值聚类来确定边界框先验。我们只是任意选择9个簇(clusters)和3个尺度,然后在尺度上均匀地划分簇。在COCO数据集上,9个簇是:(10*13), (16*30), (33*23), (30*61), (62*45), (59*119), (116*90), (156*198), (373*326)。

      4.Feature Extractor:我们使用新的网络来执行特征提取。我们的新网络是YOLOv2、Darknet-19中使用的网络和新奇的残差网络(residual network)之间的混合方法。我们的网络使用连续的3*3和1*1卷积层,但现在也有一些快捷连接(shortcut  connections),并且尺寸明显更大。它有53个卷积层,所以我们称之为Darknet-53,如下图所示:

      过去,YOLO在处理小目标时遇到了困难。然而,现在我们看到这种趋势发生了逆转。通过新的多尺度预测,我们看到YOLOv3具有相对较高的AP性能。然而,它在中等和较大尺寸目标上的性能相对较差

      Things We Tried That Didn't Work:在开发YOLOv3时,我们尝试了很多东西。很多都没有效果。这是我们可以记住的东西。

      1.锚框x,y偏移预测:我们尝试使用普通的锚框预测机制,你可以使用线性激活(linear activation)将x,y偏移量预测为框宽度或高度的倍数。我们发现这种公式降低了模型稳定性并且效果不佳。

      2.线性x,y预测而不是逻辑预测:我们尝试使用线性激活来直接预测x,y偏移,而不是逻辑激活。这导致mAP下降了几个点。

      3.焦点损失(focal loss):我们尝试使用焦点损失。它使我们的mAP下降了约2点。YOLOv3可能已经对焦点损失试图解决的问题具有鲁棒性(robust),因为它具有单独的对象性预测(objectness predictions)和条件类别预测。因此,对于大多数例子来说,类别预测没有损失?或者其他的东西?我们并不完全确定。

      4.双IOU阈值和真值分配:Faster RCNN在训练期间使用两个IOU阈值。如果预测与真实情况重叠0.7,则为正例;如果预测与真实值重叠[.3−.7],则会被忽略;对于所有真实值目标,如果预测与真实值重叠小于0.3,则为负例。

      我们非常喜欢我们当前的表述(formulation),它似乎至少处于局部最优。其中一些技术可能最终会产生良好的结果,也许它们只需要一些调整来稳定训练。

      YOLOv3是一个很好的检测器。它很快,而且很准确。在0.5到0.95 IOU指标之间的COCO平均AP上,它并不那么好。但它在0.5 IOU的旧检测指标上非常好。

      YOLOv3配置文件:https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg

      GitHub:https://github.com/fengbingchun/NN_Test

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1638918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我独自升级崛起怎么注册?新手一看就会的注册方法

《我独自升级:ARISE》是网石旗下一款以网漫《我独自升级》IP开发的ARPG,游戏中,玩家会成为漫画主角程肖宇进行战斗,并通过升级使用更多技能和武器,打造出属于自己的战斗风格。同时,游戏中还将体现原作的核心…

2.1 Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-初识Vue

Vue概述 早期前后端分离模式 早期的前后端分离开发模式是这样的&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…

blender(布兰德)下载安装-windows系统安装

1.简单介绍 这些介绍都是一些百科或官网提供的内容&#xff0c;直接搜索对应的信息后即可看到。Blender&#xff08;布兰德&#xff09;是一款永久开源免费的3D创建套件。支持整个3D创作流程&#xff1a;建模、雕刻、骨骼装配、动画、模拟、实时渲染、合成和运动跟踪&#xff…

基于Spring Boot的校园闲置物品交易网站设计与实现

基于Spring Boot的校园闲置物品交易网站设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看…

Java线上CPU内存冲高问题排查步骤

01 引言 作为一名从事Java开发快一年的程序员&#xff0c;在线上经常碰到某个模块的Pod发出CPU与内存告警的问题&#xff0c;而这些问题会导致系统响应缓慢甚至是服务不可用。一般情况下可以通过重启或者调高Pod的资源量或者增加Pod数量暂时解决问题&#xff0c;但这是治标不治…

【C++】拷贝复制:拷贝构造函数的使用

欢迎来到CILMY23的博客 本篇主题为&#xff1a;拷贝复制&#xff1a;拷贝构造函数的使用 博客主页&#xff1a;CILMY23-CSDN博客 个人专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 写在前头…

RCE学习(一)

一.知识点 RCE&#xff1a;远程命令/代码执行漏洞&#xff0c;简称为RCE漏洞&#xff0c;可以直接向服务器后台远程注入操作系统的命令或者代码&#xff0c;从而拿到服务器后台的权限。RCE分为远程执行命令&#xff08;执行ping命令&#xff09;和远程代码执行eval 简单来说就…

【数据结构】时间复杂度和空间复杂度解析

数据结构前言&#xff1a; 1. 什么是数据结构 打个比方来说不同的数据就相当于不同的书籍&#xff0c;我们经常在图书馆可以看到不同类别的书籍会被整理放在书架上方便查看存放&#xff0c;数据结构就是一种计算机存储管理数据的方式。 2. 什么是算法 算法就是一系列的计算…

蓝桥杯练习系统(算法训练)ALGO-953 混合积

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 众所周知&#xff0c;人人都在学习线性代数&#xff0c;既然都学过&#xff0c;那么解决本题应该很方便。   宇宙大战中&…

上位机图像处理和嵌入式模块部署(树莓派4b和pyqt5界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在大部分linux程序开发中&#xff0c;一般是没有界面的。不过不排除有些场合&#xff0c;是需要用界面进行数据交互、调参使用的。这种情况下一般就…

JavaScript+B/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能?医院云LIS检验系统源码

JavaScriptB/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能&#xff1f;医院云LIS检验系统源码 实验室信息管理系统&#xff08;Trasen Laboratory Information Management System&#xff09;是一套专业的医疗实验室信息管理软件&#xff0c;包含…

远程链接linux

远程连接 ssh 远程登录操作&#xff0c;ssh会对用用户进行身份信息的验证&#xff0c;会对两台主机之间发通信数据进行加密 安装 ssh 远程登录的服务端 yum install -y openssh-server启动 ssh 服务 systemctl start ssh.service 关闭 ssh 服务 systemctl stop ssh.service …

伦敦金的交易时间段都适合投资吗?

是所有的交易时间段都适合投资。首先&#xff0c;让我们了解伦敦金的交易时间。伦敦金市场的交易时间分为两个主要时段&#xff1a;亚洲盘和欧美盘。亚洲盘通常在北京时间早晨6点至下午5点半左右&#xff0c;而欧美盘则从北京时间晚上8点半开始&#xff0c;一直到次日早晨4点半…

tomcat篇-windows 运行tomcat的startup.bat时,终端打印的中文显示为乱码

当运行Tomcat的startup.bat时&#xff0c;如果终端中中文显示为乱码&#xff0c;这通常是因为Tomcat使用的日志输出编码与Windows命令行默认的编码不匹配。针对这一问题&#xff0c;你可以尝试以下步骤来解决&#xff1a; 1、执行startup.bat&#xff0c;在输出的窗口右击&…

HCIP第二节

OSPF&#xff1a;开放式最短路径协议&#xff08;属于IGP-内部网关路由协议&#xff09; 一。OSPF的数据包类型 3层报头 协议号89 1.Hello&#xff1a;周期收发&#xff0c;用于邻居发现&#xff0c;关系建立&#xff0c;周期保活-10s/30s&#xff08;路由之间相互认识&#…

如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库&#xff0c;是在本地搭建NPM私有仓库&#xff0c;对公司级别的组件库进行管理。在日常开发中&#xff0c;经常会遇到抽象公共组件的场景&#xff0c;在项目内部进行公用。新的项目开始时&#xff0c;也会拷贝一份创建一个新的项目&#xff0c;这样做不易于管理…

Day23.一刷数据结构算法(C语言版) 39组合总和;40组合总和II;131分割回文串

一、39组合总和 本题是集合里元素可以用无数次&#xff0c;那么和组合问题的差别&#xff0c;其实仅在于对startIndex上的控制 题目链接&#xff1a;组合总和 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法-组合总和 &#xff08;39.组合总和&#xff…

react核心知识

1. 对 React 的理解、特性 React 是靠数据驱动视图改变的一种框架&#xff0c;它的核心驱动方法就是用其提供的 setState 方法设置 state 中的数据从而驱动存放在内存中的虚拟 DOM 树的更新 更新方法就是通过 React 的 Diff 算法比较旧虚拟 DOM 树和新虚拟 DOM 树之间的 Chan…

界面组件DevExpress Blazor UI v23.2 - 网格、工具栏功能全新升级

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

创新指南|如何通过用户研究打造更好的人工智能产品

每个人都对人工智能感到兴奋&#xff0c;但对错过机会 (FOMO) 的恐惧正在驱使公司将人工智能嵌入到每个产品功能中。这可能会导致以技术为中心的方法&#xff0c;从而掩盖产品开发的基本目标&#xff1a;创建真正解决用户问题并满足他们需求的解决方案。本文将介绍通过用户研究…