YOLOv8模型代码学习

news2024/12/23 13:45:11

1.参考文献

链接1

2.网络模型解析

2.1卷积神经单元(conv.py)

在该文件中定义了yolov8网络中的卷积神经单元,位置如图所示。

def autopad(k, p=None, d=1):  # kernel(卷积核), padding(填充), dilation(扩张)
    """Pad to 'same' shape outputs."""
    # 返回pad的大小,使得padding后输出张量的shape不变
    if d > 1:  # 如果采用扩张卷积,则计算扩张后实际的kernel大小
        k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k]  # actual kernel-size
    if p is None:
        p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-pad # 自动pad
    return p

2.1.1代码解释

  • 扩张卷积的处理
if d > 1:  # 如果采用扩张卷积,则计算扩张后实际的kernel大小
    k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k]  # actual kernel-size

这部分代码的作用是,如果 d 大于1,则计算扩张卷积后的实际卷积核大小。对于扩张卷积,其有效卷积核大小会增大:

  1. 如果 k 是一个整数,新的卷积核大小为 d * (k - 1) + 1
  2. 如果 k 是一个列表,则对列表中的每一个元素 x 进行相同的计算,生成新的列表。
  • 自动填充计算
if p is None:
    p = k // 2 if isinstance(k, int) else [x // 2 for x in k]  # auto-pad # 自动pad

这部分代码的作用是,如果没有显式指定填充大小 p(即 pNone),则自动计算填充大小以保持输出形状不变:

  1. 如果 k 是一个整数,则填充大小为 k // 2
  2. 如果 k 是一个列表,则对列表中的每一个元素 x 进行 x // 2 的计算,生成新的列表。
  • 返回填充大小
return p

最后返回计算出的填充大小 p

2.1.2示例

1:普通卷积,3x3卷积核

假设我们有一个3x3的卷积核,扩张率 d=1(即没有扩张),并且没有指定填充 p

k = 3
p = autopad(k, p=None, d=1)
print(p)  # 预期输出: 1
  • 计算过程:
  1. 没有扩张,卷积核大小保持3x3。
  2. 自动填充 p 计算:p = k // 2 = 3 // 2 = 1

输出的填充大小为1,这意味着每边需要填充1个像素,使得输出张量的形状与输入张量相同。

2:扩张卷积,3x3卷积核,扩张率2

假设我们有一个3x3的卷积核,扩张率 d=2,并且没有指定填充 p

k = 3
p = autopad(k, p=None, d=2)
print(p)  # 预期输出: 2
  • 计算过程:
  1. 扩张后,实际卷积核大小:k = d * (k - 1) + 1 = 2 * (3 - 1) + 1 = 5
  2. 自动填充 p 计算:p = k // 2 = 5 // 2 = 2

输出的填充大小为2,这意味着每边需要填充2个像素,使得输出张量的形状与输入张量相同。

3:矩形卷积核,5x7卷积核

假设我们有一个5x7的矩形卷积核,扩张率 d=1,并且没有指定填充 p

k = [5, 7]
p = autopad(k, p=None, d=1)
print(p)  # 预期输出: [2, 3]

  • 计算过程:
  1. 没有扩张,卷积核大小保持5x7。
  2. 自动填充 p 计算:p = [x // 2 for x in k] = [5 // 2, 7 // 2] = [2, 3]

输出的填充大小为 [2, 3],这意味着高度方向需要填充2个像素,宽度方向需要填充3个像素,使得输出张量的形状与输入张量相同。

4:矩形卷积核,5x7卷积核,扩张率2

假设我们有一个5x7的矩形卷积核,扩张率 d=2,并且没有指定填充 p

k = [5, 7]
p = autopad(k, p=None, d=2)
print(p)  # 预期输出: [4, 6]
  • 计算过程:
  1. 扩张后,实际卷积核大小:k = [d * (x - 1) + 1 for x in k] = [2 * (5 - 1) + 1, 2 * (7 - 1) + 1] = [9, 13]
  2. 自动填充 p 计算:p = [x // 2 for x in k] = [9 // 2, 13 // 2] = [4, 6]

输出的填充大小为 [4, 6],这意味着高度方向需要填充4个像素,宽度方向需要填充6个像素,使得输出张量的形状与输入张量相同。

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

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

相关文章

PLSQL下ORA-00904:

plsql下查看执行计划报错:ORA-00904:“OTHER_XML”:标识符无效 解决办法: 1.报错的用户登录到sqlplus,执行以下命令: sql> drop table PLAN_TABLE;2.创建表: sql> ?/rdbms/admin/utlxplan.sql; Table created.重新登录plsql按F5选择text: 报错问题解决.

苹果电脑压缩pdf文件,苹果电脑里如何压缩pdf文件

压缩PDF文件是现代办公和日常生活中经常需要处理的一项任务,无论是为了节省存储空间、方便网络传输,还是为了在移动设备上更流畅地阅读文档,学会有效地压缩PDF都显得尤为重要。在本文中,我们将详细探讨压缩PDF的方法,从…

解码数智升级良方:中国一拖、中原传媒、神火股份等企业数字化实践分析

大模型、AI等技术的成熟以及政策法规的细化,数据资源的权属论证、合规确权、资产论证等环节逐渐走向实用性、价值化。 而伴随着“业财税数融”综合性数字化成为企业数字化转型的主流选择,财务部门的纽带属性被放大,财务数据的融合能力成为企业…

【华为HCIA数通网络工程师真题-构建以太网交换网络】

华为HCIA数通网络工程师真题-构建以太网交换网络 一、1-10题 一、1-10题 1、如图所示,四台交换机都运行 STP,各种参数都采用默认值如果交换机C的G0/0/2端口发生阻塞并无法通过该端口发送配置 BPDU,则网络中 blocked 端口多久之后会进入到转发…

【JavaEE精炼宝库】多线程进阶(1)常见锁策略 | CAS | ABA问题

目录 一、常见的锁策略: 1.1 悲观锁 | 乐观锁: 1.2 重量级锁 | 轻量级锁: 1.3 自旋锁 | 挂起等待锁: 1.4 公平锁 | 非公平锁: 1.5 可重入锁 | 不可重入锁: 1.6 互斥锁 | 读写锁: 1.7 面…

Web前端第四次作业

目录 一、编写一个函数,形参是一个数组,返回数组中所有数字的平均值 二、编写一个函数,形参是一个数组,返回数组中的最大值 三、编写一个函数,形参是一个字符串,统计该字符串中每个字母出现的次数&#…

大模型微调方法总结

一 LoRA: 1 低(秩)rank 自适应微调方法 2 背景及本质   大模型的参数更新耗费大量现存为此, 微软的研究者们于2021年通过论文《LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》提出了低秩适应LoRA 它冻结了预训练的模型权重,并将可…

2005年下半年软件设计师【下午题】试题及答案

文章目录 2005年下半年软件设计师下午题--试题2005年下半年软件设计师下午题--答案 2005年下半年软件设计师下午题–试题 2005年下半年软件设计师下午题–答案

AI绘画Stable Diffusion人物背景替换实操教程,让创意无限延伸

大家好,我是画画的小强 Stable Diffusion以其强大的能力可以实现人物背景的更换。本文将带你深入了解如何利用Stable Diffusion中的Inpaint Anything插件快速且精准地实现人物背景的替换,从而让你的图片焕发新生。 前期准备 本文会使用到Inpaint Anyt…

以敏感数据保护为中心,建立健全高校数据安全治理体系

教育行业数据安全事件频发 2023年8月,南昌某高校3万余条师生个人信息数据在境外互联网上被公开售卖,该校受到责令改正、警告并处80万元人民币罚款的处罚,主要责任人被罚款5万元人民币。2023 年 7月,中国人民大学一名毕业生马某某…

ClickHouse vs. Elasticsearch:十亿行数据的较量

本文字数:15291;估计阅读时间:39 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 Meetup活动 ClickHouse 上海首届 Meetup 讲师招募中,欢迎讲师在文末扫码报名! 引言 这…

2024上海初中生古诗文大会倒计时4个月:单选题真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间,我们继续来看10道选择题真题和详细解析,以下题目截取自我独家制作的在线真题集,都是来自于历届真题,去重、合并后,每道题都有参考答案和解析。 为帮助孩子自测和练习&…

Chromium下载

https://chromium.woolyss.com/download/ https://www.chromium.org/getting-involved/download-chromium/

力扣SQL50 即时食物配送 II min函数 嵌套查询

Problem: 1174. 即时食物配送 II 👨‍🏫 参考题解 Code -- 计算立即配送的订单百分比 select round (-- 计算订单日期与客户偏好配送日期相同的订单数量sum(case when order_date customer_pref_delivery_date then 1 else 0 end) * 100 /-- 计算总订…

Studying-代码随想录训练营day19| 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

第十九天,二叉树part06,二叉树的道路任重而道远💪 目录 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236.二叉树的最近公共祖先 总结 530.二叉搜索树的最小绝对差 文档讲解:代码随想录二叉搜索树的最小绝对差 视频…

2024年高性价比蓝牙耳机怎么买?揭秘超高性价比蓝牙耳机推荐

当一打开购物软件想购买一款性价比高的蓝牙耳机,你就会发现,不同的蓝牙耳机的品牌价格差距蛮大的!几十块的随处可见,上千块的也琳琅满目,品牌和款式更是繁多,让人看得眼花缭乱,无从下手......其…

浅谈逻辑控制器之ForEach控制器

浅谈逻辑控制器之ForEach控制器 ForEach控制器是一个非常实用的功能,它允许用户遍历某个变量的所有值,并为每个值执行控制器内的子采样器或逻辑。这对于处理从先前请求(如CSV Data Set Config、JSON Extractor、Regular Expression Extracto…

银幕光影交织,红酒香醇流淌,一场电影与红酒的绝美浪漫邂逅

在光影交错的世界里,红酒与电影总能在不经意间碰撞出浪漫的火花。当银幕上的角色轻启瓶盖,那迷人的酒香便如诗如画般弥漫开来,与影片的情节交织在一起,构成了一幅幅动人的画面。今天,就让我们一起走进这个充满酒香的银…

9.XSS之过滤

XSS之过滤 通过输入代码发现被过滤掉了 <script>";"666查看页面元素代码&#xff0c;被后台代码过滤了 尝试一下大小写混合使用&#xff0c;攻击代码如下&#xff1a; <sCRipT>alert(你打篮球像oldqu)</sCrIPt>如下图所示&#xff0c;大小写混…

1986-2017年 全国农村固定观察点数据

全国农村固定观察点调查体系是中国一个重要的农村社会经济调查项目&#xff0c;它通过长期跟踪调查固定不变的村庄和农户&#xff0c;收集连续性数据&#xff0c;以获取农村基层的动态信息。这些数据不仅全面反映了农户及其家庭成员在生产、消费、就业、生活等方面的情况&#…