本發(fā)明屬于計(jì)算機(jī)視覺與智能識別技術(shù)領(lǐng)域,涉及一種牛只個(gè)體識別技術(shù),特別是涉及基于卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示分類模型的牛臉識別方法。
背景技術(shù):
隨著我國國民生活水平的提高,人們對牛肉制品和牛奶制品的需求量日益增大,同時(shí)對其品質(zhì)的關(guān)注也不斷加強(qiáng),提高牛肉和牛奶的總產(chǎn)量及其品質(zhì)已成為迫切需要。飼養(yǎng)業(yè)的發(fā)展須實(shí)現(xiàn)牛只養(yǎng)殖的智能化、規(guī)模化、自動化及標(biāo)準(zhǔn)化,因此以牛只個(gè)體體況為基礎(chǔ)的數(shù)字化、精細(xì)化養(yǎng)殖成為現(xiàn)代牛只科學(xué)飼養(yǎng)的主要發(fā)展方向。
牛只個(gè)體識別作為智能化養(yǎng)殖管理和畜牧保險(xiǎn)業(yè)的基礎(chǔ),目前多使用以下三種識別方法來識別牛只個(gè)體:a.射頻識別(radiofrequencyidentification,rfid)電子耳標(biāo),b.傳統(tǒng)的圖像特征提取與分類識別,c.基于卷積神經(jīng)網(wǎng)絡(luò)的牛只個(gè)體識別。
射頻識別技術(shù):是一項(xiàng)利用無線電頻率資源通過電磁耦合實(shí)現(xiàn)的非接觸自動識別技術(shù),射頻識別系統(tǒng)通常由電子標(biāo)簽和閱讀器組成。cn106874971a公開了一種基于rfid的牛只信息識別管理系統(tǒng)及其方法,包括無源rfid耳標(biāo)、rfid智能識讀器,還包括終端計(jì)算機(jī)、位于所述終端計(jì)算機(jī)上的數(shù)據(jù)處理子系統(tǒng)及移動終端。然而,使用rfid電子耳標(biāo)進(jìn)行牛只個(gè)體識別存在以下問題:一是生產(chǎn)、流通階段的應(yīng)用成本較高,造成rfid電子耳標(biāo)產(chǎn)品價(jià)格過高,難以大規(guī)模使用;二是畜牧業(yè)生產(chǎn)中圈舍環(huán)境差異性較大,相關(guān)的rfid標(biāo)準(zhǔn)不統(tǒng)一,rfid的識別距離、識別精度等技術(shù)差異性較大;三是電子耳標(biāo)需安裝在牛只身體上,給牛只帶來了傷害和痛苦;四是牛舍內(nèi)存在干擾源,且電子耳標(biāo)極易脫落或被人替換,導(dǎo)致識別系統(tǒng)可靠性降低。
傳統(tǒng)的圖像特征提取與分類方法:因生物特征具有較強(qiáng)的穩(wěn)定性和個(gè)體差異性,利用圖像處理技術(shù)將其應(yīng)用到動物個(gè)體識別中能有效的克服這些缺點(diǎn)。經(jīng)研究表明,牛只背花圖案及圖案的分布各不相同且終生不變,可作為其個(gè)體識別的重要依據(jù)。但就目前國內(nèi)牛只養(yǎng)殖場的現(xiàn)狀來看,采用圖像處理技術(shù)來識別牛只主要面臨著兩個(gè)難點(diǎn):第一,采集到的牛只圖像背景混亂,有雜草、墻體和泥土等,同時(shí)光照條件也各不相同。這些差異有可能使得不同牛只圖像之間的差異小于相同牛只圖像之間的差異。第二,采集圖像時(shí)牛只目標(biāo)在圖片中的位置隨機(jī),姿勢不固定,識別算法必須克服光線明暗、位移、仿射等變化。這些難點(diǎn)給牛只圖像識別算法帶來了非常大的挑戰(zhàn)。目前已經(jīng)有很多傳統(tǒng)分類器,包括支持向量機(jī)、貝葉斯分類器、隨機(jī)森林分類器等被用于圖像識別。這些方法的特點(diǎn)是先利用典型的特征描述方法,如尺度不變特征變換(scale-invariantfeaturetransform,sift)、加速魯棒特征(speededuprobustfeature,surf)、方向梯度直方圖(histogramoforientedgradient,hog)等對訓(xùn)練樣本進(jìn)行角點(diǎn)、邊緣、紋理等特征提取,然后再對這些特征進(jìn)行分類訓(xùn)練。然而,這些特征描述方法主要是由人工設(shè)計(jì)的,復(fù)雜場景下識別率較低,不能達(dá)到商業(yè)化產(chǎn)品的要求。
卷積神經(jīng)網(wǎng)絡(luò)(convolutionalneuralnetwork,cnn)方法:深度學(xué)習(xí)是一種包含多個(gè)隱含層的感知器,它使用底層特征形成高層特征,并使用更加抽象的高層特征表示類別,從而最終提升分類或預(yù)測的準(zhǔn)確性。卷積神經(jīng)網(wǎng)絡(luò)因其局部子采樣、全局訓(xùn)練、共享權(quán)值等特點(diǎn),已成功應(yīng)用到手寫字體識別、人臉檢測等相關(guān)研究中,并表現(xiàn)出良好的抗干擾能力,且識別過程耗時(shí)短,對光線變化、前景遮擋均有較高的魯棒性,可以很好地解決牛只個(gè)體生物特征識別的問題,尤其是在養(yǎng)殖場等復(fù)雜環(huán)境下。趙凱旋、何東健等(趙凱旋,何東健.基于卷積神經(jīng)網(wǎng)絡(luò)的牛只個(gè)體身份識別方法[j].農(nóng)業(yè)工程學(xué)報(bào),2015,05:181-187.)提出用視頻分析方法提取奶牛軀干圖像,用卷積神經(jīng)網(wǎng)絡(luò)準(zhǔn)確識別奶牛個(gè)體的方法,但該方法需要人工前期預(yù)處理工作繁雜,自動化水平不高,且當(dāng)養(yǎng)殖場奶牛增加時(shí)需重新訓(xùn)練神經(jīng)網(wǎng)絡(luò)用于奶牛個(gè)體識別。趙凱旋、何東健等用該方法從30頭奶牛的360段視頻中隨機(jī)選取訓(xùn)練數(shù)據(jù)60000幀和測試數(shù)據(jù)21730幀,使用該方法得到單幀圖像樣本的識別率為90.55%,視頻段樣本的識別率為93.33%的結(jié)果。cn106778902a公開了一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的奶牛個(gè)體識別方法,采用深度學(xué)習(xí)當(dāng)中卷積神經(jīng)網(wǎng)絡(luò)提取特征,結(jié)合奶牛背花圖案的紋理特征實(shí)現(xiàn)對奶牛個(gè)體的有效識別;該方法的步驟是:奶牛數(shù)據(jù)的采集、對訓(xùn)練集和測試集的預(yù)處理、設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)、訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)、生成識別模型、利用識別模型識別牛只個(gè)體;該方法利用光流法或幀間差分法提取奶牛軀干圖像,并使用卷積神經(jīng)網(wǎng)絡(luò)提取特征,結(jié)合奶牛的紋理特征實(shí)現(xiàn)奶牛個(gè)體的有效識別,但該方法只適用于有明顯背花圖案的一類奶牛,而且在奶牛數(shù)量增加時(shí),必須重新訓(xùn)練神經(jīng)網(wǎng)絡(luò),同時(shí)由于該神經(jīng)網(wǎng)絡(luò)各層神經(jīng)元個(gè)數(shù)較多,導(dǎo)致網(wǎng)絡(luò)參數(shù)數(shù)量過多,容易發(fā)生過擬合現(xiàn)象,降低網(wǎng)絡(luò)泛化能力。cn106778902a的發(fā)明人用該方法對20頭奶牛中的第10頭、第15頭、第20頭奶牛的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),其識別準(zhǔn)確率分別為94.3%,97.1%和95.6%。
綜上所述,現(xiàn)有牛只識別技術(shù)存在的主要問題有:1.rfid電子耳標(biāo)識別技術(shù):識別范圍有限,需在牛只身上安裝電子標(biāo)簽,給牛只帶來了傷害和痛苦,且電子標(biāo)簽易脫落或被人替換,降低了識別的準(zhǔn)確性與可信度;2.傳統(tǒng)的圖像特征提取與分類方法:在復(fù)雜環(huán)境下識別率較低。在養(yǎng)殖場環(huán)境下采集到的牛只圖片背景雜亂、有遮擋情況發(fā)生且光照條件變化大、牛只姿勢不固定,利用傳統(tǒng)圖像特征提取方法提取的關(guān)鍵點(diǎn)信息發(fā)生錯(cuò)誤匹配的幾率增大,精度不高,當(dāng)數(shù)據(jù)量較大時(shí),耗時(shí)較長,不能實(shí)現(xiàn)實(shí)時(shí)準(zhǔn)確識別;3.卷積神經(jīng)網(wǎng)絡(luò)技術(shù):僅使用該技術(shù)識別牛只個(gè)體,在牛只增加的情況下,需重新訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),耗費(fèi)時(shí)間較長且訓(xùn)練期間神經(jīng)網(wǎng)絡(luò)不能使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有牛只識別技術(shù)存在的問題,克服現(xiàn)有技術(shù)的不足,提供一種成本低、精度高、適用性強(qiáng)的養(yǎng)殖場環(huán)境下的基于卷積神經(jīng)網(wǎng)絡(luò)和分類器模型的牛臉識別方法,該方法采用深度學(xué)習(xí)當(dāng)中卷積神經(jīng)網(wǎng)絡(luò)提取特征,再使用分類器進(jìn)行識別,通過對牛臉的檢測,實(shí)現(xiàn)對牛只個(gè)體的高效準(zhǔn)確識別。
為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:基于卷積神經(jīng)網(wǎng)絡(luò)和分類器模型的牛臉識別方法,其特征在于,采用深度學(xué)習(xí)當(dāng)中卷積神經(jīng)網(wǎng)絡(luò)提取特征,結(jié)合分類器模型,通過對牛臉的識別,實(shí)現(xiàn)對牛只個(gè)體的身份識別,包括以下步驟:
s1.采集所有待注冊牛只牛臉數(shù)據(jù),生成待注冊牛只數(shù)據(jù)集,并按比例隨機(jī)分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集;
s2.設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)模型(convolutionalneuralnetwork,cnn),所述卷積神經(jīng)網(wǎng)絡(luò)模型cnn至少包括輸入層、隱藏層和輸出層,其中隱藏層最后一層是一個(gè)維度為2n的全連接層,作為特征提取層,其中n為5-9之間的整數(shù);
s3.訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)cnn,記錄該網(wǎng)絡(luò)模型參數(shù)λ;
s4.將由步驟s1得到的所有待注冊牛只牛臉數(shù)據(jù)輸入到使用網(wǎng)絡(luò)參數(shù)λ初始化的卷積神經(jīng)網(wǎng)絡(luò)模型cnn中,提取特征提取層的特征;
s5.使用待注冊牛只的特征提取層的特征,利用分類器模型,進(jìn)行牛只注冊;
s6.利用步驟s5的分類器模型進(jìn)行牛臉識別。
進(jìn)一步,步驟s1具體為,使用固定位置的攝像頭以視頻方式收集所有需注冊牛只數(shù)據(jù),采集數(shù)據(jù)時(shí)調(diào)整攝像頭位置使得視野寬度為3至4個(gè)牛臉寬度,視野高度為1.2至1.5個(gè)牛臉長度;從每頭牛的所有圖片數(shù)據(jù)中隨機(jī)挑選3000至5000張圖片,統(tǒng)一圖片大小,形成待注冊牛只數(shù)據(jù)集;將待注冊牛只數(shù)據(jù)集中每頭牛的樣本圖像按8:2的比例隨機(jī)分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,訓(xùn)練集數(shù)據(jù)與測試集數(shù)據(jù)無重疊。
進(jìn)一步,步驟s2中,所述卷積神經(jīng)網(wǎng)絡(luò)模型cnn包括10層,其中第一層為輸入層、第二層至第八層為隱藏層,第十層為輸出層,各層結(jié)構(gòu)如下:
第一層:輸入層:以leveldb數(shù)據(jù)格式輸入訓(xùn)練集的圖片數(shù)據(jù)和每張圖片的真實(shí)標(biāo)簽;
第二層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層;
第三層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層;
第四層:隱藏層:包含一個(gè)卷積層和一個(gè)激活函數(shù)層;
第五層:隱藏層:包含一個(gè)卷積層和一個(gè)激活函數(shù)層;
第六層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層;
第七層:隱藏層:包含一個(gè)全連接層,一個(gè)激活函數(shù)層和一個(gè)dropout層;
第八層:隱藏層:包含一個(gè)全連接層,一個(gè)激活函數(shù)層和一個(gè)dropout層;
第九層:隱藏層:包含一個(gè)全連接層;
第十層:輸出層:包含一個(gè)全連接層。
進(jìn)一步,步驟s2中,所述n=6,即特征提取層共有64個(gè)神經(jīng)元。
進(jìn)一步,步驟s3中,所述訓(xùn)練方法如下:利用步驟s1所述訓(xùn)練數(shù)據(jù)集中的圖像及其真實(shí)標(biāo)簽,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)cnn,具體為:
s3.1.使用高斯分布算法初始化卷積神經(jīng)網(wǎng)絡(luò)的所有權(quán)重項(xiàng)和使用固定常數(shù)初始化偏置項(xiàng);
s3.2.神經(jīng)網(wǎng)絡(luò)前向運(yùn)算;
s3.3.神經(jīng)網(wǎng)絡(luò)后向運(yùn)算;
s3.4.網(wǎng)絡(luò)停止訓(xùn)練后,保存網(wǎng)絡(luò)中的所有參數(shù)λ,包括權(quán)重參數(shù)和偏置參數(shù)。
進(jìn)一步,步驟s5中所述分類器模型為稀疏表示分類模型(sparserepresentationbasedclassification,src),低秩表示分類器模型(lowrankrepresentationclassifier,lrrc),邏輯回歸分類器模型(logisticregressionclassifier,lrc),支持向量機(jī)分類器模型(supportvectormachine,svm),貝葉斯分類器模型(bayesclassifier,bc),決策樹分類器模型(decisiontreeclassifier,dtc)和集成學(xué)習(xí)分類器模型中的一種。
進(jìn)一步,步驟s5中所述分類器模型為稀疏表示分類(sparserepresentationbasedclassification,src)模型,牛只注冊的具體方法為:
將步驟s4提取的各標(biāo)識號牛只的特征提取層的特征調(diào)整為一列,加入到稀疏表示分類模型字典中,該字典包含各個(gè)子字典,子字典即為每一頭牛的所有圖片的特征數(shù)據(jù),子字典中每一列的原子即為每頭牛每一幅圖片的特征數(shù)據(jù),每頭牛有且僅有一個(gè)標(biāo)識號;完成稀疏表示字典構(gòu)造后,待注冊牛只即完成注冊,成為已注冊牛只。
進(jìn)一步,所述步驟s6具體包括以下步驟:
s6.1.數(shù)據(jù)采集:按照步驟s1中采集數(shù)據(jù)的方式采集待識別牛只牛臉圖像,采集數(shù)量不限,將采集圖像的大小設(shè)置為與已注冊牛只圖像大小相同,形成待識別牛只數(shù)據(jù);
s6.2.提取待識別牛只牛臉圖像特征:將待識別牛只牛臉數(shù)據(jù)輸入到使用參數(shù)λ初始化的卷積神經(jīng)網(wǎng)絡(luò)模型cnn中,生成卷積神經(jīng)網(wǎng)絡(luò)模型cnn特征提取層的特征,提取此特征作為該頭牛只的牛臉圖像特征樣本;
s6.3.待識別牛只識別:利用s6.2得到的待識別牛只特征樣本數(shù)據(jù)與s5得到的分類器模型,完成牛臉識別。
進(jìn)一步,基于卷積神經(jīng)網(wǎng)絡(luò)和分類器模型的牛臉識別方法,可用于新增牛只牛臉識別,具體包括以下步驟:
sn1.新增牛只牛臉數(shù)據(jù)采集:按照步驟s1中采集數(shù)據(jù)的方式采集新增牛只牛臉圖像(新增牛只可能是新出生犢牛也可能是養(yǎng)殖場新采買的牛只),每頭牛采集圖像數(shù)量與s1中保持一致,將所采集的圖像的大小設(shè)置為與已注冊牛只圖像大小相同,形成新增牛只數(shù)據(jù)集;
sn2.提取新增牛只牛臉圖像特征:將新增牛只牛臉數(shù)據(jù)輸入到使用參數(shù)λ初始化的卷積神經(jīng)網(wǎng)絡(luò)模型cnn中,生成卷積神經(jīng)網(wǎng)絡(luò)模型cnn特征提取層的特征,提取此特征作為該頭新增牛只的牛臉圖像特征數(shù)據(jù);
sn3.新增牛只注冊:將每頭新增牛只每幅牛臉圖像特征追加到原有分類器模型中,形成更新后的已注冊牛只樣本數(shù)據(jù),完成注冊;
sn4.新增牛只識別:利用更新后的已注冊牛只樣本數(shù)據(jù)進(jìn)行牛臉識別,向原有分類器模型中輸入已注冊牛只樣本數(shù)據(jù)和待識別新牛只特征樣本,完成新增牛只牛臉識別。
發(fā)明人通過對特征提取層5個(gè)不同維度進(jìn)行對比試驗(yàn),對比5個(gè)不同維度下牛臉識別的精度和耗時(shí),以下數(shù)據(jù)是對5個(gè)不同的數(shù)據(jù)集進(jìn)行5次試驗(yàn)求平均所得,數(shù)據(jù)集包含24000個(gè)訓(xùn)練樣本和6000個(gè)測試樣本,耗時(shí)僅為6000個(gè)測試樣本的識別總時(shí)間,具體結(jié)果見表1:
表1中精度結(jié)果是`x±sd得到的數(shù)據(jù)。從以上結(jié)果可以看出,512維特征精度最高但耗時(shí)較長,64維特征精度次高、sd較小、比較穩(wěn)定,且耗時(shí)較少,因此優(yōu)選64作為特征提取層的維度,使得在牛群數(shù)量較多時(shí)也能完成實(shí)時(shí)識別,而特征維度越多其識別時(shí)間越長,將無法完成實(shí)時(shí)識別任務(wù)。
作為本發(fā)明的對比試驗(yàn),發(fā)明人從相同測試環(huán)境共30頭牛只圖像數(shù)據(jù)集中每頭牛隨機(jī)挑選2張共60張圖像作為注冊牛只數(shù)據(jù)集,每頭牛隨機(jī)挑選8張共240張圖像作為待識別牛只數(shù)據(jù)集,用sift匹配法進(jìn)行5次試驗(yàn),其平均識別準(zhǔn)確率為40.92%,單頭牛識別平均耗時(shí)12.8745s,同時(shí)對sift匹配法和本實(shí)施例卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示分類(cnn_src)方法的識別準(zhǔn)確率和耗時(shí)進(jìn)行比較,比較結(jié)果如表2所示。表2數(shù)據(jù)是對5個(gè)不同的數(shù)據(jù)集進(jìn)行5次實(shí)驗(yàn)求平均所得:
從表2的結(jié)果看,在牛只養(yǎng)殖場環(huán)境下采集到的圖片數(shù)據(jù)背景雜亂、牛只姿勢不固定、有遮擋情況發(fā)生且光照條件變化大,sift方法提取的關(guān)鍵點(diǎn)信息發(fā)生錯(cuò)誤匹配的幾率大大提高,且sift方法計(jì)算量大,當(dāng)數(shù)據(jù)量較大時(shí),耗時(shí)較長,不能實(shí)現(xiàn)實(shí)時(shí)識別。cnn_src方法在牛只場實(shí)際環(huán)境下仍具有較高的識別準(zhǔn)確率,且實(shí)際應(yīng)用時(shí)只需要提取特征,輸入到稀疏表示分類模型中進(jìn)行識別,大大減少識別時(shí)間,即使在養(yǎng)殖場牛群數(shù)量較大時(shí),也能完成實(shí)時(shí)識別。
本發(fā)明的有益效果:
本發(fā)明與現(xiàn)有技術(shù)相比具有如下突出的實(shí)質(zhì)性特點(diǎn):
1、與rfid電子耳標(biāo)識別技術(shù)相比:本發(fā)明利用圖像處理技術(shù)對牛只個(gè)體進(jìn)行識別,是一種無接觸的動物個(gè)體識別手段,無需在牛只身上佩戴任何設(shè)備儀器;
2、與傳統(tǒng)的圖像特征提取與分類方法,如sift匹配法相比,本發(fā)明采用深度學(xué)習(xí)當(dāng)中卷積神經(jīng)網(wǎng)絡(luò)提取特征,在圖像識別中,具有良好的抗干擾能力,且對光線變化、前景遮擋有較高的魯棒性,與傳統(tǒng)的學(xué)習(xí)方法相比,使用卷積神經(jīng)網(wǎng)絡(luò)提取的圖像特征更能刻畫數(shù)據(jù)豐富的內(nèi)在信息;
3、與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)識別牛只個(gè)體的方法相比,本發(fā)明最后一個(gè)隱藏層可為含有25-9個(gè)神經(jīng)元的全連接層,可將原本較多的1024維特征向量或維度更高的特征向量集中成25-9維特征向量,大幅減少了特征向量的維度,從而大大減少了運(yùn)算時(shí)間,同時(shí)又能保證其識別率不會大幅降低;
4、與單純采用卷積神經(jīng)網(wǎng)絡(luò)識別牛只個(gè)體的方法比較而言,本發(fā)明為首次采用卷積神經(jīng)網(wǎng)絡(luò)對養(yǎng)殖場環(huán)境下的牛只個(gè)體圖像進(jìn)行特征提取并利用稀疏表示分類模型(cnn_src),通過對牛臉進(jìn)行識別,完成對牛只個(gè)體的識別,實(shí)現(xiàn)了當(dāng)有新增牛只時(shí),只需采集該牛只的圖像數(shù)據(jù),將其輸入到使用參數(shù)λ初始化的特征提取卷積神經(jīng)網(wǎng)絡(luò)模型cnn中,提取特征,追加到稀疏表示分類模型字典中即可進(jìn)行識別,無需再次訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型,縮短了識別時(shí)間,單頭牛只識別平均耗時(shí)縮短到了0.00022s;且極大地提高個(gè)體識別率,平均識別率可高達(dá)99%以上;同時(shí)降低對原始圖片質(zhì)量的要求。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下顯著進(jìn)步:
1、cnn_src方法在養(yǎng)殖場實(shí)際環(huán)境下仍具有較高的識別準(zhǔn)確率,且實(shí)際應(yīng)用時(shí)只需要提取特征,輸入到稀疏表示分類模型中進(jìn)行識別,大大減少了識別時(shí)間,即使在養(yǎng)殖場牛群數(shù)量較大時(shí),也能完成實(shí)時(shí)識別;
2、本發(fā)明提出的基于卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示分類模型的牛臉識別方法對每張圖片只提取25-9維特征,大大減少了運(yùn)算時(shí)間,可完成實(shí)時(shí)識別任務(wù),在養(yǎng)殖場實(shí)際環(huán)境中識別率較高,同時(shí)可解決養(yǎng)殖場牛只增加后個(gè)體快速識別的問題,具有較高的實(shí)用價(jià)值;
3、本發(fā)明提出了一種基于圖像處理的無接觸、低成本、高精確度、適用性強(qiáng)的牛只養(yǎng)殖場環(huán)境下的牛臉識別方法。
附圖說明
圖1:牛臉識別流程圖
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明,但本發(fā)明的內(nèi)容并不局限于此。
實(shí)施例1:
本實(shí)施例基于卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示分類模型對牛臉進(jìn)行識別,如圖1牛臉識別方法流程圖所示,具體操作按如下步驟進(jìn)行。
1.采集牛只牛臉數(shù)據(jù),生成訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集
如圖1中se01所示,在飲水器前安裝一個(gè)云視安h3-x彩色cmos攝像頭,使攝像頭傳感器與站立在飲水器前飲水的牛只牛臉基本平行,調(diào)整攝像頭位置使得視野寬度為3至4個(gè)牛臉寬度,視野高度為1.2至1.5個(gè)牛臉長度。在無霧、無霾的晴天8:00-17:00時(shí)段獲取30頭奶牛飲水期間的視頻數(shù)據(jù),攝像機(jī)24小時(shí)不間斷采集數(shù)據(jù),采集視頻為pal制式并保存在一臺ds-7816n-k2硬盤錄像機(jī)內(nèi)(??低?,杭州),幀率為25fps,分辨率為1280像素(水平)×720像素(垂直)。
將30頭奶牛從1到30進(jìn)行編號,從每頭奶牛站在飲水器前開始到其離開飲水器為止,將視頻數(shù)據(jù)按幀率截取成圖片,同時(shí)將所有圖片大小統(tǒng)一成320像素(水平)×180像素(垂直),形成圖像數(shù)據(jù)集。每頭牛都有自身的圖像數(shù)據(jù)集,由于每頭奶牛每天的飲水次數(shù)與飲水時(shí)停留在飲水器前的時(shí)間有差異,導(dǎo)致每頭奶牛的圖像數(shù)據(jù)集樣本數(shù)量不同。為避免樣本量差異對識別結(jié)果的影響,從每頭奶牛的圖像數(shù)據(jù)集中按照8:2的比例隨機(jī)挑選800張圖片作為每頭牛的訓(xùn)練數(shù)據(jù),200張圖片作為每頭牛的測試數(shù)據(jù),訓(xùn)練數(shù)據(jù)集共有24000張圖片,測試數(shù)據(jù)集共有6000張圖片,訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)無重疊,生成訓(xùn)練數(shù)據(jù)集與測試數(shù)據(jù)集標(biāo)簽文件。使用caffe框架自帶的腳本文件,將訓(xùn)練集數(shù)據(jù)、測試集數(shù)據(jù)、訓(xùn)練集與測試集的標(biāo)簽文件生成leveldb數(shù)據(jù)庫,該數(shù)據(jù)庫包含訓(xùn)練集與測試集的圖像信息及每張圖片的標(biāo)簽信息。
2.卷積神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
如圖1中se02所示,設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)模型,包括1個(gè)輸入層、8個(gè)隱藏層和1個(gè)輸出層,各層的結(jié)構(gòu)如下。
第一層:輸入層:以leveldb數(shù)據(jù)格式輸入訓(xùn)練集的圖片數(shù)據(jù)和每張圖片的真實(shí)標(biāo)簽,設(shè)定批處理大小為50,批處理大小的設(shè)定與計(jì)算機(jī)的顯存有關(guān),不同的顯卡及顯存大小設(shè)定值可變化,實(shí)驗(yàn)所用顯卡為英偉達(dá)geforcegtx1080。
第二層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層。該卷積層共有32個(gè)神經(jīng)元,卷積核大小為3*3,步長設(shè)定為2,卷積核與輸入圖片進(jìn)行無重疊卷積運(yùn)算,不進(jìn)行邊緣擴(kuò)充。輸入數(shù)據(jù)大小為[50,3,180,320],其中50為批大小,3為通道數(shù),輸入圖像是彩色圖像,含有紅、綠、藍(lán)三個(gè)通道的數(shù)據(jù),因此通道數(shù)為3,180是輸入圖像的高度,320是輸入圖像的寬度。經(jīng)過卷積運(yùn)算后輸出數(shù)據(jù)大小為[50,32,89,159]其中50是批大小,32是通道數(shù),有多少個(gè)神經(jīng)元就會生成多少個(gè)通道特征圖,89是特征圖的寬度,159是特征圖的長度。特征圖的計(jì)算公式如公式(1)和(2):
其中w0和h0為卷積層輸入特征圖的寬度和高度,w1和h1為卷積層輸出特征圖的寬度和高度,pad為邊緣擴(kuò)充值的大小,若未進(jìn)行邊緣擴(kuò)充,則pad為0,kernel_size是卷積核尺寸大小,如卷積核大小為3*3,則kernel_size為3,若計(jì)算所得值不是整數(shù),則向下取整。
輸出特征圖經(jīng)過非線性激活函數(shù)relu函數(shù)處理,relu函數(shù)的計(jì)算公式為max(0,x),使用relu函數(shù)可減少反向傳播時(shí)誤差梯度的計(jì)算量,同時(shí)可增加網(wǎng)絡(luò)的稀疏行,減少參數(shù)的相互依存關(guān)系,緩解過擬合問題的發(fā)生。relu層既不改變特征圖大小也不改變特征圖個(gè)數(shù),因此激活函數(shù)層輸入數(shù)據(jù)大小為[50,32,89,159],輸出數(shù)據(jù)大小仍為[50,32,89,159]。
池化層即為下采樣層,設(shè)定池化窗口大小為3*3,池化步長為2,對圖片進(jìn)行無重疊的最大值池化操作,池化操作后特征圖大小計(jì)算公式如公式(1)和公式(2)所示,池化操作只改變特征圖大小,不改變特征圖個(gè)數(shù),因此池化層輸入數(shù)據(jù)大小為[50,32,89,159],輸出數(shù)據(jù)大小為[50,32,44,79]。
第三層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層。卷積層共有64個(gè)神經(jīng)元,卷積核大小為5*5,步長設(shè)定為1,邊緣擴(kuò)充值為2,設(shè)置分組為2,即為將對應(yīng)的輸入通道與輸出通道數(shù)進(jìn)行2分組。輸入數(shù)據(jù)大小為[50,32,44,79],輸出數(shù)據(jù)大小為[50,64,44,79]。輸出特征圖經(jīng)非線性激活函數(shù)relu函數(shù)處理后進(jìn)行池化操作,池化窗口大小為3*3,池化步長為2,對圖片進(jìn)行無重疊最大值池化,池化層輸入數(shù)據(jù)大小為[50,64,44,79],輸出數(shù)據(jù)大小為[50,64,22,39]。
第四層:隱藏層:包含一個(gè)卷積層和一個(gè)激活函數(shù)層。卷積層共有128個(gè)神經(jīng)元,卷積核大小為3*3,步長設(shè)定為1,邊緣擴(kuò)充值為1。輸入數(shù)據(jù)大小為[50,64,22,39],輸出數(shù)據(jù)大小為[50,128,22,39],輸出特征圖經(jīng)relu函數(shù)激活處理。
第五層:隱藏層:包含一個(gè)卷積層和一個(gè)激活函數(shù)層。卷積層共有256個(gè)神經(jīng)元,卷積核大小為3*3,步長設(shè)定為1,邊緣擴(kuò)充值為1,設(shè)置分組為2。輸入數(shù)據(jù)大小為[50,128,22,39],輸出數(shù)據(jù)大小為[50,256,22,39],輸出特征圖輸入到relu函數(shù)中進(jìn)行激活處理。
第六層:隱藏層:包含一個(gè)卷積層,一個(gè)激活函數(shù)層和一個(gè)池化層。卷積層共有384個(gè)神經(jīng)元,卷積核大小為3*3,步長設(shè)定為1,邊緣擴(kuò)充值為1,設(shè)置分組為2。輸入數(shù)據(jù)大小為[50,384,22,39],輸出數(shù)據(jù)大小為[50,384,22,39]。輸出特征圖經(jīng)非線性激活函數(shù)relu函數(shù)處理后進(jìn)行最大值池化操作,池化窗口大小為3*3,池化步長為2,池化層輸入數(shù)據(jù)大小為[50,384,22,39],輸出數(shù)據(jù)大小為[50,384,11,19]。
第七層:隱藏層:包含一個(gè)全連接層,一個(gè)激活函數(shù)層和一個(gè)dropout層。全連接層共有512個(gè)神經(jīng)元。輸入數(shù)據(jù)大小為[50,384,11,19],輸出數(shù)據(jù)大小為[50,512]。輸出特征圖經(jīng)非線性激活函數(shù)relu函數(shù)處理后進(jìn)行dropout操作,丟棄數(shù)據(jù)概率設(shè)置為0.5,設(shè)置dropout層的主要作用是防止過擬合現(xiàn)象的出現(xiàn),dropout層輸入數(shù)據(jù)大小為[50,512],輸出數(shù)據(jù)大小為[50,512]。
第八層:隱藏層:包含一個(gè)全連接層,一個(gè)激活函數(shù)層和一個(gè)dropout層。全連接層共有1024個(gè)神經(jīng)元。輸入數(shù)據(jù)大小為[50,512],輸出數(shù)據(jù)大小為[50,1024]。輸出特征圖經(jīng)非線性激活函數(shù)relu函數(shù)處理后進(jìn)行dropout操作,丟棄數(shù)據(jù)概率設(shè)置為0.5,dropout層輸入數(shù)據(jù)大小為[50,1024],輸出數(shù)據(jù)大小為[50,1024]。
第九層:隱藏層:僅包含一個(gè)全連接層,共有64個(gè)神經(jīng)元。輸入數(shù)據(jù)大小為[50,1024],輸出數(shù)據(jù)大小為[50,64]。加入該層后輸出層的輸入數(shù)據(jù)大小變?yōu)閇50,64],輸出層的輸出數(shù)據(jù)大小仍為[50,30]。
第十層:輸出層:包含一個(gè)全連接層,全連接層共有30個(gè)神經(jīng)元,輸出層神經(jīng)元的個(gè)數(shù)為待識別牛只的數(shù)量。輸入數(shù)據(jù)大小為[50,1024],輸出數(shù)據(jù)大小為[50,30]。
3.訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)模型,保存網(wǎng)絡(luò)參數(shù)λ
如圖1中se03所示,利用步驟1所述訓(xùn)練數(shù)據(jù)集中的圖像,訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),訓(xùn)練過程中,以leveldb數(shù)據(jù)格式輸入訓(xùn)練集的圖片數(shù)據(jù)和每張圖片的真實(shí)標(biāo)簽,并輸出該圖片的預(yù)測類別標(biāo)簽。利用卷積神經(jīng)網(wǎng)絡(luò)對牛臉圖像的預(yù)測標(biāo)簽和數(shù)據(jù)集中真實(shí)標(biāo)簽的差異,通過反向梯度傳播對網(wǎng)絡(luò)中的參數(shù)λ(包括權(quán)重參數(shù)、偏置參數(shù))進(jìn)行調(diào)整,從而進(jìn)行網(wǎng)絡(luò)的學(xué)習(xí)。卷積神經(jīng)網(wǎng)絡(luò)具體訓(xùn)練步驟如下。
3.1初始化步驟2中卷積神經(jīng)網(wǎng)絡(luò)的所有權(quán)重和偏置項(xiàng),各層初始化方式如步驟2所述。
3.2神經(jīng)網(wǎng)絡(luò)前向運(yùn)算
3.2.1將訓(xùn)練元組通過輸入單元輸入卷積神經(jīng)網(wǎng)絡(luò)
3.2.2計(jì)算隱藏層和輸出層的每個(gè)單元的凈輸入和輸出:
隱藏層和輸出層的每個(gè)單元都有許多輸入,這些輸入連接上一層神經(jīng)元的輸出,每個(gè)連接都有一個(gè)權(quán)重。隱藏層和輸出層每個(gè)神經(jīng)元的凈輸入為連接該神經(jīng)元的每個(gè)輸入乘以其對應(yīng)的權(quán)重,然后求和所得;將激活函數(shù)作用到隱藏層或輸出層每個(gè)神經(jīng)元的凈輸入,得到該神經(jīng)元的輸出。此處選用非線性relu函數(shù)作為激活函數(shù)。對于隱藏層的每個(gè)神經(jīng)元,直到輸出層,我們計(jì)算輸出值,得到網(wǎng)絡(luò)預(yù)測值。
3.3神經(jīng)網(wǎng)絡(luò)后向運(yùn)算
3.3.1計(jì)算輸出層神經(jīng)元預(yù)測值與真實(shí)值誤差
3.3.2計(jì)算隱藏層神經(jīng)元的誤差
3.3.3更新權(quán)重和偏置項(xiàng)
使用隨機(jī)梯度下降算法搜索權(quán)重集合,使得輸入數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)預(yù)測值與真實(shí)值之間的均方距離最小,通過調(diào)整學(xué)習(xí)率及其策略避免陷入決策空間的局部極小,并幫助找到全局最小。采用均勻分步學(xué)習(xí)率策略,該策略下還需設(shè)定分步大小stepsize和學(xué)習(xí)率變化比率gamma,學(xué)習(xí)率參數(shù)策略與各參數(shù)可根據(jù)不同的數(shù)據(jù)集、數(shù)據(jù)大小做出相應(yīng)的調(diào)整,學(xué)習(xí)率設(shè)置的過小,則學(xué)習(xí)進(jìn)行的很慢,且容易陷入局部極小,學(xué)習(xí)率設(shè)置的過大,則會出現(xiàn)在不適當(dāng)?shù)慕庵g擺動。每次迭代學(xué)習(xí)率計(jì)算公式如公式(3)所示,其中iter為迭代步數(shù):
3.3.4當(dāng)前一次迭代所有權(quán)重的增量都太小,小于某個(gè)指定閾值或超過預(yù)先設(shè)定的迭代次數(shù),停止卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,否則重復(fù)神經(jīng)網(wǎng)絡(luò)前向運(yùn)算和后向運(yùn)算即重復(fù)3.2和3.3的所有步驟。
3.4網(wǎng)絡(luò)停止訓(xùn)練后,保存網(wǎng)絡(luò)中的所有參數(shù)λ,包括權(quán)重參數(shù)和偏置參數(shù)。
4.提取待注冊牛只特征數(shù)據(jù):
如圖1中se04所示,將步驟1所得待注冊牛只數(shù)據(jù)集輸入到使用參數(shù)λ初始化的cnn模型中,提取模型中64維特征提取層的特征,作為該頭待注冊牛只的特征數(shù)據(jù)。
5.為待注冊牛只構(gòu)建稀疏表示分類模型字典:
如圖1中se05所示,使用步驟4中提取的各標(biāo)識號牛只的64維特征,將該64維特征調(diào)整為一列,加入到稀疏表示分類模型字典中,該字典包含各個(gè)子字典,子字典即為每一頭牛的所有圖片的特征數(shù)據(jù),子字典中每一列的原子即為每頭牛每一幅圖片的特征數(shù)據(jù),每頭牛有且僅有一個(gè)標(biāo)識號。完成稀疏表示字典構(gòu)造后,待注冊牛只即完成注冊,成為已注冊牛只。
6.獲取待識別牛只牛臉圖像
按照步驟1中采集數(shù)據(jù)的方式采集待識別牛只牛臉圖像,將圖像大小統(tǒng)一到與已注冊牛只圖像大小相同。
7.提取待識別牛只牛臉圖像特征
將待識別牛只牛臉數(shù)據(jù)輸入到使用參數(shù)λ初始化的cnn模型中,提取模型中64維特征提取層的特征,作為該頭待識別牛只的特征數(shù)據(jù)。
8.利用稀疏表示模型進(jìn)行牛臉識別。如圖1中se06所示。
8.1規(guī)范化稀疏表示字典d
輸入已注冊牛只稀疏表示字典和待識別牛只特征樣本,首先根據(jù)公式(4)將稀疏表示字典d內(nèi)的數(shù)據(jù)進(jìn)行規(guī)范化,di為稀疏表示各子字典:
8.2計(jì)算稀疏表示系數(shù)
使用正交匹配追蹤算法計(jì)算稀疏表示系數(shù)α,計(jì)算公式如公式(5)所示,其中x是待識別牛只特征樣本,ε是設(shè)定的誤差值:
8.3根據(jù)殘差最小原則完成牛臉識別
根據(jù)公式(6)計(jì)算待識別牛只特征樣本x與各稀疏表示子字典di的殘差,其中為11.2步中求得的稀疏表示系數(shù)。根據(jù)殘差最小原則完成識別,如公式(7)所示:
對30頭牛只的所有訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù)使用cnn_src方法進(jìn)行實(shí)驗(yàn),其中訓(xùn)練集數(shù)據(jù)量為24000張圖片(800*30),測試集數(shù)據(jù)量為6000張圖片(200*30),實(shí)驗(yàn)結(jié)果如表3所示,該實(shí)驗(yàn)結(jié)果是5次實(shí)驗(yàn)求平均所得。表3中總耗時(shí)是完成測試集所有牛只識別的時(shí)間,耗時(shí)只計(jì)算牛只識別時(shí)間,不包括網(wǎng)絡(luò)訓(xùn)練時(shí)間:
表3的結(jié)果表明,本方法識別速度快,識別準(zhǔn)確率高。
實(shí)施例2:
在實(shí)施例1的基礎(chǔ)上,實(shí)現(xiàn)對新增牛只的識別,具體按照如下步驟操作:
sn1.新增牛只牛臉數(shù)據(jù)采集:按照步驟s1中采集數(shù)據(jù)的方式采集新增牛只牛臉圖像(新增牛只可能是新出生犢牛也可能是養(yǎng)殖場新采買的牛只),將圖像大小統(tǒng)一到與已注冊牛只圖像大小相同,形成新增牛只數(shù)據(jù)集;
sn2.提取新增牛只牛臉圖像特征:將新增牛只牛臉數(shù)據(jù)輸入到使用參數(shù)λ初始化的cnn模型中,提取cnn模型64維特征提取層的特征,作為該頭新增牛只的牛臉圖像特征數(shù)據(jù);
sn3.新增牛只注冊:將新增牛只牛臉圖像特征追加到實(shí)施例1步驟4所得稀疏表示分類模型字典d中,具體為將每頭新增牛的每幅牛臉圖像特征調(diào)整為一列,將該頭牛的所有特征組成該頭新增牛只的子字典dn+1,對新增子字典進(jìn)行規(guī)范化操作,追加到原有字典d中,新增牛只完成注冊;
sn4.新增牛只識別:利用稀疏表示分類模型進(jìn)行牛臉識別,輸入已注冊牛只稀疏表示字典和待識別新牛只特征樣本,根據(jù)殘差最小原則,選擇殘差最小的識別結(jié)果,完成新增牛只牛臉識別。
隨機(jī)選取25頭牛只個(gè)體的訓(xùn)練集數(shù)據(jù)按照技術(shù)方案所述方法進(jìn)行網(wǎng)絡(luò)訓(xùn)練,記錄cnn網(wǎng)絡(luò)模型所有參數(shù)λ,提取牛只的訓(xùn)練數(shù)據(jù)特征組成稀疏表示字典d。另外5頭牛只個(gè)體訓(xùn)練集數(shù)據(jù)不參與神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,作為新增牛只數(shù)據(jù),使用參數(shù)λ初始化的cnn網(wǎng)絡(luò)模型提取新增牛只數(shù)據(jù)集特征,追加到稀疏表示分類模型字典d中。提取30頭牛只所有測試集樣本作為待識別牛只樣本進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表4所示:
表4的數(shù)據(jù)顯示,本實(shí)驗(yàn)向原有25頭牛的數(shù)據(jù)集中增加了5頭牛的數(shù)據(jù)集,增加圖片數(shù)據(jù)量為1000,原有25頭牛的數(shù)據(jù)集識別率是99.94%,增加數(shù)據(jù)集后識別率是99.72%,識別率略有降低,但仍然高于99%。實(shí)驗(yàn)結(jié)果表明:本實(shí)施例的基于卷積神經(jīng)網(wǎng)絡(luò)和稀疏表示分類模型的牛臉識別方法對每張圖片只提取64維特征,大大減少了運(yùn)算時(shí)間,可完成實(shí)時(shí)識別任務(wù),在養(yǎng)殖場實(shí)際環(huán)境中識別率較高,同時(shí)在養(yǎng)殖場牛只增加比例較低的情況下,無需重新訓(xùn)練cnn網(wǎng)絡(luò),具有較高的實(shí)用價(jià)值。
以上所述,僅是本發(fā)明的較佳實(shí)施例,并非用以限制本發(fā)明的權(quán)利范圍。任何以本申請專利范圍所涵蓋的權(quán)利范圍實(shí)施的技術(shù)方案,或者任何熟悉本領(lǐng)域的技術(shù)人員,利用上述揭示的方法內(nèi)容做出許多可能的變動和修飾的方案,均屬于本發(fā)明的保護(hù)范圍。