游小榮,李淑芳,鄧 豐,雍成宇
(1.常州紡織服裝職業(yè)技術(shù)學(xué)院, 江蘇 常州 213164; 2.常州市生態(tài)紡織技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇 常州 213164)
織物圖像分類與檢索被廣泛應(yīng)用于庫存管理、紡織品設(shè)計(jì)和電子商務(wù)等領(lǐng)域[1]。隨著電子商務(wù)的快速發(fā)展及織物圖像的井噴式增長,原有的手工分類、文本標(biāo)注檢索已經(jīng)不能滿足當(dāng)前“以圖搜圖”的圖像分類及檢索要求,基于深度學(xué)習(xí)的圖像分類與檢索成為當(dāng)前研究的熱點(diǎn)。常見圖像檢索包括基于文本的圖像檢索和基于內(nèi)容的圖像檢索?;谖谋镜膱D像檢索需要大量的人工標(biāo)注,檢索詞匯與標(biāo)注詞匯不一致導(dǎo)致檢索效果差,且只適合某一國語言,存在諸多缺點(diǎn),而基于內(nèi)容的圖像檢索是一種檢索圖像內(nèi)容且過程自動(dòng)化的方法,在各領(lǐng)域被廣泛應(yīng)用[2]。根據(jù)特征提取方法的不同,傳統(tǒng)基于內(nèi)容的圖像檢索又可以分為基于全局特征的圖像檢索和基于局部特征的圖像檢索。其中,基于全局特征的圖像檢索方法主要提取圖像的低級特征(如顏色、紋理、形狀和空間信息),主要方法包括顏色直方圖、Gaber、傅里葉描述子、空間金字塔匹配等,缺點(diǎn)是無法區(qū)分圖像中的對象和背景[3]。Srivastava 等[4]通過小波變換方法提取紋理和形狀特征,在不同數(shù)據(jù)集上精度范圍為35.37%~99.99%,存在部分?jǐn)?shù)據(jù)集提取精度低的問題。而基于局部特征的圖像檢索方法提取局部描述符的形式,更關(guān)注圖像的關(guān)鍵點(diǎn)(如角點(diǎn)、邊緣等),對縮放、旋轉(zhuǎn)、平移、背景變化具有很好的魯棒性,基于局部特征的圖像檢索方法包括SIFT、SURF、LPB、HOG、Harris、FAST等[3]。Sarwar等[5]提出使用LBPV和LIOP 2個(gè)描述子提取特征,并通過使用SVM方法進(jìn)行分類,在不同數(shù)據(jù)集上精度范圍為69.23%~89.58%,但該方法未考慮空間信息。
隨著機(jī)器學(xué)習(xí)的廣泛應(yīng)用,特別是深度學(xué)習(xí)的興起,使用深度學(xué)習(xí)算法提取圖像的高維特征,可以很好地減少低級特征和人類視覺感知之間的語義差距[6]。Tzelepi等[7]通過使用卷積神經(jīng)網(wǎng)絡(luò)方法進(jìn)行圖像檢索,精度達(dá)到了98.59%,該方法的優(yōu)勢在于通過卷積層之后使用最大池化的結(jié)果作為特征表示,最大限度保留空間信息的同時(shí)降低特征描述符的維度,不足之處是檢索時(shí)間非常長。Sezavar等[8]結(jié)合卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示方法進(jìn)行圖像檢索,其中卷積神經(jīng)網(wǎng)絡(luò)用于提取高級特征并作為分類器來查詢指定圖像的類別,稀疏表示用來降低計(jì)算成本,提升檢索效率,在ALOI數(shù)據(jù)集上精度可達(dá)97.06%。但是,基于卷積神經(jīng)網(wǎng)絡(luò)的圖像檢索方法也存在一些問題,如數(shù)據(jù)集需要幾十萬幅甚至上百萬幅圖像、標(biāo)記多、訓(xùn)練時(shí)間長、樣本數(shù)據(jù)不足時(shí)容易出現(xiàn)過擬合或者陷入局部最優(yōu)的情況[9]?,F(xiàn)實(shí)中有些領(lǐng)域的訓(xùn)練數(shù)據(jù)非常昂貴或者難以收集,因此段萌等[10]基于小樣本數(shù)據(jù)集,通過對原圖像進(jìn)行平移、旋轉(zhuǎn)等幾何變換方法擴(kuò)充樣本量,并借助遷移學(xué)習(xí)的方法,實(shí)現(xiàn)小樣本圖像分類識別。
針對織物在電子商務(wù)、庫存管理等領(lǐng)域的應(yīng)用存在分類繁瑣、檢索精度不高以及訓(xùn)練樣本不足等問題,本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于遷移學(xué)習(xí)的織物圖像自動(dòng)分類與檢索系統(tǒng)。首先,設(shè)計(jì)并訓(xùn)練基于遷移學(xué)習(xí)的圖像分類深度學(xué)習(xí)模型;然后測試不同微調(diào)模型對織物圖像分類模型精度以及不同預(yù)訓(xùn)練模型對織物圖像分類模型精度的影響;最后設(shè)計(jì)并實(shí)現(xiàn)基于Milvus向量數(shù)據(jù)庫的織物圖像檢索系統(tǒng),并對其進(jìn)行檢索精度和效率測試。
遷移學(xué)習(xí)指通過學(xué)習(xí)到的舊知識來學(xué)習(xí)新的知識,其目的是將已經(jīng)學(xué)會(huì)的知識快速遷移到新的領(lǐng)域中[11]。遷移學(xué)習(xí)是解決圖像分類目標(biāo)訓(xùn)練數(shù)據(jù)有限問題的一種非常有效的方法[10]。Tan等[12]將深度遷移學(xué)習(xí)分成了4類:基于實(shí)例的深度遷移學(xué)習(xí)、基于映射的深度遷移學(xué)習(xí)、基于對抗的深度遷移學(xué)習(xí)和基于網(wǎng)絡(luò)的深度遷移學(xué)習(xí)。其中,基于網(wǎng)絡(luò)的深度遷移學(xué)習(xí)指用在源域中預(yù)訓(xùn)練的部分網(wǎng)絡(luò)(包括其網(wǎng)絡(luò)結(jié)構(gòu)和連接參數(shù)),將其遷移為在目標(biāo)域中使用的深度神經(jīng)網(wǎng)絡(luò)的一部分。本文織物圖像分類也選擇這種基于網(wǎng)絡(luò)的深度遷移學(xué)習(xí)方法。
基于上述遷移學(xué)習(xí)理論,借助ImageNet大數(shù)據(jù)集訓(xùn)練好的預(yù)訓(xùn)練模型,保留或微調(diào)用于特征提取部分的網(wǎng)絡(luò),而分類層部分因?yàn)轭A(yù)訓(xùn)練模型和實(shí)際需求輸出的類別數(shù)不同,需重新設(shè)計(jì);然后基于小樣本數(shù)據(jù)集,訓(xùn)練未被凍結(jié)的網(wǎng)絡(luò)及重新設(shè)計(jì)的分類層,在訓(xùn)練過程中,將準(zhǔn)確率最高時(shí)對應(yīng)的模型作為新的分類模型。圖1所示為基于遷移學(xué)習(xí)的織物分類模型,在實(shí)際應(yīng)用過程中,輸入未經(jīng)過訓(xùn)練的織物測試圖像,經(jīng)新模型計(jì)算后,輸出織物種類,并將圖片放在相應(yīng)分類的文件夾,實(shí)現(xiàn)織物自動(dòng)分類。
圖1 基于遷移學(xué)習(xí)的織物分類模型Fig.1 Fabric classification model based on transfer learning
隨著織物圖像集的不斷增加,傳統(tǒng)的圖像檢索方法非常耗時(shí),通過使用向量數(shù)據(jù)庫進(jìn)行圖像檢索,可滿足億級圖像檢索時(shí)間控制在1 s以內(nèi)的實(shí)際需求。常見的向量數(shù)據(jù)庫包括Milvus、Faiss、Hnsw等。由于Milvus具有支持語言多、高性能、可分布式集群、高可靠性等優(yōu)點(diǎn),本文選取Milvus作為向量數(shù)據(jù)庫。此外,Milvus向量數(shù)據(jù)庫對于浮點(diǎn)型的特征向量支持歐式距離和內(nèi)積等相似度計(jì)算方法,其中內(nèi)積方法要求數(shù)據(jù)進(jìn)行歸一化,歸一化后與余弦相似度方法等價(jià)。
圖2為織物圖像檢索系統(tǒng)的運(yùn)行過程,首先將數(shù)據(jù)集中所有織物圖像經(jīng)過新模型提取特征向量,先刪除模型中的分類層,再通過網(wǎng)絡(luò)輸出特征向量;然后將提取到的所有特征向量保存到Milvus向量數(shù)據(jù)庫,并將圖片路徑信息保存到MySQL關(guān)系數(shù)據(jù)庫;將待測織物圖像上傳至系統(tǒng),經(jīng)新模型輸出特征向量,選擇內(nèi)積相似度計(jì)算方法,與Milvus向量數(shù)據(jù)庫存儲的特征向量進(jìn)行相似度運(yùn)算,實(shí)現(xiàn)top k檢索;最后,通過web應(yīng)用程序呈現(xiàn)top k檢索到的織物圖像。
圖2 織物圖像檢索系統(tǒng)Fig.2 Fabric Image Retrieval System
實(shí)驗(yàn)數(shù)據(jù)集的圖像來源于國內(nèi)織物生產(chǎn)企業(yè)。將圖像分成迷彩、花類、格子、純色、條紋5類,每一類圖像選取500幅,共計(jì)2 500幅,80%圖像用于訓(xùn)練,20%圖像用于訓(xùn)練過程驗(yàn)證,另外再選取200幅未經(jīng)過訓(xùn)練和驗(yàn)證的織物圖像,用于分類與檢索測試。實(shí)驗(yàn)數(shù)據(jù)集部分織物圖像如圖3所示。
圖3 數(shù)據(jù)集中部分織物圖像Fig.3 Some fabric images in the dataset
實(shí)驗(yàn)硬件及軟件環(huán)境如下:
硬件:Intel(R) Core(TM) i7-5500U CPU @ 2.40 GHz 2.39 GHz、16 GB內(nèi)存、無GPU。軟件:win 10操作系統(tǒng)(64 bit)、Python 3.10.2、Pytorch 1.11.0+CPU。
Pytorch環(huán)境下圖像分類預(yù)處理模型包括ConvNeXt、DenseNet、AlexNet、Inception、ResNet、VGG等,以ResNet50模型為例,對網(wǎng)絡(luò)進(jìn)行微調(diào)實(shí)驗(yàn)如圖4所示。預(yù)處理模型前9層用于特征提取,輸出向量2 048個(gè),分類層包括1個(gè)全連接層(fc),采用線性分類,處理后輸出向量1 000個(gè)。微調(diào)實(shí)驗(yàn)包含4種微調(diào)方案,方案1和方案2保留模型特征提取層中的參數(shù),只訓(xùn)練分類層,輸出向量都是5個(gè),方案1采用簡單的線性分類,方案2則采用三級網(wǎng)絡(luò)進(jìn)行分類;方案3和方案4則凍結(jié)到layer3,后面未凍結(jié)部分和分類層則重新訓(xùn)練,方案3、4分類層部分分別采用線性分類和三級網(wǎng)絡(luò)進(jìn)行分類。
圖4 ResNet50模型微調(diào)方案Fig.4 ResNet50 model fine-tuning scheme
構(gòu)建好微調(diào)模型后,需對這些微調(diào)模型進(jìn)行重新訓(xùn)練。具體訓(xùn)練步驟為:①深度復(fù)制模型參數(shù);②判斷所有的步長是否訓(xùn)練完成,如果是,跳至步驟⑩執(zhí)行,否則繼續(xù);③間隔選擇訓(xùn)練模式和驗(yàn)證模式,如果選擇訓(xùn)練模式,繼續(xù)執(zhí)行步驟④,否則跳至步驟⑤;④加載1個(gè)批大小的標(biāo)簽和圖像數(shù)據(jù);⑤將參數(shù)梯度歸零; ⑥前向運(yùn)算,經(jīng)過模型輸出數(shù)據(jù)并計(jì)算損失值; ⑦如果存在驗(yàn)證模式提供的損失值,則進(jìn)行后向傳播并優(yōu)化; ⑧完成1組批大小后,累計(jì)計(jì)算平均損失率和平均準(zhǔn)確率,更新最佳模型及最佳準(zhǔn)確率等參數(shù); ⑨輸入驗(yàn)證用的圖像數(shù)據(jù),根據(jù)網(wǎng)絡(luò)輸出值,計(jì)算損失值;⑩完成1個(gè)步長后,選擇最高準(zhǔn)確率及對應(yīng)的模型,深度復(fù)制網(wǎng)絡(luò)參數(shù),輸出新模型。
訓(xùn)練過程中,步長設(shè)置為50,批大小設(shè)置為16,學(xué)習(xí)率(lr)為0.001,Momentum為0.9,損失函數(shù)選擇交叉熵?fù)p失函數(shù),梯度下降算法選擇隨機(jī)梯度下降算法(SGD)可以獲得較好的訓(xùn)練效果。
圖5為上述4種方案訓(xùn)練過程中對應(yīng)的準(zhǔn)確率和損失率。從4組訓(xùn)練結(jié)果看,方案3最優(yōu),最高訓(xùn)練準(zhǔn)確率為98.84%、驗(yàn)證準(zhǔn)確率達(dá)到了99.01%。此外,對部分用于特征提取的網(wǎng)絡(luò)層參數(shù)進(jìn)行優(yōu)化,比全部保留特征提取的網(wǎng)絡(luò)層參數(shù)要好,分類層采用三級模型不如一級線性模型。
圖5 4種方案訓(xùn)練過程對應(yīng)的準(zhǔn)確率及損失率Fig.5 Accuracy rate and loss rate in the training process of the four schemes
新模型生成后,將訓(xùn)練模式改成評價(jià)模式,為織物圖像分類實(shí)驗(yàn)做好準(zhǔn)備。對比經(jīng)過微調(diào)后的ResNet50、AlexNet、VGG 16模型在本文測試集上的平均分類精度,如表1所示。3種模型微調(diào)后分類精度都在98%以上,ResNet50微調(diào)后的模型分類精度略高一些,達(dá)到了99.5%。
表1 不同深度學(xué)習(xí)模型對應(yīng)的平均分類精度Tab.1 Average classification accuracy corresponding to different deep learning model
為了測試每個(gè)分類模型的檢索效果,選用平均精度均值(mAP)進(jìn)行衡量。表2所示為top 5檢索后mAP對比情況,其中文獻(xiàn)[13]方法雖然也使用了預(yù)訓(xùn)練模型,但未進(jìn)行微調(diào)訓(xùn)練,直接提取特征向量并進(jìn)行檢索實(shí)驗(yàn)。從表2可以看出,ResNet50模型優(yōu)于其它模型和文獻(xiàn)[13]方法。
表2 各模型平均精度均值對比情況Tab.2 Comparison of the average mAP of each model
從分類來看,花類的分類mAP相對低一些。如圖6所示,圖6(a)為待檢索圖像,圖6(b)為ResNet50模型檢索結(jié)果圖像,其中圖6(b)第2、3張檢索類別發(fā)生錯(cuò)誤,對應(yīng)的相似度分別為0.795和0.793,說明花類圖像種類繁多,會(huì)發(fā)生與迷彩圖像相似的情況,從而導(dǎo)致檢索結(jié)果錯(cuò)誤。
圖6 部分分類錯(cuò)誤情況Fig.6 Some misclassification cases(a)Unretrieval image; (b)Retrieval result
此外,利用平均查準(zhǔn)率和查全率2個(gè)指標(biāo)定量驗(yàn)證模型對整個(gè)數(shù)據(jù)集檢索的效果,表3所示為top 5檢索后平均查準(zhǔn)率和平均查全率對比情況??梢娀赗esNet50的檢索精度優(yōu)于其他方法。
表3 不同模型平均查準(zhǔn)率和查全率對比情況Tab.3 Comparison of the average precision and recall of different model %
最后,選取訓(xùn)練和驗(yàn)證數(shù)據(jù)集,提取所有圖像的特征向量,并保存到Milvus向量數(shù)據(jù)庫,再基于未經(jīng)過訓(xùn)練和驗(yàn)證的200幅織物圖像,進(jìn)行織物圖像檢索效率測試。圖7所示為基于Django框架開發(fā)的web織物圖像檢索軟件對一個(gè)查詢圖像的檢索結(jié)果。待測織物圖像經(jīng)過軟件上傳后,提取特征向量,并與存儲在Milvus向量數(shù)據(jù)庫中的特征向量集進(jìn)行基于內(nèi)積方式的相似度運(yùn)算,排序輸出top 5檢索結(jié)果。經(jīng)過對200幅織物圖像的測試,統(tǒng)計(jì)出平均每幅圖像的檢索時(shí)間為0.165 3 s。
圖7 基于Django框架的web織物圖像檢索軟件Fig.7 Web fabric image retrieval software based on Django framework
通過基于遷移學(xué)習(xí)的織物圖像分類方法解決手工分類、小樣本、分類精度及檢索精度不高的問題,采用Milvus向量數(shù)據(jù)庫解決圖像檢索效率低的問題。實(shí)驗(yàn)結(jié)果表明,針對織物圖像分類問題,對部分用于特征提取的網(wǎng)絡(luò)層參數(shù)進(jìn)行優(yōu)化,比全部保留特征提取的網(wǎng)絡(luò)層參數(shù)更好,分類層采用三級模型不如一級線性模型;模型選擇方面,基于ResNet微調(diào)后的模型分類和檢索精度均優(yōu)于其它模型,分類精度達(dá)99.5%,top 5檢索的平均精度均值可達(dá)0.992、平均查準(zhǔn)率為99.65%。此外,經(jīng)過測試發(fā)現(xiàn),采用Milvus向量數(shù)據(jù)庫后平均每幅圖像的檢索時(shí)間為0.165 3 s,實(shí)用性強(qiáng)。通過系統(tǒng)的實(shí)施,可為小樣本織物圖像分類與檢索領(lǐng)域現(xiàn)存問題提供可行的解決方案。