前言:來自百度的深度學(xué)習(xí)工程師,圍繞計算機(jī)視覺領(lǐng)域的八大任務(wù),包括:圖像分類、目標(biāo)檢測、圖像語義分割、場景文字識別、圖像生成、人體關(guān)鍵點檢測、視頻分類、度量學(xué)習(xí)等,進(jìn)行了較為詳細(xì)的綜述并形成此文。
這篇綜述中,介紹了這些任務(wù)的基本情況,以及目前的技術(shù)進(jìn)展、主要的模型和性能對比等。而且還逐一附上了GitHub傳送門,用于更進(jìn)一步的學(xué)習(xí)與安裝實踐指南。其中不少教程還是用中文寫成,非常友好。這篇綜述全程干貨,推薦收藏閱讀。
上篇
計算機(jī)視覺(Computer Vision)是研究如何使機(jī)器“看”的科學(xué),更進(jìn)一步的說,是使用攝像機(jī)機(jī)和電腦代替人眼對目標(biāo)進(jìn)行識別、跟蹤和測量等的機(jī)器視覺,并通過電腦處理成為更適合人眼觀察或傳送給儀器檢測的圖像。
形象地說,就是給計算機(jī)安裝上眼睛(攝像機(jī))和大腦(算法),讓計算機(jī)像人一樣去看、去感知環(huán)境。計算機(jī)視覺技術(shù)作為人工智能的重要核心技術(shù)之一,已廣泛應(yīng)用于安防、金融、硬件、營銷、駕駛、醫(yī)療等領(lǐng)域。本文上篇中,我們將介紹基于PaddlePaddle的四種計算機(jī)視覺技術(shù)及其相關(guān)的深度學(xué)習(xí)模型。
一、圖像分類
圖像分類是根據(jù)圖像的語義信息對不同類別圖像進(jìn)行區(qū)分,是計算機(jī)視覺中重要的基礎(chǔ)問題,是物體檢測、圖像分割、物體跟蹤、行為分析、人臉識別等其他高層視覺任務(wù)的基礎(chǔ)。
圖像分類在許多領(lǐng)域都有著廣泛的應(yīng)用。如:安防領(lǐng)域的人臉識別和智能視頻分析等,交通領(lǐng)域的交通場景識別,互聯(lián)網(wǎng)領(lǐng)域基于內(nèi)容的圖像檢索和相冊自動歸類,醫(yī)學(xué)領(lǐng)域的圖像識別等。
得益于深度學(xué)習(xí)的推動,圖像分類的準(zhǔn)確率大幅度提升。在經(jīng)典的數(shù)據(jù)集ImageNet上,訓(xùn)練圖像分類任務(wù)常用的模型,包括AlexNet、VGG、GoogLeNet、ResNet、Inception-v4、MobileNet、MobileNetV2、DPN(Dual Path Network)、SE-ResNeXt、ShuffleNet等。

△ AlexNet

△ VGG

△ GoogLeNet

△ ResNet

△ Inception-v4

△ MobileNet

△ SE-ResNeXt

△ ShuffleNet
模型的結(jié)構(gòu)和復(fù)雜程度都不一樣,最終得到的準(zhǔn)確率也有所區(qū)別。下面這個表格中,列出了在ImageNet 2012數(shù)據(jù)集上,不同模型的top-1/top-5驗證準(zhǔn)確率。

△ 圖像分類系列模型評估結(jié)果
在我們的GitHub頁面上,提供上述與訓(xùn)練模型的下載。以及詳細(xì)介紹了如何使用PaddlePaddle Fluid進(jìn)行圖像分類任務(wù)。包括安裝、數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練、評估等等全部過程。還有將Caffe模型轉(zhuǎn)換為PaddlePaddle Fluid模型配置和參數(shù)文件的工具。
上述頁面的傳送門在此:
https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/image_classification

