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

Yolov5改進(jìn)算法之添加Res2Net模塊

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

目錄

1. Res2Net介紹

1.1 Res2Net的背景和動(dòng)機(jī)

1.2 Res2Net的基本概念

2. YOLOV5添加Res2Net模塊


?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-695250.html

Res2Net(Residual Resolution Network)是一種用于圖像處理和計(jì)算機(jī)視覺(jué)任務(wù)的深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)。它旨在解決傳統(tǒng)的ResNet(Residual Network)存在的問(wèn)題,如對(duì)不同尺度和分辨率特征的建模不足以及網(wǎng)絡(luò)深度受限的問(wèn)題。Res2Net通過(guò)引入多分支的結(jié)構(gòu)和逐級(jí)增加的分辨率來(lái)提高網(wǎng)絡(luò)的表達(dá)能力,從而在各種視覺(jué)任務(wù)中取得了顯著的性能提升。

1. Res2Net介紹

1.1 Res2Net的背景和動(dòng)機(jī)

ResNet是一種非常成功的深度卷積神經(jīng)網(wǎng)絡(luò),但它存在一些問(wèn)題。其中最重要的問(wèn)題之一是對(duì)不同尺度和分辨率特征的建模不足。傳統(tǒng)的ResNet塊只使用單一的殘差連接來(lái)傳遞信息,這意味著網(wǎng)絡(luò)可能無(wú)法有效地捕獲不同層次的特征。

Res2Net的動(dòng)機(jī)是通過(guò)引入多分支結(jié)構(gòu)和逐級(jí)增加的分辨率來(lái)提高網(wǎng)絡(luò)的表達(dá)能力。這使得網(wǎng)絡(luò)能夠更好地處理多尺度和多分辨率的特征,從而提高了其在各種計(jì)算機(jī)視覺(jué)任務(wù)中的性能。

1.2 Res2Net的基本概念

ResNet中的基本構(gòu)建塊,即殘差塊(Residual Block)。一個(gè)典型的殘差塊包含兩個(gè)主要分支:一個(gè)跳躍連接(Identity Shortcut)和一個(gè)經(jīng)過(guò)多個(gè)卷積層的主路徑。跳躍連接用于繞過(guò)一些卷積層,以確保梯度能夠順暢地傳播。

Res2Net的核心思想是將多個(gè)分支的信息融合在一個(gè)殘差塊中,以提高網(wǎng)絡(luò)對(duì)不同分辨率的特征的表達(dá)能力。具體來(lái)說(shuō),Res2Net引入了多尺度子網(wǎng)絡(luò)(Multi-Scale Sub-Networks)來(lái)處理不同分辨率的特征,然后將它們的輸出級(jí)聯(lián)在一起。這種級(jí)聯(lián)結(jié)構(gòu)允許網(wǎng)絡(luò)同時(shí)學(xué)習(xí)低分辨率和高分辨率的特征表示,從而提高了網(wǎng)絡(luò)的感知能力。

Res2Net的核心結(jié)構(gòu)是一個(gè)多分支的殘差塊,每個(gè)分支都有自己的卷積層,負(fù)責(zé)處理不同分辨率的特征。這些分支的輸出級(jí)聯(lián)在一起,以獲得最終的塊輸出。多個(gè)這樣的塊可以構(gòu)建成深層網(wǎng)絡(luò),以處理更復(fù)雜的任務(wù)。

Res2Net的工作原理在前向傳播過(guò)程中如下:

  1. 輸入特征首先經(jīng)過(guò)一個(gè)初始卷積層,用于提取低級(jí)別的特征表示。
  2. 接下來(lái),輸入特征被送入多個(gè)Res2Net塊。每個(gè)塊都包含多個(gè)分支,每個(gè)分支處理不同分辨率的特征。
  3. 每個(gè)分支內(nèi)部包含卷積層、激活函數(shù)和規(guī)范化層等,用于提取和調(diào)整特征。
  4. 分支的輸出級(jí)聯(lián)在一起,形成塊的最終輸出。
  5. 這個(gè)塊的輸出可以傳遞到下一個(gè)塊,也可以連接到網(wǎng)絡(luò)的其他部分。

如下圖:

Yolov5改進(jìn)算法之添加Res2Net模塊,YOLO改進(jìn)系列,YOLO

2. YOLOV5添加Res2Net模塊

在models/common.py文件中增加以下模塊:

