程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python豬臉識別_一種豬臉的識別方法與流程

編輯:Python

大家好,又見面了,我是你們的朋友全棧君。

本發明涉及人工智能技術領域,特別涉及到一種用於豬臉的自動識別方法。

背景技術:

當前養豬場進行批量養豬的過程中,養殖者需要掌握每頭豬只的飲食情況、健康狀態、生長狀況以及情緒等信息,因此識別每頭豬只的身份信息為養殖者掌握養殖場基本狀況提供便利,目前大型養豬場對於豬只的身份管理沒有一個准確有效的識別方法,使得在管理豬只的過程中出現混亂和錯誤的情況,因此,豬臉識別技術的缺乏不利於規模化的精准養豬的推廣。

技術實現要素:

本發明的發明目的是,針對上述問題,提供一種豬臉的識別方法,通過人工智能的技術對豬臉進行識別,確認豬只的身份,建立豬只的圖片識別庫,解決了現有技術缺乏豬臉識別技術的問題。

為達到上述目的,本發明所采用的技術方案是:

一種豬臉的識別方法,包括以下步驟:S1.將分別設有豬欄入口的多個豬欄並排設置,在每個所述豬欄的內部分別設有朝向所述豬欄入口的攝像頭;S2.所述攝像頭同時對進入所述豬欄入口的豬只進行拍攝,多個所述攝像頭同步采集所述豬只的視頻源數據;S3.所述視頻源數據通過FTP上傳至服務器端,在所述服務器端將所述視頻源數據處理成豬臉圖片;S4.將所述豬臉圖片進行篩選和標注,保留有效的豬臉圖片和標注所述豬臉圖片的坐標信息,篩選後的豬臉圖片和對應的坐標信息共同作為圖片數據源;

S5.根據所述圖片數據源訓練識別豬臉的模型,包括以下步驟:

S51.將所述圖片數據源轉換成符合Tensorflow系統的格式;

S52.將所述圖片源數據按照比例分成訓練集和測試集;

S53.將所述訓練集通過Tensorflow系統的訓練腳本訓練能夠識別豬臉的模型;

S54.通過所述測試集對所述模型進行驗證;

S55.通過Tensorflow系統導出腳本生成訓練好的識別豬臉的模型;

S6.根據所述訓練好的識別豬臉的模型,自動處理所述豬臉圖片,包括以下步驟:

S61.對步驟S3獲得的豬臉圖片輸入所述訓練好的識別豬臉的模型,通過Tensorflow系統判斷輸入的豬臉圖片是否包含有效的豬臉圖片並返回判斷結果;

S62.根據返回的判斷結果決定是否將所述豬臉圖片保存為有效的豬臉圖片。

通過使用攝像頭采集豬只的視頻源數據,利用程序將該視頻源數據轉化成圖片源數據,再通過Tensorflow系統訓練識別豬臉的模型,通過該模型實現豬臉的自動識別,可識別的數量大,識別准確率高。

上述方案中,為優化,進一步地,步驟S3的將所述視頻源數據處理成豬臉圖片通過以下步驟實現:根據所述視頻源數據建立每頭豬只的主目錄和包含在所述主目錄下的子目錄,並讀取所述視頻源數據的幀,將所述幀轉化為豬臉圖片,將所述豬臉圖片存儲於所述子目錄中。

進一步地,步驟S4,S61和S62中的有效的豬臉圖片包括清晰的正臉圖片和側臉圖片。

進一步地,所述步驟S53中的訓練集和測試集的比例為4:1。

進一步地,步驟S1中,每個所述豬欄設置左右對稱的攝像頭。

由於采用上述技術方案,本發明具有以下有益效果:

1、將多個攝像頭同時拍攝一頭豬只,同步采集數據,獲取大量的豬只視頻源數據,使用程序處理視頻源數據成豬臉圖片以及標注每個豬臉圖片的坐標信息,再通過Tensorflow系統訓練識別豬臉的模型,通過該模型自動識別豬臉,可實現全自動實現豬臉的識別,建立了豬臉的識別方法,可以識別豬臉的身份信息,為養殖者掌握每頭豬只信息提供便利;通過該模型可識別的豬只的數量規模大,識別准確率高,通過驗證,經過20萬step訓練之後,對於測試集的驗證准確率達到99%以上。

2、將豬欄並排設置,豬欄入口處於同一水平線上,當豬只進入豬欄,多個攝像頭同時拍攝該豬只的視頻,從而獲取大量關於該豬只的視頻,程序自動化處理大量豬只視頻生成大量豬臉圖片的准確率達到95%以上,為識別豬臉的模型的訓練提供堅實的數據基礎,降低數據誤差,提高識別准確率。

3、通過豬臉圖片和標注的坐標信息,細化識別區域,提高識別的准確率。

4、有效的豬臉圖片包括正臉圖片和側臉圖片,可以進行多方位的豬臉識別,降低識別誤差。

5、將視頻源數據經過處理後建立每頭豬只信息的主目錄和子目錄,主目錄有利於區別於其他豬只,子目錄有利於識別單個豬只的特征信息,主目錄和子目錄共同確定了豬只的身份識別信息。

6、通過技術人員的大量實驗驗證,訓練集和測試集的比例為4:1時,既保證了訓練模型時的數據的充足性,又確保驗證數據的可靠性,得到的識別豬臉的模型的識別准確率高。

7、在每個豬欄裡設置兩個左右對稱的攝像頭,可以全方位地拍攝豬臉視頻,避免拍攝死角。

附圖說明

圖1,豬欄的結構示意圖。

圖2,識別豬臉模型訓練流程圖。

圖3,程序自動化流程圖。

附圖中,1.豬欄;2.豬欄入口;3.飲水位;4.料槽;5.攝像頭

具體實施方式

以下結合附圖對發明的具體實施進一步說明。

如圖1、圖2和圖3所示,本實施例提供一種豬臉的識別方法,包括以下步驟:S1.將分別設有豬欄入口2的多個豬欄1並排設置,每個所述豬欄入口2位於同一水平線上,每個豬欄1內部設有飲水位3和料槽4,在飲水位3和料槽4處分別設有朝向豬欄入口2的攝像頭5;S2.攝像頭5同時對進入豬欄入口2的豬只進行拍攝,多個攝像頭5同步采集豬只獲得視頻源數據;在本實施例中,每個養豬場安裝6個豬欄同步采集視頻源數據,每個豬欄1設置左右對稱的攝像頭,視頻源數據的格式為MP4視頻;S3.通過FTP工具將視頻源數據上傳至服務器端,在服務器端用程序將視頻源數據處理生成豬臉圖片;當天采集完畢的視頻源數據通過FTP工具上傳至服務器端,通過一段時間的采集,服務器端積累了數量超過25000個的視頻源數據,豬只數量超過12500頭,通過調用Opencv標准庫的方法讀取視頻幀,視頻幀率為25幀每秒,一個小時的視頻源數據有90000幀的視頻圖像,每頭豬只的視頻源數據會生成90000張豬臉圖片,總共豬臉圖片的數量達到2.25億張,用Opencv標准庫的方法保存這些豬臉圖片,這些豬臉圖片包括有效的豬臉圖片和無效的豬臉圖片;

S4.將豬臉圖片進行篩選和標注,保留有效的豬臉圖片和標注豬臉圖片的坐標信息,篩選後的豬臉圖片和對應的坐標信息共同作為圖片數據源;

S5.根據該圖片數據源訓練識別豬臉的模型,包括以下步驟:

S51.將圖片數據源轉換成符合Tensorflow系統的格式;

S52.將圖片源數據按照比例分成訓練集和測試集;訓練集和測試集的比例為4:1;

S53.將訓練集通過Tensorflow系統的訓練腳本訓練能夠識別豬臉的模型;

S54.通過測試集對該識別豬臉的模型進行驗證;

