0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

YOLOV7網(wǎng)絡(luò)架構(gòu)解讀

jt_rfid5 ? 來源:CSDN博主江小皮不皮 ? 2023-11-29 10:00 ? 次閱讀

前言

繼美團發(fā)布YOLOV6之后,YOLO系列原作者也發(fā)布了YOLOV7。

YOLOV7主要的貢獻在于:

1.模型重參數(shù)

YOLOV7將模型重參數(shù)化引入到網(wǎng)絡(luò)架構(gòu)中,重參數(shù)化這一思想最早出現(xiàn)于REPVGG中。

2.標(biāo)簽分配策略

YOLOV7的標(biāo)簽分配策略采用的是YOLOV5的跨網(wǎng)格搜索,以及YOLOX的匹配策略。

3.ELAN高效網(wǎng)絡(luò)架構(gòu)

YOLOV7中提出的一個新的網(wǎng)絡(luò)架構(gòu),以高效為主。

4.帶輔助頭的訓(xùn)練

YOLOV7提出了輔助頭的一個訓(xùn)練方法,主要目的是通過增加訓(xùn)練成本,提升精度,同時不影響推理的時間,因為輔助頭只會出現(xiàn)在訓(xùn)練過程中。

一、YOLOV7是什么?

YOLO算法作為one-stage目標(biāo)檢測算法最典型的代表,其基于深度神經(jīng)網(wǎng)絡(luò)進行對象的識別和定位,運行速度很快,可以用于實時系統(tǒng)。

YOLOV7是目前YOLO系列最先進的算法,在準(zhǔn)確率和速度上超越了以往的YOLO系列。

了解YOLO是對目標(biāo)檢測算法研究的一個必須步驟。

二、網(wǎng)絡(luò)架構(gòu)

1、架構(gòu)圖總覽

4bca96d6-8dd6-11ee-939d-92fbcf53809c.png

2、CBS模塊解讀

?對于CBS模塊,我們可以看從圖中可以看出它是由一個Conv層,也就是卷積層,一個BN層,也就是Batch normalization層,還有一個Silu層,這是一個激活函數(shù)。

?silu激活函數(shù)是swish激活函數(shù)的變體,兩者的公式如下所示

silu(x)=x?sigmoid(x)

swish(x)=x?sigmoid(βx)

4bd07768-8dd6-11ee-939d-92fbcf53809c.png

?從架構(gòu)圖中我們可以看出,CBS模塊這里有三種顏色,三種顏色代表它們的卷積核(k)和步長(s)不同。

首先最淺的顏色,也就是第一個CBS模塊的顏色,它是一個1x1的卷積,stride(步長為1)。

其次稍淺的顏色,也就是第二個CBS模塊的顏色,它是一個3x3的卷積,stride(步長為1)。

最后最深的顏色,也就是第三個CBS模塊的顏色,它是一個3x3的卷積,stride(步長為2)。

?1x1的卷積主要用來改變通道數(shù)。

?3x3的卷積,步長為1,主要用來特征提取。

?3x3的卷積,步長為2,主要用來下采樣。

4c25c18c-8dd6-11ee-939d-92fbcf53809c.png

3、CBM模塊解讀

?CBM模塊和CBS模塊,我們可以看出來是基本一致的。

?由一個Conv層,也就是卷積層,一個BN層,也就是Batch normalization層,還有一個sigmoid層,這是一個激活函數(shù)。

?卷積核為1x1,stride(步長為1)

4c3b1762-8dd6-11ee-939d-92fbcf53809c.png

4、REP模塊解讀

?REP模塊分為兩個,一個是train,也就是訓(xùn)練,一個deploy,也就是推理。

?訓(xùn)練模塊,它有三個分支。

最上面的分支是3x3的卷積,用于特征提取。

中間的分支是1x1的卷積,用于平滑特征。

最后分支是一個Identity,不做卷積操作,直接移過來。

