新手初入人工智慧(圖像處理方向),我該向什麼方向發展?

陳嗣謙


計算機視覺方向目前主要有幾大方向比較熱門,我下面將分別從他們的發展過程與現狀以及怎麼入門學習來進行介紹。首先,計算機視覺的主要方向有:

  1. 圖像分類
  2. 人臉識別
  3. 目標檢測
  4. 圖像分割
  5. 關鍵點檢測
  6. 文字識別OCR

編程與數學基礎

首先,人工智能畢竟是一個計算機學科,需要具備基本的編程功底與數學能力。具體來說,編程方面,需要熟悉Python編程,熟悉Numpy,Pandas,Opencv等庫的使用,同時還得熟悉某個深度學習框架的使用,比如TensorFlow,Keras,PyTorch,Caffe等。以上這些是必須具備的,如果能再有點C++,Java方面的基礎就更好了。數學方面,肯定需要對大學的數學知識有一定的瞭解,比如求導與積分,偏導數,梯度下降之類的高數知識,以及線代和概率與統計等知識。如果對這方面知識不太熟悉,建議從課本上好好學學,當然也可以通過如下圖所示的深度學習聖經即"花書"的前幾章來學習。


圖像分類

圖像分類是一個計算機視覺的經典方向。深度學習的火爆最早是因為Hinton帶領他的學生使用深度神經網絡參加了ImageNet大賽,其最後成績遠超使用傳統方法的第二名一大截。由此引發了最近幾年越來越熱門的深度學習研究,在2012年及以後,在ImageNet比賽上出現了更多的網絡結構,從最開始的AlexNet,到VggNet,GoogleNet,Inception,RestNet,Inception-ResNet-v1~3,Xception等。每次新的網絡的出現都讓正確率上升了一大截,可以說ImageNet比賽推動了整個計算機視覺的發展。


但是ImageNet的數據集太大,不太適合我們入門圖像分類。我們可以使用mnist數據集,或者CIFAR-10數據集(如上圖所示).CIFAR-10 數據集有 60000 張圖片,每張圖片均為分辨率為 32*32 的彩色圖片(分為 RGB3 個信道)。CIFAR-10 的分類任務是將每張圖片分成青蛙、卡車、飛機等 10 個類別中的一個類別。具體關於CIFAR-10的詳細介紹以及實例代碼,大家可以關注我頭條號置頂的那篇文章.

人臉識別

人臉識別在引入深度學習之前主要使用PCA降維後進行分類,在引入深度學習之後,採用了CNN來提取特徵,然後使用SVM之類的分類器進行分類,但是本質上還是一個分類,需要提前錄入人臉數據進行訓練.直到FaceNet出現之後, 論文中提出了一種叫做triplet 的損失函數,主要目標是減低類內(同一個人)的距離,增加類間(不同的人)的距離.由此將原本的分類問題轉變為了一個距離度量問題,是人臉識別變成了一個開放的問題,可以隨時送入兩張沒有參與訓練過的人臉圖片提取特徵向量,然後通過比較這兩個向量的距離來判斷相似性.



後來又出現了各種各樣的loss, 有些已經達到了目前state-of-art的效果,我在這裡只是羅列下,具體各位可以關注我,後面我會推出人臉識別綜述,與各種損失函數總結。目前損失函數主要有:

  1. centerLoss
  2. contrastiveLoss
  3. rangeLoss
  4. large-margin
  5. l2-norm
  6. AM-softmax
  7. CosFace
  8. ArcFace

大家如果想要入門的話,可以先下載一下lfw數據集,然後用TensorFlow實踐一下經典的算法.

目標檢測與圖像分割

目標檢測的任務是從一個複雜場景的圖像中找到不同的物體,並且給出各個物體的邊界框。圖像檢測的三個著名的數據集是PASCAL VOC,ImageNet和微軟COCO. PASCAL VOC包含20個物體的類別,而ImageNet包含一千多種物體類別,COCO有80中物體類別和150萬個物體實例。

自從2012年的ILSVRC競賽中基於CNN的方法一鳴驚人之後,CNN已成為圖像分類、檢測和分割的神器。其中在圖像檢測的任務中,R-CNN系列是一套經典的方法,從最初的R-CNN到後來的Fast R-CNN, Faster R-CNN 和今年的Mask R-CNN, 我們可以看到CNN在圖像檢測中是如何一點一點提高的。還有就是採用一步到位的檢測算法的SSD與YOLO系列算法.

這些算法的詳細介紹,大家可以關注我頭條號之前發佈的文章.

R-CNN 系列的四篇文章如下:

  1. R-CNN: https://arxiv.org/abs/1311.2524
  2. Fast R-CNN: https://arxiv.org/abs/1504.08083
  3. Faster R-CNN: https://arxiv.org/abs/1506.01497
  4. Mask R-CNN: https://arxiv.org/abs/1703.06870

關鍵點檢測

人體骨骼關鍵點對於描述人體姿態,預測人體行為至關重要。因此人體骨骼關鍵點檢測是諸多計算機視覺任務的基礎,例如動作分類,異常行為檢測,以及自動駕駛等等。近年來,隨著深度學習技術的發展,人體骨骼關鍵點檢測效果不斷提升,已經開始廣泛應用於計算機視覺的相關領域。本文主要介紹2D人體骨骼關鍵點的基本概念和相關算法,其中算法部分著重介紹基於深度學習的人體骨骼關鍵點檢測算法的兩個方向,即自上而下(Top-Down)的檢測方法和自下而上(Bottom-Up)的檢測方法。相應算法的詳細介紹大家可以關注我頭條號之前發佈的文章.


