黃開坤,徐 興
(南華大學(xué)機(jī)械工程學(xué)院,衡陽 421001)
藥品質(zhì)量檢測是醫(yī)藥領(lǐng)域十分重要且不可缺少的環(huán)節(jié),在保障人民健康、社會安全穩(wěn)定方面起著重要作用。在醫(yī)藥生產(chǎn)領(lǐng)域,人們對藥片的品質(zhì)追求不斷提高,藥片生產(chǎn)的各個環(huán)節(jié)都受到嚴(yán)格的管制。藥片生產(chǎn)過程中難免出現(xiàn)缺陷次品,嚴(yán)重影響產(chǎn)品質(zhì)量,在藥片包裝之前進(jìn)行有效的剔除,是保證藥片品質(zhì)的關(guān)鍵步驟。
傳統(tǒng)人工檢測方法效率低,不確定因素影響大。隨著技術(shù)水平的不斷提升,機(jī)器視覺檢測技術(shù)應(yīng)用于很多行業(yè)領(lǐng)域。藥物質(zhì)量檢測技術(shù)一般包括人工檢測、激光檢測、機(jī)器視覺檢測等[1],其中基于機(jī)器視覺的醫(yī)療檢測包括經(jīng)典傳統(tǒng)檢測[2-3]和深度學(xué)習(xí)檢測[4-5]。卷積神經(jīng)網(wǎng)絡(luò)(CNN)是在圖像處理領(lǐng)域優(yōu)異的神經(jīng)網(wǎng)絡(luò)[6],長期以來是圖像識別領(lǐng)域的核心算法之一,比傳統(tǒng)圖像處理算法具有更強大的特征學(xué)習(xí)能力。在機(jī)器視覺缺陷檢測應(yīng)用領(lǐng)域,越來越多的檢測方法從經(jīng)典的圖像處理和機(jī)器學(xué)習(xí)轉(zhuǎn)到深度學(xué)習(xí)[7]。
本文提出改進(jìn)后的GhostNet 網(wǎng)絡(luò)模型,對網(wǎng)絡(luò)模型進(jìn)行了進(jìn)一步的壓縮,保證網(wǎng)絡(luò)在取得較高的分類精度的同時達(dá)到更少的參數(shù)量和計算量,更少的內(nèi)存占用與計算消耗。在網(wǎng)絡(luò)模型中引入ECA注意力機(jī)制模塊,并分別與原始網(wǎng)絡(luò)、主流輕量化神經(jīng)網(wǎng)絡(luò)進(jìn)行性能對比分析。
GhostNet 網(wǎng)絡(luò)是華為2020 年提出的分類網(wǎng)絡(luò)[8]。該研究提出了一個新的Ghost 模塊,通過廉價操作來生成更多的特征圖,在壓縮網(wǎng)絡(luò)的同時確保分類準(zhǔn)確性,降低模型參數(shù),利用Ghost模塊構(gòu)建Ghost bottleneck 結(jié)構(gòu),利用Ghost瓶頸結(jié)構(gòu)疊加主干神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
GhostNet 是以MobileNet 系列為基礎(chǔ)的改進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu),從圖像特征冗余的角度出發(fā),避免了大量計算量和參數(shù)量去生成這些相似特征圖,并用一系列簡單的線性操作來生成特征圖。操作過程如圖1所示。
圖1 Ghost Module模塊
Ghost 模塊首先通過普通卷積對輸入特征圖進(jìn)行特征濃縮,將輸入特征圖X∈RC×H×W壓縮為M通道的特征圖Y′ ∈RH′×W′×M,其中C是輸入通道數(shù),卷積運算為
公式*為卷積運算,b為偏置項,f'∈Rc×k×k×m為卷積核大小為k的卷積核,M≤N,保證輸出通道數(shù)小于輸入通道數(shù),對原始特征進(jìn)行必要的特征濃縮。此過程的參數(shù)量P1和計算量F1分別為
保證最后獲得N個特征圖,對Y′特征圖進(jìn)行簡單的線性運算,來生成S個Ghost 特征圖。線性操作為圖1中的Φ1,Φ2,…,Φk,線性運算為逐層的深度可分離卷積,卷積核大小k',Identity為恒等映射。M次線性運算能夠得到M(S- 1)的輸出通道數(shù),參數(shù)量P2和計算量F2為
總共得到的輸出通道數(shù)為N=M×S,最終輸出即N個特征圖。
Ghost Bottleneck 是由Ghost Module 組成的瓶頸結(jié)構(gòu),參考ResNet 中的基本殘差塊[9],構(gòu)成了多個卷積層和殘差結(jié)構(gòu),并用Ghost 模塊代替普通卷積模塊。Ghost 瓶頸分為兩部分,分別是主干部分和殘差邊部分,結(jié)構(gòu)如圖2所示。
圖2 Ghost瓶頸結(jié)構(gòu)
圖2(a)步長stride=1,包含兩個Ghost 模塊,首先增加通道數(shù),接下來減少網(wǎng)絡(luò)通道數(shù)并連接到殘差路徑。圖2(b)步長stride=2,在兩個Ghost 模塊之間加入深度可分離卷積進(jìn)行特征層的寬高壓縮。
GhostNet 網(wǎng)絡(luò)主干由Ghost 瓶頸模塊疊加而成,借鑒了MobileNetV3[10]的基本結(jié)構(gòu)的優(yōu)勢。網(wǎng)絡(luò)第一層為16 通道的卷積層,然后由多個瓶頸模塊構(gòu)成,依據(jù)輸入特征圖的大小分為不同的階段,不同階段的末位瓶頸模塊步長為2,其它步長都為1。最后經(jīng)過全局平均池化層、卷積層和全連接層對輸出進(jìn)行分類。
在G-bneck 瓶頸模塊加入了通道注意力機(jī)制(Squeeze-and-Excitation,SE)[11]模塊。SE 機(jī)制模塊網(wǎng)絡(luò)架構(gòu)圖如圖3所示。首先對輸入進(jìn)來的特征層進(jìn)行全局平均池化,接著通過兩次全連接,再進(jìn)行一次Sigmod 將值固定到0~1 之間,獲得輸入特征每一個通道的權(quán)值,最后將權(quán)值乘上原始輸入特征層,得到新的加權(quán)后的特征圖。
圖3 SE注意力機(jī)制網(wǎng)絡(luò)架構(gòu)
GhostNet 網(wǎng)絡(luò)模型在公開數(shù)據(jù)集上進(jìn)行的測試,類別數(shù)量達(dá)1000 類,而此藥片完整性分類任務(wù)數(shù)據(jù)集為類別數(shù)量較小的6類,藥片特征并非復(fù)雜多樣的圖案特征,減少輸出層的分類數(shù)量classes,減半整體網(wǎng)絡(luò)的通道數(shù)。網(wǎng)絡(luò)模型復(fù)雜會造成過擬合風(fēng)險,去掉網(wǎng)絡(luò)結(jié)構(gòu)中的重復(fù)操作層,進(jìn)一步減少網(wǎng)絡(luò)的參數(shù)量。添加Dropout 層[12],在神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,當(dāng)訓(xùn)練數(shù)據(jù)量較小,模型復(fù)雜度較高時,模型在訓(xùn)練集上的準(zhǔn)確率較高,在測試集上的準(zhǔn)確率相對較低,出現(xiàn)了過擬合,為了提高模型的泛化能力,在全連接前添加Dropout 層,丟棄一些神經(jīng)元,減少神經(jīng)元之間的相互作用,提高網(wǎng)絡(luò)模型分類精度。
ECANet 是一個非常輕量級的即插即用模塊[13],可以提高神經(jīng)網(wǎng)絡(luò)架構(gòu)的性能,結(jié)構(gòu)如
圖4 所示。ECA 模塊可以被看作是SE 模塊的改進(jìn)版,SENet采用的降維操作會對通道注意力機(jī)制產(chǎn)生負(fù)面作用。卷積具有良好的跨通道信息獲取能力,輕量ECA 模塊是將SE 模塊的全連接層替換成卷積核大小為k 的1D 卷積進(jìn)行學(xué)習(xí),避免了降維,有效地實現(xiàn)了跨通道交互。卷積核大小可由通道維數(shù)的非線性映射自適應(yīng)確定,如公式(6)所示。
在通道維數(shù)C 給出時,卷積核大小k便可由公式(7)得到:
圖4 ECA模塊結(jié)構(gòu)圖
優(yōu)化后的網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,首先通過第一層Conv2d3x3,將輸入特征轉(zhuǎn)換為包含8 個卷積核的標(biāo)準(zhǔn)卷積層,壓縮了網(wǎng)絡(luò),降低了參數(shù)量。中間為一系列的瓶頸層。接著通過全局平均池化層和卷積層將特征圖轉(zhuǎn)化為100維特征向量,并進(jìn)行最終分類。將原網(wǎng)絡(luò)的SENet替換為輕量化ECANet,保留原網(wǎng)絡(luò)主要特征提取G-bneck 模塊,在全連接層FC 網(wǎng)絡(luò)之前添加Dropout 層,提升模型的分類準(zhǔn)確性。表中Exp表示增大比率,Out表示輸出通道數(shù),ECA 為注意力機(jī)制模塊,Str為步長,cls為分類數(shù)量。
表1 改進(jìn)后的GhostNet網(wǎng)絡(luò)結(jié)構(gòu)
本次實驗在Windows10環(huán)境下,采用python語言,在pycharm2020.2 版本編程環(huán)境下進(jìn)行,在Anaconda中創(chuàng)建python虛擬環(huán)境,python版本為3.8;利用Keras、Pytorch深度學(xué)習(xí)架構(gòu),使用cuda11.4提升模型訓(xùn)練和推理的速度。實驗設(shè)備為:GPU 為RTX 3090,顯存24 G;CPU 為Intel(R)Xeon(R)Silver 4210R CPU@2.40 GHz。
實驗數(shù)據(jù)集是由工業(yè)相機(jī)MV-CE120-10UC拍攝所得,根據(jù)生產(chǎn)廠商提供的散裝藥片和相關(guān)指導(dǎo)制作殘缺藥片,藥片總共分為6 種類別,包括污染、破損、完好、粗糙、劃痕、斑點。藥片圖像總共為3360 張,每個類別為560 張,部分藥片樣本如圖5所示。
圖5 部分藥片圖樣示例
為提高網(wǎng)絡(luò)模型的泛化能力,避免出現(xiàn)過擬合風(fēng)險,對數(shù)據(jù)集進(jìn)行增強操作,增加數(shù)據(jù)集數(shù)量[14]。增加后的圖像共12000 張,將打亂后的數(shù)據(jù)集分為70%的訓(xùn)練集、15%的驗證集和15%的測試集。原始特征圖片的大小為800 ×800 × 3。 送入網(wǎng)絡(luò)圖片大小為224 × 224 × 3,初始學(xué)習(xí)率為0.001,Batch Size大小為32,使用Adam優(yōu)化器訓(xùn)練,迭代次數(shù)(epoch)為50代。
從圖像分類評價指標(biāo)方法出發(fā),對模型的分類精度、運算量、參數(shù)量等進(jìn)行評估。
模型分類精度(Precision),表示預(yù)測出來準(zhǔn)確結(jié)果占所有預(yù)測結(jié)果的準(zhǔn)確率,分類精度越高說明模型預(yù)測能力越強。
其中,TP表示正樣例中分類為正樣例的數(shù)量,F(xiàn)P表示標(biāo)簽是負(fù)樣例中分類為正樣例的數(shù)目。模型運算量常用FLOPs 來表示,浮點運算量即為計算量,是用來表示模型的計算復(fù)雜度。
模型參數(shù)量parameters,是用來表示模型內(nèi)部總的參數(shù)量,衡量模型所消耗內(nèi)存的大小,參數(shù)越大所占用的內(nèi)存就越大。
為了驗證改進(jìn)后的網(wǎng)絡(luò)模型性能的優(yōu)異,并與原始網(wǎng)絡(luò)模型進(jìn)行性能比較,從藥片分類精度、模型參數(shù)量、模型運算量方面進(jìn)行對比,如表2所示。
表2 網(wǎng)絡(luò)評價指標(biāo)對比
由實驗結(jié)果可知,原始網(wǎng)絡(luò)模型參數(shù)約為改進(jìn)后GhostNet 模型的4.5 倍,計算量約為改進(jìn)后的3倍,改進(jìn)后的網(wǎng)絡(luò)模型精度與原始網(wǎng)絡(luò)相差僅為0.04%,在大量減少網(wǎng)絡(luò)模型參數(shù)的前提下,保持較高的模型精度。優(yōu)化后的網(wǎng)絡(luò)模型在訓(xùn)練過程中的精度和損失曲線如圖6所示。
圖6 改進(jìn)后的網(wǎng)絡(luò)訓(xùn)練曲線
從圖6 能夠看到網(wǎng)絡(luò)模型共訓(xùn)練50 代,隨著訓(xùn)練次數(shù)的增加收斂速度更快,在迭代40 代后曲線上升趨勢漸漸平緩,整個過程中未出現(xiàn)過擬合。結(jié)果表明,改進(jìn)后的GhostNet 網(wǎng)絡(luò)模型具有較高的分類精度。
在相同實驗條件下,為了驗證改進(jìn)的網(wǎng)絡(luò)模型的性能,與主流輕量化神經(jīng)網(wǎng)絡(luò)Mobile-NetV、ShuffleNetV2[15]和EfficientNet[16]進(jìn)行對比實驗,結(jié)果如表3所示。
表3 不同網(wǎng)絡(luò)評價指標(biāo)對比
由實驗結(jié)果得知,改進(jìn)后的GhostNet 網(wǎng)絡(luò)模型的精度高于其它網(wǎng)絡(luò),權(quán)重模型大小僅為1.8 MB,明顯低于其它輕量化網(wǎng)絡(luò)模型,運算速率也相應(yīng)提高,計算量和參數(shù)量明顯降低,說明改進(jìn)網(wǎng)絡(luò)模型具有更高的分類精度,更少的參數(shù)量和計算量。
在藥片分類實際應(yīng)用中,在提高分類精度的同時,保證更低的網(wǎng)絡(luò)存儲空間占用和功能消耗,使得輕量化神經(jīng)網(wǎng)絡(luò)模型更容易在移動端或嵌入式設(shè)備上存儲和計算。實驗過程中,采用藥片分類數(shù)據(jù)集對模型進(jìn)行訓(xùn)練和測試,對數(shù)據(jù)集增強處理,壓縮網(wǎng)絡(luò)模型通道數(shù),優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),降低參數(shù)量和計算量,引入ECA注意力機(jī)制。實驗結(jié)果表明,改進(jìn)后的網(wǎng)絡(luò)模型具有更低的參數(shù)量與運算量,模型權(quán)重文件僅為1.8MB,能夠取得的分類精度為98.85%,參數(shù)量和計算量低于原始網(wǎng)絡(luò);網(wǎng)絡(luò)模型分類精度高于其它輕量化神經(jīng)網(wǎng)絡(luò),取得較優(yōu)的分類性能。