沈陽工業(yè)大學信息科學與工程學院 苑瑋琦 魏智鵬 李德健
?
基于多級多線程和緩存的雪糕棒質(zhì)量在線檢測系統(tǒng)
沈陽工業(yè)大學信息科學與工程學院 苑瑋琦 魏智鵬 李德健
【摘要】本文針對多攝像機在線視覺檢測系統(tǒng)普遍存在的檢測速度慢、檢測結(jié)果不可靠問題,提出了一種基于多級多線程和緩存的視覺在線檢測方法。本方法使用一個控制線程動態(tài)開辟多個處理線程,并將處理結(jié)果按拍照時刻的先后順序存儲在對應的結(jié)果緩存器中,當多個攝像頭都檢測完畢后再將多個檢測結(jié)果合并輸出。多級多線程和緩存的結(jié)合使用,不僅提高了在線檢測系統(tǒng)多線程并發(fā)處理的效率,而且提高了系統(tǒng)的抗干擾能力。本課題研究成果可為常規(guī)的在線檢測系統(tǒng)提供一種設計方案和實現(xiàn)方法參考,具有一定的理論和應用價值。
【關(guān)鍵詞】多級多線程;結(jié)果緩存器;在線檢測
目前,國內(nèi)外大部分雪糕棒廠商采用人工檢測方法區(qū)分雪糕棒的質(zhì)量等級,這種方式不僅效率十分低下,而且成本很高。針對這個難題,一些學者對雪糕棒質(zhì)量在線檢測做出了探索。文獻[1]主要在硬件層面描述了雪糕棒質(zhì)量在線檢測系統(tǒng)設計與實現(xiàn),文獻[2]則在算法層面對雪糕棒的多種缺陷提出了檢測方法。經(jīng)由文獻研究,基于多攝像機的在線檢測系統(tǒng),通常采用了多線程的軟件設計方法。多線程的方式適用于時間要求較為寬松、負載的最大時間估計量小于規(guī)定時間且無外界干擾的場合。但是對于時間要求嚴格,負載估計量有可能超出規(guī)定范圍并且存在軟件干擾的場合,僅使用多線程已經(jīng)無法保障在線檢測速度和檢測結(jié)果的可靠性。
本文針對前面學者研究的雪糕棒質(zhì)量在線檢測系統(tǒng)存在的在線檢測速度慢、檢測結(jié)果不可靠的問題,從軟件架構(gòu)設計方面提出了基于多級多線程和緩存的在線檢測系統(tǒng),有效地解決了在線檢測系統(tǒng)的檢測效率和干擾問題。文中所涉及的軟件設計架構(gòu)可以為常規(guī)的多攝像機在線檢測系統(tǒng)的應用提供一套有效的設計方案。本設計以雪糕棒質(zhì)量在線檢測為應用實例講述詳細的設計方法,具有較強的實際應用價值。
2.1系統(tǒng)整體工作原理
本文所設計的雪糕棒質(zhì)量在線檢測系統(tǒng)模型如圖1所示。雪糕棒質(zhì)量檢測系統(tǒng)由機械平臺和視覺檢測系統(tǒng)兩部分構(gòu)成。其中機械平臺由動力控制模塊、流水線和分揀模塊組成。視覺檢測系統(tǒng)由4臺高速攝像機、一個光電傳感器和一臺計算機組成。雪糕棒放入到儲箱后,會自動掉入到鏈條凹槽內(nèi),鏈條向上運動把凹槽內(nèi)的雪糕棒從儲箱帶到流水線。儲槽上方的掃棒裝置會把搭載在鏈條凹槽上多余的雪糕棒掃回到儲箱中。光電傳感器安裝在鏈條側(cè)面,流水線運動時,每一個凹槽經(jīng)過傳感器便會產(chǎn)生一個脈沖信號,該信號用來觸發(fā)系統(tǒng)中的4個攝像機拍照。雪糕棒運動依次經(jīng)過左側(cè)、右側(cè)、正面和反面檢測攝像機。正面和反面之間由兩個鏈輪相互配合的結(jié)構(gòu)完成翻轉(zhuǎn)動作。最后雪糕棒會經(jīng)過由單片機模塊和氣泵組成的分揀系統(tǒng),分揀出J(優(yōu))、U(次優(yōu))、B(良)、C(中)、D(差)5個等級。
圖1 雪糕棒質(zhì)量在線檢測系統(tǒng)模型圖
2.2多級多線程架構(gòu)設計
在實際應用中,多個線程的運算量存在差異。此時,多線程的調(diào)度[3]存在一個最優(yōu)調(diào)度[4],這種最優(yōu)調(diào)度可以進一步提高多線程的效率。例如雪糕棒正面和反面面積較大,處理時間比側(cè)面要長很多。當多個線程同時開啟時,運算速度快的線程將會繼續(xù)查詢攝像機的數(shù)據(jù)從而消耗了CPU的時間片,運算慢的線程始終只獲得系統(tǒng)平均分配的固定時間片。針對多線程存在的缺點,本文設計了一種多級多線程[5]的結(jié)構(gòu),進一步提高多線程的工作效率。雪糕棒在線檢測系統(tǒng)中設計的多級多線程結(jié)構(gòu)圖如圖2所示。
圖2 三級線程關(guān)系圖
多級多線程的設計使得系統(tǒng)對時間片的分配適應每個線程的運算復雜度。運算量小的線程運算結(jié)束后系統(tǒng)會自動把CPU資源分配給運算量大的線程。多級多線程和多線程的運行時間比較如圖3所示,P和Q(P<Q)分別為多級多線程和多線程架構(gòu)下的運行時間。從圖中可知多級多線程的應用使得系統(tǒng)可以自適應多個線程運算量的差異,縮短了單次檢測的運算周期。
圖3 多級多線程和多線程運行時間比較
多級多線程使得消耗時間大的線程越到后期,可以獲得的CPU資源越多。多線程方式下和多級多線程方式下運行時的CPU占用率曲線圖如圖4所示。從圖中可以看出多線程下的CPU占用率比較平穩(wěn),但是總的運行時間較長。而在多級多線程下,CPU的占用率會隨著其他線程的關(guān)閉而增加,使得總的運行時間縮短。
(a)多線程下的CPU占用率
圖4 速度曲線
2.3數(shù)據(jù)緩存機制設計
在線檢測系統(tǒng)在運行過程中存在一些干擾,這些干擾會導致某次檢測運算的時間超出檢測時間限制。隨機抽取1000根雪糕棒,其檢測時間曲線如圖5所示。從圖5中可以看出,運行過程中偶爾會有一些較大的時間干擾脈沖。
圖5 隨機抽取1000根雪糕棒檢測時間曲線
分析產(chǎn)生時間干擾的原因有以下幾種:
(1)操作系統(tǒng)本身對CPU資源的競爭,因為操作系統(tǒng)線程的優(yōu)先級始終高于應用程序。
(2)其他進程對CPU資源搶占。在線檢測程序運行過程中用戶打開了其他應用程序造成。
(3)檢測目標的不確定性。例如某根雪糕棒的表面較為復雜時,算法的時間復雜度會隨之增大,從而導致處理時間變長。
本文充分利用計算機緩存機制[6]解決在線檢測系統(tǒng)的干擾問題。當圖像采集完成時,系統(tǒng)就為當前的雪糕棒檢測分配了結(jié)果緩存器。處理線程運算完成后便把檢測結(jié)果存儲在事先分配的結(jié)果緩存器中。只有等到當前雪糕棒運動到輸出系統(tǒng)時,才會使用之前的檢測結(jié)果。設雪糕棒從圖像采集系統(tǒng)到分揀輸出系統(tǒng)之間的間隔為n根雪糕棒。n只需要滿足如下數(shù)學關(guān)系即可:
式中i表示第i根雪糕棒,ti表示第i根雪糕棒的檢測時間,T表示每根雪糕棒的規(guī)定檢測時間。由上式可知,當n很小的時候,對ti的要求就高,例如當n=1時,有ti<T,緩沖時間為T-ta;當n=2時,有, 緩沖時間為2(T-ta); 當n=3時,有緩沖時間為。由此可知n越大緩沖時間越多,但是n值的增大會造成機械空間和計算機存儲空間的浪費越多。在緩沖時間內(nèi),檢測時間短的雪糕棒把時間余量騰讓給檢測時間長的雪糕棒使用,如圖6所示。緩存實現(xiàn)了各次耗時不等檢測的時間互補,合理利用了各次檢測的時間余量。從而使得在線檢測系統(tǒng)具備了抗干擾能力。
圖6 使用緩存與未使用緩存檢測時間對比
(1)多級多線程性能測試:依次從產(chǎn)品中隨機抽取1000根雪糕,分別使用多線程和多級多線程架構(gòu)進行檢測,檢測算法完全一致。測試過程中,將雪糕棒的運行速度調(diào)至1根/S,計時從攝像機采集完成時刻開始,到處理完成時刻停止計時。從多次抽樣測試中,隨機抽取五組數(shù)據(jù)計算其平均檢測時間,以此來驗證設計的有效性,隨機抽取實驗結(jié)果制作表格如表1所示。
表1 多線程與多級多線程平均檢測時間結(jié)果比較
從以上數(shù)據(jù)可以看出多級多線程的使用使得平均檢測時間縮短了5.38 ms,由此算得計算機CPU的使用效率提高了9.2%。
(2)緩存性能測試:從產(chǎn)品中隨機抽出一部分雪糕棒,分別用未使用緩存和使用緩存的程序進行對比測試。測試過程中雪糕棒的運行速度從1根/S逐步提升至18根/S,通過對結(jié)果的觀察統(tǒng)計得到實驗數(shù)據(jù)如表2所示。
表2 未使用緩存和使用緩存實驗結(jié)果對比
從實驗結(jié)果看出,當雪糕棒的運行速度在11根/S以內(nèi)時,未使用緩存和使用緩存的程序運行都沒有漏檢;當速度超過11根/S時未使用緩存的測試結(jié)果開始出現(xiàn)漏檢現(xiàn)象,而使用緩存的程序還是沒有漏檢;當檢測速度在16根/S以內(nèi)時,使用緩存的程序都沒有漏檢。超過16根/S時,使用緩存的程序也開始出現(xiàn)漏檢。使用緩存后雪糕棒的檢測速度從11根/S提高到了16根/S,檢測速度提高了45.5%。
經(jīng)過對本文設計的基于多級多線程和緩存的雪糕棒質(zhì)量在線檢測系統(tǒng)樣機的現(xiàn)場測試,可以得出以下結(jié)論:
(1)多級多線程的設計架構(gòu)可以更加合理地分配CPU資源的使用,使得耗時不等的線程間進行時間均攤,單次檢測的整體運算時間縮短了9.2%。
(2)所提出的多級多線程和緩存結(jié)合的設計方法,充分利用了空間換時間思想,避免了因單次檢測時間超長而可能引起的結(jié)果混亂。在緩沖時間內(nèi),使得多次耗時不等的檢測時間均攤,最終使得檢測速度提高了45%。
參考文獻
[1]苑瑋琦,李德健.雪糕棒輪廓質(zhì)量視覺在線檢測方法[J].計算機應用研究,2015,11(33).
[2]苑瑋琦,成麗佳.雪糕棒質(zhì)量在線視覺檢測系統(tǒng)設計與實現(xiàn)[J].計算機測量與控制,2015,23(8):2679-2682.
[3]馬超,尹杰,江凌波.基于長并行距離優(yōu)先的確定性多線程調(diào)度[J].小型微型計算機系統(tǒng),2012,10(10):2177-2181.
[4]唐夷簡.芯片多線程處理器線程調(diào)度的性能測試與優(yōu)化研究[D].國防科學技術(shù)大學,2009.
[5]孟小鋒,陳曉華,曹紅蘋.基于多級多線程的數(shù)據(jù)庫并發(fā)控制測試系統(tǒng)[J].電腦知識與技術(shù)(學術(shù)交流),2007,09:728-730.
[6]吳繼棟.淺論計算機緩存的工作機制[J].科技信息(科學教研),2007,33:411+422.
作者簡介:
苑瑋琦(1960—),遼寧沈陽人,博士,教授,主要研究方向:視覺檢測技術(shù)、生物特征識別等。
魏智鵬【通訊作者】(1991—),福建龍巖人,碩士,現(xiàn)就讀于沈陽工業(yè)大學信息科學與工程學院,主要研究方向:機器視覺。
李德健(1990—),遼寧錦州人,博士,現(xiàn)就讀于沈陽工業(yè)大學信息科學與工程學院。