何 師,于 強
(1.中國科學院國家空間科學中心,北京 100192;2.中國科學院大學 計算機科學與技術學院,北京 101408)
隨著機器視覺,工業自動化的快速發展,工業4.0[1]的概念已經被提上日程。傳統很多需要人工來手動操作的工作,漸漸的被機器所替代。神經網絡更是讓計算機視覺有了更廣闊的應用場景,它將基于人類視覺的分類[2]、檢測[3]、分割[4]等任務實現自動化。目標檢測技術已經廣泛應用于人臉識別[5]、自動駕駛[6]、工業生產[7]等領域。
在圖書的生產過程中,圖書的質量保證是重中之重。要保證任何一本圖書在出廠時都不能夠有任何的裝訂錯誤。
裝訂過程中出現的錯誤形式如下圖所示,從上至下依次為正確樣本、順序出錯樣本、章節重復樣本、章節缺失樣本。

圖1 四種樣本圖書
目前,該項工作主要是由人工來完成,這造成了正版圖書較高的圖書成本,并且很難完全保證圖書質量。利用自動化方式來完成圖書質量的檢測,是圖書生產過程中必然的趨勢。在圖書裝訂檢測領域,杜萬全先后提出過使用在線稱重[8]、計算機視覺[9]兩種方式,但都只是一種探索和想象,并未真正落地實現。在基于深度學習的目標檢測方面,YOLOv3具有速度快、精度高的特征優勢,并且已經在很多方面應用。本文研究借助于YOLOv3模型,對圖書裝訂進行識別檢測,并使用Qt完成軟件系統的研發。
圖書裝訂檢測系統由圖像采集模塊、圖書智能識別模塊和后處理模塊三個模塊組成。圖像采集模塊包括工業CCD相機——大華相機、平行光源、觸發器。后處理模塊包過氣缸、氣泵、氣閥和一個裝訂有誤圖書的回收裝置。智能識別模塊主要是通過深度學習算法對圖書的裝訂進行識別和檢測。

圖2 系統組成圖(位置檢測)
整個流程如圖3所示。傳送帶上的圖書到達觸發器位置之后會觸發相機進行拍照,拍得的照片會通過網線(RJ45)傳送給電腦,軟件首先會對拍到的圖像進行識別,識別分為兩次,第一次識別圖書在整個圖片中的位置,按照識別到的圖書位置對整個圖像進行裁剪。裁剪完之后會再次進行識別,此次識別是識別書脊側的標志塊,識別完之后提取識別到的標志塊的中點坐標,使用最小二乘法進行線性擬合。通過綜合判斷識別到的標志塊的數量、擬合得到的參數和相關系數,最終得到圖書的裝訂是否有誤。若圖書裝訂結果正確,則后處理裝置不觸發;若裝訂有誤,則觸發后處理裝置,彈出回收裝置將圖書截獲。

圖3 系統流程圖
基于深度學習的目標檢測方法主要分為兩類[10]:一種是基于候選區域的兩階段(Two Stage)目標檢測如FastRCNN[11]、Faster R-CNN[12]等,另一種是基于回歸的單階段(One Stage)目標檢測算法如YOLO[13]和SSD[14]。兩種方法各有利弊,綜合對比各種方式之后選擇YOLOv3作為本系統的檢測模型。
YOLOv3模型無論是精度還是速度都要優于其他模型。使用Geoforce 2080Ti OpenCV FP16,Network size=416,fps可以達到159[15]。這個速度滿足了每秒鐘檢測一本樣本圖書所需要的時間要求。
整個系統的兩次識別都是通過YOLOv3模型識別的。在對本地圖書樣本進行標記之后,訓練Github上提供的預訓練的模型[15],將得到的模型用于后期的識別工作中。
為提高識別精度,本文中主要通過修改cfg 文件中的參數實現,例如:使用不同的初始網絡大小、設置random=1、訓練模型時設置layer=23,stride=4。
訓練樣本使用的不同光照強度下的不同種類圖書、同一種圖書不同樣本,共20種圖書1000余個樣本。此外,我們在訓練模型時曾使用在同一光照強度下不同的樣本進行訓練,但最終得到的結果并不能識別到任何的標志,并且mAP始終為0,由此我們推測,YOLOv3對圖像的亮度敏感。
圖書裝訂結果是根據線性擬合的參數決定的,線性擬合的方式是采用最小二乘法。
設x和y之間的函數關系為y=ax+b,此式中有兩個待定參數,a為斜率,b為截距。對于所得到的N組數據,xi認為是準確的,所有的誤差只和yi有關。用最小二乘法估計參數時,要求觀測值yi的偏差的加權平方和最小,即:

