新手初入人工智能圖像處理方向?
計算機視覺方向目前主要有幾大方向比較熱門,我下面將分別從他們的發展過程與現狀以及怎么入門學習來進行介紹。首先,計算機視覺的主要方向有:
圖像分類人臉識別目標檢測圖像分割關鍵點檢測文字識別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的效果,我在這里只是羅列下,具體各位可以關注我,后面我會推出人臉識別綜述,與各種損失函數總結。目前損失函數主要有:
centerLosscontrastiveLossrangeLosslarge-marginl2-normAM-softmaxCosFaceArcFace大家如果想要入門的話,可以先下載一下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 系列的四篇文章如下:
R-CNN: https://arxiv.org/abs/1311.2524Fast R-CNN: https://arxiv.org/abs/1504.08083Faster R-CNN: https://arxiv.org/abs/1506.01497Mask R-CNN: https://arxiv.org/abs/1703.06870關鍵點檢測人體骨骼關鍵點對于描述人體姿態,預測人體行為至關重要。因此人體骨骼關鍵點檢測是諸多計算機視覺任務的基礎,例如動作分類,異常行為檢測,以及自動駕駛等等。近年來,隨著深度學習技術的發展,人體骨骼關鍵點檢測效果不斷提升,已經開始廣泛應用于計算機視覺的相關領域。本文主要介紹2D人體骨骼關鍵點的基本概念和相關算法,其中算法部分著重介紹基于深度學習的人體骨骼關鍵點檢測算法的兩個方向,即自上而下(Top-Down)的檢測方法和自下而上(Bottom-Up)的檢測方法。相應算法的詳細介紹大家可以關注我頭條號之前發布的文章.
文字識別OCROCR(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等, 具體可以關注我頭條號,我后面會推出詳細介紹.
總結以上內容總結了目前計算機視覺方向比較流行的方向,以及一些經典的算法.能力有限,難免有總結的不到位地方,歡迎指正.最后,歡迎大家關注我的頭條號,會有大量深度學習相關資源不間斷放送.