文字識別OCR

OCR(Optical Character Recognition, 光學字符識別)傳統上指對輸入掃描文檔圖像進行分析處理,識別出圖像中文字信息。場景文字識別(Scene Text Recognition,STR) 指識別自然場景圖片中的文字信息。我這裡主要介紹難度更大的場景文字識別的發展.自然場景圖像中的文字識別,其難度遠大於掃描文檔圖像中的文字識別,因為它的文字展現形式極其豐富:

  • ·允許多種語言文本混合,字符可以有不同的大小、字體、顏色、亮度、對比度等。

  • ·文本行可能有橫向、豎向、彎曲、旋轉、扭曲等式樣。

  • ·圖像中的文字區域還可能會產生變形(透視、仿射變換)、殘缺、模糊等現象。

  • ·自然場景圖像的背景極其多樣。如文字可以出現在平面、曲面或折皺面上;


  • 文字區域附近有複雜的干擾紋理、或者非文字區域有近似文字的紋理,比如沙地、草叢、柵欄、磚牆等。

文字識別其實主要包含兩個步驟, 文字檢測與文字識別, 但是近年來也有出現了以CRNN(具體可以關注華中科大白翔老師的研究)為代表的一步到位的端到端的識別模型,效果也還不錯.文本檢測工作目前可以大致分為三類:
  • 一是基於分割的思想,通過分割網絡提取文本區域,然後採取一些後處理方法獲取邊界框。代表性的工作是發表在CVPR2016的“Multi-oriented text detection with fully convolutional networks”;

  • 二是基於候選框的思想,直接用一個神經網絡來檢測文本邊界框。代表性的工作是發表在CVPR2016的“Synthetic data for text localization in natural images”;

  • 三是混合思想,它採用多任務學習的框架,結合了分割和邊界框檢測的方法。代表性的工作是發表在ICCV2017的“Deep Direct Regression for Multi-Oriented Scene Text Detection”。

而文字識別大致分為兩類思路:其一是從單詞或字符層面入手,設計單詞分類器或字符分類器,將每一個單詞或字符作為一類目標,進行多類別分類任務。

而近來循環神經網絡大放異彩,它可以將文本識別看作一個序列標籤問題,並能夠直接輸出標籤序列。因此,第二種思路從序列層面入手,將文本看作一個字符序列,通過設計序列特徵提取器,結合循環神經網絡(RNN)和CTC模型,將文本序列作為一個整體進行識別。

目前OCR方面比較經典的算法有CTPN,RRPN,DMPNet,SegLink,TextBoxes,FTSN,WordSup等, 具體可以關注我頭條號,我後面會推出詳細介紹.

總結

以上內容總結了目前計算機視覺方向比較流行的方向,以及一些經典的算法.能力有限,難免有總結的不到位地方,歡迎指正.最後,歡迎大家關注我的頭條號,會有大量深度學習相關資源不間斷放送.


深度學習中文社區


目前如果是新手剛入門的話,我不建議一開始就有一個很明確的方向去研究,可以每個方向都去試試。眾所周知,目前深度學習共有三大方向的研究比較熱門,分別是計算機視覺,自然語言處理,語音識別相關。下面我將以計算機視覺為例介紹一下目前研究的概況,以及怎麼入門。


計算機視覺也是和你目前所入門的方向比較一致。在這個方面目前比較火的研究內容有人臉識別,目標檢測,圖像分類,關鍵點檢測,圖像分割分割。


1.從mnist入門

我的建議是可以先從mnist入門,學習下CNN相關知識,並且結合你之前圖像處理基礎知識。可以對輸入的圖像就行各種預處理,以提高識別效果。


2.提升fashion mnist識別效果

有了研究mnist時學習的基礎,就可以看看目前主流cnn網絡模型的發展。從alexnet,到vggnet,再到resnet。這些網絡模型運用到fashion mnist數據集分類中,提升準確率。


3.選擇研究內容

到了這個時候,對計算機視覺方向有了比較清晰的認識後。才建議選擇方向研究,研究時也一定要跟隨這最近的網絡結構的發展來學習。以目標檢測為例,從R-CNN,到Fast R-CNN,再到Faster R-CNN。每一次都是一次偉大的進步,裡面提出的新算法都值得仔細品味。


desire72128


廢話不多說,直接來乾貨。

新手基礎較薄弱個人建議以opencv入手,opencv是非常強大的視覺庫,包括圖像預處理,增強,過濾,識別,立體視覺等等,可以說圖像基本處理方法和算法都包括了,用法也非常簡單,注意接口和輸出的格式就可以了。需要深入的夥伴也可以直接看算法原理和源代碼。強力推薦淺墨的教程或書,深入淺出,思維連貫不抽象。編程語言建議採用python,模塊化程序使用起來很方便,強烈推薦廖雪峰的教程,畢竟實戰最重要。用linux系統做開發,你會發現開源之美。關於深度學習我覺得去學caffe吧,因為維護這個框架團隊是專門做圖像的,這個框架和圖像的匹配應該會強一些!學習貴在堅持,加油💪



分享到:


相關文章: