黃玥玥, 陳 曉, 王海燕, 姚海洋
(陜西科技大學 電子信息與人工智能學院, 陜西 西安 710016)
人體衣物外觀對個體具有強烈的表征意義,其對社會生活多個方面有著廣泛且深刻的影響。在時尚領域,顏色作為服裝感知的最主要特征,可鮮明地表現(xiàn)人類情感,塑造迥然不同的形象[1];在電商領域,顏色搭配對服裝的銷售具有重要影響[2-4];在安全領域,利用大量交叉監(jiān)控視頻搜索人物時,外部衣物屬性作為重要的識別特征,可聯(lián)合實現(xiàn)更準確地實時人物捕捉與分析[5-7],因此,如何高效、準確地識別人體衣物屬性受到多個領域的廣泛關注。
傳統(tǒng)人體衣物顏色識別方法基于手工特征結合分類器,手工設計衣物各種特征并從背景中分離出來,然后利用機器學習方法K-means[8]、Mean shift[9]等作為離散數(shù)據(jù)的聚類算法,通過重建衣物的顏色空間數(shù)據(jù)提高對衣物顏色的識別。這些方法通常用手工判定邊界方式,會消耗大量的人工成本,且當圖像背景顏色與服裝顏色相似時,識別算法會將其顏色聚為一類,導致對衣物顏色識別精確率過低?;谏疃葘W習的衣物顏色識別,采用端到端的深度神經(jīng)網(wǎng)絡結構,通過聯(lián)合優(yōu)化將特征提取和分類器合并成統(tǒng)一的框架,使得識別模型更能表征數(shù)據(jù)特點。如Ivanov等[10]設計了以LeNet為基本網(wǎng)絡結構的模型,可自動提取圖像中人體衣物特征,但該方法識別精確率僅達到78%。Roy[11]利用YOLOv3和殘差網(wǎng)絡,有效提取了圖像中衣物的位置信息,利用DeepFashion[12]數(shù)據(jù)集進行訓練,實現(xiàn)了服裝的邊框回歸檢測;通過在測試數(shù)據(jù)集中進行衣物顏色的識別驗證,準確度達89%。Chen等[13]提出一種改進卷積神經(jīng)網(wǎng)絡(CNN)用于對紅、綠、藍及黑色4種衣物顏色識別,獲得了92.52%的平均精確率。由以上總結可知,已有方法僅對少數(shù)衣物顏色可實現(xiàn)較準確的識別,無法適用于真實情況特別是顏色受到嚴重扭曲的狀況,且多數(shù)方法均只針對單一場景,無法適應復雜變化的環(huán)境。
針對以上問題,本文提出基于ClothResNet模型的人體衣物顏色識別方法,采用端對端的技術實現(xiàn)對衣物輪廓的自動提取,最終實現(xiàn)人體衣物顏色的識別,克服了手動分離衣物的繁瑣性,有效提高了衣物顏色識別的準確率,實現(xiàn)了對多種人體衣物顏色高效、準確識別的目的。
為訓練針對人體衣物顏色識別的ClothResNet網(wǎng)絡模型,需要構建一個大規(guī)模的人體衣物顏色標注數(shù)據(jù)集。本文選擇活動模板回歸(active template regression,ATR)[14]數(shù)據(jù)集中的部分圖像進行衣物分割、標注、擴充,構建了專門用于人體衣物顏色識別的數(shù)據(jù)集,命名為pcaparsing(people clothes attribute parsing)。該數(shù)據(jù)集包含紅、橙、黃、綠、青、藍、紫、白、黑、棕、粉和灰12種顏色的衣物,每個樣本包括原始彩色圖像和對應的掩碼圖。掩碼圖是通過在原始彩色圖像上分割提取衣物輪廓,并在對應位置標注其所屬顏色獲得的。圖1示出pcaparsing中示例圖片。
圖1 樣本集示例圖片F(xiàn)ig.1 Sample image of dataset.(a) Sample 1;(b)Sample 2;(c) Sample 3;(d) Sample 4
由于ATR數(shù)據(jù)集中可用于網(wǎng)絡訓練的圖像數(shù)據(jù)僅有5 639張,且顏色分布不均勻,導致模型難以學習到少量屬性的全部特征,增大了模型訓練的難度;因此,本文對原始數(shù)據(jù)進行了擴充,以防止神經(jīng)網(wǎng)絡學習到不相干的模式,從根本上提升了網(wǎng)絡的泛化性能和對衣物屬性的識別性能。本次數(shù)據(jù)擴充主要針對顏色數(shù)量較少的數(shù)據(jù)進行處理,采用的數(shù)據(jù)增強方式包括裁剪、上下移動、水平翻轉和垂直翻轉等。通過數(shù)據(jù)擴充,每種顏色的圖像數(shù)量均達到了 1 000 張左右,從而在數(shù)據(jù)集中保持了每種類別的圖像數(shù)量呈現(xiàn)均勻分布。圖2示出數(shù)據(jù)擴充后的輸入數(shù)據(jù)和對應的標注圖示例。
圖2 數(shù)據(jù)擴充示例Fig.2 Data expansion example
ClothResNet人體衣物顏色識別網(wǎng)絡主要包含輸入端、主干網(wǎng)絡以及輸出端3個部分,網(wǎng)絡結構如圖3所示。
圖3 ClothResNet 網(wǎng)絡結構Fig.3 ClothResNet network structure
1.2.1 輸入端
在訓練過程中,每次輸入16張含有人體衣物的彩色圖像,大小設置為3×256像素×256像素。
1.2.2 主干網(wǎng)絡
主干網(wǎng)絡由3個模塊組成,分別是殘差網(wǎng)絡、改進的金字塔池化模塊和坐標注意力模塊。
模塊1:殘差網(wǎng)絡采用ResNet18作為基礎網(wǎng)絡,并將ResNet18前2個殘差塊卷積核輸出通道設置為64,卷積核大小設置為3×3×1,并舍棄后面的池化和全連接層。此模塊通過高低級特征的融合,能夠減少特征信息的丟失,高效地提取圖像全局特征,并使網(wǎng)絡較快地達到收斂狀態(tài)。
模塊2:改進的金字塔池化模塊將殘差網(wǎng)絡提取到的特征進行多尺度變換,以便進行串接。傳統(tǒng)的金字塔池化結構未能對衣物輪廓信息進行更好的提取,因此,本文在傳統(tǒng)的金字塔池化結構基礎上增加了4個特征塊,分別設計為4×4、5×5、7×7和 8×8, 這樣可減少不同區(qū)域之間的上下文信息丟失,從而增強對圖像中不同特征的提取。該模塊的結構如圖4所示。
圖4 改進的金字塔池化網(wǎng)絡結構Fig.4 Optimized pyramid pooled network structure
模塊3:坐標注意力模塊,其網(wǎng)絡結構如圖5所示。該模塊的輸入特征圖大小為1 024×32像素×32像素,通過2個卷積核大小分別為(32,1)和(1,32)的卷積層對輸入特征圖在水平和垂直方向上進行編碼,以捕捉一個衣物圖像中空間方向上的長期依賴關系,并在另一個空間方向上保持準確的位置信息,這有助于網(wǎng)絡更準確地定位感興趣的對象。接下來,將編碼后的特征圖連接起來并送入一個1×1的共享卷積層進行轉換,得到32×1像素×64像素大小的特征圖。然后對該特征圖進行歸一化和激活函數(shù)處理。此外,利用2個1×1卷積層分別將編碼后的2個特征圖轉換為與輸入具有相同通道數(shù)的向量,并經(jīng)過Sigmoid激活函數(shù)處理。最后,將2個特征圖相乘得到注意塊的輸出,其大小為1 024×32像素×32像素。這樣設計的坐標注意力模塊可更好地捕捉衣物輪廓信息,并提高感興趣區(qū)域的準確性。
1.2.3 輸出端
輸入端為3×256像素×256像素的彩色圖像,經(jīng)主干網(wǎng)絡輸出的圖像大小為128像素×128像素,在輸出端通過反卷積層和線性修正單元得到與輸入圖像等大的特征圖。
本文用2種評價指標衡量提出模型的有效性,分別為平均交并比、精確率。平均交并比M反映真實圖像與預測圖像的重合度,從而衡量衣物分割準確率,其公式如下:
式中:n為總體分類數(shù),在本文中n為12;x為實際類別樣本和預測類別樣本的交集和并集之比,其定義如下:
式中:NTP為被模型分類正確的正類樣本數(shù)量;NFN為被模型分類錯誤的正樣本數(shù)量;NFP為被模型分類錯誤的負類樣本數(shù)量。
在得到預測圖像后,統(tǒng)計其中分割出的衣物顏色分類是否正確。針對最終衣物顏色識別結果,另需使用精確率來評價最終分類結果的準確度,計算公式如下:
在模型設計中,通常會將數(shù)據(jù)集劃分為訓練集和測試集,其中訓練集用于訓練模型參數(shù),而測試集則用于評估最終訓練好的模型的性能。本文中,數(shù)據(jù)集的劃分比例為8∶2,即訓練集占80%,測試集占20%。在訓練過程中,將訓練數(shù)據(jù)集輸入ClothResNet網(wǎng)絡進行訓練,通過反向傳播調整網(wǎng)絡參數(shù)。
本文所有實驗均在Tesla V100環(huán)境下使用Paddle工具箱運行進行訓練,訓練過程中,訓練和測試圖像的尺寸為3×256像素×256像素,使用LeakyReLU(斜率為0.2)和Adagrad算法進行訓練,損失函數(shù)為交叉熵損失,初始學習率為0.000 2,批處理大小設置為16,訓練120輪。
圖6為用K-means、Hog-KNN、卷積神經(jīng)網(wǎng)絡(CNN)以及本文方法ClothResNet對12種人體衣物顏色的識別精確率對比圖。
圖6 K-means、Hog-KNN、CNN、ClothResNet識別顏色精確率的對比圖Fig.6 Comparison diagram of color recognition accuracy of K-means,Hog-KNN, CNN and ClothResNet
從圖6可看出,在本文構建的數(shù)據(jù)集上,ClothResNet模型對衣物顏色識別精確率均優(yōu)于同類方法。由于K-means方法是將圖像中的所有像素聚集在一起,而不是衣物,因此對衣物顏色的預測不準確;Hog-KNN用Hog方法提取特征后再進行聚類信息提取,從而得到了相對較好的結果,但其對某些顏色的提取能力較差,如在對灰色衣物進行識別時精確率僅有65%左右;利用深度學習方法則能夠均勻地捕獲衣物屬性信息,CNN方法相較于傳統(tǒng)方法也具有較高的識別精確率,但其網(wǎng)絡結構簡單,不能提取圖像中的深層語義信息,從而造成識別率不高;ClothResNet模型對每種顏色的識別都取得了較高的識別精確率,從而驗證了本文模型的有效性。相比其他網(wǎng)絡,本文提出的方案能夠有針對性地解決對人體衣物顏色識別率不高的問題。對金字塔池化模塊進行改進并融入坐標注意力機制提升了網(wǎng)絡的局部特征提取能力,降低了識別錯誤率。
為驗證本文構建的人體衣物顏色識別模型ClothResNet加入各個模塊的有效性、ResNet18作為骨干網(wǎng)絡的優(yōu)勢以及擴充樣本對算法的影響,選取深度學習中典型的骨干網(wǎng)絡AlexNet和VGG11作為ResNet18對比網(wǎng)絡,對基于ResNet18網(wǎng)絡僅加入金字塔池化的模型(ResNet18+PP)、ResNet18加入改進的金字塔池化模型(ResNet18+OPP)和基于ResNet18網(wǎng)絡僅使用坐標注意力機制的模型(ResNet18+CA) 各自分別在原始數(shù)據(jù)集與樣本擴充后的數(shù)據(jù)集進行實驗,結果如表1、2所示。
表1 原始數(shù)據(jù)集消融實驗對比Tab.1 Comparison of ablation experiments with original dataset
從表1、2可看出,相比在原始數(shù)據(jù)集擴充樣本后各個網(wǎng)絡模塊對人體衣物的顏色識別結果得到了提升,從而證明對樣本進行的多種變換提高了網(wǎng)絡的泛化性能。從表2可看出,使用骨干網(wǎng)絡ResNet18與AlexNet、VGG11相比,能夠在參數(shù)量遠小于其它二者的情況下,達到相對較好的分割和識別效果。對于原始數(shù)據(jù)集,在加入優(yōu)化的金字塔池化模塊和坐標注意力機制后對于衣物的分割和顏色的識別都得到了提升。從表2中比較ResNet18+PP與ResNet18+OPP可知,原始金字塔池化模塊對衣物的分割交并比為45.2%,而改進的金字塔模塊提升了5%;ResNet18+PP對衣物顏色識別精確率為71.50%,而ResNet18+OPP在此基礎上提升5.4%。在骨干網(wǎng)絡中加入坐標注意力后分割交并比提升了3.2%,也有效提升了網(wǎng)絡的識別性能,識別精確率相比ResNet18提升6.45%。本文的ClothResNet模型融合改進的金字塔池化模塊和坐標注意力模塊,在ResNet18的基礎上只增加了10.41 MB的參數(shù)量,而對衣物顏色識別精確率達到了94.49%。
表2 擴充數(shù)據(jù)集消融實驗對比Tab.2 Comparison of ablation experiments with extended dataset
本文提出了人體衣物顏色識別模型ClothResNet,模型以ResNet18為基礎網(wǎng)絡,融入了改進的金字塔模塊、坐標注意力機制,最終實現(xiàn)了對12種人體衣物顏色的高效識別。該方法克服了傳統(tǒng)人體衣物顏色識別方法繁雜的衣物分割步驟,以及簡單卷積神經(jīng)網(wǎng)絡(CNN)模型識別效率低的缺點。從實驗結果來看,提出的ClothResNet模型較傳統(tǒng)方法和簡單的CNN模型有更好的衣物顏色識別效果,達到了94.49%的平均識別精確率。
本模型只針對12種人體衣物顏色進行識別,研究仍存在不足,現(xiàn)實中的人體衣物顏色種類遠超于 12種。 在后續(xù)的工作中,將擴大人體衣物顏色樣本圖像庫,通過研究神經(jīng)網(wǎng)絡的各層結構,構建出能識別更多種類人體衣物顏色的網(wǎng)絡模型。