(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-17
(45)【発行日】2025-01-27
(54)【発明の名称】家畜画像出力装置、学習装置、家畜識別装置、家畜画像出力システム、家畜画像出力方法、およびプログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20250120BHJP
G06T 7/13 20170101ALI20250120BHJP
A01K 11/00 20060101ALI20250120BHJP
【FI】
G06T7/00 350B
G06T7/13
A01K11/00 E
(21)【出願番号】P 2021081254
(22)【出願日】2021-05-12
【審査請求日】2024-03-13
(73)【特許権者】
【識別番号】504224153
【氏名又は名称】国立大学法人 宮崎大学
(73)【特許権者】
【識別番号】505321754
【氏名又は名称】有限会社本川牧場
(74)【代理人】
【識別番号】100165179
【氏名又は名称】田▲崎▼ 聡
(74)【代理人】
【識別番号】100175824
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100152272
【氏名又は名称】川越 雄一郎
(74)【代理人】
【識別番号】100181722
【氏名又は名称】春田 洋孝
(72)【発明者】
【氏名】ティ ティ ズイン
(72)【発明者】
【氏名】堀井 洋一郎
【審査官】松永 隆志
(56)【参考文献】
【文献】国際公開第2019/058752(WO,A1)
【文献】中国特許出願公開第111259978(CN,A)
【文献】国際公開第2004/8844(WO,A1)
【文献】特表2018-520680(JP,A)
【文献】特開2013-22005(JP,A)
【文献】脇田 和希 ほか2名,乳牛個体識別のためのRGB-Dデータを用いた多視点画像生成,映像情報メディア学会技術報告,2020年09月10日,Vol.44 No.22,pp.23-26
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06T 7/13
A01K 11/00
(57)【特許請求の範囲】
【請求項1】
仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置であって、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、
前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、
前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、
前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、
前記抽出手段によって抽出された前記家畜画像を出力する出力手段と、
を備えることを特徴とする家畜画像出力装置。
【請求項2】
前記検出手段は、前記画像情報に基づいて、複数のエッジを検出し、
前記特定手段は、前記複数のエッジのうち最も強いエッジを前記一の仕切り部材として特定する、
ことを特徴とする請求項1に記載の家畜画像出力装置。
【請求項3】
前記特定手段は、前記一の仕切り部材のエッジから所定距離の位置に他のエッジが存在する場合に、当該他のエッジを前記他の仕切り部材として特定する、
ことを特徴とする請求項1または2に記載の家畜画像出力装置。
【請求項4】
請求項1に記載の家畜画像出力装置によって出力された前記家畜画像を入力サンプルとし、複数のクラスのうち当該家畜画像が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットを用いて、入力された前記家畜画像に対応して当該家畜画像が属する前記クラスの事後確率を示すベクトルを出力するように学習モデルを学習させる学習手段を備える
ことを特徴とする学習装置。
【請求項5】
請求項1に記載の家畜画像出力装置によって出力された前記家畜画像を取得する取得手段と、
家畜を識別する識別情報を識別するための情報を用いて、前記取得手段によって取得された前記家畜画像に関係する前記識別情報を識別する識別手段と、
を備えることを特徴とする家畜識別装置。
【請求項6】
前記識別手段は、請求項4に記載の学習装置によって学習された学習済みモデルに、前記取得手段によって取得された前記家畜画像を入力することで、前記識別情報を識別する、
ことを特徴とする請求項5に記載の家畜識別装置。
【請求項7】
前記取得手段は、1頭の家畜につき、所定数の連続するフレームの前記家畜画像を取得し、
前記識別手段は、前記取得手段によって前記家畜画像が取得される度に、前記識別情報を識別し、識別した各フレームの前記識別情報のうち、最も多く識別した前記識別情報を最終結果とする、
ことを特徴とする請求項5または6に記載の家畜識別装置。
【請求項8】
仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜を識別する家畜識別装置であって、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、
前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、
前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、
前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、
家畜を識別する識別情報を識別するための情報を用いて、前記抽出手段によって抽出された前記家畜画像に関係する前記識別情報を識別する識別手段と、
を備えることを特徴とする家畜識別装置。
【請求項9】
仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置と、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像装置と、
を備えた家畜画像出力システムにおいて、
前記家畜画像出力装置は、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、
前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、
前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、
前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、
前記抽出手段によって抽出された前記家畜画像を出力する出力手段と、
を備えることを特徴とする家畜画像出力システム。
【請求項10】
仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置が、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力工程と、
前記入力工程において入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出工程と、
前記検出工程において検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定工程と、
前記特定工程において特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出工程と、
前記抽出工程において抽出された前記家畜画像を出力する出力工程と、
を実行することを特徴とする家畜画像出力方法。
【請求項11】
仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置に用いられるコンピュータを、
地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段、
前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段、
前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段、
前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段、
前記抽出手段によって抽出された前記家畜画像を出力する出力手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、家畜画像出力装置、学習装置、家畜識別装置、家畜画像出力システム、家畜画像出力方法、およびプログラムに関する。
【背景技術】
【0002】
従来、酪農場においては、家畜の健康状態を管理することが行われている。この管理において、家畜を1頭ずつ手作業で識別したとすると、手間がかかる。特に、規模が大きい酪農場ほど、この手間は顕著になる。そこで、家畜を識別する技術が各種開示されている。例えば、家畜に通信機を装着させて、家畜の位置や群れを判定する方法が開示されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載の技術では、家畜の体の一部に通信機を装着させるため、長期間装着することで牛にストレスを与えてしまい、製品の品質が低下するおそれがある。また、家畜に装着した通信機と通信を行う中継器を農場全体に設置することになるため、酪農家にとって手間や負担が大きい。
【0005】
本発明は、このような事情に鑑みてなされたもので、その目的は、家畜を好適に識別することができる技術を提供することにある。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明の一態様である家畜画像出力装置は、仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置であって、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、前記抽出手段によって抽出された前記家畜画像を出力する出力手段と、を備えることを特徴とする家畜画像出力装置である。
【0007】
また、上記の家畜画像出力装置において、前記検出手段は、前記画像情報に基づいて、複数のエッジを検出し、前記特定手段は、前記複数のエッジのうち最も強いエッジを前記一の仕切り部材として特定する、ことを特徴とする。
【0008】
また、上記の家畜画像出力装置において、前記特定手段は、前記一の仕切り部材のエッジから所定距離の位置に他のエッジが存在する場合に、当該他のエッジを前記他の仕切り部材として特定する、ことを特徴とする。
【0009】
また、本発明の他の態様である学習装置は、上記に記載の家畜画像出力装置によって出力された前記家畜画像を入力サンプルとし、複数のクラスのうち当該家畜画像が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットを用いて、入力された前記家畜画像に対応して当該家畜画像が属する前記クラスの事後確率を示すベクトルを出力するように学習された特徴量計算モデルを有する、ことを特徴とする学習装置である。
【0010】
また、本発明の他の態様である家畜識別装置は、上記に記載の家畜画像出力装置によって出力された前記家畜画像を取得する取得手段と、家畜を識別する識別情報を識別するための情報を用いて、前記取得手段によって取得された前記家畜画像に関係する前記識別情報を識別する識別手段と、を備えることを特徴とする家畜識別装置である。
【0011】
また、上記の家畜識別装置において、前記識別手段は、上記に記載の学習装置によって学習された学習済みモデルに、前記取得手段によって取得された前記家畜画像を入力することで、前記識別情報を識別する、ことを特徴とする。
【0012】
また、上記の家畜識別装置において、前記取得手段は、1頭の家畜につき、所定数の連続するフレームの前記家畜画像を取得し、前記識別手段は、前記取得手段によって前記家畜画像が取得される度に、前記識別情報を識別し、識別した各フレームの前記識別情報のうち、最も多く識別した前記識別情報を最終結果とする、ことを特徴とする。
【0013】
また、本発明の他の態様である家畜識別装置は、仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜を識別する家畜識別装置であって、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、家畜を識別する識別情報を識別するための情報を用いて、前記抽出手段によって抽出された前記家畜画像に関係する前記識別情報を識別する識別手段と、を備えることを特徴とする家畜識別装置である。
【0014】
また、本発明の他の態様である家畜画像出力システムは、仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置と、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像装置と、を備えた家畜画像出力システムにおいて、前記家畜画像出力装置は、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段と、前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段と、前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段と、前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段と、前記抽出手段によって抽出された前記家畜画像を出力する出力手段と、を備えることを特徴とする家畜画像出力システムである。
【0015】
また、本発明の他の態様である家畜画像出力方法は、仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置が、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力工程と、前記入力工程において入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出工程と、前記検出工程において検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定工程と、前記特定工程において特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出工程と、前記抽出工程において抽出された前記家畜画像を出力する出力工程と、を実行することを特徴とする家畜画像出力方法である。
【0016】
また、本発明の他の態様であるプログラムは、仕切り部材で仕切られた複数の収容領域にそれぞれ1頭ずつ家畜を収容して回転移動するロータリーパーラー上の家畜の画像を出力する家畜画像出力装置に用いられるコンピュータを、地面に対して固定配置されて、前記収容領域を上方から撮像する撮像部の画像情報を入力する入力手段、前記入力手段に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する検出手段、前記検出手段によって検出された前記エッジに基づいて、前記一の仕切り部材と、前記一の仕切り部材に隣接する他の仕切り部材との位置を特定する特定手段、前記特定手段によって特定された前記位置に応じた前記収容領域に収容される家畜の背部を示す家畜画像を抽出する抽出手段、前記抽出手段によって抽出された前記家畜画像を出力する出力手段、として機能させることを特徴とするプログラムである。
【発明の効果】
【0017】
本発明によれば、家畜を好適に識別することができる。
【図面の簡単な説明】
【0018】
【
図1】ロータリーパーラー100の一例を示す説明図である。
【
図2】本実施形態に係る撮像部200の設置位置の一例を示す説明図である。
【
図3A】本実施形態に係る家畜識別システムStの機能的構成の一例を示すブロック図である。
【
図3B】学習装置320の構成および分類モデルMOの構成を示す説明図である。
【
図4】家畜識別装置300のハードウェア構成の一例を示す説明図である。
【
図5A】家畜識別装置300が行う家畜識別工程の一例を示す説明図である。
【
図5B】家畜画像出力工程500によって出力された牛画像810を用いた各種工程を示す説明図である。
【
図7】エッジの検出と、柵103の位置の特定との一例を示す説明図である。
【
図10】家畜識別装置300が行う牛画像の抽出処理の一例を示すフローチャートである。
【
図11】家畜識別装置300が行う牛画像の学習処理の一例を示すフローチャートである。
【
図12】家畜識別装置300が行う牛Buの識別処理の一例を示すフローチャートである。
【
図13】ディスプレイ405に表示される牛Buを識別した結果の表示例を示す説明図である。
【
図14】変形例2に係る牛Buの識別手法の一例を示す説明図である。
【
図15】家畜識別装置300が行う変形例2に係る識別処理を示すフローチャートである。
【発明を実施するための形態】
【0019】
(実施形態)
図1は、ロータリーパーラー100の一例を示す説明図である。
図1に示すうに、ロータリーパーラー100は、建物の中に配置される。ロータリーパーラー100は、円形状の回転台101を備える。回転台101の表面は、地面に対して一定の高さに保たれている。回転台101は、回転台101の中心を通って鉛直に伸びる回転軸回りに一定速度でゆっくり回転する。
【0020】
回転台101上には、複数の柵103が回転台101の径方向に沿って放射状に配置されている。柵103は、例えば金属パイプで形成される。牛が収容されるストール102は、一対の柵103によって区画される。具体的には、ストール102は、隣接する柵103a、103bによって仕切られた収容領域である。回転台101上には、例えば60~70のストール102が形成されるように、柵103が配置されている。
【0021】
ここで、牧場において、通常、牛は群れ(例えば、60~80頭)を成して行動する。このため、ロータリーパーラー100には、群れごとに牛が乗せられることになる。本実施形態において、ロータリーパーラー100には、例えば68頭の牛が収容されることとして説明する。ストール102に収容された牛には、搾乳機が取り付けられる。牛の搾乳は、回転台101が1周する間に完了するようになっている。
【0022】
図2は、本実施形態に係る撮像部200の設置位置の一例を示す説明図である。
図2に示すように、回転台101上には、牛Buが乗っている。また、ロータリーパーラー100の上方には、撮像部200(カメラ)が地面に対して固定して配置されている。ロータリーパーラー100が動く一方で、撮像部200は、支持部材201に固定して取り付けられている。支持部材201の例としては、搾乳設備の天井などが挙げられる。撮像部200は、動画を撮像するカメラである。具体的には、撮像部200は、1秒間に5フレーム撮像する。
【0023】
撮像部200が取り受けられている位置は、例えば、牛Buの背部の直上となる位置であり、回転台101の床面から上方3.4m、牛Buの背部を基準にして上方1.8m~2mとなる位置である。撮像部200は、回転移動するロータリーパーラー100の上の柵103と牛Buの背部とを上方から順次撮像する。撮像部200の撮像範囲は、少なくともストール102を区画する一対の柵103より広い範囲である。
【0024】
なお、撮像部200は、1台配置されていてもよいし、複数台設置されていてもよい。また、撮像部200には、3Dカメラが用いられてもよい。また、撮像部200には、例えば、CCD(charge coupled device)カメラや、CMOS(Complementary Metal Oxide Semiconductor)カメラを用いることが可能である。
【0025】
(家畜識別システムStの機能的構成の一例)
図3Aは、本実施形態に係る家畜識別システムStの機能的構成の一例を示すブロック図である。家畜識別システムStは、家畜画像出力システムの一例である。
図3Aに示すように、家畜識別システムStは、撮像部200と、家畜識別装置300とを備える。家畜識別装置300は、家畜画像出力装置310と、学習装置320とを備える。
【0026】
なお、家畜識別装置300と、家畜画像出力装置310と、学習装置320とは、それぞれ、別々の装置であってもよい。具体的に補足すると、学習装置320は、家畜画像出力装置310によって出力された画像を用いて機械学習を行えればよい。また、家畜識別装置300は、家畜画像出力装置310によって出力される画像を用いて家畜の個体識別を行えればよい。このため、
図3Aにおいて、家畜識別装置300と、家畜画像出力装置310と、学習装置320とは、一の装置としているが、それぞれ別々の装置としてもよい。また、学習装置320が、家畜識別装置300と、家畜画像出力装置310とを備えるようにしてもよい。
【0027】
家畜画像出力装置310は、入力部311と、検出部312と、特定部313と、抽出部314と、出力部315とを備える。また、家畜識別装置300は、取得部331と、識別部322とを備える。
【0028】
入力部311は、撮像部200の画像情報を入力する。画像情報は、ストールを上方から撮像した画像情報であり、家畜の背部や柵103の画像情報が含まれる。本実施形態において、家畜は、乳牛(牛Bu)であるが、これに限らず、背部に模様を有する動物であればよい。例えば、家畜は、例えば、肉牛でもよいし、豚、ヤギなど牛以外の動物であってもよい。
【0029】
検出部312は、入力部311に入力された画像情報に基づいて、一の仕切り部材のエッジを検出する。本実施形態において、仕切り部材は、柵103である。また、仕切り部材は、直線形状であるが、曲線形状を含んでいてもよい。また、仕切り部材は、金属製であるが、これに限らず、木製や樹脂製であってもよい。エッジは、画像情報から得られる線の候補を示す。本実施形態において、検出部312は、画像情報に基づいて、複数のエッジを検出する。
【0030】
特定部313は、検出部312によって検出されたエッジに基づいて、一の仕切り部材(例えば、柵103a)と、一の仕切り部材に隣接する他の仕切り部材(例えば、柵103b)との位置を特定する。具体的には、特定部313は、エッジをハフ変換することによって、最も強く線として表れる直線の位置を、一の仕切り部材の位置として特定する。また、特定部313は、当該直線に対応する他の直線(エッジをハフ変換することによって得られた他の直線)の位置を、他の仕切り部材の位置として特定する。具体的には、特定部313は、一の仕切り部材のエッジから所定距離の位置に他のエッジが存在する場合に、当該他のエッジを他の仕切り部材として特定する。
【0031】
抽出部314は、特定部313によって特定された上記位置に応じた収容領域(ストール102)に収容される牛Buの背部を示す家畜画像(以下「牛画像」という。)を抽出する。牛Buの背部とは、牛Buの、後頭部、背中、および臀部を含む。牛画像は、牛Buの背部の模様の画像を含む。
【0032】
出力部315は、抽出部314によって抽出された牛画像を出力する。出力部315によって出力される牛画像は、機械学習用に用いられたり、識別用に用いられたりする。出力部315によって出力される牛画像は、直接、学習装置320や家畜識別装置300に出力されてもよいし、USB(Universal Serial Bus)メモリや光ディスクなどの記憶媒体に出力されてもよいし、他の装置に送信されてもよい。
【0033】
つまり、家畜画像出力装置310は、撮像部200によって撮像された画像(フレーム)から、牛Bu1頭の背部が写り、背部の見切れがなく、かつ他の牛Buが写り込まない牛画像を切り出すことができる。
【0034】
(学習済みモデルの作成について)
学習装置320は、牛Buを識別する識別情報(牛ID:Identity)を識別するための学習済みモデルを作成する。具体的に説明すると、学習装置320は、出力部315によって出力された牛画像を取得する。取得する牛画像は、例えば、10回分の学習用の画像であり、家畜画像出力装置310が出力したトリミングされた画像である。牛画像の供給元は、家畜識別装置300が備える記憶部でもよいし、着脱可能な記憶媒体(例えば、USB(Universal Serial Bus)メモリなど)でもよいし、外部の装置でもよい。
【0035】
学習装置320は、取得した牛画像を入力サンプルとし、複数のクラスのうち当該牛画像が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットを用いて、畳み込みニューラルネットワークモデルなどの機械学習モデルを、入力された牛画像に対応して当該牛画像が属するクラスの事後確率を示すベクトルを出力するように学習させる。
【0036】
ここで、
図3Bを用いて、学習装置320について具体的に説明する。
図3Bは、学習装置320の構成および分類モデルMOの構成を示す説明図である。
図3Bの(A)は、学習装置320の構成を示す。学習装置320は、分類モデル記憶部11と、データセット取得部12と、学習部13と、出力部14とを備える。
【0037】
分類モデル記憶部11は、畳み込みニューラルネットワークによって構成された分類モデルM0を記憶する。分類モデルM0は、
図3Bの(B)に示すように、入力部M01、特徴量算出部M02、分類部M03、出力部M04を備える。入力部M01は、入力された牛画像をベクトルとして特徴量算出部M02に出力する。入力部M01は、ニューラルネットワークの入力層をなす。特徴量算出部M02及び分類部M03は、ニューラルネットワークの中間層をなす。出力部M04は、ニューラルネットワークの出力層をなす。特徴量算出部M02は、入力部M01から入力されたベクトルを、低次元の特徴ベクトルに変換し、分類部M03に出力する。分類部M03は、特徴量算出部M02から入力された特徴ベクトルから、当該特徴ベクトルが表す牛IDの事後確率を示すP次元のベクトルに変換する。Pは、推定すべき牛IDの数である。
【0038】
データセット取得部12は、入力サンプルである牛画像と、出力サンプルである牛IDラベルとを関連付けた学習用データセットを取得する。牛IDラベルは、データセットにおける牛IDの数をPとした場合に、P次元のワンホットベクトルによって表される。
【0039】
学習部13は、データセット取得部12が取得した学習用データセットを用いて、牛画像が入力されると、当該牛画像に該当する牛IDの事後確率を示すP次元のベクトルを出力するように、分類モデルM0のパラメータを学習させる。
【0040】
次に、学習方法について、具体的に説明する。データセット取得部12は、予め用意されたデータセットを取得する。そして、学習部13は、取得したデータセットを用いて、分類モデル記憶部11が記憶する分類モデルM0のパラメータを学習させる。このとき、学習部13は、分類モデルM0の計算結果を用いて損失関数を最小化するように、勾配降下法により各パラメータを更新する。なお、学習部13は、分類モデルM0のうち特徴量算出部M02および分類部M03のパラメータを更新する。例えば、損失関数は、分類モデルM0の出力値とデータセットの出力サンプルとのクロスエントロピー誤差を表す。
【0041】
学習部13は、損失関数の評価値が所定の閾値を下回った場合、または所定回数だけ学習処理を繰り返した場合に、学習処理を終了する。学習部13による学習処理が終了すると、出力部14は、学習部13によって学習された分類モデルM0(学習済みモデル)を家畜識別装置300へ出力する。
【0042】
家畜識別装置300は、当該学習済みモデルを用いることによって、ロータリーパーラー100上に乗せられている牛Buの牛IDをリアルタイムに識別することが可能である。以下、これについて、具体的に説明する。
【0043】
(牛Buの識別について)
家畜識別装置300において、取得部331は、出力部315によって出力された牛画像を取得する。取得部331は、ロータリーパーラー100上のリアルタイムの牛Buの画像情報に基づく牛画像を取得する。具体的には、家畜画像出力装置310において、現在の画像情報が入力され、エッジが検出されて、柵103の位置が特定され、当該位置に応じて抽出された牛画像が出力される。取得部331は、当該牛画像を取得する。
【0044】
識別部332は、家畜を識別する識別情報を識別するための情報を用いて、取得部331によって取得された牛画像に関係する牛IDを識別する。具体的には、識別部332は、学習装置320によって作成された学習済みモデルに、取得部331によって取得された牛画像を入力することで、牛IDを識別する。より具体的には、識別部332は、学習済みモデルに入力した牛画像についての牛IDごとの推定値を導出し、推定値の高い牛IDを選択(識別)する。
【0045】
出力部315は、識別部332によって識別された牛IDと、家畜画像出力装置310の入力部311に入力された画像情報とを出力する。例えば、出力部315は、牛IDと牛Buの情報(映像)とを対応付けてディスプレイ405(
図4参照)に表示させる。なお、出力部315による牛IDと牛Buの情報との出力は、表示による出力に限らず、音声による出力や、外部の装置への送信による出力を含んでもよい。
【0046】
また、取得部331は、1頭の牛Buにつき、所定数の連続するフレームの牛画像を取得する。取得部331は、フレームレートが示す間隔(例えば、0.2秒間隔)で、牛画像を取得する。所定数は、例えば、10である。このため、取得部331は、0.2秒間隔で、連続する10フレームを取得する。言い換えれば、取得部331は、1頭の牛Buにつき、2秒間(0.2秒×10フレーム)、牛画像を取得する。なお、所定数は、ロータリーパーラー100の速度や、撮像部200のフレームレートなどに応じた数であり、10以外の数とすることも可能である。
【0047】
識別部332は、取得部331によって牛画像が取得される都度、すなわち、0.2秒間隔で牛IDを識別する。このため、出力部315は、0.2秒間隔で、牛IDを表示出力する。また、識別部332は、識別した各フレームの牛IDのうち、最も多く識別した牛IDを最終結果とする。出力部315は、識別部332によって識別された最終結果を表示出力する。
【0048】
なお、本実施形態において、識別部332は、学習装置320によって作成された学習済みモデルを用いて、牛画像の牛IDを識別するようにしたが、これに限らない。例えば、識別部332は、牛画像の特徴量を比較する比較用のデータを用いて、牛IDを識別するようにしてもよい。具体的には、例えば、不図示のデータベースに、各牛Buについて、牛IDと、比較用の牛画像から抽出された特徴量とを対応付けて記憶しておき、識別部332は、取得部331によって取得された牛画像から特徴量を計算し、当該特徴量と最も類似度が高い特徴量に対応する牛IDを特定(識別)するようにしてもよい。
【0049】
(家畜識別装置300のハードウェア構成)
図4は、家畜識別装置300のハードウェア構成の一例を示す説明図である。
図4において、家畜識別装置300は、CPU401(Central Processing Unit)と、メモリ402と、操作部403と、マイク404と、ディスプレイ405と、スピーカ406と、通信I/F(インタフェース)とを備える。これらは、バスを介して相互に通信可能である。
【0050】
CPU401は、中央演算処理装置であり、メモリ402に記憶されている各種プログラムを読み出して実行することにより、POS端末装置20の動作を制御する。各種プログラムは、本実施形態に係る、家畜画像出力プログラム、学習プログラム、家畜識別プログラムを含む。
【0051】
メモリ402は、記憶部であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスク、SSD(Solid State Drive)などを含む。ROMは、読み出し専用メモリであり、プログラムをはじめとしてCPU401が利用する各種の情報を記憶する。RAMは、読み出しや書き込みが可能なメモリであり、種々の情報を記憶する。例えば、RAMは、外部から取得した情報や、処理において生成した情報を記憶する。また、メモリ402は、USBメモリなどの着脱可能な記憶媒体や、光ディスクなどを含む。
【0052】
操作部403は、タッチパネルディスプレイや、キーボード、マウスなどの操作入力部である。マイク404は、音声等の音を入力する。CPU401は、音声認識プログラムを実行することにより、マイク404に入力された音声を認識する。
【0053】
ディスプレイ405は、タッチパネルディスプレイや、モニタなどである。スピーカ406は、音を出力する。通信I/F407は、他の装置と情報を送受信するインタフェースである。なお、家畜識別装置300は、この他にも、情報を読み取るスキャナ、媒体に情報を印刷するプリンタなどを備えていてもよい。
【0054】
なお、
図3Aに示した各部311~315、331、332や、
図3Bに示した各部11~15は、CPUによって実現される。すなわち、CPU401がメモリ402に記憶されている各種プログラムを実行することにより、各部11~15、311~315、331、332の機能を実現する。
【0055】
(家畜識別装置300が行う家畜画像出力工程の一例)
図5Aは、家畜識別装置300が行う家畜画像出力工程500の一例を示す説明図である。
図5Aに示す家畜画像出力工程500において、家畜識別装置300の入力部311は、まず、撮像部200によって撮像された画像を入力する(工程501)。ここで、撮像部200によって撮像される画像は、複数の牛Buやストール102が映っていることがある。そこで、家畜識別装置300の入力部311は、撮像部200の直下を中心として、一のストール102が内包される程度の広さの関心領域を決定する(工程502)。
【0056】
図6は、関心領域の抽出の一例を示す説明図である。
図6において、元の画像601は、撮像部200によって撮像された結果そのものを示す。ここで、ストール102の大きさについては、おおよその値(隣接する柵103の間隔)が予めわかっている。バイナリマスク領域602は、柵103の間隔を基準にして、ストール102の大きさに応じた画像の抽出範囲を示す。
【0057】
具体的には、バイナリマスク領域602は、隣接する一対の柵103(一のストール102)が入り切る大きさの画像領域であり、3本の柵103が入り切ることのない画像領域である。元の画像601から、バイナリマスク領域602に相当する範囲を抽出すると、関心領域603が得られる。関心領域603は、監視対象となる部分を囲った領域である。なお、関心領域603以外の部分については、例えば、削除される、または、画質が落とされることになる。
【0058】
ここで、ロータリーパーラー100は、回転している。このため、牛Buおよび柵103の画像は、関心領域603内を、例えば、図中上方から下方へ移動していくことになる。一のストール102が関心領域603内に写るのは、2秒程度である。また、撮像部200は、1秒間に5フレームを撮像する。このため、関心領域603内の画像は、1頭の牛Buにつき、10フレーム分(2秒分のフレーム数)、得られることになる。
【0059】
次に、家畜識別装置300の検出部312は、フレーム間の差分を検出する(工程503)。フレーム間の差分画像は、Idiff=|It-1-It|で表される。Itは、現在(t番目)のフレームである。It-1は、t番目のフレームより1つ前のフレームである。
【0060】
そして、家畜識別装置300の検出部312は、差分画像を用いて、エッジ検出処理を行う(工程504)。具体的には、検出部312は、ソーベルエッジ検出処理を行う。さらに、特定部313は、柵103の位置を特定する(工程505)。具体的には、特定部313は、ハフ変換処理を行う。
【0061】
ここで、
図7を用いて、工程504におけるエッジの検出と、工程505における柵103の位置の特定とについて説明する。
図7は、エッジの検出と、柵103の位置の特定との一例を示す説明図である。
図7(A)~(C)において、特定結果700(700a~700c)は、それぞれ、差分画像から検出した、ソーベルエッジ検出処理によるエッジ701の検出結果と、さらに、この検出結果をハフ変換することによって得られる柵103の特定結果を示す。
【0062】
特定結果700には、ソーベルエッジ検出処理よって検出されたエッジ701が表示されている。エッジ701は、フレーム間の差分(差分画像)から得られる点の集まりであり、線の候補を示す。家畜識別装置300の検出部は、各エッジ701について、それぞれハフ変換を行うことによって直線702a~702cを得る。家畜識別装置300の特定部313は、直線702a~702cのうち、最も強く線として表れているものを柵103として特定する。
【0063】
図7(A)に示す特定結果700aにおいて、直線702aが最も強く線として表れているため、家畜識別装置300の特定部313は、直線702aを柵103として特定する。なお、
図7(A)において、直線702bは、例えば、牛の臀部の輪郭である可能性がある。また、直線702cは、直線702aが示す柵103に隣接する柵103の可能性がある。ここで、牛Buが柵103に寄りかかっている場合や、撮像部200と柵103との位置関係によっては、直線702aが柵103として特定されにくくなる。このため、特定結果700aにおいて、牛Buの位置などによっては、直線702cが柵103として特定される場合もある。
【0064】
図7(B)の特定結果700bは、特定結果700aが示すフレームよりも後のフレームを示す。具体的には、特定結果700bは、ロータリーパーラー100の回転移動により、直線702a(柵103)が
図7(A)に示す特定結果700aに比べて下方へ移動したことを示している。特定結果700bでは、直線702aに示す柵103のみが検出されており、すなわち、隣接する柵103を示す直線については検出されていない。
【0065】
図7(C)の特定結果700cは、特定結果700bが示すフレームよりも後のフレームを示す。具体的には、特定結果700cは、ロータリーパーラー100の回転移動により、直線702a(柵103)が
図7(B)に示す特定結果700bに比べて、さらに下方へ移動したことを示している。特定結果700cでは、直線702aの上方に、直線702dが検出されている。直線702dは、直線702aが示す柵103に隣接する柵103である。
【0066】
なお、工程503においてフレーム間の差分を検出しなくても、工程505においてハフ変換を行うことは可能である。ただし、フレーム間の差分を検出せずに、各画像について直線を検出する場合、差分画像と比較して線が多く表れるため、処理に時間を要してしまう。これに対して、フレーム間の差分を検出すると、計算処理を簡素化できるため、迅速な処理を行うことが可能なる。本実施形態では、回転移動するロータリーパーラー100上の牛Buをリアルタイムで識別するため、各種処理を迅速に行うことが望まれる。そこで、本実施形態では、フレーム間の差分を検出するようにしている。
【0067】
図5Aに戻り、家畜識別装置300の抽出部314は、牛画像を抽出する(工程506)。ここで、
図8を用いて、牛画像の抽出について説明する。
図8は、牛画像の抽出の一例を示す説明図である。上述したように、
図8(A)に示す差分画像801の入力により、
図8(B)に示す特定結果700が得られる。特定結果700は、直線702aを柵103として特定したことを示している。
【0068】
柵103が特定されると、家畜識別装置300は、
図8(B)に示すように、柵103の重心位置Cpを算出する。具体的には、家畜識別装置300は、柵103の両端の座標(x1、y1)および(x2、y2)を用いて、{(y1-y2)/2}の式により、Cpを算出する。なお、この実施形態では、画像に写る2つの柵103の間隔が約200ピクセルであることが分かっている。つまり、Cpの上下方向に200ピクセル移動した位置には、隣接する柵103がある可能性が高い。このため、家畜識別装置300は、Cpを算出すると、Cpを基準に、上下方向に、200ピクセル移動した領域の直線702を検索する。図示の場合、家畜識別装置300は、直線702aの下方(プラス方向)に、例えば、190~210ピクセルの範囲内に存在する直線702eを検索する。直線702eが検出されると、家畜識別装置300は、直線702eを柵103と特定する。なお、関心領域の高さは400ピクセルより低く設定されるため、Cpを基準とした上方向200ピクセルの位置および下方向200ピクセルの位置のいずれか一方は、関心領域603(
図6参照)の外側となる。本実施形態では、関心領域603の外側についてエッジ検出を行わないため、関心領域603の外側に直線702は存在しない。
【0069】
なお、
図8(B)において、牛Buの位置などによっては、最も強く表れている線が、一対の柵103のうち回転方向後方の柵103を表す直線702aではなく、回転方向前方の柵103を表す直線702eとなる場合もある。この場合、家畜識別装置300は、直線702eの重心位置Cpを算出し、算出したCpを基準に、上方に190~210ピクセルの範囲内に存在する直線702を検索する。そして、上方に、直線702(702a)が検出されれば、この直線702aを柵103と特定する。つまり、本実施形態では、家畜識別装置300は一対の柵103のどちらが検出されたとしても、他方の柵103の有無を判定することができる。
【0070】
図8(C)に示すように、家畜識別装置300は、直線702a(柵103)と直線702e(柵103)との間の牛画像810を抽出する。なお、牛Buの牛画像810の抽出では、1回の搾乳において1頭につき10フレーム分の画像が抽出される。このため、家畜識別装置300は、10フレームのそれぞれのフレームごとに、工程501~工程506を行って、牛画像810を順次抽出することになる。抽出した牛画像810は、機械学習や牛Buの識別に用いられることになる。
【0071】
(家畜識別装置300が行う学習工程の一例)
図5Bは、家畜画像出力工程500によって出力された牛画像810を用いた各種工程を示す説明図である。
図5Bの(A)は、家畜識別装置300が行う学習工程の一例を示す説明図である。
【0072】
ここで、データベースの作成(工程512)の前に、家畜識別装置300は、複数枚(例えば1頭につき100枚以上)の牛画像810を得ておく。牛画像810の抽出は、1回の搾乳において、例えば、1頭につき10フレーム分の画像が得られるため、10回分程度の搾乳における牛画像810を得ておく。なお、牛の搾乳は、1日に2~3回行われることから、4~5日程度あれば、10回分の搾乳における牛画像810を得ることが可能である。
【0073】
図5Bに示すように、家畜識別装置300は、家畜画像出力工程500(
図5A参照)の後、操作者の操作入力を受け付けて、データベースを作成する(工程511)。ここで、
図9を用いて、データセットの一例について説明する。
図9は、データセットの一例を示す説明図である。
図9に示すように、牛画像810(810-1~810-68)は、牛ID(No.1~68)に対応する画像である。
【0074】
IDフォルダ900(900-1~900-68)は、牛ID(No.1~68)に対応して設けられる。IDフォルダ900には、例えば、撮像された10回分の牛画像810(10本分の学習用のビデオ)が牛IDごとに分けて保存される。牛画像810の各IDフォルダへの振り分けは、例えば、操作者の手動で行われる。全てのIDフォルダ900には、合計で、例えば、1万枚程度(発明者の実験では10254枚)の牛画像810が保存される。
【0075】
図5Bに戻り、家畜識別装置300は、畳み込みニューラルネットワークを用いて牛IDの機械学習を行い、学習済みモデルを作成する(工程512)。例えば、入力画像として、牛ID「1」の牛画像810が入力されると、家畜識別装置300は、例えば、出力クラス「1」である可能性が98%、「2」である可能性が0.5%、「3」である可能性が1%というように、全ての出力クラスについての可能性を算出し、最も可能性の高い出力クラス(牛ID「1」)を出力する。10本分の学習用のビデオを用いて、精度を100%に近付けるためのパラメータを確定させることにより、最終的に99.99%の精度を得ることが可能である。
【0076】
(家畜識別装置300が行う家畜識別工程の一例)
図5Bの(B)は、家畜識別装置300が行う家畜識別工程の一例を示す説明図である。
図5Bの(B)において、家畜識別装置300は、家畜画像出力工程500(
図5A参照)の後、牛の識別を行う(工程521)。牛の識別において、2本のテスト用のビデオ(搾乳2回分における牛画像)が用いられる。すなわち、テスト用のビデオには、2回の搾乳において、それぞれ家畜画像出力工程500(
図5A参照)によって得られた複数の牛画像810が記憶されている。そして、テスト用のビデオに記憶されている牛画像810を学習済みモデルに入力することにより、牛IDを取得することができる(工程522)。
【0077】
なお、工程522において取得した牛IDを用いて、識別に係る精度を確認することができる。発明者の実験では、2本のテスト用のビデオのうち一方(テストビデオ1)に630枚の画像を保存しており、他方(テストビデオ2)に780枚の画像を保存しているものを用いた。テストビデオ1を用いて、牛IDの判別を行ったところ、99.0%の精度を得ることができた。また、テストビデオ2を用いて、牛IDの判別を行ったところ、99.1%の精度を得ることができた。
【0078】
(家畜識別装置300が行う牛画像の抽出処理の一例)
図10は、家畜識別装置300が行う牛画像の抽出処理の一例を示すフローチャートである。
図10において、家畜識別装置300は、牛画像の抽出を開始するか否かを判断する(ステップS1001)。牛画像の抽出開始とは、抽出開始の開始条件が成立することであり、例えば、牛Buの識別の開始の指示や、機械学習に用いる牛画像の出力の開始の指示を受け付けることである。家畜識別装置300は、牛画像の抽出開始となるまで待機し(ステップS1001:NO)、牛画像の抽出開始になると(ステップS1001:YES)、撮像部200によって撮像された画像情報を入力する(ステップS1002)。
【0079】
次に、家畜識別装置300は、関心領域を決定する(ステップS1003)。そして、家畜識別装置300は、フレーム間の関心領域603における差分画像から得られる点の集まり(線の候補)であるエッジを検出する(ステップS1004)。次に、家畜識別装置300は、エッジをハフ変換することによって得られる直線のうち、最も強く線として表れているものを柵103として検出する(ステップS1005)。
【0080】
そして、家畜識別装置300は、検出した柵103の重心位置に基づいて、上下190~210ピクセルの範囲内に存在する隣接する柵103を検索する(ステップS1006)。そして、家畜識別装置300は、検索の結果、隣接する柵103があるか否かを判断する(ステップS1007)。隣接する柵103がない場合(ステップS1007:NO)、すなわち、関心領域603においてストール102の一部が写らない場合、家畜識別装置300は、牛画像の抽出を行わずに、ステップS1010へ移行する。一方で、隣接する柵103がある場合(ステップS1007:YES)、家畜識別装置300は、2つの柵103の間の画像を牛画像として抽出する(ステップS1008)。
【0081】
そして、家畜識別装置300は、抽出した牛画像を出力する(ステップS1009)。次に、家畜識別装置300は、牛画像の抽出が終了であるか否かを判断する(ステップS1010)。牛画像の抽出終了とは、抽出の終了条件が成立することであり、例えば、牛Buの識別の終了の指示や、機械学習に用いる牛画像の出力の終了の指示を受け付けることである。牛画像の抽出が終了ではない場合(ステップS1010:NO)、家畜識別装置300は、ステップS1002に戻る。牛画像の抽出が終了である場合(ステップS1010:YES)、家畜識別装置300は、一連の処理を終了する。
【0082】
上述した処理により、ロータリーパーラー100上の牛画像を得ることができる。この牛画像を用いて、機械学習を行ったり、ロータリーパーラー100上の牛を識別したりすることが可能になる。以下、
図11を用いて、家畜識別装置300が行う機械学習を行う処理について説明する。
【0083】
(家畜識別装置300が行う牛画像の学習処理の一例)
図11は、家畜識別装置300が行う牛画像の学習処理の一例を示すフローチャートである。なお、以下の処理では、各IDフォルダ900には、牛IDに対応する牛画像が保存されているものとする。
【0084】
図11において、家畜識別装置300は、牛画像の学習を開始するか否かを判断する(ステップS1101)。学習開始とは、例えば、学習開始の指示を受け付けることである。家畜識別装置300は、牛画像の学習開始となるまで待機し(ステップS1101:NO)、牛画像の学習開始になると(ステップS1101:YES)、IDフォルダ900を1つ選択する(ステップS1102)。
【0085】
そして、家畜識別装置300は、選択したIDフォルダ900の中から取得した牛画像を学習モデルに入力する(ステップS1103)。次に、家畜識別装置300は、入力した牛画像についての推定値を導出する(ステップS1104)。そして、家畜識別装置300は、推定値と牛IDとの差が小さくなるようにノードのパラメータを変更する(ステップS1105)。
【0086】
次に、家畜識別装置300は、IDフォルダ900内に未学習の画像があるか否かを判断する(ステップS1106)。未学習の画像がある場合(ステップS1106:YES)、家畜識別装置300は、ステップS1103に戻り、次の牛画像を取得して、学習モデルに入力する。一方、未学習の画像がない場合(ステップS1106:NO)、家畜識別装置300は、未選択のIDフォルダ900があるか否かを判断する(ステップS1107)。
【0087】
未選択のIDフォルダ900がある場合(ステップS1107:YES)、家畜識別装置300は、ステップS1102に戻り、未選択のIDフォルダ900のうち、いずれか1つを選択して、選択したIDフォルダ900内の牛画像について、ステップS1103~ステップS1106の処理を繰り返す。未選択のIDフォルダ900がない場合(ステップS1107:NO)、家畜識別装置300は、終了条件が成立したか否かを判断する(ステップS1108)。
【0088】
終了条件の成立とは、例えば、上記処理(例えば、ステップS1102~ステップS1107に係る処理)を所定回数行うことや、牛IDの精度が所定値以上になることや、操作者から終了を受け付けることである。終了条件が成立しない場合(ステップS1108:NO)、家畜識別装置300は、ステップS1102に戻る。終了条件が成立した場合(ステップS1108:YES)、家畜識別装置300は、一連の処理を終了する。
【0089】
上述した処理により、ロータリーパーラー100上の牛Buの識別を行うための、学習済みモデルを作成することができる。これにより、家畜識別装置300は、学習済みモデルを用いて、ロータリーパーラー100上の牛Buの識別を行うことが可能になる。以下、
図13を用いて、ロータリーパーラー100上の牛Buを識別する処理について説明する。
【0090】
(家畜識別装置300が行う牛Buの識別処理の一例)
図12は、家畜識別装置300が行う牛Buの識別処理の一例を示すフローチャートである。なお、以下の処理では、各牛Buについてそれぞれ10フレーム分の識別が行われるとともに、10フレームの全ての識別が完了した際に、最終的に識別結果を特定するようにしている。
【0091】
図12において、家畜識別装置300は、牛Buの識別を開始するか否かを判断する(ステップS1201)。識別開始とは、例えば、識別開始の指示(例えば、
図13の開始ボタンBT1の押下)を受け付けることである。家畜識別装置300は、識別開始となるまで待機する(ステップS1201:NO)。家畜識別装置300は、牛画像の識別開始になると(ステップS1201:YES)、牛画像のフレームのカウントを開始する(ステップS1202)。
【0092】
そして、ロータリーパーラー100上の画像情報を用いて、牛画像の抽出処理(
図10参照)を行う(ステップS1203)。そして、家畜識別装置300は、牛画像の抽出処理において出力された牛画像を学習済みモデルに入力する(ステップS1204)。家畜識別装置300は、入力した牛画像についての牛IDごとの推定値を導出し、推定値の高い牛IDを選択する(ステップS1205)。なお、ステップS1205では、牛IDごとに推定値がパーセンテージで表される。具体的には、牛ID「1」の可能性が95%、牛ID「2」の可能性が2%、牛ID「3」の可能性が1%というように表され、最も可能性が高い牛IDが選択される。
【0093】
次に、家畜識別装置300は、選択した牛IDが特定の牛IDであるか否かを判断する(ステップS1206)。ここで、無模様の牛Buについては、家畜識別装置300は、牛Buの個体を一意に特定することが困難である。このため、無模様の牛Buについては、牛IDに、無模様の牛Buであることを示す情報が対応付けられている。この情報が対応付けられている牛IDが、特定の牛IDである。
【0094】
選択した牛IDが特定の牛IDではない場合(ステップS1206:NO)、家畜識別装置300は、選択した牛IDをディスプレイ405に表示する(ステップS1207)。一方、ステップS1206において、選択した牛IDが特定の牛IDである場合(ステップS1206:NO)、すなわち、例えば、模様がない牛の場合、家畜識別装置300は、牛IDを「Plain」としてディスプレイ405に表示する(ステップS1208)。
【0095】
この後、家畜識別装置300は、次のフレームの入力があるか否かを判断する(ステップS1209)。家畜識別装置300は、次のフレームの入力があるまで待機し(ステップS1209:NO)、次のフレームの入力があると(ステップS1209:YES)、家畜識別装置300は、牛画像のフレームのカウント数に「1」を加算する(ステップS1210)。
【0096】
そして、家畜識別装置300は、カウント値が所定数(例えば10:10フレーム)になったか否かを判断する(ステップS1211)。カウント値が所定数になっていない場合(ステップS1211:NO)、家畜識別装置300は、ステップS1203に戻る。カウント値が10になった場合(ステップS1211:YES)、家畜識別装置300は、10フレームの間に選択した牛IDのうち、最も多く選択した牛IDを最終結果としてディスプレイ405に表示する(ステップS1212)。
【0097】
次に、家畜識別装置300は、牛Buの識別を終了するか否かを判断する(ステップS1213)。識別の終了とは、例えば、識別終了の指示(例えば、
図13の終了ボタンBT2の押下)を受け付けることである。なお、当該指示を受け付けるタイミングは、本フローチャートに示すタイミングに限らず、ステップS1202~ステップS1212の間のいずれのタイミングでもよい。
【0098】
ステップS1213において、牛Buの識別を終了しない場合(ステップS1213:NO)、家畜識別装置300は、ステップS1202に戻る。一方、牛Buの識別を終了する場合(ステップS1213:YES)、家畜識別装置300は、一連の処理を終了する。
【0099】
(ディスプレイ405に表示される牛IDの表示例)
図13は、ディスプレイ405に表示される牛Buを識別した結果の表示例を示す説明図である。
図13に示すように、ディスプレイ405には、識別中画面1300が表示されている。識別中画面1300は、撮像画像領域1301と、識別結果領域1302と、識別結果リスト1303と、最終結果リスト1304と、開始ボタンBT1と、終了ボタンBT2とを含む。
【0100】
撮像画像領域1301は、撮像部200によって撮像されたロータリーパーラー10上の牛Buの背部を示している。また、撮像画像領域1301には、柵103も含めて表示されている。撮像画像領域1301は、動画である。このため、ロータリーパーラー100の回転移動に伴って、牛Buは、例えば、図中の上方から下方へ移動していく。
【0101】
識別結果領域1302は、各フレームについての牛IDの識別結果を示す。識別結果領域1302は、フレームが切り替わるごとに、識別される牛IDの識別結果を示す。このため、識別結果領域1302は、例えば、0.2秒ごとに、牛IDの識別結果として「30」、「30」、…というように、識別結果が表示される。なお、隣接する柵103の検索において、隣接する柵103が検索されない場合がある(
図7(B)、
図10のステップS1007:NO参照)。この場合、当該フレームについて牛画像の抽出が行われないことがあるため、10フレームについて牛IDの識別結果が出力されないこともある。
【0102】
識別結果リスト1303は、識別結果領域1302をリスト化したものである。最終結果リスト1304は、10フレームの間に識別した牛IDのうち、最も多く識別した牛IDをリスト化したものである。なお、本実施形態では、牛Buを1頭につき10フレーム分の牛画像を得て識別を行うようにしている。ただし、例えば、1頭につき15フレーム分の牛画像を得て識別を行う場合には、15フレームの間に識別した牛IDのうち、最も多く識別した牛IDを最終結果として表示すればよい。
【0103】
図13において、一例を挙げて説明すると、識別結果リスト1303aは、牛ID「7」の識別結果が全て得られたことを示している。これに対応する最終結果リスト1304aは、識別結果リスト1303aに対応する識別結果「7」を示している。
【0104】
また、識別結果リスト1303bは、特定の牛IDである(無模様の牛Bu)であることを示す「Plain」を示している。これに対応する最終結果リスト1304bについても、識別結果リスト1303bに対応する識別結果「Plain」を示している。
【0105】
また、識別結果リスト1303cは、牛ID「30」と「25」が混在した識別結果が得られたことを示している。具体的には、識別結果リスト1303cは、10フレームのうち、牛ID「30」を8回識別し、牛ID「25」を2回識別したことを示している。牛ID「30」を識別した回数の方が、牛ID「25」を識別した回数よりも多いことから、最終結果リスト1304cは、識別結果「30」を示している。
【0106】
開始ボタンBT1は、牛Buの識別処理の開始を受け付けるボタンである。開始ボタンBT1が押下されると、牛Buの識別処理が開始される。一方で、開始ボタンBT1が押下されるまでは、例えば、撮像画像領域1301が表示され、識別結果領域1302や、識別結果リスト1303や、最終結果リスト1304について表示されない。終了ボタンBT2は、牛Buの識別処理の終了を受け付けるボタンである。終了ボタンBT2が押下されると、開始ボタンBT1が押下される前の画面と同様の画面が表示される。
【0107】
以上説明したように、本実施形態において、家畜識別システムSt(家畜画像出力装置310)は、ストール102を上方から撮像する撮像部200の画像情報に基づいて柵103のエッジを検出するようにした。さらに家畜画像出力装置310は、当該エッジに基づいて柵103の位置を特定し、特定した位置に応じたストール102に収容される牛Buの牛画像を出力するようにした。これにより、回転移動するロータリーパーラー100上の牛Buの牛画像を簡単かつ精度よく得ることができる。したがって、牛Buの体の一部に通信機を装着させたり、農場全体に中継器を設置したりしなくても、簡単な構成で、家畜を好適に識別することが可能になる。
【0108】
なお、牛Buに耳標を取り付けて、下方から耳標を検出して牛Buを識別する手法もある。ただし、本手法では、回転移動するロータリーパーラー100を下方から撮像したとしても、牛Buの頭の向きによっては、耳標を検出することができないことがある。これに対して、本実施形態において、家畜識別システムSt(家畜画像出力装置310)は、ロータリーパーラー100の上方に設置された撮像部200から(
図2参照)画像を入力し、入力した画像からバイナリマスク領域602に応じた関心領域603を得て、牛画像を抽出するようにした(
図6参照)。これにより、回転移動するロータリーパーラー100上の牛Buの牛画像を安定して得ることができる。
【0109】
また、本実施形態において、家畜識別システムSt(家畜画像出力装置310)は、撮像部200の画像情報に基づいて、複数のエッジを検出し、複数のエッジのうち最も強いエッジを柵103として特定するようにした。これにより、精度よく柵103を特定することができる。したがって、簡単な構成で、家畜を好適に識別することが可能になる。
【0110】
また、本実施形態において、家畜識別システムSt(家畜画像出力装置310)は、一の柵103のエッジから所定距離の位置に他のエッジが存在する場合に、当該他のエッジを隣接する柵103として特定するようにした。これにより、精度よく隣接する柵103を特定することができる。したがって、簡単な構成で、家畜を好適に識別することが可能になる。
【0111】
また、本実施形態において、家畜識別システムSt(学習装置320)は、牛画像を入力サンプルとし、複数のクラスのうち当該牛画像が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットを用いて、入力された牛画像に対応して当該牛画像が属するクラスの事後確率を示すベクトルを出力するように学習された特徴量計算モデルを有する。これにより、ロータリーパーラー10上の牛Buの識別を高精度に行うための学習済みモデルを簡単に作成することができる。また、回転移動するロータリーパーラー100上の牛Buの牛画像を簡単かつ精度よく得ることができる。
【0112】
また、本実施形態において、家畜識別システムSt(家畜識別装置300)は、牛画像を取得して、牛IDを識別するための情報を用いて、牛画像に関係する牛IDを識別するようにした。これにより、回転移動するロータリーパーラー100上の牛Buの牛画像を用いて、牛Buを簡単かつ精度よく識別することができる。したがって、簡単な構成で、家畜を好適に識別することが可能になる。
【0113】
また、本実施形態において、家畜識別システムSt(家畜識別装置300)は、学習装置320によって学習された学習済みモデルに、牛画像を入力することで、牛IDを識別するようにした。これにより、牛Buをより精度よく識別することができる。
【0114】
また、本実施形態において、家畜識別システムSt(家畜識別装置300)は、1頭の牛Buにつき、所定数の連続するフレームの牛画像を取得する度に、牛IDを識別し、識別した各フレームの牛IDのうち、最も多く識別した牛IDを最終結果とするようにした。このため、回転移動するロータリーパーラー100上の牛Buと撮像部200との位置関係や、牛Buの姿勢などによっては、識別結果にバラツキが生じる可能性があるが、本実施形態によれば、このようなバラツキが生じたとしても、最も多く識別した牛IDを最終結果とするため、牛Buの識別を高精度に行うことができる。
【0115】
(実施形態の変形例)
以下に、実施形態の変形例1、2について説明する。なお、以下の変形例1,2では、上述した実施形態で説明した内容については、適宜説明を省略する。
【0116】
(変形例1)
まず、変形例1について説明する。上述した実施形態では、牛Buの識別において特定の牛IDの識別結果が得られたときには、「Plain」を表示するようにした(
図13参照)。変形例1では、このような構成に加えて又は代えて、牛Buの識別において特定の牛IDの識別結果が得られたときに、「Plain」を表示せずに、牛Buを特定可能にする構成について説明する。
【0117】
上述したように、牛Buは、群れを成して行動する。このため、ロータリーパーラー100には、群れごとに牛Buが乗せられることになる。このことから、ロータリーパーラー100上には、どの群れの牛Buが乗せられていることが予め分かっている。さらに、その群れの中で、識別結果できない(または識別しにくい)牛Bu(特定の牛IDの牛Bu)の頭数は、限られている。
【0118】
そこで、本実施形態に係る牛Buの識別では、識別しにくい牛Buや、識別できない牛Buについては、その他の情報を用いて、牛Buを識別することも可能である。その他の情報は、識別しにくい数等(例えば、2~3等)を識別することができる情報であればよい。例えば、その他の情報は、撮像部200の画像情報に基づく骨格や大きさの情報や、顔認証を行うための顔の情報などとすればよい。また、その他の情報は、例えば、体重の情報としてもよい。また、その他の情報は、当該牛Buに通信装置を装着させることによる、通信装置からの情報としてもよい。
【0119】
変形例1によれば、本実施形態で説明した識別処理(
図12参照)において、特定の牛IDの識別結果が得られた牛Buについても、牛IDを識別することができる。これにより、ロータリーパーラー10上の全ての牛Buを識別することができる。
【0120】
(変形例2)
次に、変形例2について説明する。上述した実施形態では、牛Buの識別において、10フレームの間に選択した牛IDのうち、最も多く選択した牛IDを最終結果として牛Buを識別するようにした(
図12参照)。変形例2では、このような構成に加えて又は代えて、隣接する牛ID間の差分の算出結果に基づいて、牛Buを識別するようにする構成について説明する。
【0121】
図14は、変形例2に係る牛Buの識別手法の一例を示す説明図である。
図14(A)は、フレームごとの牛IDの推定結果1400を示す。推定結果1400において「ID Seq」は、フレームごとに推定される牛IDの番号を示す。「ID Seq」は、フレームごとに順次得られる。
【0122】
図14(B)は、カウント値の集計結果1410と、最終的なIDリスト1420とを示す。家畜識別装置300は、推定結果1400の「ID Seq」に示す隣接するフレーム間の牛IDの差分を算出する。例えば、符号1401に示すように、隣接する牛IDがともに「45」であれば、牛IDの差分がゼロである。牛IDの差分がゼロの場合、家畜識別装置300は、当該牛IDのカウント値(
図14(B)の集計結果1410のカウント値(「Occur」)をインクリメントする。すなわち、隣接する牛IDがともに「45」であれば、家畜識別装置300は、集計結果1410のIDリスト「45」の「Occur」の値が「+1」される。
【0123】
一方で、符号1402に示すように、隣接する牛IDが「63」と「42」である場合、牛IDの差分がゼロにはならない。牛IDの差分がゼロにはならない場合、比較基準とする牛ID「63」をリセットし、牛ID「42」を比較基準に変更するとともに、牛ID「42」のカウント値を「1」にセットする。その後、牛ID「42」を比較基準にして、次に得られる牛IDとの差分を算出する。以降も同様に、牛IDの差分がゼロであれば、当該比較基準の牛IDのカウント値をインクリメントし、一方で、牛IDの差分がゼロでなければ、比較基準の牛IDを変更して、当該牛IDのカウント値を「1」にセットする。
【0124】
家畜識別装置300は、最終的に、
図14(B)のIDリスト1420を生成する。IDリスト1420の生成において、家畜識別装置300は、「Occur」(カウント値)が閾値以下(例えば「3」以下)の牛IDを除外する。具体的には、集計結果1410において、牛ID「42」の「Occur」は「2」である。すなわち、牛ID「42」の「Occur」は、閾値以下である。よって、家畜識別装置300は、最終的なIDリスト1420から牛ID「42」を除外するようにする。
【0125】
(変形例2に係る牛Buの識別処理)
図15は、家畜識別装置300が行う変形例2に係る識別処理を示すフローチャートである。
図15において、家畜識別装置300は、牛Buの識別を開始するか否かを判断する(ステップS1501)。家畜識別装置300は、識別開始となるまで待機する(ステップS1501:NO)。家畜識別装置300は、牛画像の識別開始になると(ステップS1501:YES)、フレームの入力があるか否かを判断する(ステップS1502)。
【0126】
家畜識別装置300は、フレームの入力があるまで待機し(ステップS1502:NO)、フレームの入力があると(ステップS1502:YES)、ロータリーパーラー100上の画像情報を用いて、牛画像の抽出処理(
図10参照)を行う(ステップS1503)。そして、家畜識別装置300は、牛画像の抽出処理において出力された牛画像を学習済みモデルに入力する(ステップS1504)。
【0127】
そして、家畜識別装置300は、入力した牛画像についての牛IDごとの推定値を導出し、推定値の高い牛IDを選択する(ステップS1505)。なお、ステップS1505では、牛IDごとに推定値がパーセンテージで表される。具体的には、牛ID「1」の可能性が95%、牛ID「2」の可能性が2%、牛ID「3」の可能性が1%というように表され、最も可能性が高い牛IDが選択される。
【0128】
次に、家畜識別装置300は、選択した牛IDが特定(無模様)の牛IDであるか否かを判断する(ステップS1506)。選択した牛IDが特定の牛IDではない場合(ステップS1506:NO)、家畜識別装置300は、選択した牛IDをディスプレイ405に表示する(ステップS1507)。一方、ステップS1506において、選択した牛IDが特定の牛IDである場合(ステップS1506:NO)、家畜識別装置300は、牛IDを「Plain」としてディスプレイ405に表示する(ステップS1508)。
【0129】
次に、家畜識別装置300は、比較基準の牛IDと、ステップS1507またはステップS1508において選択した牛IDとの差分を算出する(ステップS1509)。そして、家畜識別装置300は、差分が「0」であるか否かを判断する(ステップS1510)。差分が「0」である場合(ステップS1510:YES)、家畜識別装置300は、比較基準の牛IDのカウント値をインクリメントし(ステップS1511)、ステップS1513に進む。
【0130】
一方、差分が「0」ではない場合(ステップS1510:YES)、家畜識別装置300は、比較基準の牛IDを、ステップS1507またはステップS1508において選択した牛IDに変更し、カウント値に「1」をセットする(ステップS1512)。そして、家畜識別装置300は、最終的なIDリスト1420(
図14(B)参照)の生成タイミングであるか否かを判断する(ステップS1513)。IDリスト1420の生成タイミングは、例えば、比較基準となる元の牛IDが別の牛IDに変更されてから、元の牛IDが検出されずに、所定期間が経過したタイミングである。所定期間の経過とは、所定フレーム数がカウントされることとしてもよいし、一定の時間が経過することとしてもよい。
【0131】
IDリスト1420の生成タイミングではない場合(ステップS1513:NO)、家畜識別装置300は、ステップS1502に戻る。IDリスト1420の生成タイミングである場合(ステップS1513:YES)、家畜識別装置300は、カウント値(
図14(A)に示した集計結果1410の「Occur」)が閾値以下であるか否かを判断する(ステップS1514)。
【0132】
カウント値が閾値以下ではない場合(ステップS1514:NO)、家畜識別装置300は、当該牛IDをIDリスト1420に含めるようにし(ステップS1515)、ステップS1517に進む。カウント値が閾値以下である場合(ステップS1514:YES)、家畜識別装置300は、当該牛IDをIDリスト1420から除外し(ステップS1516)、牛Buの識別を終了するか否かを判断する(ステップS1517)。
【0133】
牛Buの識別を終了しない場合(ステップS1517:NO)、家畜識別装置300は、ステップS1502に戻る。一方、牛Buの識別を終了する場合(ステップS1517:YES)、家畜識別装置300は、一連の処理を終了する。
【0134】
変形例2によれば、隣接する牛ID間の差分の算出結果に基づいて、牛Buを識別するようにするため、牛Buの識別を簡単かつ高精度に行うことができる。
【0135】
なお、以上に説明した家畜識別システムSt、家畜画像出力装置310、学習装置、および家畜識別装置300を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録し、そのプログラムをコンピュータシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【符号の説明】
【0136】
St…家畜識別システム
100…ロータリーパーラー
102…ストール
103…柵
200…撮像部
300…家畜識別装置
311…入力部
312…検出部
313…特定部
314…抽出部
315…出力部
310…家畜画像出力装置
320…学習装置
331…取得部
332…識別部
701…エッジ
702a~702c…直線
810…牛画像