YOLO系列论文阅读(v1--v3)

搞目标检测,绕不开的一个框架就是yolo,而且更糟糕的是,随着yolo的发展迭代,yolo网络可以做的事越来越多,语义分割,关键点检测,3D目标检测。。。这几天决定把YOLO系列彻底梳理一下,在进入大模型时代前,我们欣赏一下这个CNN时代最具影响力的作品。

前YOLO时代

在YOLO出现之前,目标检测已经大部迈向了CNN时代。从RCNN到FastRCNN, 再到FasterRCNN。可以看到,模型的速度越来越快,网络结构越来越简洁,启发式的方法论在一步步被抛弃。

但是,基于RCNN的方法需要预先通过region proposal network选择锚框,在保证了精度的同时,也大大耽误了速度。显然,目标检测的发展遇到了瓶颈。此时,YOLO,SSD等one stage方法孕育而生。

而经过多年的发展,YOLO系列在保持自己原来的快速的特点的基础上,在性能上也逐步提升,成为了目标检测在工业上落地的最优选择。

YOLO论文 

YOLO1

论文题目:You Only Look Once: Unified, Real-Time Object Detection

会议: CVPR2016

链接: https://arxiv.org/pdf/1506.02640.pdf

作者: Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

YOLO v1实现了从原始图像到检测框的单一网络端到端设计。 将图片分割为SxS个方块,每个方块包含2个Bbox的预测。

这里的潜在问题是:如果一个区域包含2个以上的小物体,该怎么办呢?

网络结构

网络包含24个卷积层和2个全连接层(全链接层明显开销会比较大)。此外,作者还提到了精简版的FastYOLO,包含9个卷积层,模型的输出是 7 x 7 x 30 的预测。

训练

模型训练首先采用imagenet数据进行前20个卷积层的训练(作为分类任务),随后,通过4个卷积层和2个全链接层进行检测任务的训练。

局限性

YOLO的局限性在于每一个grid最多只能输出两个物体和一种物体类别。

YOLO2 

发表于: CVPR2017

论文标题:YOLO9000: Better, Faster, Stronger

论文链接:https://arxiv.org/pdf/1612.08242.pdf

作者: Joseph Redmon, Ali Farhadi

 

YOLOv2的网络架构优化

其实,在YOLOv1种就已经提到,YOLO对于多物体的检测能力有限,尤其是当一个grid出现多个物体时。此外,作者还提到,锚框的位置不够准确,recall较低 。面对这些问题,在YOLOv2中,作者给出了解决方式,包括,1. 引入batch normalization,2. 采用高分辨率的图像训练分类器(感觉这个创新点很一般)3. 引入锚框,

这其中,比较值得一说的就是锚框,在YOLO1中通过全连接层进行猫框的预测,但是,在v2中,作者放弃这一设计,转而借鉴Faster-RCNN中提出的先验猫框的概念,通过anchor box的引入,支持的猫框数量大大增加,mAP略微下降,但是recall大大增加,总之,替换的利大于弊。

既然使用锚框,就要提供锚框先验的维度信息,作者没有使用人工选择的方式,而是选择使用K-means的方式,基于数据集找到了5个最优的大小。

此外,YOLO对于检测框位置预测的不精准,主要由于对于物体x,y位置估计的不准确,因此,我们选择预测物体位置与对应网格的相对距离。对于每个特征图的每个网格,我们会获取5个检测框的预测,基于这样的修改,我们可以保证检测框的精度进一步提升。

此外,通过passthrough layer,作者还提高了特征图的分辨率,来保证物体检测的精度(这一步其实没有太明白)。。

YOLOV2的训练策略优化

为了保证网络具有多尺度检测的能力,作者在训练的过程中,还将不同分辨率的图片,作为输入。对于低分辨率的图像,采用更轻量的检测器,可以大大提高帧率。

为了保证backbone的效率,作者认为采用vgg-16.可以,但没必要,因此选择参考googlenet。

