電腦視覺的分類
傳統電腦視覺方法
傳統的電腦視覺可以使用Opencv等Python庫,對影像進行簡單的操作,例如對影像縮放、濾波、閾值分割等等。對於電腦來說,一張彩色圖片就是一個三通道的矩陣,分別對應紅綠藍(RGB)三種顏色,通過改變顏色的數值(0-255)來顯示出一張完整的彩色圖片,傳統的電腦視覺就是圍繞這一個三維矩陣,比如設置一個顏色區間,進行過濾等等操作。
這一類視覺處理的方法,功能相對較弱一些,能夠處理一些簡單的應用場景,比如識別綠色物體,識別動態的物體等。但是對於背景複雜的實際場景中,很多問題都難以解決。
推薦Opencv教程地址://github.com/CodecWang/opencv-python-tutorial
深度學習
通過人工智慧對影像進行處理的演算法有很多,其中最為經典的為卷積神經網路,對原始影像不停卷積運算,充分提取特徵,最後輸出想要的結果,這類方法經過實踐的驗證取得了非常不錯的精度表現,在目前的很多硬體上,都能夠跑出實時的效果。
當然,更多新型的視覺處理演算法也湧現出來,比如最近比較火熱的Transformer演算法,最初應用於NLP(自然語言處理),最近科研者們發現它在視覺領域也展現出了非常不錯的表現,很多領域下都取得了最佳的精度,突破了卷積神經網路的精度瓶頸。我們這期教程還是圍繞卷積神經網路,這種經典的演算法展開,仍然值得大家深入地學習。
電腦視覺任務的分類
分類(Classification)
分類任務是對整張圖片進行分類,例如最為經典的貓狗分類。
貓狗分類就是讓電腦對於我指定的圖片進行歸類,如果這張圖片是貓,我把圖片輸入到模型後,我期望輸出的就是貓這個類別。可以看到,分類任務是對整張圖片的歸類,如果一張圖片裡面既有貓,又有狗,那麼顯然分類無法完成,因為分類任務是不需要對物體定位的。分類任務是電腦視覺最簡單的任務,實現的難度最低,當然功能也最為簡單。
檢測(Detection)
檢測任務相對於分類任務,需要精確地對影像中的目標物體定位,一般用矩形框確定目標位置。如上圖,一張圖片中,有狗,有自行車,有汽車,對於檢測任務,就需要精確地框出他們的位置,並判別類別。檢測任務是對影像中的物體進行特徵識別,相比分類任務難度有所提升,也是我們經常會有的需求,需要精確判定特徵物體在畫面中的位置,例如行人檢測,人臉檢測等等。
分割(Segmentation)
分割任務的難度再次增加,任務要求不僅需要確定位置,還需要勾勒出物體的輪廓,類似PS的摳圖,過濾去背景。例如上圖所示的工業讀表,車道線分割等等,這類任務對於模型和演算法的考驗較大,在特定的場合中有一定的應用。