劉鳳華, 劉兆琪, 劉衛(wèi)光, 趙紅升
(中原工學(xué)院 計(jì)算機(jī)學(xué)院, 河南 鄭州 450007)
顏色是服裝的重要屬性,是用戶購(gòu)買服裝時(shí)的主要關(guān)注點(diǎn)的之一;準(zhǔn)確預(yù)測(cè)服裝顏色流行趨勢(shì),對(duì)整個(gè)服裝行業(yè)的生產(chǎn)銷售具有重大的指導(dǎo)意義[1]。目前,服裝流行色的研究方法可主要分為兩大類:一類是基于經(jīng)驗(yàn)的主觀分析方法;另一類是基于統(tǒng)計(jì)數(shù)據(jù)的建模分析方法。柴志君等以中國(guó)紡織信息中心發(fā)布的2012-2019春夏秋冬流行色方案為數(shù)據(jù)集,考慮流行色變化與季節(jié)要素的關(guān)聯(lián)性,結(jié)合統(tǒng)計(jì)分析與灰色關(guān)聯(lián)分析方法,通過建立曲線擬合模型分析了服裝的流行顏色[2];江莎莉以中國(guó)紡織信息中心發(fā)布的2000-2019春夏秋冬流行色方案為數(shù)據(jù)集,采用線性趨勢(shì)分析法、滑動(dòng)平均法和Mann-Kendall法,對(duì)流行色分布規(guī)律進(jìn)行了研究[3];張婕針對(duì)服裝流行色傳統(tǒng)預(yù)測(cè)方法存在的預(yù)測(cè)精度低、結(jié)果不可靠問題,采用模糊C均值聚類算法對(duì)數(shù)據(jù)進(jìn)行聚類處理,并在構(gòu)成訓(xùn)練樣本集后用支持向量機(jī)技術(shù)訓(xùn)練樣本,完成模型學(xué)習(xí),建立了預(yù)測(cè)模型[4];黃偉在比較市場(chǎng)調(diào)研法、函數(shù)模型法、主管判斷法3種服裝流行色預(yù)測(cè)方法優(yōu)劣的基礎(chǔ)上,提出了利用云計(jì)算技術(shù)設(shè)計(jì)預(yù)測(cè)模型的思路[5]。分析文獻(xiàn)發(fā)現(xiàn),目前的服裝流行色研究主要存在3個(gè)方面的問題:其一是數(shù)據(jù)可用性問題,即無論是官方公布數(shù)據(jù)還是市場(chǎng)調(diào)研數(shù)據(jù),都會(huì)受到所采用數(shù)據(jù)時(shí)間段的限制,且實(shí)時(shí)性不高;其二是模型實(shí)用性問題,即所建立模型大都只是用于泛泛討論服裝的流行色,而缺乏進(jìn)一步針對(duì)款式、品牌等的細(xì)致研究;其三是流行色討論的單一性,即大都局限于對(duì)服裝單一流行色系的討論,而未涉及服裝的流行色組合。本文提出一種基于實(shí)時(shí)挖掘的互聯(lián)網(wǎng)數(shù)據(jù)進(jìn)行服裝流行色分析的方法,從互聯(lián)網(wǎng)平臺(tái)獲取實(shí)時(shí)顏色數(shù)據(jù)并得到準(zhǔn)確的流行色數(shù)據(jù)集,利用深度學(xué)習(xí)算法建立模型,在獲取不同服裝類別的顏色和銷量信息后,分析服裝顏色的流行趨勢(shì),進(jìn)一步建立不同關(guān)鍵字下的服裝顏色預(yù)測(cè)模型。
本文采用Selenium框架的Webdriver工具,以測(cè)試方式運(yùn)行瀏覽器,按設(shè)定步驟對(duì)電商平臺(tái)進(jìn)行操作:首先,搜索服裝并按評(píng)論數(shù)量從多到少進(jìn)行排序,獲取頁面內(nèi)所有關(guān)于服裝的信息,建立服裝唯一性的特征表;然后,設(shè)置時(shí)間間隔,并定時(shí)更新,以保障數(shù)據(jù)獲取的實(shí)時(shí)性和可靠性;最后,將提取的數(shù)據(jù)存入本地文件中。由于網(wǎng)頁展示數(shù)據(jù)使用的是Ajax異步加載方式,在頁面生成時(shí)只能展示數(shù)據(jù)總量的一半,因此必須通過瀏覽器操作,下拉滾動(dòng)條,才能加載所有的數(shù)據(jù)。
基于Python軟件的request庫,通過構(gòu)造url和請(qǐng)求條信息,向目標(biāo)服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求;返回服務(wù)器接口提供的json數(shù)據(jù),得到商品詳情頁的評(píng)論數(shù)據(jù)、圖片數(shù)據(jù)、時(shí)間數(shù)據(jù)等,并存入本地文件中。對(duì)于圖片數(shù)據(jù)則需在圖片預(yù)處理后進(jìn)行保存。根據(jù)電商平臺(tái)的先購(gòu)物再評(píng)論規(guī)則,可以把評(píng)論的數(shù)量視作商品的銷量。因此,通過匯總評(píng)論數(shù)量可得到相應(yīng)的銷量信息。
在數(shù)據(jù)抓取時(shí),采用Chromedriver工具抓取服裝中的評(píng)論數(shù)據(jù)和圖片數(shù)據(jù),共計(jì)抓取了10 000張圖片,并將它們分成了33類,包括男士上衣、男士下裝,女士上衣和女士下裝等。將評(píng)論數(shù)據(jù)和圖片數(shù)據(jù)組成鍵值對(duì),并根據(jù)評(píng)論數(shù)量(評(píng)論數(shù)量>1 000條時(shí))決定要抓取的圖片,對(duì)圖片進(jìn)行數(shù)據(jù)清洗后將有效數(shù)據(jù)存儲(chǔ)到本地[6]。
本文構(gòu)建一種基于MobileNetV3[7]的輕量級(jí)網(wǎng)絡(luò)模型。該模型采用Depthwise(縮寫為DW)卷積和Pointwise(縮寫為PW)卷積,比傳統(tǒng)模型的參數(shù)量大為減少,因此可將其直接部署在移動(dòng)端的設(shè)備上。MobileNetV3輕量級(jí)網(wǎng)絡(luò)模型的block結(jié)構(gòu)如圖1所示。
圖1 MobileNetV3輕量級(jí)網(wǎng)絡(luò)模型的block結(jié)構(gòu)
構(gòu)建MobileNetV3輕量級(jí)網(wǎng)絡(luò)模型的方法為:首先,用倒殘差結(jié)構(gòu)進(jìn)行升維操作,將原先低緯度密集的信息抽象到高維度空間,并在高維度空間采用不同的激活函數(shù)來濾除無關(guān)信息;然后,采用通道域注意力機(jī)制(Squeeze-and-Excitation,SE)模塊,增強(qiáng)通道間的特征表達(dá)能力;最后,用1×1的卷積核進(jìn)行降維。SENet[8]是通過對(duì)每個(gè)通道的加權(quán),使原特征圖分別點(diǎn)乘權(quán)值,達(dá)到對(duì)不同特征通道進(jìn)行資源分配的。但是,它忽略了空間維度上的注意力機(jī)制。為此,本文在原有網(wǎng)絡(luò)模型的基礎(chǔ)上,將倒殘差結(jié)構(gòu)中的SE模塊替換為融合空間域和通道域的注意力機(jī)制(Convolutional Block Attention Module,CBAM)模塊[9]。CBAM模塊的結(jié)構(gòu)如圖2所示。CBAM模塊包括兩部分:第一部分用于對(duì)輸入特征圖進(jìn)行通道域注意力機(jī)制的操作,并將其與輸入特征圖相乘,以得到空間域注意力機(jī)制模塊需要的輸入特征;第二部分用于對(duì)新的輸入特征進(jìn)行空間域注意力機(jī)制的操作,并將其與新的輸入特征圖相乘,以得到最終的生成特征。
圖2 CBAM模塊的結(jié)構(gòu)
將圖像分類后,需要判斷圖像中人物的服裝顏色。由于每張圖像都含有大量的干擾信息,因此需要將無關(guān)區(qū)域分割出來,以便有針對(duì)性地分析服裝顏色。
GrabCut算法可用于人工選取矩形的感興趣區(qū)域。其矩形框外為背景,框內(nèi)為前景。首先通過GrabCut算法獲取人物區(qū)域,再通過形態(tài)學(xué)計(jì)算前景區(qū)域的像素點(diǎn)數(shù)量,以得到人物區(qū)域占整張圖像的比例,即服裝區(qū)域所占的比例。
GrabCut算法采用的是s-t網(wǎng)絡(luò)。采用s-t網(wǎng)絡(luò),能針對(duì)前景區(qū)域與背景區(qū)域建立高斯混合模型(Gaussian Mixed Model,GMM),而GMM能通過參數(shù)的迭代更新來有效地提高算法的精度。
K-means顏色聚類算法是一種基于數(shù)據(jù)劃分的無監(jiān)督聚類算法。它能在不知道樣本集所屬標(biāo)簽或類別的情況下,借助樣本間的相似性完成自主聚類[10],將具有某些相似性的數(shù)據(jù)點(diǎn)歸為一個(gè)群集。
該算法的主要步驟為:①隨機(jī)選取k個(gè)像素點(diǎn),作為初始聚類質(zhì)心(c1,c2,…,ck);②更新聚類質(zhì)心,包括分配聚類(即計(jì)算數(shù)據(jù)集中每個(gè)像素點(diǎn)xj與各個(gè)聚類質(zhì)心的歐式距離,并將像素點(diǎn)歸于與聚類質(zhì)心最近的聚類)與移動(dòng)質(zhì)心(即計(jì)算每個(gè)聚類中所有像素點(diǎn)的歐氏距離之和,并將聚類質(zhì)心重定位到平均位置);③迭代步驟②,直到每個(gè)聚類中所有像素點(diǎn)的歐氏距離之和達(dá)到最小為止。
實(shí)時(shí)數(shù)據(jù)獲取模塊用于實(shí)時(shí)獲取大型電商平臺(tái)的服裝評(píng)論和圖像數(shù)據(jù),并在預(yù)處理所獲取數(shù)據(jù)后進(jìn)行數(shù)據(jù)的持久化存儲(chǔ)。對(duì)圖像的預(yù)處理包括統(tǒng)一圖像格式和統(tǒng)一圖像文件名格式,將所有圖像通過處理函數(shù)統(tǒng)一成.jpg格式,在文件名中加上時(shí)間戳后通過算法去除雷同的圖像,建立服裝基礎(chǔ)信息表,并保存服裝的評(píng)論和所獲取的其他屬性數(shù)據(jù)。
服裝圖像分類模塊用于:針對(duì)服裝圖像采用深度學(xué)習(xí)算法進(jìn)行分類,為每個(gè)圖像類別建立數(shù)據(jù)表,保存圖像的分類結(jié)果,并建立分類表與服裝基本信息表的關(guān)聯(lián)。
服裝圖像分類過程包括3個(gè)階段:第一個(gè)階段是數(shù)據(jù)的預(yù)處理,即采用Mosaic數(shù)據(jù)增強(qiáng)、MixUp混類增強(qiáng)(包括圖像的水平翻轉(zhuǎn)、隨機(jī)裁剪、色域扭曲),將圖像尺寸固定在224像素×224像素×3通道;第二個(gè)階段是構(gòu)建合適的特征提取網(wǎng)絡(luò)并進(jìn)行圖像的特征提取(由于MobileNetV3模型的參數(shù)量小、可進(jìn)行實(shí)時(shí)性檢測(cè)、易于部署在移動(dòng)端等,因此可基于MobileNetV3模型,構(gòu)建一個(gè)融合多策略的分類模型);第三個(gè)階段是模型的訓(xùn)練,包括訓(xùn)練階段和測(cè)試階段。訓(xùn)練階段,將訓(xùn)練集輸入搭建好的網(wǎng)絡(luò)模型中,并將訓(xùn)練好的參數(shù)模型保存起來;測(cè)試階段,把圖像輸入訓(xùn)練好的網(wǎng)絡(luò)模型中,并在輸出圖像的類別后進(jìn)行分類。服裝圖像分類模塊的算法流程如圖3所示。
圖3 服裝圖像分類模塊的算法流程
服裝圖像主顏色提取模塊用于分析圖像像素點(diǎn)的顏色分量,確定服裝的顏色大類,建立服裝圖像的主顏色表,并存儲(chǔ)服裝的主顏色。服裝顏色大類分為單色服裝、混色服裝(包括雙色、三色服裝)。
服裝主顏色的提取主要采用GrabCut方法和K-means方法。
GrabCut方法的作用是提取前景區(qū)域[11],并將前景區(qū)域的顏色設(shè)置成白色,背景區(qū)域的顏色設(shè)置成黑色,以組成前景值為1、背景值為0且與原始圖像大小一致的掩模圖像。將掩模圖像與原始圖像做“與”計(jì)算,得到的圖像是包含前景圖像和黑色背景的圖像,且黑色區(qū)域所占比例為背景所占整張圖像的比例。將原背景區(qū)域所占的像素點(diǎn)去除,剩下的部分即前景區(qū)域所有顏色的像素點(diǎn)。原始圖像經(jīng)過與掩膜圖像的“與”計(jì)算,可得到提取前景后的圖像,而且此時(shí)背景全部為黑色。圖像提取前景區(qū)域的效果如圖4 所示。
(a) 原始圖像 (b) 提取前景后的圖像
K-means方法的作用是找出圖像中能代表整張圖像的n種顏色,并針對(duì)這n種顏色統(tǒng)計(jì)圖像中的像素點(diǎn)數(shù)量。分別將前景區(qū)域每種顏色的像素點(diǎn)數(shù)量與前景區(qū)域總像素點(diǎn)數(shù)量相除,就能得到前景區(qū)域每種顏色的占比。某圖像中5種顏色的占比如表1所示。
表1 某圖像中5種顏色的占比
由表1可知,灰紫色可以作為服裝的主顏色。
在服裝圖像主顏色提取時(shí),首先將要識(shí)別的圖像輸入程序中,創(chuàng)建一個(gè)和原始圖像尺寸一致的掩模圖像;然后利用GrabCut算法分割前景與背景,得到包括前景輪廓信息的掩膜圖像,并將掩模圖像中背景區(qū)域標(biāo)記為黑色,前景區(qū)域標(biāo)記為白色;再將原始圖像與掩模圖像做“與”運(yùn)算,得到去除背景的圖像;最后進(jìn)行K-means聚類運(yùn)算,得到圖像每種顏色像素點(diǎn)的占比。占比最大的顏色即為圖像的主顏色。主顏色提取算法的偽代碼為:
Begin
cv2.grabCut(原始圖像,掩模圖像,ROI區(qū)域,臨時(shí)背景,臨時(shí)前景,迭代次數(shù),cv2.GC_INIT_WITH_RECT)
mask = np.where((掩模圖像== 2)|(掩模圖像== 0), 0, 1).astype(‘uint8’)
ratio_brown = cv2.countNonZero(mask)/(原始圖像尺寸/ 3)
bPercentage = 1 - np.round(ratio_brown, 2)
cutimg *= mask [:, :, np.newaxis]
kmeans = KMeans(n_clusters = CLUSTERS, random_state=0)
hex_colors = [RGB值換算Hex值(center) for center in kmeans.cluster_centers_]
for c in kmeans.cluster_centers_:
h, name = RGB值換算名稱(c)
顏色名稱數(shù)組[h] = name
cluster_map = pd.DataFrame()
mydf=cluster_map.分組查詢([‘color’,顏色名稱]).agg({‘position’:‘像素點(diǎn)數(shù)量’}).reset_index().rename(columns={“position”:“count”})
plt.pie(顏色像素點(diǎn)數(shù)量, labels=顏色名稱, colors=顏色Hex值, autopct=‘%1.1f%%’, startangle=90)
plt.show()
for index, row in mydf.iterrows():
if check_color(color.to_rgb(row[‘color’])):
mydf.loc[index, “count”] = abs(顏色的像素點(diǎn)數(shù)量之和-當(dāng)前顏色像素點(diǎn)數(shù)量)
mydf.loc[index, “Percentage”] =當(dāng)前顏色像素點(diǎn)數(shù)量/圖像中像素點(diǎn)總數(shù)*100
End。
改進(jìn)的MobileNetV3圖像分類模型如圖5所示。
圖5 改進(jìn)的MobileNetV3圖像分類模型
在圖5中,Bneck為MobileNetV3圖像分類模型中的倒殘差結(jié)構(gòu)。利用該模型操作時(shí),先將13個(gè)倒殘差結(jié)構(gòu)堆疊成特征提取網(wǎng)絡(luò);然后在提取的特征圖上連接線性層,進(jìn)行特征組合;最后經(jīng)過Softmax層分類輸出圖像所屬類別的最大概率,實(shí)現(xiàn)對(duì)圖像的分類。
采用遷移學(xué)習(xí)訓(xùn)練模型時(shí),首先將圖像大小設(shè)定為224像素×224像素,并輸入網(wǎng)絡(luò)模型中進(jìn)行訓(xùn)練;其次用預(yù)訓(xùn)練權(quán)重固定網(wǎng)絡(luò)特征提取時(shí)確定的參數(shù)值,并在訓(xùn)練迭代100 epoch后基于驗(yàn)證集測(cè)試準(zhǔn)確率;然后將訓(xùn)練好的MobileNetV3-CBAM模型(即改進(jìn)后網(wǎng)絡(luò)模型)的權(quán)重在本地進(jìn)行保存,并凍結(jié)主干提取部分;最后將后續(xù)圖像批量輸入模型中,得出分類結(jié)果,并依據(jù)分類結(jié)果對(duì)圖像進(jìn)行分類,以滿足對(duì)不同類別服裝進(jìn)行分析的需要。采用不同網(wǎng)絡(luò)模型進(jìn)行圖像分類的結(jié)果對(duì)比如表2 所示。
表2 采用不同網(wǎng)絡(luò)模型進(jìn)行圖像分類的結(jié)果對(duì)比
由表2可知:MobileNetV3-CBAM網(wǎng)絡(luò)模型比MobileNetV3-SE網(wǎng)絡(luò)模型(即原網(wǎng)絡(luò)模型)的準(zhǔn)確率提升了1.5個(gè)百分點(diǎn);MobileNetV3-CBAM網(wǎng)絡(luò)模型比ResNet101-CBAM網(wǎng)絡(luò)模型的參數(shù)量下降了一個(gè)數(shù)量級(jí)??梢哉J(rèn)為,本文對(duì)圖像分類網(wǎng)絡(luò)模型的改進(jìn),無論在網(wǎng)絡(luò)模型輕量化方面還是在提升圖像分類準(zhǔn)確率方面都是可行的。
為了進(jìn)行服裝流行色分析實(shí)驗(yàn),本文給出了圖6所示的服裝流行色分析模型。該模型主要包括4個(gè)模塊,即實(shí)時(shí)數(shù)據(jù)獲取模塊、服裝圖像分類模塊、服裝圖像主顏色提取模塊和服裝流行色分析模塊。
圖6 服裝流行色的分析模型
可根據(jù)得到的數(shù)據(jù)對(duì)服裝進(jìn)行時(shí)序規(guī)律分析[12]、品類流行分析、地域流行分析等[13]。本文在基于MobileNetV3-CBAM網(wǎng)絡(luò)模型的服裝流行色分析實(shí)驗(yàn)中,進(jìn)行了時(shí)序規(guī)律分析和品類流行分析。
時(shí)序規(guī)律包括年規(guī)律、季規(guī)律[14]、月規(guī)律、周規(guī)律、特定節(jié)日規(guī)律等。根據(jù)文獻(xiàn)[15],對(duì)整個(gè)數(shù)據(jù)集的某個(gè)時(shí)間段進(jìn)行流行色分析時(shí),可匯總該時(shí)間段全部服裝的主顏色,繪制圖形,進(jìn)行流行色分析。圖7所示為2020年1月到2022年5月的黑色、紅色、米色服裝銷量曲線。
圖7 2020年1月到2022年5月的黑色、紅色和米色服裝銷量曲線
品類流行分析在于分析不同服裝類別、不同服裝款式的流行色變化規(guī)律,分類匯總數(shù)據(jù)并進(jìn)行可視化展示。圖8所示為某品牌羽絨服約兩年半時(shí)間所有色系的銷量折線。
圖8 某品牌羽絨服約兩年半時(shí)間所有色系的銷量折線
從圖8可看出,在2020年1月到2022年5月期間,某品牌羽絨服的銷售旺季是每年的10月到次年1月,銷量排名前三的流行色分別為黑色系、紫色系和紅色系。
本文提出了一種基于互聯(lián)網(wǎng)大數(shù)據(jù)的服裝流行色研究方法。其重點(diǎn)在于數(shù)據(jù)獲取和數(shù)據(jù)分析。采用深度學(xué)習(xí)方法對(duì)服裝圖像進(jìn)行分類識(shí)別,可分析不同類別不同款式服裝的流行色,解決服裝流行色分析數(shù)據(jù)來源受限、數(shù)據(jù)集容量不足的問題。下一步將重點(diǎn)研究在復(fù)雜背景下準(zhǔn)確預(yù)測(cè)服裝流行色的方法,以便從不同維度如不同性別、不同地域進(jìn)行服裝流行色的分析。