yolov8添加ca注意力机制

创建文件 coordAtt.py

位置:ultralytics/nn/modules/coordAtt.py

######################  CoordAtt  ####     start   by  AI&CV  ###############################
# https://zhuanlan.zhihu.com/p/655475515
import torch
import torch.nn as nn
import torch.nn.functional as F


class h_sigmoid(nn.Module):
    def __init__(self, inplace=True):
        super(h_sigmoid, self).__init__()
        self.relu = nn.ReLU6(inplace=inplace)

    def forward(self, x):
        return self.relu(x + 3) / 6


class h_swish(nn.Module):
    def __init__(self, inplace=True):
        super(h_swish, self).__init__()
        self.sigmoid = h_sigmoid(inplace=inplace)

    def forward(self, x):
        return x * self.sigmoid(x)


class CoordAtt(nn.Module):
    def __init__(self, inp, reduction=32):
        super(CoordAtt, self).__init__()
        self.pool_h = nn.AdaptiveAvgPool2d((None, 1))
        self.pool_w = nn.AdaptiveAvgPool2d((1, None))

        mip = max(8, inp // reduction)

        self.conv1 = nn.Conv2d(inp, mip, kernel_size=1, stride=1, padding=0)
        self.bn1 = nn.BatchNorm2d(mip)
        self.act = h_swish()

        self.conv_h = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0)
        self.conv_w = nn.Conv2d(mip, inp, kernel_size=1, stride=1, padding=0)

    def forward(self, x):
        identity = x

        n, c, h, w = x.size()
        x_h = self.pool_h(x)
        x_w = self.pool_w(x).permute(0, 1, 3, 2)

        y = torch.cat([x_h, x_w], dim=2)
        y = self.conv1(y)
        y = self.bn1(y)
        y = self.act(y)

        x_h, x_w = torch.split(y, [h, w], dim=2)
        x_w = x_w.permute(0, 1, 3, 2)

        a_h = self.conv_h(x_h).sigmoid()
        a_w = self.conv_w(x_w).sigmoid()

        out = identity * a_w * a_h

        return out
######################  CoordAtt  ####     end   by  AI&CV  ###############################

conv.py中添加头文件

位置:ultralytics/nn/modules/conv.py
在这里插入图片描述

init.py中添加头文件

位置 :ultralytics/nn/modules/init.py
在这里插入图片描述

tasks.py 文件

位置:ultralytics/nn/tasks.py

task.py文件 添加头文件

在这里插入图片描述

task.py文件的 方法中添加代码

        elif m is CoordAtt: # todo 源码修改 ~4
            """
            ch[f]:上一层的
            args[0]:第0个参数
            c1:输入通道数
            c2:输出通道数
            """
            c1, c2 = ch[f], args[0]
            # print("ch[f]:",ch[f])
            # print("args[0]:",args[0])
            # print("args:",args)
            # print("c1:",c1)
            # print("c2:",c2)
            if c2 != nc:  # if c2 not equal to number of classes (i.e. for Classify() output)
                c2 = make_divisible(c2 * width, 8)
            args = [c1, *args[1:]]

在这里插入图片描述

运行效果

在这里插入图片描述

对比图(左:未添加cbam,右上:添加cbam,右下:添加ca)

在这里插入图片描述

yolov8添加ca注意力机制-出现bug

ImportError: cannot import name ‘CoordAtt’ from ‘ultralytics.nn.modules’ (D:\anaconda3\envs\torch\lib\site-packages\ultralytics\nn\modules_init_.py)

在这里插入图片描述

解决方法:拷贝项目中左图文件,到环境配置的右图目录中

在这里插入图片描述

ImportError: cannot import name ‘CoordAtt’ from ‘ultralytics.nn.modules.conv’ (D:\anaconda3\envs\torch\lib\site-packages\ultralytics\nn\modules\conv.py)

在这里插入图片描述

解决方法:拷贝项目中左图文件,到环境配置的右图目录中

在这里插入图片描述

ModuleNotFoundError: No module named ‘ultralytics.nn.modules.coordAtt’

在这里插入图片描述
解决方法:拷贝项目中左图文件,到环境配置的右图目录中
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Windows11(WSL)中如何迁移Docker

前言: 在Windows 10中Docker是默认安装到WSL中的,而安装到WSL中的任意分发版都是默认放在C盘中的。这样会让我们的C盘资源极度紧张,而且也限制了Docker的镜像数量。 迁移步骤 假设我有一个临时目录“D:\docker”用来存放临时文件,…

【开源】基于Vue和SpringBoot的在线课程教学系统

项目编号: S 014 ,文末获取源码。 \color{red}{项目编号:S014,文末获取源码。} 项目编号:S014,文末获取源码。 目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2…

黑马头条数据管理平台项目总结

今天主要看了该项目的介绍,这个黑马头条数据管理平台项目主要包括登录、用户的权限判断、文章内容列表的筛选和分页、文章的增删查改还有图片和富文本编辑器这几大部分组成,项目配套了素材代码,像资源文件、第三方插件、页面文件夹、工具插件…

【MySQL】表的增删查改

增创建库创建表表插入表更新插入表替换插入查询结果 查全列查找指定列查找查找结果去重where条件查找筛选分页结果 改对查询到的结果进行列值更新 删delete 和 truncate 的区别 增 创建库创建表 create database 库名称;use 进入的库名称;create table 表名称; select * from…

