梁漢濠,張 雷,劉 超,潘玲佼
(1.江蘇理工學(xué)院 電氣信息工程學(xué)院,江蘇 常州 213016;2.佰奧軟件有限公司,江蘇 昆山 215312)
基于機器視覺的晶圓加工方式極大程度地提高了晶圓自動化生產(chǎn)效率和產(chǎn)品質(zhì)量,機器視覺技術(shù)正日漸成為我國智能制造領(lǐng)域的關(guān)鍵技術(shù)之一。在晶圓自動化生產(chǎn)中,晶圓注冊是不可或缺的環(huán)節(jié)。每一塊晶圓在進行細節(jié)加工前,都需要進行注冊,即對晶圓特定位置印刷的型號和序列號等信息進行提取和數(shù)據(jù)庫更新。光學(xué)字符識別 (Optical Character Recognition,OCR)[1]技術(shù)是完成晶圓注冊的關(guān)鍵技術(shù)。OCR檢測傳統(tǒng)流程為:用圖像處理將字符逐個提取出來,將其與事先準備的固定模板相匹配,即用每個字符去遍歷所有模板圖像,尋找與該字符重復(fù)度最高的,與哪個模板匹配度最高則被確認為該字符。在傳統(tǒng)字符識別研究方面,姚文風(fēng)等[2]提前準備標準的字符庫,用被測圖像與整個庫進行異或運算,容易造成字符的誤判,無法分辨相近字符。王浩楠等[3]運用字符識別標準模板進行模板匹配,對輪胎表面字符識別準確率達99.51%。隨著神經(jīng)網(wǎng)絡(luò)的興起,目前字符識別大多采用深度學(xué)習(xí)的算法,依靠大量的數(shù)據(jù)集進行特征提取,解決字符的識別問題。白睿等[4]通過Lenet-5對在道路場景下的行車字符識別進行了識別。祁忠琪等[5]利用新型的卷積網(wǎng)絡(luò),將字符先分割再識別。熊帆等[6]利用循環(huán)卷積網(wǎng)絡(luò),增加子模型和注意力機制,同時引入中心損失函數(shù),提高字符識別準確率。胡蝶等[7]以卷積神經(jīng)網(wǎng)絡(luò)為核心對生產(chǎn)日期進行檢測,準確率遠高于傳統(tǒng)模板匹配。朱立倩[8]以Faster R-CNN為主干網(wǎng)絡(luò),插入注意力機制對數(shù)顯儀表字符識別的準確率達到了95%。
經(jīng)過對比發(fā)現(xiàn),目前主流的字符識別深度學(xué)習(xí)方法大多以CNN、Faster-CNN、YOLO系列為主。鑒于YOLOv7可以直接通過卷積神經(jīng)網(wǎng)絡(luò)對圖片進行卷積、特征提取和回歸的特點。本文提出一種基于YOLOv7的改進晶圓字符識別算法。本文的改進主要是:① 在主干網(wǎng)絡(luò)末尾添加Swin Transformer,完成全局和局部信息的整合,提高圖片特征的提取率和利用率;② 在預(yù)測頭部插入A2-Net注意力機制,賦予網(wǎng)絡(luò)自動獲取每個特征通道權(quán)重的權(quán)利,同時突出圖片的關(guān)鍵特征,增強訓(xùn)練效果;③ 在損失函數(shù)方面采用SIOU損失函數(shù)替代CIOU損失函數(shù),以回歸的邊界向量角度為引導(dǎo),進一步提高檢測的準確性。
YOLOv7與常規(guī)YOLO系列相同,包含了主干網(wǎng)絡(luò)(Backbone)、解碼網(wǎng)絡(luò)(Neck)、預(yù)測網(wǎng)絡(luò)(Prediction)三部分。主干網(wǎng)絡(luò)負責(zé)圖片輸入和特征提取,主要由CBS卷積層、MPConv 卷積層和E-ELAN卷積層三部分構(gòu)成。E-ELAN是高效層聚合網(wǎng)絡(luò),在保證原始梯度路徑的同時,優(yōu)化網(wǎng)絡(luò)的收集能力,還具有拓展計算塊和采集輸入圖片不同特征組信息的能力。MPConv卷積層主要作用是篩選得到的特征,對CBS卷積層得到的特征進行最大池化,并將其分成2支,用Concat模塊將2支進行特征融合,進一步增強網(wǎng)絡(luò)對于圖片特征的提取能力。原版YOLOv7在Neck網(wǎng)絡(luò)的開始插入SPPCSPC(金字塔)模塊,該模塊主要用來保證頭部網(wǎng)絡(luò)可以實現(xiàn)多尺度的特征融合;隨后將融合后的特征通過上采樣(UPSample)層,與之前得到的卷積特征進行特征融合,中間會再次MPConv卷積層強化特征提取能力。在預(yù)測網(wǎng)絡(luò)(Prediction)部分,采用了REP模塊、Conv模塊與全連接層組成3個預(yù)測頭。在損失函數(shù)方面,網(wǎng)絡(luò)主要采用了2種損失函數(shù)。在置信度和分類方面采用了交叉熵損失(BCE Loss)函數(shù),在定位方面選擇了CIoU損失函數(shù),其結(jié)構(gòu)如圖1所示。
圖1 YOLOV7結(jié)構(gòu)Fig.1 Structure of YOLOv7
為了更好地訓(xùn)練效果和更準確地預(yù)測結(jié)果,本文提出了一種改進的YOLOv7字符識別算法。首先在主干網(wǎng)絡(luò)的末尾加入Swin Transformer模塊,然后在預(yù)測頭前插入注意力模塊,最后對網(wǎng)絡(luò)的定位損失函數(shù)進行修改,引入SIOU損失函數(shù),保證網(wǎng)絡(luò)能夠準確定位到字符。改進算法可以整體提升算法的特征提取能力,同時進一步提高分類精度和定位精度。改進后的網(wǎng)絡(luò)總體結(jié)構(gòu)模型如圖2所示。
圖2 改進后YOLOv7結(jié)構(gòu)Fig.2 Structure of improved YOLOv7
YOLOv7原本的主干神經(jīng)網(wǎng)絡(luò)需要依靠復(fù)雜的卷積來提升識別效果。因此本文考慮引入 Transformer來提升網(wǎng)絡(luò)的特征提取能力,但是鑒于傳統(tǒng)的 Transformer當(dāng)圖片像素點增多時,其關(guān)鍵模塊MSA需要計算特征圖片中每一個像素之間的關(guān)系,會導(dǎo)致計算機計算量增大而降低運行效率。與之不同的是Swin Transformer[9]提升識別效果的途徑依靠滑動窗口和多層次結(jié)構(gòu)。在其網(wǎng)絡(luò)中的體現(xiàn)為多連續(xù)窗口(Window Multi-Head Self-Attention, W-MSA)和多位移自注意層(Shifted-Window Multi-Head Self-attention, SW-MSA)模塊,SW-MSA模塊領(lǐng)先于MSA模塊的地方在于將需要提取的特征層進一步分割,在相互關(guān)系的建立上采取滑動窗口的方式。具體來說:當(dāng)需要提取的特征層含有4×4個像素,為了得到像素間的關(guān)系傳統(tǒng)的MSA需要計算120次;而SW-MSA先將其分為4個2×2的像素塊,對于每個小塊計算每個像素間的關(guān)系只需要計算4×6次;對于不同像素塊間的關(guān)系采用將分割線滑動將其分割成3×3像素塊和2個1×2的像素塊,分割后對每個小塊的像素關(guān)系進行計算需要計算38次;SW-MSA模塊需要計算64次,相較于傳統(tǒng)的MSA減少了大約一半的計算量。窗口滑動分割原理如圖3所示。
圖3 窗口滑動分割原理Fig.3 Principle of window sliding segmentation
加入SW-MSA層不僅不會提升計算的復(fù)雜度,還能整合全局和局部特征信息。Swin Transformer模塊如圖4所示。主要流程是:先將輸入圖片通過LN特征歸一化層;然后將其輸入W-MSA進行分割提取,將提取后的特征信息與原輸入進行計算,將結(jié)果輸入進新的歸一化層,隨后通過MLP層再進行計算,之后通過LP層和SW-MSA層進行計算;最后再次通過MLP層得到最終結(jié)果。核心計算公式如下;
(1)
圖4 Swin Transformer模塊Fig.4 Swin Transformer module
Qu=XPWQ,
(2)
Key=XPWK,
(3)
Value=XPWV,
(4)
在網(wǎng)絡(luò)頭部插入A2-Net[10]注意力機制,本文采取的注意力機制的優(yōu)勢在于運用了2種注意力操作:第一個操作對池化特征的二階統(tǒng)計進行隱性計算,能捕捉到訓(xùn)練集中的復(fù)雜背景和運動屬性;第二個操作在于可以自適應(yīng)地分配特征,使特定位置更有關(guān)聯(lián)。注意力機制模塊如圖5所示。
圖5 注意力機制模塊Fig.5 Attention mechanism module
實現(xiàn)的主要流程為:先設(shè)定輸入XP∈Rc×w×h,可以得到每個像素坐標特征為vi,定義Wi為此網(wǎng)絡(luò)的輸出,用公式表示為:
Wi=FD(G(X),vi),
(5)
式中:FD(X)為Feather Distribution(分布)模塊,G(X)為Feather Gathering(雙線性池化)模塊,將特征向量ai和bi做外積后相和。
(6)
式中:ai、bi是通過2個不同CNN得到的結(jié)果,因為經(jīng)過2層所以起到二階統(tǒng)計的效果,也可以是不同層得到的不同結(jié)果。一般ai通過卷積和歸一化得到,bi通過尺寸縮減模塊獲得。這時對應(yīng)模塊的第一部分先將特征抓取出來;隨后FD將特征分配到已知特征子集的過程,可以保證使用極小的卷積即可得到對應(yīng)的特征:
FD=Softmax(ρ(x,W)),
(7)
式中:W為實際參數(shù),ρ(x,W)為將采集特征分配給每個帶有實際參數(shù)的位置。經(jīng)過FD分配后的結(jié)果,進行Softmax歸一化,再次通過尺寸縮減模板與原來的輸入特征層進行融合得到最后的輸出特征層。
上文提到本網(wǎng)路的損失函數(shù)主要有類別和置信度損失函數(shù)BCE-Loss,定位損失函數(shù)CIOU-Loss兩類。本文為了幫助字符快速定位檢測引入SIOU損失函數(shù)。先前的CIOU-Loss具體公式如下:
(8)
式中:b、bgt為預(yù)測框和真實框(Ground Truth,GT)中心位置坐標,ρ(b,bgt)為二者間的經(jīng)典歐式距離,c為兩框之間外接最小矩形的對角線長度,IOU為占空比,a為最關(guān)鍵的權(quán)重函數(shù)。
(9)
式中:v用來表示預(yù)測框和GT框二者的長寬比的相等性。
(10)
CIOU-Loss函數(shù)主要基于預(yù)測和目標兩框之間的重復(fù)面積比、中心點距離和寬高比來測算損失。然而真實框和預(yù)測框之間一般會存在一定的角度,這個角度也是損失函數(shù)應(yīng)當(dāng)考慮的內(nèi)容。因此本文提出用SIOU代替CIOU,將其作為最后的定位損失函數(shù)。SIOU函數(shù)主要包括Angle cost、Distance cost、Shape cost、IOU cost四部分。按照理論,加入SIOU函數(shù)后能夠有效減少因未考慮角度而造成的自由度損失,進一步提高預(yù)測的準確性,其核心計算公式如下:
(11)
式中:Δ為包含Angle cost的Distance cost。
(12)
式中:δ為Angle cost。
(13)
式中:φ為Shape cost。
(14)
本文的實驗環(huán)境為PyTorch v1.8.0,在此框架下進行網(wǎng)絡(luò)的訓(xùn)練和預(yù)測。本文訓(xùn)練時使用GPU加速訓(xùn)練,同時利用CUDA以及CU-DNN提高設(shè)備的運行速度。運行系統(tǒng)為Windows 10,搭載的GPU為NVIDIA GeForce RTX 3080,搭載的CPU為Inter?CoreTMi9-9900KCPU@3.60 GHz。CUDA版本為11.1, CU-DNN版本為v8.0.5.39,Python版本為3.8。
本數(shù)據(jù)集包含廠家給的3類晶圓字母庫以及自己實際加工中拍攝的晶圓字符圖片660張??紤]到字符印刷時會存在角度偏轉(zhuǎn),也可能因為光源的變化導(dǎo)致明暗不同,實際加工中存在噪聲的情況。本文對已有圖像采用角度偏轉(zhuǎn)、增加噪聲、改變明暗度3種方式擴充,將圖片擴充到3 960張。其中訓(xùn)練集、測試集和預(yù)測集的比例為8∶2。本文對數(shù)據(jù)集標注的工具為LabelImg,標簽文件的格式為xml。標簽示意如圖6所示。
圖6 標簽示意Fig.6 Schematic of labels
本文網(wǎng)絡(luò)在訓(xùn)練時的部分超參數(shù)設(shè)置[11]如表1所示。
表1 部分參數(shù)
深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的評價指標有多種,本文采用的是PR曲線,即準確率(Precision)和召回率(Recall)曲線。鑒于本文預(yù)測種類較多的特點,采用平均準確率均值(mean Average Precision,mAP)和檢測速率幀每秒(Frame Per Second,FPS)來判斷本文提出的模型性能[11]。P、R的計算如下:
(15)
(16)
式中:TP[12]為在已知的類別中,經(jīng)過模型判定后正確且實際也為正確的正樣本個數(shù);FP[13]為經(jīng)過模型認定為正樣本個數(shù),但實際不是正樣本的個數(shù);FN為被誤判為負樣本的正樣本個數(shù)。PR曲線如圖7所示。
圖7 PR曲線Fig.7 PR curve
所有檢測類別的mAP計算公式[14]為:
(17)
在訓(xùn)練時當(dāng)訓(xùn)練輪數(shù)達到300時,損失達到最小值,如圖8所示。
圖8 Loss曲線Fig.8 Loss curve
為保證本文所提出方法的優(yōu)越性,在已知數(shù)據(jù)集上對所有分類目標進行消融實驗,通過分別插入上文所述的Swin Transformer模塊和A2-Net模塊,以及修改后的損失函數(shù)進行驗證。具體測試結(jié)果如表2所示。消融實驗[15]結(jié)果表明,Swin Transformer模塊、插入A2-Net模塊、使用SIOU損失函數(shù)都使本網(wǎng)絡(luò)的性能得到提升,直接表現(xiàn)在mAP上的提高分別為0.94%、0.8%、0.98%。二者分別聯(lián)合插入的效果也較好,均對結(jié)果有所提升。將3個改進聯(lián)合使用時,與原YOLOv7相比提升為5.32%、5.21%、5.02%,因此表明本文改進后的網(wǎng)絡(luò)能力有所提升。
表2 數(shù)據(jù)集上消融實驗結(jié)果
將本文提出的模型與其他檢測模型對比,本文選擇的是與YOLOv3[16]、Faster R-CNN[17]和SSD[18]進行對比。為了驗證本文的預(yù)測速度,對FPS[19]進行了對比,實驗結(jié)果如表3所示。可以看出,在mAP上本文所提算法比另外3種中最高的Faster R-CNN高15.24%;在采集速度上,本文模型比速度較快的YOLOv3每秒還能多預(yù)測21張。本文所提的網(wǎng)絡(luò)在識別準確度和時效性方面都擁有較好的表現(xiàn)。
表3 4種預(yù)測網(wǎng)絡(luò)對比
為了突出本文算法對于字符檢測的優(yōu)越性,從已有數(shù)據(jù)集中挑選出一組字符(V,3,S)與改進前的網(wǎng)絡(luò)進行對比,預(yù)測結(jié)果如圖9所示。圖9(a)為改進前的網(wǎng)絡(luò)所檢測出的預(yù)測結(jié)果,圖9(b)為插入3個模塊后的網(wǎng)絡(luò)預(yù)測結(jié)果。另外本文還對真實的加工晶圓字符圖片進行預(yù)測。
對比圖9(a)和圖9(b)可以發(fā)現(xiàn),本文提出的模型對于字符“V”的預(yù)測置信度[20]提高了27%,對于字符“3”的檢測精度提高了20%,對于字符“S”的識別精度提高10%??梢杂^察到,加入模塊后效果的確優(yōu)于改進前的。本文還對真實晶圓上的晶圓字符進行了檢測,得到的結(jié)果如圖10所示,證明其效果的確能達到預(yù)期。
圖10 晶圓字符識別Fig.10 Wafer character recognition
本文在原有YOLOv7模型的基礎(chǔ)上,在金字塔層頭部插入了Swin Transformer增強了網(wǎng)絡(luò)對于全局和局部信息整合的能力,提高了對與字符圖片特征的提取;在預(yù)測頭位置插入了A2-Net注意力機制增加了自適應(yīng)預(yù)測的能力,提升利用率;用SIOU損失函數(shù)替換已有的CIOU損失函數(shù),提升了對于字符定位的能力。實驗證明,本文提出的改進對晶圓的字符識別有較好的效果。