Basic Overview of Convolutional Neural Network

這篇文章主要是提供一個CV domain的overview,帶領大家快速回顧CNN的發展及應用

Convolution in CNN

傳統影像處理的技術會使用Image filter的技術來處理圖像,透過不同的濾波器可以對圖片進行convolution而得到不同的結果:

  • low pass filter
  • high pass filter

在以往這些filter的權重是透過研究而得出的,也就是一堆人都在研究各式各樣不同的filter。但是有沒有辦法讓電腦自己學習什麼樣的filter對我們的task最好呢?

這就是Convolutional Neural Network, CNN在做的事情。

CNN in Computer Vision domain

常見的CV領域應用如下,接下來會快速go through一遍每個領域,最後聚焦在Object Classification的各種模型。

  • Object Classification
  • Object Detection and Localization
  • Object Segmentation
  • Object Identification
  • Object tracking + ActionRecognition

Object Detection and Localization

除了判斷物體類別外,還要知道物體的bounding box

Issue探討:

  • 是先找到物體在去框box,還是先找box在來判斷物體?
  • 當透過模型得出一個物體有多個可能符合的box,如何找到最佳的box?
  • 找box跟classification看似是兩個不同的task,是否可以一起做(end-to-end)?

R-CNN, SPPnet, Fast R-CNN, Faster R-CNN, YOLO, SSD, YOLOv2, YOLO9000, FPN, YOLOv3

Object Segmentation

Segmentation可以說是 pixel-wise的classification,能夠提供更有效的語意資訊

Issue探討:

  • 核心概念: patch + sliding window
    • 將圖片分成許多小patch,針對每個patch去預測center pixel的label
    • Issue1: high computational cost?
    • Issue2: accuracy/localization trade off?
  • Unsampling(deConvolution)如何對應回原本的點?
  • Pooling具有平移不變性(translation invariance),對於classification較robust,但對於segmentation則不好,如何解決?
  • Semantic Segmentation (category-wise) v.s. Instance Segmentation (object-aware)

FCN, DeepLab, SegNet, Enet, ICNet, DeepMask, SharpMask, InstanceFCN, R-FCN, MNC, Mask R-CNN

Object Identification

Issue探討:

  • 臉部辨識技術?
  • 如何有有效率的用一個向量來表達一張圖片?
    • 應用在圖像檢索(image retrieval)
    • Binary descriptor + Hamming distance

Deepface, FaceNet, Binary Hashing Code, DeepBit

Object tracking + ActionRecognition

Conv有1d, 2d, 那Conv3d到底用在什麼地方? 就是這裡了!

辨識影片中某時刻的動作:

追蹤影片中的物體:

Object Classification

ImageNet Large Scale Visual Recognition Challenge(ILSVRC)

  • ImageNet dataset
  • 最後一屆2017年,Why?
    • 已經比人眼辨識率還低了你還想怎樣QQ

LeNet

  • for MNIST digit recognition
  • 2 Conv(Convolution layer) + 2 FC(Fully Connected layer)

AlexNet

  • 2 GPU to train
  • 2012 ILSVRC Winner(top 5 error rate: 16.4%)
  • 8 layers architecture
  • first use “ReLU” as activation function
  • use data augumentation for training

從此之後開始,正式進入大調參時代

ZFNet

  • 2013 ILSVRC Winner(top 5 error rate: 11.7%)
  • Same to AlexNet, but use smaller kernel size & increase kernel numbers

VGG

  • 2014 ILSVRC 2nd place(top 5 error rate:7.3%)
  • more deeper! 19 layers
  • use 3x3 Conv & 2x2 Maxpooling only: 目的是用多層的較小的filter達到一個大的filter包含的資訊。舉例來說2個3×3的Conv可以和1個5×5的Conv涵蓋一樣的資訊量,但參數量卻比較少。

  • do pooling after mutli-time Conv: 相較於以前一個Conv後面就接一個Pooling,VGG做了很多次Conv才接Pooling,因為這樣可以透過activation function使data有更多non-linear的變化。

GoogLeNet

  • 2014 ILSVRC Winner(top 5 error rate: 6.7% )
  • Let’s keep go deeper!!
  • 22 layers
  • inception model
  • use 1x1 Conv to reduction dimension
    • 1D-CNN? NIN!
    • 人在江湖飄,不能不知道。走CV你不能不知道的牛逼論文: Network In Network

ResNet

  • 2015 ILSVRC Winner(top 5 error rate: 3.6% )
  • more!!give me more depper!!!!!
  • 152 layers
  • residual block
    • 層數越多時,其實效果不一定會越好,因為information在高層中會很難進行傳播

SENet

  • 2017 ILSVRC Winner(top 5 error rate: 2.251% )
  • ResNet + SE block
    • learn weights for different kernel
    • 可以想成是對feature map做attention
  • Global Average Pooling
    • GAP? NIN!
    • 再說一次,人在江湖飄,不能不知道。走CV你不能不知道的牛逼論文: Network In Network

Issue探討

CNN越來越大到底GPU怎麼吃 ( •́ _ •̀)?

DenseNet

  • Dense Block
  • 每一層的輸入都包含了前一層的資訊(concat),降低了在層數過大時不容易propagation的問題
  • 每一層的輸入雖然很多,但參數量其實很少(Densnet的每一層的kernel數不用像其他model那麼多)
    • 因為特徵共用,大部分輸入來自其它層
  • 越深層,concat的input還是會越來越多,怎麼辦?
    • GAP
      • GAP? NIN!
      • 再說一遍,走CV你不能不知道的牛逼論文: Network In Network

MobileNet

  • Depthwise separable convolution: 透過不同的計算方式,在減少參數計算量下達到和一般convolution等價的結果
    • Depthwise convolution
    • pointwise convolution
      • Conv1d -> NIN!
      • 最後一遍,走CV你不能不知道的牛逼論文: Network In Network
  • 也就是說,任何CNN model都可以透過Depthwise separable convolution得到計算量跟參數量更小的等價model

Powered by Hexo and Hexo-theme-hiker

Copyright © 2020 - 2021 DSMI Lab's website All Rights Reserved.

UV : | PV :