張澤堃,張海波
(1.北京服裝學(xué)院 信息中心,北京100029;2.北京服裝學(xué)院 服裝材料研究開發(fā)與評(píng)價(jià)北京市重點(diǎn)實(shí)驗(yàn)室 北京市紡織納米纖維工程技術(shù)研究中心,北京100029;3.北京服裝學(xué)院 圖書館,北京100029)
根據(jù)中國(guó)服裝協(xié)會(huì)發(fā)布的《2018-2019年度中國(guó)服裝行業(yè)發(fā)展報(bào)告》[1]顯示,2018年全年限額以上服裝品類零售額實(shí)現(xiàn)7 742.8億,累計(jì)增長(zhǎng)9.1%,增速較2017年提高了1.1%,網(wǎng)上銷售增長(zhǎng)了22%,大型零售增長(zhǎng)0.99%。2018年全年服裝行業(yè)規(guī)模以上企業(yè)主營(yíng)業(yè)務(wù)收入17 106.57億。服裝行業(yè)發(fā)展迅速,計(jì)算機(jī)行業(yè)進(jìn)軍服裝領(lǐng)域,如何理解、區(qū)分和識(shí)別不同的服裝圖像,以及如何處理海量的服裝圖像,并從中提取出有用的信息成為當(dāng)前的研究熱點(diǎn)。除了電商的以圖搜物外,服裝的智能搭配和服裝定制都用到了服裝的圖像識(shí)別與分割。目前網(wǎng)購(gòu)服裝的檢索主要以文字檢索為主,但隨著服裝數(shù)量劇增,服裝款式變化多樣,傳統(tǒng)的圖像處理已無(wú)法滿足當(dāng)前快速、智能準(zhǔn)確的要求,而這也使得計(jì)算機(jī)在服裝圖像的處理上遇到了瓶頸。
從最初的人工標(biāo)注到使用卷積神經(jīng)網(wǎng)絡(luò)來(lái)訓(xùn)練模型,期間出現(xiàn)了很多圖像識(shí)別和分割的算法。早期的識(shí)別方法有靜態(tài)圖像中的分割、邊緣提取、運(yùn)動(dòng)檢測(cè)等,如局部模板方法、光流檢測(cè)法等,這些方法速度較慢,識(shí)別率較低,誤報(bào)率也高。隨著深度學(xué)習(xí)[2]的不斷發(fā)展,深層卷積神經(jīng)網(wǎng)絡(luò)在圖像的處理上更加針對(duì)服裝圖像的特征,具有獨(dú)特的優(yōu)勢(shì)。Kim[3]等為了識(shí)別攝像機(jī)拍攝的灰度圖像中的任務(wù),使用邊緣提取的方法提取服裝圖像的紋理特征,計(jì)算歐幾里得距離來(lái)判定特征向量之間的相似性。只使用服裝邊緣的直方圖特征向量,并不適用于圖像縮放、旋轉(zhuǎn)、扭曲等形變。Hidayati[4]等提出了一種基于視覺差異化風(fēng)格元素的服裝風(fēng)格自動(dòng)分類方法,而不用低層次特征或模糊關(guān)鍵詞來(lái)識(shí)別服裝風(fēng)格,基于服裝設(shè)計(jì)理論,確定了一組對(duì)識(shí)別服裝風(fēng)格的特定視覺風(fēng)格至關(guān)重要的風(fēng)格元素,將服裝風(fēng)格元素歸一化為上身的特征向量和下身的特征向量,通過一個(gè)判別函數(shù)來(lái)判斷輸入特征向量到類別標(biāo)簽的映射關(guān)系,利用判別函數(shù)來(lái)確定服裝的類型。Liu[5]等設(shè)計(jì)了用于服裝圖像分類檢測(cè)的Fashion Net,提出了Deep Fashion數(shù)據(jù)集,這是一個(gè)具有全面注釋的大型服裝數(shù)據(jù)集。Luo[6]等研究了頻場(chǎng)景中識(shí)別服裝的相關(guān)技術(shù),在Image Net數(shù)據(jù)集上預(yù)訓(xùn)練GoogleNet模型,并根據(jù)服裝本身的特點(diǎn)對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào),以完成服裝的檢索任務(wù)。
根據(jù)現(xiàn)有研究,目前使用較多的檢測(cè)算法有RCNN、Fast R-CNN、Faster R-CNN 和 Mask-RCNN,檢測(cè)結(jié)果的準(zhǔn)確性和速度不斷提高,但是缺點(diǎn)是需要大量的訓(xùn)練數(shù)據(jù)。Mask-RCNN[7]是目前最新的實(shí)例分割架構(gòu),引入了RoI Align,增加了一個(gè)分支用于分割任務(wù),在時(shí)間上有一定的優(yōu)化。而且Deep Fashion2數(shù)據(jù)集在Deep Fashion數(shù)據(jù)集的基礎(chǔ)上進(jìn)行了優(yōu)化。
本文基于Mask-RCNN和Deep Fashion2的服裝識(shí)別與分割,對(duì)傳統(tǒng)深度學(xué)習(xí)目標(biāo)檢測(cè)算法的訓(xùn)練數(shù)據(jù)和特征提取器做了調(diào)整,使得模型更加適用于服裝識(shí)別和服裝分割,得到的結(jié)果更加準(zhǔn)確。
近年來(lái),時(shí)尚產(chǎn)業(yè)愈發(fā)火爆,時(shí)尚服裝圖像分析成為了熱點(diǎn)?,F(xiàn)有最大的時(shí)尚數(shù)據(jù)集Deep Fashion存在標(biāo)記較為稀疏,沒有定義服裝姿態(tài),沒有對(duì)每個(gè)像素進(jìn)行掩膜標(biāo)注的缺點(diǎn)。為了解決上述缺陷,提出了Deep Fashion2[8],它是一個(gè)大規(guī)模的基準(zhǔn)集,能全面的進(jìn)行服裝分類和服裝圖像的標(biāo)注,包含49.1萬(wàn)張時(shí)裝圖像,圖片可分為13種流行的服飾類別。Deep-Fashion2定義了相對(duì)全面的任務(wù),包括服裝的檢測(cè)和識(shí)別,關(guān)鍵點(diǎn)的標(biāo)記和服裝姿態(tài)估計(jì),服裝分割,服裝的驗(yàn)證和檢索。所有的服裝圖像都有豐富的標(biāo)注。它有81萬(wàn)個(gè)服裝項(xiàng)目,每個(gè)項(xiàng)目都有豐富的注釋,其中每件都標(biāo)有不同的比例、不同大小的遮擋、不同的縮放大小、不一樣的視角、精準(zhǔn)的邊界框、密集的標(biāo)注和每個(gè)像素的掩膜。表1為Deep Fashion2與其他數(shù)據(jù)集的比較。
表1 Deep Fashion2與其他數(shù)據(jù)集的比較
Deep Fashion2的貢獻(xiàn)主要有三個(gè):(1)構(gòu)建了擁有豐富標(biāo)注的大規(guī)模數(shù)據(jù)集,推動(dòng)了時(shí)尚圖像分析的發(fā)展。擁有豐富的任務(wù)定義和最大數(shù)量的服裝標(biāo)簽。它的標(biāo)注至少是Deep Fashion的3.5倍,是Moda Net的6.7倍,是Fashion AI的8倍。(2)在數(shù)據(jù)集上定義了全部任務(wù),包括服裝檢測(cè)、服裝姿態(tài)、服裝分割與檢索。(3)使用Mask-RCNN對(duì)數(shù)據(jù)集進(jìn)行識(shí)別和分割。
1.2.1 數(shù)據(jù)標(biāo)簽
(1)類別和邊界框。對(duì)服裝圖片進(jìn)行人工標(biāo)注,并為每個(gè)服裝項(xiàng)目指定一個(gè)類別標(biāo)簽。通過重新對(duì)Deep Fashion的類別進(jìn)行分組,得到了13個(gè)沒有歧義的服裝類別。
(2)服裝標(biāo)簽、輪廓和骨架。由于不同類別的衣服(如上下半身服裝)有不同的形變和外觀變化,通過捕捉服裝的形狀和結(jié)構(gòu)將特征點(diǎn)連接。將每類服裝進(jìn)行人工標(biāo)注,每個(gè)特征點(diǎn)都被將指定為“可見”或“遮擋”。然后,將特征點(diǎn)通過一定順序連接后生成輪廓和骨架,還將標(biāo)注區(qū)分為兩種類型,即輪廓點(diǎn)和連接點(diǎn)。以上過程控制了標(biāo)簽的質(zhì)量,生成的骨架有助于人工重新檢查這些標(biāo)記是否具有較高的識(shí)別效率。只有當(dāng)輪廓覆蓋整個(gè)項(xiàng)目時(shí),標(biāo)記的結(jié)果才合格,否則將重新確定關(guān)鍵點(diǎn)。
(3)掩膜。使用兩個(gè)階段的半自動(dòng)方式為每個(gè)項(xiàng)目標(biāo)記像素掩膜。第一階段自動(dòng)從輪廓生成掩膜。在第二階段,要求人工重新定義掩膜,因?yàn)楫?dāng)呈現(xiàn)復(fù)雜的人體姿勢(shì)時(shí),生成的掩膜可能不準(zhǔn)確。例如,當(dāng)從人腿交叉?zhèn)纫晥D拍攝圖像時(shí),標(biāo)記會(huì)不準(zhǔn)確,這時(shí)掩膜需要人工調(diào)整,如圖1所示。
圖1 掩膜出現(xiàn)識(shí)別錯(cuò)誤時(shí)進(jìn)行人工調(diào)整
1.2.2基準(zhǔn)
使用Deep Fashion2的圖像和標(biāo)簽構(gòu)建了四個(gè)基準(zhǔn)。對(duì)于每個(gè)基準(zhǔn)測(cè)試,訓(xùn)練集圖像39.1萬(wàn),驗(yàn)證集圖像3.4萬(wàn),測(cè)試集圖像6.7萬(wàn)。
(1)服裝檢測(cè)。通過識(shí)別邊界框和類別標(biāo)簽來(lái)檢測(cè)圖像中的衣服。根據(jù)COCO數(shù)據(jù)集,評(píng)價(jià)標(biāo)準(zhǔn)為。
(2)特征點(diǎn)估計(jì)。預(yù)測(cè)每個(gè)圖像中檢測(cè)到的每個(gè)服裝項(xiàng)目的標(biāo)志。采用COCO用于人體姿態(tài)估計(jì)的評(píng)估指標(biāo),通過計(jì)算關(guān)鍵點(diǎn)AP pt、AP OKS=0.50pt和AP OKS=0.75pt的平均精度,其中OKS表示目標(biāo)特征點(diǎn)相似性。
(3)圖像分割。將類別標(biāo)簽(包括背景標(biāo)簽)分配給項(xiàng)目中的每個(gè)像素。評(píng)估指標(biāo)是平均精度,包括在掩膜上計(jì)算的AP mask、AP IoU=0.50mask和AP IoU=0.75mask。
在檢測(cè)模型訓(xùn)練階段,對(duì)具有初始參數(shù)的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行迭代訓(xùn)練,并通過Tensorboard來(lái)查看訓(xùn)練過程,從而不斷修改和優(yōu)化訓(xùn)練模型的參數(shù),最終得到目標(biāo)檢測(cè)模型。在模型測(cè)試階段,將待檢測(cè)樣本輸入之前得到的目標(biāo)檢測(cè)模型并得到檢測(cè)結(jié)果。主要有檢測(cè)模型的訓(xùn)練和模型測(cè)試兩個(gè)階段,如圖2所示。
圖2 服裝識(shí)別檢測(cè)模型框架
目標(biāo)檢測(cè)方法的訓(xùn)練包括6個(gè)步驟:(1)獲取Deep Fashion2數(shù)據(jù)集源文件;(2)對(duì)訓(xùn)練樣本進(jìn)行預(yù)處理,將Deep Fashion2中的json文件轉(zhuǎn)換成dataset備用;(3)將dataset輸入到Res Net中,得到對(duì)應(yīng)訓(xùn)練服圖像的特征圖,對(duì)特征圖中的每一點(diǎn)設(shè)定預(yù)定的RoI,得到多個(gè)候選RoI;(4)將候選的RoI送入RPN進(jìn)行二分類(輸出為前景或背景)和BB(bounding box)回歸,過濾掉一部分候選的RoI,對(duì)剩下的RoI進(jìn)行RoIAlign操作;(5)將得到的RoI進(jìn)行N類別分類、BB回歸和MASK生成;(6)重復(fù)步驟4和步驟5,訓(xùn)練完所有的服裝樣本后得到最終的檢測(cè)模型。
服裝檢測(cè)的方法包括兩個(gè)步驟:(1)利用測(cè)試的服裝樣本對(duì)檢測(cè)模型進(jìn)行測(cè)試,最終得到新樣本的檢測(cè)結(jié)果。(2)測(cè)試結(jié)果不符合要求時(shí)重新進(jìn)行模型的調(diào)整與參數(shù)訓(xùn)練,并且重新訓(xùn)練模型,若測(cè)試結(jié)果符合要求,則得到最終的目標(biāo)檢測(cè)模型。
Mask-RCNN是何凱明等人在Faster R-CNN[12]基礎(chǔ)上提出的目標(biāo)實(shí)例分割模型。該模型能夠有效地檢測(cè)圖像中的目標(biāo)并為每個(gè)實(shí)例生成高質(zhì)量的分割掩碼。如圖3所示,該模型通過在Faster R-CNN已存在的B-box識(shí)別分支旁并行地添加了一個(gè)用于預(yù)測(cè)目標(biāo)掩碼的分支。掩碼分支是一個(gè)應(yīng)用到每個(gè)RoI上的小型FCN(全卷積網(wǎng)絡(luò)),能夠預(yù)測(cè)RoI中每個(gè)像素所屬的類別,從而實(shí)現(xiàn)準(zhǔn)確的實(shí)例分割。
圖3 Mask-RCNN結(jié)構(gòu)圖
Mask-RCNN的技術(shù)要點(diǎn)主要有三個(gè):(1)使用Res Net+FPN來(lái)提取圖像特征。(2)使用RoIAlign替代RoIPooling,引入了一個(gè)插值過程,先通過雙線性插值到14×14,再pooling到7×7,解決了僅通過Pooling直接采樣帶來(lái)的Misalignment對(duì)齊問題。(3)每個(gè)RoIAlign對(duì)應(yīng)k×m2維度的輸出。k對(duì)應(yīng)類別個(gè)數(shù),即輸出k個(gè)掩膜,m對(duì)應(yīng)池化分辨率7×7。
RoI Align是取消量化操作和整數(shù)化操作,并保留小數(shù),使用雙線性內(nèi)插的方法獲得坐標(biāo)為浮點(diǎn)數(shù)的圖像數(shù)值,將整個(gè)特征聚集過程轉(zhuǎn)化為一個(gè)具有連續(xù)性的操作。RoI Align不是簡(jiǎn)單的補(bǔ)充出候選區(qū)域邊界上的坐標(biāo)點(diǎn),然后進(jìn)行池化,而是重新設(shè)計(jì)。圖4中虛線框表示的是5×5的特征圖。虛線部分表示的是feature map,實(shí)線表示RoI,如圖4所示將RoI切分成4個(gè)2×2的單元格,之后在每個(gè)實(shí)線的方形區(qū)域中選擇4個(gè)采樣點(diǎn),除了這4個(gè)點(diǎn)還選取離該采樣點(diǎn)最近的4個(gè)特征點(diǎn),如圖4中黑色小方格的4個(gè)頂點(diǎn),并且通過雙線性插值的方法得到每個(gè)采樣點(diǎn)的像素值;最后計(jì)算每個(gè)小區(qū)域的像素值,并生成2×2的特征圖。
圖4 RoI Align原理
FPN的提出是為了實(shí)現(xiàn)更好的feature maps融合,FPN采用了自上而下的側(cè)向連接來(lái)融合不同尺度的特征,使用3×3的卷積來(lái)消除混疊現(xiàn)象,來(lái)預(yù)測(cè)不同尺度的特征,不斷重復(fù)以上的過程,最終得到最佳分辨率。FPN的優(yōu)點(diǎn)在于,它可以在不增加計(jì)算量的情況下提高多個(gè)尺度上小物體的準(zhǔn)確性和快速檢測(cè)能力。圖5為特征融合原理圖。左邊的底層特征層通過1×1的卷積得到與上一層特征層相同的通道數(shù);上層的特征層通過上采樣得到與下一層特征層一樣的長(zhǎng)和寬再進(jìn)行相加,從而得到了一個(gè)融合好的新的特征層。
圖5 特征融合原理圖
Mask-RCNN的損失函數(shù)為:
式中L cls和L box與Fast RCNN中定義的分類和回歸損失相一致,mask分支對(duì)于每一個(gè)RoI都有k×m2維度的輸出,k個(gè)分辨率為m×m的二值mask。L mask為平均二值交叉熵?fù)p失。對(duì)于一個(gè)屬于第k個(gè)類別的RoI,L mask僅僅考慮第k個(gè)mask。
目前深度學(xué)習(xí)的學(xué)習(xí)框架有很多,深度學(xué)習(xí)的模型需要大量時(shí)間和海量訓(xùn)練樣本進(jìn)行訓(xùn)練,在考慮到硬件水平的前提下,試驗(yàn)使用COCO 2014數(shù)據(jù)集作為預(yù)訓(xùn)練模型。COCO 2014數(shù)據(jù)集擁有9 000多張圖片,包含了自然圖片和生活中常見的物品圖片,也有較多的服裝圖像,因此試驗(yàn)采用遷移學(xué)習(xí)方法將COCO 2014數(shù)據(jù)集訓(xùn)練得到的權(quán)重模型作為服裝檢測(cè)算法模型的預(yù)訓(xùn)練模型,在此預(yù)訓(xùn)練模型的基礎(chǔ)上使用Deep Fashion2作為訓(xùn)練集再進(jìn)行樣本訓(xùn)練,通過遷移學(xué)習(xí)的方式不但可提升訓(xùn)練效率,而且能有效地提升檢測(cè)模型的整體檢測(cè)精度和模型性能。
由于Deep Fashion2已經(jīng)得到了各圖片的json文件,故不需要再使用Lebel Me進(jìn)行手動(dòng)標(biāo)注,只需將json文件轉(zhuǎn)換為dataset即可。試驗(yàn)在Ubuntu18.04、CUDA9.0環(huán)境下進(jìn)行。試驗(yàn)參數(shù)設(shè)置如下:初始學(xué)習(xí)率0.000 01,每迭代2 000次縮小10倍。為了使訓(xùn)練效果和模型性能更好,選取服裝圖片有不同遮擋、不同縮放和不同姿態(tài)。
得到訓(xùn)練模型后,使用測(cè)試代碼進(jìn)行測(cè)試,得到的測(cè)試效果如圖6所示。
圖6 測(cè)試效果
試驗(yàn)選取了不同服裝姿態(tài)的圖片,其中矩形框表示檢測(cè)服裝的位置,矩形框上的數(shù)字表示的是屬于不同服裝類別的概率大小。為了提高檢測(cè)的準(zhǔn)確率,將模型中的矩形框概率的閾值設(shè)置為0.7。一方面減少了網(wǎng)絡(luò)中確定服裝圖像邊框的計(jì)算量,提升計(jì)算速度。另一方面防止發(fā)生過擬合。經(jīng)過測(cè)試,把NMS(non maximum suppression)在RPN網(wǎng)絡(luò)的預(yù)測(cè)階段在proposal layer的閾值設(shè)定為0.7時(shí),試驗(yàn)結(jié)果較好,被標(biāo)注的服裝識(shí)別概率均高于0.764。
試驗(yàn)中也存在識(shí)別失敗的例子,如圖7所示。原因可能是服裝占比較大或較小、形變較明顯、放大不正規(guī)和有較大的遮擋等。
由于服裝本身的易形變和拍照的角度問題,總體上Mask-RCNN識(shí)別率較高,達(dá)到了預(yù)期的效果。為了提高識(shí)別準(zhǔn)確率,可以將訓(xùn)練集的數(shù)據(jù)進(jìn)行篩選。也可以增加訓(xùn)練集數(shù)量來(lái)提高訓(xùn)練模型的性能。
圖7 服裝識(shí)別失敗例子
基于Mask-RCNN和Deep Fashion2的服裝檢測(cè)模型可以更好的識(shí)別和分割服裝,更好地促進(jìn)服裝識(shí)別算法的發(fā)展,更好地理解時(shí)尚圖像。通過使用Mask-RCNN對(duì)Deep Fashion2數(shù)據(jù)集進(jìn)行測(cè)試,得到較為精確的結(jié)果,可以通過分割得到的服裝進(jìn)行智能搭配等。這為探索服裝形象的多領(lǐng)域?qū)W習(xí)提供了基礎(chǔ),也為以后進(jìn)一步優(yōu)化服裝提取算法提供了借鑒。同時(shí),在Deep Fashion2中引入更多的評(píng)估指標(biāo),例如深度模型的大小、運(yùn)行時(shí)間和內(nèi)存消耗,可解釋現(xiàn)實(shí)場(chǎng)景中的時(shí)尚圖像。