在沒(méi)有采用GPU的情況下,有可能實(shí)現(xiàn)具有實(shí)時(shí)性能的對(duì)象檢測(cè)模型嗎?faced是一個(gè)概念證明,可以為在CPU上實(shí)時(shí)運(yùn)行的單個(gè)類(lèi)對(duì)象(在本例中為faced)構(gòu)建自定義對(duì)象檢測(cè)模型。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到大余網(wǎng)站設(shè)計(jì)與大余網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋大余地區(qū)。問(wèn)題是什么?
在許多情況下需要單個(gè)類(lèi)對(duì)象檢測(cè)。這意味著我們想要檢測(cè)屬于圖像中特定類(lèi)的所有對(duì)象的位置。例如,我們可以檢測(cè)面部識(shí)別系統(tǒng)的面部或需要跟蹤人員的面部。
更重要的是,大多數(shù)時(shí)候我們希望實(shí)時(shí)運(yùn)行這些模型。為了實(shí)現(xiàn)這一目標(biāo),我們提供了以x為速率提供樣本的圖像,并且我們需要一個(gè)模型,用于每個(gè)樣本以低于x的速率運(yùn)行。然后,我們可以在圖像可用時(shí)立即處理。
現(xiàn)在解決此任務(wù)(以及計(jì)算機(jī)視覺(jué)中的許多其他任務(wù))的最容易訪問(wèn)和使用的解決方案是在先前訓(xùn)練的模型上進(jìn)行轉(zhuǎn)移學(xué)習(xí)(通常在大數(shù)據(jù)集上訓(xùn)練的標(biāo)準(zhǔn)模型,如Tensorflow Hub或TF Object Detection API中的那些)。
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
有許多訓(xùn)練有素的對(duì)象檢測(cè)架構(gòu)(例如FasterRCNN、SSD或YOLO)可以在GPU上運(yùn)行的實(shí)時(shí)性能中實(shí)現(xiàn)令人印象深刻的準(zhǔn)確性。
GPU很昂貴,但在訓(xùn)練階段是必需的。然而在推理中,具有專(zhuān)用GPU以實(shí)現(xiàn)實(shí)時(shí)性能是不可行的。所有通用對(duì)象檢測(cè)模型(如上所述)都無(wú)法在沒(méi)有GPU的情況下實(shí)時(shí)運(yùn)行。然后,我們?nèi)绾沃匦聦徱晢蝹€(gè)類(lèi)對(duì)象的對(duì)象檢測(cè)問(wèn)題,以實(shí)現(xiàn)CPU的實(shí)時(shí)性能?
主要思想:簡(jiǎn)單的任務(wù)需要較少的可學(xué)習(xí)特征
所有上述架構(gòu)都設(shè)計(jì)用于檢測(cè)多個(gè)對(duì)象類(lèi)(在COCO或PASCAL VOC數(shù)據(jù)集上訓(xùn)練)。為了能夠?qū)⒚總€(gè)邊界框分類(lèi)為適當(dāng)?shù)念?lèi),這些體系結(jié)構(gòu)需要大量的特征提取。這轉(zhuǎn)化為大量可學(xué)習(xí)的參數(shù),大量的過(guò)濾器,大量的層。換句話說(shuō),這個(gè)網(wǎng)絡(luò)很大。
如果我們定義更簡(jiǎn)單的任務(wù)(而不是多類(lèi)邊界框分類(lèi)),那么我們可以想到網(wǎng)絡(luò)需要學(xué)習(xí)更少的特征來(lái)執(zhí)行任務(wù)。檢測(cè)圖像中的面部顯然比檢測(cè)汽車(chē)、人員、交通標(biāo)志和狗(都在同一模型中)更簡(jiǎn)單。深度學(xué)習(xí)模型為了識(shí)別面部(或任何單個(gè)類(lèi)對(duì)象)所需的特征量將小于同時(shí)檢測(cè)數(shù)十個(gè)類(lèi)的特征量。執(zhí)行第一個(gè)任務(wù)所需的信息少于后一個(gè)任務(wù)。
單個(gè)類(lèi)對(duì)象檢測(cè)模型需要較少的可學(xué)習(xí)功能。參數(shù)越少意味著網(wǎng)絡(luò)越小。較小的網(wǎng)絡(luò)運(yùn)行得更快,因?yàn)樗枰俚挠?jì)算。
那么,問(wèn)題是:我們可以在CPU上實(shí)現(xiàn)實(shí)時(shí)性能但保持準(zhǔn)確性有多大?
faced的主要概念是:建立盡可能小的網(wǎng)絡(luò)(希望)在CPU中實(shí)時(shí)運(yùn)行,同時(shí)保持準(zhǔn)確性。
架構(gòu)
faces是兩個(gè)神經(jīng)網(wǎng)絡(luò)的集合,都是使用Tensorflow實(shí)現(xiàn)的。
主要網(wǎng)絡(luò)
faced的主要架構(gòu)主要基于YOLO的架構(gòu)?;旧?,它是一個(gè)全卷積網(wǎng)絡(luò)(FCN),通過(guò)一系列卷積層和池化層運(yùn)行288×288輸入圖像(不涉及其他層類(lèi)型)。
卷積層負(fù)責(zé)提取空間感知特征。匯集層增加了隨后的卷積層的感知域。
架構(gòu)的輸出是9×9網(wǎng)格(與YOLO中的13×13網(wǎng)格相比)。每個(gè)網(wǎng)格單元負(fù)責(zé)預(yù)測(cè)面部是否在該單元內(nèi)(相對(duì)于YOLO,每個(gè)單元可以檢測(cè)多達(dá)5個(gè)不同的對(duì)象)。
每個(gè)網(wǎng)格單元具有5個(gè)關(guān)聯(lián)值。第一個(gè)是包含面部中心的單元的概率p。其他4個(gè)值是檢測(cè)到的面部(相對(duì)于單元)的(x_center,y_center,width,height)。
主要架構(gòu)
確切的體系結(jié)構(gòu)定義如下:
2×[288×288圖像上的8個(gè)過(guò)濾卷積層]
大池(288×288到144×144特征圖)
在144×144特征圖上的2×[16個(gè)過(guò)濾卷積層]
大池(144×144到72×72特征圖)
72×72特征圖上的2×[32個(gè)過(guò)濾卷積層]
大池(72×72到36×36特征圖)
36×36特征圖上的2× [64個(gè)過(guò)濾卷積層]
大池(36×36到18×18特征圖)
18×18特征圖上的2×[128個(gè)過(guò)濾卷積層]
大池(18×18到9×9特征圖)
大池(18×18到9×9特征圖)
9×9特征圖上的4×[192個(gè)過(guò)濾卷積層]
9×9特征圖上的5個(gè)過(guò)濾卷積層,用于最終網(wǎng)格
所有激活功能都是leaky_relu。
faced有6,993,517個(gè)參數(shù)。YOLOv2有51,000,657個(gè)參數(shù)。它的尺寸是YOLO尺寸的13%!
輔助網(wǎng)絡(luò)
(x_center,y_center,width,height)主網(wǎng)的輸出不如預(yù)期的那么準(zhǔn)確。因此,實(shí)現(xiàn)了一個(gè)小型卷積神經(jīng)網(wǎng)絡(luò)(CNN),以將包含面部的小圖像(用主體系結(jié)構(gòu)輸出裁剪)作為輸入,并在面部的真實(shí)邊界框上輸出回歸。
網(wǎng)絡(luò)采用包含面部的裁剪并預(yù)測(cè)正確的邊界框
它的唯一任務(wù)是補(bǔ)充和改進(jìn)主體系結(jié)構(gòu)的輸出坐標(biāo)。
該網(wǎng)絡(luò)的特定體系結(jié)構(gòu)不相關(guān)。
數(shù)據(jù)集
兩個(gè)網(wǎng)絡(luò)都在WIDER FACE數(shù)據(jù)集上進(jìn)行了訓(xùn)練。
WIDER的多場(chǎng)景
"WIDER FACE數(shù)據(jù)集是一個(gè)人臉檢測(cè)基準(zhǔn)數(shù)據(jù)集。我們選擇了32,203張圖像,標(biāo)記了393,703張人臉,其尺寸、姿勢(shì)和遮擋程度都有很高的變化,如樣本圖像所示。
訓(xùn)練
訓(xùn)練是在Nvidia Titan XP GPU上完成的。訓(xùn)練時(shí)間約需20小時(shí)。批量歸一化技術(shù)用于幫助收斂和丟失(以40%的速率)作為正則化方法以避免過(guò)度擬合。
推理和非大抑制
當(dāng)使用faced推理時(shí),首先將圖像大小調(diào)整為288×288以便饋入網(wǎng)絡(luò)。圖像位于FCN下方,提供上述9×9網(wǎng)格輸出。
每個(gè)單元具有包含圖像的概率p。通過(guò)可配置的閾值過(guò)濾單元(僅保留p>t的單元)。對(duì)于那些保留的單元格,使用單元格(x_center,y_center,width,height)定位人臉。
在某些情況下,多個(gè)單元可以競(jìng)爭(zhēng)同一個(gè)面部。假設(shè)面部中心位于4個(gè)單元格相交的確切位置。這4個(gè)單元可能具有更高的p(在單元內(nèi)包含面部中心的概率)。如果我們保留所有單元格并投影每個(gè)單元格的面部坐標(biāo),那么我們將看到相同的面部周?chē)?個(gè)類(lèi)似的邊界框。這個(gè)問(wèn)題通過(guò)一種稱(chēng)為非大抑制的技術(shù)得以解決。結(jié)果如下圖所示:
非大抑制示例
性能 faced能夠在推理上達(dá)到以下速度:
考慮到Y(jié)OLOv2在i5 2015 MBP上無(wú)法達(dá)到1FPS,相當(dāng)不錯(cuò)。
結(jié)果
讓我們看看一些結(jié)果!
面部圖像
現(xiàn)在讓我們看看faced和Haar Cascades之間的比較,這是一種不使用深度學(xué)習(xí)的計(jì)算機(jī)視覺(jué)傳統(tǒng)方法。兩種方法都在相似的速度性能下運(yùn)行faced表現(xiàn)出更高的準(zhǔn)確性。
Haar Cascades [左] vs faced [右]
faced怎么用?
faced是一個(gè)非常簡(jiǎn)單的程序,既可以嵌入Python代碼中,也可以作為命令行程序使用。
登錄github庫(kù)可以獲得進(jìn)一步說(shuō)明:
https://github.com/iitzco/faced
結(jié)論
faced是一個(gè)概念證明,在場(chǎng)景中,你并不總是需要依賴(lài)于通用的訓(xùn)練模型,因?yàn)檫@些模型對(duì)于你的問(wèn)題和性能問(wèn)題來(lái)說(shuō)過(guò)于簡(jiǎn)單。不要過(guò)高估計(jì)花費(fèi)時(shí)間設(shè)計(jì)特定于你的問(wèn)題的自定義神經(jīng)網(wǎng)絡(luò)架構(gòu)的能力。這些特定網(wǎng)絡(luò)將是比一般網(wǎng)絡(luò)更好的解決方案。
分享題目:faced:基于深度學(xué)習(xí)的CPU實(shí)時(shí)人臉檢測(cè)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://aaarwkj.com/article2/dppdoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)、網(wǎng)站制作、網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容