为了让训练更高效,作者还利用目标检测数据集和分类数据集,微调网络结构,分别进行训练。

此外,还有其他技巧,这里没有全部展示。

总结

YOLOV2中,作者对于网络结构,和训练策略都做了调整和改进。对于网络架构的修改,有效的弥补了YOLO的短板,而关于训练策略的优化,作者展示了统一目标检测和分类这两类任务的雄心。此外,也提到了在物体分割领域的应用可能。

此外,作者的笔风也逐渐飘逸,说实话better,stonger,faster作为小标题,并不利用读者梳理论文的框架。

YOLOv3

标题: YOLOv3: An Incremental Improvement

作者: Joseph Redmon, Ali Farhadi

发表于:CVPR2018

YOLOV3的论文基本是以技术报告的形式展现。

这里整理一下我认为比较重要的几个创新点

1. Backbone的改进

在V2中,作者提到backbone的设计借鉴了googleNet,而在V3中,作者则借鉴了resnet的残差设计,网络层数也大大加深,从YOLOv2 的Darknet-19 变为了Darknet-53。

2。 引入多尺度信息

YOLOv3在三个尺度进行特征提取。然后通过上采样的方式进行特征融合,通过类似v2中K-means的方法获得了9个先验的尺度信息,然后分布在3个特征提取层中。

总结

Yolov3的创新点给人一种重剑无锋的感觉,没有太多冗余的更新,但是backbone优化,和多尺度信息引入又大大的改进了YOLOv2的效果。而作者开源的YOLOv3 c++推理代码也为YOLO的黄金时代画下了一个完美的句号。

多尺度预测,残差网络的运用

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 精选笔记(1)数据基本操作与线性代数

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

2024牛客寒假算法基础集训营2

目录 A.Tokitsukaze and Bracelet B.Tokitsukaze and Cats C.Tokitsukaze and Min-Max XOR D.Tokitsukaze and Slash Draw E and F.Tokitsukaze and Eliminate (easy)(hard) G.Tokitsukaze and Power Battle (easy) 暂无 I.Tokitsukaze and Short Path (plus) J.Tokits…

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取 1. 背景介绍1.1 场景痛点1.2 方案选型 2. 准备开发环境3. PaddleSpeech 语音识别快速使用4. PaddleNLP 信息抽取快速使用5. 语音工单信息抽取核心功能实现6. 语音工单信息抽取网页应用6.1 网页前端6.2 网页后端6.3 a…

前后端项目宝塔linux部署(springboot,vue,python)

宝塔linux安装就省略了,网上一堆 1.部署后端 1.首先把自己项目里面打包好的的jar包上传到服务器随便一个地方,我这里就上传到www/wwwroot下面了,宝塔的文件页面可以很便携上传 2.然后到下面这个页面 选那个java环境管理装个jdk&#xff…

vue ts html 中如何遍历 Enum 类型构建页面结构

vue ts html 中如何遍历 Enum 类型构建页面结构 一、需求 定义了一个 Enum 用来标记菜单类型: enum EnumMenuType {目录 1,菜单,按钮,外链 }你得 Enum 知道它的序号是随第一个定义的值自动增长的 现在想在 ElementUI 界面的 radio-group 中遍历它,…

SINAMICS V90 指导手册 第2章 SD卡 功能列表 技术数据 惯量比

微型SD卡 该卡可用于拷贝驱动参数或者执行固件升级,需要注意的是,200V系列的伺服驱动,可以选择Kingston或SanDisk生成的高品质SD卡;而对于400V系列驱动,建议使用西门子的SD卡,订货号:6SL3054-4…

【element+vue】点击加号增加一行,点击减号删除一行

代码实现&#xff1a; 页面部分&#xff1a; vueelement 备注&#xff1a;v-if “i>0” &#xff08;保证第一行不出现减号&#xff09; <div v-for"(item,i) in studentList"><el-form-item label"学生:" prop"name"><el-i…

