李 純,張洪斌,李嘉毅,謝啟勝(通信作者)
(北京首都國際機(jī)場(chǎng)股份有限公司 北京 101317)
在軌道交通、民航航空等領(lǐng)域中,液體危險(xiǎn)品是一類直接威脅著公共交通安全的重要危險(xiǎn)品。 對(duì)液體危險(xiǎn)品的查驗(yàn)一直都是地鐵站、高鐵站、機(jī)場(chǎng)等安檢場(chǎng)所的查驗(yàn)重點(diǎn)。 對(duì)液體容器的查驗(yàn)是對(duì)液體危險(xiǎn)品的一種實(shí)際使用中的重要查驗(yàn)手段。 通常,對(duì)于X 光安檢機(jī)圖像中危險(xiǎn)品的分辨,需要安檢值機(jī)員人為判定。 由于判圖疲勞等問題,需要設(shè)計(jì)一套基于X 光安檢圖像的容器物品的自動(dòng)檢測(cè)算法,輔助安檢員進(jìn)行圖像判別,提升判別效率。
本文利用液體容器普遍具備的軸對(duì)稱物理特性及其在X 光安檢圖像上的成像特點(diǎn),提出一種基于邊緣點(diǎn)的對(duì)稱性值的計(jì)算方式,并結(jié)合預(yù)定掃描線的方式,降低了計(jì)算運(yùn)算量,并且基于后續(xù)一些簡(jiǎn)單有效的判定規(guī)則即可實(shí)現(xiàn)X 光圖像中容器的檢測(cè)。 該容器檢測(cè)方法與基于神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法相比,不需要標(biāo)注圖像,不依賴耗時(shí)的模型訓(xùn)練過程,算法運(yùn)行時(shí)也不需要額外的協(xié)處理器,如人工智能企業(yè)NVIDIA Corporation 的圖形處理器(graphics processing unit, GPU) 等,僅需中央處理器(central processing unit, CPU)即可實(shí)現(xiàn)。
2012 年Alex 在ImageNet 大規(guī)模圖像分類競(jìng)賽中提出了AlexNet[1]基于神經(jīng)網(wǎng)絡(luò)的圖像分類算法,該算法顯著提升了圖像分類的準(zhǔn)確率,并較大幅度地超越了以往的傳統(tǒng)算法,因此開啟了神經(jīng)網(wǎng)絡(luò)時(shí)代。 后續(xù)視覺幾何組(visual geometry group, VGG)[2]、深度殘差神經(jīng)網(wǎng)絡(luò)(deep residual network, ResNet)[3]的出現(xiàn),逐漸形成并完善了卷積神經(jīng)網(wǎng)絡(luò),特別是ResNet 的出現(xiàn),使得深層卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練成為可能,并開始在計(jì)算機(jī)視覺的多個(gè)領(lǐng)域展現(xiàn)出突出的性能結(jié)果。 在目標(biāo)檢測(cè)領(lǐng)域,以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),很快提出了基于深度學(xué)習(xí)的YOLO(you only look once)[4]、FasterRCNN[5]等目標(biāo)檢測(cè)算法,并分別以此為基礎(chǔ)形成了1 階段目標(biāo)檢測(cè)算法和基于候選區(qū)域提取的2階段目標(biāo)檢測(cè)算法。
深度學(xué)習(xí)算法通常需要較多的數(shù)據(jù),例如coco 數(shù)據(jù)集含有約28 萬個(gè)標(biāo)注數(shù)據(jù),也需要比較長(zhǎng)的模型訓(xùn)練時(shí)間。以運(yùn)行速度著稱的YOLOv5[6]為例,small 尺度的模型需要在單塊v100 上花費(fèi)天時(shí)間才能完成300 個(gè)批次的訓(xùn)練。
目前在X 光安檢圖像違禁品檢測(cè)方面,諸多算法均是以YOLO、SSD、FasterRCNN 為基礎(chǔ)進(jìn)行些許改進(jìn),或引入分類模塊改善誤報(bào)[7-8],或增強(qiáng)淺層特性和深層語義信息的融合,用來改善對(duì)小目標(biāo)檢測(cè)的性能[9]。
本文在X 光安檢圖像上利用容器物品的對(duì)稱性特性,提出對(duì)稱性值的計(jì)算方式,并采用了線掃描的方式提高計(jì)算效率,實(shí)現(xiàn)了一種輕便快捷的容器檢測(cè)算法,不需要進(jìn)行圖像標(biāo)注和模型訓(xùn)練,檢測(cè)過程也相對(duì)高效簡(jiǎn)潔。
地鐵、機(jī)場(chǎng)等安檢場(chǎng)所經(jīng)常采用X 光技術(shù)完成包裹的非侵入式檢測(cè),提高安全檢查效率。 常見的安全檢查圖像如圖1 所示。 根據(jù)算法需求,確定了一種檢測(cè)行李包裹中可疑容器區(qū)域的算法,通過檢測(cè)可疑容器區(qū)域來表示可能存在的液體區(qū)域,算法主要依據(jù)的是如圖2 所示的Canny 邊緣圖像,可以看出容器區(qū)域,容器兩個(gè)側(cè)壁的邊緣在某個(gè)旋轉(zhuǎn)角度下呈現(xiàn)出了很強(qiáng)的縱向軸對(duì)稱性。
圖1 原始圖像
圖2 Canny 邊緣圖像
為了提高檢測(cè)速度,避免采用逐個(gè)像素地滑動(dòng)窗口的檢測(cè)方法,本算法在原始圖像的Canny 邊緣圖像上采用了基于掃描線的檢測(cè)方式,對(duì)于掃描線上的每個(gè)掃描點(diǎn),按照如下的方式計(jì)算對(duì)稱性值。 如圖3 所示。
圖3 基于掃描線的對(duì)稱值計(jì)算
計(jì)算公式為式(1)所示:
其中,函數(shù)1{條件}表示如果條件為真,則該函數(shù)的值為1;x,y是需要計(jì)算掃描線上的點(diǎn)的像素坐標(biāo)值(x、y分別為列坐標(biāo)和行坐標(biāo))。 Edgemap 表示邊緣圖像,邊緣點(diǎn)的值為255,背景值為0。 如圖4 所示,windowInnerWidth是掃描窗口內(nèi)窗口的像素寬度;windowOuterWidth是掃描窗口外窗口的像素寬度;windowHeight是掃描窗口的像素高度。
圖4 對(duì)稱值計(jì)算示意圖
算法的整體運(yùn)行流程大體分為如下3 個(gè)階段,如圖5所示。
圖5 算法整體流程示意
第一個(gè)階段為圖像預(yù)處理階段。 在獲取輸入的灰度圖像后,本文會(huì)進(jìn)行如下3 個(gè)子操作。 第一個(gè)操作為縮小圖像,該操作的目的在于縮小圖像尺寸,以加快算法的運(yùn)行速度,將原始圖像進(jìn)行縮小操作,長(zhǎng)寬均縮小為原來的一半;第二個(gè)操作為獲取方形圖像,由于輸入圖像的長(zhǎng)寬比不同,為了方便旋轉(zhuǎn)圖像(防止有效圖像區(qū)域被裁剪),需要將圖像放置在旋轉(zhuǎn)中心,獲取一個(gè)方形的圖像;第三個(gè)操作為Canny 邊緣檢測(cè),在該操作中,選擇了2 個(gè)閾值連接邊緣,算法中選擇的低閾值和高閾值分別為40 和140;另外在邊緣檢測(cè)前,首先使用了3×3 的均值模糊。
第二個(gè)階段為邊緣對(duì)稱性檢測(cè)階段。 該階段包括7個(gè)子操作。 第1 個(gè)操作為獲取某個(gè)角度下的邊緣圖。 由于容器在圖像中的朝向可以是0°~359°中的任意角度,根據(jù)對(duì)稱性,只需要在0°~179°共180 個(gè)角度下選取旋轉(zhuǎn)圖像。 第2 個(gè)操作為對(duì)稱性值計(jì)算。 本算法是基于掃描線的對(duì)稱性檢測(cè)方法,需要對(duì)掃描線上的點(diǎn)計(jì)算對(duì)稱性值及對(duì)稱窗口,計(jì)算方法依據(jù)圖4 和式(1)進(jìn)行。 對(duì)于計(jì)算出來的對(duì)稱性值,依據(jù)在配置文件中設(shè)定的閾值(默認(rèn)為10),如果對(duì)稱性值小于該閾值就將點(diǎn)處的對(duì)稱性值設(shè)置為0。 第3 個(gè)操作為檢測(cè)候選容器區(qū)域。 根據(jù)配置文件的設(shè)置,如果縱向連續(xù)5 個(gè)(默認(rèn)為5,可以在配置文件中更改)及以上掃描線上點(diǎn)的對(duì)稱性值均大于0,而且對(duì)稱窗口的最大值與最小值的差值在一定的閾值內(nèi)(默認(rèn)為3)。 第4 個(gè)操作為基于縱向中心線的揀選規(guī)則。 如果候選容器區(qū)域縱向中心線穿過的邊緣數(shù)過多(默認(rèn)為1 個(gè))則認(rèn)為該區(qū)域是屬于一個(gè)雜亂的區(qū)域,將其剔除。 第5 個(gè)操作為基于縱向中心線拉伸候選容器區(qū)域。 由于遮擋或者容器本身邊緣的對(duì)稱窗口的寬度并不一致,因此檢測(cè)到的區(qū)域可能只是容器的一部分區(qū)域,需要對(duì)該區(qū)域進(jìn)行縱向拉伸,拉伸的方式為:沿著該區(qū)域的縱向中心線分別向瓶頂和瓶底兩個(gè)方向進(jìn)行拉伸,遇到邊緣點(diǎn)即停止。 第6個(gè)操作為基于瓶頂或者瓶底橫向邊緣的揀選規(guī)則。 觀察到的容器區(qū)域基本是上下兩端橫向封閉的,容器頂部和底部一定寬度(默認(rèn)為8×2)的邊緣間斷點(diǎn)數(shù)超過一定的閾值(默認(rèn)為4)則認(rèn)為該區(qū)域并不是一個(gè)容器區(qū)域,將其剔除。 第7 個(gè)操作為基于高寬比的揀選規(guī)則。 此階段的基于高寬比的揀選規(guī)則比較簡(jiǎn)單,剔除高寬比大于高閾值(默認(rèn)為4)和小于低閾值(默認(rèn)為1)的候選容器區(qū)域。
第三階段為后處理階段。 該階段包括7 個(gè)子操作。第1 個(gè)操作為獲取各個(gè)角度旋轉(zhuǎn)圖像上檢測(cè)到的容器區(qū)域。 該模塊綜合各個(gè)角度下檢測(cè)到的候選容器區(qū)域,對(duì)各個(gè)角度下檢測(cè)到的矩形表示框進(jìn)行坐標(biāo)變換,以綜合顯示在初始角度的灰度圖像坐標(biāo)下。 第2 個(gè)操作為基于容器中心坐標(biāo)及容器寬度的揀選規(guī)則。 同一個(gè)容器區(qū)域可能會(huì)存在多個(gè)矩形標(biāo)識(shí)框,因此該模塊根據(jù)矩形框中心的坐標(biāo)位置和矩形框的寬度來對(duì)候選容器區(qū)域進(jìn)行揀選。 規(guī)則為比較兩個(gè)矩形框的中心距離和矩形框?qū)挾炔钪?,如果中心距離小于閾值(默認(rèn)為10)并且寬度差值也小于閾值(默認(rèn)為20),則保留這兩個(gè)矩形框中寬度較小的那個(gè)矩形框。 第3 個(gè)操作為基于重疊區(qū)域的揀選規(guī)則。 從示例圖像中可以看出,仍然會(huì)有很多相互重疊的矩形標(biāo)識(shí)框,需要基于重疊區(qū)域?qū)匦慰蜻M(jìn)行進(jìn)一步揀選。 第4 個(gè)操作為基于中心線灰度均值的揀選規(guī)則。 該規(guī)則基于區(qū)域內(nèi)的灰度值對(duì)矩形標(biāo)識(shí)進(jìn)行進(jìn)一步揀選。 考慮矩形標(biāo)識(shí)框中的縱向中心線的灰度均值,如果灰度均值大于閾值(默認(rèn)為185),則剔除該區(qū)域。 第5 個(gè)操作為基于容器位置的揀選規(guī)則。 由于圖像邊界的原因,如果容器區(qū)域超過了有效的圖像區(qū)域,可剔除該區(qū)域。 第6 個(gè)操作為計(jì)算容器在原始圖像上的坐標(biāo)。 需要將縮小圖像上檢測(cè)到的容器區(qū)域的坐標(biāo)變換到原始圖像的坐標(biāo)系下。 第7 個(gè)操作為基于區(qū)域大小和不同容器寬度的高寬比的揀選規(guī)則。該模塊對(duì)于最終檢測(cè)到的容器區(qū)域進(jìn)行進(jìn)一步揀選。
首先考慮最簡(jiǎn)單的情形,將液體容器放置于托盤這一簡(jiǎn)單背景上進(jìn)行了檢測(cè)實(shí)驗(yàn),其檢測(cè)結(jié)果如圖6 所示。
圖6 托盤上容器檢測(cè)結(jié)果
從圖6 可以看出,當(dāng)液體容器放置在托盤上時(shí),本文提出的容器算法都能對(duì)其進(jìn)行有效的定位。
為了模擬實(shí)際過機(jī)場(chǎng)景,本文針對(duì)放置于行李包裹中的液體容器進(jìn)行檢測(cè)實(shí)驗(yàn)。 檢測(cè)結(jié)果如圖7 所示。
圖7 包裹中的容器檢測(cè)結(jié)果
從圖7 可以看出,當(dāng)液體容器放置于盛放有復(fù)雜日常物品的行李包裹中時(shí),本文提出的容器算法都能對(duì)其進(jìn)行有效的定位,并且能夠有效標(biāo)記液體容器的主方向。
本文圍繞各類安檢場(chǎng)景對(duì)液體容器的自動(dòng)查驗(yàn)的實(shí)際需求,基于普通容器存在軸對(duì)稱性這一重要特點(diǎn),提出一種從X 光安檢圖像中自動(dòng)檢測(cè)液體容器的檢測(cè)方法。該方法能有效地對(duì)X 光圖像中的液體容器進(jìn)行檢測(cè)定位,從而提高了X 光安檢機(jī)安檢人員的查驗(yàn)效率。 然而,本文提出的方法還存在一定的局限性。 第一,該方法還只能針對(duì)塑料液體容器開展檢測(cè),因此在容器種類的覆蓋方面還有待提高;第二,本文僅針對(duì)隨身攜帶行李包裹安全檢查場(chǎng)景進(jìn)行了實(shí)驗(yàn),因此還需針對(duì)貨物安檢等更加復(fù)雜的場(chǎng)景開展進(jìn)一步的適配工作。