任國棟, 屠佳佳, 李 楊, 邱子安, 史偉民
(浙江理工大學(xué) 浙江省現(xiàn)代紡織裝備技術(shù)重點實驗室, 浙江 杭州 310018)
隨著紡織技術(shù)的發(fā)展,針織緯編生產(chǎn)線中的紗架上紗筒替換、紗筒間紗線打結(jié)、落布等工序都可以通過自動化程序完成[1]。其中紗筒間紗線打結(jié)工序利用導(dǎo)紗管吸取紗筒上頭尾端紗線,并將吸取的紗線送至打結(jié)機中完成打結(jié)[2]。此過程中打結(jié)成功的前提是導(dǎo)紗管中吸取到所需的紗線,而當(dāng)導(dǎo)紗管內(nèi)無紗線或單根紗線時,紗線打結(jié)工序失效,影響紡織品生產(chǎn)效率[3-4],因此需要對導(dǎo)紗管中的紗線數(shù)量以及種類進行準(zhǔn)確識別,以保證后續(xù)工序順利進行。
目前,紗線狀態(tài)識別平臺有接觸式和與非接觸式[5-6]。接觸式主要以檢測紗線來判斷紗線狀態(tài),該方法在檢測過程中紗線與檢測器件接觸,造成紗線產(chǎn)生磨損甚至斷裂,影響產(chǎn)品質(zhì)量。相比之下非接觸式檢測平臺顯得尤為重要。非接觸式的光電檢測在面對極板間雜質(zhì)干擾時會出現(xiàn)誤判的現(xiàn)象。也有學(xué)者采用圖像處理的方式進行紗線識別方面的研究,李東潔等[7]利用圖像閾值分割的算法進行紗線疵點檢測。張緩緩等[8]提出一種基于亞像素邊緣檢測的紗線條干均勻度檢測方法,來精確評價紗線的條干均勻性。馬珂等[9]采用貝葉斯閾值進行像素分割,再對毛羽進行細化并統(tǒng)計紗線毛羽各項指標(biāo)。
以上研究主要針對單根紗線特征進行分析,面對目前市場上紗線種類繁多且導(dǎo)紗管內(nèi)紗線易出現(xiàn)重疊、交叉以及紗線會在豎直方向產(chǎn)生振動等現(xiàn)象,傳統(tǒng)圖像處理方法難以有效地進行管道中紗線數(shù)量的檢測。本文采用深度學(xué)習(xí)中圖像分類的方法識別導(dǎo)紗管內(nèi)不同種類紗線的數(shù)量。同時,為加快訓(xùn)練速度與提高小型網(wǎng)絡(luò)的準(zhǔn)確率,采用遷移學(xué)習(xí)與知識蒸餾的組合方式進行訓(xùn)練,最終對小型網(wǎng)絡(luò)進行移動端部署應(yīng)用,且為實現(xiàn)上述方法設(shè)計了一個紗線檢測裝置。實驗結(jié)果表明,本文檢測方法可用于實際生產(chǎn),且可類比應(yīng)用于圓緯機上的斷紗檢測等。
紗線檢測裝置固定在打結(jié)機上,用于打結(jié)機在工作過程中的紗線實時檢測。圖1中紗架上的紗筒尾端會裸露出不規(guī)則的線頭。打結(jié)機首先吸取即將用完的紗筒尾線,再去吸取滿筒頭線,最后執(zhí)行打結(jié)動作。
紗線檢測裝置由上位機控制。首先,打結(jié)機器移動到頭線處,上位機發(fā)送信號吸取頭線后進行導(dǎo)紗管內(nèi)紗線檢測,當(dāng)檢測結(jié)果顯示為單根紗時,立即返回信號表示單根紗吸入完畢。當(dāng)打結(jié)機器移動到尾線處時,再次發(fā)送信號進行二次檢測,此時判斷是否為雙根紗。若達到指定的要求,則打結(jié)機會執(zhí)行打結(jié)動作。在檢測過程中一旦檢測不到指定紗線數(shù)目,將在當(dāng)前步驟重新吸取判斷。紗線檢測主要流程如圖2所示。
圖2 紗線檢測流程示意圖Fig. 2 Schematic diagram of yarn detection process
依據(jù)上述檢測流程以及采用的紗線檢測方法,設(shè)計了如圖3所示的紗線檢測裝置。整個裝置體積小,成本低,且易于安裝與拆卸,主要分為圖像檢測模塊、圖像處理模塊以及圖像輸出模塊。具體功能模塊圖見圖4。
圖3 紗線檢測裝置Fig. 3 Visualization of yarn sample set
圖4 紗線檢測板卡功能模塊圖Fig. 4 Function module diagram of yarn detection board
本文所使用數(shù)據(jù)集是由自搭建平臺采集獲得,考慮到實際檢測需要,設(shè)置分類標(biāo)簽為無紗、黑色普通單雙根、白色毛羽單雙根、白色竹節(jié)單雙根,共7個類別。紗線樣本形貌如圖5所示。
圖5 紗線樣本集可視化Fig. 5 Visualization of yarn sample set.(a)Common single; (b)Common double; (c) Hairiness single; (d)Hairiness double; (e)Bamboo single; (f) Bamboo double
此外,本文將采集到的3 500張圖片按照8∶2的比例分為訓(xùn)練集2 800張和測試集700張,再從訓(xùn)練集中劃出560張做驗證集。具體的劃分類別信息:7種類別紗線樣本的訓(xùn)練集數(shù)量均為320張,驗證集數(shù)量均為80張,測試集數(shù)量均為100張,樣本圖片格式均為.JPG。
鑒于本文訓(xùn)練集樣本較少,會導(dǎo)致網(wǎng)絡(luò)訓(xùn)練過程中可能會出現(xiàn)過擬合現(xiàn)象。為此在輸入網(wǎng)絡(luò)訓(xùn)練前加入圖像增強的預(yù)處理模塊。具體方法為隨機裁剪、水平與垂直翻轉(zhuǎn)、以及亮度與對比度變化,由于構(gòu)建分類模型的輸入圖像分辨率尺寸為224像素×224像素,因此須在預(yù)處理模塊中將原始數(shù)據(jù)集的尺寸1 920像素×1 080像素進行指定縮放。經(jīng)過數(shù)據(jù)增強后的紗線圖像變化如圖6所示,圖中數(shù)字表示圖像的像素大小。
圖6 數(shù)據(jù)增強變化Fig. 6 Data enhancement changes
就常見圖像分類網(wǎng)絡(luò)而言,其自身的模型參數(shù)以及正向推理所需要的硬件資源都是巨大的,這使得在大部分嵌入式端難以有效運行。鑒于本文使用的是國產(chǎn)芯片V831,其內(nèi)存大小64 MB,這使得在搭建網(wǎng)絡(luò)時,設(shè)置網(wǎng)絡(luò)的寬度以及層數(shù)受到了限制。為此需搭建一個小型輕量化網(wǎng)絡(luò)。
從目前經(jīng)典的輕量化分類網(wǎng)絡(luò)中,存在一種深度卷積結(jié)構(gòu),可以認為是分組卷積的一種特例。是將每個卷積核的維度降為1,然后其卷積的核個數(shù)與輸入通道數(shù)相等。將標(biāo)準(zhǔn)卷積核替換成深度卷積核可以大大的降低參數(shù)量,間接減少模型正向推理的運算量。深度卷積可以縮減網(wǎng)絡(luò)模型的參數(shù)量與運算量,但深度卷積通過將每個卷積核去各自卷積相對應(yīng)的輸入通道,會導(dǎo)致輸入通道之間信息缺乏交流,間接影響模型的泛化性能。消除這種缺乏通道之間交流目前有2種方法,一種在深度卷積后加1×1的卷積核進行通道融合;另外一種在分組卷積前使用channel shuffle[10]模塊加強通道間的信息交流。通道融合模塊參數(shù)量與運算量相較于點卷積較小,但考慮后期在嵌入式終端平臺部署時,其加速庫一般不兼容通道融合模塊算子。為此本文采取點卷積形式,搭配深度卷積組合形成的深度可分離卷積[11]結(jié)構(gòu)。
將標(biāo)準(zhǔn)卷積和深度可分離卷積在參數(shù)量(不考慮偏置量bias)與運算量(不考慮正則化、非線性激活等計算情況)上進行比較。標(biāo)準(zhǔn)卷積和深度可分離卷積的參數(shù)量與運算量比值見下:
式中:CI為輸入通道數(shù);CO為輸出通道數(shù);DK×DK為卷積核尺寸;DF×DF為輸出特征圖尺寸。
公式中的分子部分為深度卷積與點卷積參數(shù)量與運算量之和,分母為標(biāo)準(zhǔn)卷積的運算量與參數(shù)量。本文使用的卷積核的尺寸為3×3,深度可分離卷積比標(biāo)準(zhǔn)卷積的參數(shù)量與運算量縮小了1/9左右,將近縮小了1個量級。
搭建的輕量化學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖7所示,具體每層的卷積網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表1所示??煽闯龃司W(wǎng)絡(luò)是由每個基塊串級而成,其中基塊單元即是上述所提到的深度可分離卷積結(jié)構(gòu)。
表1 學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)Tab. 1 Student network structure
圖7 學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig. 7 Schematic diagram of student network structure
將上述自搭建的小型網(wǎng)絡(luò)進行組合訓(xùn)練與部署。其整體訓(xùn)練與部署流程如圖8所示。其主要分為以下3個部分:1)遷移學(xué)習(xí),加快教師網(wǎng)絡(luò)的訓(xùn)練速度與收斂;2)知識蒸餾,用來拉高學(xué)生模型的準(zhǔn)確率;3)模型部署,實際將在PC端訓(xùn)練好模型權(quán)重文件進行一系列格式轉(zhuǎn)換部署到嵌入式芯片上。
圖8 整體訓(xùn)練與部署流程圖Fig. 8 Overall training and deployment flow chart
本文PC端的軟件環(huán)境為Windows11(64)位操作系統(tǒng)下,采用Python3.8作為編程語言,深度學(xué)習(xí)框架Pytorch1.8GPU版,搭配Cuda11.2和Cudnn8.0加速包進行訓(xùn)練。硬件環(huán)境中CPU采用AMD Ryzen5 5 600 H,主頻3.30 GHz;GPU采用NvidiaGeForce RTX3050,4 GB顯存。針對教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)進行訓(xùn)練,涉及到通用的參數(shù)如表2所示。關(guān)于模型超參數(shù)設(shè)置是根據(jù)驗證集的結(jié)果來手動進行調(diào)整。最后將驗證集的準(zhǔn)確率與訓(xùn)練集的損失進行對比得出批大小為32、學(xué)習(xí)率為0.000 1最合適。限于篇幅原因,本文略去2個超參數(shù)的訓(xùn)練過程。
表2 實驗參數(shù)設(shè)置Tab. 2 Experimental parameter settings
本文移動端軟件環(huán)境為Sipeed科技提供的SDK工具包MaxiPy3以及在線量化平臺MaixHub,進行模型的量化部署與測試。硬件環(huán)境CPU采用全志V831,主頻1 000 MHz;內(nèi)存為64 MB,且CPU內(nèi)置0.2 TOPS算力的AI加速器NPU。
實際情況下在導(dǎo)紗管內(nèi)的紗線由于受到風(fēng)機吸力的作用,導(dǎo)紗管內(nèi)的紗線會被拉直且越靠近管口越貼緊管壁的上半部分。其狀態(tài)為軸向速度為零,豎直方向有些許振動。為此本文的實驗背景就是模擬紗線在導(dǎo)紗管內(nèi)的狀態(tài)來進行重復(fù)性實驗。
由于本文數(shù)據(jù)集為小樣本數(shù)據(jù)集,同時為加快網(wǎng)絡(luò)的訓(xùn)練時間以及網(wǎng)絡(luò)可以迅速收斂,采用遷移權(quán)重[12]的學(xué)習(xí)方法。將官方在ImageNet數(shù)據(jù)集上訓(xùn)練好的預(yù)訓(xùn)練模型權(quán)重遷移到本文數(shù)據(jù)集上需要訓(xùn)練的教師網(wǎng)絡(luò)。由于官方數(shù)據(jù)集與紗線原數(shù)據(jù)集特征相差較大,本文采取加載全部預(yù)訓(xùn)練權(quán)重對教師網(wǎng)絡(luò)ResNet34進行遷移學(xué)習(xí)。
訓(xùn)練結(jié)果如圖9所示。圖9(a)顯示使用遷移學(xué)習(xí)后的教師網(wǎng)絡(luò)在第1輪結(jié)束時,驗證集上的準(zhǔn)確率就達到了90%以上,且在第5輪以后曲線趨于穩(wěn)定。觀察圖9(b)發(fā)現(xiàn)使用遷移后的教師網(wǎng)絡(luò)訓(xùn)練損失初始值低、收斂有明顯更快,證明了遷移學(xué)習(xí)的有效性。
圖9 遷移學(xué)習(xí)下的驗證集準(zhǔn)確率以及訓(xùn)練損失Fig. 9 Accuracy rate (a) and training loss (b) of verification set under transfer learning
遷移學(xué)習(xí)是只能在同一種網(wǎng)絡(luò)結(jié)構(gòu)才能進行的權(quán)重遷移,這就要求2個網(wǎng)絡(luò)在結(jié)構(gòu)上必須相同,不然無法覆蓋權(quán)重。知識蒸餾可在不同網(wǎng)絡(luò)結(jié)構(gòu)之間進行遷移,但遷移的不是權(quán)重而是對于同一個訓(xùn)練集輸出的目標(biāo)值。本文設(shè)計的自搭建輕量級網(wǎng)絡(luò)無法進行遷移學(xué)習(xí),但可以使用知識蒸餾將網(wǎng)絡(luò)結(jié)構(gòu)不同的ResNet34教師網(wǎng)絡(luò)來提高自搭建網(wǎng)絡(luò)的準(zhǔn)確率。
針對學(xué)生網(wǎng)絡(luò)訓(xùn)練時,手動設(shè)置的超參數(shù)部分與訓(xùn)練教師網(wǎng)絡(luò)保持相同。在知識蒸餾[13]訓(xùn)練過程中,損失權(quán)重α以及知識蒸餾溫度T,需依據(jù)實驗結(jié)果進行手動設(shè)定。通常情況下蒸餾損失系數(shù)占比較大,且上述所提知識蒸餾溫度T的選擇與網(wǎng)絡(luò)模型大小密切相關(guān),網(wǎng)絡(luò)參數(shù)量較小時,對于比較低的溫度最好。因此將蒸餾溫度T和損失權(quán)重α設(shè)置為自變量,在驗證集上的準(zhǔn)確率設(shè)置為因變量進行對比實驗,實驗對象為自搭建的學(xué)生網(wǎng)絡(luò)與遷移學(xué)習(xí)后的教師網(wǎng)絡(luò)ResNet34。具體實驗結(jié)果如表3所示。
表3 參數(shù)T和α對Top-1驗證準(zhǔn)確率的影響Tab. 3 Influence of parameters T and α on top-1 accuracy
觀察表3發(fā)現(xiàn),損失權(quán)重α與蒸餾溫度T的設(shè)置對網(wǎng)絡(luò)的驗證準(zhǔn)確率并沒有什么規(guī)律可言,但相較于蒸餾前的學(xué)生網(wǎng)絡(luò)驗證準(zhǔn)確率為95.7%有所提升。觀察發(fā)現(xiàn)驗證準(zhǔn)確率最高為99.57%,且表3中對應(yīng)此準(zhǔn)確率的參數(shù)較多。最終將蒸餾溫度T設(shè)置為3,損失權(quán)重α設(shè)置為0.2。本文采取該組參數(shù)對學(xué)生網(wǎng)絡(luò)進行蒸餾訓(xùn)練,其訓(xùn)練結(jié)果如圖10所示。
圖10 知識蒸餾下的驗證準(zhǔn)確率與訓(xùn)練損失Fig. 10 Accuracy rate (a) and training loss (b) of validation set under knowledge distillation
觀察圖10(a)發(fā)現(xiàn)蒸餾后的學(xué)生網(wǎng)絡(luò)在第75輪訓(xùn)練后驗證集準(zhǔn)確率緊逼教師網(wǎng)絡(luò),且整體蒸餾后的網(wǎng)絡(luò)準(zhǔn)確率高于學(xué)生網(wǎng)絡(luò)。從圖10(b)看出訓(xùn)練損失曲線不斷收斂,在第10輪損失逼近教師網(wǎng)絡(luò),且蒸餾后訓(xùn)練損失較蒸餾前訓(xùn)練損失收斂明顯提前。實驗結(jié)果表明知識蒸餾的確是有效可行的。
模型空間復(fù)雜度可通過參數(shù)量反映。模型部署到邊緣計算平臺板卡上,除模型參數(shù)量外,模型推理速度同樣是衡量網(wǎng)絡(luò)模型一項重要指標(biāo)。通常使用Time類來測量模型推理時間,但GPU運行會存在預(yù)熱起步,因此此種做法顯得不太客觀。本文采取預(yù)熱加同步的方式對300 張圖片進行測試并取平均時間,此方法測量模型推理時間較為客觀合理。將學(xué)生網(wǎng)絡(luò)、KD加學(xué)生網(wǎng)絡(luò)、教師網(wǎng)絡(luò),以及典型輕量型卷積網(wǎng)絡(luò)MobliNetV3_Small以及ShuffleNetV2_x0.5進行推理性能對比,結(jié)果如表4所示。蒸餾前學(xué)生模型測試準(zhǔn)確率為96.00%,采用教師網(wǎng)絡(luò)進行蒸餾后,學(xué)生模型測試準(zhǔn)確率十分接近教師模型為99.28%。且從表4可看出自搭建的輕量化學(xué)生網(wǎng)絡(luò)比目前典型的輕量化模型,就參數(shù)量與計算量而言都要少,間接地提高了模型的正向推理時間。
表4 網(wǎng)絡(luò)模型推理性能對比Tab. 4 Comparison of network model inference performance
上述最后的得到的自搭建學(xué)生網(wǎng)絡(luò)是在PC端訓(xùn)練以及驗證,但是最終需要實際部署到嵌入式端進行實際應(yīng)用可能會出現(xiàn)些許不確定性。
鑒于目前成本考慮,選取國產(chǎn)全志V831芯片來進行模型部署。具體流程為:利用pytroch框架下自帶的計算圖轉(zhuǎn)換工具,將上述組合訓(xùn)練好pth格式模型權(quán)重文件轉(zhuǎn)換以onnx格式計算圖文件,接著使用騰訊開源ncnn工具將以onnx格式文件轉(zhuǎn)換成一個bin和一個pararms格式文件。以上2個文件皆是在arm處理器上運行所需要的。且要使用全志芯片內(nèi)部自帶的KPU權(quán)重量化與卷積加速器,因此還需將上述2個文件轉(zhuǎn)換成awnn框架下的所使用的模型文件awnn_int8.bin文件以及awnn_int8.params文件。且使用這2個文件在嵌入式終端進行部署。
最終在嵌入式端實際檢測的結(jié)果如圖11所示。觀察紗線檢測結(jié)果可知,單根紗線的概率皆高于70%以上,而雙根紗線的概率皆高于80%以上。接著對紗線檢測進行重復(fù)性實驗,得出實際紗線檢測準(zhǔn)確率為98.86%,如表5所示,滿足實際應(yīng)用需要。
表5 嵌入式端檢測準(zhǔn)確率Tab. 5 Embedded end detection accuracy
本文使用知識蒸餾利用教師網(wǎng)絡(luò)輸出軟目標(biāo)知識提高學(xué)生網(wǎng)絡(luò)測試準(zhǔn)確率。蒸餾訓(xùn)練時,需先載入訓(xùn)練好的教師模型權(quán)重,由于本文數(shù)據(jù)集為小樣本數(shù)據(jù)集,即采用遷移學(xué)習(xí)策略對教師網(wǎng)絡(luò)進行訓(xùn)練。構(gòu)建學(xué)生網(wǎng)絡(luò)時,采用疊加深度可分離卷積塊的形式實現(xiàn)網(wǎng)絡(luò)輕量化。最終實驗結(jié)果表明,蒸餾后的學(xué)生網(wǎng)絡(luò)具有準(zhǔn)確率高、模型小、推理速度快等優(yōu)點,將在PC端訓(xùn)練完成的學(xué)生網(wǎng)絡(luò)進行嵌入式端部署并檢測,其測試結(jié)果表明可以滿足實際應(yīng)用需要。具體實驗結(jié)論如下。
1)使用遷移學(xué)習(xí)后的教師網(wǎng)絡(luò)在第1輪后驗證集的準(zhǔn)確率達到了92%以上,且損失曲線的收斂速度也明顯加快。
2)采用知識蒸餾訓(xùn)練學(xué)生網(wǎng)絡(luò)時,損失權(quán)重α設(shè)置為0.2、蒸餾溫度T設(shè)置為3時效果最好,其在驗證集上的Top-1準(zhǔn)確率可達99.57%。
3)將蒸餾前后的學(xué)生網(wǎng)絡(luò)、教師網(wǎng)絡(luò)、以及現(xiàn)階段典型的輕量化網(wǎng)絡(luò)進行模型推理對比實驗。將原本在測試集上準(zhǔn)確率為96.00%的學(xué)生網(wǎng)絡(luò)進行蒸餾后準(zhǔn)確率提高到了99.28%。
4)將訓(xùn)練好自搭建網(wǎng)絡(luò)部署在嵌入式終端上進行實際測試,單根紗線的概率皆高于70%以上,而雙根紗線的概率皆高于80%以上;對紗線檢測進行重復(fù)性實驗,得出實際紗線檢測準(zhǔn)確率為98.86%。
5)由于PC端測試是之前拍攝好的圖片形式,而嵌入式端測試是實際的視頻形式;在模型量化加速與部署過程中可能會造成權(quán)重參數(shù)精度的些許丟失造成PC端與嵌入式終端的測試準(zhǔn)確率不同。