目标检测——YOLOv3算法解读

news/2024/7/10 22:55:58 标签: 目标检测, YOLO, 算法

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

YOLO系列其他文章:

文章目录

  • 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倍。


YOLOv3_19">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.niftyadmin.cn/n/5429019.html

相关文章

[数据集][目标检测]零售柜零食检测数据集VOC+YOLO格式5422张113类

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5422 标注数量(xml文件个数):5422 标注数量(txt文件个数):5422 标注…

基于深度学习的人体姿态估计

论文标题:基于深度学习的人体姿态估计综述 基于深度学习的人体姿态估计 论文标题:基于深度学习的人体姿态估计综述目录1. 引言2. 2D人体姿态估计2.1 单人2D姿态估计2.2 多人2D姿态估计 3. 3D人体姿态估计3.1 基于单目RGB图像和视频的3D姿态估计3.2 基于其…

发布组件到npm

1.环境准备&#xff0c;需要装好node&#xff0c;注册号npm账号,这里不做详解 2.创建编写组件和方法的文件夹package 3.在文件夹中创建需要定义的组件&#xff0c;并且加上name属性 //组件 <template><div><button>按钮组件</button></div> &…

【Elasticsearch】windows安装es(elasticsearch)教程及遇到的坑

一、安装参考 1、安装参考&#xff1a;ES的安装使用(windows版) elasticsearch的下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址&#xff1a;https://github.com/medcl/elasticsearch-analysis-ik/releases kibana可视化工具下载…

深入浅出:Objective-C中使用MWFeedParser下载豆瓣RSS

摘要 本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容&#xff0c;同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。 背景 随着信息量的激增&#xff0c;爬虫技术成为了获取和处理大量网络数据的重要手段。Objective-C作为一种成熟的编程…

2024-03-14 Android app runOnUiThread 函数,它的作用是让一个Runnable对象在主线程(UI线程)上运行。

一、看到别人app有这么一个runOnUiThread 函数用法。 二、在Android中&#xff0c;runOnUiThread 是一个非常重要的方法&#xff0c;它的作用是让一个Runnable对象在主线程&#xff08;UI线程&#xff09;上运行。在Android中&#xff0c;主线程是负责更新UI的线程&#xff0c;…

[数据结构]二叉树(上)

目录 一、树 1.树的概念 2.树的相关概念 3.树的表示 4.树的应用 二、二叉树 1.二叉树的概念 2.二叉树的性质 3.特殊的二叉树 4.二叉树的顺序存储 一、树 1.树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具…

ARM 寄存器学习:(一)arm多种模式下得寄存器

ARM 处理器共有 7 种不同的处理器模式&#xff0c;在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式&#xff0c;没有spsr寄存器)状态寄存器&#xff08;cpsr和spsr&#xff09;、程序计数器( PC )。 从上图可以看到&#xf…