yolov5目标检测算法解析:基础网络模块

news/2024/7/10 0:25:33 标签: 目标检测, YOLO, 算法

    Yolov5的模型定义分两个阶段,分别是基础模块设计阶段和完整模型搭建阶段。基础模块设计阶段,是基于pytorch架构的基本神经网络算子,进一步构造成具有特定功能和含义的自定义神经网络模块。完整模型搭建阶段,是通过结构化文件,利用基础模块,以搭积木的形式,构建成一个完整的神经网络模型。其基础模块的设计如下所述:

1、标准卷积模块(Conv)

        标准卷积模块(Standard convolution mudule),在源代码中被命名为Conv,它是由一个二维的卷积层(Conv2D)、批正则化层(BatchNorm2D)、一个激活层(Activation)串联组装而成,其网络结构如图1所示。

图1 标准卷积模块

 2、瓶颈结构模块(Bottleneck)

       瓶颈结构模块(Bottle neck mudule)在源代码中被命名为Bottleneck,它是两个标准卷积模块串联,输出再与输入进行短接而成,其网络结构如图2所示。

图2 瓶颈结构模块

3、跨阶段局部瓶颈模块(CSP Bottleneck) 

        跨阶段局部瓶颈模块(Cross stage partial bottle neck mudile)在源代码中被命名为BottlenectCSP,它是由一系列卷积层(ConvD)、标准卷积模块(Conv)、批正则化层(BN)、瓶颈结构模块(Bottlenect)等模块组成,其结构如图3所示。

图3 跨阶段局部瓶颈模块

 4、三卷积跨阶段局部瓶颈模块(C3)

        三卷积跨阶段局部瓶颈模块(Cross stage partial bottle neck mudule)在源代码中被命名为C3,它是由三个标准卷积模块和若干瓶颈结构模块组成,其网络结构如图4所示。

图4 三卷积夸阶段局部瓶颈模块

 5、空间金字塔池化模块(SPP)

        空间金字塔池化模块(Spatial pyramid pooling mudule)在源代码中被命名为SPP,它是由三个并列的池化层和两个标准卷积层组合而成,其网络结构如图5所示。

图5 空间金字塔池化模块

 6、快速空间金字塔池化模块(SPPF)

        快速空间金字塔池化模块(Fast spatial pyramid pooling mudule)在源码中被命名为SPPF,同样是由三个池化层和两个标准卷积组成,但其网络结构和SPP模块不一样,其网络结构如图6所示。

图6 快速空间金字塔池化模块

 7、聚焦模块(Focus)

        聚焦模块(Focus mudule)在源代码中被命名为Focus,它的作用是把宽度和高度上的像素进行拆分,并重组到通道维度上,从而在特征信息不丢失的情况下实现特征的尺度减半。它是由特征重组层(Reorg Layer)和一个标准卷积模块组成,其网络结构如图7所示。

图7 聚焦模块


http://www.niftyadmin.cn/n/191968.html

相关文章

git tag使用

一、git tag作用 tag是一个标签或者说是一个记录点,可以用于对某个commit点或分支进行标记,比如项目中V1版本对应某个commit点,对这个commit打一个V1 tag,那么,在查找或者回退代码时,可以直接查找V1找到对应…

MyBatis配置文件 —— 相关标签详解

目录 一、Mybatis配置文件 — properties标签 二、Mybatis配置文件 — settings标签 三、Mybatis配置文件 — plugins标签 四、Mybatis配置文件 — typeAliases标签 五、Mybatis配置文件 — environments标签 六、Mybatis配置文件 — mappers标签 一、Mybatis配置文件 —…

教你制作多语言商城系统

随着全球化的趋势和互联网的普及,越来越多的商家开始拓展国际市场。为了更好地满足不同语言用户的需求,创建多语言商城系统已经成为了一个必要的选择。在本文中,商淘云将介绍四种创建多语言商城系统的方法,以帮助您选择最适合您的…

桌面端编程之C++编程著名教材

C的学习者众多,教材也非常繁杂。根据入门、提高、进阶三个层次为读者们推荐一些著名的教材,提升学习的效率。 推荐的C入门教材见书籍 24。 书籍 24 C入门教材推荐: (a) C程序设计:思想与方法 (翁惠玉); (b) C程序设计 (谭浩强); (c) Sams Te…

全网都在找的python+requests接口自动化测试框架实例详解教程

目录 前言 1、确定测试架构 2、安装所需软件 3、编写测试脚本 4、执行测试脚本 5、分析测试结果 6、总结 前言 Python是一种功能强大的编程语言,它可以用于自动化测试,特别是接口自动化测试。许多Python库都可以用于接口自动化测试,其…

C的实用笔记40——结构体数组

1.结构体数组的定义及初始化 结构体数组看起来像二维数组&#xff0c;但并不是 #include <stdio.h> struct Student {int num;char name[32];char sex;int age;double score;char addr[32]; }; int main(int argc, char const *argv[]) {struct Student arr[3] {{2,&q…

【数据结构】七种常见的排序

目录 1、排序的概念即运用 1.1、排序的概念 1.2、常见排序算法的分类 2、插入排序 2.1、排序原理 2.2、直接插入排序 2.3、希尔排序&#xff08;缩小增量排序&#xff09; 3、选择排序 3.1、直接选择排序 3.2、堆排序 4、选择排序 4.1、冒泡排序 4.2、快速排序 …

C的实用笔记29——函数指针(通过指针引用函数)

1.函数名就是地址 1、知识点&#xff1a;程序中定义的每一个函数&#xff0c;在编译时&#xff0c;编译系统会为函数在内存的代码区当中分配一段存储空间&#xff0c;这段存储空间的起始地址&#xff08;又称为入口地址&#xff09;称为这个函数的指针。 2.定义一个函数指针指…