朱瑞金,張 濤,扎西頓珠
(西藏農牧學院電氣工程學院,西藏 林芝 860000)
我國養殖技術飛快發展,水產養殖規模在不斷擴大,但是水產養殖場依然采用傳統的機器或人工投喂方式,無法精準判斷魚類攝食時間及規律,造成過度投喂或投喂不足。過度投喂會影響水質,養殖成本上升;而投喂不足則會影響魚類的生長。基于魚類的攝食行為及規律進行研究,設計精準投喂具有十分重要的意義。
設計利用圖像處理技術來實現對魚群攝食行為的特征提取,利用BP神經網絡算法對魚群攝食行為進行分類與識別,從而建立起一套完整的基于圖像處理及人工智能算法的魚群攝食行為研究系統。具體思路為:利用攝像頭實時獲取養殖水廠的魚群視頻數據,通過對視頻數據分幀處理,提取魚群圖像的LBP直方圖特征數據,將特征數據送入BP神經網絡模型,進行魚群攝食行為的分類識別。
搭建了魚群養殖系統,利用其獲取實驗研究用的視頻數據。搭建的具體養殖系統如圖1所示,高清攝像機架設在養殖池正上方約1 m處,高清攝像機會實時拍攝記錄魚群的運動情況視頻。利用實時拍攝到的視頻數據進行分幀處理,所得到的圖像數據如圖2所示。將視頻分幀獲取到的圖像幀保存為bmp格式的圖像數據集,該數據集將作為BP神經網絡訓練及驗證的數據集?;谝陨汐@取到的系列圖像數據進行魚群攝食行為研究。

圖1 魚群活動分析實驗材料獲取示意圖Fig.1 Schematic diagram of acquisition of experimental materials for fish activity analysis

圖2 魚群活動狀態圖像Fig.2 Image of shoal activity
利用魚群攝食行為的圖像進行LBP特征提取,將提取好的特征數據送入設計好的BP神經網絡模型中,利用神經網絡模型對特征數據進行訓練學習,利用訓練好的模型對魚群攝食行為圖像數據進行分類識別。具體算法流程如圖3所示。

圖3 本文整體算法流程圖Fig.3 Overall algorithm flow chart
LBP(Local Binary Pattern)特征由Ojala等人提出,是一種圖像局部紋理特征的描述算子,該特征具有良好的抗旋轉、光照分布不均勻及灰度不變性等特征。LBP算子的算法本質是將當前需要計算的中心點像素灰度值作為閾值,與鄰域像素點的灰度值進行比較,形成一串為0或1的二進制碼表來作為特征描述。
作為一種描述圖像局部特征的LBP算子可以較好地描述每個像素與鄰域像素之間的關系,LBP具體的數學表達式為式(1):
(1)
式(1)中的(xc,yc)為中心像素點的位置,該中心像素點的灰度值為in,該中心點的8鄰域像素點的灰度值為ic。式中的ψ函數為二值比較函數,具體的數學表達式為式(2)所示:

(2)
原始的LBP特征算子是將圖像分為多個3×3的子窗口,分別計算每個子區域的特征,具體的計算過程為分別比較當前3×3子窗口的中心像素點灰度值與其相鄰的8個鄰域像素點的灰度值,若中心點的灰度值小于該鄰域點的灰度值則該節點比較結果為1,否則比較結果為0,按照以上流程繞著中心點順時針比較8次以后就會計算出8個0或1的二進制碼表,將該二進制碼表轉為十進制后就形成了該子窗口的LBP局部特征值。原始的LBP特征計算示意圖如圖4所示。

圖4 基本LBP 算法示意圖Fig.4 Schematic diagram of basic LBP algorithm
由于以上原始LBP特征算子只能計算一個固定區域的局部子圖,而無法滿足不同頻率紋理的需要,因此Ojala等人對原始LBP特征算子進行優化,提出了圓形LBP,圓形LBP對計算區域沒有限制,可以隨意進行擴展,同時拋棄了方形子窗口,利用圓形區域進行計算。圓形LBP算子可以在半徑R范圍內計算任意多個像素點。圖5所示為三個圓形LBP算子示意圖。