最后把它們相加在一起。

?推理模塊,包含一個3x3的卷積,stride(步長為1)。是由訓(xùn)練模塊重參數(shù)化轉(zhuǎn)換而來。

在訓(xùn)練模塊中,因為第一層是一個3x3的卷積,第二層是一個1x1的卷積,最后層是一個Identity。

在模型從參數(shù)化的時候,需要把1x1的卷積啊,轉(zhuǎn)換成3x3的卷積,把Identity也轉(zhuǎn)換成3x3的卷積,然后進行一個矩陣的一個加法,也就是一個矩陣融合過程。

然后最后將它的權(quán)重進行相加,就得到了一個3x3的卷積,也就是說,這三個分支就融合成了一條線,里面只有一個3x3的卷積。

它們的權(quán)重是三個分支的疊加結(jié)果,矩陣,也是三個分支的疊加結(jié)果。

4c469128-8dd6-11ee-939d-92fbcf53809c.png

5、MP模塊解讀

?MP模塊有兩個分支,作用是進行下采樣。

?第一條分支先經(jīng)過一個maxpool,也就是最大池化。最大值化的作用就是下采樣,然后再經(jīng)過一個1x1的卷積進行通道數(shù)的改變。

?第二條分支先經(jīng)過一個1x1的卷積,做通道數(shù)的變化,然后再經(jīng)過一個3x3卷積核、步長為2的卷積塊,這個卷積塊也是用來下采樣的。

?最后把第一個分支和第二分支的結(jié)果加在一起,得到了超級下采樣的結(jié)果。

4c53f2fa-8dd6-11ee-939d-92fbcf53809c.png

6、ELAN模塊解讀

?ELAN模塊是一個高效的網(wǎng)絡(luò)結(jié)構(gòu),它通過控制最短和最長的梯度路徑,使網(wǎng)絡(luò)能夠?qū)W習(xí)到更多的特征,并且具有更強的魯棒性。

?ELAN有兩條分支。

?第一條分支是經(jīng)過一個1x1的卷積做通道數(shù)的變化。

?第二條分支就比較復(fù)雜了。它先首先經(jīng)過一個1x1的卷積模塊,做通道數(shù)的變化。然后再經(jīng)過四個3x3的卷積模塊,做特征提取。

?如圖所示,最后把四個特征疊加在一起得到最后的特征提取結(jié)果。

4c5f3a98-8dd6-11ee-939d-92fbcf53809c.png

7、ELAN-W模塊解讀

?對于ELAN-W模塊,我們也看到它跟ELAN模塊是非常的相似,所略有不同的就是它在第二條分支的時候選取的輸出數(shù)量不同。

?ELAN模塊選取了三個輸出進行最后的相加。

?ELAN-W模塊選取了五個進行相加。

8、UPSample模塊解讀

UPSample模塊是一個上采樣的模塊,它使用的上采樣方式是最近鄰插值。

4c764634-8dd6-11ee-939d-92fbcf53809c.png

9、SPPCSPC模塊解讀

SPP的作用是能夠增大感受野,使得算法適應(yīng)不同的分辨率圖像,它是通過最大池化來獲得不同感受野。

?我們可以看到在第一條分支中,經(jīng)理了maxpool的有四條分支。分別是5,9,13,1,這四個不同的maxpool就代表著他能夠處理不同的對象。

?也就是說,它這四個不同尺度的最大池化有四種感受野,用來區(qū)別于大目標(biāo)和小目標(biāo)。

比如一張照片中的狗和行人以及車,他們的尺度是不一樣的,通過不同的maxpool,這樣子就能夠更好的區(qū)別小目標(biāo)和大目標(biāo)。

CSP模塊,首先將特征分為兩部分,其中的一個部分進行常規(guī)的處理,另外一個部分進行SPP結(jié)構(gòu)的處理,最后把這兩個部分合并在一起,這樣子就能夠減少一半的計算量,使得速度變得快,精度反而會提升。

