計算機視覺常見領域問題概要(深度學習)

emmm首先這篇文章參考自這裡,我是在一些具體問題上結合自己有限的知識,加上了一些應用場景以及常見演算法模型概要。一方面當作自己的總結,一方面也可以讓剛入門的筒志們對計算機視覺里一些常見問題有個更清晰的額認識。(水平實在有限==)

https://www.zhihu.com/video/927308988817772544

首先,當前CV領域主要包括兩個大的方向,」低層次的感知」 和 「高層次的認知」。

主要的應用領域:視頻監控、人臉識別、醫學圖像分析、自動駕駛、 機器人、AR、VR。

主要的技術:分類、目標檢測(識別)、分割、目標追蹤、邊緣檢測、姿勢評估、理解CNN、超解析度重建、序列學習、特徵檢測與匹配、圖像標定,視頻標定、問答系統、圖片生成(文本生成圖像)、視覺關注性和顯著性(質量評價)、人臉識別、3D重建、推薦系統、細粒度圖像分析、圖像壓縮。

1、分類(image classification)

主要需要解決的問題是「我是誰?」

分類是image處理的基本問題,其他如目標檢測分割等都可以細化到分類演算法來解決。圖像分類任務的進展,一定程度上可以對應著卷積神經網路的發展,從alexnet到inception,vgg系列等,主要是層次的加深以及優化,到resnet和densenet等殘差系列,則是為了解決網路層次加深帶來的難以優化的問題,再到mobilenet和shufflunet等,則是往輕型化的結構發展。可以說,resnet把圖像分類帶向了巔峰。順便提一下Hinton老爺子提出的Capsule網路,其主要想解決CNN中存在的一些缺陷,比如說信息丟失,視角變化等,比如說池化(Pooling)操作會導致局部內容的準確位置和相對空間關係等信息丟失。(作為菜雞先用著cnn,待大佬們把坑填完了再看capsule 吧。 = = )

放張resnet的局部結構圖

reset局部結構圖

2、目標檢測與定位(object detection/ localization)

主要需要解決的問題是「我是誰? 我在哪裡?」

從r-cnn到faster-rcnn,通過改進網路來提高速度與精度,但可以說都遵循了目標檢測的四個基本步驟,候選區域生成,特徵提取,分類,位置精修,採用的思路都是proposal+分類.yolo採用了另一種策略,將檢測問題轉換成回歸問題,直接在輸出層回歸bounding box的位置和bounding box所屬的類別,通俗點說這種網路的結構跟普通的簡單的分類網路是一樣的,只是目標不同導致loss不同。SSD與yolo類似,最大的不同是SSD會在每次卷積之後的特徵層都會再次卷積然後去做回歸任務,也就是低維和高維的特徵上都做了檢測。另外,MASK-RCNN可以同時完成分割和檢測的任務。

放一張YOLO與SSD結構的對比圖

yolo && SSD

3、圖像分割

主要需要解決的問題是「我是誰? 我在哪裡?你是否能夠在像素級正確分割我?」

分割(segmentation )又有兩個不同方向:semantic segmentation 和instance segmentation。Semantic segmentation的目標是在圖像中分割每個像素所屬的類別,但是不關心所屬的實體。而instance segmentation是更精細一步分割像素是屬於不同的實體。個人認為instance segmentation=Semantic segmentation+object localization。

在演算法方面,全卷積神經網路FCN可以說是開山之作,還有適合醫療圖像分割的基於FCN的UNET,另外改進的還有SEGNET,DECONVNET等。

下圖所示image classification,object localization和segmentation 這個四個領域的區別:

再放一張FCN的結構圖;

4、目標追蹤(Visual tracking)主要需要解決的問題是「你能不能跟上我的步伐,儘快找到我?」,目標追蹤領域是相關濾波的天下。

5、視頻中的人體行為識別

主要包括兩個方向:Action Recognition 以及 Temporal Action Localization:

Action Recognition的目的是給定一個視頻片段進行分類,類別通常是人的各類動作。特點是簡化了問題,一般使用的資料庫都先將動作分割好了,一個視頻片斷中包含一段明確的動作,時間較短(幾秒鐘)且有唯一確定的label。所以也可以看作是輸入為視頻,輸出為動作標籤的多分類問題。常用資料庫包括UCF101,HMDB51等。相當於對視頻進行分類。

Temporal Action Localization 則不僅要知道一個動作在視頻中是否發生,還需要知道動作發生在視頻的哪段時間(包括開始和結束時間)。特點是需要處理較長的,未分割的視頻。且視頻通常有較多干擾,目標動作一般只佔視頻的一小部分。常用資料庫包括HUMOS2014/2015, ActivityNet等。相當於對視頻進行指定行為的檢測。

