Yolo系列各代网络结构分析(一)

Yolo系列

Yolo系列算是目标检测领域的常青树了,从v1到最近的v9,一直都在不断迭代,不断改进,但是细看其各代网络的发展,其实还是有很多一脉相承之处以及算法设计偏好的,总结主要为以下几个方面:

  • 网络结构
  • 预处理 & 后处理
  • 损失函数
  • anchor算法:如何将目标检测做成端到端一阶段算法的关键

Yolov1

网络结构

在这里插入图片描述
在这里插入图片描述

第一代yolo,DarkNet作为backbone,没有neck和backbone部分。

划分grid & anchor

yolov1提出了划分网格来实现目标检测的方案,将一张图片划分为 S × S S\times S S×S个网格,每个网格负责预测中心点在该网格内的目标。
在这里插入图片描述
anchor就类似于之前目标检测算法中的待检测框,之前的目标检测算法是使用region proposal来提取待检测框,yolo系列则是使用提取预设好的anchor。yolov1每个grid有5个anchor,在yolov1中称为boundingbox,yolov1中是直接预测bbox的长宽,并没有预设anchor的尺寸。

也有说每个grid预测两个boundingbox的,模型版本不同,参数也可能有变化,这不是重点,重点是这种思想。

正负样本处理 & 损失函数

对于每个grid来说,如果有ground truth的,与GT的IOU最大的框为正样本,其余为负样本,至于正负样本数量不平衡问题,令损失函数中正负样本的损失添加不同的系数。
yolov1把目标检测当作回归问题,所以其损失函数为:
在这里插入图片描述

预处理 & 后处理

Yolov1没有预处理,如果说resize也算预处理的话,那就有预处理。
Yolov1的后处理就是将输出的结果进行NMS非极大值抑制,剔除重复的框。

Yolov2

yolov2的主要贡献:

  • 在模型中添加了BN层【关于BN层可以看之前的blog:BN层详解】
  • 引入了Anchor机制,使用聚类算法来预设Anchor的尺寸,v1中直接预测bbox的宽高,v2中挑一个IOU最大的anchor作为bbox,预测bbox左上角角点的偏差,同时对anchor的宽高进行微调。

正负样本处理 & 损失函数

IOU小于阈值的,统统作为负样本,只考虑置信度误差,IOU最大的,同时考虑置信度误差,类别误差,以及定位误差。和v1一样,同样采用在正负样本前加上参数的方式来平衡正负样本误差。

Yolov3

在这里插入图片描述

又是比较经典的一代,主要贡献:
-网络结构基本定型,形成backbone+neck+head的结构,采用darknet-53作为backbone,同时生成三种特征图用于提取不同尺度上的特征。

正负样本 & 损失函数

不再使以grid来负责物体的预测,但是还用grid来分配anchor,只不过计算IOU的时候GT会对所有的anchor都计算IOU,找到一个IOU最大的作为正样本,对于IOU小于阈值的作为负样本,其余的都忽略不算loss。loss的计算依旧是使用正负样本分别添加系数,负样本只计算置信度,正样本计算置信度,类别误差和坐标误差。不过由于三个特征图,所以loss是三个特征图的loss之和。

Yolov5

在这里插入图片描述

最经典,最常用的一代,网络结构讲解可以看之前的blog:yolov5
主要贡献:

  • 采用bottleneck结构,有效降低计算量
  • 采用CSP结构,降低计算量和内存瓶颈,增加梯度路径
  • 采用SPP结构,图像金字塔池化,实现全局特征和局部特征的融合
  • 采用了FPN结构,图像金字塔,小目标精度更好
  • 采用PANet结构【6.0版本后加的】,可以做图像分割。

正负样本处理 & 损失函数

yolov5的正负样本处理相较于v3做了很大改进,提高了正样本的数量。
yolov5中的正样本选择不再使用最大IOU规则,而是先根据shape将GT分到不同的特征层,根据GT的宽高比,将该GT分配到一个特征层,该层内GT中心点所在的grid以及附近的两个grid都负责预测该GT,这三个grid的anchor都作为正样本,其余作为负样本。
xywh的损失采用了CIOU损失,IOU的发展路程可以看:IOU那点事儿
类别和置信度的损失采用了BCEloss,也就是交叉熵损失

所谓经典,其实也不是说他们的效果比别的模型有多出众,而是他们开箱即用,不断更新,更能吸引更多人来使用并不断迭代,这才是为什么yolov3和yolov5一直这么火,这两个是一家公司ultralytics做的,他们实现的yolov5被称为u版,目前已经迭代到了7.0版本。
模型的改进可以分为两点,第一点是对模型本身的改进,也就是结构的改进,第二点是对于整个工程来说,trick的使用和改进,也就是超参的选择方式等,yolov5的模型改进不多,trick改进很多。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3、类的生命周期

类的生命周期描述了一个类加载、使用、卸载的整个过程。整体可以分为: 加载连接,其中又分为验证、准备、解析三个子阶段初始化使用卸载 2.3.1 加载阶段 1、加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码…

Halcon 3D算子总结整理

halcon 3D包含以下几个模块: 3D Matching(3D匹配)3D Object Model(3D模型)3D Reconstruction(3D重构)3D Transformations(3D转换) 1. 3D Matching 1.1 3D Box3D盒查找器…

【Memcached】springBoot 集成 memcached 两万字长文带你认识memcached

目录 一、 memcached 介绍1.1 简介1.2 特性1.3 优点1.4 缺点1.5 实现原理1.6 适用场景1.7 不适用场景1.8 与 Redis 比较相同点1.9 与 Redis 比较不同点 二、对 java 的支持2.1 Memcached-java-client 客户端2.2 Spymemcached 客户端2.3 XMemcached 客户端 三、下载安装3.1 wind…

anaconda迁移深度学习虚拟环境 在云服务器上配置

1 anaconda 虚拟环境操作 1、 查看虚拟环境 conda info -e2、 创建新的虚拟环境 conda create -n deeplearning_all pip python3.63、 激活新建的虚拟环境 Conda activate deeplearning_all2 环境中相关库的版本即安装说明(这些库都是对应匹配的) …

1236 - 二分查找

代码 #include<bits/stdc.h> using namespace std; int a[1100000]; int main() {int n,x,l,r,p,mid,i;cin>>n;for(i1;i<n;i)cin>>a[i];cin>>x;l1;rn;p-1;while(l<r){mid(rl)/2;if(a[mid]x){pmid;break;}else if(x<a[mid]) rmid-1;else if(x…

微服务day04(上)-- RabbitMQ学习与入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但…

MySQL数据库 - 索引

一. 索引的相关知识 1. 索引的概念 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找到该行数据对应…

NodeJS 集群模块: 为App创建集群实例

NodeJS 集群模块: 为App创建集群实例 目录 NodeJS 集群模块: 为App创建集群实例Node.js 集群介绍:终极扩展策略使用集群模块开始扩展 Node.js扩展 Node.js 的两种集群策略使用集群受益的 Node.js 应用程序示例没有集群的 Node.js:不可伸缩的原则集群操作:一个扩展的 Node.js…

全新体验|德克萨斯州奥斯汀市登陆 The Sandbox

以前所未有的方式探索德克萨斯州奥斯汀——The Sandbox迎来虚拟旅游&#xff0c;新体验由Smobler工作室打造。 我们的使命是为虚拟旅游创造新机遇&#xff0c;让每个人都能更方便地游览城市和国家。我们非常兴奋地宣布&#xff1a;Cobbleland&#xff1a;Austin&#xff0c;这款…

1.C#对接微信Native支付(准备工作)

