CV 領域這樣入門進階才是對滴(一)
轉眼間,我們都跨進了2019年的大門,“ 計算機視覺戰隊 ”已經好久沒有和您們好好的一起談論Object Detection、Face Recognition、Video Segmentation等等領域的所有相關知識。在此,也感謝大家長久的陪伴與支援,謝謝!
年後 ,計劃在杭州來一次我們線下的交流會,怎麼樣?我們可以聚集在一起,相互認識,可以相互交流,也可以不談技術,多認識圈內的朋友,以後一起學習,共同進步!
今天開始,我們平臺將會推送一系列計算機視覺類的入門知識及相對應的實踐分享,若您感興趣,請持續關注我們的動態!
為了表示大家對平臺的關注與支援,每次推送的末尾留言前十名即將成為幸運兒,本平臺會通過私信傳送口令紅包作為獎勵,望大家踴躍參與,不僅可以學習知識還可以得到小小的紅包獎勵 :confetti_ball:
:eyes: 計算機視覺簡單介紹 :eyes:
計算機視覺是一門用計算機模擬生物視覺的學科,其實計算機視覺(Computer Vision)又稱為機器視覺(Machine Vision),顧名思義是一門“教”會計算機如何去“看”世界的學科。更具體地講,其實就是讓計算機代替人眼實現對目標的識別、分類、跟蹤及場景的理解。
當今,在機器學習火熱的前景下,計算機視覺與自然語言處理(Natural Language Process, NLP)及語音識別(Speech Recognition)並列為機器學習領域三大熱門方向 。
然而,計算機視覺領域中的傳統的手動設計特徵,如 梯度方向直方圖(Histogram of Gradient, HOG)、定向光流直方圖( Histogramsof Oriented Optical Flow, HOF )以及尺度不變特徵變換(Scale-Invariant Feature Transform, SIFT)等特徵,還有前期的玻爾茲曼機、人工神經網路等淺層模型,然後就是 傳統的手動設計特徵與 淺層模型的 組合等技術迅速發展,並且在近幾年逐漸轉向了以卷積神經網路(Convolutional Neural Network, CNN)為代表的深度學習模型。
:eyes: 入門需要展望的基礎技術 :eyes:
既然說到了計算機視覺,那肯定與其最相關的是OpenCV,先來簡單說說這個開源的、跨平臺的計算機視覺庫,好像是由英特爾公司發起並參與開發的一款工具,在研究領域和商業中都是可以免費使用,如果你要進入該領域,必須要有這個工具使用的基礎技術,尤其是基於Python來開發基於OpenCV3的應用。
Python作為當前非常主流的動態語言之一,不僅非常簡單,而且功能強大,如果你有了Python的基礎,來學習OpenCV框架的話,我覺得應該可以讓你更加快速的去理解計算機視覺的基本概念及一些常用演算法。
:eyes: 影象基礎技術不可少 :eyes:
只要涉及到計算機視覺,應該與影象有著緊密不可分的關係。接下來我簡單介紹下影象類的基礎,有興趣或者有需求的您自行去補充自己所需的乾貨。
畫素
畫素是影象中最最最基礎的構成,演算法框架中的每張輸入影象都是由畫素集合組成, 若將影象看作網格組成的,那每個小塊就是由單個畫素組成,如下所示:
比如,上面的貓圖,其解析度為720 * 1080,意味著有720畫素寬,1080畫素高,在影象中則就一共有720 * 1080 = 777600個畫素組成。其中, 灰度圖中 ,每個畫素的值在 [0,255] 的範圍之間,0對應黑色,255對應為白色,在0 - 255之間的值是不同程度的灰色,越靠近 0 越黑,越靠近 255 的越白。如下圖:
RGB 的顏色通道中,畫素則代表了3個值的列表,一個為紅色,一個為綠色,一個為藍色。同樣的每個顏色通道取值也在範圍 [0,255] 中,0代表不表示當前顏色,255代表全部表示當前顏色。若 給定紅綠藍三種顏色的值,可以將以紅、綠和藍的格式組合成一個元組,這個元組就代表著RGB通道中的圖片。
OpenCV案例
每個畫素都會有一個值,但是不同格式表示畫素的方式會有不同的,比如你用Python和NumPy表示一幅影象的細節,可以通過二維NumPy陣列簡單建立黑色的正方形影象:
img = numpy.zeros( ( 3 , 3 ) , dtype = numpy.uint8 )
從控制檯列印這張影象的話,你可以看到下面的結果:
arry( [ [ 0, 0, 0] ,
[0, 0, 0],
[0, 0, 0], dtype = uint8 )
其實可以用cv2.cvtColor函式將上面的影象轉換成BGR (Blue-green-red) 格式:
img = cv2.cvtColor ( img, cv2.COLOR_GRAY2BGR )
從上面的結果可以看出,每個畫素都由一個三元陣列表示,而且每個整型向量分別表示一個B、G和R通道。其他的色彩空間(HSV)也可以以同樣方式表示畫素,只是取值範圍和通道數不同。(HSV的色度值範圍是0 - 180)
今天就先說到這裡吧,接下來我們開始一起學習基本影象處理及相關小實踐。
如果想加入我們“ 計算機視覺戰隊 ”,請掃二維碼加入學習群,我們一起學習進步,探索領域中更深奧更有趣的知識!