韓閏凱 楊晶晶 翟永輝 顧志豪 劉家興 郭甲倩
摘要:近些年隨著機(jī)器學(xué)習(xí)領(lǐng)域的不斷發(fā)展,在諸多領(lǐng)域都展現(xiàn)出其獨(dú)特的優(yōu)勢(shì)。目前在養(yǎng)雞業(yè)中,雛雞性別鑒別的方式主要為人工鑒別,鑒別過(guò)程需要耗費(fèi)大量人力物力,且需要鑒別人員擁有豐富的鑒別經(jīng)驗(yàn)。該文結(jié)合機(jī)器學(xué)習(xí)在圖像識(shí)別方向的發(fā)展,將圖像識(shí)別技術(shù)應(yīng)用于雛雞性別鑒別,從而解決養(yǎng)雞行業(yè)中雛雞性別鑒別問(wèn)題。使用卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建雛雞性別鑒別模型,并在高識(shí)別率的情況下對(duì)模型進(jìn)行壓縮,將其轉(zhuǎn)換為Tensorflow Lite模型后,部署到Android App以實(shí)現(xiàn)自動(dòng)鑒別雛雞公母。同時(shí),在Android App實(shí)現(xiàn)了雞的品種查詢、疾病查詢等功能。該軟件可以降低相關(guān)工作人員工作負(fù)擔(dān),提高鑒別雛雞公母的效率,有重要的應(yīng)用價(jià)值。
關(guān)鍵詞:雛雞識(shí)別;機(jī)器學(xué)習(xí);養(yǎng)殖;Android;Tensorflow Lite
中圖分類號(hào):TP18? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)18-0082-04
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
App Design for Identification of Chicken Sex Based on TensorFlow Lite
HAN Run-kai,YANG Jing-jing, ZHAI Yong-hui, GU Zhi-hao, LIU Jia-xing, GUO Jia-qian
(School of Information Science and Engineering, Hebei North University, Zhangjiakou 075000, China)
Abstract:Machine learning,with its continuous development in recent years in fields, its distinctive advance has appeared.? At present in chicken culture industry, the chicken sex is identified manually as the main, which costs much in man power and material, and the personnel is required experienced. In the paper,? development of machine learning in image identification is combined with the use of technology of image identification into chicken sex identification so as to solve the problem mentioned in chicken industry: apply Convolutional Neural Network(CNN) to construct chicken sex identification model, and compress the model in condition of high identification rate; transfer the compressed model to TensorFlow Lite model, then deploy the model to Android App for implementation of automatic identification of chicken sex and functions of enquiry of both chicken variety and disease, etc.? This software may be used to reduce relevant man power, improve the efficiency of identical rate of chicken sex, which is of important applicable value.
Key words: identification 0f chicken sex; machine learning; culture; android; TensorFlow Lite
1 背景
1.1 開發(fā)背景
隨著生活水平的提高,人們對(duì)雞肉及其副產(chǎn)品的需求量日益增加,導(dǎo)致養(yǎng)雞業(yè)迅速發(fā)展。而初生雛雞是較脆弱,飼養(yǎng)時(shí)需要較高的成本,同時(shí)由于溫度、濕度、通風(fēng)、光照等因素影響 [1],初生雛雞擁有較高的死亡率。而且在養(yǎng)殖過(guò)程中,涉及的雛雞性別識(shí)別問(wèn)題[2],主要為人工操作,這在雛雞養(yǎng)殖過(guò)程中消耗了大量的時(shí)間與人力。
現(xiàn)實(shí)生活中養(yǎng)雞場(chǎng)無(wú)論是商品肉雞或是商品蛋雞養(yǎng)殖,都需要把不同性別的雛雞分開養(yǎng)殖或按一定比例混合飼養(yǎng)[3],從而提高初生雛雞的存活率和養(yǎng)殖的經(jīng)濟(jì)效益。所以養(yǎng)雞場(chǎng)養(yǎng)殖雛雞時(shí)對(duì)購(gòu)買的初生雛雞進(jìn)行性別鑒別尤為重要,雛雞性別鑒別流程中多個(gè)步驟均為人工操作,需要花費(fèi)大量時(shí)間,同時(shí)對(duì)于雛雞鑒別人員的眼力與鑒別經(jīng)驗(yàn)有較高要求。所以開發(fā)一款雛雞性別鑒別軟件尤為重要,可以在支持養(yǎng)雞人員的工作同時(shí),降低工作負(fù)擔(dān)提高工作效率,并且?guī)椭B(yǎng)雞場(chǎng)節(jié)省成本。
該雛雞性別識(shí)別App能夠?qū)崿F(xiàn)通過(guò)快捷的拍照或是使用雛雞的生殖部位圖片對(duì)雛雞進(jìn)行性別識(shí)別,提高性別鑒別效率,以便將剛出生的雛雞合理飼養(yǎng),進(jìn)而提高養(yǎng)殖效率與養(yǎng)雞的經(jīng)濟(jì)收益。
1.2 雛雞翻腔鑒別法
雛雞翻腔鑒別[4]要在雛雞破殼后12小時(shí)內(nèi)完成鑒別。需將雛雞肛門翻開,通過(guò)雛雞泄殖腔前端突起形狀來(lái)判斷雛雞性別,雌性突起前端尖,雄性突起前端圓。與羽色法、羽斑法等鑒別方法相比,翻缸鑒別法適用于適用各個(gè)品種雛雞,且準(zhǔn)確率高。
2 開發(fā)平臺(tái)
TensorFlow Lite 是 Google在2017年I/O大會(huì)上首次被提出,其使開發(fā)人員可以在端側(cè)部署人工智能應(yīng)用[5]。同時(shí)TensorFlow Lite市TensorFlow,在移動(dòng)設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型的跨平臺(tái)解決方案,并擁有低延遲,運(yùn)行時(shí)庫(kù)極小等特性,使其在移動(dòng)設(shè)備上有著十分優(yōu)秀的表現(xiàn),并加速端側(cè)機(jī)器學(xué)習(xí)的發(fā)展[6]。
Android系統(tǒng)是由Android系統(tǒng)公司的創(chuàng)始人Andy Rubin創(chuàng)造的,而后被Google收購(gòu),Google的目標(biāo)是將Android系統(tǒng)打造成一個(gè)標(biāo)準(zhǔn)化、開放式的移動(dòng)操作系統(tǒng)平臺(tái)[7]。目前Android系統(tǒng)早已成為主流移動(dòng)終端操作系統(tǒng)之一,并占據(jù)了大部分市場(chǎng)份額。同時(shí)與其他移動(dòng)終端操作系統(tǒng)相比Android系統(tǒng)由于開源性而吸引了大量開發(fā)者前來(lái)進(jìn)行應(yīng)用開發(fā),導(dǎo)致在過(guò)去幾年中Android應(yīng)用的數(shù)量出現(xiàn)了井噴式增長(zhǎng),并在一定程度上促進(jìn)了Android技術(shù)的發(fā)展。而且Android系統(tǒng)已經(jīng)不僅僅用在手機(jī)端,還廣泛用于TV、手表等各種可穿戴設(shè)備以及各種智能硬件。
3 需求分析
3.1 用戶需求
對(duì)于軟件性能來(lái)說(shuō),App不僅需要具備基本的功能,在軟件的設(shè)計(jì)和人機(jī)交互過(guò)程中更要注重用戶的體驗(yàn)感,本產(chǎn)品的界面簡(jiǎn)潔清晰,色彩清新可為用戶提供優(yōu)良的體驗(yàn)。
1)軟件功能完整性:客戶端功能齊全,為用戶使提供便利。
2)軟件運(yùn)行流暢性:用戶使用過(guò)程中不能出現(xiàn)卡頓現(xiàn)象,在一些必需的耗時(shí)操作中展示加載動(dòng)畫提示用戶,確保用戶不會(huì)出現(xiàn)負(fù)面體驗(yàn)。
3)軟件啟動(dòng)時(shí)間較短:軟件的啟動(dòng)是用戶體驗(yàn)的第一步,如果啟動(dòng)時(shí)間較費(fèi)時(shí)會(huì)直接影響用戶的體驗(yàn)感。
4)軟件內(nèi)存占用較少:軟件設(shè)計(jì)不當(dāng)會(huì)造成占用內(nèi)存過(guò)高,運(yùn)行中導(dǎo)致軟件被系統(tǒng)進(jìn)程殺掉,從而大大降低了用戶的體驗(yàn)感。
3.2 功能需求
1)雛雞性別鑒別軟件,必須滿足用戶可對(duì)雛雞進(jìn)行快速性別鑒別的功能,本產(chǎn)品通過(guò)機(jī)器學(xué)習(xí)技術(shù)會(huì)對(duì)雛雞性別概率進(jìn)行初步的分析。
2)滿足客戶端與服務(wù)器之間、客戶端與客戶端之間的通信流暢,用戶在我們的平臺(tái)能夠及時(shí)地發(fā)送接收信息。
3)錯(cuò)誤信息提示,軟件在斷網(wǎng)時(shí)運(yùn)行或其他錯(cuò)誤情況,需有彈窗告知用戶,除此之外在本產(chǎn)品的“我的”界面有意見反饋功能,用戶可以隨時(shí)通過(guò)此功能對(duì)本產(chǎn)品提出建議。
4 雛雞性別識(shí)別模型實(shí)現(xiàn)
由于現(xiàn)實(shí)生活中Android設(shè)備可能處于無(wú)網(wǎng)絡(luò)的情況,無(wú)法將數(shù)據(jù)傳輸?shù)椒?wù)器端進(jìn)行運(yùn)算,同時(shí)在部署機(jī)器學(xué)習(xí)模型時(shí),要考慮到移動(dòng)設(shè)備的帶寬較低與其在運(yùn)行時(shí)對(duì)低延遲、低功耗的要求。所以無(wú)法直接將用Keras訓(xùn)練的雛雞性別鑒別模型直接部署到移動(dòng)設(shè)備端,需使用TensorFlow Lite將訓(xùn)練好的模型轉(zhuǎn)換成TensorFlow Lite 的模型文件,并使用TensorFlow Lite中的優(yōu)化方法對(duì)轉(zhuǎn)換后的模型文件進(jìn)行處理,從而保證模型在Android設(shè)備上的識(shí)別準(zhǔn)確率與運(yùn)行效率。
1) 使用文獻(xiàn)[8]中的方法訓(xùn)練好初始雛雞性別鑒別模型。但由于初始模型網(wǎng)絡(luò)參數(shù)量大,無(wú)法直接部署到Android端。所以將已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)模型,通過(guò)知識(shí)蒸餾的方法進(jìn)行模型壓縮,從而得到一個(gè)較小體積的壓縮模型,并且其準(zhǔn)確率與初始模型相近。
2) 采用非量化的TFLite轉(zhuǎn)換器,將已經(jīng)壓縮好的雛雞性別鑒別模型轉(zhuǎn)換為Tensorflow Lite格式。
3) 在Android端使用TensorFlow Lite 的模型的解釋執(zhí)行器去解釋執(zhí)行已經(jīng)轉(zhuǎn)換完成的雛雞性別鑒別模型。從而完成雛雞性別模型在Android端的部署。
5 雛雞識(shí)別的設(shè)計(jì)
雛雞識(shí)別軟件具有以下基本功能,能夠滿足用戶基本需求包括:登錄注冊(cè)、雛雞性別識(shí)別、雞的品種、雞的疾病、雞場(chǎng)建設(shè)、動(dòng)態(tài)、收藏、新聞資訊、意見反饋、我的關(guān)注、瀏覽歷史、修改資料、退出登錄。
1) 登錄注冊(cè):初次下載應(yīng)用的用戶可以設(shè)置賬號(hào)密碼進(jìn)行注冊(cè),獲取本軟件一個(gè)身份ID,并使用注冊(cè)的賬號(hào)進(jìn)行登錄,完成登錄的用戶可以使用軟件的所有功能。
2) 雛雞性別識(shí)別:用戶使用此功能,對(duì)雛雞拍一張照片或者是從相冊(cè)中選擇一張雛雞的照片進(jìn)行識(shí)別,識(shí)別結(jié)果會(huì)給出這只雞雌性與雄性的性別比例,以此來(lái)進(jìn)行一個(gè)初步的雛雞性別判斷。
3) 雞的品種:本產(chǎn)品收錄了六十多種雞的品種,充分滿足用戶的需求,通過(guò)對(duì)本功能的查看,分辨并了解一只雞的品種特點(diǎn)習(xí)性等。
4) 雞的疾病;本功能羅列了雞的各種常見疾病,根據(jù)疾病能夠查看病因、癥狀、治療方法。
5) 雞場(chǎng)建設(shè):提供建設(shè)雞場(chǎng)的大量資料,為初次建設(shè)雞場(chǎng)的用戶提供了許多的建議和指導(dǎo)。
6) 動(dòng)態(tài):為用戶提供一個(gè)分享與交流的平臺(tái),用戶可以在養(yǎng)殖的過(guò)程中分享自己的養(yǎng)殖經(jīng)驗(yàn),同時(shí)也可以查閱其他用戶的養(yǎng)殖經(jīng)驗(yàn)來(lái)進(jìn)行參考。
7) 收藏:用戶可以收藏對(duì)自己有用的帖子,方便下次查看。
8) 新聞資訊:在本產(chǎn)品的首頁(yè)每天都會(huì)推出有關(guān)雞在市場(chǎng)上的資訊,用戶在家也能了解時(shí)事。
9 )意見反饋:用戶可以通過(guò)此功能對(duì)我們的產(chǎn)品提出建議或問(wèn)題,我們會(huì)為用戶提的意見進(jìn)行優(yōu)化修改。
10) 我的關(guān)注:記錄了用戶在動(dòng)態(tài)中關(guān)注的其他用戶。用戶可以瀏覽所關(guān)注用戶的個(gè)人信息和發(fā)布的動(dòng)態(tài),在瀏覽動(dòng)態(tài)的過(guò)程中不會(huì)查看到未關(guān)注的用戶所發(fā)布的動(dòng)態(tài)。
11) 瀏覽歷史:記錄用戶觀看過(guò)的帖子,方便用戶查找,以免在沒(méi)有關(guān)注和收藏的情況下找不到想要查看的帖子。
12) 修改資料:用戶可以修改自己向其他用戶展示的個(gè)人信息,如頭像、昵稱、年齡、個(gè)性簽名等。
13) 退出登錄:退出你的賬號(hào)。
6 雛雞性別識(shí)別軟件的實(shí)現(xiàn)
通過(guò)圖片與文字相結(jié)合的方式介紹本產(chǎn)品的實(shí)現(xiàn):
6.1 登錄注冊(cè)
登錄注冊(cè)模塊使用,通過(guò)將用戶數(shù)據(jù)與后臺(tái)連接,后臺(tái)會(huì)對(duì)注冊(cè)的信息進(jìn)行檢查(用戶上傳的身份用戶名是否已經(jīng)存在),檢查通過(guò)后會(huì)對(duì)密碼進(jìn)行動(dòng)態(tài)加密處理,再存儲(chǔ)到數(shù)據(jù)庫(kù)的用戶表中。用戶的登錄、注冊(cè)功能展示如下(如圖2,圖3所示)。
6.2 首頁(yè)
首頁(yè)頂部有搜索功能供用戶查詢,搜索下面有精美的輪播圖,首頁(yè)包含雞的品種、雞的疾病、雞場(chǎng)建設(shè)、雛雞性別識(shí)別四個(gè)功能,還有每天的新聞資訊(如圖4),首頁(yè)的四個(gè)功能界面分別如下(圖5,圖6,圖7,圖8,圖9)。
6.3 雞的品種及詳細(xì)
在軟件的后臺(tái)數(shù)據(jù)庫(kù)中收錄了常見的雞的品種以及它們的介紹。用戶打開該功能的界面可以獲取數(shù)據(jù)庫(kù)中所收錄的雞的品種名稱和該品種的圖片(圖5),點(diǎn)擊雞的品種名稱和該品種的圖片所展對(duì)應(yīng)的按鈕會(huì)跳轉(zhuǎn)到所選中雞的品種詳細(xì)頁(yè)面(圖6),便于用戶可以直觀地了解該品種信息。
6.4 雞的疾病
將常見的雞的疾病信息進(jìn)行整合,并且收錄到軟件后臺(tái)數(shù)據(jù)庫(kù)中。用戶在該功能界面可以獲取五種類型的疾?。?xì)菌性傳染病、病毒性傳染病、寄生蟲病、營(yíng)養(yǎng)缺乏病、雞中毒)以及每種類型所對(duì)應(yīng)的疾病的名稱(圖7),點(diǎn)擊疾病名稱所對(duì)應(yīng)的按鈕可以跳轉(zhuǎn)到該疾病的詳細(xì)頁(yè)面(圖8),在該頁(yè)面中展示了所選中的疾病詳細(xì)信息,介紹了其病因、癥狀、治療方法供用戶參考。
6.5 雞舍建設(shè)
在軟件的后臺(tái)數(shù)據(jù)庫(kù)中收錄了一些的雞舍的建設(shè)信息,該頁(yè)面提供了一些雞舍的建設(shè)信息供用戶參考(圖9,圖10)。
6.6 雛雞識(shí)別
該功能是基于TensorFlow Lite模型文件和Android中的Neural Networks API(Google在Android 8.1以及更高版本的系統(tǒng)中,為實(shí)現(xiàn)機(jī)器學(xué)習(xí)框架而設(shè)計(jì)的底層接口。)實(shí)現(xiàn)的,用戶通過(guò)選擇一張雛雞泄殖腔前端的圖片(需將雛雞肛門翻開拍攝的圖片)即可運(yùn)行TensorFlow Lite模型進(jìn)而獲取該雛雞的性別概率,界面如下(圖11,圖12)。(雛雞破殼后12小時(shí)內(nèi)完成識(shí)別準(zhǔn)確率較高)。
6.7 動(dòng)態(tài)
在動(dòng)態(tài)頁(yè)面可以查看其他用戶發(fā)表的雛雞性別鑒別與養(yǎng)殖經(jīng)驗(yàn)的文章(如圖13)。同時(shí)想要查看文章的詳細(xì)內(nèi)容可以對(duì)文章進(jìn)行點(diǎn)擊,并且文章可在下方發(fā)表評(píng)論或與其他人進(jìn)行相關(guān)知識(shí)探討(如圖14)。點(diǎn)擊動(dòng)態(tài)右上角圖標(biāo)進(jìn)入發(fā)布動(dòng)態(tài)界面,將雛雞性別鑒別或養(yǎng)殖過(guò)程中的經(jīng)驗(yàn)與問(wèn)題進(jìn)行分享。
6.8 收藏
這里可以清楚地看到以前收藏的帖子(圖16)擊帖子,點(diǎn)擊帖子可以查看帖子的詳細(xì)內(nèi)容(如圖14)。
6.9 我的
我的界面有網(wǎng)名頭像、我的關(guān)注、瀏覽歷史、修改資料、關(guān)于我們、意見反饋等主要功能(如圖17)。我的關(guān)注可以查看用戶在動(dòng)態(tài)中關(guān)注過(guò)的人(如圖18);瀏覽歷史保存了用戶曾經(jīng)瀏覽過(guò)的帖子,方便查找(如圖19);修改資料通過(guò)頭像、昵稱等修改,讓用戶展示自己的個(gè)性(如圖20)。
7 結(jié)束語(yǔ)
本文對(duì)基于TensorFlow Lite的雛雞性別鑒別App的開發(fā)背景、需求分析與軟件的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行探討和研究,通過(guò)用文字與圖片相結(jié)合的方式進(jìn)行闡述。在軟件開發(fā)時(shí),采用設(shè)計(jì)模式原則,使代碼趨于高內(nèi)聚低耦合,提高代碼可維護(hù)性,易讀性以及擴(kuò)展性。此外,在實(shí)現(xiàn)雛雞性別鑒別功能的基礎(chǔ)上,增加了與雛雞養(yǎng)殖相關(guān)的功能。為相關(guān)的工作人員提供便利,并且有助于雞場(chǎng)提高雛雞養(yǎng)殖的經(jīng)濟(jì)效益。
參考文獻(xiàn):
[1] 張榮號(hào).蛋雞養(yǎng)殖技術(shù)要點(diǎn)[J].湖北畜牧獸醫(yī),2017,38(5):38.
[2] 馮淑梅.雛雞飼養(yǎng)中應(yīng)注意的問(wèn)題[J].農(nóng)業(yè)開發(fā)與裝備,2019(4):240.
[3] 王德智.雛雞日常飼養(yǎng)技術(shù)[J].畜牧獸醫(yī)科學(xué):電子版,2020(13):55-56.
[4] 魏曉冉,王志強(qiáng),姜國(guó)松.雛雞雌雄翻肛鑒別技術(shù)要點(diǎn)[J].家禽科學(xué),2016(7):30-32.
[5] 高陸川.TensorFlow Lite開發(fā)平臺(tái)的研究與分析[J].電子測(cè)試,2018(20):64-65,85.
[6] 李雙峰.TensorFlow Lite:端側(cè)機(jī)器學(xué)習(xí)框架[J].計(jì)算機(jī)研究與發(fā)展,2020,57(9):1839-1853.
[7] 肖勇鋒,邱桃榮,余宇婷,等.基于Android的色卡識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].南昌大學(xué)學(xué)報(bào)(工科版),2016,38(2):183-190.
[8] 楊晶晶,韓閏凱,吳占福,等.基于CNN和圖像深度特征的雛雞性別自動(dòng)鑒別方法[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2020,51(6):92,258-263.
【通聯(lián)編輯:謝媛媛】