目标检测——YOLOv3算法解读

news2024/11/17 4:58:43

论文:YOLOv3:An Incremental Improvement
作者:Joseph Redmon, Ali Farhadi
链接:https://arxiv.org/abs/1804.02767
代码:http://pjreddie.com/yolo/

YOLO系列其他文章:

  • YOLOv1通俗易懂版解读
  • SSD算法解读
  • YOLOv2算法解读

文章目录

  • 1、算法概述
  • 2、YOLOv3细节
    • 2.1 Bounding Box Prediction
    • 2.2 Class Prediction
    • 2.3 Predictions Across Scales
    • 2.4 Features Extractor
    • 2.5 Training
  • 3、实验
  • 4、创新点和不足


1、算法概述

YOLOv3在前面YOLOv2的基础上做出重大改进,包括采用新设计的backbone,边界框预测方式和多尺度特征预测等等,总得来说,YOLOv3在吸收之前的检测算法经验对YOLOv2进行改进,直接上图:
在这里插入图片描述
从图中可以看出,YOLOv3-320和SSD在相同输入尺度下,mAP相差不大,但推理速度,YOLOv3-320比SSD快3倍。


2、YOLOv3细节

2.1 Bounding Box Prediction

与YOLOv2一样,网络为每个边界框预测四个坐标tx、ty、tw和th;假如图像左上角格子偏移量为(cx,cy),bounding box prior的宽高为pw,ph,则边界框的坐标可以通过公式计算为:
在这里插入图片描述
回归这四个坐标采用平方和误差(sum of squared error loss)。但是,这一次YOLOv3使用逻辑回归为每个边界框预测一个物体性分数(objectness score)。该分数对于与ground trunth box有最高重叠的锚框(bounding box prior)为1,对于其余锚框为0。与Faster R-CNN不同,YOLOv3仅为每个ground trunth box对象分配一个锚框。如果没有将锚框分配给ground trunth box对象,则该锚框不会对坐标或类预测造成损失,只会对对象(objectness)造成损失。

2.2 Class Prediction

不再用softmax分类了,改为二元交叉熵损失,每个类独立使用logistic分类器;这样做的好处是训练的时候可以引入更复杂的数据集,不再受限制于他们的标签必须是独立互斥的关系。

2.3 Predictions Across Scales

YOLOv3这次结合3个不同尺度的特征图进行预测,每个尺度设置3个anchor boxes,对于在COCO数据集上的实验,NxN大小的特征图输出结果为NxNx[3x(4+1+80)],即每个grid设置3个anchor,每个anchor预测4个bounding box偏置和1个objectness分数以及80个类别分数。
最后的特征图还会经过x2倍上采样与上一个特征融合得到另一个较大尺度的特征图,从而丰富了语义特征;与YOLOv2一样,anchor也做了k-means聚类,得到9个anchor大小,用于设置在3个尺度特征图上。完整YOLOv3网络结构图如下(图片来自”A COMPREHENSIVE REVIEW OF YOLO: FROM YOLOV1 AND BEYOND”)
在这里插入图片描述

2.4 Features Extractor

YOLOv3设计了新的backbone用于提取特征,通过连续的设置3x3和1x1的卷积层,并且带一些跳转连接,总共包含53个卷积层,作者叫它Darknet-53。其结构如下:
在这里插入图片描述
这个新网络比Darknet-19强大很多,而且比ResNet-101或ResNet-152更高效,在ImageNet数据集上的表现为:
在这里插入图片描述
可以看到,Darknet-53骨干网络获得的Top-1和Top-5准确性与ResNet-152相当,但速度几乎快2倍。

2.5 Training

用完整图像进行训练,不带有难度样本挖掘,多尺度训练,数据增强,batch normalization。


3、实验

就COCO测试集上的平均AP指标而言,YOLOv3与SSD变体算法相当,但速度快3倍。过去,YOLO在处理小目标时遇到了困难。然而,现在我们看到了这一趋势的逆转。通过结合多尺度预测,我们看到YOLOv3具有相对较高的APs的性能。但是,它在中型和大型目标对象上的性能相对较差。
在这里插入图片描述


4、创新点和不足

创新点:
1、基于v2的版本做了很多改进,设计了高效的Darknet-53网络,采用了多尺度特征预测,特征融合技术。
不足:
1、小目标方面,由于多尺度的预测有提升,中型目标和大型目标还不是很理想。

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

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

相关文章

pgsql常用索引简写

文章来源:互联网博客文章,后续有时间再来细化整理。 在数据库查询中,合理的使用索引,可以极大提升数据库查询效率,充分利用系统资源。这个随着数据量的增加得到提升,越大越明显,也和业务线有关…

操作系统总结(第二周 第一堂)

前言: 第一周的重点就在于一张图表: 基于这张图,我们将陷入内核分为了两个大块Trap和Interrupt。同时我们知道一件事情任何一次I/O操作或者错误程序操作都将陷入内核,从而使得内核可以监控所有的外部设备以及维护整个电脑程序运行…

PowerPoint 2010

文章目录 一、界面介绍二、选项卡1. 文件选项卡2. 开始选项卡3. 插入选项卡4. 设计选项卡5. 切换选项卡6. 动画选项卡7. 幻灯片放映选项卡8. 视图选项卡9. 效果识别 三、幻灯片操作1.选择幻灯片2.移动(调整幻灯片顺序)和复制3.删除幻灯片 四、幻灯片放映1.按次序放映…