對a,b分別求一階偏導數:

對a,b再分別求二階偏導數:

令一階偏導數為0:

解得:

相關系數r:

軟件采用Qt5.12進行開發。主要分為以下幾個部分:相機控制模塊、外部設備控制模塊、目標檢測與判斷模塊、前端界面模塊。

圖4 系統模塊組成

圖5 主界面功能
相機控制模塊:相機為大華工業相機,型號為A3600MG18,分辨率為3072*2048,單通道圖像。此模塊主要將大華相機提供的接口集成在軟件中,實現的兩個功能是控制相機的開關和拉流方式。通過點擊軟件界面上的“打開相機”、“關閉相機”兩個按鈕,可以實現控制相機的打開和關閉。點擊界面上的“開始識別”、“停止識別”按鈕,將會改變相機的拉流方式從持續拉流和外部觸發之間切換,同時這兩個按鈕也控制著軟件的識別功能的開始和停止。
目標檢測與判斷模塊:此部分的代碼主要是實現兩個接口函數YOLO和線性擬合。YOLO函數將相機的數據流讀進來,然后進行識別和判斷,同時返回出識別到的所有的小黑塊的位置信息。線性擬合函數會將上一步YOLO返回的位置信息作為輸入,通過最小二乘法擬合直線并將得到的參數和相關系數與給定的值和閾值進行比較,得到最終結果并返回。
外部設備控制模塊:此模塊有兩個功能,一個是與光敏傳感器的通信來控制相機的拍照,另一個是當識別到錯誤圖書的時候驅動外部設備彈出回收裝置并收回。
最后一個模塊是前端界面模塊。前端界面采用的Qt庫進行開發,集成了前三個模塊的內容。界面上包括顯示區、控制區和菜單欄。顯示區顯示相機實時畫面、識別的圖像結果和文字結果??刂茀^設置了四個按鈕,對應了相機控制模塊和目標檢測與判斷模塊。除此之外,軟件還將模型訓練集成到其中,包括樣本的采集(拍照)、樣本標注、模型訓練。菜單欄中單張拍照實現了相機的軟觸發功能,點擊按鈕相機就會拍照一張。樣本標記是將LabelImg這個軟件集成到其中,點擊按鈕會會將LabelImg這個軟件彈出。參數調整會彈窗顯示本次圖書樣本的參數信息和閾值信息,并且可以根據使用情況對此進行調整。
實驗中檢測所用的計算機的配置如表1所示。

表1 測試計算機配置

圖6 識別流程圖

圖7 軟件界面
對9種圖書4096本樣本圖書進行裝訂檢測。系統檢測圖書裝訂準確率ACC為正確檢測的圖書樣本數占總樣本圖書的比值,如式子。

其中,TP表示實際正確且檢測為正確的樣本個數,FN表示實際正確但是檢測為錯誤樣本的個數,FP表示實際裝訂有誤但是檢測為正確的樣本個數,TN表示實際錯誤且檢測為有誤的樣本個數。實驗結果如表2所示。

表2 實驗結果
由于生產過程中負樣本數量較少,在實驗過程中手動制造了缺失、重復、亂序三種錯誤在不同厚度的6種圖書(悲慘世界、從0到 1、背影、新華字典、古漢語常用字字典、成語詞典)共36個負樣本,均能將錯誤識別出來。
從實驗結果可以看出,每種樣本的檢測準確率η≥95%,總體檢測的準確率β≥97%。另一方面,平均每個樣本的檢測時間為100ms,滿足生產線所要求的檢測速度。
本系統開發完成之后在通州皇家印刷廠的生產線進行線上試驗,通過連續一周對樣本的檢測,ACC準確率達到96%,每個樣本的檢測時間小于100ms,滿足線上生產需求。
針對圖書裝訂檢測的方法,本文中采用的是使用線性擬合的方式對識別到的結果進行判斷,除此之外還可以通過對識別到的結果進行仿射變換再通過模板匹配的方式進行判斷。
總體來說,此套圖書檢測系統,具有十分廣闊的應用前景,基本可以滿足現在國內所有的圖書印刷行業的檢測問題。并且隨著工業智能化的不斷推進,機器視覺一定會被廣泛的引用到圖書生產過程檢測中。