国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

YOLO算法改進(jìn)指南【中階改進(jìn)篇】:3.添加SA-Net注意力機(jī)制

這篇具有很好參考價(jià)值的文章主要介紹了YOLO算法改進(jìn)指南【中階改進(jìn)篇】:3.添加SA-Net注意力機(jī)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

YOLO算法改進(jìn)指南【中階改進(jìn)篇】:3.添加SA-Net注意力機(jī)制

  • 論文地址:SA-Net: Shuffle Attention for Deep Convolutional Neural Networks
  • 開(kāi)源代碼:https://github.com/wofmanaf/SA-Net

當(dāng)前的 CNN 中的 attention 機(jī)制主要包括:channel attention 和 spatial attention,當(dāng)前一些方法(GCNet 、CBAM 等)通常將二者集成,容易產(chǎn)生 converging difficulty 和 heavy computation burden 的問(wèn)題。盡管 ECANet 和 SGE 提出了一些優(yōu)化方案,但沒(méi)有充分利用 channel 和 spatial 之間的關(guān)系。因此,作者提出一個(gè)問(wèn)題 “ Can one fuse different attention modules in a lighter but more efficient way? ”
為解決這個(gè)問(wèn)題,作者提出了 shuffle attention,整體框架如下圖所示??梢钥闯鍪紫葘⑤斎氲奶卣鞣譃?span id="n5n3t3z" class="katex--inline"> g g g組,然后每一組的特征進(jìn)行split,分成兩個(gè)分支,分別計(jì)算 channel attention 和 spatial attention,兩種 attention 都使用全連接 + sigmoid 的方法計(jì)算。接著,兩個(gè)分支的結(jié)果拼接到一起,然后合并,得到和輸入尺寸一致的 feature map。 最后,用一個(gè) shuffle 層進(jìn)行處理。

image.png

1. 增加ShuffleAttention.yaml文件