FX110网:1月美国零售货币资金环比上升2.61%,嘉盛环比上升1.86%

美国商品期货交易委员会(CFTC)发布的最新月度报告显示,2024年1月零售货币存款与上月相比上升2.61%。 这份报告涵盖在美国运营的注册零售货币对交易商(RFED)和经纪自营商。包括嘉信理财(CHARLES SCHWAB Futu…

由世界第一个AI软件工程师Devin引发的热潮背后----程序员到底会不会被代替?AI发展至如今是否初衷已变?

目录 一.Devin的登场是突破也是导火索 二.Devin的"逆天"能力 1、端到端构建和部署程序 2、自主查找并修复bug 3、训练和微调自己的AI模型 4、修复开源库 5、成熟的生产库也能做贡献 6、学习能力 三.Devin的出现甚至整个AI领域的进步,编程还有未来吗? 1.业…

PyQt6实战1

创建一个json处理的小工具 功能: 1.json格式化 2.jsonpath提取数据 3.保存文件 main.py from PyQt6.QtGui import QFocusEvent from PyQt6.QtWidgets import * from PyQt6.QtCore import * from PyQt6.QtGui import * import sys import json import time impo…

如何使用vscode创建Node.js服务并结合内网穿透实现远程访问本地服务

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

(学习日记)2024.03.11:UCOSIII第十三节:使用优先级的流程 (持续更新)

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像(C) Baumer工业相机Baumer工业相机定序器功能的技术背景Baumer工业相机通过NEOAPI SDK使用定序器功能预期的相机动作技术限制定序器的工作原理 Baumer工业相机通过NE…

【CSP试题回顾】201712-1-最小差值

CSP-201712-1-最小差值 完整代码 #include<iostream> #include<vector> #include<cmath> using namespace std;int n, minDelta 10005;int main() { cin >> n;vector<int>arr(n);for (int i 0; i < n; i){cin >> arr[i];}for (i…

OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】

package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 基站数量&#xff08;节点数&#xff09;int m sc.nextInt(); // 基站对数量&#xff08;边数&…

26-1 SQL 注入攻击 - delete注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、注入原理: 对于后台来说,delete操作通常是将对应的id传递到后台,然后后台会删除该id对应的数据。 如果后台没有对接收到的 id 参数进行充分的验证和过滤,恶意用户可能会…

应用程序角度来看linux闲余内存

第三行所指的是从应用程序角度来看&#xff0c;对于应用程序来说&#xff0c;buffers/cached 是等于可用的&#xff0c;因为buffer/cached是为了提高文件读取的性能&#xff0c;当应用程序需在用到内存的时候&#xff0c;buffer/cached会很快地被回收。 所以从应用程序的角度来…

让LED安全生产记录显示屏成为员工安全意识的警钟

随着科技的不断发展和进步&#xff0c;LED安全生产记录显示屏作为一种新型的安全生产管理工具&#xff0c;正在逐渐被各行各业广泛应用。在工厂、建筑工地、仓库等各类生产场所&#xff0c;LED安全生产记录显示屏的出现&#xff0c;不仅为管理者提供了实时监控和数据显示的便利…

【智能算法】蜻蜓算法(DA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2016年&#xff0c;Mirjalili受到蜻蜓静态和动态集群行为启发&#xff0c;提出了蜻蜓算法(Dragonfly algorithm, DA)。 2.算法原理 2.1算法思想 蜻蜓集群有两种行为目的&#xff1a;狩猎&#xf…

Oracle Primavera P6 Analytics 是什么,与P6的关系?

前言 Oracle Primavera P6 Analytics 是与P6有关的一个相对较新的模块&#xff0c;Primavera 用户社区在很大程度上尚未对其进行探索。 那么它到底有什么作用呢&#xff1f; 通过了解得知它旨在通过深入了解组织的项目组合绩效&#xff0c;帮助高级管理层对其项目组合做出更好…

[Linux] 进程间通信基础

&#x1f4bb;文章目录 &#x1f4c4;前言进程间通信基础概念 管道概念管道的工作原理模拟实现shell中的管道 共享内存概念接口的介绍共享内存的使用 &#x1f4d3;总结 &#x1f4c4;前言 你是否了解进程间是如何通信的呢&#xff1f;你是否知道管道的工作原理呢&#xff1f;管…

LeetCode142:环形链表

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内…

TSINGSEE青犀智能分析网关V4有限空间作业监护AI算法介绍及应用

在现代工业生产中&#xff0c;有限空间作业是一种常见的生产方式。然而&#xff0c;这种作业环境由于空间有限、出入口较为狭窄、人员操作复杂等因素&#xff0c;往往存在着较高的安全风险&#xff0c;因为自然通风不良&#xff0c;作业人员不能长时间在内工作。为了保障作业人…

linux环境基础开发工具2(gcc/g++ 、 make/ Makefile)

目录 Linux编译器-gcc/g使用 Linux项目自动化构建工具-make/Makefile Linux编译器-gcc/g使用 1. 背景知识 1.2 gcc/g -v 查看当前服务器的编译器版本 1.3 安装gcc / g sudo yum install -y gcc-c 1.4 预处理 -> 编译 -> 汇编 -> 链接 [wxqVM-4-9-centos Test]$ to…