[神经网络]YoloV7

news2024/11/18 1:23:11

        Yolo系列是一类很经典的目标检测网络,属于anchor-base型网络,即需要先产生先验框然后筛选先验框得到预测框。同时它也是One-Stage网络,即不需要额外的网络结构来筛选先验框。这两种特点使得它具备了运算速度快和计算精度相对较高的特点。

        比较常见的Yolo网络有:YoloV3,YoloV5,YoloV7等。本文主要从YoloV7网络入手进行讨。论。

一、YoloV7

        YoloV7的网络结构如图所示,主要可以分为3个部分:BackboneFPNYolo Head。其中,Backbone负责对输入图片进行特征提取,这个结构最终会输出三个不同尺寸的特征层。FPN网络负责加强特征提取,它会将Backbone提取出的三个特征层进行部分特征融合(以融合不同尺寸的特征信息,主要依靠上采样和下采样进行实现)。Yolo Head负责对anchor进行分类和回归,输出最终的预测框。

         1.Backbone

        从上面的网络结构图可以看到,不同于Faster R-CNN等网络直接套现成的骨干网络,YoloV7的骨干网络主要由Multi_Concat_Block(多分支堆叠模块)和Transition_Block组成。

        Multi_Concat_Block结构如图,可以看到主要是由卷积标准激活函数构成。共计4个通路,分别经过了1,1,3,5个卷积标准激活函数。最后这4个通路的特征层堆叠后由一个卷积标准激活函数进行特征整合。

         Transition_Block是本网络的一个创新点,是一个过渡模块。通常的卷积网络中,过渡模块使用的是3x3卷积核的卷积+步长2x2的最大池化。而该模块具有两个分支:左侧分支为步长为2x2的最大池化+1x1卷积,右边分支为1x1卷积+卷积核3x3、步长2x2的卷积,两个分支在输出的时候进行堆叠。

         2.FPN

        YoloV7的Backbone一共提取三个特征层,当输入为640x640x3时,三个特征层的尺寸分别为80x80x512,40x40x1024,20x20x1024。这三个特征会经过FPN进行加强特征提取,具体步骤如下:

                ①最下层的特征(即尺寸为20x20x1024的)会经过SPPCSPC进行特征提取得到P5,该结构可以提升YoloV7的感受野。

                 ②P5经过1x1卷积调整通道+一次上采样后与一次卷积后的第二层特征(40x40x1024)进行结合(Concat),然后利用一个Multi_Concat_Block进行特征提取,得到P4。

                ③P4同样经过一次1x1卷积调整通道+一次上采样后与一次卷积后的第一层特征(80x80x1024)进行特征融合,然后利用一个Multi_Concat_Block进行特征提取,得到P3。

                 ④P3经过一次Transition_Block下采样后与P4堆叠,然后使用Multi_Concat_Block提取到P4_Out,尺寸为(40x40x256)

                ⑤P4_Out经过一次Transition_Block下采样后与P5堆叠,然后使用Multi_Concat_Block提取到P5_Out,尺寸为(20x20x512)

         3.Yolo Head

        YoloV7是Yolo Head前使用了一个RepConv结构,即在训练时引入一个特经过特殊设计的残差结构,但实际预测时,该结构等效于一个3x3卷积,故不会导致预测性能的下降。

        经过RepConv后,即可开始对结果进行解码。经过FPN我们可以得到三个输出,分别为(N,20,20,255),(N,40,40,255),(N,80,80,255)。其中N为通道数。每个输出的通道数255均可分解为3个85,对应这3个先验框的85个参数。

        先验框的85个参数可以拆分为4+1+80,其中4代表每个特征点的回归参数,用以获得调整后的预测框,1用以判断特征点是否含有物体,80用以判断每个特征点所包含的物体种类

        大致的计算步骤可以分为以下几步:

                ①进行中心点预测,利用回归预测(前两位)的结果对中心点偏移进行计算

                ②进行预测框宽高预测,利用回归预测(后两位)的结果计算预测框的宽高

                ③将预测框绘制在图片上

        同时还需要进行非极大抑制操作,防治同一类出现多个预测框

        4.Loss部分

        YoloV7的Loss包含三个部分:回归部分(Reg)、物体部分(Obj)、物体类别部分(Cls)

 

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

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

