張博羅維平
(1.武漢紡織大學(xué)機械工程與自動化學(xué)院,湖北 武漢 430200;2.武漢紡織大學(xué)數(shù)字化紡織裝備重點實驗室,湖北 武漢 430200)
在奶牛飼養(yǎng)中,飼料至關(guān)重要,是奶牛獲得營養(yǎng)的主要來源,直接影響著奶牛的健康和生產(chǎn)性能。監(jiān)測與預(yù)測飼料消耗狀態(tài)對于保障奶牛的健康和提高生產(chǎn)管理效率具有重要意義。
目前,飼料的監(jiān)測主要依賴人工目測,存在著工作量大、人力成本高和效率低的問題。同時,由于人工觀測的局限性,巡視頻率和準(zhǔn)確率難以保障。此外,人工難以科學(xué)預(yù)測未來一段時間的飼料消耗狀態(tài),難以保障飼料供給的及時性。隨著畜牧業(yè)規(guī)模的不斷擴大,規(guī)模化、集約化養(yǎng)殖日益成為趨勢[1],給傳統(tǒng)的依靠人工目測的巡視方式帶來了更大的挑戰(zhàn)。U-Net圖像語義分割網(wǎng)絡(luò)具有編碼器-解碼器結(jié)構(gòu)、跳躍連接、適用于小樣本學(xué)習(xí)等特點和優(yōu)勢,使其成為圖像分割任務(wù)中廣泛應(yīng)用的有效模型架構(gòu)之一,已廣泛應(yīng)用于農(nóng)業(yè)領(lǐng)域。如,張欣等[2]基于U-Net的改進模型對淡水養(yǎng)殖區(qū)進行提取。此外,長短期記憶網(wǎng)絡(luò)(Long Short-term Memory,LSTM)能夠捕獲序列數(shù)據(jù)中的長期依賴性[3-8],并被廣泛用于處理時間序列數(shù)據(jù)的分類和回歸問題。因此,本研究利用U-Net圖像語義分割網(wǎng)絡(luò)來實現(xiàn)對飼料消耗狀態(tài)的自動監(jiān)測,并通過LSTM時間序列預(yù)測網(wǎng)絡(luò)來預(yù)測未來一段時間的飼料消耗狀態(tài)。
本研究研發(fā)了一套基于監(jiān)控視頻的飼料消耗狀態(tài)監(jiān)測與預(yù)測系統(tǒng),以提高生產(chǎn)管理效率。
系統(tǒng)的整體框架如圖1所示。該系統(tǒng)分為數(shù)據(jù)資源層、業(yè)務(wù)邏輯層和視圖層。飼料監(jiān)控視頻獲取的視頻數(shù)據(jù)通過交換機傳輸?shù)焦た貦C,工控機對接入的視頻數(shù)據(jù)進行實時處理,并根據(jù)業(yè)務(wù)的需求輸出相應(yīng)的結(jié)果。
圖1 系統(tǒng)整體框架
數(shù)據(jù)資源層作為系統(tǒng)的核心組成部分,在滿足用戶管理、實時飼料消耗狀態(tài)監(jiān)測和歷史視頻管理等3大需求方面發(fā)揮著關(guān)鍵作用。為了有效地管理和處理數(shù)據(jù),設(shè)計了用戶信息表、歷史飼料消耗狀態(tài)數(shù)據(jù)表和飼料視頻數(shù)據(jù)表。用戶信息表用于存儲系統(tǒng)中的用戶信息,包括用戶姓名、聯(lián)系方式、權(quán)限等內(nèi)容,以便系統(tǒng)能夠進行用戶身份驗證和管理。歷史飼料消耗狀態(tài)數(shù)據(jù)表用于記錄飼料的消耗狀態(tài)歷史數(shù)據(jù),包括時間戳、站點位置、消耗狀態(tài)值等信息,以便系統(tǒng)能夠?qū)崟r預(yù)測飼料消耗情況并生成相應(yīng)的報表和統(tǒng)計信息。飼料視頻數(shù)據(jù)表則用于存儲歷史視頻數(shù)據(jù),包括攝像頭錄制的飼料視頻,以便用戶可以隨時回放和查看歷史視頻。為了保證數(shù)據(jù)的安全性和可靠性,選擇了MySQL數(shù)據(jù)庫作為數(shù)據(jù)存儲方式,因其具有穩(wěn)定性高、性能優(yōu)越等優(yōu)點,能夠滿足系統(tǒng)對數(shù)據(jù)存儲和管理的需求。通過這些設(shè)計和選擇,數(shù)據(jù)資源層能夠有效支持系統(tǒng)的各項功能和業(yè)務(wù)需求,為用戶提供穩(wěn)定可靠的服務(wù)。
業(yè)務(wù)邏輯層是系統(tǒng)或應(yīng)用程序中的一個核心組件,其主要功能在于從數(shù)據(jù)資源層獲取數(shù)據(jù)并進行處理,將處理結(jié)果傳輸?shù)揭晥D層和數(shù)據(jù)資源層。在業(yè)務(wù)邏輯層中,涵蓋了多個業(yè)務(wù)單元,包括并行檢測、輪巡、飼料消耗狀態(tài)監(jiān)測以及飼料消耗狀態(tài)預(yù)測等。具體而言,業(yè)務(wù)邏輯層負責(zé)執(zhí)行并行檢測任務(wù),以同時處理多個數(shù)據(jù)源或數(shù)據(jù)流,提高系統(tǒng)的處理效率。同時,業(yè)務(wù)邏輯層還包括輪巡功能,用于周期性地輪巡展示監(jiān)測與預(yù)測結(jié)果。另外,飼料消耗狀態(tài)監(jiān)測業(yè)務(wù)單元允許系統(tǒng)實時監(jiān)測飼料的消耗狀態(tài),提供及時的數(shù)據(jù)反饋。而飼料消耗狀態(tài)預(yù)測業(yè)務(wù)單元則利用歷史數(shù)據(jù)和算法模型對未來一段時間的飼料消耗狀態(tài)進行預(yù)測,幫助用戶作出合理的管理決策。通過這些業(yè)務(wù)單元的組合,業(yè)務(wù)邏輯層實現(xiàn)了系統(tǒng)的功能和業(yè)務(wù)邏輯,為用戶提供了更加完善和高效的服務(wù)。
視圖層的功能在于提供交互式操作界面,以展示數(shù)據(jù)結(jié)果并接收用戶的輸入。具體來說,視圖層包括飼料消耗狀態(tài)監(jiān)測畫面、飼料消耗狀態(tài)預(yù)測畫面和用戶信息管理界面等模塊。在飼料消耗狀態(tài)監(jiān)測畫面中,用戶可以實時查看飼料的消耗狀態(tài),了解飼料的使用情況。而在飼料消耗狀態(tài)預(yù)測畫面中,系統(tǒng)則提供了對未來飼料消耗狀態(tài)的預(yù)測,幫助用戶作出合理的飼料管理決策。另外,用戶信息管理界面則允許用戶管理系統(tǒng)中的用戶信息,包括添加、編輯和刪除用戶等功能。通過這些交互界面,用戶可以方便地獲取信息、進行預(yù)測和管理系統(tǒng)中的用戶信息,實現(xiàn)了系統(tǒng)與用戶之間的有效交互。
根據(jù)實際業(yè)務(wù)需求,系統(tǒng)主要分為視頻傳輸模塊、飼料消耗狀態(tài)監(jiān)測模塊、飼料消耗狀態(tài)預(yù)測模塊和飼料消耗狀態(tài)可視化模塊,各模塊之間的協(xié)作過程如圖2所示。
圖2 系統(tǒng)各模塊協(xié)作過程
視頻傳輸模塊主要實現(xiàn)2個功能:將各監(jiān)控站點的視頻數(shù)據(jù)接入系統(tǒng),自動截斷并保存監(jiān)控視頻;提供監(jiān)控站點輪巡的解決方案。
將飼料監(jiān)控視頻接入系統(tǒng)并展示結(jié)果需要經(jīng)過多個處理步驟,其中視頻流接入是至關(guān)重要的環(huán)節(jié)。視頻接入:使用??低晹z像頭并采用RTSP(Real Time Streaming Protocol)協(xié)議,通過獲取攝像頭的URL(Uniform Resource Locator)地址即可接入對應(yīng)的視頻數(shù)據(jù)。為了處理多個站點的視頻流數(shù)據(jù),采用了多線程技術(shù),為每個站點創(chuàng)建獨立的線程。視頻保存:系統(tǒng)根據(jù)攝像頭的幀率和圖像幀的計數(shù),實現(xiàn)對指定視頻時長的截取,從而達到自動截斷保存的目的。具體來說,系統(tǒng)會根據(jù)預(yù)先設(shè)置的參數(shù)和需求,監(jiān)控攝像頭拍攝的視頻流,并在達到指定的時長后自動截斷并保存視頻。保存后的視頻數(shù)據(jù)可以用于后續(xù)的分析與研究,如對飼料消耗狀態(tài)的趨勢分析等。同時,也可以作為歷史數(shù)據(jù)進行備份和存檔,以便于未來的參考和回顧。通過視頻保存功能,系統(tǒng)能夠有效地記錄和管理視頻數(shù)據(jù),為用戶提供了豐富的信息和便捷的操作體驗。
此外,自動輪巡時,每隔5s切換對應(yīng)攝像頭的基于RTSP的URL地址,獲取相應(yīng)的視頻源,進而展示相應(yīng)站點的監(jiān)測預(yù)測結(jié)果。具體來說,系統(tǒng)會維護一個攝像頭列表,其中包含每個攝像頭對應(yīng)的URL地址。在自動輪巡時,系統(tǒng)會按照預(yù)先設(shè)置的時間間隔,自動切換到下一個攝像頭的URL地址,并通過URL地址獲取相應(yīng)的視頻源。獲取到視頻源后,展示相應(yīng)站點的監(jiān)測預(yù)測結(jié)果。通過自動輪巡功能,系統(tǒng)能夠高效地管理和展示多個站點的監(jiān)測結(jié)果,為用戶提供全面的監(jiān)測信息。
飼料消耗狀態(tài)變化預(yù)測的基礎(chǔ)是精確的實時飼料消耗狀態(tài)監(jiān)測,飼料消耗狀態(tài)監(jiān)測模塊的主要作用是使用U-Net圖像語義分割網(wǎng)絡(luò)對飼料視頻幀進行語義分割,分割出飼料消耗區(qū)域與飼料殘余區(qū)域,通過計算飼料消耗區(qū)域的占比,達到監(jiān)測飼料消耗狀態(tài)的目的。具體來說,飼料的消耗狀態(tài)=(飼料消耗區(qū)域的像素點總數(shù)/(飼料消耗區(qū)域的像素點總數(shù)+飼料殘余區(qū)域的像素點總數(shù)))×100%。U-Net語義分割效果圖如圖3所示。
注:圖3b中紅色區(qū)域為飼料殘余區(qū)域,綠色區(qū)域為飼料消耗區(qū)域。
為了科學(xué)指導(dǎo)調(diào)度決策的制定,并提高生產(chǎn)管理效率,利用LSTM時間序列預(yù)測網(wǎng)絡(luò)對監(jiān)控站點未來一段時間的飼料消耗狀態(tài)進行預(yù)測。具體而言,利用歷史飼料消耗狀態(tài)數(shù)據(jù)訓(xùn)練LSTM模型;使用訓(xùn)練好的LSTM模型對未來一段時間的飼料消耗狀態(tài)進行預(yù)測,以獲得對飼料消耗值的預(yù)估值。預(yù)測結(jié)果將作為參考,用于指導(dǎo)生產(chǎn)調(diào)度和決策,幫助優(yōu)化生產(chǎn)計劃、合理安排資源和減少生產(chǎn)成本。通過這種科學(xué)的預(yù)測方法,能夠更加準(zhǔn)確地了解未來的飼料消耗趨勢,從而提高生產(chǎn)管理的效率,實現(xiàn)更加智能和可持續(xù)的生產(chǎn)管理。
飼料消耗狀態(tài)可視化分為監(jiān)測可視化與預(yù)測可視化2個方面。監(jiān)測可視化通過在監(jiān)控畫面上將飼料殘余區(qū)域與飼料消耗區(qū)域分別賦上不同的顏色來展示當(dāng)前飼料的消耗情況。具體而言,使用不同的顏色來區(qū)分飼料殘余區(qū)域和飼料消耗區(qū)域,以直觀展示當(dāng)前飼料的消耗狀態(tài)。此外,監(jiān)測可視化還將飼料消耗狀態(tài)值、飼料消耗等級和監(jiān)控站點位置等信息顯示在監(jiān)控畫面上,以便用戶快速了解監(jiān)控站點的實時情況。預(yù)測可視化則采用一種直觀的方式展示未來一段時間的飼料消耗狀態(tài)值、飼料消耗等級和站點位置,以幫助用戶掌握未來一段時間的飼料消耗情況。通過這種可視化方式,用戶可以清晰地了解監(jiān)控站點的飼料消耗情況,從而更好地進行生產(chǎn)管理和調(diào)度決策。
系統(tǒng)運行在Ubuntu操作系統(tǒng)平臺上,部署在一臺配置為Intel Core i7-12700F 2.10 GHz處理器、16.0 GB RAM內(nèi)存和NVIDIA GeForce RTX 3050顯卡的計算機上。同時,系統(tǒng)采用MySQL數(shù)據(jù)庫作為數(shù)據(jù)存儲和管理系統(tǒng),利用其強大的數(shù)據(jù)管理功能和高性能的數(shù)據(jù)處理能力,確保數(shù)據(jù)的安全性和可靠性。在用戶界面開發(fā)方面,系統(tǒng)采用PyQt框架進行圖形用戶界面的開發(fā)。PyQt是一個功能強大的Python GUI工具包,提供了豐富的界面設(shè)計組件和易用的編程接口,使得開發(fā)人員能夠快速構(gòu)建出美觀、交互性強的用戶界面。
飼料的消耗狀態(tài)值分為5個等級,80%~100%為5級,60%~80%為4級,40%~60%為3級,20%~40%為2級,0%~20%為1級,并根據(jù)等級發(fā)出警報,其中,5級表示飼料消耗情況最嚴(yán)重。通過飼料消耗狀態(tài)監(jiān)測模塊獲得的飼料消耗狀態(tài)值、監(jiān)測時間和站點名稱需要存儲至MySQL數(shù)據(jù)庫,以便后續(xù)研究與分析。同時,這些數(shù)據(jù)也將被傳輸至可視化模塊,實時展示監(jiān)測結(jié)果。此外,還需將數(shù)據(jù)傳輸至后續(xù)的預(yù)測模塊,以支持預(yù)測任務(wù)。
由實測可知,系統(tǒng)的監(jiān)測幀率可達FPS(Frames Per Second),可滿足實時檢測的要求。
為了更直觀地展示飼料消耗情況,將監(jiān)測的結(jié)果進行可視化。將飼料殘余區(qū)域與飼料消耗區(qū)域分別賦上不同的顏色,并將站點的名稱、飼料消耗值、飼料消耗等級顯示在界面的左下方,如圖4所示。
圖4 飼料消耗狀態(tài)實時監(jiān)測畫面
飼料消耗狀態(tài)預(yù)測的界面如圖5所示。飼料消耗狀態(tài)預(yù)測界面直觀展示了未來一段時間的飼料消耗狀態(tài)預(yù)測值,還展示了未來一段時間的飼料消耗等級及站點位置,當(dāng)飼料消耗狀態(tài)預(yù)測值達到預(yù)警水平時,系統(tǒng)會觸發(fā)相應(yīng)的警報,有良好的實用性。
圖5 飼料消耗狀態(tài)預(yù)測界面
針對當(dāng)前落后的飼料消耗狀態(tài)監(jiān)測手段,結(jié)合人工智能技術(shù),研發(fā)了一套基于監(jiān)控視頻的飼料消耗狀態(tài)監(jiān)測與預(yù)測系統(tǒng)。該系統(tǒng)通過監(jiān)控攝像頭獲取視頻數(shù)據(jù);使用圖像語義分割網(wǎng)絡(luò)U-Net監(jiān)測飼料消耗狀態(tài);使用時間序列預(yù)測網(wǎng)絡(luò)LSTM對飼料消耗狀態(tài)進行預(yù)測。此外,系統(tǒng)支持多站點并行監(jiān)測、輪巡、自動截斷保存視頻等功能。在內(nèi)蒙古某牧場的試驗結(jié)果表明,該系統(tǒng)運行穩(wěn)定,對于保障奶牛的健康和提高生產(chǎn)管理效率具有重要意義。