Apollo新版本Beta技术沙龙

有幸参加Apollo开发者社区于12月2日举办的Apollo新版本(8.0)的技术沙龙会,地址在首钢园百度Apollo Park。由于去的比较早,先参观了一下这面的一些产品,还有专门的讲解,主要讲了一下百度无人驾驶的发展历程和历代产品。我对下面几个…

单点登录方案调研与实现

作用 在一个系统登录后,其他系统也能共享该登录状态,无需重新登录。 演进 cookie → session → token →单点登录 Cookie 可以实现浏览器和服务器状态的记录,但Cookie会出现存储体积过大和可以在前后端修改的问题 Session 为了解决Co…

Doris 集成 ElasticSearch

Doris-On-ES将Doris的分布式查询规划能力和ES(Elasticsearch)的全文检索能力相结合,提供更完善的OLAP分析场景解决方案: (1)ES中的多index分布式Join查询 (2)Doris和ES中的表联合查询,更复杂的全文检索过滤 1 原理 (1)创建ES外表后,FE会请求建表指定的主机,获取所有…

Git 应用 -- 多人协作开发场景1

目录 1. 既查看本地仓库的分支,又查看远程仓库的分支: git branch -a (但是远程的分支只能查看,不能直接切换到远程的分支上) 2. 本地的分支和远程的分支建立连接:git checkout -b [分支名] [要连接远程的…

【模型可解释性系列一】树模型-拿到特征重要度-打印关键因素

接下来一段时间内,会主要介绍下模型可解释性方向的一些常用方法。 模型可解释性:主要用来解释为什么这个样本的特征是这样的时候,模型结果是那样。面向老板汇报工作(尤其是不懂算法的老板)和业务方。 常用的树模型 xgboost、lightgbm这两个…

Ps:文字操作常用快捷键

对文字的设置操作,可在工具选项栏或“字符”面板上进行。但是,如果能记住并使用快捷键,可大大提高工作效率。 设置文字颜色 Color 1、选中几个或全部文字后,除了使用工具选项栏上的“颜色”按钮,还可以使用快捷键 Alt…

Linux系统调试课:PCIe调试手段

文章目录 一、lspci 命令二、pciutils 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍pcie调试手段。 一、lspci 命令 通过lspci可以查看当前系统挂载了哪些pci设备。 lspci - 列出 PCI 设备 lspci 命令可以列出计算机中所有 PCI 设备的详细信息,…

23、pytest通过skip跳过测试用例

官方实例 # content of test_skip.py import pytest import syspytest.mark.skip(reason"no way of currently testing this") def test_the_unknown():passdef valid_config():return Falsedef test_function():if not valid_config():pytest.skip("unsupport…

Android View.inflate 和 LayoutInflater.from(this).inflate的区别

前言 两个都是布局加载器,而View.inflate是对 LayoutInflater.from(context).inflate的封装,功能相同,案例使用了dataBinding。 View.inflate(context, layoutResId, root) LayoutInflater.from(context).inflate(layoutResId, root, fals…

如何通过navicat连接SQL Server数据库

本文介绍如何通过Navicat 连接SQL Server数据库。如果想了解如何连接Oracle数据库,可以参考下边这篇文章。如何通过Navicat连接Oracle数据库https://sgknight.blog.csdn.net/article/details/132064235 1、新建SQL Server连接配置 打开Navicat软件,点击…

centos7安装Elasticsearch7系列

背景 今天公司项目需要使用Elasticsearch7.17.7。所有网上搜索了一番,查到一个很不错安装方式分享给大家。 Elasticsearch官网发布 从 Elasticsearch 7.x 版本开始,Elasticsearch 发行版包括了自己的 JDK。因此,您不需要单独安装 Java。以…

2023.2版idea安装教程,现在jdk8已经过去式了,不同idea支持的jdk不同。升级jdk后idea也要随之升级

下载idea2023.2版本,下载之前需要删除之前的版本,一定要删除干净,删除程序要勾选那两个delete 下载路径:其他版本 - IntelliJ IDEA (jetbrains.com.cn) 选择2023.2版本 下载后进入安装程序,选择安装目录,然…

去掉参数中第一个“,”

记录一下,前端传参中,传给我参数是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418” 但是后端,因为我的mybati是in查询,所以因为第一个是“,”。所以会导…

提升设备巡检效率的有效工具

易点易动设备管理系统是一款专注于提升设备巡检效率的高效工具。设备巡检是企业设备管理的重要环节,通过定期巡检设备,可以及时发现潜在问题,预防故障发生,确保设备安全运行。下面将介绍易点易动设备管理系统在设备巡检方面的功能…

Android 12.0 Folder文件夹全屏后文件夹图标列表居中时拖拽app到桌面的优化

1.概述 在12.0的系统rom产品开发中,在Launcher3中在目前的产品需求开发中,对于Launcher3中的文件夹Folder的布局UI 进行了定制化的需求要求把Folder修改为全屏,然后在中间显示文件夹图标的列表,这时候如果Folder是全屏的话,如果拖拽文件夹列表中的app图标,只有拖拽 到屏…

微服务学习(十三):安装Consul

微服务学习(十三):安装Consul 一、简介 consul是分布式的、高可用、横向扩展的。 consul提供的一些关键特性: service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服…
最新文章