近期有需求需要在PC网站接入微信支付&#xff0c;遂了解了一下相关文档。https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml 官网文档种有多种支付对接方式比如&#xff1a;jsapi、native、app支付、小程序支付等。大家可自行了解&#xff0c;根据自身…

电子合同和纸质合同有同等法律效力吗?

根据《中华人民共和国民法典》的规定&#xff0c;电子合同是合同的一种形式&#xff0c;只要依法成立&#xff0c;就具有法律效力&#xff0c;和纸质合同具有同样的法律效力。同时&#xff0c;法律也认可了以电子数据交换、电子邮件等方式能够有形地表现所载内容&#xff0c;并…

深度解析:普通人运用ChatGPT10大经典场景,你用过几种?(内含使用教程)

本内容来源---布博士&#xff08;擎创产品专家&#xff09;公众号 很长时间没有更新ChatGPT相关内容了&#xff0c;最近一段时间一直在通过各种渠道了解大型语言模型&#xff0c;重点关注其在各个应用领域的使用情况&#xff0c;以此来了解其应用的边界。 在近两个月的学习过…

Emotion Prompt-LLM能够理解并能通过情感刺激得以增强

Large Language Models Understand and Can be Enhanced by Emotional Stimuli 情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型&#xff08;LLMs&#xff09;被视为向人工通用智能迈进的一大步&#xff0c;在许多任务中表现出色&#xff0c;但目前尚不清楚…

xercesc库中文保存XML功能实现

目录 一 参考链接 二 运行结果 三 代码 一 参考链接 DOM Programming Guide (apache.org) Xerces-c DOM XML文件的构造_xerces-c domimplementation-CSDN博客 Xerces-c库的使用-CSDN博客 二 运行结果 三 代码 #include "XercesC_Test.h"#if 1//参考链接&…

基于爬虫对山西省人口采集+机器学习的可视化平台

文章目录 数据来源一、研究背景与意义二、研究目标三、研究内容与方法四、预期成果五、代码讲解六、全文总结 数据来源 1.所有原数据均来自&#xff1a;国家统计局-政府的数据网站 2.涉及到的一些预测数据是根据现有数据进行预测而来。 本文从数据来源&#xff0c;研究意义&am…

ideaSSM博物馆网站系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 博物馆网站系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c…

基于单片机的实时水质监测系统设计

摘要:传统的水质监测存在人工成本高,取样时间长等诸多问题。为了解决这些问题,本文设计了一款基于单片机的实时水质监测系统,通过传感器采集到的数据,单片机通过zigbee 収送至云端,结合上位机软件可以实现实时的信息采集处理,实现了高敁、智能的水质监测工作。 兲键词:…

JavaMySQL高级一(下)

目录 1.常用函数 1.字符串函数 2.时间日期函数 3.聚合函数 4.数学函数 2.分布查询 3.子查询基础 1.简单子查询 1.常用函数 在程序开发过程中&#xff0c;除了简单的数据查询&#xff0c;还有基于已数据进行数据的统计分析计算等需求。因此&#xff0c;在SQL中将一…

【原创】三十分钟实时数据可视化网站前后端教程 Scrapy + Django + React 保姆级教程向

这个本来是想做视频的&#xff0c;所以是以讲稿的形式写的。最后没做视频&#xff0c;但是觉得这篇文还是值得记录一下。真的要多记录&#xff0c;不然一些不常用的东西即使做过几个月又有点陌生了。 文章目录 爬虫 SCRAPYxpath 后端 DJANGO前端 REACT Hello大家好这里是小鱼&a…

企业用大模型如何更具「效价比」?百度智能云发布5款大模型新品

服务8万企业用户&#xff0c;累计帮助用户精调1.3万个大模型&#xff0c;帮助用户开发出16万个大模型应用&#xff0c;自2023年12月以来百度智能云千帆大模型平台API日调用量环比增长97%...从一年前国内大模型平台的“开路先锋”到如今的大模型“超级工厂”&#xff0c;百度智能…