面向視覺識別的卷積神經網絡 CS231n Introduction
-
計算機視覺的歷史 the history of computer vision
重要節點:
-
1959 Hubel & Wiesel
利用和人比較相像的貓的視覺神經做實驗:簡單細胞反應燈的位置;復雜細胞反應燈的位置和移動;超常細胞反應最后的點的移動
-
1963 Block world
特征點的選擇
-
1970s Stage of Visual Representation 視覺表征階段
input image -> edge image(primal sketch) -> 2-D shetch -> 3-D model
-
1973 Pictorial Structure
-
1979 Generalized Cylinder
-
1987 maybe 重要輪廓?
-
1997 Normalized Cut 圖像像素分割
-
2001 Face Detection 面部檢測
-
1999 SIFT & Object Recognition 尺度不變特征變換
-
2006 Spatial Pyramid Matching 金字塔匹配
-
2005 Histogram of Gradients HoG 梯度直方圖
-
2009 Deformable Part Model 可變形的部件模型
-
2006-2012 PASCAL Visual Object Challenge
-
圖像分類 image classification
- visual recognition:視覺識別
- 目標檢測object detection
- 圖像摘要image captioning:根據圖片內容生成描述信息
- 但是視覺上的智能要遠遠超過簡單的目標檢測,比如可以識別圖像表達的含義,圖像中的物體相互之間的聯系,推斷圖像中正在發生什么 等等等
圖像分類流程 Image Classification pipeline
在機器視覺當中,圖像分類是一個核心的任務
-
圖像分類會遇到很多問題
比如語義鴻溝:用像素點去表示圖像
視角變化、光線變化、目標變形、目標被遮擋、背景和目標相似性大、同類目標之間的差異性對圖像造成的影響。。。
-
解決方法 - 數據驅動
收集大量的各種各樣的目標圖像,為了讓模型學習到更多樣的特征,更具有泛化性和魯棒性
-
第一種分類器:近鄰算法
我的理解就是兩張圖片的相似性吧 下面是相似性的計算方法
圖像比較的距離度量標準:
-
L1 distance
但是這種算法存在訓練時時間復雜度為1,推理時時間復雜度為n的情況,我們想要的是訓練耗時但推理很快的模型
-
L2 distance
K最近鄰算法:K-Nearest Neighbors:
這種算法不是從最近鄰復制標簽, 而是從K個最近點中采取多數表決majority vote
K最近鄰算法可以采取上述圖像比較的距離度量標準的任意一種
兩種問題:
-
k的選擇
當需要對一個新樣本進行預測的時候,模型會在訓練集中尋找與該樣本最相似的k個樣本,然后以這k個樣本中哪個種類數最多來判斷這個新樣本的中來,so K 決定了 “參考多少個鄰居” 來做預測,是 KNN 的核心超參數。
-
L1 / L2 distance的選擇
L1/L2 距離 用于量化樣本間的相似度,決定了 “誰是最近鄰”,直接影響鄰居的選擇結果。
解決方法 - 訓練集 驗證集 測試集
設定不同的超參數k,在分成幾份的訓練集上訓練,用驗證集驗證,在測試集上觀察對完全嶄新樣本的預測
(訓練集:模型在訓練集當中進行反向傳播更新參數;驗證集:驗證集僅用來作為判斷模型預測的結果和真實結果的誤差,不進行參數更新;測試集:就是模擬真實世界的情況,觀察預測的結果)
但是K最近鄰算法幾乎不用在圖像上:推理速度慢、基于像素的距離度量缺乏信息量(就是說可能肉眼幾個差異大的圖片輸進去可能和原圖的像比較的距離度量標準相同)、會發生維度災難(高維的運算量大)
線性分類 Linear Classification
參數化方法 parametric approach 用線性分類器,就是可以通過線性的曲線將所有類別都分隔開來
但是肯定不是所有的類別都能用線性的曲線分隔開來的
問題:
- 怎么確定參數是不是合適的?
解決方法:
- 損失函數 (計算真實結果和預測結果的差值 我們的目標就是最小化它)
- 優化器(梯度下降方法 等)
- 卷積網絡 (可以處理非線性的問題)
-