目標(biāo)檢測任務(wù)的目標(biāo)是給定一張圖像或是一個視頻幀,讓計算機(jī)找出其中所有目標(biāo)的位置,并給出每個目標(biāo)的具體類別。
對于人類來說,目標(biāo)檢測是一個非常簡單的任務(wù)。然而,計算機(jī)能夠“看到”的是圖像被編碼之后的數(shù)字,很難解圖像或是視頻幀中出現(xiàn)了人或是物體這樣的高層語義概念,也就更加難以定位目標(biāo)出現(xiàn)在圖像中哪個區(qū)域。
與此同時,由于目標(biāo)會出現(xiàn)在圖像或是視頻幀中的任何位置,目標(biāo)的形態(tài)千變?nèi)f化,圖像或是視頻幀的背景千差萬別,諸多因素都使得目標(biāo)檢測對計算機(jī)來說是一個具有挑戰(zhàn)性的問題。
在目標(biāo)檢測任務(wù)中,我們主要介紹如何基于PASCAL VOC、MS COCO數(shù)據(jù)訓(xùn)練通用物體檢測模型,包括SSD模型、PyramidBox模型、R-CNN模型。
• SSD模型,Single Shot MultiBox Detector,是一種單階段的目標(biāo)檢測器。與兩階段的檢測方法不同,單階段目標(biāo)檢測并不進(jìn)行區(qū)域推薦,而是直接從特征圖回歸出目標(biāo)的邊界框和分類概率。SSD 運用了這種單階段檢測的思想,并且對其進(jìn)行改進(jìn):在不同尺度的特征圖上檢測對應(yīng)尺度的目標(biāo),是目標(biāo)檢測領(lǐng)域較新且效果較好的檢測算法之一,具有檢測速度快且檢測精度高的特點。

△ SSD目標(biāo)檢測模型結(jié)構(gòu)

△ SSD目標(biāo)檢測可視化

△ 目標(biāo)檢測SSD模型評估結(jié)果
在GitHub上,我們更詳細(xì)的介紹了如何下載、訓(xùn)練、使用這一模型。
傳送門在此:
https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleCV/object_detection
• PyramidBox模型,百度自主研發(fā)的人臉檢測模型,是一種語境輔助的單次人臉檢測新方法,能夠解決在不受控制的環(huán)境中檢測小的、模糊的及部分遮擋的人臉時的問題,模型于18年3月份在WIDER Face數(shù)據(jù)集上取得第一名。

△ Pyramidbox 人臉檢測模型

△ Pyramidbox 預(yù)測可視化

△ PyramidBox模型評估結(jié)果
如果想進(jìn)一步了解這個模型,傳送門在此(而且是全中文指導(dǎo)):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/face_detection
• R-CNN系列模型,區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)系列模型是典型的兩階段目標(biāo)檢測器,相較于傳統(tǒng)提取區(qū)域的方法,R-CNN中RPN網(wǎng)絡(luò)通過共享卷積層參數(shù)大幅提高提取區(qū)域的效率,并提出高質(zhì)量的候選區(qū)域。Faster R-CNN和Mask R-CNN是R-CNN系列的典型模型。
Faster R-CNN 區(qū)域生成網(wǎng)絡(luò)(RPN)+Fast R-CNN的實現(xiàn),將候選區(qū)域生成、特征提取、分類、位置精修統(tǒng)一到一個深度網(wǎng)絡(luò)框架,大大提高運行速度。
Mask R-CNN在原有Faster R-CNN模型基礎(chǔ)上添加分割分支,得到掩碼結(jié)果,實現(xiàn)了掩碼和類別預(yù)測關(guān)系的解藕,是經(jīng)典的實例分割模型。

△ Faster R-CNN 結(jié)構(gòu)

△ Faster R-CNN 預(yù)測可視化

△ Mask R-CNN結(jié)構(gòu)

△ Mask R-CNN 預(yù)測可視化

△ Faster R-CNN評估結(jié)果

同樣,如果你想進(jìn)一步學(xué)習(xí)R-CNN安裝、準(zhǔn)備、訓(xùn)練等,可以前往下面這個傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/rcnn
三、圖像語義分割
圖像語意分割,顧名思義是將圖像像素按照表達(dá)的語義含義的不同進(jìn)行分組/分割。
圖像語義是指對圖像內(nèi)容的理解,例如,能夠描繪出什么物體在哪里做了什么事情等,分割是指對圖片中的每個像素點進(jìn)行標(biāo)注,標(biāo)注屬于哪一類別。近年來用在無人車駕駛技術(shù)中分割街景來避讓行人和車輛、醫(yī)療影像分析中輔助診斷等。
分割任務(wù)主要分為實例分割和語義分割,實例分割是物體檢測加上語義分割的綜合體,上文介紹的Mask R-CNN是實例分割的經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu)之一。在圖像語義分割任務(wù)中,我們主要介紹兼顧準(zhǔn)確率和速度的ICNet,DeepLab中最新、執(zhí)行效果最好的DeepLab v3+。
• DeepLab v3+,DeepLab語義分割系列網(wǎng)絡(luò)的最新作,通過encoder-decoder進(jìn)行多尺度信息的融合,同時保留了原來的空洞卷積和ASSP層, 其骨干網(wǎng)絡(luò)使用了Xception模型,提高了語義分割的健壯性和運行速率,在 PASCAL VOC 2012 dataset取得新的state-of-art performance,89.0mIOU。

