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