action recognition與temporal action detection之間的關係,同 image classfication與 object detection之間的關係非常像。基於image classification問題,發展出了許多強大的網路模型(比如ResNet,VGGNet等),這些模型在object detection的方法中起到了很大的作用。同樣,action recognition的相關模型(如two stream,C3D, iDT等)也被廣泛的用在temporal action detection的方法中。

6、邊緣檢測主要需要解決的問題是:「如何準確的檢測到目標的邊緣?」

7、人體姿態識別

主要需要解決的問題是:「你需要通過我的姿勢判斷我在幹什麼?」

二維圖像姿態估計基於CNN的單人姿態估計方法,主要有Deep Pose、CPM,hourglass以及各種hourglass結構引申之作。

二維圖像姿態估計基於CNN的多人姿態估計方法,通常有2個思路(Bottom-Up Approaches和Top-Down Approaches)::

(1)two-step framework,就是先進行行人檢測,得到邊界框,然後在每一個邊界框中檢測人體關鍵點,連接成一個人形,缺點就是受檢測框的影響太大,漏檢,誤檢,IOU大小等都會對結果有影響,代表方法就是RMPE。

(2)part-based framework,就是先對整個圖片進行每個人體關鍵點部件的檢測,再將檢測到的部件拼接成一個人形,缺點就是會將不同人的不同部位按一個人進行拼接,代表方法就是openpose。

9.理解CNN主要需要解決的問題是:「從理論上深層次的去理解CNN的原理?」

10.超解析度重建

主要需要解決的問題是:「你如何從低質量圖片獲得高質量的圖片?」

超解析度技術(Super-Resolution)是指從觀測到的低解析度圖像重建出相應的高解析度圖像,在監控設備、衛星圖像和醫學影像等領域都有重要的應用價值.

演算法方面,SRCNN是將深度學習引入解析度重建的開山之作,結構類似AE,只用了3層CNN,基於此的改進還有DRCN,ESPCN。既然是生成圖片那就有必要考慮生成模型 GAN了,就有了SRGAN,其出發點是傳統的方法一般處理的是較小的放大倍數,當圖像的放大倍數在4以上時,很容易使得到的結果顯得過於平滑,而缺少一些細節上的真實感。因此SRGAN使用GAN來生成圖像中的細節,同時也改進了損失函數。放一張SRGAN的結構圖。

SRGAN

11.序列學習主要解決的問題是「你知道我的下一幅圖像或者下一幀視頻是什麼嗎?」

12.特徵檢測與匹配主要需要解決的問題是「檢測圖像的特徵,判斷相似程度?」

13.圖像描述(image caption)

主要需要解決的問題是「你能說出圖像中有什麼東西?他們在幹什麼呢?」

看圖說話(Image Caption)任務是結合CV和NLP兩個領域的一種比較綜合的任務,Image Caption模型的輸入是一幅圖像,輸出是對該幅圖像進行描述的一段文字。這項任務要求模型可以識別圖片中的物體、理解物體間的關係,並用一句自然語言表達出來。

應用場景:比如說用戶在拍了一張照片後,利用Image Caption技術可以為其匹配合適的文字,方便以後檢索或省去用戶手動配字;此外它還可以幫助視覺障礙者去理解圖像內容。類似的任務還有Video Caption,輸入是一段視頻,輸出是對視頻的描述。

演算法方面,最簡單的一類做法是用CNN提取圖片的特徵,再丟給LSTM,實際上也就是一個seq2seq結構,在就是改進的話加上attention機制。另外,比較新的一個演算法的做法是,在vistual attention的基礎上,提出了spatial atention,也就是空間注意力,讓模型在生描述的適合,能夠更加確定應該關注的空間。以下是這類演算法的一種結構

14. 視頻標定主要需要解決的問題是「你知道我這幾幀視頻說明了什麼嗎?」

15. 問答系統

主要需要解決的問題是:「你能根據圖像正確回答我提問的問題嗎?」

與image caption類似——VQA任務也同時涉及到CV和NLP兩個領域,但是與image caption不同的是看圖說話只需要產生對圖片的一般性描述,而視覺問答根據問題的不同僅聚焦與圖片中的某一部分,而且某些問題還需要一定的常識推理才能做出回答.同樣,很自然的一種解決辦法還是CNN和RNN的結合。

演算法方面,最簡單的模型是Deeper LSTM Q + norm I模型,其中I指的是提取後的圖片特徵,norm I指的是對CNN抽取的圖像語義信息向量(1024維)做L2歸一化處理。CNN抽取圖像語義信息,LSTM抽取問題中包含的文本語義信息,將兩者的信息融合,讓模型學習到問題的含義/意圖,最後送入一個以Softmax為輸出層的多層MLP中產生答案輸出,也就是轉化成了一個分類問題。結構如下.此外還有一些模型,比如Neural-Image-QA模型,MQA模型。

