【DL-CV】計算機視覺前置瞭解

【DL-CV】【深度學習-計算機視覺】系列簡介及入門推薦<前篇----後篇>【DL-CV】線性分類器html

在初次進入坑,接觸高深的算法環節以前,有必要對計算機視覺的目標和實現有一個大概的瞭解。雖然說都是些量少易懂的知識點,卻主角般地貫穿着整個學習過程,並且做爲從小白到學習者思惟轉換的橋樑,其必要性是確定的。因此對於從未接觸過深度學習的小白,強烈推薦瞭解,非小白可跳過算法

圖像分類

首先來了解在計算機視覺領域上的圖像指的是什麼。——圖像由像素組成,每一個像素經過三原色(RGB)的明暗組合造成一種顏色,RGB各有256級亮度用數字0~255表示。最終圖像就是一個由數字組成的三維數組Rw*h*c,三個維度分別是寬、高、顏色通道。segmentfault

所謂的圖像分類問題,則是在已有固定的分類標籤集合中找出一個標籤分配給輸入的圖像。這是計算機視覺領域的核心問題之一,而且有着各類各樣的實際應用。計算機視覺領域中不少看似不一樣的問題(好比物體檢測和分割),均可以被歸結爲圖像分類問題,許多算法和原理都是爲解決此問題服務的。數組

圖像分類對人來講是簡單至極的,但對於本質上只會算數的計算機來講,問題變得複雜起來。「把表明圖像的一堆數字經過數學運算變成一個標籤(經過計算得到視覺)」 光是這個過程就看似沒法理解了,但實際上這是可行的,很多現有的模型能得到不錯的結果,原理與實現以後會介紹,如今咱們來談談計算機視覺算法在圖像識別方面遇到的一些困難函數

  • 視角變化(Viewpoint variation):同一個物體,攝像機能夠從多個角度來展示。
  • 大小變化(Scale variation):物體可視的大小一般是會變化的。
  • 形變(Deformation):不少東西的形狀並不是一成不變,會有很大變化。
  • 遮擋(Occlusion):目標物體可能被擋住。有時候只有物體的一小部分是可見的。
  • 光照條件(Illumination conditions):在像素層面上,光照的影響很是大。
  • 背景干擾(Background clutter):物體可能混入背景之中,使之難以被辨認。
  • 類內差別(Intra-class variation):同一類物體的個體之間外形差別可能很大。
  • 圖片描述

這些在人看來不太影響分類的變化,在計算機看來簡直是天差地別,每一種變化都讓輸入的數字數組發生巨大變化。如何提升算法的健壯性,加強噪音抵抗力,在維持分類結論穩定的同時,保持對類間差別足夠敏感,這些都是算法設計者要考慮的問題學習

數據驅動方法

關於詳細的解釋,能夠參考這篇文章。這裏只簡單的說明一下,因爲類別的多樣性與同類的類似性,在算法中逐一指定參數實現某個類的區分是很不現實的(先不考慮能不能直接找出這堆參數),因此目前流行的算法更相似於人類學習的過程——給計算機不少已分類好的數據,而後實現學習算法,讓計算機本身調整這堆參數,從而學習到每一個類的區分。這種方法,就是數據驅動方法。測試

以此爲基礎,整個圖像分類過程能夠總結爲三步:spa

  • 輸入: 輸入是包含N個圖像(3維數組)的集合,每一個圖像的標籤是K種分類標籤中的一種。這個集合稱爲訓練集。
  • 學習: 用訓練集來學習每一個類到底長什麼樣。通常該步驟叫作訓練分類器或者學習一個模型。
  • 評價: 讓分類器來預測它不曾見過的圖像(測試集)的分類標籤,並以此來評價分類器的好壞。若是分類器預測的分類標籤和圖像真正的分類標籤一致,那很棒。

關於數據來源,cs231n課程使用的是圖像分類數據集CIFAR-10,這個數據集包含了60000張32X32的小圖像。每張圖像都有10種分類標籤中的一種。這60000張圖像被分爲包含50000張圖像的訓練集和包含10000張圖像的測試集。本系列也將基於此數據進行實踐。.net

超參數及其調優

在構造分類器(算法)的時候,某些參數和函數的是必需要人爲選擇的,可是關於選擇哪一個才能得到最佳效果,不實踐的話很難直接給出答案。相似這樣的選擇,就叫作超參數。這樣一說,調優的方法就很明瞭了,把可能的選擇都試一遍,選擇準確率最高的一個就好了(一般做圖分析取峯值)。設計

但要注意的是千萬不能用測試集來進行調優,由於這會帶來對測試集過擬合的風險(用測試集訓練出來的分類器跑測試集固然表現好,都熟悉了
)。正確的作法是從訓練集中分一部分(一般10%~50%)做爲驗證集用於調優,剩下的再做爲訓練集用於學習。

測試數據集只使用一次,即在訓練完成後評價最終的模型時使用。

交叉驗證

有時候訓練集數量較少,分得的驗證集更少,不利於超參數的調優,這時會用交叉驗證的方法,儘量榨乾整個訓練集。
原理是把訓練集分紅N份(一般3,5,10),循環着取其中一份做爲驗證集,其餘做爲訓練集,共跑N次。對於每一個超參數的N個結果取它們的平均值做爲該參數的表現,全部平均值畫線鏈接取峯值對應的參數便可。

圖片描述

一般在深度學習(大型模型)中不會用交叉驗證,由於這會使計算量翻N倍。但對於小型數據集值得一試。

相關文章
相關標籤/搜索