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

改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯)

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

1、計(jì)算機(jī)視覺(jué)中的注意力機(jī)制

計(jì)算機(jī)視覺(jué)中的注意力機(jī)制是一種聚焦于局部信息的機(jī)制,其基本思想是讓系統(tǒng)學(xué)會(huì)忽略無(wú)關(guān)信息而關(guān)注重點(diǎn)信息。這種機(jī)制在圖像識(shí)別、物體檢測(cè)和人臉識(shí)別等任務(wù)中都發(fā)揮了重要作用。

注意力機(jī)制的實(shí)現(xiàn)方法有多種,其中包括空間注意力模型、通道注意力模型、空間和通道混合注意力模型等。這些模型可以將圖像中的關(guān)鍵信息提取出來(lái),并通過(guò)抑制無(wú)用信息來(lái)提高模型的性能。在計(jì)算機(jī)視覺(jué)中,注意力機(jī)制被廣泛應(yīng)用于各種任務(wù),如目標(biāo)檢測(cè)、圖像分類(lèi)、人臉識(shí)別等。

通過(guò)引入注意力機(jī)制,計(jì)算機(jī)視覺(jué)系統(tǒng)可以更加高效地處理圖像數(shù)據(jù),減少計(jì)算資源的浪費(fèi),同時(shí)提高模型的性能和準(zhǔn)確性。在未來(lái),隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,注意力機(jī)制在計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用前景將會(huì)更加廣闊。

1.1 CBAM:通道注意力和空間注意力的集成者

CBAM(Convolutional Block Attention Module)是一種注意力機(jī)制,它結(jié)合了通道注意力和空間注意力來(lái)提高卷積神經(jīng)網(wǎng)絡(luò)的性能。通道注意力模塊通過(guò)計(jì)算每個(gè)通道的重要性,以區(qū)分不同通道之間的特征。空間注意力模塊則計(jì)算每個(gè)像素在空間上的重要性,以更好地捕捉圖像中的空間結(jié)構(gòu)。

論文題目:《CBAM: Convolutional Block Attention Module》
論文地址: https://arxiv.org/pdf/1807.06521.pdf

改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯),YOLO,YOLO,CBAM
上圖可以看到,CBAM包含CAM(Channel Attention Module)和SAM(Spartial Attention Module)兩個(gè)子模塊,分別進(jìn)行通道和空間上的Attention。這樣不只能夠節(jié)約參數(shù)和計(jì)算力,并且保證了其能夠做為即插即用的模塊集成到現(xiàn)有的網(wǎng)絡(luò)架構(gòu)中去。

CBAM的工作原理如下:

  1. 通道注意力模塊:通過(guò)在通道維度上對(duì)輸入特征圖進(jìn)行最大池化和平均池化,然后將這兩個(gè)池化結(jié)果輸入到一個(gè)全連接層中,最后輸出一個(gè)通道注意力權(quán)重向量。這個(gè)權(quán)重向量可以用來(lái)加權(quán)輸入特征圖的每個(gè)通道,以增強(qiáng)重要的通道特征并抑制不重要的通道特征。
  2. 空間注意力模塊:類(lèi)似于通道注意力模塊,空間注意力模塊也是通過(guò)對(duì)輸入特征圖進(jìn)行操作來(lái)計(jì)算每個(gè)像素的重要性。它通常使用全局平均池化來(lái)獲取每個(gè)像素的特征向量,然后通過(guò)一個(gè)全連接層來(lái)輸出每個(gè)像素的權(quán)重。這些權(quán)重可以用于加權(quán)輸入特征圖的每個(gè)像素,以強(qiáng)調(diào)圖像中的重要區(qū)域并抑制不重要的區(qū)域。

通過(guò)將通道注意力和空間注意力模塊串聯(lián)起來(lái),可以得到一個(gè)完整的CBAM模塊,用于插入到卷積神經(jīng)網(wǎng)絡(luò)中以提升模型性能。CBAM可以顯著提高計(jì)算機(jī)視覺(jué)任務(wù)的性能,例如目標(biāo)檢測(cè)、圖像分類(lèi)和語(yǔ)義分割等。

2.Yolov8加入CBAM

改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯),YOLO,YOLO,CBAM

2.1 CBAM加入cony.py中(相當(dāng)于yolov5中的common.py)

  
"""
通道注意力模型: 通道維度不變,壓縮空間維度。該模塊關(guān)注輸入圖片中有意義的信息。
1)假設(shè)輸入的數(shù)據(jù)大小是(b,c,w,h)
2)通過(guò)自適應(yīng)平均池化使得輸出的大小變?yōu)?b,c,1,1)
3)通過(guò)2d卷積和sigmod激活函數(shù)后,大小是(b,c,1,1)
4)將上一步輸出的結(jié)果和輸入的數(shù)據(jù)相乘,輸出數(shù)據(jù)大小是(b,c,w,h)。
"""
class ChannelAttention(nn.Module):
    # Channel-attention module https://github.com/open-mmlab/mmdetection/tree/v3.0.0rc1/configs/rtmdet
    def __init__(self, channels: int) -> None:
        super().__init__()
        self.pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Conv2d(channels, channels, 1, 1, 0, bias=True)
        self.act = nn.Sigmoid()

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        return x * self.act(self.fc(self.pool(x)))

"""
空間注意力模塊:空間維度不變,壓縮通道維度。該模塊關(guān)注的是目標(biāo)的位置信息。
1) 假設(shè)輸入的數(shù)據(jù)x是(b,c,w,h),并進(jìn)行兩路處理。
2)其中一路在通道維度上進(jìn)行求平均值,得到的大小是(b,1,w,h);另外一路也在通道維度上進(jìn)行求最大值,得到的大小是(b,1,w,h)。
3) 然后對(duì)上述步驟的兩路輸出進(jìn)行連接,輸出的大小是(b,2,w,h)
4)經(jīng)過(guò)一個(gè)二維卷積網(wǎng)絡(luò),把輸出通道變?yōu)?,輸出大小是(b,1,w,h)
4)將上一步輸出的結(jié)果和輸入的數(shù)據(jù)x相乘,最終輸出數(shù)據(jù)大小是(b,c,w,h)。
"""
class SpatialAttention(nn.Module):
    # Spatial-attention module
    def __init__(self, kernel_size=7):
        super().__init__()
        assert kernel_size in (3, 7), 'kernel size must be 3 or 7'
        padding = 3 if kernel_size == 7 else 1
        self.cv1 = nn.Conv2d(2, 1, kernel_size, padding=padding, bias=False)
        self.act = nn.Sigmoid()

    def forward(self, x):
        return x * self.act(self.cv1(torch.cat([torch.mean(x, 1, keepdim=True), torch.max(x, 1, keepdim=True)[0]], 1)))

class CBAM(nn.Module):
    # Convolutional Block Attention Module
    def __init__(self, c1, kernel_size=7):  # ch_in, kernels
        super().__init__()
        self.channel_attention = ChannelAttention(c1)
        self.spatial_attention = SpatialAttention(kernel_size)
        
        

    def forward(self, x):
        return self.spatial_attention(self.channel_attention(x))
    
    

2.2 CBAM加入tasks.py中(相當(dāng)于yolov5中的yolo.py)

from ultralytics.nn.modules import (C1, C2, C3, C3TR, SPP, SPPF, Bottleneck, BottleneckCSP, C2f, C3Ghost, C3x, Classify,
                                    Concat, Conv, ConvTranspose, Detect, DWConv, DWConvTranspose2d, Ensemble, Focus,
                                    GhostBottleneck, GhostConv, Segment,CBAM, GAM_Attention , ResBlock_CBAM)

如圖所示:
改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯),YOLO,YOLO,CBAM

2.4 還是在tasks.py,def parse_model(d, ch, verbose=True):函數(shù)中

#        添加CBAM注意力機(jī)制
        elif m is CBAM:
            c1, c2 = ch[f], args[0]
            if c2 != nc:  # if c2 not equal to number of classes (i.e. for Classify() output)
                c2 = make_divisible(min(c2, max_channels) * width, 8)
            args = [c1,  *args[1:]]

如圖所示:
改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯),YOLO,YOLO,CBAM

2.5 CBAM修改對(duì)應(yīng)yaml

CBAM加入yolov8
將yolov8.yaml復(fù)制一份,改為yolov8n-CBAM.yaml
路徑:ultralytics/ultralytics/cfg/models/v8/yolov8n-CBAM.yaml

改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯),YOLO,YOLO,CBAM
yolov8n-CBAM.yaml

# Ultralytics YOLO ??, GPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
 
# Parameters
nc: 7  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n.yaml' will call yolov8.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]  # YOLOv8n summary: 225 layers,  3157200 parameters,  3157184 gradients,   8.9 GFLOPs
  s: [0.33, 0.50, 1024]  # YOLOv8s summary: 225 layers, 11166560 parameters, 11166544 gradients,  28.8 GFLOPs
  m: [0.67, 0.75, 768]   # YOLOv8m summary: 295 layers, 25902640 parameters, 25902624 gradients,  79.3 GFLOPs
  l: [1.00, 1.00, 512]   # YOLOv8l summary: 365 layers, 43691520 parameters, 43691504 gradients, 165.7 GFLOPs
  x: [1.00, 1.25, 512]   # YOLOv8x summary: 365 layers, 68229648 parameters, 68229632 gradients, 258.5 GFLOPs
 
# YOLOv8.0n backbone
backbone:
  # [from, repeats, module, args]
  - [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2
  - [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4
  - [-1, 3, C2f, [128, True]]
  - [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8
  - [-1, 6, C2f, [256, True]]
  - [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16
  - [-1, 6, C2f, [512, True]]
  - [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32
  - [-1, 3, C2f, [1024, True]]
  - [-1, 1, SPPF, [1024, 5]]  # 9

# YOLOv8.0n head
head:
  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  - [-1, 3, C2f, [512]]  # 12
  - [-1, 1, CBAM, [512]]

  - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  - [-1, 3, C2f, [256]]  # 16 (P3/8-small)
  - [-1, 1, CBAM, [256]]

  - [-1, 1, Conv, [256, 3, 2]]
  - [[-1, 13], 1, Concat, [1]]  # cat head P4
  - [-1, 3, C2f, [512]]  # 20 (P4/16-medium)
  - [-1, 1, CBAM, [512]]

  - [-1, 1, Conv, [512, 3, 2]]
  - [[-1, 9], 1, Concat, [1]]  # cat head P5
  - [-1, 3, C2f, [1024]]  # 24 (P5/32-large)
  - [-1, 1, CBAM, [1024]]

  - [[17, 21, 25], 1, Detect, [nc]]  # Detect(P3, P4, P5)
 

可以看到在head層添加了四層CBAM注意力機(jī)制,至此完成!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-791562.html

到了這里,關(guān)于改進(jìn)YOLOv8:添加CBAM注意力機(jī)制(漲點(diǎn)明顯)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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系列:改進(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)
  • YOLOV8改進(jìn):在C2f模塊不同位置添加注意力機(jī)制

    本文以CBAM注意力機(jī)制為例,在c2f模塊的不同位置添加注意力機(jī)制,沒(méi)有用v8自帶的CBAM模塊,而是自己之前用過(guò)的代碼。 CBAM簡(jiǎn)單介紹: CBAM這是一種用于前饋卷積神經(jīng)網(wǎng)絡(luò)的簡(jiǎn)單而有效的注意模塊。 給定一個(gè)中間特征圖,我們的模塊會(huì)沿著兩個(gè)獨(dú)立的維度(通道和空間)依次

    2024年02月11日
    瀏覽(22)
  • YOLOv8、YOLOv7、YOLOv5改進(jìn)注意力機(jī)制:首發(fā)最全匯總 | S2A, SE,SimAM, SKA,ShA, SOCA, CA, CBAM, CrissCrossA, NAM, GAM等

    ??統(tǒng)一使用 YOLOv5 代碼框架, 結(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ù)】 、 【NMS】 、 【Loss計(jì)算方式】 、 【自注

    2024年02月06日
    瀏覽(34)
  • Yolov5 中添加注意力機(jī)制 CBAM

    Yolov5 中添加注意力機(jī)制 CBAM

    CBAM(Convolutional Block Attention Module)是一種注意力機(jī)制,它通過(guò)關(guān)注輸入數(shù)據(jù)中的重要特征來(lái)增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的性能。CBAM的原理可以分為兩個(gè)部分:空間注意力模塊和通道注意力模塊。 空間注意力模塊:該模塊關(guān)注輸入特征圖的每個(gè)空間位置的重要性。它首先對(duì)特征

    2024年02月10日
    瀏覽(17)
  • YOLOv8/v7/v5全網(wǎng)首發(fā)獨(dú)家創(chuàng)新,內(nèi)涵CBAM注意力改進(jìn)、ECA改進(jìn),SPPF改進(jìn)等

    YOLOv8/v7/v5全網(wǎng)首發(fā)獨(dú)家創(chuàng)新,內(nèi)涵CBAM注意力改進(jìn)、ECA改進(jìn),SPPF改進(jìn)等

    ?????? 全網(wǎng)獨(dú)家首發(fā)創(chuàng)新(原創(chuàng)),純自研模塊,適合paper ?。?! ?????? 內(nèi)涵CBAM注意力改進(jìn)、ECA改進(jìn),SPPF改進(jìn)等?。?! 重新設(shè)計(jì)全局平均池化層和全局最大池化層,增強(qiáng)全局視角信息和不同尺度大小的特征 分析SPPF的問(wèn)題點(diǎn),只關(guān)注邊緣信息而忽略背景信息 如何改進(jìn)

    2024年01月23日
    瀏覽(41)
  • YOLOv8改進(jìn) | 如何在網(wǎng)絡(luò)結(jié)構(gòu)中添加注意力機(jī)制、C2f、卷積、Neck、檢測(cè)頭

    本篇文章的內(nèi)容是在大家得到一個(gè) 改進(jìn)版本的 C2f一個(gè)新的注意力機(jī)制、或者一個(gè)新的卷積模塊、或者是檢測(cè)頭的時(shí)候如何 替換我們YOLOv8模型中的原有的模塊 ,從而用你的模塊去進(jìn)行訓(xùn)練模型或者檢測(cè)。因?yàn)樽罱_(kāi)了一個(gè)專(zhuān)欄里面涉及到挺多改進(jìn)的地方,不能每篇文章都去講

    2024年02月05日
    瀏覽(50)
  • 漲點(diǎn)技巧:注意力機(jī)制---Yolov8引入CBAM、GAM、Resnet_CBAM

    漲點(diǎn)技巧:注意力機(jī)制---Yolov8引入CBAM、GAM、Resnet_CBAM

    一般來(lái)說(shuō),注意力機(jī)制通常被分為以下基本四大類(lèi): 通道注意力 Channel Attention 空間注意力機(jī)制 Spatial Attention 時(shí)間注意力機(jī)制 Temporal Attention 分支注意力機(jī)制 Branch Attention 輕量級(jí)的卷積注意力模塊,它結(jié)合了通道和空間的注意力機(jī)制模塊 論文題目:《CBAM: Convolutional Block Atte

    2024年02月04日
    瀏覽(31)
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力機(jī)制

    YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力機(jī)制

    記錄在YOLOv5添加注意力機(jī)制,方便自己查閱。 由于本人水平有限,難免出現(xiàn)錯(cuò)漏,敬請(qǐng)批評(píng)改正。 更多精彩內(nèi)容,可點(diǎn)擊進(jìn)入YOLO系列專(zhuān)欄或我的個(gè)人主頁(yè)查看 YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU https://blog.csdn.net/FriendshipTang/article/details/129969044 YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

    2024年02月03日
    瀏覽(22)
  • 改進(jìn)YOLOv8 | 即插即用篇 | 手把手教你 YOLOv8 添加注意力機(jī)制 | 適用于【檢測(cè)任務(wù)】【分類(lèi)任務(wù)】【分割任務(wù)】【關(guān)鍵點(diǎn)任務(wù)】| 20+ 種全打通!

    ??更新日志 2023/5/23 更改 DoubleAttention 寫(xiě)法。 2023/10/12 更改博文,適配最新版添加方式。 視頻教程地址-嗶哩嗶哩

    2024年02月07日
    瀏覽(33)
  • YOLOv5、YOLOv8改進(jìn):S2注意力機(jī)制

    YOLOv5、YOLOv8改進(jìn):S2注意力機(jī)制

    目錄 1.簡(jiǎn)介 2.YOLOv5改進(jìn) 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 ?S2-MLPv2注意力機(jī)制 ? 最近,出現(xiàn)了基于 MLP 的視覺(jué)主干。與 CNN 和視覺(jué)Transformer相比,基于 MLP 的視覺(jué)架構(gòu)具有較少的歸納偏差,在圖像識(shí)別方面實(shí)現(xiàn)了有競(jìng)爭(zhēng)力的性能。其中,spatial-shift MLP (S2-MLP),

    2024年02月12日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包