鄭 睿 ,余 童 ,程 龍 閱
(1.安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖241002;2.安徽省智能機器人信息融合與控制工程實驗室,安徽 蕪湖241000)
當(dāng)前,基于視覺的智能機器人已經(jīng)應(yīng)用于各領(lǐng)域中[1]。 當(dāng)機器人面臨需要抓取形狀類似、硬度不同的物體時,智能機器人應(yīng)選擇不同的抓取力。 因此, 通過視覺識別出這類物體具有較高實用價值。利用深度學(xué)習(xí)[2-3]對圖像進(jìn)行識別是較為高效的方法,國內(nèi)外相關(guān)研究已經(jīng)在車輛及車道線檢測[4-5]、人臉識別[6-7]、手寫體識別等領(lǐng)域取得較多的成果。
近年來,針對形狀類似物體的識別也取得了一定的成果。 張雪芹等人[8]利用深度學(xué)習(xí)AlexNet 網(wǎng)絡(luò)實現(xiàn)了對多種類植物圖片進(jìn)行分類識別。林思思等提出融合深度特征和人工特征的花卉圖像特征提取方法, 并在此基礎(chǔ)上實現(xiàn)花卉圖像的分類[9]。西南交通大學(xué)秦放[10]提出基于深度學(xué)習(xí)的昆蟲圖像識別研究,擴充了昆蟲樣本集,基于昆蟲圖像識別的任務(wù)需求和樣本集,從網(wǎng)絡(luò)和訓(xùn)練兩個方面進(jìn)行改進(jìn)。 張立超等人利用LeNet-5 網(wǎng)絡(luò)對兩種品種的蘋果進(jìn)行分類識別[11],在兩種蘋果的分類中取得不錯的效果。 但大型的神經(jīng)網(wǎng)絡(luò)一般通過加深網(wǎng)絡(luò)深度獲得高精度的識別率,其結(jié)構(gòu)較為復(fù)雜,運算量大,無法滿足快速識別的要求。
因此,本文選擇LeNet-5 網(wǎng)絡(luò)作為研究對象,由于LeNet-5 網(wǎng)絡(luò)結(jié)構(gòu)較為簡單,運算量較小,對硬件配置要求低,能夠在滿足網(wǎng)絡(luò)輕量化的前提下對形狀類似、硬度不同的物體實現(xiàn)快速識別。 傳統(tǒng)LeNet-5 網(wǎng)絡(luò)在識別精度上尚有不足。 為了能夠提高識別精度且盡可能地減少運算量,本文將傳統(tǒng)卷積核拆分為非對稱卷積核以縮短計算時間;在網(wǎng)絡(luò)中間加入BN 層[12]使中間層的數(shù)據(jù)輸出更加穩(wěn)定,提高網(wǎng)絡(luò)的訓(xùn)練精度;采用全局平均池的方法取代原模型Flatten 層以降低運算量[13]。 通過這三種方式有效地改進(jìn)了LeNet-5 網(wǎng)絡(luò),使其能夠適用于移動機器人平臺,實現(xiàn)對物體的識別。
LeNet-5 網(wǎng)絡(luò)是傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的代表,最早由LECUN Y[14]提出,其結(jié)構(gòu)如圖1 所示。 該網(wǎng)絡(luò)共有7 層,分別為卷積層、池化層、卷積層、池化層、全連接層、全連接層、輸出層。
LeNet-5 網(wǎng)絡(luò)是傳統(tǒng)針對字符識別的網(wǎng)絡(luò),該網(wǎng)絡(luò)結(jié)構(gòu)簡單,易于運算,它在對形狀差異較大的圖像進(jìn)行識別時,能取得良好的識別效果。 但對于形狀類似、硬度不同的物體進(jìn)行識別時,尚不能取得良好的分類識別效果。
傳統(tǒng)LeNet-5 網(wǎng)絡(luò)使用單層較大的卷積核,較大卷積核在計算上會增大運算量,耗時時間較長。由于雙層非對稱卷積比單獨使用一個較大的卷積核擁有更少量的參數(shù),且能夠加快計算,使得網(wǎng)絡(luò)深度變深,同時,雙層非對稱卷積會比單層大卷積擁有更多的非線性變換,使得網(wǎng)絡(luò)較原網(wǎng)絡(luò)有更強的特征提取能力,因此本文構(gòu)建雙層非對稱卷積對圖片進(jìn)行運算,運算原理如圖2 所示。
圖2 雙層非對稱卷積原理圖
圖2 中,假設(shè)輸入圖像的維度為5×5,則x11…x55代表輸入圖像中的像素值,將傳統(tǒng)3×3 的卷積核拆分為卷積核1(維度為3×1)和卷積核2(維度為1×3)兩個卷積核,這兩種卷積核為非對稱卷積核。 首先利用卷積核1 對輸入圖像進(jìn)行卷積操作,遍歷輸入圖像后可得到維度為3×5 的特征圖1,特征圖1 的數(shù)值分別為y11…y35,計算公式為:
其中,a、b、c 代表卷積核1 中的數(shù)值。
經(jīng)過卷積核1 進(jìn)行卷積后得到特征圖1,維度為3×5,再用大小為1×3 的卷積核2 對特征圖1 進(jìn)行卷積操作,遍歷特征圖1 后得到尺寸為3×3 的特征圖2,特征圖2 內(nèi)數(shù)值分別為z11…z33,計算公式為:
圖1 LeNet-5 網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,d,e,f 代表卷積核2 中的數(shù)值。
以3×1,1×3 的非對稱卷積核對維度為5×5 的輸入圖像進(jìn)行卷積運算為例:由雙層非對稱卷積原理圖及式(1)、式(2)可以推出,共需要72 次運算可得到特征圖2。 而如使用傳統(tǒng)3×3 卷積核進(jìn)行卷積,需81 次運算才可得到特征圖2。 一般來說,輸入圖像越大,卷積次數(shù)越多,雙層非對稱卷積運算減少的參數(shù)量越大。 雙層非對稱卷積核不但能夠加深網(wǎng)絡(luò)深度,而且在雙層的前提下依然比單層卷積核的計算量小,有效降低了參數(shù)量。 通過這種方式一方面可以減小參數(shù)量,減輕過擬合,另一方面可以增強模型的表達(dá)能力,使得非對稱卷積取得的效果比對稱卷積核更好,增加特征多樣性。
傳統(tǒng)LeNet-5 網(wǎng)絡(luò)中,并未對網(wǎng)絡(luò)中間層的數(shù)據(jù)進(jìn)行處理,這樣使得中間層的數(shù)據(jù)較為離散,不利于網(wǎng)絡(luò)訓(xùn)練。 為了能夠?qū)?shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,使得網(wǎng)絡(luò)中間層的數(shù)據(jù)穩(wěn)定,在網(wǎng)絡(luò)中每層卷積層后加入批量歸一化方法,在模型訓(xùn)練時,批量歸一化利用小批量數(shù)據(jù)的均值和標(biāo)準(zhǔn)差,不斷調(diào)節(jié)卷積層后的輸出,使得輸出數(shù)據(jù)更加穩(wěn)定。
以圖2 為例,卷積層輸出為特征圖2,設(shè)其輸出為Z={z1,…,zn},那么其均值μZ為:
式(3)中zi表示Z 中第i 個數(shù)據(jù)。進(jìn)一步可得Z 的方差DZ為:
在此基礎(chǔ)上對Z 進(jìn)行歸一化,使變換為Z?。 Z?中的 第i 個 數(shù) 據(jù)為:
式(5)中,ε 表示一個微小的常數(shù),為了使得歸一化后的數(shù)據(jù)仍能保持原有的分布特征,采用學(xué)習(xí)型的參數(shù)γ 和β 對Z?進(jìn)行批量歸一化處理,使Z?變換為Z~。中的第i 個數(shù)據(jù)為
式(6)中,γ 和β 將和其他的權(quán)重參數(shù)等一起用梯度方法進(jìn)行訓(xùn)練,其最終的值將使損失函數(shù)達(dá)到最小值。
傳統(tǒng)LeNet-5 網(wǎng)絡(luò)中一直用Flatten 全連接輸入到softmax 中對其做分類,但是全連接存在參數(shù)量過大、訓(xùn)練速度低及容易過擬合等問題。 為了達(dá)到減少參數(shù)、縮減訓(xùn)練時長的目的,本文用全局平均池化(Global Average Pooling,GAP)的方式替代Flatten層。 全局平均池化示意如圖3 所示。
圖3 全局平均池化層示意圖
LeNet-5 中采用全連接方法把卷積輸出的二維特征圖轉(zhuǎn)換為一維向量,對此向量做乘法,最終降低其維度,然后輸入至softmax 層中對其做分類。 由于在全連接層中的每一個節(jié)點都與上一層的每一個節(jié)點連接,這就會導(dǎo)致參數(shù)量過大,容易過擬合。采用全局平均池化法代替全連接層,對每個特征圖整張圖片進(jìn)行平均池化,這樣每張?zhí)卣鲌D只得到一個輸出,可以大大減少網(wǎng)絡(luò)參數(shù)。此外,每張?zhí)卣鲌D就相當(dāng)于一個輸出特征,這個特征即輸出類別的特征。 通過全局平均池化的方法對每一張?zhí)卣鲌D進(jìn)行運算,無需單獨對參數(shù)進(jìn)行優(yōu)化,這樣會大大減少參數(shù)量,減輕過擬合現(xiàn)象。
上述內(nèi)容通過改進(jìn)卷積層、添加BN 層、采用全局平均池化等方式完成了對LeNet-5 網(wǎng)絡(luò)的改進(jìn),為了進(jìn)一步增強網(wǎng)絡(luò)的訓(xùn)練效果與識別能力,需要對網(wǎng)絡(luò)輸入大量數(shù)據(jù)來提高網(wǎng)絡(luò)的識別精度。 因此,在采集了部分?jǐn)?shù)據(jù)集的基礎(chǔ)上,對原數(shù)據(jù)集進(jìn)行增廣,利用視角變化幾何原理對圖像進(jìn)行變換。
在視角變化幾何原理中,圖像上某點像素可以用坐標(biāo)(x0,y0)表示,假設(shè)對圖像進(jìn)行平移變換,經(jīng)過平移量(Δx,Δy)后,像素點坐標(biāo)變?yōu)?x1,y1),則平移操作的矩陣表達(dá)式為:
假設(shè)對圖像進(jìn)行水平鏡像變換,該像素點坐標(biāo)變?yōu)?x0,w-y0),則水平鏡像變換的矩陣表達(dá)式為:
垂直鏡像變換參照水平鏡像變換。
假設(shè)對圖像進(jìn)行旋轉(zhuǎn)變換,該像素點的坐標(biāo)變?yōu)?x1,y1),一般旋轉(zhuǎn)中心為圖像的中心,順時針旋轉(zhuǎn)角度為θ,則旋轉(zhuǎn)變換的矩陣表達(dá)式為:
假設(shè)對圖像進(jìn)行成比例縮放后,該像素點坐標(biāo)變?yōu)?x1,y1),kx表示圖像橫向縮放比例,ky表示圖像縱向縮放比例,則成比例縮放后的矩陣表達(dá)式為:
根據(jù)式(7)~式(10)對圖像進(jìn)行平移、鏡像變換、旋轉(zhuǎn)、縮放等增廣變換,大大增加了數(shù)據(jù)集的容量。其中圖像水平平移中的Δx、豎直平移中的Δy 均取值為0.2,圖像旋轉(zhuǎn)的角度θ 取值為30,圖片縮小幅度kx、ky值為0.8。
基于上述方法,對雞蛋、蘋果、芒果、石塊四種常見的形狀類似、硬度不同的物體開展識別實驗,驗證方法的有效性。
3.1.1 相關(guān)環(huán)境配置
實驗中硬件配置:Intel?CoreTMi3-3110M CPU@2.40 GHz 處 理 器、NVIDIA GeFORCE GT 630 MB 顯卡、8 GB 內(nèi) 存。
實驗軟件環(huán)境:主機操作系統(tǒng)為Windows7/64 位操作系統(tǒng);虛擬機操作系統(tǒng)為Ubuntu/64 位操作系統(tǒng);深度學(xué)習(xí)框架為TensorFlow/Keras; 環(huán)境管理器為Conda4.7.10;編程環(huán)境為Python 3.7.3。
3.1.2 網(wǎng)絡(luò)參數(shù)
LeNet-5 網(wǎng)絡(luò)參數(shù)和改進(jìn)型的網(wǎng)絡(luò)參數(shù)分別如表1 與表2 所示。
表1 原網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
表2 LeNet-5 改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
表1 中參數(shù)為LeNet-5 網(wǎng)絡(luò)進(jìn)行實驗得到的結(jié)構(gòu)參數(shù)。 卷積核數(shù)量為32,大小為(3,3),對輸入大小為(128,128)圖像經(jīng)Conv1 進(jìn)行卷積操作,經(jīng)過激活函數(shù)tanh 運算再進(jìn)行最大池化操作,經(jīng)過Maxpooling1 得到數(shù)量為32,大小為(64,64)的特征圖。 再經(jīng)過Conv2 卷積層、 激活函數(shù)運算與最大池化層Maxpooling2 后得到數(shù)量為32,大小為(32,32)的特征圖。 Flatten 層得到輸出結(jié)果參數(shù)為32 768, 后兩層全連接層對特征圖進(jìn)行分類得到輸出結(jié)果為4。
表2 中參數(shù)為LeNet-5 改進(jìn)型網(wǎng)絡(luò)實驗得到的結(jié)構(gòu)參數(shù)。輸入圖像大小為(128,128),經(jīng)過Conv1_1層大小為(3,3)的卷積核與Conv1_2 層大小分別為(3,1)(1,3)的卷積核進(jìn)行卷積運算后得到大小為(128,128)的32 個特征圖?!皃adding=same”操作保證邊緣信息被充分提取。 此處采用的激活函數(shù)為ReLU函數(shù)且之后的每次卷積后都選擇ReLU 作為激活函數(shù)進(jìn)行運算。 為了使神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中每一層輸入保持相同分布,在部分卷積層后對其進(jìn)行BN操作。 接著對其進(jìn)行最大池化, 經(jīng)過最大池化層MaxPooling_1 后,得到的特征圖大小為(64,64),且數(shù)量保持不變。 再對其進(jìn)行單卷積層Conv2 的卷積運算,得到輸出數(shù)量為32,大小為(64,64)的特征圖。卷積層Conv3、Conv4 與最大池化層MaxPooling_2 計算原理與上述相同, 經(jīng)過Conv4_1、MaxPooling_4 后得到數(shù)量為64,大小為(8,8)的特征圖,改進(jìn)的網(wǎng)絡(luò)用全局平均池化代替了原來的Flatten 層。最后兩層全連接層,根據(jù)特征組合進(jìn)行分類,本實驗是對四種目標(biāo)圖片進(jìn)行分類,經(jīng)最后一層全連接層得到輸出為4。
實驗使用生活中較為常見的雞蛋、 芒果、石塊、蘋果四種形狀相似物體的圖片。 采用實物拍攝的方法獲得每種物體的60 張實物圖, 并隨機取3張圖片。 實物圖如圖4 所示。
根據(jù)增廣的參數(shù)設(shè)置,對四種物體的原始圖像進(jìn)行增廣,使得原始的一幅圖像增廣為7 幅。 對圖4中每種物體的第一幅圖進(jìn)行增廣,圖像增廣后的結(jié)果如圖5 所示。
通過增廣方法得到較多的樣本集。 在對樣本集的訓(xùn)練過程中,得到輸入圖像的特征圖,再對特征圖進(jìn)行提取。 以一張?zhí)O果的樣本圖為例,得到的特征圖如圖6 所示。
圖6(a)是利用32 個卷積核對輸入圖像進(jìn)行卷積操作得到的特征圖,每張小特征圖分別是32 個卷積核中的一個卷積核對輸入圖像進(jìn)行特征提取所得到的。 圖(b)是在輸入圖經(jīng)過卷積后再對其進(jìn)行最大池化得到的特征圖,包含32 幅小特征圖。 圖(c)為利用64 個卷積核繼續(xù)對輸入該層的圖進(jìn)行卷積,圖(c)中部分特征圖顯示黑色,說明其未學(xué)習(xí)到上一層輸入圖像的特征,意味著需要更多的數(shù)據(jù)和訓(xùn)練對其進(jìn)行改善,使網(wǎng)絡(luò)盡可能地學(xué)習(xí)到輸入圖像的細(xì)節(jié)特征。 圖(d)是提取出的最終特征圖,較圖(a)、(b)、(c)來說,圖(d)中包含的特征圖更加模糊,色彩變化較大,說明隨著網(wǎng)絡(luò)深度的增加,提取出了更高級的特征。
根據(jù)設(shè)置的參數(shù),得到未改進(jìn)的LeNet-5 網(wǎng)絡(luò)與改進(jìn)后的網(wǎng)絡(luò),兩種網(wǎng)絡(luò)訓(xùn)練精度值與損失函數(shù)值變化曲線如圖7、圖8 所示。 圖中實線曲線代表訓(xùn)練精度,虛線曲線代表損失值曲線,橫坐標(biāo)為迭代次數(shù),縱坐標(biāo)為數(shù)值。
圖7 中,原始LeNet-5 網(wǎng)絡(luò)在迭代區(qū)間0~40 內(nèi),訓(xùn)練精度明顯上升,在迭代次數(shù)為50 時,訓(xùn)練精度達(dá)到0.8。 在迭代區(qū)間40 ~80 內(nèi),訓(xùn)練精度略有上升。 在迭代80 次之后,訓(xùn)練精度值基本保持平穩(wěn),精度值在0.85 左右浮動。 損失值在區(qū)間0~80 內(nèi)下降較明顯, 在80~150 區(qū)間內(nèi)逐漸穩(wěn)定在0.3 左右浮動。 圖8 中,LeNet-5 改進(jìn)后網(wǎng)絡(luò)在迭代區(qū)間0~20內(nèi),訓(xùn)練精度明顯上升,在第20 次時訓(xùn)練精度約達(dá)到0.78。 在 迭 代 區(qū) 間20 ~70 內(nèi), 訓(xùn) 練 精 度 略 有 上升。 在迭代70 次之后,訓(xùn)練精度值基本保持平穩(wěn),精度值在0.90 上下浮動。 損失值在0~80 次內(nèi)逐漸下降,在80 次后逐漸在0.24 上下浮動。
圖4 四種物體的原始圖像
圖5 圖像增廣示例圖
圖6 部分特征圖
圖7 LeNet-5 網(wǎng)絡(luò)的訓(xùn)練精度與損失函數(shù)曲線圖
為了能更加精確地分析訓(xùn)練精度與損失值,以10 次迭代為一個區(qū)間,得到具體數(shù)值如表3 所示。
圖8 改進(jìn)LeNet-5 網(wǎng)絡(luò)的訓(xùn)練精度與損失函數(shù)曲線圖
由表3 可看出,改進(jìn)后的網(wǎng)絡(luò)訓(xùn)練精度在各個迭代區(qū)間內(nèi)均高于未改進(jìn)網(wǎng)絡(luò)的精度,在迭代次數(shù)為80 次時網(wǎng)絡(luò)完成收斂,在80 次后再進(jìn)行迭代網(wǎng)絡(luò)整體訓(xùn)練精度變化不大。 網(wǎng)絡(luò)在迭代區(qū)間為140 ~150 內(nèi)訓(xùn)練精度達(dá)到0.914,比原網(wǎng)絡(luò)訓(xùn)練精度高0.08。 兩種網(wǎng)絡(luò)損失值在迭代50 次前差別不大,在80 次后改進(jìn)網(wǎng)絡(luò)的損失值低于原網(wǎng)絡(luò)。 在120 次后網(wǎng)絡(luò)損失值穩(wěn)定在0.28 左右,低于原網(wǎng)絡(luò)的0.34。
對于需要識別的四種物體,各取50 張圖片作為測試樣本,這些測試樣本均未用于訓(xùn)練網(wǎng)絡(luò),所得到的結(jié)果如表4 所示。
表3 兩種網(wǎng)絡(luò)區(qū)間迭代的訓(xùn)練精度均值與損失值變化表
表4 兩種模型平均測試精度
由表4 可看出,經(jīng)過網(wǎng)絡(luò)的訓(xùn)練,10 次實驗得到的未改進(jìn)的LeNet-5 網(wǎng)絡(luò)對測試樣本的平均識別精度為0.754,改進(jìn)后的網(wǎng)絡(luò)對測試樣本的平均識別精度為0.837。 因此,本文通過對LeNet-5 網(wǎng)絡(luò)進(jìn)行改進(jìn),有效提高了對于形狀類似、硬度不同物體的識別精度。 上述表明,改進(jìn)后網(wǎng)絡(luò)不僅在訓(xùn)練精度上較原網(wǎng)絡(luò)有所提升,而且能夠在較少的迭代次數(shù)內(nèi)達(dá)到收斂,且在識別精度上明顯高于未改進(jìn)的LeNet-5 網(wǎng)絡(luò)。
為了快速且高精度地識別形狀類似、硬度不同的物體,提出了改進(jìn)的LeNet-5 網(wǎng)絡(luò),在原網(wǎng)絡(luò)的基礎(chǔ)上,為了提高網(wǎng)絡(luò)非線性變換的能力,將傳統(tǒng)卷積層變?yōu)榉菍ΨQ卷積,為了減少參數(shù),加入BN層,同時用全局平均池化層代替原Flatten 層, 利用數(shù)據(jù)增廣增加樣本集以減輕過擬合。 根據(jù)實驗結(jié)果可知,改進(jìn)的LeNet-5 網(wǎng)絡(luò)較原網(wǎng)絡(luò)能夠以較低的迭代次數(shù)完成收斂,在訓(xùn)練精度與測試精度上較原網(wǎng)絡(luò)有明顯的提高。 說明改進(jìn)型LeNet-5 網(wǎng)絡(luò)對外形類似、硬度不同的物體有良好的識別效果,能夠滿足機器人柔性抓取力對物體識別精度的要求。