△ DeepLab v3+ 基本結(jié)構(gòu)

△ DeepLab v3+ 評估結(jié)果
照例,GitHub傳送門在此(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/deeplabv3%2B
• ICNet,Image Cascade Network,主要用于圖像實時語義分割,主要思想是將輸入圖像變換為不同的分辨率,然后用不同計算復(fù)雜度的子網(wǎng)絡(luò)計算不同分辨率的輸入,然后將結(jié)果合并。ICNet由三個子網(wǎng)絡(luò)組成,計算復(fù)雜度高的網(wǎng)絡(luò)處理低分辨率輸入,計算復(fù)雜度低的網(wǎng)絡(luò)處理分辨率高的網(wǎng)絡(luò),通過這種方式在高分辨率圖像的準(zhǔn)確性和低復(fù)雜度網(wǎng)絡(luò)的效率之間獲得平衡。

△ ICNet網(wǎng)絡(luò)結(jié)構(gòu)

△ ICNet可視化

△ ICNet評估結(jié)果
進(jìn)一步上手實踐的傳送門在此(也是中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/icnet
四、場景文字識別
許多場景圖像中包含著豐富的文本信息,對理解圖像信息有著重要作用,能夠極大地幫助人們認(rèn)知和理解場景圖像的內(nèi)容。場景文字識別是在圖像背景復(fù)雜、分辨率低下、字體多樣、分布隨意等情況下,將圖像信息轉(zhuǎn)化為文字序列的過程,可認(rèn)為是一種特別的翻譯過程:將圖像輸入翻譯為自然語言輸出。場景圖像文字識別技術(shù)的發(fā)展也促進(jìn)了一些新型應(yīng)用的產(chǎn)生,如通過自動識別路牌中的文字幫助街景應(yīng)用獲取更加準(zhǔn)確的地址信息等。
在場景文字識別任務(wù)中,我們介紹如何將基于CNN的圖像特征提取和基于RNN的序列翻譯技術(shù)結(jié)合,免除人工定義特征,避免字符分割,使用自動學(xué)習(xí)到的圖像特征,完成字符識別。這里主要介紹CRNN-CTC模型和基于注意力機(jī)制的序列到序列模型。
• CRNN-CTC模型,采取CNN+RNN+CTC架構(gòu),卷積層使用CNN,從輸入圖像中提取特征序列、循環(huán)層使用RNN,預(yù)測從卷積層獲取的特征序列的標(biāo)簽(真實值)分布、轉(zhuǎn)錄層使用CTC,把從循環(huán)層獲取的標(biāo)簽分布通過去重整合等操作轉(zhuǎn)換成最終的識別結(jié)果。
• 基于注意力機(jī)制的序列到序列模型,提出了基于attention機(jī)制的文本識別方法,不需要檢測,直接輸入圖片進(jìn)行識別,對于識別字符類別數(shù)很少的場景很實用,例如車牌識別、自然場景圖片的主要關(guān)鍵詞提取等。同時也不要求識別文本必須單行排列,雙行排列,多行排列都可以。在訓(xùn)練過程中則不需要文本框的標(biāo)注,訓(xùn)練數(shù)據(jù)的收集變得很方便。

△ CRNN-CTC模型結(jié)構(gòu)

△ 基于注意力機(jī)制的序列到序列模型結(jié)構(gòu)

△ OCR模型評估結(jié)果
GitHub傳送門在此(中文友好):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/ocr_recognition
下篇
上篇中我們介紹了計算機(jī)視覺技術(shù)在圖像分類、目標(biāo)檢測、圖像語義分割、場景文字識別四大基本任務(wù)場景下,如何幫助計算機(jī)從單個或者一系列的圖片中提取分析和理解的關(guān)鍵信息。當(dāng)下,視頻在人們生活中越來越重要,伴隨著技術(shù)成熟度的提高,計算機(jī)視覺技術(shù)的突破也從靜態(tài)圖像識別的“看到”轉(zhuǎn)向了視頻理解的“看懂”。
接下來,我們一起探索基于PaddlePaddle的圖像生成、人體關(guān)鍵點檢測、視頻分類相關(guān)的深度學(xué)習(xí)模型。
一、圖像生成
圖像生成是指根據(jù)輸入向量,生成目標(biāo)圖像。這里的輸入向量可以是隨機(jī)的噪聲或用戶指定的條件向量。具體的應(yīng)用場景有:手寫體生成、人臉合成、風(fēng)格遷移、圖像修復(fù)、超分重建等。當(dāng)前的圖像生成任務(wù)主要是借助生成對抗網(wǎng)絡(luò)(GAN)來實現(xiàn)。
生成對抗網(wǎng)絡(luò)(GAN)由兩種子網(wǎng)絡(luò)組成:生成器和識別器。生成器的輸入是隨機(jī)噪聲或條件向量,輸出是目標(biāo)圖像。識別器是一個分類器,輸入是一張圖像,輸出是該圖像是否是真實的圖像。在訓(xùn)練過程中,生成器和識別器通過不斷的相互博弈提升自己的能力。
在圖像生成任務(wù)中,我們主要介紹如何使用DCGAN和ConditioanlGAN來進(jìn)行手寫數(shù)字的生成,另外還介紹了用于風(fēng)格遷移的CycleGAN。
• ConditioanlGAN,顧名思義是帶條件約束的生成對抗模型,它在生成模型和判別模型的建模中均引入了額外的條件變量,對于生成器對數(shù)據(jù)的生成具有指導(dǎo)作用。ConditioanlGAN是把無監(jiān)督的GAN變成有監(jiān)督模型的改進(jìn),為后續(xù)的工作提供了指導(dǎo)作用。

△ ConditioanlGAN結(jié)構(gòu)

△ ConditioanlGAN預(yù)測效果圖
傳送門(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/c_gan
• DCGAN,為了填補(bǔ)CNN在監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)之間的gap,此篇論文提出了將CNN和GAN結(jié)合的DCGAN(深度卷積生成對抗網(wǎng)絡(luò)),并且DCGAN在無監(jiān)督學(xué)習(xí)中取得不錯的結(jié)果。

△ DCGAN結(jié)構(gòu)

△ DCGAN預(yù)測效果圖
傳送門(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/c_gan
• CycleGAN,將一類圖片轉(zhuǎn)換成另一類圖片。傳統(tǒng)的 GAN 是單向生成,CycleGAN 是互相生成,本質(zhì)上是兩個鏡像對稱的GAN,構(gòu)成了一個環(huán)形網(wǎng)絡(luò),所以命名為 Cycle。風(fēng)格遷移類任務(wù)一般都需要兩個域中具有相同內(nèi)容的成對圖片作為訓(xùn)練數(shù)據(jù),CycleGAN的創(chuàng)新點就在于其能夠在沒有成對訓(xùn)練數(shù)據(jù)的情況下,將圖片內(nèi)容從源域遷移到目標(biāo)域。

△ CycleGAN 結(jié)構(gòu)

△ CycleGAN預(yù)測可視化
傳送門(中文):
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/gan/cycle_gan
二、人體關(guān)鍵點檢測
人體關(guān)鍵點檢測,通過人體關(guān)鍵節(jié)點的組合和追蹤來識別人的運動和行為,對于描述人體姿態(tài),預(yù)測人體行為至關(guān)重要,是諸多計算機(jī)視覺任務(wù)的基礎(chǔ),例如動作分類,異常行為檢測,以及自動駕駛等等,也為游戲、視頻等提供新的交互方式。
在人體關(guān)鍵點檢測任務(wù)中,我們主要介紹網(wǎng)絡(luò)結(jié)構(gòu)簡單的coco2018關(guān)鍵點檢測項目的亞軍方案。
• Simple Baselines for Human Pose Estimation in Fluid,coco2018關(guān)鍵點檢測項目的亞軍方案,沒有華麗的技巧,僅僅是在ResNet中插入了幾層反卷積,將低分辨率的特征圖擴(kuò)張為原圖大小,以此生成預(yù)測關(guān)鍵點需要的Heatmap。沒有任何的特征融合,網(wǎng)絡(luò)結(jié)構(gòu)非常簡單,但是達(dá)到了state of the art效果。

△ 視頻Demo: Bruno Mars – That’s What I Like [官方視頻]

△ Simple Baselines for Human Pose Estimation in Fluid 評估結(jié)果
GitHub傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/human_pose_estimation
三、視頻分類
視頻分類是視頻理解任務(wù)的基礎(chǔ),與圖像分類不同的是,分類的對象不再是靜止的圖像,而是一個由多幀圖像構(gòu)成的、包含語音數(shù)據(jù)、包含運動信息等的視頻對象,因此理解視頻需要獲得更多的上下文信息,不僅要理解每幀圖像是什么、包含什么,還需要結(jié)合不同幀,知道上下文的關(guān)聯(lián)信息。
視頻分類方法主要包含基于卷積神經(jīng)網(wǎng)絡(luò)、基于循環(huán)神經(jīng)網(wǎng)絡(luò)、或?qū)⑦@兩者結(jié)合的方法。
在視頻分類任務(wù)中,我們主要介紹視頻分類方向的多個主流領(lǐng)先模型,其中Attention LSTM,Attention Cluster和NeXtVLAD是比較流行的特征序列模型,TSN和StNet是兩個End-to-End的視頻分類模型。
Attention LSTM模型速度快精度高,NeXtVLAD是2nd-Youtube-8M比賽中最好的單模型, TSN是基于2D-CNN的經(jīng)典解決方案。Attention Cluster和StNet是百度自研模型,分別發(fā)表于CVPR2018和AAAI2019,是Kinetics600比賽第一名中使用到的模型。
• Attention Cluster模型為ActivityNet Kinetics Challenge 2017中最佳序列模型,通過帶Shifting Opeation的Attention Clusters處理已抽取好的RGB、Flow、Audio數(shù)據(jù)。

△ Attention Cluster模型結(jié)構(gòu)
Attention LSTM 模型,采用了雙向長短記憶網(wǎng)絡(luò)(LSTM),將視頻的所有幀特征依次編碼。與傳統(tǒng)方法直接采用LSTM最后一個時刻的輸出不同,該模型增加了一個Attention層,每個時刻的隱狀態(tài)輸出都有一個自適應(yīng)權(quán)重,然后線性加權(quán)得到最終特征向量。

△ Attention LSTM 模型結(jié)構(gòu)
• NeXtVLAD模型,第二屆Youtube-8M視頻理解競賽中效果最好的單模型,提供了一種將楨級別的視頻特征轉(zhuǎn)化并壓縮成特征向量,以適用于大尺寸視頻文件的分類的方法。其基本出發(fā)點是在NetVLAD模型的基礎(chǔ)上,將高維度的特征先進(jìn)行分組,通過引入attention機(jī)制聚合提取時間維度的信息,這樣既可以獲得較高的準(zhǔn)確率,又可以使用更少的參數(shù)量。

△ NeXtVLAD模型結(jié)構(gòu)
• StNet模型,框架為ActivityNet Kinetics Challenge 2018中奪冠的基礎(chǔ)網(wǎng)絡(luò)框架,提出“super-image”的概念,在super-image上進(jìn)行2D卷積,建模視頻中局部時空相關(guān)性。另外通過temporal modeling block建模視頻的全局時空依賴,最后用一個temporal Xception block對抽取的特征序列進(jìn)行長時序建模。

△ StNet模型結(jié)構(gòu)
• Temporal Segment Network (TSN) ,視頻分類領(lǐng)域經(jīng)典的基于2D-CNN的解決方案,主要解決視頻的長時間行為判斷問題,通過稀疏采樣視頻幀的方式代替稠密采樣,既能捕獲視頻全局信息,也能去除冗余,降低計算量。最終將每幀特征平均融合后得到視頻的整體特征,并用于分類。

△ TSN模型結(jié)構(gòu)

△ 基于Youtube-8M數(shù)據(jù)集的視頻分類模型 評估結(jié)果

△ 基于Kinetics數(shù)據(jù)集的視頻分類模型 評估結(jié)果
這部分的詳情,可以移步GitHub,全程中文。傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/video
四、度量學(xué)習(xí)
度量學(xué)習(xí)也稱作距離度量學(xué)習(xí)、相似度學(xué)習(xí),通過學(xué)習(xí)對象之間的距離,度量學(xué)習(xí)能夠用于分析對象時間的關(guān)聯(lián)、比較關(guān)系,在實際問題中應(yīng)用較為廣泛,可應(yīng)用于輔助分類、聚類問題,也廣泛用于圖像檢索、人臉識別等領(lǐng)域。
以往,針對不同的任務(wù),需要選擇合適的特征并手動構(gòu)建距離函數(shù),而度量學(xué)習(xí)可根據(jù)不同的任務(wù)來自主學(xué)習(xí)出針對特定任務(wù)的度量距離函數(shù)。度量學(xué)習(xí)和深度學(xué)習(xí)的結(jié)合,在人臉識別/驗證、行人再識別(human Re-ID)、圖像檢索等領(lǐng)域均取得較好的性能,在這個任務(wù)中我們主要介紹基于Fluid的深度度量學(xué)習(xí)模型,包含了三元組、四元組等損失函數(shù)。

△ 度量學(xué)習(xí)模型 評估結(jié)果
GitHub的頁面上有安裝、準(zhǔn)備、訓(xùn)練等方面的指導(dǎo),傳送門:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/metric_learning
特別提醒:本網(wǎng)信息來自于互聯(lián)網(wǎng),目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關(guān)內(nèi)容。本站不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。如若本網(wǎng)有任何內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系我們,本站將會在24小時內(nèi)處理完畢。