喬詩(shī)展
摘? 要:針對(duì)當(dāng)前目標(biāo)檢測(cè)算法主要集中在GPU上運(yùn)行且對(duì)家庭機(jī)器人任務(wù)針對(duì)性不強(qiáng)的問(wèn)題,提出了一種基于OpenCV的RMFC算法。該算法首先對(duì)輸入圖像進(jìn)行裁剪、腐蝕、Canny邊緣檢測(cè)操作;其次使用二維順序查找的方法過(guò)濾地面邊緣以外的區(qū)域;隨后使用卷積判斷模塊抽取物體的位置,最后在視頻測(cè)試集上測(cè)試,結(jié)果表明該方法在快速提高檢測(cè)速度的同時(shí)兼顧了準(zhǔn)確性及針對(duì)性,并得到每幅圖像少于10個(gè)的候選區(qū)域。
關(guān)鍵詞:目標(biāo)檢測(cè);候選區(qū)域;順序查找;卷積
中圖分類(lèi)號(hào):TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2020)17-0001-06
Abstract: In order to solve the problem that the current target detection algorithms mainly run on GPU and are not targeted to home robot tasks, a RMFC algorithm based on OpenCV is proposed. Firstly, the algorithm clips, erodes and conducts Canny edge detection to the input image. Secondly, the two-dimensional sequential search method is used to filter the areas outside the ground edge. Then, the algorithm utilizes a two-dimensions sequential search to filter the regions out of the bound of the ground. To extract the position of objects, the convolution and judge method would be processed after that. Finally, after the video data test, it is demonstrated that the algorithm can reach the balance among speed, accuracy, and pertinence. Also, the region proposal in every picture is less than 10.
Keywords: object detection; region proposal; sequential search; convolution
1 概述
近年來(lái)隨著家庭機(jī)器人的發(fā)展,諸如樹(shù)莓派、32單片機(jī)被廣泛搭載于機(jī)器人之上。而原生樹(shù)莓派不支持CPU加速,其資源也較為緊張,而在家庭機(jī)器人中,識(shí)別目標(biāo)是進(jìn)行目標(biāo)抓捕的前提[1]。而目標(biāo)候選區(qū)域的生成(Region Proposal, RP)又是識(shí)別目標(biāo)的基礎(chǔ)。因此對(duì)于以樹(shù)莓派等為核心的家庭機(jī)器人而言,進(jìn)行目標(biāo)的實(shí)時(shí)定位仍是目前的挑戰(zhàn)之一。
Girshick等人提出的Fast-RCNN模型,采用選擇搜索(Selective Search, SS)來(lái)提取目標(biāo),而使用該方法在CPU上進(jìn)行RP時(shí)每張圖片需花費(fèi)2秒,無(wú)法做到實(shí)時(shí)檢測(cè)[2]。而Ren等人提出的Faster-RCNN網(wǎng)絡(luò)首次采用了候選區(qū)域生成網(wǎng)絡(luò)(Region Proposal Network,RPN)及GPU加速來(lái)完成候選區(qū)域生成的過(guò)程[3,4]。此外Redmon等人在2016年提出了YOLO模型,采用回歸的方式實(shí)現(xiàn)了目標(biāo)的檢測(cè),每張圖片僅生成98個(gè)候選區(qū)域,使訓(xùn)練和測(cè)試的速度大幅提升[5]。
而對(duì)非機(jī)器學(xué)習(xí)算法而言,原生SIFT算法在進(jìn)行目標(biāo)檢測(cè)時(shí),關(guān)鍵點(diǎn)配對(duì)查準(zhǔn)率低,速度較慢[6]。此外Zitnick等人提出了一種基于邊緣檢測(cè)的Edge Boxes算法,該算法采用結(jié)構(gòu)化邊緣檢測(cè)算法生成邊緣,隨后遍歷邊緣組成邊緣組(edge group, EP),并以EP的相似度對(duì)EP進(jìn)行評(píng)分,最后輸出評(píng)分較高的候選區(qū)域[7,8]。
綜上,國(guó)內(nèi)外眾多學(xué)者的研究已提出了基于機(jī)器學(xué)習(xí)算法和非機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)RP的方法。但仍然存在下述問(wèn)題:(1)CPU環(huán)境下使用機(jī)器學(xué)習(xí)算法速度較慢,效率較低。(2)針對(duì)諸如掃地機(jī)器人等家庭機(jī)器人的目標(biāo)檢測(cè)任務(wù)無(wú)針對(duì)性策略。(3)生成的候選框個(gè)數(shù)較多。
針對(duì)上述問(wèn)題,本文針對(duì)家庭機(jī)器人行動(dòng)貼近地面的特征提出了一種基于OpenCV實(shí)現(xiàn)的區(qū)域遮罩-卷積判斷模型(regionMask-fakeConv,RMFC)。該模型基于Canny算子進(jìn)行圖像的邊緣檢測(cè),并通過(guò)平均顏色模型及順序查找的方法提取地面的有效區(qū)域,隨后通過(guò)卷積判斷模塊獲取候選框,能有效減少候選框的數(shù)量,并加速圖像的運(yùn)算[9]。
2 算法框架
RMFC模型的總體框架如圖1所示。首先通過(guò)OpenCV的imread()函數(shù)輸入包含地面及地面上物體的BGR三通道圖像,在進(jìn)行數(shù)據(jù)預(yù)處理和圖像裁減后,進(jìn)入?yún)^(qū)域遮罩二維搜索算法(regionMask)中查找并去除地面邊界。隨后進(jìn)行卷積判斷(fakeConv)算法,進(jìn)行目標(biāo)的定位和提取操作,最后生成目標(biāo)的候選區(qū)域框。
2.1 平均顏色模型
由于光線的直線傳播原理及地面顏色一般較均勻,目標(biāo)物體和地面間的亮度和梯度差異較大。而如圖2所示,通過(guò)取圖形最下方的區(qū)域作為模板,對(duì)模板內(nèi)像素點(diǎn)(取值為0-255)取平均值后對(duì)灰度圖像做絕對(duì)值差分,并進(jìn)行類(lèi)型轉(zhuǎn)換,得到整張灰度圖像與地面平均像素值的差異。該差異充分體現(xiàn)了物體與地面間的亮度差異。而所選區(qū)域的大小一般為整張圖像的,可近似于地面的總體顏色,因此可在未定義地面顏色的情況下進(jìn)行處理。
2.2 regionMask搜索算法
2.2.1 二維空間的順序查找
regionMask搜索算法的本質(zhì)是一種順序查找算法。而地面的邊界分為如圖3所示的四種情況。
其中,I型邊緣和II型邊緣的主要特征為左右兩側(cè)地面邊界所連的圖像邊界均在圖像下沿或圖像左右兩側(cè)。而III型邊緣及IV型邊緣的特征為各有一邊連于圖像下邊緣,另一側(cè)連與圖像的左/右邊界。此外,地面邊緣還具有(1)地面邊界均成直線或近似為直線;(2)地面邊界外可能有其他物品等特點(diǎn)。
因此,若需將地面區(qū)域從圖像中分割出來(lái),可先取圖像下邊緣中點(diǎn)分別朝左及右側(cè)順序搜索,當(dāng)目標(biāo)像素為黑色(值為0)時(shí),進(jìn)行下一個(gè)像素的搜索。而當(dāng)目標(biāo)像素為白色(值為255)時(shí),停止搜索,如圖4所示。
將停止搜索的點(diǎn)記為點(diǎn)A,如圖5所示,進(jìn)行斜向上的搜索算法,直到搜索到下一個(gè)點(diǎn)B,并記錄點(diǎn)A、B的坐標(biāo)(w1,h1)及(w2,h2)。設(shè)地面邊界所連于圖像上邊緣的點(diǎn)為C,坐標(biāo)為(w3,0),則A、B、C三點(diǎn)近似滿足關(guān)系式(1)及式(2)。
2.2.2 重合點(diǎn)映射算法
順序查找存在查找失敗的可能,針對(duì)于上述任務(wù),查找失敗時(shí)查找點(diǎn)的坐標(biāo)為(0,0)或(W,0),此時(shí)無(wú)法構(gòu)建出一條直線。因而需要將該點(diǎn)視為重合點(diǎn),分別垂直地向兩個(gè)方向移動(dòng)一段距離,視作一條直線,如圖6所示。
2.2.3 圖像與操作
由順序查找算法及各邊緣的類(lèi)型可得地板邊界各點(diǎn)的坐標(biāo),而OpenCV中的fillPoly()函數(shù)可將各點(diǎn)繪制成一個(gè)閉合且填充非0值像素點(diǎn)的多邊形。利用bitwise_and()函數(shù)使該多邊形與原始圖像進(jìn)行像素點(diǎn)的操作,可將地面多邊形以外的像素點(diǎn)全部排除,僅保留地面多邊形內(nèi)的像素點(diǎn)。
2.3 fakeConv判斷算法
針對(duì)regionMask搜索算法生成的圖像具有較多0值像素點(diǎn)的問(wèn)題,可采用逐一卷積判斷的方法。如圖7所示,分別截取圖像15*15的像素區(qū)域,對(duì)其中的像素點(diǎn)的值作和S,其等價(jià)于采用size=15的全1卷積核對(duì)圖像進(jìn)行卷積。
而當(dāng)S=0時(shí),說(shuō)明感受野內(nèi)均為0值像素點(diǎn),可另等價(jià)的卷積核直接向右移動(dòng)size=15個(gè)單位,進(jìn)行下一步卷積判斷。
當(dāng)S≠0時(shí),說(shuō)明感受野內(nèi)存在非0值像素點(diǎn),此時(shí)感受野每次均向右移動(dòng)一格,并記錄下當(dāng)前的S,及當(dāng)前點(diǎn)的坐標(biāo)(wx,hx),按照式(4)計(jì)算結(jié)果R。
其中式(4)中分母所代表的幾何含義即當(dāng)前點(diǎn)距機(jī)器人視野中心點(diǎn)(,H)之間的距離。因而距離視野中心點(diǎn)的距離越大,所占的權(quán)重也越小,也即物體被注意到的可能性也就越小。因而該公式也對(duì)regionMask搜索算法沒(méi)有除凈的邊界點(diǎn)起到了一定的過(guò)濾作用。
上述fakeConv算法會(huì)對(duì)卷積結(jié)果不為0的點(diǎn)進(jìn)行結(jié)果的計(jì)算,但此時(shí)列表長(zhǎng)度較長(zhǎng),且對(duì)同一個(gè)物體會(huì)有不同的候選點(diǎn)。因此可通過(guò)列表降序排列,且設(shè)定物體間距來(lái)進(jìn)行候選點(diǎn)過(guò)濾。而考慮部分物體靠近地面邊緣,即距離機(jī)器仍有一定的距離,因此可判斷通過(guò)候選點(diǎn)所生成的矩形左上點(diǎn)是否超出地面區(qū)域從而判定該物體是否被檢測(cè)到。
此外,對(duì)區(qū)域內(nèi)的物體,按照候選區(qū)域左上角距視野中心距離進(jìn)行排序,以起到后期對(duì)機(jī)器人抓捕目標(biāo)路徑規(guī)劃的作用。
2.4 Jit-RMFC算法
針對(duì)含有大量for循環(huán)及numpy數(shù)組運(yùn)算的python代碼,由于Python解釋器逐行轉(zhuǎn)換和編譯的原理,其效率會(huì)非常低。而Python中的Numba庫(kù)可通過(guò)即時(shí)編譯(Just In Time, JIT)功能將Python代碼預(yù)先轉(zhuǎn)換為本地機(jī)器碼,從而達(dá)到提高效率的目的[10]。
而RMFC中的fakeConv和regionMask的二維搜索部分恰好具備了含有大量循環(huán)及numpy數(shù)組運(yùn)算的特性,因此可以通過(guò)Jit進(jìn)行編譯加速。并且,使用Jit加速只需要在需加速的函數(shù)前添加一個(gè)裝飾器,無(wú)需改動(dòng)算法框架。
3 實(shí)驗(yàn)
3.1 實(shí)驗(yàn)環(huán)境
本文使用一臺(tái)搭載Intel(R) Core(TM) i7-8750H的CPU的個(gè)人計(jì)算機(jī)在Windows10下進(jìn)行實(shí)驗(yàn),RAM大小為8GB。使用python語(yǔ)言的OpenCV 3.4.1版本編寫(xiě),采用CPU進(jìn)行運(yùn)算。
3.2 實(shí)驗(yàn)數(shù)據(jù)集
如圖8所示,測(cè)試數(shù)據(jù)集為一段長(zhǎng)1分35秒的視頻,共包含2864張圖片,每張圖片中含有0-10個(gè)中央物體,每張圖片大小為1280*720,為確保差異度,每隔五幀取一張圖片作為測(cè)試數(shù)據(jù)。
測(cè)試集讀取使用OpenCV提供的VideoCapture()函數(shù)逐幀讀取,隨后對(duì)每一幀進(jìn)行運(yùn)算,運(yùn)算的結(jié)果使用imwrite()函數(shù)保存到本地,直到最后一幀讀取完畢。
3.3 數(shù)據(jù)預(yù)處理
考慮到1280*720的輸入圖片過(guò)大,因此首先使用OpenCV的resize()函數(shù),將輸入圖片調(diào)整為384*216的尺寸作為算法的輸入。隨后使用cvtColor()函數(shù)將輸入圖像轉(zhuǎn)化為灰度圖,并使用absdiff()函數(shù)做圖像差分,erode()函數(shù)做圖像形態(tài)學(xué)的腐蝕操作,其中腐蝕濾波器的大小為5*5,最后再使用Canny()函數(shù)完成圖像的邊緣檢測(cè)。
3.4 評(píng)估指標(biāo)
模型評(píng)估主要采用平均用時(shí)、查準(zhǔn)率、候選框個(gè)數(shù)三個(gè)指標(biāo),平均用時(shí)T和查準(zhǔn)率P的計(jì)算公式如式(5)及式(6)所示。選取SS算法、Edge Boxes算法與本模型進(jìn)行性能對(duì)比。
3.5 實(shí)驗(yàn)結(jié)果及分析
RMFC模型及其他模型的實(shí)驗(yàn)數(shù)據(jù)如表1所示。
從表中可以看出,RMFC模型每張圖片的用時(shí)僅為Edge Boxes的三分之一左右,而經(jīng)過(guò)JIT加速后的Jit-RMFC模型的用時(shí)僅為原生RMFC模型的五分之一。且RMFC模型生成的候選框個(gè)數(shù)相比于SS和Edge Boxes均明顯減少,查準(zhǔn)率相較于上述兩種方法提高了4%左右。
而在平臺(tái)方面,對(duì)比其他神經(jīng)網(wǎng)絡(luò)模型,包括Faster RCNN, YOLO等機(jī)器學(xué)習(xí)算法的結(jié)果如表2所示。
對(duì)于Faster-R-CNN的RPN和YOLO而言,輸入圖像后首先需要將比例縮放到1:1,這樣會(huì)讓圖像產(chǎn)生擠壓,從而丟失一些特征并影響精度。針對(duì)地面視覺(jué)導(dǎo)航而言,由于地面視野較寬,因而整體圖像長(zhǎng)寬比較大,不宜采用壓縮到1:1的方式進(jìn)行數(shù)據(jù)的處理,這也是RPN和YOLO的一個(gè)缺陷。
在速度方面,Jit- RMFC模型在CPU上處理每張圖片的速度超過(guò)了GPU上的原生DPM,并且接近RPN在GPU上的用時(shí)。Jit-RMFC模型每秒可處理59.8張圖片,對(duì)于機(jī)器人輸入的視頻流,達(dá)到了實(shí)時(shí)檢測(cè)的效果。
對(duì)于RMFC模型而言,由于一開(kāi)始的resize()操作,改變了輸入圖像的大小,雖然不改變?cè)急壤?,但由于大小的改變?cè)斐闪颂卣鱽G失,導(dǎo)致查準(zhǔn)率下降。而由于Jit-RMFC的效率是原生RMFC的六倍,因此可以適當(dāng)增加圖像大小,同時(shí)保證實(shí)時(shí)性,即每秒處理30張以上圖片。增加圖像大小后Jit-RMFC的準(zhǔn)確率及效率如表3所示。
從表中可看出,隨著Resize的大小不斷增大,查準(zhǔn)率也在緩慢增大,而Resize尺寸達(dá)到原圖的50%時(shí),該算法依然可以在保證查準(zhǔn)率的情況下實(shí)時(shí)檢測(cè)。
4 結(jié)論
為了針對(duì)性地解決家庭機(jī)器人視覺(jué)導(dǎo)航中目標(biāo)檢測(cè)的RP問(wèn)題,提出了一種基于OpenCV的RMFC算法。一方面,通過(guò)regionMask可快速提取出地面的有效區(qū)域,同時(shí)抑制掉地面邊緣以外的區(qū)域,可讓候選區(qū)域生成的有效范圍比例增大。另一方面,通過(guò)fakeConv算法,可有效并快速提取目標(biāo)所在區(qū)域而無(wú)需經(jīng)過(guò)漫長(zhǎng)的訓(xùn)練過(guò)程,在一定程度上節(jié)約了移動(dòng)機(jī)器人的資源。
參考文獻(xiàn):
[1]Gareth, Halfacree. Raspberry Pi user guide. Raspberry Pi User Guide. Wiley Publishing, 2014.
[2]Girshick, Ross. Fast R-CNN. Computer Science (2015).
[3]Ren, Shaoqing, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis & Machine Intelligence, 39.6(2015):1137-1149.
[4]Shih KH, Chiu CT, Lin JA, Bu YY. Real-Time Object Detection with Reduced Region Proposal Network via Multi-Feature Concatenation [published online ahead of print, 2019 Aug 21]. IEEE Trans Neural Netw Learn Syst.
[5]Redmon, Joseph, et al. You Only Look Once: Unified, Real-Time Object Detection. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) IEEE, 2016.
[6]Prakash, Choudhary Shyam, et al. Detection of copy-move forgery using AKAZE and SIFT keypoint extraction. Multimedia Tools and Applications 7(2019).
[7]Zitnick, Charles Lawrence, and P. Dollar. Edge Boxes: Locating Object Proposals from Edges. (2014).
[8]Piotr Dollár, and L. C. Zitnick. Structured Forests for Fast Edge Detection. ICCV IEEE Computer Society, 2013.
[9]Canny, John. A Computational Approach To Edge Detection. IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI-8.6(1986):679-698.
[10]Lam, Siu Kwan, A. Pitrou, and S. Seibert. Numba: a LLVM-based Python JIT compiler. the Second Workshop ACM, 2015.
[11]Felzenszwalb, Pedro F, et al. Object Detection with Discriminatively Trained Part-Based Models. IEEE Transactions on Software Engineering,32.9(2010):1627-1645.