国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站做的漂浮為什么不動免費p站推廣網(wǎng)站入口

網(wǎng)站做的漂浮為什么不動,免費p站推廣網(wǎng)站入口,如何做公司自己的網(wǎng)站,網(wǎng)站建設(shè)做微營銷一、本文介紹 在這篇文章中,我們將講解如何將LSKAttention大核注意力機制應(yīng)用于YOLOv10,以實現(xiàn)顯著的性能提升。首先,我們介紹LSKAttention機制的基本原理,它主要通過將深度卷積層的2D卷積核分解為水平和垂直1D卷積核&#xff0…

?一、本文介紹?

在這篇文章中,我們將講解如何將LSKAttention大核注意力機制應(yīng)用于YOLOv10,以實現(xiàn)顯著的性能提升。首先,我們介紹LSKAttention機制的基本原理,它主要通過將深度卷積層的2D卷積核分解為水平和垂直1D卷積核,減少了計算復(fù)雜性和內(nèi)存占用。接著,我們介紹將這一機制整合到Y(jié)OLOv10的方法,以及它如何幫助提高處理大型數(shù)據(jù)集和復(fù)雜視覺任務(wù)的效率和準(zhǔn)確性。本文還將提供代碼實現(xiàn)細節(jié)和使用方法,展示這種改進對目標(biāo)檢測、語義分割等方面的積極影響。通過實驗YOLOv10在整合LSKAttention機制后,實現(xiàn)了檢測精度提升(下面會附上改進LSKAttention機制和基礎(chǔ)版本的結(jié)果對比圖)。

?專欄回顧:YOLOv10改進系列專欄——本專欄持續(xù)復(fù)習(xí)各種頂會內(nèi)容——科研必備?


目錄

?一、本文介紹?

二、LSKAttention的機制原理?

三、LSKAttention的代碼

四、手把手教你將LSKAttention添加到你的網(wǎng)絡(luò)結(jié)構(gòu)中

4.1?LSKAttention的添加教程

4.2?LSKAttention的yaml文件和訓(xùn)練截圖

4.2.1 LSKAttention的yaml文件

4.2.2 LSKAttention的訓(xùn)練過程截圖?

五、LSKAttention可添加的位置

5.1 推薦LSKAttention可添加的位置?

5.2圖示LSKAttention可添加的位置?

六、本文總結(jié)?


二、LSKAttention的機制原理?

論文地址:官方論文地址

代碼地址:官方代碼地址


《Large Separable Kernel Attention》這篇論文提出的LSKAttention的機制原理是針對傳統(tǒng)大核注意力(Large Kernel Attention,LKA)模塊在視覺注意網(wǎng)絡(luò)(Visual Attention Networks,VAN)中的應(yīng)用問題進行的改進。LKA模塊在處理大尺寸卷積核時面臨著高計算和內(nèi)存需求的挑戰(zhàn)。LSKAttention通過以下幾個關(guān)鍵步驟和原理來解決這些問題:

  1. 核分解:LSKAttention的核心創(chuàng)新是將傳統(tǒng)的2D卷積核分解為兩個1D卷積核。首先,它將一個大的2D核分解成水平(橫向)和垂直(縱向)的兩個1D核。這樣的分解大幅降低了參數(shù)數(shù)量和計算復(fù)雜度。

  2. 串聯(lián)卷積操作:在進行卷積操作時,LSKAttention首先使用一個1D核對輸入進行水平方向上的卷積,然后使用另一個1D核進行垂直方向上的卷積。這兩步卷積操作串聯(lián)執(zhí)行,從而實現(xiàn)了與原始大尺寸2D核相似的效果。

  3. 計算效率提升:由于分解后的1D卷積核大大減少了參數(shù)的數(shù)量,LSKAttention在執(zhí)行時的計算效率得到顯著提升。這種方法特別適用于處理大尺寸的卷積核,能夠有效降低內(nèi)存占用和計算成本。

  4. 保持效果:雖然采用了分解和串聯(lián)的策略,LSKAttention仍然能夠保持類似于原始LKA的性能。這意味著在處理圖像的關(guān)鍵特征(如邊緣、紋理和形狀)時,LSKAttention能夠有效地捕捉到重要信息。

  5. 適用于多種任務(wù):LSKAttention不僅在圖像分類任務(wù)中表現(xiàn)出色,還能夠在目標(biāo)檢測、語義分割等多種計算機視覺任務(wù)中有效應(yīng)用,顯示出其廣泛的適用性。