4c871d7e-8dd6-11ee-939d-92fbcf53809c.png

來源:CSDN博主江小皮不皮

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:【光電智造】YOLOV7詳細解讀|網(wǎng)絡(luò)架構(gòu)解讀

文章出處:【微信號:今日光電,微信公眾號:今日光電】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    在英特爾AI開發(fā)板上用OpenVINO NNCF優(yōu)化YOLOv7

    提高了性能和效率。YOLO算法作為one-stage目標(biāo)檢測算法最典型的代表,其基于深度神經(jīng)網(wǎng)絡(luò)進行對象的識別和定位,運行速度很快,可以用于實時系統(tǒng)。YOLOv7 是 YOLO 模型系列的下一個演進階段,在不增加推理成本的情況下,大大提高了實時目標(biāo)檢測精度。
    的頭像 發(fā)表于 01-05 09:29 ?671次閱讀
    在英特爾AI開發(fā)板上用OpenVINO NNCF優(yōu)化<b class='flag-5'>YOLOv7</b>

    Android 4.0網(wǎng)絡(luò)編程詳解源碼

    本帖最后由 richthoffen 于 2019-7-19 16:39 編輯 Android 4.0網(wǎng)絡(luò)編程詳解源碼
    發(fā)表于 07-19 08:41

    與V.35網(wǎng)絡(luò)的接口

    DN94- 與V.35網(wǎng)絡(luò)的接口
    發(fā)表于 08-08 11:07

    IPv4網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)互連技術(shù)對比分析哪個好?

    NAT-PT實現(xiàn)互連原理是什么?NAT-PT的工作機制是怎樣的?IPv4網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)互連技術(shù)對比分析哪個好?
    發(fā)表于 05-26 07:07

    STM32網(wǎng)絡(luò)的三大件

    之前的推文已經(jīng)將STM32網(wǎng)絡(luò)的三大件講完了①PHY接口,《STM32網(wǎng)絡(luò)電路設(shè)計》②MAC控制器,《STM32網(wǎng)絡(luò)之MAC控制器》③DMA控制器,《STM32網(wǎng)絡(luò)之DMA控制器》本文
    發(fā)表于 08-02 09:54

    YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)解析

    1、YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)解析  YOLOv5針對不同大小(n, s, m, l, x)的網(wǎng)絡(luò)整體架構(gòu)都是一樣的,只不過會在每個子模塊中采用
    發(fā)表于 10-31 16:30

    yolov7 onnx模型在NPU上太慢了怎么解決?

    ://github.com/WongKinYiu/yolov7/releases下載yolov7-tiny.pt ,并重命名yolov7tiny.pt2.將yolov7tiny.pt轉(zhuǎn)
    發(fā)表于 04-04 06:13

    無法使用MYRIAD在OpenVINO trade中運行YOLOv7自定義模型怎么解決?

    無法確定如何將 YOLOv7 模型的重量(.pt 文件)轉(zhuǎn)換為OpenVINO?中間表示 (IR) 并推斷有 MYRIAD 的 IR。 分辨率 轉(zhuǎn)換使用此 GitHub* 存儲庫
    發(fā)表于 08-15 08:29

    基于網(wǎng)絡(luò)地址和協(xié)議轉(zhuǎn)換實現(xiàn)IPv4網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)互連

    IPv4 的缺陷和Internet的飛速發(fā)展導(dǎo)致IPv6的產(chǎn)生和發(fā)展,目前,IPv6網(wǎng)絡(luò)正從試驗性網(wǎng)絡(luò)逐步走向?qū)嶋H應(yīng)用,但未來一段時間內(nèi),IPv4網(wǎng)絡(luò)仍然占據(jù)主導(dǎo)地位,IPv4網(wǎng)絡(luò)和I
    的頭像 發(fā)表于 06-19 17:12 ?3716次閱讀
    基于<b class='flag-5'>網(wǎng)絡(luò)</b>地址和協(xié)議轉(zhuǎn)換實現(xiàn)IPv4<b class='flag-5'>網(wǎng)絡(luò)</b>和IPv6<b class='flag-5'>網(wǎng)絡(luò)</b>互連

    深度解析YOLOv7網(wǎng)絡(luò)結(jié)構(gòu)

    最近,Scaled-YOLOv4的作者(也是后來的YOLOR的作者)和YOLOv4的作者AB大佬再次聯(lián)手推出了YOLOv7,目前來看,這一版的YOLOv7是一個比較正統(tǒng)的YOLO續(xù)作,
    的頭像 發(fā)表于 09-14 11:16 ?7469次閱讀

    YOLOv7訓(xùn)練自己的數(shù)據(jù)集包括哪些

    ? YOLOv7訓(xùn)練自己的數(shù)據(jù)集整個過程主要包括:環(huán)境安裝—制作數(shù)據(jù)集—模型訓(xùn)練—模型測試—模型推理 一、準(zhǔn)備深度學(xué)習(xí)環(huán)境 本人的筆記本電腦系統(tǒng)是:Windows10 首先下載YOLOv7的代碼
    的頭像 發(fā)表于 05-29 15:18 ?1013次閱讀
    <b class='flag-5'>YOLOv7</b>訓(xùn)練自己的數(shù)據(jù)集包括哪些

    一文徹底搞懂YOLOv8【網(wǎng)絡(luò)結(jié)構(gòu)+代碼+實操】

    從上面可以看出,YOLOv8 主要參考了最近提出的諸如 YOLOX、YOLOv6、YOLOv7 和 PPYOLOE 等算法的相關(guān)設(shè)計,本身的創(chuàng)新點不多,偏向工程實踐,主推的還是 ultralytics 這個框架本身。
    的頭像 發(fā)表于 06-15 17:15 ?1.2w次閱讀
    一文徹底搞懂<b class='flag-5'>YOLOv</b>8【<b class='flag-5'>網(wǎng)絡(luò)</b>結(jié)構(gòu)+代碼+實操】

    yolov5和YOLOX正負樣本分配策略

    整體上在正負樣本分配中,yolov7的策略算是yolov5和YOLOX的結(jié)合。因此本文先從yolov5和YOLOX正負樣本分配策略分析入手,后引入到YOLOv7的解析中。
    發(fā)表于 08-14 11:45 ?2166次閱讀
    <b class='flag-5'>yolov</b>5和YOLOX正負樣本分配策略

    使用OpenVINO優(yōu)化并部署訓(xùn)練好的YOLOv7模型

    在《英特爾銳炫 顯卡+ oneAPI 和 OpenVINO 實現(xiàn)英特爾 視頻 AI 計算盒訓(xùn)推一體-上篇》一文中,我們詳細介紹基于英特爾 獨立顯卡搭建 YOLOv7 模型的訓(xùn)練環(huán)境,并完成了 YOLOv7 模型訓(xùn)練,獲得了最佳精度的模型權(quán)重。
    的頭像 發(fā)表于 08-25 11:08 ?1428次閱讀
    使用OpenVINO優(yōu)化并部署訓(xùn)練好的<b class='flag-5'>YOLOv7</b>模型

    詳細解讀YOLOV7網(wǎng)絡(luò)架構(gòu)設(shè)計

    YOLOV7提出了輔助頭的一個訓(xùn)練方法,主要目的是通過增加訓(xùn)練成本,提升精度,同時不影響推理的時間,因為輔助頭只會出現(xiàn)在訓(xùn)練過程中。
    發(fā)表于 11-27 10:45 ?724次閱讀
    詳細<b class='flag-5'>解讀</b><b class='flag-5'>YOLOV7</b><b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>架構(gòu)</b>設(shè)計