相关文章

Win10怎么用U盘重装系统?Win10用U盘重装系统步骤图解教程

Win10怎么用U盘重装系统?使用U盘重装系统是一种快速而有效的方法,可以帮助我们在电脑中进行Win10系统的重新安装。首先用户需要准备一个容量适当的U盘,并确保其中没有重要数据,然后按照小编分享的Win10用U盘重装系统步骤图解教程操…

Redis 简单入门

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 安装 Redisredis 的数据类型和使用字符串类型字典类型列表类型集合类型有序集合类型 SpringBoot 集成 Redis添加 redis 依赖配…

el-checkbox / el-checkbox-group中绑定对象无法回显的问题处理

在使用el-checkbox / el-checkbox-group时&#xff0c;发现若label绑定的是对象&#xff0c;则是无法回显的&#xff0c;参考了很多方法&#xff0c;但大多都无法解决&#xff0c;最终参考下面的方法解决&#xff0c;记录一下。 <el-checkbox :label"JSON.stringify(i…

每天一点Python——day51

#第五十一天列表和字典为可变序列&#xff0c;元组是不可变序列 为什么要将元组设计成不可变序列呢&#xff1f; 一旦创建了不可变类型的对象&#xff0c;对象内部的所有数据将不能被修改 这样就避免了由于修改数据而导致的错误 对于不可变对象&#xff0c;在多任务环境下&…

最小覆盖串双指针解题思路及Java实现

最小覆盖串双指针解题思路及Java实现 题目双指针思路Java实现 题目 题目来自牛客NC28 最小覆盖子串 给出两个字符串 s 和 t&#xff0c;要求在 s 中找出最短的包含 t 中所有字符的连续子串。 例如&#xff1a; 输入&#xff1a;“XDOYEZODEYXNZ”,“XYZ” 返回值&#xff1a;“…

使用LiteSpeed缓存插件将WordPress优化到100%的得分

页面速度优化应该是每个网站所有者的首要任务&#xff0c;因为它直接影响WordPress SEO。此外&#xff0c;网站加载的时间越长&#xff0c;其跳出率就越高。这可能会阻止您产生转化并为您的网站带来流量。 使用正确的工具和配置&#xff0c;缓存您的网站可以显着提高其性能。因…

c++——命名空间

1.什么是命名空间 1.1命名空间的定义 命名空间&#xff08;Namespace&#xff09;是C中用来避免命名冲突的一种机制。命名空间可以将一组相关的函数、类、变量等定义在同一个逻辑分组中&#xff0c;从而避免它们与其他代码中的同名实体发生冲突。 C中&#xff0c;命名空间使用…

Openlayers实战:回显点、线段、圆形、多边形

Openlayers地图中,回显数据到地图上,形成几何图形是非常重要的一部分学习内容。 回显的内容基本单元包括点、线、圆形、多边形。本实战项目中,根据给定的坐标点,用最基础最管用的方式来显示这些信息。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑…

Keil环境下CANopenNode移植到STM32问题记录(一)---printf重定向问题

文章目录 问题描述问题结决思考&#xff1a;相关文章 在直接将CANopenSTM32的示例工程直接移植到Keil环境下。 如果移植工程未实现printf函数重定向&#xff0c;则要注释掉log_printf下面的printf函数&#xff0c;使日志打印失效 /* Printf function of CanOpen app */ #define…

Django_环境配置(一)

目录 一、安装Django 二、创建项目 三、创建应用 四、注册应用 五、使用mysql数据库 六、视图 七、开发服务器 源码等资料获取方法 一、安装Django # 在CMD中运行 pip install django # 查看djangp版本 python manage.py version 二、创建项目 # 在CMD中运行 django-a…

