【YOLO改进】换遍MMDET主干网络之EfficientNet(基于MMYOLO)
EfficientNet
EfficientNet是Google在2019年提出的一种新型卷积神经网络架构,其设计初衷是在保证模型性能的同时,尽可能地降低模型的复杂性和计算需求。EfficientNet的核心思想是通过均衡地调整网络的深度(层数)、宽度(每层的通道数)和分辨率(输入的图像尺寸)这三个维度,以实现模型的性能最大化。
具体来说,EfficientNet使用了一个复合缩放方法(compound scaling method),该方法将深度、宽度和分辨率的缩放比例视为一个整体进行考虑,而不是分别进行缩放。通过这种方式,EfficientNet可以在保证模型性能的同时,实现参数数量的减少和计算效率的提高。
EfficientNet包括多个变体,从EfficientNet-B0到EfficientNet-B7,其中“B”后面的数字越大,网络的深度和宽度越大,需要的计算资源也越多,但同时能够达到更高的性能。
EfficientNet作为YOLO主干网络的可行性分析
- 性能优势:EfficientNet作为一种高效的卷积神经网络架构,具有出色的性能表现。将其作为YOLO的主干网络,可以充分利用其高效的特征提取能力,从而提高目标检测的精度和效率。特别是EfficientNet的复合缩放方法,可以在不增加过多计算量的前提下,进一步提高模型的性能。
- 兼容性:YOLO是一种基于卷积神经网络的目标检测算法,而EfficientNet同样是一种基于卷积神经网络的模型。因此,EfficientNet作为YOLO的主干网络具有很好的兼容性。通过合理的网络结构和参数设置,可以将EfficientNet与YOLO的检测头进行有效地融合,形成完整的目标检测模型。
- 优化与改进:虽然EfficientNet已经具有很好的性能表现,但在实际应用中还可以根据具体任务需求进行进一步的优化和改进。例如,可以通过调整EfficientNet的网络结构、深度、宽度等参数来平衡模型的性能和速度;也可以采用一些先进的优化技术(如剪枝、量化等)来减小模型的参数量和计算量,进一步提高模型的实时性和部署能力。
替换EfficientNet(基于MMYOLO)
OpenMMLab 2.0 体系中 MMYOLO、MMDetection、MMClassification、MMSelfsup 中的模型注册表都继承自 MMEngine 中的根注册表,允许这些 OpenMMLab 开源库直接使用彼此已经实现的模块。 因此用户可以在 MMYOLO 中使用来自 MMDetection、MMClassification、MMSelfsup 的主干网络,而无需重新实现。
假设想将'EfficientNet'作为 'yolov5' 的主干网络,则配置文件如下:
_base_ = './yolov5_s-v61_syncbn_8xb16-300e_coco.py'deepen_factor = _base_.deepen_factor
widen_factor = 1.0
channels = [48, 136, 384]
checkpoint_file = 'https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa_in1k_20220119-5b4887a0.pth' #model = dict(backbone=dict(_delete_=True,type='mmdet.EfficientNet',arch='b3',drop_path_rate=0.2,out_indices=(3, 4, 5),frozen_stages=0,norm_cfg=dict(type='SyncBN', requires_grad=True, eps=1e-3, momentum=0.01),norm_eval=False,init_cfg=dict(type='Pretrained', prefix='backbone', checkpoint=checkpoint_file)),neck=dict(type='YOLOv5PAFPN',deepen_factor=deepen_factor,widen_factor=widen_factor,in_channels=channels, # 注意:EfficientNet 输出的3个通道是 [48, 136, 384],和原先的 yolov5-s neck 不匹配,需要更改out_channels=channels),bbox_head=dict(type='YOLOv5Head',head_module=dict(type='YOLOv5HeadModule',in_channels=channels, # head 部分输入通道也要做相应更改widen_factor=widen_factor))
)
相关文章:
【YOLO改进】换遍MMDET主干网络之EfficientNet(基于MMYOLO)
EfficientNet EfficientNet是Google在2019年提出的一种新型卷积神经网络架构,其设计初衷是在保证模型性能的同时,尽可能地降低模型的复杂性和计算需求。EfficientNet的核心思想是通过均衡地调整网络的深度(层数)、宽度࿰…...
uniapp下拉选择组件
uniapp下拉选择组件 背景实现思路代码实现配置项使用尾巴 背景 最近遇到一个这样的需求,在输入框中输入关键字,通过接口查询到结果之后,以下拉框列表形式展现供用户选择。查询了下uni-app官网和项目中使用的uv-ui库,没找到符合条…...
高斯数据库创建函数的语法
CREATE FUNCTION 语法格式 •兼容PostgreSQL风格的创建自定义函数语法。 CREATE [ OR REPLACE ] FUNCTION function_name ( [ { argname [ argmode ] argtype [ { DEFAULT | : | } expression ]} [, …] ] ) [ RETURNS rettype [ DETERMINISTIC ] | RETURNS TABLE ( { column_…...
【.NET Core】你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟
你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟 文章目录 你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟一、概述二、CallerMemberNameAttribute类三、CallerFilePathAttribute 类四、CallerLineNumberAttribute 类…...
ubuntu删除opencv
要完全删除OpenCV 3.4.5版本,你可以按照以下步骤进行操作: 卸载OpenCV库: 首先,你需要卸载OpenCV 3.4.5版本。可以使用以下命令卸载OpenCV库: sudo apt-get purge libopencv*这将删除OpenCV库及其相关文件。 删除O…...
K8s源码分析(二)-K8s调度队列介绍
本文首发在个人博客上,欢迎来踩! 本次分析参考的K8s版本是 文章目录 调度队列简介调度队列源代码分析队列初始化QueuedPodInfo元素介绍ActiveQ源代码介绍UnschedulableQ源代码介绍**BackoffQ**源代码介绍队列弹出待调度的Pod队列增加新的待调度的Podpod调…...
OpenGL ES 面试高频知识点(二)
说说纹理常用的采样方式? 最邻近点采样(GL_NEAREST)和双线性采样(GL_LINEAR)。 GL_NEAREST 采样是 OpenGL 默认的纹理采样方式,OpenGL 会选择中心点最接近纹理坐标的那个像素,纹理放大的时候会有锯齿感或者颗粒感。 **GL_LINEAR 采样会基于纹理坐标附近的纹理像素,计…...
2024第十六届“中国电机工程学会杯”数学建模A题B题思路分析
文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…...
面向对象的三大特性:封装、继承、多态
一、封装 封装是面向对象的核心思想。是以类为载体,将对象的属性和行为封装起来,对外隐藏其实现细节。 封装保证了类内部数据结构的完整性,使得外部(使用该类的用户)不能轻易地直接操作此数据结构,只能执…...
目标检测YOLO实战应用案例100讲-基于深度学习的交通场景多尺度目标检测算法研究与应用(中)
目录 3.4 实验结果与分析 深度融合注意力跨尺度复合空洞残差交通目标检测算法...
前端GET请求下载后端返回数据流文件,并且处理window.open方法跳转白屏方法
平时常用导出都是用window.open方法 点击跳转连接:使用 window.open 下载 const downError 地址?&参数${参数|| }; const downError Url/xxx/xxx?&orgId${orgId || };window.open(downError, "_self");//调用window.open方法导出 而使用…...
SD321放大器3V输入电流电压保护二极管25C电源电流
Sd 321运算放大器可以在单电源或双电源电压下工作, 可以使用最坏情况下的非反相单位增益连接来适应。如 具有真微分输入,并且保持在线性模式,输入共模电压 果放大器必须驱动较大的负载电容,则应使用较大的闭 为0。Vpc-这种放大器可…...
geoserver SQL注入、Think PHP5 SQL注入、spring命令注入
文章目录 一、geoserver SQL注入CVE-2023-25157二、Think PHP5 SQL注入三、Spring Cloud Function SpEL表达式命令注入(CVE-2022-22963) 一、geoserver SQL注入CVE-2023-25157 介绍:GeoServer是一个开源的地理信息系统(GIS&#…...
scrapy的入门
今天我们先学习一下scrapy的入门,Scrapy是一个快速的高层次的网页爬取和网页抓取框架,用于爬取网站并从页面中提取结构化的数据。 1. scrapy的概念和流程 1.1 scrapy的概念 我们先来了解一下scrapy的概念,什么是scrapy: Scrapy是一个Python编写的开源网络爬虫框架…...
大数据Scala教程从入门到精通第七篇:Scala在IDEA中编写Hello World
一:Scala在IDEA中编写Hello World 想让我们的idea支持scala的编写,需要安装一个插件。...
设计模式之数据访问对象模式
在Java编程的浩瀚星海中,有一个模式低调却强大,它像是一位默默无闻的超级英雄,支撑起无数应用的数据脊梁——那就是数据访问对象(DAO, Data Access Object)模式!想象一下,如果你能像操纵魔法一样…...
Spring aop切面编程
Spring aop切面编程 如何使用利用AuditAction创建切入点 如何使用 Aspect // 1. 创建一个类,用Aspect注解标记它,表明这是一个切面类。 Component public class LoggingAspect {// 2. 定义切点:在通知方法上,使用切点表达式来指定…...
如何更好地使用Kafka? - 事先预防篇
要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现&#…...
如何解决 IPA 打包过程中的 “Invalid Bundle Structure“ 错误
哈喽,大家好呀,淼淼又来和大家见面啦,咱们行业内的应该都知道,在开发 iOS 应用时,将应用打包成 IPA 文件是常见的步骤之一。最近很多小伙伴们说在打包过程中,有时会遇到 "Invalid Bundle Structure&qu…...
Vuex:Vue.js 的状态管理库
一、Vuex 简介 Vuex 是 Vue.js 的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现解决了组件间共享状态的问题,使得状态管理变得简单、可预测和可维护。 二、Vuex 核心概…...
如何高效管理Magpie窗口缩放插件:从安装到优化的完整指南
如何高效管理Magpie窗口缩放插件:从安装到优化的完整指南 【免费下载链接】Magpie An all-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie Magpie作为一款强大的Windows窗口缩放工具,其插件系…...
PMSM无感控制中滑模观测器的相位补偿与抖振优化
1. 滑模观测器在PMSM无感控制中的核心作用 永磁同步电机(PMSM)的无位置传感器控制技术中,滑模观测器(SMO)扮演着关键角色。这种控制方式不需要物理位置传感器,而是通过算法实时估算转子位置和速度。我在实…...
技术速递|底层机制:GitHub Agentic Workflows 的安全架构
作者:Landon Cox & Jiaxiao Zhou排版:Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...
基于Mirage Flow的Java智能助手开发:SpringBoot集成与API封装
基于Mirage Flow的Java智能助手开发:SpringBoot集成与API封装 最近在做一个内部知识库项目,需要给系统加个智能问答的“大脑”。一开始想直接用现成的SaaS服务,但考虑到数据安全和定制化需求,还是决定自己动手,把大模…...
DeepSeek-OCR-2功能测评:多语言支持、复杂背景识别,实测好用
DeepSeek-OCR-2功能测评:多语言支持、复杂背景识别,实测好用 1. 引言:OCR技术的新标杆 在数字化时代,文字识别技术已经成为连接物理世界与数字世界的重要桥梁。DeepSeek-OCR-2作为最新一代的开源OCR模型,凭借其创新的…...
cv_unet_image-colorization效果展示:看AI如何为历史照片智能上色
cv_unet_image-colorization效果展示:看AI如何为历史照片智能上色 1. 引言:让历史重现色彩的魅力 黑白照片承载着珍贵的记忆,但缺乏色彩总让人感觉少了些什么。想象一下,如果能将祖辈的老照片恢复成彩色,看到他们当年…...
揭秘LLM System Prompt的逆向工程:从API调试到Prompt Injection实战
1. 什么是System Prompt? 当你和ChatGPT聊天时,有没有好奇过它为什么总是用特定的语气回答?比如你问"今天天气怎么样",它可能会说"根据我的知识库,天气信息需要实时查询..."而不是直接报个假数据。…...
Neovim美化踩坑实录:从乱码图标到完美主题,我的init.lua配置全解析(附避坑清单)
Neovim美化踩坑实录:从乱码图标到完美主题,我的init.lua配置全解析(附避坑清单) 第一次打开Neovim时,满屏的方块符号和刺眼的默认配色让我差点以为打开了某个古董终端。作为从VSCode转投Neovim的开发者,我原…...
短效与动态代理IP区别,从定义边界讲清
很多用户在选用代理IP时,常常混淆短效代理IP和动态代理IP,甚至将两者等同看待,导致选型失误、业务受阻。其实两者属于包含与被包含的关系,核心区别体现在定义边界与核心定位上,只有理清这一底层逻辑,才能精…...
Ubuntu24.04上快速部署Odoo18开发环境的完整指南
1. 为什么选择Ubuntu24.04作为Odoo18开发环境 作为一个在ERP领域摸爬滚打多年的开发者,我强烈推荐使用Ubuntu24.04作为Odoo18的开发平台。这不仅仅是因为官方文档的建议,更是来自实际项目中的血泪教训。记得去年接手一个企业ERP项目时,客户坚…...
