日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

[人工智能-深度学习-72]:卷积神经网络 - 空间金字塔池化SPP-Net网络与Pytorch代码实现

發布時間:2023/12/18 卷积神经网络 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [人工智能-深度学习-72]:卷积神经网络 - 空间金字塔池化SPP-Net网络与Pytorch代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者主頁(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/122249302


目錄

第1章?SPP-Net網絡概述

1.1 什么是SPP-Net?

1.2 SPP-Net的基本思想

1.3?SPP-Net的好處與優點

第2章?SPP網絡結構

2.1 SPP?金字塔池化層的位置

2.2 SPP的特征提取

第3章 包含SPN結構的網絡的訓練

3.1?Multi-size training

3.2?single-size

第4章 SPP網絡的pytorch實現


第1章?SPP-Net網絡概述

1.1 什么是SPP-Net?

SPP-Net是一種可以不用考慮圖像大小輸出圖像固定長度網絡結構,并且可以做到在圖像變形情況下表現穩定。SPP-Net是出自論文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》。

在SPP-Net之前,所有的神經網絡都是需要輸入固定尺寸的圖片,比如224*224(ImageNet)、32*32(LenNet)、96*96等。這樣對于我們希望檢測各種大小的圖片的時候,需要經過resize、crop,或者warp等一系列操作,這都在一定程度上導致圖片信息的丟失和變形,限制了識別精確度。而且,從生理學角度出發,人眼看到一個圖片時,大腦會首先認為這是一個整體,而不會進行crop和warp,所以更有可能的是,我們的大腦通過搜集一些淺層的信息,在更深層才識別出這些任意形狀的目標。

1.2 SPP-Net的基本思想

SPP-Net對這些網絡中存在的缺點進行了改進,基本思想是:輸入整張圖像,提取出整張圖像的特征圖,然后利用空間關系整張圖像的特征圖中,在spatial pyramid pooling layer提取各個region proposal的特征。

?一個正常的深度網絡由兩部分組成,卷積部分和全連接部分,要求輸入圖像需要固定size的原因并不是卷積部分而是全連接部分。所以SPP層就作用在最后一層卷積之后,SPP層的輸出就是固定大小

1.3?SPP-Net的好處與優點

  • SPP-net不僅允許測試的時候輸入不同大小的圖片,
  • 訓練的時候也允許輸入不同大小的圖片,
  • 通過不同尺度的圖片同時可以防止overfit(過擬合)
  • SPP-net的效果已經在不同的數據集上面得到驗證,速度上比R-CNN快24-102倍。在ImageNet 2014的比賽中,此方法檢測中第二,分類中第三。

第2章?SPP網絡結構

2.1 SPP?金字塔池化層的位置

卷積層的參數和輸入大小無關,它僅僅是一個卷積核在圖像上滑動,不管輸入圖像多大都沒關系,只是對不同大小的圖片卷積出不同大小的特征圖。

但是全連接層的參數就和輸入圖像大小有關,因為它要把輸入的所有像素點連接起來,需要指定輸入層神經元個數和輸出層神經元個數,所以需要規定輸入的feature的大小。因此,固定長度的約束僅限于全連接層。

SPP-Net在最后一個卷積層后,接入了金字塔池化層,使用這種方式,可以讓網絡輸入任意的圖片,而且還會生成固定大小的輸出。因此,SPP網絡的核心就是金字塔池化層。

2.2 SPP的特征提取

我們先從空間金字塔特征提取說起(這邊先不考慮“池化”),空間金字塔是很久以前的一種特征提取方法,跟Sift、Hog等特征息息相關。為了簡單起見,我們假設一個很簡單兩層網絡:

輸入層:一張任意大小的圖片,假設其大小為(w,h)。

輸出層:21個神經元。

也就是我們輸入一張任意大小的特征圖的時候,我們希望提取出21個特征。

空間金字塔特征提取的過程如下:

(1)圖片輸入

黑色圖片代表卷積之后的特征圖,其尺寸是任意的,該特征作為SPP網絡的輸入。

(2)特征提取網格的定義(SPP池化層網格的定義)

生成三個SPP池化核,每個SPP池化核代表的是輸出特征的網格,網格的大小,不同的應用,大小不同,這里假設為:4*4, 2*2, 1*1。

SPP池化核網格的個數,決定了輸出的大小,而不是輸入的大小。

SPP池化核網格的作用是均分任意長度尺寸圖片的像素,如:

4 * 4的網絡,就是把輸入圖片均分成 4 * 4 = 16個塊,而不管輸入圖片的尺寸到底是多少。

1 * 1的網絡,就是把輸入圖片均分成 1 * 1 = 01個塊,而不管輸入圖片的尺寸到底是多少。

這樣可以得到16+4+1=21種不同的固定長度的輸出塊(Spatial bins)。

注意:SPP的池化層與CNN網絡中的池化層的定義是不同的。

  • CNN的池化層:定義的是池化核的大小和stride的大小。
  • SPP的池化層: 首先, SPP定義三個池化核。其二,SPP池化核網格的大小,如4 * 4,不是池化核的大小,而是輸出特征的大小。

(3)對任何長度的輸入圖片的重新切分/劃分

?如上圖所示,當我們輸入一張任意尺寸的圖片的時候,我們利用不同網格大小的池化核,對一張圖片進行了劃分。

第1個SPP池化核=(4 * 4),? 把一張完整的任意長度的輸入圖片,分成了16個塊,也就是每個塊的大小就是(w/4,h/4);

第2個SPP池化核=(2 * 2),?,? 把一張完整的任意長度的輸入圖片,分成了4個塊,也就是每個塊的大小就是(w/2,h/2);

第3個SPP池化核=(1 * 1),?,? 把一張完整的任意長度的輸入圖片,分成了1個塊,也就是每個塊的大小就是(w,h);

經過上述的切分,可以得到最后總共可以得到16+4+1=21個塊,即一個固定長度的特殊輸出。

(4)最大池化特征提取

對每個網格,按照各自占用輸入特征的范圍,各自獨立的進行池化,支持的算法算法有:

  • 最大池化
  • 最小池化
  • 平均池化

(5)固定長度的特征輸出

最大池化后,每個網格輸出一個最大池化值,一共輸出21個最大特征值,這21個輸出特征值組成了最終的輸出。這樣就可以把任意長度的特征值,轉化為一個固定大小的特征值了,由于SPP采用了三層不同的池化核,因此轉化后的特征值,既包含了高層抽象特征,也包含了低層的具體特征。

當然你可以設計其它維數的輸出,增加金字塔的層數,或者改變劃分網格的大小)。

