穆曉芳,郭怡凡,李 越
(太原師范學(xué)院 計(jì)算機(jī)系,山西 晉中030619)
近年來,隨著計(jì)算機(jī)技術(shù)的發(fā)展,越來越多的學(xué)者對(duì)于深度學(xué)習(xí)有了更深入的了解,并將其應(yīng)用到目標(biāo)檢測(cè)算法中[1].目前基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為兩類,一類是兩階段目標(biāo)檢測(cè)算法,此類算法檢測(cè)精度較高,但其檢測(cè)速度慢.例如:R-CNN(Region-conventional Neural Network)、Fast R-CNN、Faster RCNN等.另一類是單階段的目標(biāo)檢測(cè)算法,例如:SSD(Single Shot Multibox Detector)、YOLO(You Only Look Once)系列、PP-YOLO等.此類算法通過在CNN中提取特征達(dá)到預(yù)測(cè)物體分類和位置信息的效果,檢測(cè)速度較快,但在檢測(cè)精度方面仍有缺陷.為彌補(bǔ)單階段目標(biāo)檢測(cè)算法的精度不足(尤其是對(duì)小目標(biāo)的檢測(cè)),近年來國內(nèi)外相關(guān)研究者提出了多種優(yōu)化方案,部分學(xué)者從網(wǎng)絡(luò)的結(jié)構(gòu)上進(jìn)行調(diào)整,通過在深層次的模型中提取淺層模型的特征來彌補(bǔ)CNN(Convolutional Neural Networks)深層次特征的信息丟失問題.例如:DSSD、FPN、SPPNet、PANet、DenseDet深度可分離卷積等.
基于以上的研究,本文提出了一種基于圖像裁剪的行人小目標(biāo)檢測(cè)算法,并使用單階段目標(biāo)檢測(cè)器SSD進(jìn)行測(cè)試.經(jīng)實(shí)驗(yàn)得出,裁剪后的圖像中小目標(biāo)檢測(cè)率更高,且在保證實(shí)時(shí)性的基礎(chǔ)上提高了小目標(biāo)的檢測(cè)精度.
SSD模型最初由Liu[2]等人提出,該模型的主干網(wǎng)絡(luò)為VGG16,圖1為其網(wǎng)絡(luò)結(jié)構(gòu)圖.該模型的輸入圖片尺寸為300*300,該網(wǎng)絡(luò)結(jié)構(gòu)共有6個(gè)特征圖,通過利用不同層特征圖的優(yōu)勢(shì)分別預(yù)測(cè)不同尺寸的物體,檢測(cè)小目標(biāo)時(shí)用含有更高分辨率的淺層特征圖,檢測(cè)較大的物體目標(biāo)時(shí)用包含豐富語義信息的深層特征圖,解決了僅用單層特征檢測(cè)精度不足的缺點(diǎn).最后使用非極大值抑制法過濾掉冗余檢測(cè)框,產(chǎn)生最終檢測(cè)結(jié)果.但SSD模型用于提取小目標(biāo)特征的淺層特征圖數(shù)量較少,造成對(duì)小目標(biāo)的細(xì)節(jié)特征信息提取不充分,出現(xiàn)漏檢、誤檢等現(xiàn)象,導(dǎo)致檢測(cè)準(zhǔn)確率較低.
圖1 SSD模型圖
在視頻數(shù)據(jù)中,數(shù)字圖像存在著多種冗余容易導(dǎo)致檢測(cè)效果下降.例如,在一些固定的行人監(jiān)控場景下,行人往往只會(huì)從幾個(gè)特定入口進(jìn)入該監(jiān)控區(qū)域,若去掉背景冗余信息,只對(duì)圖片中人員活動(dòng)頻繁的高頻感興趣區(qū)域進(jìn)行檢測(cè),可提升圖像或視頻中關(guān)鍵目標(biāo)的檢測(cè)精度.在以往的兩階段目標(biāo)檢測(cè)算法中,有三種提高視頻圖像檢測(cè)精度的方法:圖像金字塔[3]、滑動(dòng)窗口法和非極大值抑制法[4,5].往往將這三種方法組合使用,可明顯提高目標(biāo)識(shí)別的檢出率.滑動(dòng)窗口法與圖像金字塔一般配合使用,不斷對(duì)金字塔中更小的上一層圖片進(jìn)行滑動(dòng)窗口檢測(cè),再使用非極大值抑制法去除冗余的檢測(cè)結(jié)果(即圖像裁剪),最后在圖片中進(jìn)行局部最大搜索并選取檢測(cè)結(jié)果得分較高的,使其權(quán)衡召回率和精確度.例如Fast R-CNN[6]中加入了ROI(Region of Interest,感興趣區(qū)域)Pooling層,將大小不同的候選框映射為固定尺寸的的矩形框.這樣做有利于后面的目標(biāo)分類工作和輸出回歸框操作,而且加快了模型的處理速度.同時(shí)為了提高檢測(cè)的精確度,選擇區(qū)域時(shí)需要盡量多地選擇候選框來確保召回率,如果漏選,則漏選區(qū)域不會(huì)判定類別所屬.這樣導(dǎo)致了候選框在分類時(shí)大部分都會(huì)被判定為背景區(qū)域,造成大量的額外運(yùn)算,使得檢測(cè)速度減慢.
在實(shí)際應(yīng)用場景中,可以通過使用去除圖片背景中的冗余信息找出需要檢測(cè)的感興趣區(qū)域.根據(jù)實(shí)際研究內(nèi)容的范圍,通過進(jìn)行圖像分幅裁剪(Subset Image)操作達(dá)到圖像冗余去除的效果.一般情況下選用規(guī)則分幅裁剪,即確定圖像的裁剪位置將圖像裁剪為矩形狀.
SSD檢測(cè)模型在場景中對(duì)行人進(jìn)行檢測(cè)時(shí),較小行人目標(biāo)的檢測(cè)效果并不理想.在檢測(cè)速度方面,由于場景中存在大量的冗余信息,使得檢測(cè)模型在執(zhí)行過程中,存在大量的冗余檢測(cè)且影響檢測(cè)精度.基于以上問題,本文設(shè)計(jì)了圖像裁剪和SSD模型相結(jié)合的行人檢測(cè)算法,對(duì)輸入圖像使用圖像裁剪預(yù)處理操作,達(dá)到對(duì)關(guān)鍵目標(biāo)的精確查找,提升了目標(biāo)檢測(cè)率.圖2為本文設(shè)計(jì)的行人檢測(cè)算法流程圖.
圖2 行人檢測(cè)算法流程圖
在固定監(jiān)控下的視頻數(shù)據(jù)中,圖像序列不同幀之間是否存在相關(guān)性,指的是相似性程度和相關(guān)匹配程度是否較高.本文將同一場景下的兩幅相鄰幀圖像隨機(jī)均切分為多個(gè)子圖像,并計(jì)算兩幅圖像切分后對(duì)應(yīng)子圖像的相關(guān)系數(shù).若相關(guān)性較高則表示對(duì)應(yīng)的子圖像相似度高,即為冗余數(shù)據(jù),可通過圖像裁剪去除.若相關(guān)性較低則表示對(duì)應(yīng)的子圖像相似度低,說明該區(qū)域行人活動(dòng)較多,即為需要求出的高頻ROI.本文采用spearman相關(guān)系數(shù),即斯皮爾曼等級(jí)相關(guān)系數(shù)[7],計(jì)算過程如式(1)所示:
字母ρ表示相關(guān)系數(shù).其中,x、y分別為兩幅圖像對(duì)應(yīng)像素值.表示平均像素值.其相關(guān)系數(shù)依據(jù)單調(diào)方程來估計(jì)變量間的相關(guān)性,若數(shù)據(jù)中無重復(fù)值且兩個(gè)變量完全單調(diào)相關(guān),則相關(guān)系數(shù)則為+1或-1[7].當(dāng)相關(guān)系數(shù)為+1時(shí),表明像素間存在相關(guān)性,反之則存在無關(guān)性.
上述相關(guān)系數(shù)只能用來表示圖像間的相關(guān)性,其相關(guān)程度并不能完全表示.為得到更精確的圖像所需數(shù)據(jù)量,盡可能剔除多余的數(shù)據(jù),驗(yàn)證圖像之間的相關(guān)程度,此處引入費(fèi)雪變換[8],對(duì)切分后的兩幀圖像對(duì)應(yīng)的子圖像進(jìn)行顯著性驗(yàn)證.費(fèi)雪變換可驗(yàn)證被觀測(cè)數(shù)據(jù)的ρ值是否顯著不為零,其顯著性越明顯,則證明其相關(guān)性越高,反之顯著性越低,不相關(guān)性越高,通過這種方法來驗(yàn)證兩幅對(duì)應(yīng)子圖像之間的相關(guān)程度.費(fèi)雪變換計(jì)算公式如式(2)所示:
ρ總是有-1≤ρ≤1,設(shè)ρ的Fisher變換為F(ρ),切分后的每個(gè)子圖像都可以看作是一個(gè)樣本數(shù)據(jù),n為該樣本數(shù)據(jù)的總數(shù),則
z是ρ的置信區(qū)間的值,顯著性為:
t的計(jì)算過程如公式4所示.
通過對(duì)相鄰幀對(duì)應(yīng)的子圖像進(jìn)一步驗(yàn)證顯著性后,判斷其相關(guān)性.如果相關(guān)性較高,則說明裁剪區(qū)域產(chǎn)生冗余,并未產(chǎn)生ROI區(qū)域;若相關(guān)性較低,則說明裁剪區(qū)域并未產(chǎn)生冗余,為ROI區(qū)域保存至最終裁剪.
計(jì)算出兩幅圖像的相關(guān)性系數(shù)之后,針對(duì)圖像相關(guān)性系數(shù)較小的區(qū)域,采用差異函數(shù),即用圖像處理庫PIL中的ImageChops.difference函數(shù),計(jì)算“兩個(gè)圖像之間逐像素差異的絕對(duì)值”,并返回差異圖像,對(duì)其不同區(qū)域進(jìn)行比較,輸出兩幅圖像的不同區(qū)域圖并用矩陣表示,如圖3所示,可以看出像素值橫坐標(biāo)在0~1 500,縱坐標(biāo)值在200~1 000范圍內(nèi)兩幅圖像之間的不同:
圖3 同一場景下不同時(shí)刻的區(qū)域?qū)Ρ葓D
通過圖3中兩幅圖的對(duì)比,我們可以看出在沒有發(fā)生變化的區(qū)域,例如左邊有壁畫的墻壁、上方的天花板、右側(cè)的玻璃窗等區(qū)域,像素值的變化基本沒有浮動(dòng),接下來我們選用規(guī)則分幅裁剪,選取裁剪的起始橫坐標(biāo)、縱坐標(biāo)及裁剪終止的橫坐標(biāo)、縱坐標(biāo),進(jìn)行切片操作.橫縱坐標(biāo)的選擇即為圖像裁剪后的高頻ROI的起始橫縱坐標(biāo).
圖4是進(jìn)行規(guī)則分幅裁剪后的圖像對(duì)比:在原來的圖像中可以看出,個(gè)別遠(yuǎn)處的小目標(biāo)由于包含的特征數(shù)少,包含的像素小,占據(jù)整個(gè)圖像的比例較小,且容易受到背景的干擾,目標(biāo)背景復(fù)雜度高、受光照或遮擋影響、小目標(biāo)邊緣信息不顯著等原因,使得遠(yuǎn)處的行人小目標(biāo)檢測(cè)效果較差.經(jīng)過圖像裁剪后的圖像局部特征表達(dá)更明顯,個(gè)別遠(yuǎn)處的小目標(biāo)由于包含的像素值變大,占據(jù)整個(gè)圖像的比例變大,可使得遠(yuǎn)處的行人小目標(biāo)檢測(cè)效果變好,本文通過大量實(shí)驗(yàn)驗(yàn)證了該算法的有效性.
圖4 圖像裁剪前后對(duì)比圖
SSD模型在進(jìn)行檢測(cè)圖像時(shí),針對(duì)不同尺寸的圖像,進(jìn)入SSD模型后都會(huì)被resize為同一尺寸(300*300)進(jìn)行檢測(cè).如果輸入的圖像像素高于300*300,在被SSD模型檢測(cè)時(shí),resize為300*300的圖像時(shí)會(huì)降低分辨率,導(dǎo)致圖像失真.而輸入的圖像像素低時(shí),會(huì)resize為300*300的高像素圖,此時(shí)內(nèi)部的一些細(xì)節(jié)會(huì)被擴(kuò)充,對(duì)于小目標(biāo)的特征也會(huì)更明顯,檢測(cè)小目標(biāo)就會(huì)有更好的效果.如圖5所示為不同尺寸圖片擬resize后對(duì)比圖:
圖5 圖像裁剪前后對(duì)比圖
本文所使用的數(shù)據(jù)集取景于某商場大廳內(nèi)的監(jiān)控視頻數(shù)據(jù)集.實(shí)驗(yàn)操作系統(tǒng)為windows10,CPU為AMD Ryzen 7 3700X8-Core Processor 3.59GHz內(nèi)存:32GB,GPU:NVIDIA 3080,GPU顯存:10GB.程序設(shè)計(jì)平臺(tái)語言為Python,用到處理圖像的OpenCV、搭建算法模型的Pytorch,并同時(shí)安裝了CUDA10.2和cudnn7.4.2以支持GPU的使用.
本文選取了五組監(jiān)控?cái)z像頭下的圖片進(jìn)行實(shí)驗(yàn),表1為實(shí)驗(yàn)結(jié)果圖.從表1中可看出,每組實(shí)驗(yàn)經(jīng)過圖像裁剪后的行人檢測(cè)效果均有所提升,除實(shí)驗(yàn)2外其余各組實(shí)驗(yàn)檢測(cè)目標(biāo)個(gè)數(shù)均增加且平均正確率(即IoU值,預(yù)測(cè)邊框與真實(shí)邊框的交并比)提高.通過實(shí)驗(yàn)4,可以得出其檢測(cè)時(shí)間相比原來快了0.004s,說明通過此改進(jìn)保證了單階段目標(biāo)檢測(cè)算法的實(shí)時(shí)性.
表1 改進(jìn)前后訓(xùn)練時(shí)模型的正確率
另外,本文列出了實(shí)驗(yàn)4和實(shí)驗(yàn)5的改進(jìn)前后檢測(cè)結(jié)果圖,如圖6所示.子圖a和子圖b為實(shí)驗(yàn)4的檢測(cè)結(jié)果.子圖c和子圖d為實(shí)驗(yàn)5的檢測(cè)結(jié)果.實(shí)驗(yàn)4中原始SSD算法檢測(cè)了16個(gè)行人目標(biāo),而改進(jìn)后的SSD算法檢測(cè)到了19個(gè)行人目標(biāo).實(shí)驗(yàn)5中改進(jìn)后的SSD算法有效地檢測(cè)出了22個(gè)行人目標(biāo),而使用原始SSD算法漏檢了5個(gè)行人小目標(biāo).由此可見,原始SSD算法檢測(cè)時(shí)存在目標(biāo)漏檢的情況,而改進(jìn)后的SSD算法可以有效檢測(cè)出更多的行人小目標(biāo).
圖6 圖像裁剪前后檢測(cè)對(duì)比圖
圖7 為進(jìn)行多組實(shí)驗(yàn)后得出的改進(jìn)前后訓(xùn)練時(shí)模型的TOP5平均正確率對(duì)比圖.通過多組人數(shù)不同的圖片進(jìn)行對(duì)比,改進(jìn)后的SSD在行人小目標(biāo)檢測(cè)的平均正確率上與原SSD相比有所提升,進(jìn)一步說明本文所提出的算法在行人小目標(biāo)檢測(cè)方面有所提升.
圖7 改進(jìn)前后訓(xùn)練時(shí)模型的正確率對(duì)比圖
針對(duì)通用的目標(biāo)檢測(cè)算法在檢測(cè)小目標(biāo)時(shí)效果不佳、漏檢率較高的問題,本文對(duì)固定單目視覺監(jiān)控場景下的小目標(biāo)檢測(cè)問題,設(shè)計(jì)了一種基于圖像裁剪的行人檢測(cè)算法.在目標(biāo)檢測(cè)前,先對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行圖像裁剪預(yù)處理,再將處理后的圖像使用SSD算法進(jìn)行目標(biāo)檢測(cè),通過實(shí)驗(yàn)前后對(duì)比,有效提升了小目標(biāo)的檢測(cè)率.但目前改進(jìn)的算法僅適應(yīng)于固定單目視覺監(jiān)控環(huán)境中,而實(shí)際應(yīng)用中往往是運(yùn)動(dòng)環(huán)境或者多目視覺場景中,因此,今后將進(jìn)一步研究復(fù)雜場景下的小目標(biāo)檢測(cè)技術(shù),提升目標(biāo)檢測(cè)算法的識(shí)別效果.
太原師范學(xué)院學(xué)報(bào)(自然科學(xué)版)2021年2期