總結(jié):LSKAttention通過創(chuàng)新的核分解和串聯(lián)卷積策略,在降低計算和內(nèi)存成本的同時,保持了高效的圖像處理能力,這在處理大尺寸核和復(fù)雜圖像數(shù)據(jù)時特別有價值。

上圖展示了在不同大核分解方法和核大小下的速度-精度權(quán)衡。在這個比較中,使用了不同的標(biāo)記來代表不同的核大小,并且以VAN-Tiny作為對比的模型。從圖中可以看出,LKA的樸素設(shè)計(LKA-trivial)以及在VAN中的實際設(shè)計,在核大小增加時會導(dǎo)致更高的GFLOPs(十億浮點運算次數(shù))。相比之下,論文提出的LSKA(Large Separable Kernel Attention)-trivial和VAN中的LSKA在核大小增加時顯著降低了GFLOPs,同時沒有降低性能?

上圖展示了大核注意力模塊不同設(shè)計的比較,具體包括:

  1. LKA-trivial:樸素的2D大核深度卷積(DW-Conv)與1×1卷積結(jié)合(圖a)。
  2. LSKA-trivial:串聯(lián)的水平和垂直1D大核深度卷積與1×1卷積結(jié)合(圖b)。
  3. 原始LKA設(shè)計:在VAN中包括標(biāo)準(zhǔn)深度卷積(DW-Conv)、擴張深度卷積(DW-D-Conv)和1×1卷積(圖c)。
  4. 提出的LSKA設(shè)計:將LKA的前兩層分解為四層,每層由兩個1D卷積層組成(圖d)。其中,N代表Hadamard乘積,k代表最大感受野,d代表擴張率??。

個人總結(jié):提出了一種創(chuàng)新的大型可分離核注意力(LSKA)模塊,用于改進卷積神經(jīng)網(wǎng)絡(luò)(CNN)。這種模塊通過將2D卷積核分解為串聯(lián)的1D核,有效降低了計算復(fù)雜度和內(nèi)存需求。LSKA模塊在保持與標(biāo)準(zhǔn)大核注意力(LKA)模塊相當(dāng)?shù)男阅艿耐瑫r,顯示出更高的計算效率和更小的內(nèi)存占用。


三、LSKAttention的代碼

將下面的代碼在"ultralytics/nn/modules" 目錄下創(chuàng)建一個py文件復(fù)制粘貼進去然后按照章節(jié)四進行添加即可(需要按照有參數(shù)的注意力機制添加)