16.圖片生成

主要需要解決的問題是:「我能通過你給的信息準確的生成對應的圖片?」

通過文字生成對應的圖片是圖片描述的逆操作,但是想利用CNN通過比較少的文字信息去生成一張圖片就比較困難了,直覺上也好理解,[X1,X2,X3]-->[y] 這種映射好學習,但是這種[Y]-->[X1,X2,X3]就比較難了,除非提供很多很多的數據。通過上圖也可以看出,即便通過句子生成了圖像,句子的表述內容也是有限的,因此txt->img比img->txt難多了,本質上還是圖片中蘊含的信息更豐富。

演算法方面,比較早的是GAN-CLS, 利用生成模型GAN,進一步講是條件GAN,也就是在生成器里輸入描述的句子與隨機向量,判別器里會輸入三種信息,首先是真圖片與真句子,假圖片與真句子,這兩點與CGAN相同,但是為了既要判斷生成的圖片是否合理,也要判斷生成的圖片是否與句子對應,因此還會輸入真圖片與假句子。下面是是其結構圖

另外還有比較新的stackGan,也就是堆疊GAN.換句話說,就是沒有一次性的通過一個網路將隨機變數生成為一張圖片,而是先將其生成為一張比原始圖片小的的圖片,送給判別器,然後這張圖片再次送進另一個生成網路,z再給另一個判別器,也就是兩個Gan。可以說,這種做法跟上面提出的生成圖片存在的困難是對應的。

17.視覺關注性和顯著性主要需要解決的問題是:「如何提出模擬人類視覺注意機制的模型?」

18.人臉識別

人臉識別的四大塊:Face detection, alignment, verification and identification(recognization),分別代表從一張圖中識別出人臉位置,把人臉上的特徵點定位,人臉驗證和人臉識別。(後兩者的區別在於,人臉驗證是要給你兩張臉問你是不是同一個人,人臉識別是給你一張臉和一個庫問你這張臉是庫里的誰。人臉檢測,可以說傳統方法已經表現很好了,在深度學習上也可以是個目標檢測問題。這裡主要說一下人臉驗證,比較start-of-art的演算法有face++,DeepFace,FaceNet, Deepid.上一張deepid2的結構圖

19.3D重建主要需要解決的問題是「你能通過我給你的圖片生成對應的高質量3D點雲嗎?」

20.推薦系統主要需要解決的問題是「你能根據我的輸入給出準確的輸出嗎?」

21.細粒度圖像分析

主要需要解決的問題是「你能辨別出我是哪一種狗嗎?等這些更精細的任務」

演算法模型方面,「強監督細粒度圖像分類模型」是指,在模型訓練時,為了獲得更好的分類精度,除了圖像的類別標籤外,還使用了物體標註框(object bounding box)和部位標註點(part annotation)等額外的人工標註信息,效果比較好的有Pose Normalized CNN以及mask-cnn.標註數據的代價是昂貴的,那麼基於弱監督細粒度圖像分類模型,思路同強監督分類模型類似,也需要藉助全局和局部信息來做細粒度級別的分類。而區別在於,弱監督細粒度分類希望在不藉助part annotation的情況下,也可以做到較好的局部信息的捕捉。當然,在分類精度方面,目前最好的弱監督分類模型仍與最好的強監督分類模型存在差距(分類準確度相差約1~2%)。比較有代表性的演算法有Two Level Attention Model 以及bilinear CNN。上一張bilinear CNN 的圖

一種對Bilinear CNN模型的解釋是,網路A的作用是對物體/部件進行定位,即完成物體與局部區域檢測工作,而網路B則是用來對網路A檢測到的物體位置進行特徵提取。兩個網路相互協調作用,完成了細粒度圖像分類過程中兩個最重要的任務:物體、局部區域的檢測與特徵提取。

22. 圖像壓縮

主要需要解決的問題是「如何以較少的比特有損或者無損的表示原來的圖像?」

傳統的圖像壓縮的技術可以說比較成熟,比如小波變換。在深度學習領域,與圖像壓縮有關常見的是自動編碼器(AE),將圖片通過神經網路表達為更低維的向量,原理都在下圖,

AE

推薦閱讀:

2017年歷史文章匯總|深度學習
Focal Loss for Dense Object Detection解讀
【小林的OpenCV基礎課 番外】卷積與濾波
Rethinking ICCV 2017 [Part 1]
3D卷積神經網路Note01

TAG:深度學習DeepLearning | 計算機視覺 |