class Bottle2neck(nn.Module):
    expansion = 1

    def __init__(self, inplanes, planes, shortcut, baseWidth=26, scale=4):
        """ Constructor
        Args:
            inplanes: input channel dimensionality
            planes: output channel dimensionality
            baseWidth: basic width of conv3x3
            scale: number of scale.
        """
        super(Bottle2neck, self).__init__()

        width = int(math.floor(planes * (baseWidth / 64.0)))
        self.conv1 = Conv(inplanes, width * scale, k=1)

        if scale == 1:
            self.nums = 1
        else:
            self.nums = scale - 1
        convs = []
        for i in range(self.nums):
            convs.append(Conv(width, width, k=3))
        self.convs = nn.ModuleList(convs)

        self.conv3 = Conv(width * scale, planes * self.expansion, k=1, act=False)

        self.silu = nn.SiLU(inplace=True)
        self.scale = scale
        self.width = width
        self.shortcut = shortcut

    def forward(self, x):

        if self.shortcut:
            residual = x
        out = self.conv1(x)
        spx = torch.split(out, self.width, 1)
        for i in range(self.nums):
            if i == 0:
                sp = spx[i]
            else:
                sp = sp + spx[i]
            sp = self.convs[i](sp)
            if i == 0:
                out = sp
            else:
                out = torch.cat((out, sp), 1)
        if self.scale != 1:
            out = torch.cat((out, spx[self.nums]), 1)

        out = self.conv3(out)
        print(out.shape)
        if self.shortcut:
            out += residual
        out = self.silu(out)
        return out


class C3_Res2Block(C3):
    # CSP Bottleneck with 3 convolutions
    def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):  # ch_in, ch_out, number, shortcut, groups, expansion
        super().__init__(c1, c2, n, shortcut, g, e)
        c_ = int(c2 * e)  # hidden channels
        self.m = nn.Sequential(*(Bottle2neck(c_, c_, shortcut) for _ in range(n)))

在models/yolo.py文件下里的parse_model函數(shù)將類名加入進(jìn)去,如下圖:

Yolov5改進(jìn)算法之添加Res2Net模塊,YOLO改進(jìn)系列,YOLO

創(chuàng)建添加Res2Net模塊的YOLOv5的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_Res2Block, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3_Res2Block, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3_Res2Block, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3_Res2Block, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 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_Res2Block, [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_Res2Block, [256, False]],  # 17 (P3/8-small)

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

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

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

?

?