import torch
import torch.nn as nnclass LSKA(nn.Module):def __init__(self, dim, k_size):super().__init__()self.k_size = k_sizeif k_size == 7:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 3), stride=(1,1), padding=(0,(3-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(3, 1), stride=(1,1), padding=((3-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 3), stride=(1,1), padding=(0,2), groups=dim, dilation=2)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(3, 1), stride=(1,1), padding=(2,0), groups=dim, dilation=2)elif k_size == 11:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 3), stride=(1,1), padding=(0,(3-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(3, 1), stride=(1,1), padding=((3-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 5), stride=(1,1), padding=(0,4), groups=dim, dilation=2)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(5, 1), stride=(1,1), padding=(4,0), groups=dim, dilation=2)elif k_size == 23:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 5), stride=(1,1), padding=(0,(5-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(5, 1), stride=(1,1), padding=((5-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 7), stride=(1,1), padding=(0,9), groups=dim, dilation=3)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(7, 1), stride=(1,1), padding=(9,0), groups=dim, dilation=3)elif k_size == 35:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 5), stride=(1,1), padding=(0,(5-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(5, 1), stride=(1,1), padding=((5-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 11), stride=(1,1), padding=(0,15), groups=dim, dilation=3)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(11, 1), stride=(1,1), padding=(15,0), groups=dim, dilation=3)elif k_size == 41:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 5), stride=(1,1), padding=(0,(5-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(5, 1), stride=(1,1), padding=((5-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 13), stride=(1,1), padding=(0,18), groups=dim, dilation=3)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(13, 1), stride=(1,1), padding=(18,0), groups=dim, dilation=3)elif k_size == 53:self.conv0h = nn.Conv2d(dim, dim, kernel_size=(1, 5), stride=(1,1), padding=(0,(5-1)//2), groups=dim)self.conv0v = nn.Conv2d(dim, dim, kernel_size=(5, 1), stride=(1,1), padding=((5-1)//2,0), groups=dim)self.conv_spatial_h = nn.Conv2d(dim, dim, kernel_size=(1, 17), stride=(1,1), padding=(0,24), groups=dim, dilation=3)self.conv_spatial_v = nn.Conv2d(dim, dim, kernel_size=(17, 1), stride=(1,1), padding=(24,0), groups=dim, dilation=3)self.conv1 = nn.Conv2d(dim, dim, 1)def forward(self, x):u = x.clone()attn = self.conv0h(x)attn = self.conv0v(attn)attn = self.conv_spatial_h(attn)attn = self.conv_spatial_v(attn)attn = self.conv1(attn)return u * attn


四、手把手教你將LSKAttention添加到你的網(wǎng)絡(luò)結(jié)構(gòu)中

4.1 修改一

第一還是建立文件,我們找到如下ultralytics/nn文件夾下建立一個目錄名字呢就是'Addmodules'文件夾(用群內(nèi)的文件的話已經(jīng)有了無需新建)!然后在其內(nèi)部建立一個新的py文件將核心代碼復(fù)制粘貼進去即可。


4.2 修改二?

第二步我們在該目錄下創(chuàng)建一個新的py文件名字為'__init__.py'(用群內(nèi)的文件的話已經(jīng)有了無需新建),然后在其內(nèi)部導(dǎo)入我們的檢測頭如下圖所示。


4.3 修改三?

第三步我門中到如下文件'ultralytics/nn/tasks.py'進行導(dǎo)入和注冊我們的模塊(用群內(nèi)的文件的話已經(jīng)有了無需重新導(dǎo)入直接開始第四步即可)

從今天開始以后的教程就都統(tǒng)一成這個樣子了,因為我默認大家用了我群內(nèi)的文件來進行修改!!

?


4.4 修改四?

按照我的添加在parse_model里添加即可。

到此就修改完成了,大家可以復(fù)制下面的yaml文件運行。


五、LSKA的yaml文件和運行記錄

5.1 LSKA的yaml文件1

此版本訓(xùn)練信息:YOLOv10n-LSKA summary: 403 layers, 2810422 parameters, 2810406 gradients, 8.6 GFLOPs

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv10 object detection model. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]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, SCDown, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, SCDown, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 1, PSA, [1024]] # 10# YOLOv10.0n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 13- [-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, LSKA, []] # 17 (P3/8-small)  小目標(biāo)檢測層輸出位置增加注意力機制- [-1, 1, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 20 (P4/16-medium)- [-1, 1, LSKA, []] # 21 (P4/16-medium) 中目標(biāo)檢測層輸出位置增加注意力機制- [-1, 1, SCDown, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 3, C2fCIB, [1024, True, True]] # 24 (P5/32-large)- [-1, 1, LSKA, []] # 25 (P5/32-large) 大目標(biāo)檢測層輸出位置增加注意力機制# 如果你自己配置注意力位置注意from[17, 21, 25]位置要對應(yīng)上對應(yīng)的檢測層!- [[17, 21, 25], 1, v10Detect, [nc]] # Detect(P3, P4, P5)


5.2 PSALSKA的yaml文件2

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv10 object detection model. For Usage examples see https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov10n.yaml' will call yolov10.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]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, SCDown, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, SCDown, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9- [-1, 1, PSALSKA, [1024]] # 10# YOLOv10.0n head
head:- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 13- [-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, Conv, [256, 3, 2]]- [[-1, 13], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 19 (P4/16-medium)- [-1, 1, SCDown, [512, 3, 2]]- [[-1, 10], 1, Concat, [1]] # cat head P5- [-1, 3, C2fCIB, [1024, True, True]] # 22 (P5/32-large)- [[16, 19, 22], 1, v10Detect, [nc]] # Detect(P3, P4, P5)

5.2 訓(xùn)練代碼?

大家可以創(chuàng)建一個py文件將我給的代碼復(fù)制粘貼進去,配置好自己的文件路徑即可運行。

import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLOif __name__ == '__main__':model = YOLO('ultralytics/cfg/models/v8/yolov8-C2f-FasterBlock.yaml')# model.load('yolov8n.pt') # loading pretrain weightsmodel.train(data=r'替換數(shù)據(jù)集yaml文件地址',# 如果大家任務(wù)是其它的'ultralytics/cfg/default.yaml'找到這里修改task可以改成detect, segment, classify, posecache=False,imgsz=640,epochs=150,single_cls=False,  # 是否是單類別檢測batch=4,close_mosaic=10,workers=0,device='0',optimizer='SGD', # using SGD# resume='', # 如過想續(xù)訓(xùn)就設(shè)置last.pt的地址amp=False,  # 如果出現(xiàn)訓(xùn)練損失為Nan可以關(guān)閉ampproject='runs/train',name='exp',)


5.3 GhostModule的訓(xùn)練過程截圖?


六、本文總結(jié)?

到此本文的正式分享內(nèi)容就結(jié)束了,在這里給大家推薦我的YOLOv10改進有效漲點專欄,本專欄目前為新開的平均質(zhì)量分98分,后期我會根據(jù)各種最新的前沿頂會進行論文復(fù)現(xiàn),也會對一些老的改進機制進行補充,目前本專欄免費閱讀(暫時,大家盡早關(guān)注不迷路~),如果大家覺得本文幫助到你了,訂閱本專欄,關(guān)注后續(xù)更多的更新~

??專欄回顧:

http://m.aloenet.com.cn/news/28545.html

相關(guān)文章:

  • 網(wǎng)站設(shè)計怎么保持風(fēng)格一致視頻廣告接單平臺
  • 網(wǎng)站建設(shè)服務(wù)目標(biāo)全網(wǎng)模板建站系統(tǒng)
  • 邳州網(wǎng)站網(wǎng)站建設(shè)微信小程序開發(fā)費用一覽表
  • 網(wǎng)站模板 家網(wǎng)絡(luò)營銷案例題
  • 做鞋子出口需要作網(wǎng)站嗎網(wǎng)絡(luò)搭建是干什么的
  • 易企秀微網(wǎng)站如何做文字鏈接seo怎么去優(yōu)化
  • 容桂網(wǎng)站制作咨詢企業(yè)查詢官網(wǎng)
  • 手機端做網(wǎng)站軟件文大俠seo
  • b2c平臺網(wǎng)站建設(shè)比百度好用的搜索軟件手機版
  • 上傳圖片做網(wǎng)站維護長春seo網(wǎng)站管理
  • 網(wǎng)站建設(shè)違約責(zé)任今日短新聞20條
  • 做美食推廣的網(wǎng)站朝陽區(qū)搜索優(yōu)化seosem
  • 寧波網(wǎng)站建設(shè)公司軟文范例大全1000字
  • 大連企業(yè)做網(wǎng)站最新軍事新聞 今日 最新消息
  • 婚戀網(wǎng)站女孩子做美容安卓優(yōu)化大師官方版
  • 保定定興網(wǎng)站建設(shè)對百度競價排名的看法
  • 織夢的手機端網(wǎng)站網(wǎng)站開發(fā)的步驟
  • 食品網(wǎng)站建設(shè)策劃書百度問答庫
  • 網(wǎng)站沒有備案可以做百度推廣嗎最吸引人的引流話術(shù)
  • 青島網(wǎng)站運營推廣關(guān)鍵詞排名方案
  • 合肥建站平臺windows優(yōu)化大師官方免費
  • html網(wǎng)站開發(fā)中的應(yīng)用百度高級搜索
  • 濟南網(wǎng)站設(shè)計建設(shè)公司百度營銷推廣登錄平臺
  • 建設(shè)資格執(zhí)業(yè)注冊中心網(wǎng)站長沙seo網(wǎng)絡(luò)推廣
  • 網(wǎng)站上的搜索怎么做青島網(wǎng)站快速排名提升
  • 網(wǎng)站建設(shè)周期重慶seo網(wǎng)絡(luò)推廣關(guān)鍵詞
  • swf做網(wǎng)站頭網(wǎng)絡(luò)促銷
  • 知名商城網(wǎng)站建設(shè)公司seo搜狗
  • 東莞設(shè)計網(wǎng)站長沙網(wǎng)站優(yōu)化推廣
  • 17網(wǎng)站一起做網(wǎng)店 每日新款網(wǎng)站免費推廣網(wǎng)站