Jessibuca 插件播放直播流视频

jessibuca官网&#xff1a;http://jessibuca.monibuca.com/player.html git地址&#xff1a;https://gitee.com/huangz2350_admin/jessibuca#https://gitee.com/link?targethttp%3A%2F%2Fjessibuca.monibuca.com%2F 项目需要的文件 1.播放组件 <template ><div i…

【深入理解设计模式】适配器设计模式

适配器设计模式 适配器设计模式是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而使得原本由于接口不兼容而不能一起工作的类能够一起工作。适配器模式通常用于以下场景&#xff1a; 现有接口与需求不匹配&#xff1a;当需要…

【力扣 - 买卖股票的最佳时机】

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…

【Linux深入剖析】进程优先级 | 命令行参数 | 环境变量

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程优先级2.Linux…

【MySQL面试复习】详细说下事务的特性

系列文章目录 在MySQL中&#xff0c;如何定位慢查询&#xff1f; 发现了某个SQL语句执行很慢&#xff0c;如何进行分析&#xff1f; 了解过索引吗&#xff1f;(索引的底层原理)/B 树和B树的区别是什么&#xff1f; 什么是聚簇索引&#xff08;聚集索引&#xff09;和非聚簇索引…

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 &#xff08;类似坐标&#xff09; 向量:既有大小&#xff0c;也有方向。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米&#xff09; 向量的模:向量的大小。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米、只取一百米…

Leetcoder Day23| 回溯part03:组合+分割

语言&#xff1a;Java/Go 39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的所有不同组合 &#xff0c;并以列表形式返回。你可以按任意顺序返回这些组合。 candidates 中的同一个…

状态机-----

1.原理 同步的意思就是状态的跳转都是在时钟的作用下跳转的&#xff0c;有限是指状态机中状态的个数是有限的。两种状态机的共同点都是状态的跳转只和输入有关&#xff0c;区别就是如果最后的输出只和当前状态有关而与输入无关&#xff0c;则是moore型状态机。如果最后的输出不…

Go 如何按行读取(大)文件?尝试 bufio 包提供的几种方式

嗨&#xff0c;大家好&#xff01;我是波罗学。本文是系列文章 Go 技巧第十七篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 本文将介绍 Go 如何按行读取文件&#xff0c;基于此会逐步延伸到如何按块读取文件。 引言 我们将要介绍的按行读取文件的方式其实是非常适合…

Laravel04 eloquent

eloquent 1. eloquent2. 创建eloquent model 以及 取数据 1. eloquent 文档地址&#xff1a; https://learnku.com/docs/laravel/8.x/eloquent/9406 下面是我们&#xff0c;通过laravel的DB类从数据库中获取了post记录&#xff0c;那么有没有可能我们直接获取一个post对象&am…

pycharm控制STM32F103ZET6拍照并上位机接收显示(OV7670、照相机、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 三、资源获取 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑&#xff0c;或者其他方法)上传图片数据至上位机 2,串口2(波特…

一文读懂:AWS 网络对等互连(VPC peering)实用操作指南

VPC peering connection-网络对等互连在您的 Atlas VPC 和云提供商的 VPC 之间建立私有连接。该连接将流量与公共网络隔离以提高安全性。本篇文章有VPC peering的操作指南以及价格等信息。如还有疑问请联系我们MongoDB的销售&#xff0c;客户成功经理或解决方案架构师。 1 使用…

【C之·预处理器】

系列文章目录 文章目录 前言一、预处理指令1. #line的用法1.1 概述 2. #error2.1 概述 二、预定义宏三、示例1. #line2. #error3. 预定义宏 总结 前言 C 预处理器不是编译器的组成部分&#xff0c;但是它是编译过程中一个单独的步骤。简言之&#xff0c;C 预处理器只不过是一个…