yolov5更换MobileNetV3的主干网络

目录

1.定义网络

 2.将test_MobileNetV3.py上面的代码复制粘贴到如下文件里面

2.1复制需要更改的原来的网络如何改结构

3.更改yolo.py注册网络 

1.定义网络

1. 宽度为0.5的YOLOV5网络的结构图

在主干网络上面可以重新定义成三层,编号从0开始

 如图是MobileNetV3 的网络结构,要想重新定义的画需要保持每次输出图片的大小不变

 定义MobileNetV3 的代码如下,我们可以分为3层 test_MobileNetV3.py

import torch
from torch import nn
from torchvision import models
from torchinfo import summary
class MobileNetV3(nn.Module):def __init__(self, n):super().__init__()model = models.mobilenet_v3_small(pretrained=True)if n == 0:self.model = modelif n == 1:self.model = model.features[:4]if n == 2:self.model = model.features[4:9]if n == 3:self.model = model.features[9:]def forward(self, x):return self.model(x)if __name__ == '__main__':x = torch.randn(1, 3, 640, 640)net = MobileNetV3(0)out = net(x)print(x.shape)summary(net,(1,3,640,640))

feature代表的含义 

 

 2.将test_MobileNetV3.py上面的代码复制粘贴到如下文件里面

2.1复制需要更改的原来的网络如何改结构

从这些里面挑一个

做出如下更改

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple
anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1,MobileNetV3, [24, 1]],  # 0-P1/2[-1, 1,MobileNetV3, [48,2]],  # 1-P2/4[-1, 1,MobileNetV3, [576,3]],]# YOLOv5 v6.0 head
head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 1], 1, Concat, [1]],  # cat backbone P4[-1, 3, C3, [512, False]],  # 13[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest']],[[-1, 0], 1, Concat, [1]],  # cat backbone P3[-1, 3, C3, [256, False]],  # 17 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 7], 1, Concat, [1]],  # cat head P4[-1, 3, C3, [512, False]],  # 20 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 3], 1, Concat, [1]],  # cat head P5[-1, 3, C3, [1024, False]],  # 23 (P5/32-large)[[10, 13, 16], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)]

下面几张图是解释

 

3.更改yolo.py注册网络 

如下位置

 添加如下代码,大概340行左右

还是在yolo.py文件里面更改这一句可以进行测试

run一下yolo.py

 更改完成!!!

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

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

相关文章

掌握7步网站设计流程,提升你的网站用户体验

在当代社会,网站制作已经成为不可或缺的一部分。随着互联网的发展,越来越多的人开始使用网站浏览器来获取信息、交流和消费。一个好的网站设计可以吸引用户的注意力,提高用户体验,从而提高用户的满意度和忠诚度。那么,…

网络剪枝——network-slimming 项目复现

目录 文章目录 目录网络剪枝——network-slimming 项目复现clone 存储库Baselinevgg训练结果 resnet训练结果 densenet训练结果 Sparsityvgg训练结果 resnet训练结果 densenet训练结果 Prunevgg命令结果 resnet命令结果 densenet命令结果 Fine-tunevgg训练结果 resnet训练结果 …

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string

1.字符串相乘 . - 力扣(LeetCode) 思路: 1.如果两个串有一个首元素为‘0’,则直接返回‘0’ 2.设置两层循环,内层第一次循环 用于str插入初始数据 (num2 的各个元素和num1 的最后一个元素相乘的结果&#…

C代码做底层及Matlab_SimuLink做应用层设计单片机程序

前言:SimuLink工具极其强大,但是能直接支持单片机自主开发的很少,造成这个问题的原因主要是我们使用的芯片底层多是C代码工程,芯片厂家也只提供C代码库,很少能提供SimuLink的支持库,即使提供也不是很不完善,如NXP的一些芯片提供的SimuLink库不含盖高级应用,再比如意法半…

哈希表 - 快乐数

202. 快乐数 方法一:用哈希集合检测循环 /*** param {number} n* return {boolean}*/let getNext function(n) {return n.toString().split().map(i > i ** 2).reduce((a, b) > a b); }let isHappy function(n) {let seen new Set();while (n ! 1 &&…

什么是跨境电商独立站?为什么选择做独立站?

独立站在近两年被推上风口,很多人跟风涌入赛道,但并不知道做独立站的根本原因是什么?为什么跨境电商要做独立站? 今天分享这篇文章,希望能帮助正在建站或想要建站的朋友们建立起对独立站的基本认知,做到不踩…

【学习笔记】Matlab和python双语言的学习(图论最短路径)

文章目录 前言一、图论基本概念示例 二、代码实现----Matlab三、代码实现----python总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili.com/video/BV1EK41187QF?p36&vd_source67471d3a1b4f517b7a7964093e6…

Java线程模型

一、相关知识 用户级线程(ULT):实现在用户空间的线程称为用户级线程。用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全由用户空间的库函数完成,不需要内核的参与,也不需要进行用…

FPGA之间数据传输的讨论:解析数据传输与同步技术

在现代电子工程领域,数据传输和同步技术是确保信息准确、高效传递的关键。FPGA间的高速数据传输是实现复杂系统功能的关键技术之一。本文将基于移知公开课《FPGA之间数据传输的讨论》的内容,探讨FPGA间数据传输的技术细节和面临的挑战,帮助读…

使用VS2022生成安装包

首先需要本地已经能够正常运行的软件包,包含可执行文件及必要的运行库等,如下所示RemoteCli.exe为最终的可执行文件 打开VS2022 ,选择 扩展–>管理扩展–>联机,搜索Microsoft Visual Studio Installer Projects,…

Lua调用c#

1. 类 --lua中使用C#的类非常简单 --固定套路 --CS.命名空间.类名 --Unity的类 比如 GameObject Transform等等 —— CS.UnityEngine.类名 --CS.UnityEngine.GameObject--通过C#中的类 实例化一个对象 lua中没有new 所以我们直接 类名括号就是实例化对象 --默认调用的 相当于就…

智能分析/视频汇聚EasyCVR安防视频融合管理云平台技术优势分析

安防行业的发展历程主要围绕视频监控技术的不断改革升级,从最初的模拟监控到数字监控,再到高清化、网络化监控,直至现在的智能化监控,每一次变革都推动了行业的快速发展。特别是近年来,随着AI、大数据、物联网等技术的…

LVS负载均衡(twenty-six day)

一、LVS (一)什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,这是一个由章文岩博士发起的开源项目,官网是http://www.linuxvirtualserver.org,现在lvs已经是linux内核标准的-部分,使用lv…

学术周交流与学习节选

文章目录 1、粒度多模态运动分析1.1 免特征重建的终身行人重识别1.2 无样本保留的终身行人重识别1.3 粒度多模态运动之类增量学习1.4 粒度多模态之人体姿态估计扩散模型 2、深度伪造的被动取证与主动防御2.1 研究现状及主要方法2.2 基于梯度的伪影特征表示2.3 基于伪造自适应学…

SQL注入实例(sqli-labs/less-18)

0、初始页面 先使用brup爆破密码,账号admin,密码admin 1、确定闭合字符 判断注入点在post请求参数的User-agent处 闭合字符为单引号 2、爆库名 3、爆表名 4、爆列名 5、查询最终目标 在index.php中有这么一句 $insert"INSERT INTO security.uage…

haproxy算法与具体实现

一、负载均衡 1.什么是负载均衡 负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从…

『大模型笔记』人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)

人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF) 文章目录 一. 人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF)1. 概念解释2. RLHF的组成部分2.1. 强化学习(Reinforcement Learning, RL)2.2. 状态空间(state space)2.3. 动作空…

深入InnoDB核心:揭秘B+树在数据库索引中的高效应用

目录 一、索引页与数据行的紧密关联 (一)数据页的双向链表结构 (二)记录行的单向链表结构 二、未创建索引情况 (一)无索引下的单页查找过程 以主键为搜索条件 以非主键列为搜索条件 (二…

ffmpeg 内存模型

最近在学习ffmpeg,阅读了一些packet和frame关于内存操作的api。在此长话短说,只说核心点。 ffmpeg模型 AVFrame 表示编码前的原始数据帧,AVPacket 表示编码后的压缩数据包。 问题: (1)从av_read_frame读…

算法打卡 Day20(二叉树)-找树左下角的值 + 路径总和 + 从中序与后序遍历序列构造二叉树

文章目录 Leetcode 513-找树左下角的值题目描述解题思路 Leetcode 112-路径总和题目描述解题思路相关题目Leetcode 113-路径总和 ii Leetcode 106-从中序与后序遍历序列构造二叉树题目描述解题思路类似题目Leetcode 105-从前序与中序遍历序列构造二叉树 Leetcode 513-找树左下角…