趙建敏,姜世奇,李 琦
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭 014000)
目前傳統(tǒng)畜牧業(yè)正在不斷尋找新的發(fā)展模式,不再僅以增產(chǎn)為主,轉(zhuǎn)而更加注重產(chǎn)品的質(zhì)量與品種,向智能化、精細化、規(guī)?;较虬l(fā)展,提出了精準(zhǔn)畜牧業(yè)的發(fā)展理念,這也是由我國目前的發(fā)展現(xiàn)狀與時代特征所決定的,同時也對牲畜的個體身份識別提出了更高的要求。目前主流的牛個體識別都是采用基于射頻識別(radio frequency identification,RFID)的識別方式[1~3],這種方法不僅識別距離有限,而且存在被替換、損壞和丟失導(dǎo)致無法準(zhǔn)確識別的潛在風(fēng)險。因此,國內(nèi)外學(xué)者利用圖像處理技術(shù)對牲畜的識別展開了廣泛的研究。Xia M等人[4]提出了利用稀疏表示分類器(SRC)對牛臉圖像進行識別,通過主成分分析(PCA)進行特征提取后利用SRC進行識別。陳娟娟等人[5]用改進的特征袋模型(BOF)對奶牛頭部圖像進行識別,在基于空間金字塔匹配原理(SPM)的BOF模型上,引入了HOG特征替換SIFT特征,針對奶牛圖像降低特征復(fù)雜度,提升了識別性能。深度學(xué)習(xí)的興起使得卷積神經(jīng)網(wǎng)絡(luò)(CNN)對圖像識別表現(xiàn)優(yōu)異,很多學(xué)者利用CNN進行牛的個體識別[6,7],取得了較好的識別效果,但基于CNN的網(wǎng)絡(luò)模型需要大量人工標(biāo)注的數(shù)據(jù)進行訓(xùn)練與測試,對于人力成本要求較高,在實際牧場應(yīng)用中難以大范圍開展。Kumar S等人[8,9]利用牛的鼻口點(muzzle point)信息來進行個體識別,這些信息與人類指紋類似具有較高的辨識度,但相比臉部圖像獲取,鼻口點數(shù)據(jù)的實際采集過程對人工成本要求較高,采集難度較大,實際應(yīng)用困難。
對此,本文將字典學(xué)習(xí)理論結(jié)合牛臉圖像識別應(yīng)用到牛的個體身份識別,在經(jīng)典K-SVD算法[10]基礎(chǔ)上進行了改進,對于輸入的牛臉圖像,通過構(gòu)造冗余字典原子的線性組合來對樣本進行稀疏表示,在稀疏表示過程中加強了原子的優(yōu)化策略,求解樣本在不同字典下的重構(gòu)誤差,針對牛臉識別問題,有了明顯改善。
數(shù)據(jù)來源于內(nèi)蒙古自治區(qū)烏蘭察布市察哈爾地區(qū)某牧場,為了更好地采集完整的牛臉圖像,選取了牛在飲水期間進行圖像采集,經(jīng)過挑選后構(gòu)造了一個牛臉圖像數(shù)據(jù)集IMCFR20。該數(shù)據(jù)集中包含20頭牛,每頭牛挑選20張正面牛臉圖片,共計400張。采集時間為2018年7月,采集設(shè)備為高清數(shù)碼攝像機。
圖1為IMCFR20數(shù)據(jù)集中部分牛只ID對應(yīng)的牛臉圖像,可以看出除ID17的花紋毛色呈現(xiàn)明顯區(qū)別外,其余ID02,03,06,15所代表的牛只外形極為相似,只在牛角以及毛發(fā)的彎曲程度以及其他細節(jié)特征上有所區(qū)別。除此以外,相似的養(yǎng)殖環(huán)境進一步提升了識別難度,依賴人的主觀判斷很難對其進行準(zhǔn)確識別。
圖1 IMCFR20部分牛臉圖像
K-SVD算法的提出將K-Means與SVD進行了有機結(jié)合,通過得到一個對原始樣本進行學(xué)習(xí)的冗余字典,利用其原子的線性組合來實現(xiàn)近似表示。對于樣本集合Y=[y1,…,yN]∈Rn×N,可以近似描述為Y≈DX,D=[d1,…,dK]∈Rn×K表示過完備字典,X=[x1,…,xN]∈RK×N表示Y對應(yīng)稀疏系數(shù)構(gòu)成的矩陣。算法可表示為以下問題的優(yōu)化
(1)
在求解過程中大致分為三個步驟:第一步是初始化D0,在Y中隨機選取K個樣本對字典進行初始化。第二步是稀疏編碼過程,將式(1)的優(yōu)化問題轉(zhuǎn)換為求解Y對應(yīng)稀疏矩陣X,這里采用OMP算法[11]進行求解,通過不斷迭代計算樣本向量與字典原子的內(nèi)積,選擇與信號殘差最匹配的原子,直到滿足稀疏度限制。第三步是字典更新過程,交替優(yōu)化求解X和D。在更新時對X中非零列逐次更新,將式(1)轉(zhuǎn)換為
(2)
(3)
K-SVD在稀疏編碼階段是通過求解一個稀疏矩陣來對算法進行優(yōu)化,通常采用OMP算法。具體是通過反復(fù)迭代求解樣本向量與字典原子的內(nèi)積來尋找一個最佳的正交投影進行信號的稀疏逼近。在利用牛臉圖像進行牛個體身份的識別問題上,希望通過輸入的牛臉圖像盡可能準(zhǔn)確地對牛個體進行分類和識別,不需要對原始的牛臉圖像進行精準(zhǔn)的重構(gòu),而對于輸入樣本的稀疏表達形式提出了不同要求。因此針對分類與識別問題,使殘差盡可能取最小并不是目的,而是需要使稀疏向量的系數(shù)盡可能非負(fù)。借鑒文獻[12]的思想對OMP算法進行改進,為了使負(fù)值系數(shù)盡可能少出現(xiàn),在迭代過程中不再選取使內(nèi)積最大的字典原子作為最優(yōu)解,而是保留使系數(shù)取最大值的原子,將其余原子去除,進而實現(xiàn)稀疏表示的優(yōu)化。具體流程如下:
輸入:字典D,樣本Y,稀疏度L,迭代次數(shù)N
輸出:稀疏矩陣X
初始化:殘差r0=y,索引集Λ(0)=?,J=1
過程:
1)計算rJ-1與D中原子dj內(nèi)積,求取使系數(shù)最大的原子(Pdj表示在原子dj上的投影)
2)更新索引集和字典原子:Λ(J)J=λ,D(J)J=D(︰,Λ(J)J(1︰J));
3)x(J)=‖y-D(J)x‖2;
4)更新殘差r(J)=D(J)x(J),J=J+1;
5)若J>N,則停止迭代,否則,循環(huán)步驟(1)~步驟(5)。
實驗環(huán)境為CPU:Intel Core i7—7700K;內(nèi)存:32 GB;顯卡:GTX 1080Ti;OS:Ubuntu16.04;MATLAB 2016a。IMCFR20數(shù)據(jù)集中包含20頭牛的400張牛臉圖像,樣本大小為128×128。
通過牛臉圖像數(shù)據(jù)集IMCFR20對本文算法進行驗證。首先進行數(shù)據(jù)的預(yù)處理,將IMCFR20數(shù)據(jù)集中的圖像進行灰度變換,針對每個ID的樣本數(shù)據(jù)隨機選取70 %作為訓(xùn)練數(shù)據(jù),剩余30 %作為測試數(shù)據(jù)。在訓(xùn)練階段,對于每個輸入的訓(xùn)練樣本,將128×128維度下采樣為256維,將所有訓(xùn)練樣本映射為R256×280的矩陣,迭代次數(shù)設(shè)為60,稀疏度閾值為10,字典原子K初始設(shè)為300。由于改變了K-SVD的稀疏編碼過程中字典原子的選取原則,分別測試改進后的算法與原始K-SVD算法在不同迭代次數(shù)下的重構(gòu)誤差,結(jié)果如圖2所示。
圖2 重構(gòu)誤差與迭代次數(shù)的關(guān)系
通過表1可以看出將字典原子的選擇方式變?yōu)楸A羰瓜禂?shù)最大的原子后,相比原算法的重構(gòu)性能會有一定下降。為了進一步分析驗證改進后算法的識別效果,在IMCFR20數(shù)據(jù)集上分別對K-SVD與改進K-SVD算法進行測試,由于稀疏度大小與字典原子的不同取值都會對識別結(jié)果產(chǎn)生影響,針對以上兩個參數(shù)分別進行實驗。首先分析稀疏度取值的不同對識別效果的影響,分別選取L=2,L=4,L=6,L=8,L=10進行實驗,測試結(jié)果如表1所示。實驗表明,改進后算法的識別率增加3 %左右,提升效果較為明顯。隨著稀疏度的增加,重構(gòu)誤差會不斷減小,但識別效果會呈現(xiàn)先上升后下降的趨勢,稀疏度在L=6時識別率最佳。
表1 不同稀疏度對識別率的影響
分析字典原子數(shù)量對識別效果的影響,隨機選取每類牛臉圖像中的16張用于訓(xùn)練,4張用于測試,共20類。稀疏度L=6,字典原子數(shù)K分別取300,400,500進行測試,結(jié)果如表2所示。
表2 不同數(shù)量的字典原子對識別率的影響
實驗表明,在一定范圍內(nèi)增加字典原子個數(shù)可以提升識別效果,當(dāng)K=500時,本文算法可以達到90.9 %,具有較好的識別性能。K在300~500的變化范圍內(nèi),K-SVD算法的識別率波動了1.5 %,改進K-SVD算法的識別率波動了0.8 %,可見本文對字典原子數(shù)量的改變所造成的結(jié)果影響波動較小。
本文在K-SVD算法的基礎(chǔ)上,對稀疏編碼階段的字典原子選擇方式進行了改進,使得改進后的算法更適用于圖像分類與識別問題。在構(gòu)造的牛臉圖像數(shù)據(jù)集IMCFR20上的實驗結(jié)果表明:本文算法的牛臉圖像識別準(zhǔn)確率達到了90 %以上,識別效果較好,對通過圖像方式進行牛個體身份識別問題提供了一種可行的方案。