江美玲, 章 杰
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350000)
隨著人們生活水平的不斷提高,人們對(duì)于服裝的需求不再是傳統(tǒng)意義上的生活必需品,服裝已經(jīng)成為人們生活中的一種時(shí)尚消費(fèi)品。針對(duì)大部分消費(fèi)者家中服裝種類多、管理難度大等問(wèn)題,本文采用服裝識(shí)別的方法,幫助用戶高效、準(zhǔn)確地分類管理不同款式的服裝。深度學(xué)習(xí)作為傳統(tǒng)機(jī)器學(xué)習(xí)的延伸和擴(kuò)展,已在眾多領(lǐng)域得到廣泛應(yīng)用[1]。目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法總體上分為兩類:1)基于區(qū)域提名的R-CNN算法系列,如SPP-net[2],Fast R-CNN[3],Faster R-CNN[4];2)無(wú)需區(qū)域提名的YOLO,SSD算法系列。如YOLOv1[5],YOLOv2[6],SSD[7]等一系列算法。雖然基于區(qū)域提名的R-CNN系列算法通過(guò)使用深度卷積網(wǎng)絡(luò)來(lái)分類目標(biāo)候選框,獲得了很高的目標(biāo)檢測(cè)精度,但在時(shí)間和空間上的訓(xùn)練開銷很大且檢測(cè)速度不能滿足實(shí)時(shí)的要求;而無(wú)需區(qū)域提名的YOLO,SSD系列算法能夠滿足實(shí)時(shí)的要求。其中,2016年Liu等人提出的快速高效的SSD算法結(jié)合了YOLO的回歸思想以及 Faster R-CNN的Anchor機(jī)制,做到了速度與準(zhǔn)確率并存。但SSD的基礎(chǔ)網(wǎng)絡(luò)使用的是VGG—16,在卷積計(jì)算上花費(fèi)的時(shí)間很多。而MobileNet算法使用深度可分解卷積,可以減少卷積的計(jì)算量,而且適合在資源有限的嵌入式設(shè)備上運(yùn)行,克服了VGG—16在卷積計(jì)算上花費(fèi)時(shí)間多的問(wèn)題又保證了算法的實(shí)時(shí)性。
本文使用SSD檢測(cè)框架和MobileNet進(jìn)行服裝數(shù)據(jù)集的訓(xùn)練,并將訓(xùn)練得到的模型移植到樹莓派上,以實(shí)現(xiàn)服裝識(shí)別功能。
本文系統(tǒng)由樹莓派(Raspberry Pi)硬件平臺(tái)、圖像采集
模塊、觸摸傳感器模塊和語(yǔ)音輸出模塊等硬件部分,以及樹莓派操作系統(tǒng)、服裝識(shí)別系統(tǒng)、語(yǔ)音合成等軟件部分共同構(gòu)成。系統(tǒng)的總工作流程是:?jiǎn)?dòng)樹莓派并處于待機(jī)狀態(tài),觸碰觸摸傳感器啟動(dòng)服裝識(shí)別函數(shù),將樹莓派Picamera攝像頭采集到的服裝圖像傳輸至服裝識(shí)別模塊,在服裝識(shí)別模塊上使用已訓(xùn)練好的MobileNet模型進(jìn)行服裝類型的識(shí)別,然后通過(guò)語(yǔ)音的方式將識(shí)別的結(jié)果和對(duì)應(yīng)的存放位置播放出來(lái),同時(shí)也將結(jié)果顯示在顯示屏上,以便查看。為了更好地在樹莓派上進(jìn)行測(cè)試和驗(yàn)證,本文使用Python3編程語(yǔ)言進(jìn)行服裝識(shí)別系統(tǒng)的開發(fā)和設(shè)計(jì),Python語(yǔ)言的高可讀性以及面向?qū)ο蟮奶匦苑浅_m合本系統(tǒng)的開發(fā)[8]。
MobileNet網(wǎng)絡(luò)是針對(duì)樹莓派等小型嵌入式設(shè)備提出的一種輕量級(jí)的深層神經(jīng)網(wǎng)絡(luò)。MobileNet模型是基于深度可分解卷積的,它可以將標(biāo)準(zhǔn)卷積分解成一個(gè)深度卷積和一個(gè)1×1點(diǎn)卷積,這種分解可以有效減少計(jì)算量,降低模型大小,提高提取特征的速度[9]。MobileNet引入的兩個(gè)全局超參數(shù),具有平衡延遲度和準(zhǔn)確度的功能。這兩個(gè)超參數(shù)允許模型構(gòu)建者根據(jù)問(wèn)題的約束條件,為其應(yīng)用選擇合適尺寸的模型。其中超參數(shù)α的目的是改變輸入輸出通道數(shù),減少特征圖數(shù)量,使模型變瘦。超參數(shù)ρ的目的是降低圖片的分辨率,減少參數(shù)??紤]到樹莓派資源的有限和MobileNet網(wǎng)絡(luò)的輕量化,本文使用MobileNet識(shí)別模型來(lái)訓(xùn)練自制的服裝數(shù)據(jù)集,以達(dá)到服裝識(shí)別的目的。
在使用神經(jīng)網(wǎng)絡(luò)模型時(shí),優(yōu)化算法的選擇是至關(guān)重要的一步。如何最小化損失函數(shù)以加快模型的收斂速度和正確學(xué)習(xí)是神經(jīng)網(wǎng)絡(luò)使用者必須考慮的一個(gè)問(wèn)題。目前,MobileNet使用的優(yōu)化算法是RMSprop算法[10],該算法是通過(guò)調(diào)小劇烈變化方向上的步伐和調(diào)大平穩(wěn)方向上的步伐來(lái)加快梯度下降的,但是在算法的優(yōu)化后期會(huì)因?yàn)樘荻认∈?,無(wú)法最優(yōu)收斂,會(huì)使得模型的訓(xùn)練時(shí)間偏長(zhǎng),所以針對(duì)RMSprop 算法的不足之處,本文將MobileNet的優(yōu)化算法改成Adam算法[11]。Adam結(jié)合了善于處理稀疏梯度的Momentum動(dòng)量算法和善于處理非平穩(wěn)目標(biāo)的RMSprop算法,利用梯度的一階矩估計(jì)和二階矩估計(jì)調(diào)整每個(gè)參數(shù)的學(xué)習(xí)率,其在經(jīng)過(guò)偏置校正后,使得每一次迭代學(xué)習(xí)率都有確定范圍,使得參數(shù)較為平穩(wěn)。隨著梯度變得稀疏,Adam比RMSprop效果好,能夠保證較高的收斂速度下實(shí)現(xiàn)最優(yōu)收斂,而且所需內(nèi)存空間很小,比較適合內(nèi)存有限的計(jì)算機(jī)訓(xùn)練識(shí)別模型。
假設(shè)在第t輪訓(xùn)練中,得到的Momentum和RMSProp的指數(shù)加權(quán)平均如下
v=β1v+(1-β1)dW,s=β2s+(1-β2)dW2
(1)
在Momentum中dW表示原始梯度,v表示通過(guò)指數(shù)加權(quán)平均計(jì)算出來(lái)的梯度,相當(dāng)于對(duì)原始梯度做了一個(gè)平滑。RMSProp中的s表示對(duì)原始梯度dW平方做了一次平滑。
由于指數(shù)加權(quán)平均在迭代開始的初期會(huì)和開始的值有較大的差異,所以需要對(duì)上面求得的幾個(gè)值做偏差修正。以下是在第t輪迭代過(guò)程中,參數(shù)梯度累積量的修正值和其中權(quán)重更新公式,vc和sc表示修正后的梯度
(2)
在Adam算法中,參數(shù)β1對(duì)應(yīng)Momentum算法中的β值,一般取0.9;參數(shù)β2對(duì)應(yīng)RMSProp算法中的β值,一般取0.999;ε是一個(gè)平滑項(xiàng),一般取值為10-8;學(xué)習(xí)率α決定了參數(shù)每次更新的幅度。
本文按照著裝位置,從電商平臺(tái)和自行拍攝兩種途徑,獲得羽絨服、西裝外套、夾克、高領(lǐng)毛衣、圓領(lǐng)毛衣、帽衫、襯衫、T恤衫、背心、連衣裙、牛仔褲、背帶褲、半身裙和短褲這14類圖片,每一類服裝圖片的數(shù)量為150~300張不等。將其制作成MobileNet模型訓(xùn)練所需的TFRecord格式,測(cè)試集數(shù)為280件、訓(xùn)練集數(shù)為2 106件和驗(yàn)證集數(shù)為384件。使用預(yù)訓(xùn)練模型ssd_mobilenet_v1_coco_2017_11_17訓(xùn)練制作的數(shù)據(jù)集。在模型訓(xùn)練配置文件中設(shè)置初始學(xué)習(xí)率為0.002,β1=0.9,β2=0.999,ε=1×10-8。當(dāng)損失值接近1時(shí),停止訓(xùn)練。使用Object Detection API庫(kù)中的模型導(dǎo)出腳本將包含模型結(jié)構(gòu)和參數(shù)的臨時(shí)文件轉(zhuǎn)化為PB模型文件,該P(yáng)B模型文件用于進(jìn)行服裝的識(shí)別。
服裝識(shí)別的工作流程主要分為以下幾個(gè)部分,分別是樹莓派攝像頭采集服裝圖像部分、圖像預(yù)處理部分、加載已訓(xùn)練的PB模型部分、服裝檢測(cè)部分和檢測(cè)結(jié)果可視化和語(yǔ)音播報(bào)部分。在樹莓派平臺(tái)上,使用樹莓派攝像頭對(duì)準(zhǔn)待識(shí)別的服裝,采集一張服裝圖像并保存在指定的文件夾下。圖像的質(zhì)量會(huì)受到樹莓派攝像頭的擺放位置、成像角度、透視關(guān)系以及鏡頭自身原因的影響,所以本文采用自適應(yīng)加權(quán)向量濾波法[12],對(duì)獲取的服裝圖像進(jìn)行圖像預(yù)處理操作,將重要特征點(diǎn)存入一個(gè)行(列)矩陣中,將各點(diǎn)重構(gòu)后合成去噪后的圖,保證圖像的清晰度,便于后續(xù)的服裝圖像的識(shí)別。加載已訓(xùn)練過(guò)的PB服裝識(shí)別模型,對(duì)經(jīng)過(guò)預(yù)處理的的服裝圖像進(jìn)行檢測(cè),使用PB服裝識(shí)別模型中6個(gè)層數(shù)各不相同的卷積層得到H×W×Channel的Extracted Feature Map,再經(jīng)過(guò)3×3×(25×num_default_box)的深度可分解卷積核,卷積成H×W×(25×num_default_box)的feature map作為物體檢測(cè)的預(yù)測(cè)。抽取其中6層的feature map,在 feature map 的每個(gè)小格(cell)上生成一系列固定大小default box。再將生成的所有default box全部丟到 NMS(極大值抑制)中,使用NMS過(guò)濾掉背景default box和重疊度較大的default box,最后輸出篩選后的default box即為檢測(cè)結(jié)果。通過(guò)可視化函數(shù)將識(shí)別的結(jié)果在顯示窗口上顯示出來(lái),顯示的結(jié)果包含三個(gè)部分,分別是:目標(biāo)檢測(cè)框、服裝的類型和存放的位置。同時(shí)調(diào)用百度的語(yǔ)音合成接口,實(shí)現(xiàn)語(yǔ)音的播報(bào),即完成語(yǔ)音存入。本文以?shī)A克這一類服裝為例,展示服裝識(shí)別結(jié)果及語(yǔ)音播放功能,如圖1所示,在檢測(cè)圖片上使用矩形框框出檢測(cè)到的目標(biāo),并在矩形框上方標(biāo)注cloth_style(服裝類型):lapel jacket;place(存放位置):3_2。同時(shí)語(yǔ)音播放以下內(nèi)容:您要存放的服裝是翻領(lǐng)夾克,應(yīng)該存放入3區(qū)2號(hào)儲(chǔ)物箱。
圖1 服裝識(shí)別結(jié)果和語(yǔ)音播放
系統(tǒng)使用樹莓派3B作為開發(fā)平臺(tái),樹莓派是基于Linux的開放式嵌入式系統(tǒng)的卡片式電腦。使用樹莓派專用攝像頭Raspberry Pi Camera Module v2作為圖像采集模塊,擁有自動(dòng)定焦功能。觸摸傳感器的型號(hào)是TTP223B,TTP223B是基于觸摸檢測(cè)IC的電容式點(diǎn)動(dòng)型觸摸開關(guān)模塊。本文使用測(cè)試集進(jìn)行識(shí)別結(jié)果的驗(yàn)證,使用的測(cè)試集數(shù)為280件,其中每類服裝各取20件,共14類服裝。本文部分比較了使用RMSProp優(yōu)化函數(shù)和Adam優(yōu)化函數(shù)對(duì)識(shí)別結(jié)果的影響。兩者的識(shí)別結(jié)果如表1所示。
表1 服裝識(shí)別結(jié)果統(tǒng)計(jì)
從表1中可以看出,在這14類服裝中,使用RMSProp作為優(yōu)化函數(shù)獲得的識(shí)別正確率為91.48 %,而使用Adma獲得的識(shí)別正確率為95.19 %。與RMSProp相比,使用Adma優(yōu)化函數(shù)獲得的識(shí)別正確率提高了3.71 %。由此可知Adam優(yōu)化函數(shù)不僅縮短了模型的訓(xùn)練時(shí)間而且還提高了模型的識(shí)別正確率。對(duì)于識(shí)別出錯(cuò)的部分的分析如下:主要是由于在標(biāo)注各類服裝圖片時(shí),誤標(biāo)注了非本類服裝信息,使得提取的特征點(diǎn)不準(zhǔn)確,摻雜了其他類型服裝的特征點(diǎn),導(dǎo)致在識(shí)別某類服裝時(shí),由于與其他類型的服裝特征點(diǎn)有較大的匹配度,而導(dǎo)致識(shí)別出錯(cuò)。針對(duì)這一問(wèn)題,在制作服裝數(shù)據(jù)集時(shí),要重點(diǎn)注意兩個(gè)方面,一個(gè)是選取的每類服裝圖片應(yīng)該只包含該類服裝的相關(guān)信息,以解決特征匹配不準(zhǔn)確而導(dǎo)致識(shí)別錯(cuò)誤的問(wèn)題;另一個(gè)是應(yīng)該從各個(gè)角度拍攝每類服裝,這樣可以讓識(shí)別模型提取每類服裝更多的特征,以降低不同類型某一相似特征給識(shí)別結(jié)果帶來(lái)的干擾程度,從而提高服裝識(shí)別的準(zhǔn)確率。
本文在樹莓派平臺(tái)上,使用服裝識(shí)別技術(shù)并結(jié)合百度的語(yǔ)音合成技術(shù),實(shí)現(xiàn)服裝類型的識(shí)別,并通過(guò)語(yǔ)音的方式將識(shí)別的結(jié)果和存放的位置播放出來(lái),同時(shí)也將這兩個(gè)結(jié)果在顯示屏上顯示,以供用戶查看。本系統(tǒng)能夠幫助用戶快速、高效、準(zhǔn)確的分類管理不同的服裝,具有成本低、使用方便等優(yōu)點(diǎn)。