工业物联网安全监测解决方案:工业安全节能管理

工业自动化和工业化的快速发展&#xff0c;工厂安全问题越来越受到重视。工厂安全监测是保障工厂安全运行的关键技术之一&#xff0c;它可以及时发现并处理潜在的安全问题&#xff0c;防止事故的发生&#xff0c;保障员工的安全和工厂的正常运转。智能改造成为广大企业关注的热…

idea配置本地maven保姆级教程

一、说在前面 idea默认会带有maven插件&#xff0c;原则上是可以不需要配置的。但有个缺点&#xff0c;他是把本地仓库直接安装在了系统盘里面&#xff0c;随着时间的推移&#xff0c;仓库越来越大&#xff0c;笔记本的压力会比较大。 本文是下载自己的maven包&#xff0c;集…

DAY41:动态规划(一)动态规划理论基础

文章目录 DP概念以及和贪心的区别动规问题分类基础问题背包问题打家劫舍股票问题子序列问题 DP注意点解题步骤&#xff1a;五步debug考虑方向 视频课程&#xff1a;从此再也不怕动态规划了&#xff0c;动态规划解题方法论大曝光 &#xff01;| 理论基础 |力扣刷题总结| 动态规划…

3.1.cuda运行API-概述

目录 前言1. Runtime API概述总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习精简 CUDA 教程-Runtime API 概述 课程大纲可…

MachineLearningWu_3_LinearRegression

3 Linear Regression Linear Regression即是根据数据做出预测&#xff0c;如下&#xff0c; training set 如下&#xff1a; 在Linear Regression中你可以将(x&#xff0c; y)看做如下&#xff0c;每一行是一个sample&#xff0c;而每一列除最后一列是一个feature&#xff0c…

ESP32(掌控板) RGB灯控制

ESP32&#xff08;掌控板&#xff09; RGB灯控制 本程序实现了RGB灯亮度和颜色调节&#xff0c;通过触摸按键分别调节RGB值&#xff0c;通过机械按键选择要调节的灯或使用预设均通过调整变量的值加上判断实现。预设包含随机颜色和流水灯&#xff0c;各有高亮度和低亮度两种版本…

《Kali渗透基础》07. 弱点扫描(一)

kali渗透 1&#xff1a;漏洞发现1.1&#xff1a;Exploit-DB1.2&#xff1a;searchsploit1.3&#xff1a;nmap 2&#xff1a;漏洞管理3&#xff1a;弱点扫描类型4&#xff1a;漏洞基本概念4.1&#xff1a;CVSS4.2&#xff1a;CVE4.3&#xff1a;OVAL4.4&#xff1a;CCE4.5&#…

TCP概念

文章目录 1.TCP1.1 为什么需要 TCP 协议&#xff1f;TCP 工作在哪一层&#xff1f;1.2 什么是 TCP &#xff1f;1.3 什么是 TCP 连接&#xff1f;1.4 如何唯一确定一个 TCP 连接&#xff1f;1.5 有一个 IP 的服务器监听了一个端口&#xff0c;它的 TCP 的最大连接数是多少&…

nginx的权限问题(13: Permission denied)解决办法

1、查看nginx启动用户和使用用户是否一致 ps aux | grep nginx 如图&#xff1a; 一个是www,一个是root用户 2、打开nginx配置文件 打开 nginx.conf 文件 查找nginx.conf的位置 ps -aux | grep nginx 3、把 nginx 改为 root 4、重启nginx服务 service nginx restart …

性能监控平台 | Prometheus+InfluxDB + Grafana!

在本文中&#xff0c;我将把几个常用的监控部分给梳理一下。前面我们提到过&#xff0c;在性能监控图谱中&#xff0c;有操作系统、应用服务器、中间件、队列、缓存、数据库、网络、前端、负载均衡、Web 服务器、存储、代码等很多需要监控的点。显然这些监控点不能在一个专栏中…