圖5 鄰域的圓形LBPFig.5 Circular LBP in neighborhood
圓形LBP算子的本質是利用當前圖像區域的聯合概率分布作為圖像的局部紋理信息分布,具體的像素點的灰度值聯合概率分布如式(3)所示:
M=m(pc,p0,…pn-1)
(3)
上式中,pc為該圓形子窗口的中心像素點的灰度值。p0,…pn-1分別為該圓形窗口上的位于圓周位置的各像素點的灰度值。圓形LBP算子的數學表達式如式(4)所示:
(4)
利用圓形LBP算子對魚群活動圖像進行紋理特征計算以后,由于LBP特征只是圖像局部紋理特征的一種表達,不能對魚群活動圖像的整體特征進行表達,因此利用LBP特征進行轉換,計算它的LBP特征直方圖的序列。利用圓形LBP計算出來的紋理特征及相應的LBP特征直方圖序列如圖6所示。
1986年,BP神經網絡由Rumelhart和McCelland等科學家提出,它是一種多層狀的前饋神經網絡網絡模型。BP神經網絡模型是信號既有的前向傳遞,同時也有誤差按照反向傳播來調節神經網絡參數的雙向流動模型。BP神經網絡模型一般分為輸入層、隱藏層、輸出層,這3層之間是按照全連接方式進行數據傳遞,其本質工作流程為通過給模型輸入數據及期望的數據,輸入數據通過前向傳遞分別經過輸入層、隱藏層及輸出層,在前向傳遞過程中,當前的神經元的輸出狀態只能傳遞到下一層相鄰的神經元,當經過輸出層的數據與期望數據不符合時,輸出層的數據與期望數據之間的誤差值進行反向傳播,從而通過反向的誤差傳播來調整網絡模型的權值及閾值,通過梯度下降策略來不斷使該模型的輸出數據與期望數據達到趨近。BP神經網絡模型圖如圖7所示。

圖7 BP神經網絡模型Fig.7 BP neural network model
BP神經網絡模型中的每一個節點是一個神經網絡元感知器,這些神經網絡元感知器對輸入數據進行線性組合計算,當線性組合計算出來的值大于設定的閾值時,輸出為1,否則為-1。采用的激活函數為sigmod函數,該激活函數的優點是可以將輸出值進行壓縮,使神經網絡模型可以快速收斂,sigmod函數如式(5)所示:
(5)
BP神經網絡模型的前向傳播及誤差反向傳播的具體流程步驟如下:(1)將神經網絡模型的各項權值及閾值進行隨機初始化。(2)根據公式(6)分別計算中間層及輸出層的輸出值:
bj=f(wijai-θj)
ct=f(vjtbj-rt)
(6)
上式中,bj為中間層的網絡神經元的輸出,wij代表輸入層到中間層的網絡神經元之間的連接權值,ct表示輸出層的網絡神經元的輸出,vjt代表中間層到輸出層的網絡神經元之間的連接權值。
(1)進行步驟(2)的下一次迭代,直至神經網路模型的輸出與期望值達到要求為止。
程序實現及仿真的硬件配置為:Intel(R)Core(TM)i7-7700HQ CPU@2.80GHz 2.81 GHz,安裝內存RAM為8GB,筆記本操作系統為win10。
設計的BP神經網絡模型為3層模型,其中輸入層接收LBP直方圖序列數據的輸入,中間層即為隱藏層為30個神經單元,輸出層為2個神經元。神經網絡訓練的最大迭代次數為500次,隱藏層的激活函數設置為sigmod函數,訓練的截止精度為1×10-4,當BP神經網絡在訓練過程中的誤差小于截止誤差時訓練結束。圖8所示為BP神經網絡模型在訓練過程中的訓練性能圖,其中橫軸代表迭代次數,縱軸代表訓練過程中的均方誤差。

圖8 BP神經網絡訓練性能圖Fig.8 BP neural network training performance diagram
由圖8可以看到神經網絡模型經過246次迭代后模型誤差達到了要求范圍內的誤差,因此系統可以快速收斂并精確地對魚群攝食行為進行分類識別。
利用訓練好的BP神經網絡模型準備了魚群活動的批量測試數據來進行BP神經網絡模型的魚群攝食行為的分類識別測試,具體的分類識別結果如表1所示。從表1可知,利用BP神經網絡模型的魚群攝食行為的識別準確率為97.23%。

表1 BP神經網絡分類識別結果Tab.1 BP neural network classification and recognition results
提出了一種基于LBP特征的BP神經網絡算法的魚類攝食行為識別模型算法。利用對魚群的攝食活動圖像及未攝食活動圖像數據,分別進行濾波等預處理及LBP特征提取,將特征紋理數據送入BP神經網絡模型進行訓練,利用訓練好的神經網絡模型進行魚類攝食行為的分類識別。經過實驗仿真,由實驗結果可得,設計的算法對魚類攝食行為的識別準確率可達到97.23%。