S55.通過Tensorflow系統導出腳本生成訓練好的識別豬臉的模型;

S6.根據訓練好的識別豬臉的模型,自動處理豬臉圖片,包括以下步驟:

S61.對步驟S3獲得的豬臉圖片輸入訓練好的識別豬臉的模型,通過Tensorflow系統判斷輸入的豬臉圖片是否包含有效的豬臉圖片並返回判斷結果;

S62.根據返回的判斷結果決定是否將豬臉圖片保存為有效的豬臉圖片。

其中,步驟S3的將視頻源數據處理成豬臉圖片通過以下步驟實現:采用python語言根據視頻源數據實現建立每頭豬只的主目錄和包含在主目錄下的子目錄,並調用Opencv標准庫的方法讀取該視頻源數據的幀,將幀轉化為豬臉圖片,將豬臉圖片存儲於子目錄中。

步驟S4,步驟S61和步驟S62中的有效的豬臉圖片包括清晰的正臉圖片和側臉圖片。

將步驟S62保存為有效的豬臉圖片調用卷積神經網絡結構識別模型計算獲得的豬臉圖片,識別出豬只身份ID。

輸入:步驟S62中有效的豬臉圖片;

卷積神經網絡結構模型計算:通過卷積神經網絡結構模型計算出該豬只是否為新增豬只還是已有豬只,如果是新增豬只就生成全球唯一豬只身份ID,如果是已有豬只就識別出豬只身份ID;

輸出:通過卷積神經網絡結構模型計算出的新創建的豬只身份ID或者識別出的已有豬只身份ID。

上述卷積神經網絡結構模型通過以下步驟訓練獲得:

ST1:首先構建用於自動提取豬只臉部特征的卷積神經網絡,並設定卷積神經網絡的訓練參數;然後采集帶有正臉和側臉的豬臉圖片集作為一次訓練樣本,利用建立的一次訓練樣本對卷積神經網絡進行訓練,直至達到設定的訓練參數後停止訓練,即生成豬只臉部特征碼生成器;

ST2:將某一已知豬只的正臉和側臉圖片集作為數據源輸入豬只臉部特征碼生成器中,經信號處理後豬只臉部特征碼生成器的輸出端輸出該豬只對應的特征碼和豬只ID;

ST3:重復上述步驟ST2,則分別得到各已知豬只的特征碼和其對應的豬只ID,各個已知豬只的特征碼和豬只ID即構成豬只特征碼庫;

ST4:利用豬只特征碼庫作為二次訓練樣本對卷積神經網絡進行訓練,直至達到設定的訓練參數後停止訓練,即生成豬臉分類器;

ST5:將待識別豬只的豬臉圖片的特征碼輸入豬臉分類器中,通過豬臉分類器的輸出端輸出該豬只是否為新豬。由於新豬的正臉和側臉圖片集未被錄入進豬只臉部特征碼生成器中,所以在豬只特征碼庫和豬臉分類器中均未有記錄。

卷積神經網絡結構可包括n個卷積層、m個池化層和k個全鏈接層,卷積層與池化層交叉依次設置,且池化層采用基於最大值的池化方法,其中n、m、k均為≥1的整數。n、m和k的值可以是同一個相同數值,也可以是相互不同或者是兩兩相同的數值。優選的,n、m、k的值均為3,即通過三個全連接層來對提取出豬只特征碼的特征響應圖進行數值預測,得到相似度分數,並輸出匹配結果;然後利用匹配結果與真實結果之間的誤差,來訓練卷積神經網絡結構模型的訓練參數。

本實施例中,Tensorflow系統為現有人工智能系統。

上述說明是針對本發明較佳可行實施例的詳細說明,但實施例並非用以限定本發明的專利申請范圍,凡本發明所提示的技術精神下所完成的同等變化或修飾變更,均應屬於本發明所涵蓋專利范圍。

發布者:全棧程序員棧長,轉載請注明出處:https://javaforall.cn/151876.html原文鏈接:https://javaforall.cn


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved