Can‘t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

2023-08-23 13:00:55

错误

Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

原因

变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以在变量转换之前添加detach()调用。

解决方法

在CPU上

y.numpy() ---> y.detach().numpy()

在GPU上时,则修改为

y.cpu().numpy() ---> y.cpu().detach().numpy()

文章目录

摘要

本专栏是讲解如何改进Yolov8的专栏。改进方法采用了最新的论文提到的方法。改进的方法包括:增加注意力机制、更换卷积、更换block、更换backbone、更换head、更换优化器等;每篇文章提供了一种到N种改进方法。

评测用的数据集是我自己标注的数据集,里面包含32种飞机。每种改进方法我都做了测评,并与官方的模型做对比。

代码和PDF版本的文章,我在验证无误后会上传到百度网盘中,方便大家下载使用。

这个专栏,求质不求量,争取尽心尽力打造精品专栏!!!

谢谢大家支持!!!
在这里插入图片描述

YoloV8改进策略:基于分层注意力的FasterViT,让YoloV8实现性能的飞跃

YoloV8改进策略:基于分层注意力的FasterViT,让YoloV8实现性能的飞跃
这篇文章向大家展示如何使用FasterViT改进YoloV8,我尝试了几种方法,选出了三种效果比较好的方法推荐给大家。
FasterViT结合了cnn的快速局部表示学习和ViT的全局建模特性的优点。新提出的分层注意力(HAT)方法将具有二次复杂度的全局自注意力分解为具有减少计算成本的多级注意力。我们受益于基于窗口的高效自我关注。每个窗口都可以访问参与局部和全局表示学习的专用载体Token。在高层次上,全局的自我关注使高效的跨窗口通信能够以较低的成本实现。FasterViT在精度与图像吞吐量方面达到了SOTA Pareto-front。
在这里插入图片描述

YoloV8改进策略:InceptionNext主干替换YoloV8和YoloV5的主干

YoloV8改进策略:InceptionNext主干替换YoloV8和YoloV5的主干

这篇文章主要讲解如何使用InceptionNext主干网络替换YoloV8和YoloV5的主干。更改了InceptionNext网络结构,和Yolov5、YoloV8的架构。
在这里插入图片描述

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。
在这里插入图片描述

YoloV8改进策略:InceptionNeXt和YoloV8完美结合,让YoloV8大放异彩

YoloV8改进策略:InceptionNeXt和YoloV8完美结合,让YoloV8大放异彩

InceptionNeXt是今年颜水成团队发布的一篇论文,将ConvNext和Inception的思想融合,即IncepitonNeXt。InceptionNeXt-T实现了比convnext - t高1.6倍的训练吞吐量,并在ImageNet- 1K上实现了0.2%的top-1精度提高。

在这里插入图片描述

YoloV8改进策略:新出炉的EMA注意力机制助力YoloV8更加强大

YoloV8改进策略:新出炉的EMA注意力机制助力YoloV8更加强大

EMA注意力机制是今年新的高效的多尺度注意力模块。以保留每个通道上的信息和降低计算开销为目标,将部分通道重塑为批量维度,并将通道维度分组为多个子特征,使空间语义特征在每个特征组中均匀分布。具体来说,除了对全局信息进行编码以重新校准每个并行分支中的通道权重外,还通过跨维度交互进一步聚合两个并行分支的输出特征,以捕获像素级成对关系。
在这里插入图片描述

YoloV8改进策略:VanillaNet极简主义网络,大大降低YoloV8的参数

YoloV8改进策略:VanillaNet极简主义网络,大大降低YoloV8的参数

VanillaNet,一个包含优雅设计的神经网络架构。通过避免高深度,shotcut和复杂的操作,如自主意力,VanillaNet令人耳目一新的简洁,但非常强大。每一层都被精心制作得紧凑而直接,非线性激活函数在训练后被修剪以恢复原始结构。VanillaNet克服了固有复杂性的挑战,使其成为资源受限环境的理想选择。其易于理解和高度简化的架构为高效部署提供了新的可能性。大量的实验表明,VanillaNet提供的性能与著名的深度神经网络和视觉转换器相当,展示了极简主义在深度学习中的力量。VanillaNet的这一富有远见的旅程具有重新定义景观和挑战基础模型现状的巨大潜力,为优雅有效的模型设计开辟了一条新的道路。

在这里插入图片描述

YoloV8改进策略:RFAConv模块即插即用,实现YoloV8丝滑上分

YoloV8改进策略:RFAConv模块即插即用,实现YoloV8丝滑上分
RFAConv是一种新的注意力机制,称为感受野注意力(RFA)。卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题,但在RFA中,感受野空间特征不仅集中,而且为大尺寸卷积核提供了良好的注意力权重。RFA设计的感受野注意力卷积运算(RFAConv)可以被认为是取代标准卷积的一种新方法,它带来的计算成本和许多参数几乎可以忽略不计。由于作者没有开源我自己复现了一版,并尝试将其加入到YoloV8网络中。
在这里插入图片描述

YoloV8改进策略:让SeaFormer走进Yolov8的视野,轻量高效的注意力模块展现出无与伦比的魅力

YoloV8改进策略:让SeaFormer走进Yolov8的视野,轻量高效的注意力模块展现出无与伦比的魅力

SeaFormer使用压缩轴和细节增强的方法设计了一个通用的注意力块。它可以进一步用于创建一系列具有卓越成本效益的骨干体系结构。再加上一个轻分割头,我们在基于arm的移动设备上在ADE20K和cityscape数据集上实现了分割精度和延迟之间的最佳权衡。关键的是,我们以更好的性能和更低的延迟击败了适合移动设备的竞争对手和基于transformer的对手,而且没有花哨的东西。
在这里插入图片描述

YoloV8改进策略:将DCN v1与v2运用到YoloV8中,化身成上分小黑子

YoloV8改进策略:将DCN v1与v2运用到YoloV8中,化身成上分小黑子

尝试用DCNv1与DCNv2代替普通的卷积!
在这里插入图片描述

YoloV8改进策略:基于双层路由注意力的视觉Transformer提升YoloV8的检测能力

YoloV8改进策略:基于双层路由注意力的视觉Transformer提升YoloV8的检测能力
双层路由注意力实现具有内容感知的更灵活的计算分配。利用稀疏性来节省计算和内存,同时只涉及适用于GPU的密集矩阵乘法。用所提出的双层路由注意力建立了一个新的通用视觉transformer,称为BiFormer。
在这里插入图片描述

YoloV8改进策略:来自谷歌最新的优化器——Lion,在速度和精度上双双提升。Adam表示年轻人不讲武德

YoloV8改进策略:来自谷歌最新的优化器——Lion,在速度和精度上双双提升。Adam表示年轻人不讲武德

Lion将ViT在ImageNet上的准确率提高了2%,并在JFT上节省了高达5倍的预训练计算。在视觉-语言对比学习方面,在ImageNet上实现了88.3%的零样本和91.1%的微调精度,分别超过了之前的最佳结果2%和0.1%。在扩散模型上,Lion通过获得更好的FID分数并将训练计算量减少了2.3倍,超越了Adam。在自回归、掩码语言建模和微调方面,Lion表现出与Adam类似或更好的性能。对Lion的分析表明,其性能增益随着训练批大小的增加而增长。由于符号函数产生的更新范数更大,它还需要比Adam更小的学习率。

YoloV8改进策略:Conv2Former与YoloV8深度融合,极简网络,极高性能

YoloV8改进策略:Conv2Former与YoloV8深度融合,极简网络,极高性能
Conv2Former是在ConvNeXt基础上,做了进一步的优化,性能得到了提升。
在这里插入图片描述

YoloV8改进策略:将ConvNextV2与YoloV8激情碰撞,能迸发出什么样的火花呢?

YoloV8改进策略:将ConvNextV2与YoloV8激情碰撞,能迸发出什么样的火花呢

ConvNextV2将一个全卷积掩码自编码器框架和一个新的全局响应归一化(GRN)层,可以添加到ConvNeXt架构中,以增强通道间的特征竞争,它显著提高了纯ConvNets在各种识别基准上的性能,包括ImageNet分类、COCO检测和ADE20K分割。

在这里插入图片描述

YoloV8改进策略:将CIoU替换成Wise-IoU,幸福涨点,值得拥有,还支持EIoU、GIoU、DIoU、SIoU无缝替换。

YoloV8改进策略:将CIoU替换成Wise-IoU,幸福涨点,值得拥有,还支持EIoU、GIoU、DIoU、SIoU无缝替换。
这篇文章讲述如何在yolov8中,使用Wise-IoU涨点。首先,翻译了论文,让大家了解什么是Wise IoU,以及Wise IoU的三个版本。接下来讲解如何在yolov8中添加Wise IoU。

在这里插入图片描述

YoloV8改进策略:增加分支,减少漏检

YoloV8改进策略:增加分支,减少漏检

通过增加一个分支,来提高小目标的检测
在这里插入图片描述

YoloV8改进策略:将FasterNet与YoloV8深度融合,打造更快更强的检测网络

YoloV8改进策略:将FasterNet与YoloV8深度融合,打造更快更强的检测网络
fastternet,这是一种新的神经网络家族,它在各种设备上获得了比其他网络更高的运行速度,而不影响各种视觉任务的准确性。

在这里插入图片描述

Yolov8网络详解与实战(附数据集)

Yolov8网络详解与实战(附数据集)
在这里插入图片描述

更多推荐

Spring Cloud实战案例 │ Apollo和Zuul的整合开发

Apollo是携程研发的开源配置管理中心,能够集中管理应用于不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。本案例结合一个案例介绍Apollo和Zuul的整合开发。整个应用分为4个微服务项目,分别是Eureka服务器项目mweathereurekaserver、服务提供者项

OpenSergo & Spring Cloud Alibaba 带来的服务治理能力

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端

云原生微服务 第四章 Spring Cloud Netflix 之 Eureka

系列文章目录第一章Java线程池技术应用第二章CountDownLatch和Semaphone的应用第三章SpringCloud简介第四章SpringCloudNetflix之Eureka文章目录系列文章目录@[TOC](文章目录)前言1、Eureka两大组件2、Eureka服务注册与发现3、案例3.1、创建主工程3.

jq命令安装与使用

目录一、简介二、下载及安装1.Linux安装2.Windows安装3.测试安装结果三、jq用法1.基本语法2.常见用法1)格式化JSON2)获取属性3)属性不存在情况处理4)数组遍历、截取、展开5)管道、逗号、加号6)数据构造7)基础函数8)过滤、排序、分组函数9)字符串操作函数10)日期函数11)高级用法官网地址:h

网络安全(黑客技术)学习笔记

1.网络安全是什么网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。2.网络安全市场一、是市场需求量高;二、则是发展相对成熟入门比较容易。3.所需要的技术水平需要掌握的知识点偏多(举例):外围打点能力渗透漏洞挖掘流量分析代

LLM系列 | 20 : Llama2 实战(下篇)-中文语料微调(附完整代码)

简介紧接前文:万字长文细说ChatGPT的前世今生Llama2实战(上篇):本地部署(附代码)上篇主要介绍Llama2的基本情况和基于官方模型实测Llama2在中英上的效果,包括单轮和多轮对话。今天这篇小作文作为Llama2的下篇,主要介绍如何用中文语料对Llama2的基座模型(7B版)进行微调并实测微调后模型的效果。

八大排序(一)冒泡排序,选择排序,插入排序,希尔排序

一、冒泡排序冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。代

面试题五:computed的使用

题记大部分的工作中使用computed的频次很低的,所以今天拿出来一文对于computed进行详细的介绍,因为Vue的灵魂之一就是computed。模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护,所以,对于复杂逻辑,vue提倡使用计算属性。需要特别说明:计算属性

python基础语法回顾

1/1pythoneval函数1/1eval()函数是Python中的一个内置函数,它用于执行一个字符串形式的Python表达式,并返回表达式的结果。这个函数接受一个字符串参数,然后将其解析并执行,将结果返回。通常情况下,eval()用于动态地执行Python代码。以下是eval()函数的基本语法:pythonresu

共享股东:让你的连锁店铺更有竞争力

你是否有过这样的困扰:你经营了一家或多家连锁店铺,但是客流量不稳定,收入不理想,资金周转困难,竞争对手层出不穷,你怎么才能让你的店铺更有吸引力,更有利润,更有发展前景呢?如果你有这样的困扰,那么你可能需要了解一下共享股东这个新兴的商业模式。共享股东是一种利用互联网平台,将线下实体店铺的资源和利润与消费者和投资者进行共享

Mysql

视频链接黑马Mysql基础篇通用语法及分类DDL:数据定义语言,用来定义数据库对象(数据库、表、字段)DML:数据操作语言,用来对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中表的记录DCL:数据控制语言,用来创建数据库用户、控制数据库的控制权限DDL(数据定义语言)数据定义语言数据库操作查询所有数据

热文推荐