YOLO中task.py改复杂的模块

比如改一个多输入模块,我们需要记录输入1的通道,输入2的通道,Conv_reduce的输入通道

YOLO中这个模块接受层1和层2的作为输入,那么层1和层2的输出通道肯定是知道的,所以现在只需要在yaml里面标记整个模块的输出通道即可。

python 复制代码
class AF(nn.Module):
    def __init__(self,c1,c2,dim1,dim2):
        super().__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.conv_atten = nn.Sequential(
            nn.Conv2d(c1, c1,1),
            nn.Sigmoid()
        )
        self.conv_redu = nn.Conv2d(c1, c2, kernel_size=1, bias=False)

        self.conv1 = nn.Conv2d(dim1, 1, 1, 1)
        self.conv2 = nn.Conv2d(dim2, 1, 1, 1)
        self.nonlin = nn.Sigmoid()

    def forward(self, x):
        output =  torch.cat(x,1)
        att = self.conv_atten(self.avg_pool(output))
        #print(att.shape)
        output = output * att
        output = self.conv_redu(output)
        #print(output.shape)
        att = self.conv1(x[0]) + self.conv2(x[1])
        att = self.nonlin(att)
        #print(att.shape)
        output = output * att
        return output
html 复制代码
  - [[-1, 6], 1, AF, [32]] # cat backbone P4

例如这条yaml,接受第6层和上一层的输入,输出通道数为32。这里参数为什么是一个?因为这里只需要给出输出通道数即可,其他参数可以再网络的记录中得到。

python 复制代码
        elif m is AF:
            c1 = sum(ch[x] for x in f)
            c3 = ch[f[0]]
            c4 = ch[f[1]]
            c2 = args[0]
            args = [c1,c2,c3,c4]
            print(args)

f是一个表表示来自那一层,这里的f里面就保存的内容相当于【-1,6】的索引,ch是每一层的输出通道数,ch层索引不就得到某层的输出通道了。这里随便借助一个中间变量,c1,c2,c3,c4,记录参数后,合成列表【c1,c2,c3,c4】

python 复制代码
torch.nn.Sequential(*(m(*args))

m相当于类名称,加入类名为AF,不就相当于AF(c1,c2,c3,c4)吗

相关推荐
小小张说故事11 分钟前
Python 的 list 为什么能装下任何类型?拆开 PyObject* 数组,以及它让你多付了多少内存
后端·python
chi113015 分钟前
【无标题】
前端·javascript·python
编程见习者28 分钟前
Deep Agents介绍
人工智能·python·langchain
梦幻精灵_cq30 分钟前
《SGR修行之路》——二○二一五二〇,初识终端点红裳
python·生活
奈落2436 分钟前
工程界讲角色边界,控制论讲博弈与稳定性:从 Swarms 的实践清单到《自动化学报》的协同综述,多智能体‘协同‘这件事有两套语言
人工智能·深度学习·自动化·ai 编程
我要见SA姐140 分钟前
Chrome 内存泄漏诊断指南:从现象定位到根因排查
ide·vscode·python·自动化·编辑器
椒颜皮皮虾྅42 分钟前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
richard_first1 小时前
第21章 训练一个简单的 GPT
人工智能·gpt·深度学习
应用市场1 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
小lo想吃棒棒糖1 小时前
把 启元机器人Q1 的训练搬到昇腾 910B:从 MuJoCo 到 PPO 的一次完整迁移
人工智能·python·机器人·昇腾·具身智能