上面的三種不同刻度的劃分,每一種刻度我們稱之為:金字塔的一層。

空間金字塔池化,使得任意大小的特征圖都能夠轉換成固定大小的特征向量,這就是空間金字塔池化的奧義(多尺度特征提取出固定大小的特征向量)。

備注:空間金字塔池化,與其他池化一樣,對channel維度沒有影響。?

第3章 包含SPN結構的網絡的訓練

3.1?Multi-size training

使用兩個尺度進行訓練:比如,224*224 和180*180。

訓練的時候,224x224的圖片通過crop原始圖片得到,180x180的圖片通過進一步縮放224x224的圖片得到。

之后,迭代訓練,即用224*224的圖片訓練一個epoch,然后在用180*180的圖片訓練一個epoch,交替地進行。

兩種尺度下,在SPP結構后,輸出的特征維度都是(9+4+1)x256,參數是共享的,之后接全連接層即可。

3.2?single-size

理論上說,SPP-net支持直接以多尺度原始圖片作為輸入。

實際上,深度學習框架,為了計算的方便,GPU,CUDA等比較適合固定尺寸的輸入,所以訓練的時候輸入是固定了尺度了的。

第4章 SPP網絡的pytorch實現

待續。。。。。。。

參考:

https://blog.csdn.net/hjimce/article/details/50187655


作者主頁(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/122249302

總結

以上是生活随笔為你收集整理的[人工智能-深度学习-72]:卷积神经网络 - 空间金字塔池化SPP-Net网络与Pytorch代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。