what is computer vision and image processing
來源:智客號 作者:房叔话安防
來自百度的深度學習工程師,圍繞電腦視覺領域的八大任務,包括:圖像分類、目標檢測、圖像語義分割、場景文字辨識、圖像生成、人體關鍵點檢測、影像分類、度量學習等,進行了較為詳細的綜述並形成此文。
這篇綜述中,介紹了這些任務的基本情況,以及目前的技術進展、主要的模型,和性能對比等。而且還逐一附上了 GitHub 傳送門,用於更進一步的學習與安裝實踐指南。其中不少教程還是用中文寫成,非常友好。
總之,這篇綜述全程干貨,推薦收藏閱讀。
電腦視覺(Computer Vision)是研究如何使機器「看」的科學,更進一步的說,是使用攝影機機和電腦,代替人眼對目標進行辨識、跟蹤和測量等的機器視覺,並透過電腦處理,成為更適合人眼觀察,或傳送給儀器檢測的圖像。
形象地說,就是給辨識安裝上眼睛(攝影機)和大腦(算法),讓電腦像人一樣去看、去感知環境。電腦視覺技術作為人工智慧的重要核心技術之一,已廣泛應用於安控、金融、硬體、行銷、駕駛、醫療等領域。本文上篇中,我們將介紹基於Paddle Paddle 的四種電腦視覺技術,及其相關的深度學習模型。
一、圖像分類
圖像分類是根據圖像的語義資訊,對不同類別圖像進行區分,是電腦視覺中重要的基礎問題,是物體檢測、圖像分割、物體跟蹤、行為分析、人臉辨識等其他高層視覺任務的基礎。
圖像分類在許多領域都有著廣泛的應用。如:安控領域的人臉識別和智能視頻分析等,交通領域的交通場景辨識,網路領域根據內容的圖像檢索,和相冊自動歸類,醫學領域的圖像辨識等。
得益於深度學習的推動,圖像分類的準確率大幅度提升。在經典的數據集 ImageNet 上,訓練圖像分類任務常用的模型,包括 AlexNet、VGG、GoogLeNet、ResNet、Inception-v4、MobileNet、MobileNetV2、DPN(Dual Path Network)、SE-ResNeXt、ShuffleNet等。
△ AlexNet
△ Inception-v4
△ MobileNet |
△ SE-ResNeXt
△ ShuffleNet |
模型的結構和複雜程度都不一樣,最終得到的準確率也有所區別。下面這個表格中,列出了在ImageNet 2012數據集上,不同模型的top-1/top-5驗證準確率。
△ 圖像分類系列模型評估結果 |
在我們的GitHub頁面上,提供上述與訓練模型的下載。以及詳細介紹了如何使用PaddlePaddle Fluid進行圖像分類任務。包括安裝、數據準備、模型訓練、評估等等全部過程。還有將Caffe模型轉換為PaddlePaddle Fluid模型配置和參數文件的工具。
上述頁面的傳送門在此:
https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/image_classification
二、目標檢測
目標檢測任務的目標,是給定一張圖像,或是一個影像幀,讓電腦找出其中所有目標的位置,並給出每個目標的具體類別。
對於人類來說,目標檢測是一個非常簡單的任務。然而,電腦能夠「看到」的是,圖像被編碼之後的數字,很難解圖像或是影像幀中,出現了人或是物體,這樣的高層語義概念,也就更加難以定位,目標出現在圖像中哪個區域。
與此同時,由於目標會出現在圖像,或是影像幀中的任何位置,目標的形態千變萬化,圖像或是影像幀的背景千差萬別,諸多因素都使得目標檢測,對電腦來說是一個具有挑戰性的問題。
在目標檢測任務中,我們主要介紹如何基於 PASCAL VOC、MS COCO 數據,訓練通用物體檢測模型,包括 SSD 模型、Pyramid Box 模型、R-CNN 模型。
‧ SSD模型,Single Shot MultiBox Detector,是一種單階段的目標檢測器。與兩階段的檢測方法不同,單階段目標檢測,並不進行區域推薦,而是直接從特徵圖,回歸出目標的邊界框和分類概率。
SSD 運用了這種單階段檢測的思想,並且對其進行改進:在不同尺度的特徵圖上,檢測對應尺度的目標,是目標檢測領域較新,且效果較好的檢測算法之一,具有檢測速度快,且檢測精度高的特點。
△ SSD目標檢測模型結構
△ SSD目標檢測可視化
△ 目標檢測SSD模型評估結果 |
在 GitHub 上,我們更詳細的介紹了如何下載、訓練、使用這一模型。
傳送門在此:
https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/object_detection
‧ PyramidBox模型,百度自主研發的人臉檢測模型,是一種語境輔助的單次人臉檢測新方法,能夠解決在不受控制的環境中,檢測小的、模糊的及部分遮擋的人臉時的問題,模型於 18 年 3 月份在 WIDER Face 數據集上取得第一名。
△ Pyramidbox 人臉檢測模型
△ Pyramidbox 預測可視化
△ PyramidBox模型評估結果
如果想進一步瞭解這個模型,傳送門在此(而且是全中文指導):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/face_detection
‧ R-CNN系列模型,區域卷積神經網路(R-CNN)系列模型,是典型的兩階段目標檢測器,相較於傳統提取區域的方法,R-CNN 中 RPN 網路,透過共享卷積層參數,大幅提高提取區域的效率,並提出高品質的候選區域。 Faster R-CNN 和 Mask R-CNN 是 R-CNN 系列的典型模型。
Faster R-CNN 區域生成網路 (RPN) + Fast R-CNN 的實現,將候選區域生成、特徵提取、分類、位置精修,統一到一個深度網路框架,大大提高運行速度。
Mask R-CNN 在原有 Faster R-CNN 模型基礎上,添加分割分支,得到掩碼結果,實現了掩碼和類別預測關係的解藕,是經典的實例分割模型。
△ Faster R-CNN 結構
△ Faster R-CNN 預測可視化
△ Mask R-CNN 結構
△ Mask R-CNN 預測可視化
△ Faster R-CNN 評估結果
△ Mask R-CNN評估結果
同樣,如果你想進一步學習 R-CNN 安裝、準備、訓練等,可以前往下面這個傳送門
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/rcnn
三、圖像語義分割
圖像語意分割,顧名思義是將圖像像素,按照表達的語義含義的不同,進行分組/分割。
圖像語義是指對圖像內容的理解,例如,能夠描繪出什麼物體,在哪裡做了什麼事情等,分割是指對圖片中的每個像素點,進行標注,標注屬於哪一類別。
近年來用在無人車駕駛技術中,分割街景來避讓行人和車輛、醫療影像分析中,輔助診斷等。
近年來用在無人車駕駛技術中,分割街景來避讓行人和車輛、醫療影像分析中,輔助診斷等。
分割任務主要分為實例分割和語義分割,實例分割是物體檢測,加上語義分割的綜合體,上文介紹的 Mask R-CNN 是實例分割的經典網路結構之一。
在圖像語義分割任務中,我們主要介紹,兼顧準確率和速度的 ICNet,DeepLab 中最新、執行效果最好的 DeepLab v3+。
在圖像語義分割任務中,我們主要介紹,兼顧準確率和速度的 ICNet,DeepLab 中最新、執行效果最好的 DeepLab v3+。
‧ DeepLab v3+,DeepLab 語義分割系列網路的最新作,透過encoder-decoder 進行多尺度資訊的融合,同時保留了原來的空洞卷積和 ASSP 層, 其骨幹網路使用了 Xception 模型,提高了語義分割的健壯性和運行速率,在 PASCAL VOC 2012 dataset 取得新的 state-of-art performance,89.0mIOU。
△ DeepLab v3+ 基本結構
△ DeepLab v3+ 評估結果
照例,GitHub傳送門在此(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/deeplabv3%2B
‧ ICNet,Image Cascade Network,主要用於圖像即時語義分割,主要思想是將輸入圖像,變換為不同的解析度,然後用不同計算複雜度的子網路,計算不同解析度的輸入,然後將結果合併。ICNet 由三個子網路組成,計算複雜度高的網路處理低解析度輸入,計算複雜度低的網路處理解析度高的網路,透過這種方式,在高解析度圖像的準確性,和低複雜度網路的效率之間獲得平衡。
△ ICNet 網路結構
△ ICNet 可視化
△ ICNet評估結果
進一步上手實踐的傳送門在此(也是中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/icnet
四、場景文字辨識
許多場景圖像中,包含著豐富的文本資訊,對理解圖像資訊有著重要作用,能夠極大地幫助人們認知,和理解場景圖像的內容。
場景文字辨識是在圖像背景複雜、解析度低下、字體多樣、分布隨意等情況下,將圖像資訊,轉化為文字序列的過程,可認為是一種特別的翻譯過程:將圖像輸入翻譯為自然語言輸出。
場景圖像文字辨識技術的發展,也促進了一些新型應用的產生,如透過自動辨識路牌中的文字,幫助街景應用,獲取更加準確的地址資訊等。
場景文字辨識是在圖像背景複雜、解析度低下、字體多樣、分布隨意等情況下,將圖像資訊,轉化為文字序列的過程,可認為是一種特別的翻譯過程:將圖像輸入翻譯為自然語言輸出。
場景圖像文字辨識技術的發展,也促進了一些新型應用的產生,如透過自動辨識路牌中的文字,幫助街景應用,獲取更加準確的地址資訊等。
在場景文字辨識任務中,我們介紹如何將以 CNN 的圖像特徵提取,和基於 RNN 的序列翻譯技術結合,免除人工定義特徵,避免字符分割,使用自動學習到的圖像特徵,完成字符辨識。這裡主要介紹 CRNN-CTC 模型,和基於注意力機制的序列到序列模型。
‧ CRNN-CTC 模型,採取 CNN + RNN + CTC 架構,卷積層使用 CNN,從輸入圖像中提取特徵序列、循環層使用 RNN,預測從卷積層獲取的,特徵序列的標籤(真實值)分布、轉錄層使用 CTC,把從循環層獲取的標籤分布,透過去重整合等操作,轉換成最終的辨識結果。
‧ 基於注意力機制的序列到序列模型,提出了基於 Attention 機制的文本辨識方法,不需要檢測,直接輸入圖片進行辨識,對於辨識字符類別數,很少的場景很實用,例如車牌辨識、自然場景圖片的主要關鍵詞提取等。
同時也不要求辨識文本,必須單行排列,雙行排列,多行排列都可以。在訓練過程中,則不需要文本框的標注,訓練數據的收集變得很方便。
△ CRNN-CTC 模型結構
△ 基於注意力機制的序列,到序列模型結構
△ OCR 模型評估結果
GitHub傳送門在此(中文友好): https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/ocr_recognition
上篇中我們介紹了電腦視覺技術,在圖像分類、目標檢測、圖像語義分割、場景文字辨識四大基本任務場景下,如何幫助電腦,從單個或者一系列的圖片中,提取分析和理解的關鍵資訊。
當下,影像在人們生活中越來越重要,伴隨著技術成熟度的提高,電腦視覺技術的突破,也從靜態圖像辨識的「看到」,轉向了影像理解的「看懂」。
接下來,我們一起探索基於 PaddlePaddle 的圖像生成、人體關鍵點檢測、影像分類相關的深度學習模型。
一、圖像生成
圖像生成,是指根據輸入向量,生成目標圖像。這裡的輸入向量,可以是隨機的噪聲,或使用者指定的條件向量。具體的應用場景有:手寫體生成、人臉合成、風格遷移、圖像修復、超分重建等。當前的圖像生成任務,主要是借助生成對抗網路(GAN)來實現。
生成對抗網路(GAN)由兩種子網路組成:生成器和辨識器。生成器的輸入是隨機噪聲或條件向量,輸出是目標圖像。辨識器是一個分類器,輸入是一張圖像,輸出是該圖像是否是真實的圖像。在訓練過程中,生成器和辨識器透過不斷的相互博弈,提升自己的能力。
在圖像生成任務中,我們主要介紹如何使用 DCGAN 和 Conditioanl GAN 來進行手寫數字的生成,另外還介紹了用於風格遷移的 CycleGAN。
‧ ConditioanlGAN,顧名思義是,帶條件約束的生成對抗模型,它在生成模型和判別模型的建模中,均引入了額外的條件變量,對於生成器對數據的生成,具有指導作用。
Conditioanl GAN 是把無監督的 GAN ,變成有監督模型的改進,為後續的工作提供了指導作用。
Conditioanl GAN 是把無監督的 GAN ,變成有監督模型的改進,為後續的工作提供了指導作用。
△ ConditioanlGAN 結構
△ ConditioanlGAN 預測效果圖
傳送門(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/c_gan
‧ DCGAN,為了填補 CNN 在監督學習和無監督學習之間的gap,此篇論文提出了將 CNN 和 GAN 結合的 DCGAN (深度卷積生成對抗網路),並且 DCGAN 在無監督學習中,取得不錯的結果。
△ DCGAN結構
△ DCGAN 預測效果圖
傳送門(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/c_gan
‧ CycleGAN,將一類圖片,轉換成另一類圖片。傳統的 GAN 是單向生成,CycleGAN 是互相生成,本質上是兩個鏡像對稱的 GAN,構成了一個環形網路,所以命名為 Cycle。
風格遷移類任務,一般都需要兩個域中,具有相同內容的成對圖片,作為訓練數據,Cycle GAN 的創新點,就在於其能夠在,沒有成對訓練數據的情況下,將圖片內容,從源域遷移到目標域。
風格遷移類任務,一般都需要兩個域中,具有相同內容的成對圖片,作為訓練數據,Cycle GAN 的創新點,就在於其能夠在,沒有成對訓練數據的情況下,將圖片內容,從源域遷移到目標域。
△ CycleGAN 結構
△ CycleGAN 預測可視化
傳送門(中文): https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/cycle_gan
二、人體關鍵點檢測
人體關鍵點檢測,通過人體關鍵節點的組合和追蹤來識別人的運動和行為,對於描述人體姿態,預測人體行為至關重要,是諸多計算機視覺任務的基礎,例如動作分類,異常行為檢測,以及自動駕駛等等,也為遊戲、視頻等提供新的交互方式。
在人體關鍵點檢測任務中,我們主要介紹網絡結構簡單的coco2018關鍵點檢測項目的亞軍方案。
‧ Simple Baselines for Human Pose Estimation in Fluid,coco2018關鍵點檢測項目的亞軍方案,沒有華麗的技巧,僅僅是在ResNet中插入了幾層反卷積,將低分辨率的特徵圖擴張為原圖大小,以此生成預測關鍵點需要的Heatmap。沒有任何的特徵融合,網絡結構非常簡單,但是達到了state of the art效果。
△ 影像 Demo: Bruno Mars - That’s What I Like [官方視頻]
△ Simple Baselines for Human Pose Estimation in Fluid 評估結果
GitHub傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/human_pose_estimation
三、影像分類
影像分類是影像理解任務的基礎,與圖像分類不同的是,分類的對象不再是靜止的圖像,而是一個由多幀圖像構成的、包含語音數據、包含運動資訊等的影像對象,因此理解影像需要獲得更多的上下文資訊,不僅要理解每幀圖像是什麼、包含什麼,還需要結合不同幀,知道上下文的關聯資訊。
資訊分類方法,主要包含以卷積神經網路、基於循環神經網路、或將這兩者結合的方法。
在影像分類任務中,我們主要介紹影像分類方向的,多個主流領先模型,其中 Attention LSTM,Attention Cluster 和 NeXtVLAD ,是比較流行的特徵序列模型,TSN 和 StNet 是兩個 End-to-End 的影像分類模型。
Attention LSTM 模型速度快精度高,NeXtVLAD 是 2nd-Youtube-8M 比賽中,最好的單模型,TSN 是基於 2D-CNN 的經典解決方案。Attention Cluster 和 StNet 是百度自研模型,分別發表於 CVPR2018 和 AAAI2019,是 Kinetics600 比賽第一名中,使用到的模型。
‧ Attention Cluster 模型為 ActivityNet Kinetics Challenge 2017 中最佳序列模型,透過帶 Shifting Opeation 的 Attention Clusters 處理已抽取好的 RGB、Flow、Audio 數據。
△ Attention Cluster 模型結構
Attention LSTM 模型,採用了雙向長短記憶網路(LSTM),將影像的所有幀特徵,依次編碼。與傳統方法直接採用 LSTM 最後一個時刻的輸出不同,該模型增加了一個 Attention 層,每個時刻的隱狀態輸出,都有一個自適應加權,然後線性加權得到最終特徵向量。
△ Attention LSTM 模型結構
‧ NeXtVLAD模型,第二屆 Youtube-8M 影像理解競賽中,效果最好的單模型,提供了一種將楨級別的影像特徵,轉化並壓縮成特徵向量,以適用於大尺寸影像文件的分類的方法。
其基本出發點,是在 NetVLAD 模型的基礎上,將高維度的特徵先進行分組,透過引入 Attention 機制,聚合提取時間維度的資訊,這樣既可以獲得較高的準確率,又可以使用更少的參數量。
△ NeXtVLAD 模型結構
‧ StNet模型,框架為 ActivityNet Kinetics Challenge 2018 中奪冠的基礎網路框架,提出「Super-image」的概念,在Super-image 上進行 2D 卷積,建模影像中,局部時空相關性。
另外透過 Temporal modeling block 建模影像的全局時空依賴,最後用一個 Temporal Xception block 對抽取的特徵序列,進行長時序建模。
另外透過 Temporal modeling block 建模影像的全局時空依賴,最後用一個 Temporal Xception block 對抽取的特徵序列,進行長時序建模。
△ StNet 模型結構
‧ Temporal Segment Network (TSN) ,影像分類領域經典的以 2D-CNN 的解決方案,主要解決影像的長時間行為判斷問題,透過稀疏採樣影像幀的方式,代替稠密採樣,既能捕獲影像全局資訊,也能去除冗餘,降低計算量。最終將每幀特徵平均融合後,得到影像的整體特徵,並用於分類。
△ TSN 模型結構
△ 基於 Youtube-8M 數據集的影像分類模型 評估結果
△ 基於 Kinetics 數據集的影像分類模型 評估結果
這部分的詳情,可以移步GitHub,全程中文。傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/video
四、度量學習
度量學習也稱作距離度量學習、相似度學習,透過學習對象之間的距離,度量學習能夠用於,分析對象時間的關聯、比較關係,在實際問題中,應用較為廣泛,可應用於輔助分類、聚類問題,也廣泛用於圖像檢索、人臉辨識等領域。
以往,針對不同的任務,需要選擇合適的特徵,並手動建構距離函數,而度量學習可根據不同的任務,來自主學習出針對特定任務的度量距離函數。
度量學習和深度學習的結合,在人臉辨識/驗證、行人再辨識(Human Re-ID)、圖像檢索等領域,均取得較好的性能,在這個任務中,我們主要介紹,以 Fluid 的深度度量學習模型,包含了三元組、四元組等損失函數。
度量學習和深度學習的結合,在人臉辨識/驗證、行人再辨識(Human Re-ID)、圖像檢索等領域,均取得較好的性能,在這個任務中,我們主要介紹,以 Fluid 的深度度量學習模型,包含了三元組、四元組等損失函數。
△ 度量學習模型 評估結果
GitHub的頁面上,有安裝、準備、訓練等方面的指導,傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/metric_learning
沒有留言:
張貼留言