到了這里,關(guān)于Yolov5改進(jìn)算法之添加Res2Net模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • 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)
  • 優(yōu)化改進(jìn)YOLOv5算法之添加SE、CBAM、CA模塊(超詳細(xì))

    優(yōu)化改進(jìn)YOLOv5算法之添加SE、CBAM、CA模塊(超詳細(xì))

    目錄 1 SENet 1.1 SENet原理 1.2?SENet代碼(Pytorch) 1.3?YOLOv5中加入SE模塊? 1.3.1?common.py配置 1.3.2?yolo.py配置 1.3.3 創(chuàng)建添加RepVGG模塊的YOLOv5的yaml配置文件 2 CBAM 2.1 CBAM原理 2.2?CBAM代碼(Pytorch) 2.3?YOLOv5中加入CBAM模塊? 2.3.1?common.py配置 2.3.2?yolo.py配置 2.3.3 創(chuàng)建添加CBAM模塊的YOLOv5的yaml配

    2024年04月17日
    瀏覽(125)
  • [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)
  • 優(yōu)化改進(jìn)YOLOv5算法之添加GIoU、DIoU、CIoU、EIoU、Wise-IoU模塊(超詳細(xì))

    優(yōu)化改進(jìn)YOLOv5算法之添加GIoU、DIoU、CIoU、EIoU、Wise-IoU模塊(超詳細(xì))

    目錄 1、IoU 1.1 什么是IOU ?1.2 IOU代碼 2、GIOU 2.1 為什么提出GIOU 2.2 GIoU代碼 3 DIoU? 3.1 為什么提出DIOU 3.2 DIOU代碼 4 CIOU 4.1 為什么提出CIOU 4.2 CIOU代碼 5 EIOU 5.1 為什么提出EIOU? 5.2 EIOU代碼 6?Wise-IoU 7 YOLOv5中添加GIoU、DIoU、CIoU、EIoU、Wise-IoU損失函數(shù) 論文鏈接為:UnitBox: An Advanced Objec

    2024年02月04日
    瀏覽(26)
  • 【Yolov5】Yolov5添加ASFF, 網(wǎng)絡(luò)改進(jìn)優(yōu)化

    【Yolov5】Yolov5添加ASFF, 網(wǎng)絡(luò)改進(jìn)優(yōu)化

    ?????? Yolov5添加ASFF ?????? Yolov5是單階段目標(biāo)檢測(cè)算法的一種,網(wǎng)上有很多改進(jìn)其性能的方法,添加ASFF模塊就是其中一種,但是ASFF本身是用于Yolov3的,在v5中無(wú)法直接應(yīng)用,且網(wǎng)上許多博客都是介紹這個(gè)模塊的原理,沒(méi)有直接可以應(yīng)用的代碼程序,我這里提供一種方案

    2023年04月08日
    瀏覽(76)
  • YOLOv5改進(jìn)添加解耦頭、ASFF

    YOLOv5改進(jìn)添加解耦頭、ASFF

    網(wǎng)上有很多添加解耦頭的博客,在此記錄下我使用解耦頭對(duì)YOLOv5改進(jìn),若侵權(quán)刪 解耦頭的介紹過(guò)段時(shí)間再寫(xiě),先直接上添加方法(這篇文章寫(xiě)的很好,解釋了解耦頭的作用 ) ASFF我沒(méi)有使用過(guò),但是按照下邊的方法添加后也能夠運(yùn)行 我是在YOLOv5-7.0版本上進(jìn)行修改,如果有什

    2024年02月06日
    瀏覽(23)
  • 改進(jìn)YOLOv5:添加EMA注意力機(jī)制

    改進(jìn)YOLOv5:添加EMA注意力機(jī)制

    提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 本文主要介紹一種在YOLOv5-7.0中添加EMA注意力機(jī)制的方法。EMA注意力機(jī)制原論文地址,有關(guān)EMA注意力機(jī)制的解讀可參考文章。 在yolov5的models文件中新建一個(gè)名為EMA.py文件,將下述代碼復(fù)制到EMA.py文件中并

    2024年02月09日
    瀏覽(31)
  • YOLOv5改進(jìn)系列(1)——添加SE注意力機(jī)制

    YOLOv5改進(jìn)系列(1)——添加SE注意力機(jī)制

    從這篇開(kāi)始我們進(jìn)入YOLOv5改進(jìn)系列。那就先從最簡(jiǎn)單的添加注意力機(jī)制開(kāi)始吧?。ǎ幔┄J 【YOLOv5改進(jìn)系列】前期回顧: YOLOv5改進(jìn)系列(0)——重要性能指標(biāo)與訓(xùn)練結(jié)果評(píng)價(jià)及分析 目錄

    2024年02月03日
    瀏覽(36)
  • (超詳細(xì))7-YOLOV5改進(jìn)-添加 CoTAttention注意力機(jī)制

    (超詳細(xì))7-YOLOV5改進(jìn)-添加 CoTAttention注意力機(jī)制

    1、在yolov5/models下面新建一個(gè)CoTAttention.py文件,在里面放入下面的代碼 代碼如下: 2、找到y(tǒng)olo.py文件,進(jìn)行更改內(nèi)容 在29行加一個(gè) from models.CoTAttention import CoTAttention , 保存即可 3、找到自己想要更改的yaml文件,我選擇的yolov5s.yaml文件(你可以根據(jù)自己需求進(jìn)行選擇),將剛剛寫(xiě)

    2024年01月21日
    瀏覽(35)
  • (超詳細(xì))2-YOLOV5改進(jìn)-添加SimAM注意力機(jī)制

    (超詳細(xì))2-YOLOV5改進(jìn)-添加SimAM注意力機(jī)制

    1、在yolov5/models下面新建一個(gè)SimAM.py文件,在里面放入下面的代碼 代碼如下: 2、找到y(tǒng)olo.py文件,進(jìn)行更改內(nèi)容 在26行加一個(gè) from models SimAM import SimAM , 保存即可 3、找到自己想要更改的yaml文件,我選擇的yolov5s.yaml文件(你可以根據(jù)自己需求進(jìn)行選擇),將剛剛寫(xiě)好的模塊SimAM加

    2024年01月17日
    瀏覽(69)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包