1. 程式人生 > >學習筆記 -- 斯坦福課程:CNN for Visual Recognition(一)

學習筆記 -- 斯坦福課程:CNN for Visual Recognition(一)

去年就想聽聽這“接地氣”的課程了,但最終也沒有堅持下來。今年既然有了線上的課程視訊,我也開個筆記系列,好好地從基礎開始學起吧。由於課程內容還是比較基礎,這裡只紀錄一些個人覺得有趣或者有用的點,更多的內容大家直接去網站上看吧,相信會有不少收穫的。

Lecture 1:機器視覺歷史簡介

  • 生物視覺的誕生可以追溯到距今五億四千多萬年前的物種大爆炸時期
  • 公元16世紀出現了照相機的雛形紀錄,人們開始考慮用儀器(光學鏡片)來複制(duplicate)所看到的世界
  • 1959年,Hubeli & Wiesel著名的工作嘗試通過實驗研究生物視覺系統的工作原理(測量視覺神經元對不同刺激的反應)。
    • 生物視覺系統中,底層視覺是由簡單的結構
      (邊緣等)組成的。
  • 1963年,出現了機器視覺的先導性工作“Block world”。作者Larry Roberts在他的博士論文中首次提出通過計算機提取圖片中物體的邊緣。
  • 1966年夏,MIT一個研究組提出的“The Sumer Vision Project”專案被認為是機器視覺誕生。(當時的教授認為:視覺是多麼簡單的東西,我們一個夏天就能夠搞定!。。。)
  • 1970年代,David Marr撰寫了“Vision”一書。書中講述了視覺系統具有一個層次性的結構(hierarchical)。
  • 1987年,人們開始對圖片中的真實物體進行識別,如David Lowe的工作。
  • 1997年,Shi&Malik具有影響力的工作 Normalized Cut,開始研究稱為”Perceptual Grouping“的問題:將影象分割成不同可被感知的小塊或區域。
  • 2001年,Viola&Jones發表了富有影響力的人臉檢測工作。
    • 文中所用的特徵是通過訓練學習得到的
    • 第一次實現了實時的機器視覺演算法(之前的演算法都非常的慢)
    • 這個時期,機器視覺的關注點有所轉移:從之前的視覺重構轉到“識別”問題(更接近AI問題)
  • 1999年,David Lowe提出了著名的SIFT特徵,並用於目標識別當中。
  • 2009年,Felzenswalb等人提出了Deformable Part Model,將目標分成各個相關的部分,並用SVM識別各個部分。(用於行人識別)
  • 2006年左右,機器視覺領域逐漸成熟,學術界出現了一些公開的標準資料集,如:PASCAL,ImageNet。

Lecture 2:圖片分類基礎

  • 介紹了圖片分類問題的挑戰性(視角、光照、變形、遮擋、背景影響、類內差異等)
  • 採用資料驅動(data-driven)的方法來解決,如:最鄰近分類器(Nearest Neighbor classifier)
  • 最鄰近分類器的一個缺點:雖然訓練速度很快(不需要訓練),測試時的分類速度卻隨著訓練資料量的增大而線性增大。然而在實際應用中我們一般認為測試速度比訓練速度更為重要。(CNN則與之相反,訓練時需要大量時間,但是測試時間卻很短,與訓練資料大小無關)
  • 加速最鄰近分類器的一些近似演算法,如FLANN
  • 通過驗證集確定超引數(如k鄰近演算法中的k)
  • 引數化模型(Parametric approach):線性分類器 f(x,W,b)=Wx+b
  • 線性分類器到底在做什麼?
    • 利用訓練得到的權值(weights)對特徵的各個分量進行加權求和,得到該各類別的分數輸出。如果我們直接拿影象畫素值作為特徵,則可以得到如下圖的視覺化結果:1
    • 如果我們將每張影象的特徵看作高維空間中的一個點,線性分類器可以得到一些超平面,其中的權值即使這些超平面的法線方向,如下圖:2

Lecture 3:損失函式和優化問題

與上節課不同,這節課雖然也是介紹一些非常基本的概念,但其中對於損失函式的討論比較有意思,值得一聽。

  • Multiclass SVM Loss:給定(資料,標籤)對(xi,yi) 和分類器輸出s=f(xi,W),損失函式為 L=1NiLiLi=jyimax(0,sjsyi+1)
    • 權值正則化(Regularization):L(x,W)+λR(W)
  • Softmax Loss:將分類器輸出分數看作各類“未歸一化”的指數概率(unnormalized log probabilities of the classes),Li=log(esyijesj)
  • SVM vs. Softmax
    • SVM 對於滿足間隔要求的資料點更具有魯棒性(當資料點遠離間距時,微小的變動不會影響損失函式值(就是零))。SVM只對於資料空間中的一部分區域性(margin附近)有影響,而Softmax對於整個空間都有影響。
    • 實際應用中兩者差異不大
    • 一個視覺化demo
  • 優化:梯度下降
    • 數值梯度:近似值,計算慢,易實現 –> 常用於梯度檢測
    • 微積分計算梯度:精確,快速,易犯錯
  • 一些不同優化演算法的視覺化demo,非常好看。