亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

YOLOv5中SPP/SPPF結構源碼詳析(內含注釋分析)

 更新時間:2022年05月10日 09:58:28   作者:tt丫  
其實關于YOLOv5的網絡結構其實網上相關的講解已經有很多了,但是覺著還是有必要再給大家介紹下,下面這篇文章主要給大家介紹了關于YOLOv5中SPP/SPPF結構源碼的相關資料,需要的朋友可以參考下

一、SPP的應用的背景

在卷積神經網絡中我們經??吹焦潭ㄝ斎氲脑O計,但是如果我們輸入的不能是固定尺寸的該怎么辦呢?

通常來說,我們有以下幾種方法:

(1)對輸入進行resize操作,讓他們統(tǒng)統(tǒng)變成你設計的層的輸入規(guī)格那樣。但是這樣過于暴力直接,可能會丟失很多信息或者多出很多不該有的信息(圖片變形等),影響最終的結果。

(2)替換網絡中的全連接層,對最后的卷積層使用global average pooling,全局平均池化只和通道數有關,而與特征圖大小沒有關系

(3)最后一個當然是我們要講的SPP結構啦~

二、SPP結構分析

SPP結構又被稱為空間金字塔池化,能將任意大小的特征圖轉換成固定大小的特征向量。

接下來我們來詳述一下SPP是怎么處理滴~

輸入層:首先我們現(xiàn)在有一張任意大小的圖片,其大小為w * h。

輸出層:21個神經元 -- 即我們待會希望提取到21個特征。

分析如下圖所示:分別對1 * 1分塊,2 * 2分塊和4 * 4子圖里分別取每一個框內的max值(即取藍框框內的最大值),這一步就是作最大池化,這樣最后提取出來的特征值(即取出來的最大值)一共有1 * 1 + 2 * 2 + 4 * 4 = 21個。得出的特征再concat在一起。

而在YOLOv5中SPP的結構圖如下圖所示:

其中,前后各多加一個CBL,中間的kernel size分別為1 * 1,5 * 5,9 * 9和13 * 13。

三、SPPF結構分析

(x,y1這些是啥請看下面的代碼)

四、YOLOv5中SPP/SPPF結構源碼解析(內含注釋分析)

代碼注釋與上圖的SPP結構相對應。

class SPP(nn.Module):
    def __init__(self, c1, c2, k=(5, 9, 13)):#這里5,9,13,就是初始化的kernel size
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)#這里對應第一個CBL
        self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1)#這里對應SPP操作里的最后一個CBL
        self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k])
        #這里對應SPP核心操作,對5 * 5分塊,9 * 9分塊和13 * 13子圖分別取最大池化
 
    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning忽略警告
            return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1))
            #torch.cat對應concat

SPPF結構

class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
 
    def forward(self, x):
        x = self.cv1(x)#先通過CBL進行通道數的減半
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            #上述兩次最大池化
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))
            #將原來的x,一次池化后的y1,兩次池化后的y2,3次池化的self.m(y2)先進行拼接,然后再CBL

總結

到此這篇關于YOLOv5中SPP/SPPF結構源碼詳析的文章就介紹到這了,更多相關YOLOv5 SPP/SPPF結構內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于python的對象序列化介紹

    關于python的對象序列化介紹

    大家好,本篇文章主要講的是關于python的對象序列化介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Django使用消息提示簡單的彈出個對話框實例

    Django使用消息提示簡單的彈出個對話框實例

    今天小編就為大家分享一篇Django使用消息提示簡單的彈出個對話框實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 分享6 個值得收藏的 Python 代碼

    分享6 個值得收藏的 Python 代碼

    這篇文章主要分享了6 個值得收藏的 Python 代碼,希望隊長正在學習的你有所幫助,需要的小伙伴也可以參考一下
    2022-01-01
  • numpy數組坐標軸問題解決

    numpy數組坐標軸問題解決

    本文主要介紹了numpy數組坐標軸問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python定時復制遠程文件夾中所有文件

    python定時復制遠程文件夾中所有文件

    這篇文章主要為大家詳細介紹了python定時復制遠程文件夾中所有文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python使用folium excel繪制point

    Python使用folium excel繪制point

    今天小編就為大家分享一篇關于Python使用folium excel繪制point,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • numpy中數組拼接、數組合并方法總結(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)

    numpy中數組拼接、數組合并方法總結(append(),?concatenate,?hstack,?vstack

    numpy庫是一個高效處理多維數組的工具,可以在進行邊寫的數組計算上進行一系列的操作,下面這篇文章主要給大家介紹了關于numpy中數組拼接、數組合并方法(append(),?concatenate,?hstack,?vstack,?column_stack,?row_stack,?np.r_,?np.c_等)的相關資料,需要的朋友可以參考下
    2022-08-08
  • 使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能

    使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能

    這篇文章主要介紹了使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Python Xml文件添加字節(jié)屬性的方法

    Python Xml文件添加字節(jié)屬性的方法

    下面小編就為大家分享一篇Python Xml文件添加字節(jié)屬性的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • python實現(xiàn)批量轉換圖片為黑白

    python實現(xiàn)批量轉換圖片為黑白

    這篇文章主要為大家詳細介紹了python實現(xiàn)批量轉換圖片為黑白,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論