技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2023 iThome 鐵人賽
DAY
24
0
AI & Data
AI白話文運動系列之「A!給我那張Image!」
系列 第
24
篇
CNN經典論文導讀(五)--DenseNet
15th鐵人賽
理工哈士奇嗷嗚嗷嗚
2023-10-09 22:46:05
663 瀏覽
分享至
前言
今天沒意外的話會是這個系列中最後一篇經典論文探討了,雖然我們前段時間花了一些篇幅討論Autoencoder架構,但其實這篇論文的概念更像是ResNet,所以如果忘記的人可以先回顧一下ResNet的內容。
先備知識
對捲積運算有基礎的認識(可以回顧:
https://ithelp.ithome.com.tw/articles/10323076
)
了解甚麼是捲積神經網路(Convolutional Neural Network)(可以回顧:
https://ithelp.ithome.com.tw/articles/10323077
)
知道ResNet架構長甚麼樣(可以回顧:
https://ithelp.ithome.com.tw/articles/10333499
;
https://ithelp.ithome.com.tw/articles/10333931
)
看完今天的內容你可能會知道......
Dense connection是甚麼架構
DenseNet與ResNet差在哪裡
DenseNet有甚麼優勢
一、更強更猛的ResNet?
論文
https://arxiv.org/pdf/1608.06993.pdf
我們在介紹ResNet時有提過,通過短路連接(Shortcut connection),可以讓更多的資訊往後傳遞,有助於利用最佳化方式進行反向傳遞,可以建立出更深層的模型。2017年被提出了DenseNet這篇論文也是類似的想法,不過他的連接方式比起ResNet來的更加暴力直接。為甚麼這麼說呢?我們試想一下,如果只有前後層之間使用短路連接的效果還不錯的話,那麼我能不能多連接幾層?這樣是不是就可以讓更多層的資訊往後傳遞,也可以促進資訊的融合?
是的沒錯!DenseNet就是使用這樣的結構(如下圖所示):
圖中的紅色、綠色、紫色、黃色與橘色代表的是不同捲積層輸出的特徵圖,可以看到,這些特徵圖都被直接往後拉,跟別的特徵圖結合,這就是DenseNet提出的「密集連接(Dense connection)」,如果只有前後層之間的連接的話,就是ResNet中的Residual Block架構,DenseNet連接了更多更密集的層(會連接除了自己以外前面所有的層),所以才會是
Dense
connection。
另一點和ResNet的不同之處在於融合特徵圖資訊的方式。在Residual Block中,我們是如何結合自己的特徵圖與拉過來的特徵圖呢?答案是直接加在一起,所以會要求Residual跟Shortcut的輸出結果需要圖片大小與通道數都要一致。可是DenseNet不是用加的,是直接把特徵「疊」在一起,所以只需要圖片大小相同即可,經過結合之後通道數量會增加,換句話說就是可以有更多的特徵資訊可以用。
這正是DenseNet的一大特點,如果我好不容易提取出來的特徵只使用一層的話,會不會太浪費了?在CNN架構中,每一層的捲積層都會提取出不同的特徵,傳統上這些特徵只會被當層下一層捲積層的輸入資料來處理,可是,從另外一個角度思考,如果今天要完成一個分類任務的話,我應該盡可能的考慮所有的特徵,讓模型自己去學誰比較重要,而不是在傳遞的過程當中逐步萃取資訊,這樣我可以有更多的資訊協助判斷。DenseNet這樣的結構就是讓每一層都可以接受到之前學到的所有特徵,這被稱為「Feature reuse」,也就是我們重新使用之前的特徵。
註記:這邊說的疊其實用專業的話來說是指concat這個運算(可以參考:
https://pytorch.org/docs/stable/generated/torch.cat.html
)
二、DesneNet架構
聊完了核心概念,接著讓我們來看看DenseNet的整體架構吧!
整體模型結構可以分成兩個部分:「Dense Block」與「Transition Layer」,前者正是我們剛剛花了一些時間討論的結構,後者的話目的是在「調整特徵圖大小」,在CNN中,我們會逐步將特徵圖的面積縮小,讓捲積核可以提取到不同尺度的特徵,可是,如果圖片大小不同的話,就沒辦法把不同層輸出的特徵圖「疊」在一起了,所以我們需要使用Transition Layer來處理這件事。簡單來說,在Dense Block中的每一個捲積層都會接受之前所有特徵圖的資訊,而這些資訊會由Dense Block中的最後一個捲積層負責整合並往下傳遞,而DesneNet Block彼此之間因為特徵圖大小不同,所以在往下傳遞之前須經由Transition Layer調整。
說了這麼多,如果還記得ResNet的人應該可以感覺到,DenseNet透過更密集更緊湊的方式,讓它在參數量與計算量更少的情況下,依然能有優異的表現,這也是DenseNet最突出的地方。
三、總結
今天我們介紹了2017年提出的DenseNet架構,算是替之前LeNet-5, AlexNet, VGG到ResNet這條路畫上一個句點,讓大家看一下如果根據ResNet的想法往下發展會變成甚麼樣子,當然,CNN還有其他許多的架構與變形,礙於時間因素沒能在這個系列中詳細討論,之後有機會可以陸陸續續慢慢更新上來。
留言
追蹤
檢舉
上一篇
CNN經典論文實戰(四)--Autoencoder
下一篇
CNN經典論文實戰(五)--DenseNet
系列文
AI白話文運動系列之「A!給我那張Image!」
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)前篇
27
AI研究趨勢討論(一)--模型壓縮與加速(Model Compression and Acceleration)後篇
28
AI研究趨勢討論(二)--遷移學習、領域自適應與領域泛化
29
AI研究趨勢討論(三)--強強聯手打造新世代里程碑(CNN與ViT結合)
30
AI研究趨勢討論(四)--AI圖像生成(以Diffusion Model為例)
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22195
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
家中獨有一台設備wifi會斷斷續續
請問內網IP如何轉外網IP?
兩端防火牆使用IPSEC互PING之問題
Windows7升級Windows10後網路功能異常
python爬蟲 動態生成網頁104人力銀行
區域網路問題提問
vmware 虛擬機(windows)裡顯示使用容量與實際檔案容量不符合
如何寫公式才能利用excel 觸發一個數據時傳送一個訊息給 自已的line呢?有沒有可以用其它方式,來取代line notify 的方法,因為line 開始收費
HeidiSQL 查詢結果亂碼問題
2台 Hyper-V 2008 R2 叢集主機(硬體規格相同), 如何加入一台新機? 謝謝.
熱門回答
請問內網IP如何轉外網IP?
HeidiSQL 查詢結果亂碼問題
區域網路問題提問
Fortigate 50B 重置密碼
家中獨有一台設備wifi會斷斷續續
熱門文章
每日一篇學習筆記 直到我做完專題 :( [Day30]
每日一篇學習筆記 直到我做完專題 :( [Day31]
每日一篇學習筆記 直到我做完專題 :( [Day32]
Python 進階爬蟲工具 -Selenium : 安裝和使用ChromeDriver
使用 Selenium 自動化搜尋並擷取 Google 搜尋結果的 Python 範例
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}