# 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, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOAir v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 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, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)
   [-1, 1, ShuffleAttention, [1024]], # 修改

   [[17, 20, 24], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

2. common.py配置

./models/common.py文件中增加以下模塊代碼
image.png

import numpy as np
import torch
from torch import nn
from torch.nn import init
from torch.nn.parameter import Parameter

# https://arxiv.org/pdf/2102.00240.pdf
class ShuffleAttention(nn.Module):

    def __init__(self, channel=512,reduction=16,G=8):
        super().__init__()
        self.G=G
        self.channel=channel
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.gn = nn.GroupNorm(channel // (2 * G), channel // (2 * G))
        self.cweight = Parameter(torch.zeros(1, channel // (2 * G), 1, 1))
        self.cbias = Parameter(torch.ones(1, channel // (2 * G), 1, 1))
        self.sweight = Parameter(torch.zeros(1, channel // (2 * G), 1, 1))
        self.sbias = Parameter(torch.ones(1, channel // (2 * G), 1, 1))
        self.sigmoid=nn.Sigmoid()

    def init_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                init.kaiming_normal_(m.weight, mode='fan_out')
                if m.bias is not None:
                    init.constant_(m.bias, 0)
            elif isinstance(m, nn.BatchNorm2d):
                init.constant_(m.weight, 1)
                init.constant_(m.bias, 0)
            elif isinstance(m, nn.Linear):
                init.normal_(m.weight, std=0.001)
                if m.bias is not None:
                    init.constant_(m.bias, 0)

    @staticmethod
    def channel_shuffle(x, groups):
        b, c, h, w = x.shape
        x = x.reshape(b, groups, -1, h, w)
        x = x.permute(0, 2, 1, 3, 4)

        # flatten
        x = x.reshape(b, -1, h, w)

        return x

    def forward(self, x):
        b, c, h, w = x.size()
        #group into subfeatures
        x=x.view(b*self.G,-1,h,w) #bs*G,c//G,h,w

        #channel_split
        x_0,x_1=x.chunk(2,dim=1) #bs*G,c//(2*G),h,w

        #channel attention
        x_channel=self.avg_pool(x_0) #bs*G,c//(2*G),1,1
        x_channel=self.cweight*x_channel+self.cbias #bs*G,c//(2*G),1,1
        x_channel=x_0*self.sigmoid(x_channel)

        #spatial attention
        x_spatial=self.gn(x_1) #bs*G,c//(2*G),h,w
        x_spatial=self.sweight*x_spatial+self.sbias #bs*G,c//(2*G),h,w
        x_spatial=x_1*self.(x_spatial) #bs*G,c//(2*G),h,w

        # concatenate along channel axis
        out=torch.cat([x_channel,x_spatial],dim=1)  #bs*G,c//G,h,w
        out=out.contiguous().view(b,-1,h,w)

        # channel shuffle
        out = self.channel_shuffle(out, 2)
        return out

3. yolo.py配置

找到models/yolo.py文件中parse_model()函數(shù)的for i, (f, n, m, args) in enumerate(d['backbone'] + d['head'])(258行上下)并其循環(huán)內(nèi)添加如下代碼。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-426105.html

elif m is ShuffleAttention:
    c1, c2 = ch[f], args[0]
    if c2 != no:
        c2 = make_divisible(c2 * gw, 8)

4. 訓(xùn)練模型

python train.py --cfg ShuffleAttention.yaml

到了這里,關(guān)于YOLO算法改進(jìn)指南【中階改進(jìn)篇】:3.添加SA-Net注意力機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 改進(jìn)YOLO系列:3.添加SOCA注意力機(jī)制

    改進(jìn)YOLO系列:3.添加SOCA注意力機(jī)制

    暫未找到 ./models/common.py文件增加以下模塊 在最后添加如下

    2024年02月12日
    瀏覽(31)
  • 改進(jìn)YOLO系列:9.添加S2Attention注意力機(jī)制

    論文題目:S 2 -MLPV2: IMPROVED SPATIAL-SHIFT MLP ARCHITECTURE FOR VISION 論文鏈接:S 2 -MLPV2: IMPROVED SPATIAL-SHIFT MLP ARCHITECTURE FOR VISION

    2024年02月11日
    瀏覽(42)
  • 改進(jìn)YOLO系列:改進(jìn)YOLOv8,教你YOLOv8如何添加20多種注意力機(jī)制,并實(shí)驗(yàn)不同位置。

    改進(jìn)YOLO系列:改進(jìn)YOLOv8,教你YOLOv8如何添加20多種注意力機(jī)制,并實(shí)驗(yàn)不同位置。

    注意力機(jī)制(Attention Mechanism)是深度學(xué)習(xí)中一種重要的技術(shù),它可以幫助模型更好地關(guān)注輸入數(shù)據(jù)中的關(guān)鍵信息,從而提高模型的性能。注意力機(jī)制最早在自然語(yǔ)言處理領(lǐng)域的序列到序列(seq2seq)模型中得到廣泛應(yīng)用,后來(lái)逐漸擴(kuò)展到了計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別等多個(gè)領(lǐng)域。

    2024年02月16日
    瀏覽(32)
  • U-Net網(wǎng)絡(luò)模型改進(jìn)(添加通道與空間注意力機(jī)制)---親測(cè)有效,指標(biāo)提升

    U-Net網(wǎng)絡(luò)模型改進(jìn)(添加通道與空間注意力機(jī)制)---親測(cè)有效,指標(biāo)提升

    U-Net網(wǎng)絡(luò)模型(注意力改進(jìn)版本) 這一段時(shí)間做項(xiàng)目用到了U-Net網(wǎng)絡(luò)模型,但是原始的U-Net網(wǎng)絡(luò)還有很大的改良空間,在卷積下采樣的過(guò)程中加入了通道注意力和空間注意力 。 常規(guī)的U-net模型如下圖: 紅色箭頭為可以添加的地方:即下采樣之間。 通道空間注意力是一個(gè)即插即

    2024年03月15日
    瀏覽(19)
  • YOLO Air:YOLO科研改進(jìn)論文推薦 | 改進(jìn)組合上千種搭配,包括Backbone,Neck,Head,注意力機(jī)制,適用于YOLOv5、YOLOv7、YOLOX等算法

    YOLO Air:YOLO科研改進(jìn)論文推薦 | 改進(jìn)組合上千種搭配,包括Backbone,Neck,Head,注意力機(jī)制,適用于YOLOv5、YOLOv7、YOLOX等算法

    ??????YOLOAir開(kāi)源算法庫(kù)?。?! ??統(tǒng)一使用 YOLOv5、YOLOv7 代碼框架, 結(jié)合不同模塊來(lái)構(gòu)建不同的YOLO目標(biāo)檢測(cè)模型。 ??本項(xiàng)目包含大量的改進(jìn)方式,降低改進(jìn)難度,改進(jìn)點(diǎn)包含 【Backbone特征主干】 、 【Neck特征融合】 、 【Head檢測(cè)頭】 、 【注意力機(jī)制】 、 【IoU損失函數(shù)】

    2024年02月01日
    瀏覽(40)
  • YOLOv8改進(jìn)算法之添加CA注意力機(jī)制

    YOLOv8改進(jìn)算法之添加CA注意力機(jī)制

    CA(Coordinate Attention)注意力機(jī)制是一種用于加強(qiáng)深度學(xué)習(xí)模型對(duì)輸入數(shù)據(jù)的空間結(jié)構(gòu)理解的注意力機(jī)制。CA 注意力機(jī)制的核心思想是引入坐標(biāo)信息,以便模型可以更好地理解不同位置之間的關(guān)系。如下圖: 1. 輸入特征 : CA 注意力機(jī)制的輸入通常是一個(gè)特征圖,它通常是卷積

    2024年02月08日
    瀏覽(27)
  • YOLOv5改進(jìn)算法之添加CA注意力機(jī)制模塊

    YOLOv5改進(jìn)算法之添加CA注意力機(jī)制模塊

    目錄 ? 1.CA注意力機(jī)制 2.YOLOv5添加注意力機(jī)制 送書(shū)活動(dòng) ? CA(Coordinate Attention)注意力機(jī)制是一種用于加強(qiáng)深度學(xué)習(xí)模型對(duì)輸入數(shù)據(jù)的空間結(jié)構(gòu)理解的注意力機(jī)制。CA 注意力機(jī)制的核心思想是引入坐標(biāo)信息,以便模型可以更好地理解不同位置之間的關(guān)系。如下圖: 1. 輸入特征

    2024年02月09日
    瀏覽(30)
  • SA-Net:用于醫(yī)學(xué)圖像分割的尺度注意網(wǎng)絡(luò) A scale-attention network for medical image segmentation

    ????????醫(yī)學(xué)圖像的語(yǔ)義分割為后續(xù)的圖像分析和理解任務(wù)提供了重要的基石。隨著深度學(xué)習(xí)方法的快速發(fā)展,傳統(tǒng)的 U-Net 分割網(wǎng)絡(luò)已在許多領(lǐng)域得到應(yīng)用?;谔剿餍詫?shí)驗(yàn),已發(fā)現(xiàn)多尺度特征對(duì)于醫(yī)學(xué)圖像的分割非常重要。在本文中,我們提出了一種尺度注意力深度學(xué)

    2024年02月16日
    瀏覽(27)
  • [YOLOv7/YOLOv5系列算法改進(jìn)NO.4]添加ECA通道注意力機(jī)制

    [YOLOv7/YOLOv5系列算法改進(jìn)NO.4]添加ECA通道注意力機(jī)制

    ?前? ? ? 言 作為當(dāng)前先進(jìn)的深度學(xué)習(xí)目標(biāo)檢測(cè)算法YOLOv5,已經(jīng)集合了大量的trick,但是在處理一些復(fù)雜背景問(wèn)題的時(shí)候,還是容易出現(xiàn)錯(cuò)漏檢的問(wèn)題。此后的系列文章,將重點(diǎn)對(duì)YOLOv5的如何改進(jìn)進(jìn)行詳細(xì)的介紹,目的是為了給那些搞科研的同學(xué)需要?jiǎng)?chuàng)新點(diǎn)或者搞工程項(xiàng)目的

    2024年02月05日
    瀏覽(28)
  • YOLO算法創(chuàng)新改進(jìn)系列項(xiàng)目匯總(入門(mén)級(jí)教程指南)

    YOLO算法創(chuàng)新改進(jìn)系列項(xiàng)目匯總(入門(mén)級(jí)教程指南)

    ??一、主干網(wǎng)絡(luò)改進(jìn)(持續(xù)更新中)???? ??二、輕量化網(wǎng)絡(luò)(持續(xù)更新中)???? ??三、注意力機(jī)制(持續(xù)更新中)???? ??四、檢測(cè)頭部改進(jìn)(持續(xù)更新中)???? ??五、空間金字塔池化(持續(xù)更新中)???? ??六、損失函數(shù)及NMS改進(jìn)(持續(xù)更新中)???? ??七、其

    2023年04月24日
    瀏覽(61)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包