[DL]淺談CNN在Object Classification上的各種架構

Posted by John on 2018-11-06
Words 1.2k and Reading Time 4 Minutes
Viewed Times

這學期修了一門課程叫做視訊串流與追蹤,主要在介紹深度學習在圖像、影像上的各種應用,從學期初至今被摧殘了不少,但也學到了不少,於是想來紀錄一下目前學習到的一些內容。

簡介

首先,深度學習在圖形的相關應用,目前CNN再圖像、影像上的應用上取得了非常突出的成果,基本上有以下這幾種(當然還有更多其他的有趣應用…太多了說不完…不過我不要寫成表格):

  • Object Classification:分類一張圖片內的物體是哪一種類別
  • Object Detection & Localization:檢測出圖片中的物體類別,還要知道他的位置(Bounding box)
  • Object Segmentation(Semantic / Instance):除了知道位置外,更進階的是找出圖片中哪些pixel是屬於這個類別
  • Object Identification:確認這個物體是哪個個體
  • Object Tracking:在影片中追蹤物體的位置、形變

知乎上有找到一則我覺得很不錯的回答,循序漸進的帶我們了解了深度學習再圖像上的各種應用,推薦大家前去看看(用深度学习玩图像的七重关卡)

今天要來介紹的是在Object Classification上取得了好成績的各種神奇架構,以及它們各自的特色(都只是點出重點,細節部分有興趣請去看原始論文)。

下面會簡介這幾種網路架構,以及他們的特色:

  1. LeNet
  2. AlexNet
  3. ZFNet
  4. VGG
  5. GoogLeNet
  6. ResNet

LeNet

20150903161702138

CNN的經典架構,兩層Conv(Convolution Layer)接兩層的FC(Fully Connected Layer),主要被用於手寫辨識上,好像沒啥好介紹的xD


AlexNet

vz2vvVQ

2012年的ILSVRC上,AlexNet憑著更深的CNN打敗了其他的對手,對於使用ML調參調的半死的人想必恨的牙癢癢的,它的特色如下:

  • 使用兩張GPU分開訓練(在當時,GPU記憶體還沒有那麼大)
  • 使用8層架構
  • 第一個使用ReLU作為activation function
  • 使用Norm layers: Local Response Norm(LRN)
  • Data augmentation: 將圖片平移、旋轉,增加training set的多樣性

ZFNet

ZFnet

ZFNet將AlexNet的架構拿來修改了一下,然後得到了2013年的冠軍!恭喜恭喜

主要修改的部分是縮小filter size和增加filter number


VGG

這應該是大家比較熟悉的一個網路架構,嫌AlexNet 8層不夠深?那我們就來邁向更深網路吧

VGG是ILSVRC 2014年的第二名,第一名則是下面介紹的的GoogLeNet

  • 只使用3x3的Conv和2x2的Maxpool:目的是用多層的較小的filter達到一個大的filter包含的資訊。舉例來說2個3x3的Conv可以和1個5x5的Conv涵蓋一樣的資訊量,但參數量卻比較少(3*3*2 < 5*5*2)。
  • 相較於以前一個Conv後面就接一個Pooling,VGG做了很多次Conv才接Pooling,因為這樣可以透過activation function使data有更多non-linear的變化。

GoogLeNet

GoogLeNet

然後這才是正宮,使用了22層達到了ILSVRC 2014年的第一名!恭喜恭喜,那他做了什麼事情呢?

  • 不用FC層:有看過[ML]Calculate Parameter Numbers of MLP & CNN這一篇(對,偷偷工商一下)的人就會知道FC由於是全連接會產生大量的weights參數,不使用FC使得參數量大大的降低(~5M,遠小於VGG的138M)。
  • 提出了inception model:我們在自己寫CNN時常常會想,Conv的filtersize到底要多大比較好呢?要先做Pooling嗎?…這些問題真的很困難,那何不讓網路幫我們自己決定就好呢?所以就inception model就出現啦

inception model

  • 1x1 Conv:看一下inception model就會發現GoogLeNet使用了1x1 Conv來做降維的動作,1x1 Conv的output size會跟原圖一樣,如果filter number減少,就是降維了。

ResNet

接下來讓我們介紹2015的冠軍,總共使用了152層…

  • 並不是越深越好,該篇論文有指出,僅僅是增加深度不會使得效果比較好,甚至會使得誤差增大。
  • residual block:於是他們提出了residual block這個架構,在越深的layer資訊越難往下傳遞,所以透過這個架構使得上層的資訊能夠比較容易被保留

res block


Deformable Convolutional Network

這是2017年提出的,不確定有沒有得到獎,不過想法蠻有意思的,想拿出來說一下:

我們以往在做Convolution的時候都是一個正方形的運算,也就是拿一個filter去對image對應位置做運算。但是這篇提出來的想法是,我不一定要對應到原本的位置,我也可以利用不同的對應去模擬一些情況,比方說我可以模擬縮放跟旋轉,看圖片會比較明白。

下載

1_6lBZ5rM1fExa_N_VTtNfXw


>