周涵慶 柯圓圓
(江漢大學(xué)人工智能學(xué)院,湖北 武漢 430056)
隨著生活水平的提高和人民對(duì)精神層面的需求,購買珠寶的消費(fèi)者也越來越多。大多數(shù)消費(fèi)者選購珠寶時(shí)會(huì)認(rèn)為品牌店的珠寶有質(zhì)量保證,因此會(huì)去珠寶品牌店購買。但是一段時(shí)間以來,珠寶市場上打折風(fēng)愈刮愈烈,從而引發(fā)了一場消費(fèi)者對(duì)珠寶經(jīng)營者的信任危機(jī)。因此,我們迫切地需要對(duì)珠寶飾品價(jià)格進(jìn)行透明的可信的價(jià)格評(píng)估。傳統(tǒng)的珠寶評(píng)估完全由人來完成,這使得用戶并不知道專家是如何評(píng)估的,形成了信息不對(duì)稱的局面。珠寶價(jià)格評(píng)估通過計(jì)算機(jī)來完成時(shí)就可以消除這種信息不對(duì)稱。其邏輯如下:(1)利用用戶輸入的珠寶圖片。(2)計(jì)算機(jī)將圖片與后臺(tái)大型數(shù)據(jù)庫中的圖片進(jìn)行檢索。(3)輸出相似度在百分之八十以上的珠寶圖片與相關(guān)信息。本文基于第二點(diǎn)進(jìn)行改進(jìn),在檢索之前將數(shù)據(jù)庫中珠寶圖片進(jìn)行分類存儲(chǔ),那么圖片檢索時(shí)就可以只檢索數(shù)據(jù)庫中相應(yīng)類別的圖片,而不必檢索整個(gè)數(shù)據(jù)庫。基于此,本文提出基于CNN 的珠寶分類系統(tǒng)進(jìn)行圖片識(shí)別。
基于深度學(xué)習(xí)的方法相比于傳統(tǒng)的方法提取特征點(diǎn)更快、更準(zhǔn)確,因此越來越多的學(xué)者將深度學(xué)習(xí)引入圖像識(shí)別領(lǐng)域[1]。卷積神經(jīng)網(wǎng)絡(luò)(CNN),一種用于處理圖像的神經(jīng)網(wǎng)絡(luò),從圖像中獲取輸入[2],并從圖像中提取特征,通過CNN 提取的特征適合用于珠寶圖片的分類[3],并提供可學(xué)習(xí)的參數(shù)以有效地進(jìn)行分類,從而使圖像分類任務(wù)的準(zhǔn)確率和準(zhǔn)確率有顯著提升[4]。有關(guān)CNN 更多的研究內(nèi)容見參考文獻(xiàn)[5-8]。
卷積神經(jīng)網(wǎng)絡(luò)中最基礎(chǔ)的操作也是最重要的操作,也就是卷積操作,使用卷積核(過濾器)從圖像中提取特征,不同的過濾器可以從圖像中提取不同的特征。提取特征的過程就是卷積運(yùn)算,卷積核與圖像像素矩陣局部做點(diǎn)積運(yùn)算。卷積核一般大小采用3×3。卷積運(yùn)算中一些參數(shù)有:步幅(stride),步幅也就是與卷積核進(jìn)行運(yùn)算的像素矩陣上的矩陣窗口移動(dòng)的單位。步幅分為水平步幅與垂直步幅,一般默認(rèn)垂直步幅為1,水平步幅可以為1,也可以為2。步幅一般是指水平步幅。此外,還考慮到有時(shí)候進(jìn)行卷積時(shí)不希望圖像大小發(fā)生變化,或者當(dāng)圖片的重要信息在圖片邊緣時(shí),為了保護(hù)邊緣信息不丟失,此時(shí)采用零填充(zero-padding)的方式來保護(hù)邊緣信息不丟失或者維持圖像大小不變,所謂零填充即在圖像矩陣的四周補(bǔ)上一圈或者幾圈的0。
例如,當(dāng)用一個(gè)3×3 的卷積核對(duì)一個(gè)6×6 的像素矩陣進(jìn)行卷積,第一次運(yùn)算時(shí),第一行到第三行,第一列到第三列組成的3×3 矩陣窗口與卷積核進(jìn)行點(diǎn)乘,輸出結(jié)果為17,隨后矩陣窗口以水平步幅為1 向右滑動(dòng)1 個(gè)位置,將新的矩陣窗口與卷積核再次進(jìn)行點(diǎn)乘運(yùn)算,輸出結(jié)果為12。當(dāng)完成水平方向的滑動(dòng)到最后三列時(shí),垂直位移一個(gè)單位,進(jìn)行第二行到第四行,第一列到第三列的卷積,并不斷進(jìn)行水平方向的位移。卷積核不斷滑過像素矩陣,最終得到特征圖。
一個(gè)n×n 的像素矩陣與一個(gè)m×m 的卷積核做卷積運(yùn)算,通過公式((n-m)/stride)+1 可以計(jì)算得出特征圖的維度,但是當(dāng)輸入圖片的像素矩陣為32×32,卷積核為4×4,stride 為3 時(shí),(32-4)/3+1 不是整數(shù),這時(shí)候可以引入零填充(padding)的方式,即在圖像像素矩陣添一圈0,這樣輸出特征圖的維度就變成了(32+1*2-4)/3+1=11,在神經(jīng)網(wǎng)絡(luò)中必須要掌握每一層輸入輸出的維度。
一般而言,用戶輸入的都是彩色照片,彩色照片的深度為3,也就是RGB 三通道,每一個(gè)像素點(diǎn)由3個(gè)值組成,我們的卷積核的通道應(yīng)該和輸入圖片的通道一致,例如照片的圖像像素矩陣為32×32×3,卷積核可以設(shè)置為3×3×3,將卷積核的每一層和像素矩陣的每一層做卷積運(yùn)算,最后再組成一個(gè)深度為3的輸出,這里stride 設(shè)置為1,padding 為0,所以輸出的shape為30 * 30 * 3。
卷積的時(shí)候是用多個(gè)卷積核完成的,一般經(jīng)過卷積之后的特征圖的通道為卷積核的數(shù)量。
卷積完成之后,下一步引入非線性激活函數(shù),給神經(jīng)網(wǎng)絡(luò)加入一些非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以更好地解決較為復(fù)雜的問題,激活函數(shù)有很多種,本文使用ReLU,對(duì)于輸入的負(fù)值,輸出全為0,對(duì)于正值,原樣輸出,優(yōu)點(diǎn)是收斂快,求梯度簡單。
激活的下一步就是池化,池化可以將實(shí)現(xiàn)精簡特征圖縮小[9],降低計(jì)算量同時(shí)又保留其中的重要信息,池化分為平均池化和最大池化,本文選擇最大池化(max-pooling,也叫下采樣)保留了每一個(gè)小塊內(nèi)的最大值,相當(dāng)于保留了這一塊最佳的結(jié)果。對(duì)于一個(gè)n×n 的像素矩陣,保存每個(gè)2×2 的矩陣內(nèi)最大值來替代這個(gè)2×2 矩陣,就可以使得其規(guī)??s小至(n/2)×(n/2)。
上面我們介紹了卷積、激活與池化,而一個(gè)神經(jīng)網(wǎng)絡(luò)就是不斷地進(jìn)行卷積、激活與池化的過程。圖1所示為本文CNN 結(jié)構(gòu)圖。
圖1 本文CNN 結(jié)構(gòu)圖
其中,Rescaling 為對(duì)模型做歸一化處理,將像素矩陣值在0-255 處理到0-1 之間。Convolution 為卷積操作,激活函數(shù)使用ReLU,隨后進(jìn)行max-pooling,再進(jìn)行兩次卷積、激活、池化。Flatten 將二維輸出展開成一維,隨后接入全連接層。損失函數(shù)使用交叉熵?fù)p失函數(shù)。
數(shù)據(jù)集通過爬蟲免費(fèi)獲取,共七類珠寶圖片,分別為:“藍(lán)寶石戒指”“藍(lán)寶石項(xiàng)鏈”“鉆石戒指”“銀吊墜”“黃金吊墜”“黃金戒指”“黃金手鐲”,共599 張圖片。按照0.8:0.2 的比例劃分為訓(xùn)練集與測試集,在劃分?jǐn)?shù)據(jù)集之前切記對(duì)原始數(shù)據(jù)集進(jìn)行檢查,因?yàn)榕老x獲取的圖片可能存在壞圖,這會(huì)導(dǎo)致網(wǎng)絡(luò)訓(xùn)練過程異常。
訓(xùn)練輪數(shù)epoch 設(shè)為10 輪,訓(xùn)練完成后得到模型訓(xùn)練過程圖如圖2。
圖2 模型訓(xùn)練過程圖的準(zhǔn)確率和損失率
從模型訓(xùn)練過程圖2 可以看到隨著訓(xùn)練輪數(shù)的增加訓(xùn)練集和測試集上的準(zhǔn)確率均在增加,隨著訓(xùn)練輪數(shù)的增加訓(xùn)練集和測試集上的損失函數(shù)均在減小。
實(shí)驗(yàn)結(jié)果為藍(lán)寶石戒指的預(yù)測成功率為百分之九十四,藍(lán)寶石項(xiàng)鏈的預(yù)測成功率為百分之八十二,鉆石戒指的預(yù)測成功率為百分之八十八,銀吊墜的預(yù)測成功率為百分之八十七,黃金戒指的預(yù)測成功率為百分之八十三,對(duì)黃金吊墜的分類達(dá)到百分百的成功率。其中對(duì)黃金手鐲的預(yù)測成功率僅為百分之七十二,并且對(duì)于黃金手鐲的預(yù)測將有百分之二十八的概率錯(cuò)誤的識(shí)別為黃金戒指。對(duì)于黃金戒指的預(yù)測有百分之十七的概率預(yù)測為黃金手鐲。因此在進(jìn)行數(shù)據(jù)庫的珠寶圖片分類時(shí),需要對(duì)分類結(jié)果進(jìn)行核查。
實(shí)驗(yàn)結(jié)果表明最終可以實(shí)現(xiàn)對(duì)珠寶圖片的自動(dòng)化識(shí)別。以提前對(duì)圖像數(shù)據(jù)庫進(jìn)行分類,在圖像檢索的過程中,識(shí)別出具體珠寶類別,就可以指定檢索某一類圖像,而不用對(duì)全部圖像進(jìn)行檢索,大大節(jié)省了計(jì)算機(jī)資源。