我們經常能聽到計算機視覺這個詞語,像數字圖像處理,算法設計,深度學習等領域。但很少有人會先去了解清楚這門知識,而是用到什么再學什么,雖然這在項目進度上能節省不少時間,但有時候囫圇吞棗式地學習容易落下很多知識,也很難形成對這門知識的架構。
計算機視覺的定義并不復雜,顧名思義,就是針對視覺數據的研究。但為什么會說這門課這么重要呢,這是因為現在網絡上大部分的流量源頭都是視頻,且很多學科的知識理都會包含視覺數據。對于我們來說,關鍵的地方在于怎么用算法來開發這些可以利用和理解的數據,對于算法來說這些視覺數據直觀上就是很多數字,我們不進行處理以及給算法設計特別的功能的話,不亞于讓其讀天書。
在早期的視覺研究中,要在計算機中成像一幅圖片,或者是一個3D物品,需要先將它的邊緣構建出來,也就是通過一些手段將邊緣描出來,一開始是用一個個叉仿照線的結構,勾勒出一個類似的邊緣,接著我們通過不規則的曲線,把深度信息和物品與場景的不規則性拼接在一起,最終將已經構造出的內容拼接在一起,就能得到一個由表面和體積圖等分層內容組裝的3D模型。
順著這個思路去想,我們要想結構一個視覺數據,思路就是上述所說的組裝模型的逆推思路,但現實中的事物是非常復雜的,這就引出了用廣義圓柱體和圖形結構去構建模型。畢竟,就跟火柴人一樣,很多事物都可以簡化為用簡單的幾何圖形去構建。進而,也就延伸出了圖像分割的說法,即把圖像中,關于某件事物的像素點從背景中提取出來,這有助于明確我們的任務方向和目標。
那么,如果要識別一個圖案,最快的方法就是,我們把類似圖片的重要特征提取了出來,這種特征在圖案變化的過程中,往往是具有強的表現性和不變性的,匹配這些目標,比匹配整個圖案更加簡單,所提取的這種特征叫做SIFT特征。類似的,有一種叫做空間金字塔匹配的算法,是通過以不同分辨率從圖像的不同部分提取特征一起放在特征描述符中,在這些特征上做一個支持向量機(對特征進行分類)。
當然,不可避免的由于數據集的限制,當我們用于訓練模型去識別圖片時,往往會出現過擬合的現象,即使我們對參數進行了調優,由于視覺數據過于復雜,所以我們會盡可能地讓訓練用的數據更豐富來減少過擬合現象(如果計算資源足夠)。而隨著時代的發展,不僅視覺數據的質量在上升,我們所使用的數據集,也有了不一樣的處理方式:我們一般會采用有標注的圖片進行訓練(即標號是什么圖片),有助于模型進行更好地學習。
學習來源于斯坦福教程:Stanford University CS231n: Deep Learning for Computer Vision