李 雪,吳圣明,馬麗麗,陳金廣
(西安工程大學(xué) 計算機科學(xué)學(xué)院,西安 710048)
根據(jù)國家統(tǒng)計局的統(tǒng)計數(shù)據(jù)顯示[1],2020 年我國電子商務(wù)平臺交易額達到37.2 萬億元,按同比口徑計算,比去年增長4.5%. 消費需求不斷釋放,新消費模式拉動網(wǎng)絡(luò)消費快速增長. 服裝商品交易是電商平臺交易的重要組成部分,隨著線上消費快速發(fā)展,電商平臺的服裝圖像數(shù)據(jù)呈指數(shù)增長,同時這些服裝圖像種類繁多、樣式復(fù)雜,如何通過目標(biāo)檢測技術(shù)準(zhǔn)確判斷圖像中每種服裝的類別,并定位出服裝的具體位置,為顧客檢索、推薦出相似的商品,提升購買體驗,成為當(dāng)前目標(biāo)檢測技術(shù)在服裝領(lǐng)域的研究熱點之一[2].
傳統(tǒng)的機器學(xué)習(xí)方法如HOG、SIFT 等,依賴人工設(shè)計的方法提取目標(biāo)特征,魯棒性較差; 基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)能夠在較大規(guī)模的數(shù)據(jù)集上自動提取圖像特征,減少人工干預(yù),同時提高檢測準(zhǔn)確率,因此受到廣泛的關(guān)注. 基于候選框的兩階段目標(biāo)檢測算法,如Faster-RCNN[3]、Mask-RCNN[4]等,檢測精度高但檢測效率較低; 基于回歸的一階段的目標(biāo)檢測算法,如SSD[5]、YOLO[6,7]等,檢測速度快,檢測精度較高,具有很強的實用性. 但是以上模型訓(xùn)練對計算資源要求較高,訓(xùn)練所產(chǎn)生的權(quán)重文件通常高達幾百兆,難以部署在資源有限的設(shè)備中使用.
為了降低模型的參數(shù)量和計算量,使得模型能夠部署在資源有限的設(shè)備中,本文結(jié)合YOLOv5s 網(wǎng)絡(luò)構(gòu)建一個輕量級的服裝目標(biāo)檢測模型——G-YOLOv5s,該模型使用Ghost 卷積[8]重構(gòu)YOLOv5s 的主干網(wǎng)絡(luò),Ghost 卷積首先使用傳統(tǒng)卷積生成少量的原始特征圖,然后再利用原始特征圖經(jīng)過線性操作生成多個Ghost特征圖,減少了生成相似特征的卷積操作,使得模型精度在基本無損失的情況下,有效降低服裝檢測模型對計算資源的占用.
2020年Ultralytics 公司提出YOLOv5 系列算法,分別為YOLOv5s、YOLOv5m、YOLOv5l 以及YOLOv5x,網(wǎng)絡(luò)結(jié)構(gòu)的深度、寬度以及所需的計算資源依次遞增. YOLOv5s 整體網(wǎng)絡(luò)架構(gòu)如圖1 所示,從圖中可以看出,該網(wǎng)絡(luò)結(jié)構(gòu)大致可分為輸入端、主干網(wǎng)絡(luò)、Neck 網(wǎng)絡(luò)以及預(yù)測層4 個部分,下面逐一進行介紹.
圖1 YOLOv5s 網(wǎng)絡(luò)結(jié)構(gòu)
第1 部分是輸入端. 使用了Mosaic 圖像增強、自適應(yīng)圖片縮放以及自適應(yīng)錨框計算這3 種圖像處理方法. Mosaic 圖像增強方法通過隨機縮放、剪裁和排布等操作將4 張圖像拼接成一張圖像,然后輸入網(wǎng)絡(luò)進行訓(xùn)練,這種圖像增強方式可增加數(shù)據(jù)的多樣性以及訓(xùn)練目標(biāo)個數(shù). 自適應(yīng)錨框計算方法可根據(jù)不同數(shù)據(jù)集的特點重新計算初始錨框大小,使得初始錨框更加適合不同的數(shù)據(jù)集. 在模型推理階段使用自適應(yīng)圖片縮放方法為待檢測圖像填充最小的灰度值,極大減少了圖像的冗余信息,提高了模型的推理速度.
第2 部分是主干網(wǎng)絡(luò). 引入空間金字塔池化模塊(spatial pyramid pooling,SPP)[9],實現(xiàn)局部特征和全局特征的信息融合; 根據(jù)跨階段局部連接網(wǎng)絡(luò)(cross stage partial network,CSPNet)[10]的設(shè)計思想,YOLOv5s構(gòu)造了兩種CSP 結(jié)構(gòu),如圖1 所示,分別為CSP1_x 和CSP2_x,其中CSP1_x 添加在主干網(wǎng)絡(luò)中,CSP2_x 則添加在Neck 網(wǎng)絡(luò)部分,兩種CSP 結(jié)構(gòu)都使用了殘差結(jié)構(gòu),能夠在盡量不增加計算復(fù)雜度的情況下提高網(wǎng)絡(luò)的特征提取能力.
第3 部分是Neck 網(wǎng)絡(luò). 受特征金字塔網(wǎng)絡(luò)(feature pyramid networks,FPN)[11]和路徑聚合網(wǎng)絡(luò)(path aggregation network,PANet)[12]的啟發(fā),將Neck 網(wǎng)絡(luò)構(gòu)造成FPN+PAN 結(jié)構(gòu). FPN 結(jié)構(gòu)自頂向下,其后再添加一個自底向上的金字塔,該金字塔由兩個PAN 結(jié)構(gòu)組成. Neck 網(wǎng)絡(luò)能夠同時融合淺層和深層特征信息,有效提升檢測器的性能.
第4 部分是預(yù)測層. 使用CIoU loss (complete intersection over union loss)[13]作為邊界框的損失函數(shù),采用標(biāo)準(zhǔn)的非極大值抑制操作(non-maximum suppression,NMS)濾除多余的預(yù)測框,得到最終的模型預(yù)測結(jié)果.
傳統(tǒng)卷積和Ghost 卷積操作如圖2 所示. Ghost卷積將傳統(tǒng)卷積分成兩個步驟執(zhí)行,第1 步使用少量傳統(tǒng)卷積生成m個 原始特征圖; 第2 步利用m個原始特征圖經(jīng)過線性運算再生成s個Ghost 特征圖,經(jīng)過上述兩步操作,Ghost 卷積最終輸出n=m·s個特征圖. 同樣在輸出n個特征圖的情況下,分別使用傳統(tǒng)卷積和Ghost 卷積網(wǎng)絡(luò)參數(shù)量分別為p1、p2.
圖2 傳統(tǒng)卷積和Ghost 卷積
兩者參數(shù)量之比如式(3)所示:
使用傳統(tǒng)卷積和Ghost 卷積的模型浮點型計算量分別為q1、q2.
兩者浮點型計算量之比如式(6)所示:
其中,c表示輸入圖像的通道數(shù),k·k表示傳統(tǒng)卷積操作的卷積核大小,h′、w′分別表示Ghost 卷積生成的原始特征圖的高和寬,d·d為線性操作的卷積核大小,且s< 利用Ghost 卷積構(gòu)成Ghost 瓶頸結(jié)構(gòu)(G-bneck),如圖3 所示,G-bneck 類似于ResNet 結(jié)構(gòu)[14]. 在圖3中,第1 個Ghost 卷積作為擴展層,用于增加特征通道數(shù),第2 個Ghost 卷積則用于減少通道數(shù),再經(jīng)過shortcut 連接后輸出. 圖3 Ghost 瓶頸結(jié)構(gòu) 通過上文對Ghost 卷積計算的分析,若將該卷積應(yīng)用在YOLOv5s 中可進一步降低模型的參數(shù)量和復(fù)雜度,所以本文以YOLOv5s 為基本模型,在其主干網(wǎng)絡(luò)中,用Ghost 卷積替換傳統(tǒng)卷積(圖1 中CBS 結(jié)構(gòu)),用G-bneck 替換CSP1_x 結(jié)構(gòu),Neck 網(wǎng)絡(luò)層和預(yù)測層保持原結(jié)構(gòu)不變. 基于G-YOLOv5s 網(wǎng)絡(luò)的服裝檢測流程如圖4 所示. 圖4 中,步驟①–③表示模型的訓(xùn)練階段,將服裝圖像數(shù)據(jù)送入G-YOLOv5s 網(wǎng)絡(luò)中進行訓(xùn)練,并將結(jié)果最優(yōu)的模型權(quán)重保存下來; 步驟④–⑦是模型的驗證階段,使用驗證集數(shù)據(jù)來評估模型的好壞,若模型訓(xùn)練結(jié)果較差,則嘗試調(diào)整網(wǎng)絡(luò)參數(shù)后重新進行訓(xùn)練; 步驟⑧–⑩是模型檢測階段,使用評估結(jié)果良好的模型進行服裝圖片檢測,并輸出檢測后的結(jié)果. 圖4 基于G-YOLOv5s 網(wǎng)絡(luò)的服裝檢測流程 DeepFashion2[15]數(shù)據(jù)集總共包含約30 萬張圖片,13 種服裝類別,類別名稱分別為: 短袖衫(short sleeve shirt)、長袖衫(long sleeve shirt)、短袖外衫(short sleeve outwear)、長袖外套(long sleeve outwear)、背心(vest)、吊帶(sling)、短褲(shorts)、長褲(trousers)、半身裙(skirt)、短袖連衣裙(short sleeve dress)、長袖連衣裙(long sleeve dress)、無袖連衣裙(vest dress)、吊帶裙(sling dress). 在數(shù)據(jù)準(zhǔn)備過程中發(fā)現(xiàn),DeepFashion2 數(shù)據(jù)集存在嚴(yán)重的數(shù)據(jù)分布不平衡問題,例如在訓(xùn)練集中,包含“短袖衫”這一類別的圖片高達數(shù)萬多張,而包含“短袖外衫”這一類別的圖片僅有幾百張. 服裝類別不同,數(shù)據(jù)量差異較大,為了減輕對模型訓(xùn)練的影響,在實驗前將DeepFashion2 數(shù)據(jù)集進行如下處理: 首先將訓(xùn)練集圖片按照類別進行分類; 然后在分好的每類的圖片數(shù)據(jù)中按照如下規(guī)則進行隨機抽取:對于數(shù)據(jù)量較大的服裝類別,采用較小的比例進行數(shù)據(jù)抽取; 對于數(shù)據(jù)量適中的類別,增大隨機抽取的比例,此外,由于“短袖外衫”圖片數(shù)量過少,因此保留全部數(shù)據(jù). 數(shù)據(jù)抽取完成之后再次混合; 最后將混合好的訓(xùn)練集圖像對應(yīng)的標(biāo)簽文件轉(zhuǎn)成網(wǎng)絡(luò)能夠識別的YOLO 格式,得到處理完成的訓(xùn)練集數(shù)據(jù). 驗證集同樣進行如上處理. 最終得到帶有標(biāo)簽文件的訓(xùn)練集圖片14 746張、驗證集圖片7 763 張. 處理好的訓(xùn)練集中,服裝各類別目標(biāo)數(shù)量分布如圖5 所示. 圖5 訓(xùn)練集中13 種類別分布 采用的模型評價指標(biāo)有平均精度(average precision,AP)和平均精度均值(mean average precision,mAP).AP表示模型對某個類的檢測精度,值越大,表示模型對某個類的檢測精度越高;mAP表示模型對數(shù)據(jù)集所有類別的平均檢測精度,值越大則模型對數(shù)據(jù)集整體類別的檢測效果越好,評價指標(biāo)計算公式如式(7)–式(10)所示. 其中,N為數(shù)據(jù)集中所有的類別數(shù),在本文中N等于13,P(R)表示分別以精確率(precision,P)和召回率(recall,R)為橫縱坐標(biāo)所構(gòu)成的函數(shù).P和R的計算公式如下: 其中,TP表示將正例預(yù)測為正例的個數(shù),FP表示將反例預(yù)測為正例的個數(shù),FN表示將反例預(yù)測為反例的個數(shù). 模型損失函數(shù)由邊界框回歸損失(bounding box regression score)、置信度損失(objectness score)以及分類概率損失(class probability score)3 部分組成,GYOLOv5s 使用二值交叉熵損失函數(shù)計算類別概率損失和置信度損失. 采用CIoU loss 計算邊界框損失,因為該損失計算方式同時考慮了預(yù)測框與真實框的重疊面積、兩者中心點間距離以及框的長寬比等因素,能夠加快模型的收斂速度,計算公式如式(11)–式(13). 其中,ρ(b,bgt)表示預(yù)測框和真實框兩個中心點間的歐式距離,c表示兩框之間的最小外接矩形的對角線長度,分別表示真實框和預(yù)測框各自的寬高比,IoU是兩框之間的交并比. 實驗的軟硬件平臺以及參數(shù)設(shè)置如下: Intel(R)Xeon(R)CPU E5-2630 v4 @ 2.20 GHz; GPU: TITAN XP; 加速環(huán)境: CUDA 9.2; 操作系統(tǒng): Ubuntu 16.04; 深度學(xué)習(xí)框架: PyTorch 1.7.1; 語言環(huán)境: Python 3.8. batch_size 為16; 初始學(xué)習(xí)率為0.01; 權(quán)重衰減系數(shù)為0.000 5;使用隨機梯度下降法(SGD)進行優(yōu)化; 動量等于0.937;總訓(xùn)練輪數(shù)為300 輪. 根據(jù)上述參數(shù)設(shè)置,分別對改進前和改進后的YOLOv5s 和YOLOv5l 網(wǎng)絡(luò)進行了對比實驗. 4 種網(wǎng)絡(luò)的訓(xùn)練損失(loss)以及mAP變化曲線如圖6 所示. 圖6 網(wǎng)絡(luò)loss 和mAP 隨訓(xùn)練輪數(shù)的變化圖 由圖6 可以看出,無論是YOLOv5s 還是YOLOv5l,改進前后,網(wǎng)絡(luò)的loss 和mAP曲線變化不大,說明引入Ghost 卷積后,原網(wǎng)絡(luò)性能基本不受影響. 另外,改進前后YOLOv5l 的mAP高于YOLOv5s,這是因為改進前后YOLOv5l 的網(wǎng)絡(luò)結(jié)構(gòu)始終大于YOLOv5s,提取的特征信息也更加豐富,mAP會有所提升,但是相應(yīng)的,網(wǎng)絡(luò)參數(shù)量、浮點型計算量以及運行時間也會高于YOLOv5s. 使用G-YOLOv5s 模型對13 種服裝種類進行檢測,得到的平均精度值(AP)如表1 所示. 由表1 中可以看出,G-YOLOv5s 模型對“短袖衫”“短褲”以及“長褲”這3 類服裝的AP值均達到87%以上,檢測效果較好; 但對于“短袖外衫”的檢測,AP僅為46.9%,分析原因可能是: 該類別服裝圖片數(shù)量較少(如圖5 所示),導(dǎo)致G-YOLOv5s 對“短袖外衫”這一類別的訓(xùn)練不足,因此檢測結(jié)果略差. 表1 每類服裝的平均精度 (%) 表2 中對比了4 種模型的mAP、模型體積、浮點型運算量以及在CPU 上的推理時間,所有實驗的輸入圖像尺寸均為640×640 像素大小,結(jié)果如表2 所示. 表2 算法實驗結(jié)果對比 由表2 可以看出,G-YOLOv5s 與YOLOv5s 相比,雖然mAP有略微下降,但模型體積壓縮了34.8%,浮點運算量減少了41.3%; G-YOLOv5l 與YOLOv5l 相比,mAP下降了0.5%,但模型體積和浮點型運算量也下降了近一半左右. 實驗結(jié)果證明,使用Ghost 卷積能夠有效減少模型參數(shù)量以及浮點型運算量,從而降低對資源的占用. 并且與其它3 種網(wǎng)絡(luò)相比,G-YOLOv5s 模型最為輕量、在CPU 設(shè)備上檢測一張圖片用時最短,因此更適合部署在資源有限的設(shè)備上使用. 使用G-YOLOv5s 模型進行服裝檢測,效果如圖7所示,其中圖7(a)和圖7(b)分別為賣家秀和買家秀圖片的檢測效果. 圖7 買家秀和賣家秀檢測效果 對比觀察可知,圖7(a)的檢測效果普遍優(yōu)于圖7(b),這是因為圖7(a)中圖片背景較為簡單且檢測目標(biāo)比較突出,G-YOLOv5s 模型對此表現(xiàn)較好; 而在圖7(b)中,部分圖片由于光線不足、拍攝環(huán)境復(fù)雜等問題,模型檢測能力有所降低,出現(xiàn)漏檢、誤檢的情況(圖7(b)中第2 行檢測圖片所示). 為了降低服裝檢測模型參數(shù)量和浮點型運算量較大的問題,提出一種使用Ghost 卷積構(gòu)建YOLOv5s 主干網(wǎng)絡(luò)的輕量級服裝檢測方法,使用處理過的數(shù)據(jù)集對G-YOLOv5s 網(wǎng)絡(luò)進行訓(xùn)練和驗證. 實驗結(jié)果表明,G-YOLOv5s 算法對遮擋范圍較小、背景不是特別復(fù)雜的服裝目標(biāo)檢測準(zhǔn)確率高,并且該模型權(quán)重較小、浮點型計算量較低,是一種可行的、有效的服裝檢測方法,可在資源有限的設(shè)備中使用,下一步將著重關(guān)注復(fù)雜背景下服裝檢測方法的研究.2.2 主干網(wǎng)絡(luò)的重構(gòu)
3 模型訓(xùn)練及驗證
3.1 數(shù)據(jù)集及評價指標(biāo)
3.2 G-YOLOv5s 網(wǎng)絡(luò)訓(xùn)練
3.3 服裝檢測結(jié)果與分析
4 結(jié)論