(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024128284
(43)【公開日】2024-09-24
(54)【発明の名称】推定装置、推定方法、プログラム、および推定システム
(51)【国際特許分類】
A01K 29/00 20060101AFI20240913BHJP
G06Q 50/02 20240101ALI20240913BHJP
【FI】
A01K29/00 D
G06Q50/02
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023037186
(22)【出願日】2023-03-10
(71)【出願人】
【識別番号】504224153
【氏名又は名称】国立大学法人 宮崎大学
(74)【代理人】
【識別番号】100165179
【弁理士】
【氏名又は名称】田▲崎▼ 聡
(74)【代理人】
【識別番号】100175824
【弁理士】
【氏名又は名称】小林 淳一
(74)【代理人】
【識別番号】100152272
【弁理士】
【氏名又は名称】川越 雄一郎
(74)【代理人】
【識別番号】100181722
【弁理士】
【氏名又は名称】春田 洋孝
(72)【発明者】
【氏名】ティ ティ ズイン
(72)【発明者】
【氏名】川越 悠聖
(72)【発明者】
【氏名】小林 郁雄
【テーマコード(参考)】
5L049
5L050
【Fターム(参考)】
5L049CC01
5L050CC01
(57)【要約】
【課題】家畜の健康管理を効率よく行うこと。
【解決手段】推定装置は、データ入力手段と、位置検出手段と、基準設定手段と、判別手段と、推定手段とを備える。データ入力手段は、給餌場内の家畜を前方から撮像した撮像データを入力する。位置検出手段は、前記撮像データに基づいて、前記家畜の頭部位置を検出する。基準線設定手段は、前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する。判別手段は、前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する。推定手段は、前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する。
【選択図】
図14
【特許請求の範囲】
【請求項1】
給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力手段と、
前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段と、
前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段と、
前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段と、
前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段と、
を備えることを特徴とする推定装置。
【請求項2】
前記給餌場内には、横方向に延びる直線部分を有する備品が配置され、
前記直線部分は、摂食時における前記頭部位置よりも上方に位置し、
前記撮像データが示す画像から直線を検出する直線検出手段を備え、
前記基準線設定手段は、前記直線検出手段によって検出された直線に基づいて、前記基準線を設定する、
ことを特徴とする請求項1に記載の推定装置。
【請求項3】
前記備品は、前記家畜を留め置く柵部を含み、
前記直線部分は、前記柵部の下端に延設される下側延設部を含み、
前記基準線設定手段は、前記直線検出手段によって検出された直線に基づいて、前記下側延設部に前記基準線を設定する、
ことを特徴とする請求項2に記載の推定装置。
【請求項4】
前記直線部分は、前記柵部の上端に延設される上端延設部を含み、
前記上端延設部は、前記家畜の頭部が上方へ移動することを規制し、
前記位置検出手段によって検出された前記頭部位置に基づいて、前記頭部位置の最大高さを検出する高さ検出部と、
前記撮像データが示す領域から、前記高さ検出部によって検出された前記最大高さが示す座標よりも上方の領域を除いた関心領域を設定する関心領域設定手段と、
を備え、
前記直線検出手段は、前記関心領域設定手段によって設定された前記関心領域の中から直線を検出する、
ことを特徴とする請求項3に記載の推定装置。
【請求項5】
複数の家畜を前方から同時に撮像した前記撮像データが示す画像に、前記複数の家畜にそれぞれ対応する複数の分割領域を設定する分割領域設定手段を備え、
前記判別手段は、前記複数の分割領域のそれぞれについて、前記摂食の有無を判別し、
前記推定手段は、前記複数の分割領域のそれぞれについて、前記家畜の摂食時間を推定する、
ことを特徴とする請求項1~4のいずれか一項に記載の推定装置。
【請求項6】
前記撮像データに基づいて、前記家畜を識別する識別手段を備え、
前記推定手段は、前記識別手段によって識別された前記家畜と前記摂食時間とを対応付けた推定結果を出力する、
ことを特徴とする請求項1~4のいずれか一項に記載の推定装置。
【請求項7】
推定装置のコンピュータが、
給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力工程と、
前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出工程と、
前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定工程と、
前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別工程と、
前記判別工程の判別結果に基づいて、前記家畜の摂食時間を推定する推定工程と、
を含む処理を実行することを特徴とする推定方法。
【請求項8】
推定装置のコンピュータを、
給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力手段、
前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段、
前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段、
前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段、
前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段、
として機能させることを特徴とするプログラム。
【請求項9】
給餌場内の家畜を前方から撮像する撮像装置と、推定装置とを備えた推定システムにおいて、
前記推定装置は、
前記家畜を前方から撮像した撮像データを入力するデータ入力手段と、
前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段と、
前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段と、
前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段と、
前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段と、
を備えることを特徴とする推定システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、推定装置、推定方法、プログラム、および推定システムに関する。
【背景技術】
【0002】
従来、家畜を飼育する畜産農家等では、家畜の健康管理が行われている。家畜の健康管理において、家畜の摂食行動は重要な情報源となる。具体的には、家畜の摂食時間の変化から、家畜の病気や運動障害を早期に発見することが可能である。近年では、家畜に付す耳票にセンサを搭載して家畜の健康管理が行われることもある。関連する技術として、家畜の体温を検出するための温度センサを備えた体温測定用耳標が知られている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、家畜にセンサを付すと、家畜にストレスを与えてしまうことがあり、また、畜産農家にとっても家畜を1頭ずつ観察して健康を管理することは困難であった。このため、従来技術では、家畜の健康管理を効率よく行うことができない、という問題があった。
【0005】
本発明は、このような事情に鑑みてなされたもので、その目的は、家畜の健康管理を効率よく行うことができる技術を提供することにある。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明の一態様である推定装置は、給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力手段と、前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段と、前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段と、前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段と、前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段と、を備えることを特徴とする推定装置である。
【0007】
上述した課題を解決するために、本発明の一態様である推定方法は、推定装置のコンピュータが、給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力工程と、前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出工程と、前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定工程と、前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別工程と、前記判別工程の判別結果に基づいて、前記家畜の摂食時間を推定する推定工程と、を含む処理を実行することを特徴とする推定方法である。
【0008】
また、本発明の他の態様であるプログラムは、推定装置のコンピュータを、給餌場内の家畜を前方から撮像した撮像データを入力するデータ入力手段、前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段、前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段、前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段、前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段、として機能させることを特徴とするプログラムである。
【0009】
また、本発明の他の態様であるシステムは、給餌場内の家畜を前方から撮像する撮像装置と、推定装置とを備えた推定システムにおいて、前記推定装置は、前記家畜を前方から撮像した撮像データを入力するデータ入力手段と、前記撮像データに基づいて、前記家畜の頭部位置を検出する位置検出手段と、前記撮像データが示す画像に、前記家畜の摂食に係る基準線を設定する基準線設定手段と、前記頭部位置が示す座標と前記基準線が示す座標とに基づいて、前記家畜が摂食しているか否かを判別する判別手段と、前記判別手段の判別結果に基づいて、前記家畜の摂食時間を推定する推定手段と、を備えることを特徴とする推定システムである。
【発明の効果】
【0010】
本発明によれば、家畜の健康管理を効率よく行うことができる。
【図面の簡単な説明】
【0011】
【
図1】摂食時間推定システム1の一例を示す説明図である。
【
図2】推定装置120のハードウェア構成の一例を示す説明図である。
【
図3】本実施形態に係る推定装置120の機能的構成の一例を示すブロック図である。
【
図4】摂食時間の推定を行う前段階で行われる設定処理の一例を示すフローチャートである。
【
図5】データ入力部151に入力される撮像データが示す入力画像の一例を示す図である。
【
図6】位置検出部152によって検出される牛Buの頭部位置の一例を示す図である。
【
図7】関心領域設定部154によって設定された関心領域700の一例を示す図である。
【
図8】直線検出部155によって検出された検出直線の一例を示す図である。
【
図9】基準線設定部156によって設定される摂食基準線900の一例を示す図である。
【
図10】分割領域設定部157によって設定された分割領域1000の一例を示す図である。
【
図11】推定装置120が行う摂食時間の推定処理の一例を示すフローチャートである。
【
図12】推定装置120が行う未検出処理の一例を示すフローチャートである。
【
図13】推定装置120が行う牛識別処理の一例を示すフローチャートである。
【
図14】判別部159による摂食の有無に係る判別結果の一例を示す図である。
【
図15】推定装置120が行う摂食時間の集計処理の一例を示すフローチャートである。
【
図16】摂食時間の集計結果の出力例を示す図である。
【
図17】摂食時間の集計結果の出力例を示す図である。
【
図18】本実施形態に係る家畜識別システム1800の機能的構成の一例を示すブロック図である。
【
図19】牛Buの顔画像を抽出して記憶する概要の一例を示す説明図である。
【
図20】学習処理部221の構成および分類モデルM0の構成を示す説明図である。
【
図21】推定装置120が行う顔画像320の記憶制御処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
(実施形態)
図1は、摂食時間推定システム1の一例を示す説明図である。摂食時間推定システム1は、推定システムの一例である。摂食時間推定システム1は、例えば、畜産農家が管理する酪農場に適用される。酪農場には、数十頭から数百頭の家畜が飼育されている。本実施形態において、家畜は、乳牛(牛Bu)とする。ただし、家畜は、牛Buに限らず、例えば、肉牛であってもよいし、豚、ヤギ、鶏など牛以外の動物とすることも可能である。
【0013】
(給餌場10について)
酪農場は、給餌場10を備える。給餌場10は、牛Buが餌30を摂食する場所である。牛Buは、例えば、毎日朝夕の定められた時間に給餌場10に移動して、餌30を摂食する。摂食を終えた牛Buは、給餌場10から退き、摂食を終えていない別の牛Buと入れ替わる。
【0014】
給餌場10には、各種の備品が設けられる。各種備品は、柵20(柵部)を含む。柵20は、牛Buが収容される収容領域21と、作業者が通行する通路22とを仕切るために設けられている。柵20を設けることにより、牛Buが通路22側へ進出できないようになっており、すなわち、牛Buは収容領域21内に留め置かれるようになっている。
【0015】
柵20の近傍には、牛Buが摂食する餌30が置かれる。具体的には、餌30は、牛Buから見て、柵20を挟んだ通路22側に置かれる。柵20には、牛Buの頭部が通過可能な通過領域が設けられている。牛Buは、柵20の通過領域から頭部を露出して、通路22側に置かれる餌30を摂食する。
【0016】
なお、柵20は、牛Buが自由に頭部を抜き差し可能とするタイプのものであり、すなわち、通過領域を通した頭部の移動を制限しないタイプのものである。ただし、柵20は、このようなタイプに限らず、牛Buが自由に頭部を抜き差しできないタイプとしてもよく、すなわち、通過領域を通した頭部の移動を制限するよう頭部をロックするタイプとしてもよい。
【0017】
(撮像装置100について)
摂食時間推定システム1は、撮像装置100と、推定装置120とを備える。撮像装置100は、給餌場10内に収容される牛Buを撮像する。具体的には、撮像装置100は、給餌場10に固定して配置され、各牛Buを前方から撮像する。より具体的には、撮像装置100は、撮像範囲に、複数(例えば「5」)の牛Buの顔が写るように、柵20から4~5m程度離間して、高さ1.6m程度の位置に配置される。なお、図示では、撮像装置100が撮像する牛Buの頭数は、5頭を示す。ただし、撮像する牛Buの頭数は、これに限らず、例えば、6頭以上(例えば10頭)とすることも可能であるし、4頭以下とすることも可能である。
【0018】
撮像装置100は、例えば、1秒間に25フレームの画像を撮像する。撮像装置100は、撮像した撮像データを推定装置120へ出力する。撮像データの出力態様は、有線または無線の送信による出力態様であるが、これに限らず、記憶媒体(例えば、USB(Universal Serial Bus)メモリなど)へ記憶させる出力態様としてもよい。
【0019】
撮像装置100は、各牛Buを効率よく識別するという観点から、RGBカメラとしている。ただし、撮像装置100は、RGBカメラに限らず、3Dカメラや、赤外線カメラや、モノクロカメラであってもよい。撮像装置100には、例えば、CCD(charge coupled device)カメラや、CMOS(Complementary Metal Oxide Semiconductor)カメラを適用することができる。
【0020】
本実施形態では、説明を簡略化するために、撮像装置100は、1台のみ配置されることとする。ただし、撮像装置100は、複数台(例えば4台)配置されるようにすることも可能である。複数の撮像装置100を配置する場合、それぞれを識別する番号(カメラ番号)を付すようにし、いずれの撮像装置100で撮像された撮像データであることを識別可能にすればよい。
【0021】
(推定装置120について)
推定装置120は、パソコン、ノートパソコン、タブレット装置、スマートホンなどのコンピュータ装置である。推定装置120は、撮像装置100が出力した撮像データを入力する。撮像データの入力態様は、有線または無線の受信による入力態様であるが、これに限らず、記憶媒体から読み取る入力態様としてもよい。推定装置120は、入力した撮像データに基づいて、各牛Buの摂食時間を推定する。
【0022】
(推定装置120のハードウェア構成)
次に、推定装置120のハードウェア構成について説明する。
図2は、推定装置120のハードウェア構成の一例を示す説明図である。
図2に示すように、推定装置120は、CPU121(Central Processing Unit)と、メモリ122と、操作部123と、マイク124と、ディスプレイ125と、スピーカ126と、通信I/F(インタフェース)とを備える。これらは、バス130を介して相互に通信可能である。
【0023】
CPU121は、中央演算処理装置であり、メモリ122に記憶されている各種プログラムを読み出して実行することにより、推定装置120の動作を制御する。各種プログラムは、本実施形態に係る、摂食時間推定プログラムと、学習プログラムと、家畜識別プログラムとを含む。
【0024】
メモリ122は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスク、SSD(Solid State Drive)などを含む。ROMは、読み出し専用メモリであり、プログラムをはじめとしてCPU121が利用する各種の情報を記憶する。RAMは、読み出しや書き込みが可能なメモリであり、種々の情報を記憶する。例えば、RAMは、外部から取得した情報や、処理において生成した情報を記憶する。また、メモリ122は、USBメモリなどの着脱可能な記憶媒体や、光ディスクなどを含む。
【0025】
操作部123は、タッチパネルディスプレイや、キーボード、マウスなどの操作入力部である。
マイク124は、音声等の音を入力する。CPU121は、マイク124に入力された音声を認識することにより、各情報を入力することも可能である。
【0026】
ディスプレイ125は、タッチパネルディスプレイや、モニタなどである。
スピーカ126は、音を出力する。
通信I/F127は、他の装置と情報を送受信するインタフェースである。
なお、推定装置120は、この他にも、情報を読み取るスキャナや、媒体に情報を印刷するプリンタなどを備えていてもよい。
【0027】
(推定装置120の機能的構成について)
次に、推定装置120の機能的構成について説明する。
図3は、本実施形態に係る推定装置120の機能的構成の一例を示すブロック図である。なお、以下では、
図4~
図10を参照しつつ、
図3に示す機能的構成について説明する。
【0028】
図3に示すように、推定装置120は、データ入力部151と、位置検出部152と、高さ検出部153と、関心領域設定部154と、直線検出部155と、基準線設定部156と、分割領域設定部157と、行列生成部158と、判別部159と、識別部160と、推定部161との各機能部を備える。各機能部は、CPU121によって実現される。すなわち、CPU121がメモリ122に記憶されている摂食時間推定プログラムを実行することにより、各機能部を実現する。
【0029】
図4は、摂食時間の推定を行う前段階で行われる設定処理の一例を示すフローチャートである。
ステップS401:推定装置120は、設定処理を開始するか否かを判断する。設定処理の開始は、例えば、オペレータによって、設定処理の開始を示す所定の操作入力を受け付けることである。なお、本実施形態のように撮像装置100が固定配置されていれば、牛Buと撮像装置100との位置関係が変わらない。このため、
図4に示す設定処理を最初に1回だけ行うことによって、次回以降も設定した情報を使用することが可能である。なお、撮像装置100を搭載したロボットを用いる場合など、牛Buと撮像装置100との位置関係が変更する場合には、都度、設定処理を行うことを要する。
推定装置120は、設定処理の開始となるまで待機する(ステップS401:YES)。
【0030】
(データ入力部151)
ステップS402:設定処理の開始となると(ステップS401:YES)、データ入力部151は、撮像装置100によって撮像された各牛Buの撮像データを入力する。撮像データは、例えば、リアルタイムのデータであるが、録画データであってもよい。
図5は、データ入力部151に入力される撮像データが示す入力画像の一例を示す図である。
図5に示すように、撮像データが示す入力画像(フレーム画像)500は、牛Bu(Bu-1~Bu-5)と、柵20と、通路22と、餌30と、背景50との各画像を含む。柵20は、横方向に延びる直線部分を有する。この直線部分は、柵20の下端に延設される下端延設部20a(下端の水平パイプ)と、柵20の上端に延設される上端延設部20b(上端の水平パイプ)である。下端延設部20aは、牛Buの摂食時における頭部の位置よりも上方に位置する。上端延設部20bは、柵20が有する通過領域を通した頭部が上方へ移動することを規制する。
【0031】
(位置検出部152)
ステップS403:位置検出部152は、撮像データに基づいて、牛Buの頭部位置を検出する。位置検出部152は、機械学習による画像認識機能(例えば、YOLO:You Only Look Once)によって、入力画像500から牛Buの頭部位置を検出する。
図6は、位置検出部152によって検出される牛Buの頭部位置の一例を示す図である。
図6に示すように、バウンディングボックス600(600a~600e)は、位置検出部152によって検出される牛Buの頭部位置を示している。検出される頭部位置は、バウンディングボックス600の各辺についてのX座標およびY座標を含む。
【0032】
(高さ検出部153)
ステップS404:高さ検出部153は、位置検出部152によって検出された頭部位置に基づいて、牛Buの頭部位置の最大高さを検出する。高さ検出部153は、複数のフレーム画像(所定時間分のフレーム画像)における複数の牛Buのそれぞれ頭部位置の高さ(Y座標)の中から最大高さを検出する。頭部位置の高さは、例えば、バウンディングボックス600の上辺のY座標によって表される。位置検出部152は、複数のフレーム画像における各バウンディングボックス600の上辺のY座標のうち、最大値を最大高さとして検出する。
【0033】
(関心領域設定部154)
ステップS405:関心領域設定部154は、関心領域を設定する。具体的には、関心領域設定部154は、高さ検出部153によって検出された最大高さに基づいて、撮像データが示す領域のうち関心領域を設定する。ここで、牛Buの頭部の上方への移動は、上端延設部20bによって規制される。このため、頭部位置の最大高さは、少なくとも、上端延設部20bの高さよりも低くなる。そこで、関心領域設定部154は、入力画像500(
図5)から、最大高さよりも上方の画像を削除することによって、関心領域を設定する。これにより、撮像データが示す入力画像500から、上端延設部20bに対応する領域を削除することができる。
【0034】
図7は、関心領域設定部154によって設定された関心領域700の一例を示す図である。
図7において、関心領域700は、入力画像500(
図5)から、上端延設部20bに対応する領域が削除されており、すなわち、背景画像550を含む領域が削除された領域を示している。
【0035】
(直線検出部155)
ステップS406:直線検出部155は、関心領域700内の画像から、直線を検出する。具体的には、直線検出部155は、予め設定される長さ以上の直線を検出する。より具体的には、直線検出部155は、ハフ変換を用いて画像中の複数の直線と、当該複数の直線のY座標(高さ)とを検出する。
【0036】
図8は、直線検出部155によって検出された検出直線の一例を示す図である。
図8に示すように、入力画像500には、複数の検出直線800(800a~800d)を示している。直線検出部155は、各検出直線800を識別するIDとY座標とを対応付ける。
【0037】
各検出直線800a~800dについて説明する。関心領域700は、入力画像500から上端延設部20bに対応する領域が削除されているものの、上端延設部20bが全て削除されているとは限らない。このため、削除しきれていない上端延設部20bの画像に基づいて、検出直線800aが検出されることがある。
検出直線800bは、下端延設部20aの画像に基づいて検出された直線を示す。
検出直線800cは、収容領域21と通路22との境界を示す画像に基づいて検出された直線を示す。
検出直線800dは、通路22の画像に基づいて検出された直線を示す。
【0038】
なお、餌30が多い場合には、下端延設部20aが餌に隠れてしまい、検出直線800bが精度よく検出されないおそれがある。このようなことに鑑み、検出対象として予め設定される直線の長さは、可能な限り短くしてもよい。
【0039】
(基準線設定部156)
ステップS407:基準線設定部156は、撮像データが示す画像に、牛Buの摂食に係る基準線(以下「摂食基準線」という。)を設定する。摂食に係る基準線は、後述する判別部159による摂食の有無の判別に用いられる直線である。基準線設定部156は、直線検出部155によって検出された検出直線800に基づいて、摂食基準線を設定する。
図8に示したように、関心領域700において、検出直線800bが最も多く検出されており、すなわち、下端延設部20aに対応する位置に、直線が多く検出されている。このため、検出した複数の検出直線800a~800dの各Y座標において、検出直線800bのY座標が中央値となる。そこで、基準線設定部156は、当該中央値(検出直線800bのY座標)を摂食基準線として設定する。
【0040】
図9は、基準線設定部156によって設定される摂食基準線900の一例を示す図である。
図9に示すように、摂食基準線900は、検出直線800b(
図8)に対応する位置に設定されている。これにより、牛Buの頭部を示すバウンディングボックス600(
図6)の下辺のY座標が摂食基準線900を下回ることにより、当該牛Buが摂食したことを判別することが可能になる。
【0041】
なお、本実施形態において、摂食基準線900は、自動で設定されることとするが、これに限らない。例えば、摂食基準線900は、オペレータからY座標の指定を受け付けることにより、手動で設定されてもよい。すなわち、基準線設定部156は、オペレータから操作入力された直線(Y座標)に基づいて、摂食基準線900を設定してもよい。また、推定装置120は、自動で摂食基準線900を設定する場合でも、設定した摂食基準線900の調整(Y座標の微調整など)をオペレータから受け付けるようにしてもよい。これにより、オペレータの確認のもと、摂食基準線900を精度よく設定することができる。
【0042】
また、本実施形態では、摂食基準線の設定では、各Y座標の中央値に代えて、各Y座標の平均値や最頻値を用いることも可能である。ただし、下端延設部20aの部分に摂食基準線を精度よく設定するという観点からすると、各Y座標の中央値を用いることが望ましい。
【0043】
(分割領域設定部157)
ステップS407:分割領域設定部157は、データ入力部151に入力された撮像データが示す入力画像に、複数の牛Buにそれぞれ対応する複数の分割領域を設定する。具体的には、分割領域設定部157は、関心領域700内の牛Buの最大頭数分、分割領域を設定する。分割領域設定部157は、関心領域700をX軸方向(横方向)に均等に分割して分割領域を設定する。本実施形態において分割する数は、「5」である。分割する数は、オペレータによって操作入力された数である。ただし、分割する数は、予め設定された数としてもよい。
【0044】
図10は、分割領域設定部157によって設定された分割領域1000の一例を示す図である。
図10に示すように、関心領域700は、X軸方向に均等に5分割されている。各分割領域1000(第1分割領域1000-1~第5分割領域1000-5)は、各牛Bu(Bu-1~Bu-5)の画像に対応しており、領域を識別する分割領域番号(1~5)が付される。
【0045】
また、推定装置120は、各牛Buがどの分割領域に存在しているかを特定する。具体的には、推定装置120は、バウンディングボックス600のX座標およびバウンディングボックス600の横幅に基づいて、バウンディングボックス600の中心X座標を算出する。さらに、推定装置120は、中心X座標と、各領域のX座標(b1~b4)とに基づいて、バウンディングボックス600が含まれる分割領域1000を決定する。図示のように、中心座標xが「b3≦x≦b4」であれば、推定装置120は、バウンディングボックス600が第4分割領域1000-4に存在するものと決定する。
【0046】
(行列生成部158)
ステップS408:行列生成部158は、分割領域1000(分割領域番号)に対応する行列Tを生成する。本実施形態の場合、行列Tは、1行5列([00000])である。行列Tの各列は、分割領域番号に対応する。行列Tの各成分は、摂食に係るカウント値を示す。詳細については後述するが、フレーム画像ごとに各領域における各牛Buが摂食していると判別されると、行列の成分(摂食カウント値)に「1」が加算される。例えば、牛Bu-2が摂食していると判別されると、行列Tのうち牛Bu-2(分割領域番号=2)に対応する成分に「1」が加算され、すなわち、行列Tは[01000]となる。
【0047】
図4に示したステップS401~S409に示した各処理が実行されることにより、設定処理が完了する。
【0048】
次に、
図11~
図14を参照しつつ、
図3に示す判別部159、識別部160、および推定部161について説明する。
図11は、推定装置120が行う摂食時間の推定処理の一例を示すフローチャートである。
【0049】
ステップS1101:推定装置120は、摂食時間の推定を開始するか否かを判断する。設定処理の開始は、手動入力を受け付けることとしてもよいし、自動入力によるものとしてもよい。手動入力は、例えば、牛Buの入れ替えがあったことにより、オペレータによって、摂食時間の推定開始を示す所定の操作入力を受け付けることである。自動入力は、例えば、設定処理(
図4)の完了によって設定完了の指示を取得すること(設定処理の完了後にそのまま自動開始)としてもよい。推定装置120は、摂食時間の推定開始となるまで、待機する(ステップS1101:NO)
【0050】
ステップS1102:摂食時間の推定を開始する場合(ステップS1101:YES)、データ入力部151は、撮像装置100によって撮像された各牛Buのフレーム画像(撮像データ)を入力する。
ステップS1103:推定装置120は、注目する分割領域1000の分割領域番号Nに「1」をセットする。
【0051】
ステップS1104:位置検出部152は、分割領域番号Nが示す分割領域について、頭部位置を検出したか否かを判断する。位置検出部152によって頭部位置が検出された場合(ステップS1104:YES)、推定装置120は、ステップS1106に進む。なお、このとき、後述する未検出カウント値P(未検出時にカウント値)をリセットする(「0」にする)。
【0052】
ステップS1105:位置検出部152によって頭部位置が検出されない場合(ステップS1104:NO)、推定装置120は、未検出処理(
図12)を実行することにより、分割領域1000内の牛Buの存否を確認する。
ステップS1106:識別部160は、機械学習による牛識別処理(
図13)を実行することにより、牛Buの牛IDを識別(個体識別)する。
【0053】
(判別部159)
ステップS1107:判別部159は、頭部位置が示す座標と摂食基準線900が示す座標とに基づいて、牛Buが摂食しているか否かを判別する。具体的には、判別部159は、牛Buの頭部を示すバウンディングボックス600(
図6)の下辺のY座標が摂食基準線900のY座標を下回っているか否かを判別することにより、当該牛Buが摂食しているか否かを判別する。なお、摂食基準線900との比較対象は、バウンディングボックス600の下辺に限らず、バウンディングボックス600の中心位置としてもよいし、上辺位置とすることも可能である。
【0054】
図14は、判別部159による摂食の有無に係る判別結果の一例を示す図である。
図14において、第1分割領域1000-1の牛Bu-1を例に挙げて説明する。バウンディングボックス600aの下辺のY座標は、摂食基準線900のY座標を下回っている。このため、判別部159は、牛Bu-1が摂食していると判別する。同様に、牛Bu-2~牛Bu-4についても、判別部159は、摂食していると判別する。一方で、牛Bu-5については、バウンディングボックス600eの下辺のY座標は、摂食基準線900のY座標を下回っていない。このため、牛Bu-5について、判別部159は摂食していないと判別する。
【0055】
(推定部161)
ステップS1108:推定部161は、牛Buが摂食していると判断した場合(ステップS1107:YES)、当該牛Buに対応する行列の成分(摂食カウント値E)に「1」を加算する。なお、ステップS1107において、判別部159によって、牛Buが摂食していると判断しない場合(ステップS1107:NO)、推定部161は、摂食カウント値Eに「1」を加算せずに、ステップS1109の処理に進む。
【0056】
ステップS1109:推定部161は、識別部160によって識別された牛IDと、摂食時間とを対応付けた推定結果を出力する。摂食時間は、摂食カウント値Eに基づいて、算出される。本実施形態では、撮像データのフレームレートを25fpsとしていることから、推定部161は、摂食カウント値Eが「25」になると、摂食時間が1秒であると推定する。例えば、摂食カウント値Eが「2500」になると、推定装置120は、摂食時間が100秒(1分20秒)であると推定する。
【0057】
ここで、推定結果の出力の一例について説明すると、
図14に示すように、推定結果1400は、バウンディングボックス600に、牛Buの識別結果1401と、摂食時間1402とが対応付けられた画像を示す。識別結果1401は、識別部160によって個体識別された牛Buの牛IDを示す。摂食時間1402は、摂食カウント値Eに基づく合計の摂食時間を示す。なお、推定部161は、摂食時間1402に代えて又は加えて、摂食カウント値Eを出力するようにしてもよい。
【0058】
ステップS1110:推定装置120は、1フレーム画像について全ての牛Buについて摂食の有無を判別したか否かを判別する。具体的には、推定装置120は、注目する分割領域1000の分割領域番号Nが「5」にセットされているか否かを判断する。
ステップS1111:分割領域番号Nが「5」にセットされていない場合(ステップS1108:NO)、分割領域番号Nに「N+1」を加算し、ステップS1104に戻る。これにより、例えば、Nに「1」がセットされていれば、Nを「2」にすることができ、第2分割領域1000-2の牛Bu-2について摂食の有無を判別することができる。
【0059】
ステップS1112:推定装置120は、摂食時間の推定処理を終了するか否を判断する。推定処理の終了は、例えば、牛Buの摂食が完了し、オペレータによって、推定処理の終了を示す所定の操作入力を受け付けることである。摂食時間の推定処理を終了しない場合(ステップS1112:NO)、推定装置120は、ステップS1102に戻り、ステップS1102~ステップS1112の処理を繰り返す。一方、摂食時間の推定処理を終了する場合(ステップS1112:YES)、推定装置120は、一連の処理を終了する。
【0060】
(ステップS1105の未検出処理について)
図12は、推定装置120が行う未検出処理の一例を示すフローチャートである。未検出処理では、分割領域1000内の牛Buの存否が判断される。
【0061】
ステップS1201:推定装置120は、未検出カウント値Pに「1」を加算する。
ステップS1202:推定装置120は、未検出カウント値Pが閾値であるか否かを判断する。本実施形態では、撮像データのフレームレートを25fpsとしていることから、閾値を「2500(=100秒)」とすることにより、100秒間、牛Buの頭部が検出されない場合には、牛がいないもの(立ち去ったもの)と判断することができる。未検出カウント値Pが閾値ではない場合(ステップS1202:NO)、推定装置120は、ステップS1106(
図11)へ進む。
【0062】
ステップS1203:。未検出カウント値Pが閾値である場合(ステップS1202:YES)、推定装置120は、当該分割領域に牛Buがいないものと見なして、分割領域番号Nの成分(摂食カウント値E)をリセットし、ステップS1106(
図11)へ進む。すなわち、推定装置120は、位置検出部152によって所定時間以上、頭部位置が検出されない場合、当該分割領域に係る摂食時間の推定を終了する。
【0063】
(ステップS1106の牛識別処理について)
図13は、推定装置120が行う牛識別処理の一例を示すフローチャートである。
ステップS1301:後述する顔画像抽出部232(
図20)は、位置検出部152によって検出された頭部位置から顔画像を抽出する。なお、位置検出部152が、顔画像抽出部232の機能を有してもよい。この場合、ステップS1301は、位置検出部152から顔画像を取得する処理とすればよい。
【0064】
ステップS1302:識別部160は、牛IDを識別するための学習済みモデルに顔画像を入力する。学習済みモデルの生成については、後述する。
【0065】
ステップS1303:識別部160は、入力した顔画像についての牛IDごとの推定値を導出し、推定値の高い牛IDを選択する。なお、推定値は、牛IDごとに可能性を示すパーセンテージで表される。具体的には、牛ID「001」の可能性が95%、牛ID「002」の可能性が2%、牛ID「003」の可能性が1%というように表される。識別部160は、最も可能性が高い牛IDを選択する。
【0066】
ステップS1304:識別部160は、選択した牛IDを識別結果1401(
図14)として出力し、ステップS1107(
図11)へ進む。
【0067】
(推定装置120が行う摂食時間の集計処理について)
次に、推定装置120が行う摂食時間の集計処理について説明する。
図15は、推定装置120が行う摂食時間の集計処理の一例を示すフローチャートである。
ステップS1501:推定装置120は、摂食時間の集計を開始するか否かを判断する。集計の開始は、例えば、牛Buが入れ替わるタイミング(立ち去ったタイミング)である。牛Buが入れ替わるタイミングは、例えば、未検出カウント値Pが閾値となったタイミング(ステップS1203)としてもよいし、牛Buの入れ替え時にオペレータから集計開始の所定の操作を受け付けたタイミングとしてもよい。推定装置120は、摂食時間の集計開始となるまで、待機する(ステップS1501:NO)。
【0068】
ステップS1502:摂食時間の集計開始になると(ステップS1501:YES)、推定装置120は、着目する分割領域1000に牛Buが存在した期間内の摂食時間を取得する。当該期間は、牛Buの存在が検出されてから、当該牛Buの存在が検出されなくなるまでの期間である。
ステップS1503:推定装置120は、着目する分割領域1000における牛IDを特定する。具体的には、推定装置120は、牛Buが存在した期間内において、識別部160によって最も高頻度で識別された牛IDを最終結果として決定する。これにより、フレーム画像単位では一部に誤って他の牛Buであると識別されたとしても、当該他の牛Buの摂食として推定しないようにすることができる。
【0069】
ステップS1504:推定装置120は、決定した牛Buの牛IDと、ステップS1502において取得した摂食時間とを対応付けた集計結果を生成する。
ステップS1505:推定装置120は、牛IDが示す牛Buの摂食時間の集計結果を記憶し、一連の処理を終了する。推定装置120は、記憶した集計結果を、オペレータから所定の操作を受け付けることにより、出力することが可能である。
【0070】
図16および
図17は、摂食時間の集計結果の出力例を示す図である。
図16および
図17に示す集計結果1600、1700は、例えば、ディスプレイ125に表示される。なお、集計結果1600、1700は、紙媒体に印刷されてもよいし、他の装置に送信されてもよい。
【0071】
図16において、集計結果1600は、ある日の一回の摂食(例えば朝)における牛Buごとの摂食時間を示す。これにより、オペレータは、各牛Buの摂食時間を容易に把握することができる。なお、推定装置120は、摂食時間が少ない牛Buを報知してもよい。具体的には、推定装置120は、集計結果1600において、摂食時間が閾値以下(小食)の牛IDや摂食時間が閾値以上(食べ過ぎ)の牛IDを特定の表示態様で表示してもよい。これにより、オペレータに、体調不良の可能性がある牛Buについて症状の確認を促すことができる。
【0072】
図17に示す集計結果1700は、牛Buごとの摂食時間をまとめたものである。具体的には、集計結果1700は、牛Buごとの各時間帯(朝/夕)の摂食時間や、ひと月の総摂食時間や、1回あたりの平均摂食時間などを含む。推定装置120は、オペレータから牛IDの入力を受け付けることにより、受け付けた牛IDに対応する集計結果1700を表示する。これにより、オペレータは、特定の牛Buについて摂食時間を詳細に把握することができる。また、推定装置120は、閾値以下(または閾値以上)の摂食時間を特定の表示態様で表示してもよい。
【0073】
なお、集計結果1600、1700の表示態様は、図示したものに限らない。例えば、牛IDの指定を受け付けることにより、当該牛IDが示す牛Buの過去1年の集計や表示したり、摂食時間の少ない時期など特定の期間を表示したりすることも可能である。また、例えば、摂食時間の短い牛Buや、摂食時間の長い牛Buをそれぞれランキング表示することも可能である。さらに、摂食時間が閾値以下であることが所定の頻度で生じた場合には、当該牛Buに健康に異常が生じている可能性があることを示唆するようにしてもよい。
【0074】
(学習済みモデルの生成について)
次に、学習済みモデルの生成について説明する。なお、以下に説明する学習済みモデルは、推定装置120によって生成されることとするが、これに限らず、他の装置によって生成されてもよい。また、以下に説明する家畜識別システム1800は、摂食時間推定システム1の一部であってもよいし、摂食時間推定システム1とは別のシステムであってもよい。
【0075】
(家畜識別システム1800の機能的構成、および牛Buの顔画像の抽出について)
図18は、本実施形態に係る家畜識別システム1800の機能的構成の一例を示すブロック図である。以下では、
図19を参照しつつ、
図18に示す機能的構成について説明する。
図19は、牛Buの顔画像を抽出して記憶する概要の一例を示す説明図である。
【0076】
図18に示すように、家畜識別システム1800は、撮像装置100と、推定装置120とを備える。推定装置120は、記憶制御装置200と、学習装置220とを備える。記憶制御装置200は、入力部201と、設定部202と、抽出部203と、記憶制御部204と、検出部205と、記憶部210との各機能部を備える。学習装置220は、学習処理部221の機能部を備える。推定装置120は、撮像情報入力部231と、顔画像抽出部232と、識別部160と、出力部234との各機能部を備える。
【0077】
入力部201は、撮像装置100から撮像情報(撮像データ)を入力する。撮像情報は、牛Bu(Bu1~Bu4)を前方から撮像した画像情報である。撮像情報300は、動画および静止画を含む。
図19に示すように、撮像情報300は、複数のフレーム画像301を含む。各フレーム画像301の撮像領域302には、複数の牛Buが存在することを示している。なお、撮像領域302には、一頭の牛Buのみが存在する場合もある。
【0078】
設定部202は、撮像情報300が示す撮像領域302のうち関心領域310(310a~310d)を設定する。関心領域310は、牛Buまたは柵20の通過領域に対応して設けられる領域であり、それぞれ牛Buの頭部が存在可能な領域を示す。関心領域310には、それぞれ対応する識別情報が付与される。
【0079】
抽出部203は、撮像情報300に基づいて、関心領域310内の牛Buの顔画像320(320a~320d)を抽出する。抽出部203は、画像認識による物体検出機能により、顔画像320を抽出する。抽出部203は、入力部201にフレーム画像301が入力される度に、顔画像320を抽出する。
【0080】
抽出された顔画像320は、例えば、300×300ピクセルに正規化される。仮に、抽出した顔画像320が横240×縦300ピクセルであった場合、横方向の300ピクセルに満たない箇所に無地(例えば黒)の画像を付け加えることにより、300×300ピクセルにする。すなわち、抽出した顔画像320の縦横の一方が300ピクセルであり、他方が300ピクセルに満たない場合、300ピクセルに満たない箇所に無地(例えば黒)の画像を付け加えることにより、300×300ピクセルにする。
【0081】
また、仮に、抽出した顔画像320の縦横いずれもが300ピクセルではない場合、ピクセル数の大きい一方が300ピクセルになるよう、縦横同じ比率で拡大または縮小する。そして、他方の300ピクセルに満たない箇所に無地の画像を付け加える。これにより、顔画像320が縦横いずれも300ピクセルではない場合でも、300×300ピクセルにすることが可能である。
【0082】
記憶制御部204は、関心領域310に対応して付与される識別情報ごとに顔画像320を記憶部210に分類して記憶させる。具体的には、記憶制御部204は、抽出部203によって抽出された顔画像320が抽出される度に、それぞれ関心領域310に対応して設けられるフォルダ330(330a~330d)に顔画像320を分類して記憶させる。記憶部210は、牛Buごとに、所定数の顔画像320をそれぞれ記憶させる。所定数は、後述する学習処理部において学習済みモデルを作成することが可能な数(例えば、300枚程度)であればよい。
【0083】
フォルダ330には、識別情報としてのフォルダID(Identity)が付されている。フォルダIDは、牛IDに対応付けられる。牛IDは、フォルダIDと同じIDとしてもよいし、別途、推定装置120の操作者(例えば、酪農家)によって付されるIDや、牛Buの名前や番号としてもよい。記憶制御部204は、牛ID(フォルダID)ごとに顔画像320を記憶部210に記憶させる。なお、以下では、牛IDとフォルダIDとを同じIDとして説明することとし、フォルダIDについては、牛IDとして説明する。
【0084】
(重複率の算出について)
ここで、給餌場10で餌を食べる牛Buは、餌を食べ始めてから、所定時間(例えば5分)はその場に留まって餌を食べ続ける傾向にあるものの、目の前の餌がなくなったときには、隣の牛Buの前にある餌を食べる場合もある。このような場合や、空腹が満たされて牛Buがその場に留まらない場合には、牛Buの顔画像320が関心領域310から外れてしまうことがある。関心領域310から外れた顔画像320は、例えば、顔が半分しか写っていないこともあるため、学習用の画像に用いられることは望ましくない。そこで、本実施形態では、顔画像320と関心領域310との重複率に基づいて、顔画像320を記憶させるようにしている。
【0085】
具体的に説明すると、記憶制御部204は、顔画像320が示す領域と、関心領域310とが重複する度合い(重複率)に基づいて、当該関心領域310に対応する牛IDごとに顔画像320を記憶させる。重複率は、関心領域310における顔画像320が示す領域の比率として表すことができる。例えば、重複率が閾値未満の顔画像320は、隣の牛Buに設定された関心領域310に重なっている可能性がある。
【0086】
一例を挙げると、
図19の牛Bu1の顔が隣の牛Bu2の前に移動したことにより、牛Bu1の顔画像320aが、関心領域310aと関心領域310bとから抽出されたとする。この場合、関心領域310aから抽出された牛Bu1の顔画像320aは、関心領域310aにおける重複率として、低い値が算出される。また、関心領域310bから抽出された牛Bu1の顔画像320aについても、関心領域310bにおける重複率として、低い値が算出される。
【0087】
このため、本実施形態において、重複率が閾値未満の場合、記憶制御部204は、当該顔画像320をフォルダ330に記憶させないようにする。一方で、重複率が閾値以上の場合、記憶制御部204は、当該顔画像320を、対応する牛IDのフォルダ330に記憶させるようにする。
【0088】
(関心領域310の設定について)
図19では、各牛Buは、それぞれ関心領域310の中央付近で餌を食べている様子を示している。ただし、牛Buは、必ずしも、撮像領域302における関心領域310の中央に位置して、餌を食べるとは限らない。このため、本実施形態では、牛Buの頭部の移動範囲に応じて関心領域310を設定するようにしている。
【0089】
具体的に説明すると、検出部205は、入力部201に入力された撮像情報300に含まれる複数のフレーム画像のそれぞれについて、撮像領域302のうち牛Buの顔の領域を検出する。検出部205は、物体検出機能により顔を検出する。顔の領域は、例えば、顔画像320が示す領域と同等の領域である。ただし、顔の領域は、顔画像320が示す領域よりも小さい領域としてもよいし、大きい領域としてもよい。
【0090】
設定部202は、検出部205によって検出された複数のフレーム画像における顔の領域に基づいて、関心領域310を設定する。具体的には、設定部202は、検出部205によって検出された同一の個体に係る複数の顔領域の中心を含む所定領域を関心領域310に設定する。個体の同定は、例えば、同じフレーム画像に写る複数の顔領域をそれぞれ別の個体とみなし、連続するフレーム画像において最も距離が近い顔領域同士を、同一の個体とみなすことによって行われる。また、個体の同定は、単に相対的な出現位置(左から2番目など)を特定することによって行われてもよい。
【0091】
関心領域310は、予め大きさや形(長方形)が予め定められていてもよい。この場合、設定部202は、検出部205によって検出された顔領域の位置を基準にして、当該長方形の配置位置を決定することにより、関心領域310を設定する。また、関心領域310を設定する際に、隣り合う関心領域310との間には間隙を設けることが望ましい。これは、各牛Buが隣の牛Buの関心領域310に入りにくくするためである。
【0092】
なお、最初に顔領域の位置を基準にして当該長方形を配置して関心領域310を設定したとすると、たまたま隣り合う牛Buの距離が近い場合には、隣り合う関心領域310同士が重なり合ってしまうおそれもある。このため、最初の数十秒程度で各牛Buの顔領域の平均的な位置を検出するようにし、当該位置を基準にして関心領域310を設定してもよい。また、設定部202は、当該長方形を縮小したり、横方向の長さを短くしたりして、隣り合う関心領域310同士が重なり合わないように、関心領域310を設定してもよい。
【0093】
(学習済みモデルの作成について)
学習処理部221は、牛IDを識別するための学習済みモデル(判別モデル)を作成する。具体的に説明すると、学習処理部221は、学習用データセットを用いて、学習済みモデルを作成させる。学習用データセットは、記憶制御部204によって記憶された顔画像320を入力サンプルとし、複数のクラスのうち当該顔画像320が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットである。学習済みモデルは、入力された顔画像320に対応して、当該顔画像320が属するクラスの事後確率を示すベクトルを出力する学習済みモデルである。クラスの数は、記憶部210のフォルダの数である。
【0094】
(学習処理部221の構成および分類モデルM0の構成)
ここで、
図20を用いて、学習処理部221について具体的に説明する。
図20は、学習処理部221の構成および分類モデルM0の構成を示す説明図である。
図20(A)は、学習処理部221の構成を示す。学習処理部221は、分類モデル記憶部11と、データセット取得部12と、学習部13と、出力部14との各機能部を備える。
【0095】
分類モデル記憶部11は、畳み込みニューラルネットワークによって構成された分類モデルM0を記憶する。分類モデルM0は、
図20(B)に示すように、入力部M01、特徴量算出部M02、分類部M03、出力部M04を備える。入力部M01は、入力された顔画像320をベクトルとして特徴量算出部M02に出力する。入力部M01は、ニューラルネットワークの入力層をなす。
【0096】
特徴量算出部M02及び分類部M03は、ニューラルネットワークの中間層をなす。出力部M04は、ニューラルネットワークの出力層をなす。特徴量算出部M02は、入力部M01から入力されたベクトルを、低次元の特徴ベクトルに変換し、分類部M03に出力する。分類部M03は、特徴量算出部M02から入力された特徴ベクトルから、当該特徴ベクトルが表す牛IDの事後確率を示すP次元のベクトルに変換する。Pは、推定すべき牛IDの数である。
【0097】
データセット取得部12は、入力サンプルである顔画像320と、出力サンプルである牛IDラベルとを関連付けた学習用データセットを取得する。牛IDラベルは、データセットにおける牛IDの数をPとした場合に、P次元のワンホットベクトルによって表される。
【0098】
学習部13は、データセット取得部12が取得した学習用データセットを用いて、顔画像320が入力されると、当該顔画像320に該当する牛IDの事後確率を示すP次元のベクトルを出力するように、分類モデルM0のパラメータを学習させる。
【0099】
次に、学習方法について、具体的に説明する。データセット取得部12は、予め用意されたデータセットを取得する。そして、学習部13は、取得したデータセットを用いて、分類モデル記憶部11が記憶する分類モデルM0のパラメータを学習させる。このとき、学習部13は、分類モデルM0の計算結果を用いて損失関数を最小化するように、勾配降下法により各パラメータを更新する。
【0100】
なお、学習部13は、分類モデルM0のうち特徴量算出部M02および分類部M03のパラメータを更新する。例えば、損失関数は、分類モデルM0の出力値とデータセットの出力サンプルとのクロスエントロピー誤差を表す。
【0101】
学習部13は、損失関数の評価値が所定の閾値を下回った場合、または所定回数だけ学習処理を繰り返した場合に、学習処理を終了する。学習部13による学習処理が終了すると、出力部14は、学習部13によって学習された分類モデルM0(学習済みモデル)を識別部160へ出力する。
【0102】
(識別情報の付与について)
ここで、学習が進んでいない段階では、学習済みモデルで学習されていない牛Buと学習された牛Buとが混在することがある。このとき、学習された牛Buが餌を食べ終わって、学習されていない牛Buと入れ替わったときに、この2つの牛Buの顔画像が同じフォルダに記憶されないようにする必要がある。これについて具体的に説明すると、識別部160は、抽出部203によって抽出された顔画像320を学習済みモデルに入力することで牛IDを識別する。識別部160によって牛IDが識別されない場合(確率が低い場合)であり且つ当該牛Buについて牛IDが付与されたフォルダ330がある場合、記憶制御部204は、抽出された顔画像320を、当該牛IDに対応するフォルダ330に記憶させる。
【0103】
また、新たに給餌場10に入った直後の牛Buには、牛ID(フォルダID)が割り当てられていないことになる。このため、新たに給餌場10に入ってきた牛Buについて、牛IDを付与してフォルダ330を作成する必要がある。これについて具体的に説明すると、新たに給餌場10に入った直後の牛Buがいる場合、具体的には、識別部160によって牛IDが識別されない場合(学習されていない場合)であり且つ当該牛Buについて牛IDが付与されたフォルダ330がない場合、記憶制御部204は、当該関心領域310に対応する牛IDを新たに付与して、フォルダ330を生成する。
【0104】
また、学習済みモデルで学習された牛Buの場合、識別部160によって牛IDが識別されることになる。この場合、記憶制御部204は、抽出部203によって抽出された顔画像320を、当該牛IDに対応するフォルダ330に記憶させる。この場合、学習処理部221は、フォルダ330に記憶された当該顔画像320を用いて学習済みモデルを更新することにより、学習精度を向上させることができる。ただし、記憶制御部204は、抽出された顔画像320を記憶部210に記憶させないようにしてもよい。
【0105】
このように、記憶制御部204は、既知の家畜の顔画像320が入力されると既知の家畜の牛IDとその確度を出力する判別モデル(例えば、学習処理部に221によって作成された学習済みモデル)に、抽出部203によって抽出された顔画像320を入力する。そして、当該確度が所定値以上である場合、記憶制御部204は、判別された牛IDに顔画像320を分類する。一方で、当該確度が所定値未満である場合、記憶制御部204は、関心領域310に対応する牛IDに顔画像320を分類する。なお、判別モデルは、学習処理部に221によって作成された学習済みモデルに限らず、他の装置によって作成された学習済みモデルとしてもよい。
【0106】
(牛Buの識別について)
識別部160は、学習処理部221によって作成された学習済みモデルを用いることによって、給餌場10で餌を食べる牛Buの牛IDをリアルタイムに識別することが可能である。具体的に説明すると、撮像情報入力部231は、撮像装置100から、牛Buを前方から撮像した撮像情報を入力する。顔画像抽出部232は、撮像情報に基づいて、牛Buの顔画像320を抽出する。識別部160は、学習装置220によって学習された学習済みモデルに、顔画像抽出部232によって抽出されたリアルタイムの顔画像320を入力することで、牛IDを識別する。より具体的には、識別部160は、学習済みモデルに入力した顔画像320について牛IDごとの推定値を導出し、推定値の高い牛IDを選択(識別)する。
【0107】
出力部234は、識別部160によって識別された結果を示す牛IDを出力する。出力部234は、識別部160によって識別された牛IDと、顔画像320とを出力する。出力部234は、牛IDと牛Buの顔画像320(映像)とを対応付けて推定結果1400(
図14)として出力する。なお、出力部234による出力態様は、表示による出力態様に限らず、音声による出力態様や、外部の装置への送信による出力態様を含んでもよい。外部の装置に送信する場合、外部の装置が、当該牛IDや顔画像320を表示してもよい。
【0108】
識別部160は、フレーム画像ごとに、顔画像抽出部232によって顔画像320が抽出される牛IDを識別する。出力部234は、フレーム画像ごとに、識別部160によって牛IDが識別される牛IDを出力する。また、出力部234は、複数のフレーム画像について、識別部160によって識別された牛IDのうち、最も多く識別された牛IDを最終結果として出力する。具体的には、出力部234は、所定時間内に最も多く識別された牛IDを最終結果として出力する。所定時間は、牛Buがその場に留まって餌を食べる時間内(例えば5分以内)であればよい。本実施形態において、所定時間は、例えば、3分である。
【0109】
なお、本実施形態において、識別部160は、学習装置220によって作成された学習済みモデルを用いて、顔画像320の牛IDを識別するようにしたが、これに限らない。例えば、識別部160は、各フォルダ330に対応する顔画像320の特徴量を比較する比較用のデータを用いて、牛IDを識別するようにしてもよい。具体的に説明すると、不図示のデータベースに、各牛Buについて、牛IDと、顔画像320から抽出された比較用の特徴量とを対応付けて記憶しておく。識別部160は、顔画像抽出部232によって抽出されたリアルタイムの顔画像320から特徴量を計算し、当該特徴量と最も類似度が高い特徴量に対応する牛IDを特定(識別)するようにしてもよい。
【0110】
なお、本実施形態において、記憶制御装置200と、学習装置220とは、推定装置120に含まれるが、これに限らない。例えば、推定装置120と、記憶制御装置200と、学習装置220とは、それぞれ別々の装置であってもよい。また、推定装置120と、学習装置220とを別々の装置とし、学習装置220に記憶制御装置200が含まれるようにしてもよいし、推定装置120に記憶制御装置200が含まれるようにしてもよい。
【0111】
また、記憶部210は、記憶制御装置200に具備されることに限らず、外部のサーバなど外部の装置に具備されていてもよい。また、入力部201と、撮像情報入力部231とは、別々の機能部とすることに限らず、一の機能部としてもよい。同様に、抽出部203と、顔画像抽出部232とについても、別々の機能部とすることに限らず、一の機能部としてもよい。
【0112】
なお、
図18に示した各機能部や、
図20に示した各機能部は、CPU121によって実現される。すなわち、CPU121がメモリ122に記憶されている学習プログラムおよび家畜識別プログラム等の各種プログラムを実行することにより、各機能部を実現する。
【0113】
(推定装置120が行う顔画像320の記憶制御処理の一例)
図21は、推定装置120が行う顔画像320の記憶制御処理の一例を示すフローチャートである。
図21において、推定装置120は、操作部123(
図5)が学習開始を示す所定の操作を受け付けることにより、学習を開始するか否かを判断する(ステップS601)。推定装置120は、学習の開始となるまで待機し(ステップS601:NO)、学習の開始になると(ステップS601:YES)、撮像装置100によって撮像された撮像情報300(一のフレーム画像301)を入力する(ステップS602)。
【0114】
そして、推定装置120は、関心領域310を設定済みであるか否かを判断する(ステップS603)。関心領域310を設定済みである場合(ステップS603:YES)、推定装置120は、ステップS605に進む。関心領域310を設定済みではない場合(ステップS603:NO)、推定装置120は、牛Buの顔の領域を検出し、当該検出結果に基づいて、撮像領域302のうち、複数の関心領域310(310a~310d)を設定する(ステップS604)。
【0115】
そして、推定装置120は、複数の関心領域310のうち、一の関心領域310を特定する(ステップS605)。次に、推定装置120は、特定した一の関心領域310から顔画像320を抽出する(ステップS606)。そして、推定装置120は、抽出した顔画像320の領域と、関心領域310とに基づいて、重複率を算出する(ステップS607)。
【0116】
次に、推定装置120は、重複率が閾値以上であるか否かを判断する(ステップS608)。重複率が閾値未満である場合(ステップS608:NO)、推定装置120は、ステップS614に進む。重複率が閾値以上である場合(ステップS608:YES)、推定装置120は、抽出した顔画像320を学習済みモデルに入力する(ステップS609)。
【0117】
推定装置120は、学習済みモデルに顔画像320を入力した結果、牛IDを導出したか否かを判断する(ステップS610)。具体的には、推定装置120は、学習済みモデルの出力ベクトルのうち、最も値が高い要素が示す確率が閾値以上である場合に、当該要素に対応する牛IDが導出されたと判定する。一方、推定装置120は、学習済みモデルの出力ベクトルのうち、最も値が高い要素が示す確率が閾値未満である場合に、牛IDが導出されなかったと判定する。牛IDを導出した場合(ステップS610:YES)、すなわち、牛IDを識別した場合、推定装置120は、ステップS613に進む。なお、牛IDを導出した場合、牛IDをディスプレイ125に表示してもよい。一方、牛IDを導出しない場合(ステップS610:NO)、推定装置120は、特定した一の関心領域310に対応する牛IDが付されているか否かを判断する(ステップS611)。
【0118】
当該一の関心領域310に対応する牛IDが付されている場合(ステップS611:YES)、推定装置120は、ステップS613に進む。一方、当該関心領域310に対応する牛IDが付されていない場合(ステップS611:NO)、推定装置120は、当該関心領域310に対応する新たな牛IDを付与し、すなわち、新たなフォルダIDを付与したフォルダ330を生成する(ステップS612)。
【0119】
次に、推定装置120は、当該一の関心領域310に対応するフォルダ330に顔画像320を記憶する(ステップS613)。そして、推定装置120は、対象のフレーム画像301において、全ての関心領域310を特定したか否かを判断する(ステップS614)。全ての関心領域310を特定していない場合(ステップS614:NO)、推定装置120は、ステップS605に戻り、特定していない他の関心領域310について、顔画像320の抽出や記憶等を行う。
【0120】
一方、全ての関心領域310を特定した場合(ステップS614:YES)、推定装置120は、学習済みモデルを作成することが可能な所定数の顔画像320を得ることが可能な所定時間(例えば5分)が経過したか否かを判断する(ステップS615)。所定時間が経過していない場合(ステップS615:NO)、推定装置120は、ステップS602に戻り、次のフレーム画像301を入力する。
【0121】
一方、所定時間が経過した場合(ステップS615:YES)、推定装置120は、フォルダ330ごとに記憶した顔画像320を用いて、牛IDを求める学習済みモデルを作成する(ステップS616)。既に学習済みモデルが作成されている場合は、推定装置120は、学習済みモデルを上書きする。なお、ステップS615に示した、学習開始のトリガとなる所定時間は、任意に設定変更することが可能である。また、当該トリガは、所定時間とすることに限らず、所定フレーム数としてもよいし、記憶した顔画像320の枚数としてもよい。
【0122】
ステップS616における学習済みモデルの作成を終えると、推定装置120は、学習済みモデルの対象の牛IDに対応する関心領域310について、当該牛IDとの対応付けを解除する(ステップS617)。次に、推定装置120は、操作部123(
図4参照)が学習終了を示す所定の操作を受け付けることにより、学習を終了するか否かを判断する(ステップS618)。
【0123】
学習を終了しない場合(ステップS618:NO)、推定装置120は、ステップS602に戻り、次のフレーム画像301を入力する。一方、学習を終了する場合(ステップS618:YES)、推定装置120は、一連の処理を終了する。
【0124】
上述した処理により、推定装置120は、関心領域310から抽出した顔画像320を、牛IDごと(関心領域310ごと)にフォルダ330に記憶させることができる。また、推定装置120は、各フォルダ330の顔画像320を入力サンプルとした学習済みモデルを作成することができる。また、上述した処理を繰り返し実行していくことにより、学習済みモデルによって識別可能な牛Buの数を順次増加させることができる。
【0125】
(摂食時間推定システム1の作用効果)
以上説明したように、本実施形態において、摂食時間推定システム1(推定装置120)は、牛Buを前方から撮像した撮像データに基づいて、牛Buの頭部位置(バウンディングボックス600:
図6)を検出し、撮像データが示す画像に摂食基準線900(
図9)を設定する。そして、摂食時間推定システム1は、検出した頭部位置が示す座標と摂食基準線900が示す座標とに基づいて、牛Buが摂食しているか否かを判別し、当該判別結果に基づいて、牛Buの摂食時間を推定する。これにより、牛Buにセンサ等を付さないため、家畜にストレスを与えずに、簡単かつ迅速に摂食時間を推定することができる。したがって、家畜の品質を向上させることができる。また、牛Buの病気や運動障害の早期発見を支援できるとともに、健康管理に係る畜産農家の作業負荷を軽減することができる。したがって、本実施形態によれば、牛Buの健康管理を効率よく行うことができる。
【0126】
また、本実施形態において、給餌場10には、牛Buの摂食時における頭部の位置よりも上方に位置する下端延設部20aを有する柵20が配置される。そして、摂食時間推定システム1は、撮像データが示す画像から得た検出直線800(
図8)に基づいて、下端延設部20aに摂食基準線900(
図9)を設定する。これにより、摂食基準線900を簡単に(自動で)設定することができる。また、下端延設部20aを基準にして摂食の有無を判別することができるため、摂食時間の推定精度を向上させることができる。
【0127】
また、本実施形態において、柵20は、牛Buの頭部の上方への移動を規制する上端延設部20bを有する。そして、摂食時間推定システム1は、頭部位置の最大高さを検出し、撮像データが示す領域から、検出した最大高さが示す座標よりも上方の領域を除いた関心領域700(
図7)を設定し、関心領域700の中から直線を検出する。これにより、撮像データが示す入力画像500(
図5)から、上端延設部20bを削除することができるため、直線検出部155によって上端延設部20bに対応する直線を検出しにくくすることができる。すなわち、直線検出部155によって下端延設部20aに対応する直線を検出しやすくすることができる。したがって、摂食基準線900を下側延設部20aに精度よく設定することができ、よって、摂食時間の推定精度を向上させることができる。
【0128】
また、本実施形態において、摂食時間推定システム1は、撮像データが示す画像に、複数の家畜にそれぞれ対応する複数の分割領域1000(
図10)を設定し、各分割領域1000について、摂食の有無を判別して家畜の摂食時間を推定する。これにより、分割領域1000内の各牛Buについて、摂食の有無を効率よく判別することができ、よって、各牛Buの摂食時間を効率よく推定することができる。また、仮に、当所に個体識別がされていなくても、別途取得した各牛IDと各摂食時間とを対応付けることにより、各牛Buの摂食時間を効率よく得ることができる。なお、別途、牛ID取得するとは、例えば、オペレータから各分割領域1000内の牛Buに対応する牛IDを受け付けることや、学習済みモデルが未生成の場合には摂食時間の推定中に生成した学習済みモデルによって得られることとしてもよい。
【0129】
また、本実施形態において、摂食時間推定システム1は、牛Buを識別し、識別した牛IDと摂食時間とを対応付けた推定結果を出力する。これにより、牛Buごとの摂食時間をオペレータに提示することができる。したがって、オペレータは、牛Buごとの摂食時間を容易に把握することができる。
【0130】
(家畜識別システム1800の作用効果)
また、本実施形態に係る家畜識別システム1800は、牛Buを前方から撮像した撮像情報に基づいて、関心領域310内の牛Buの顔画像320を抽出し、関心領域310に対応する牛IDごとに顔画像320を分類して記憶させる。これにより、給餌場10において餌を食べる牛Buの顔画像320を簡単かつ精度よく得ることができる。このため、顔画像320に基づく牛Buの識別を行うことができる。したがって、牛Buの体の一部に通信機を装着させたり、農場全体に中継器を設置したりしなくても、簡単な構成で、牛Buを簡単に識別することが可能になる。これにより、牛Buの識別にかかる酪農家の負荷を軽減することができる。
【0131】
本実施形態において、家畜識別システム1800(推定装置120)は、顔画像320が示す領域と関心領域310とが重複する度合いに基づいて、当該関心領域310に対応する牛IDごとに顔画像320を記憶させる。これにより、牛Buの顔が写っている領域が小さい顔画像320については、すなわち、関心領域310から外れているような精度の低い顔画像320については、記憶させないようにすることができる。このため、例えば、精度の低い顔画像320を学習済みモデルの作成に用いないようにすることができる。したがって、牛IDの識別に係る精度を向上させることができる。
【0132】
また、本実施形態において、推定装置120は、撮像情報300に基づいて、撮像領域302のうち牛Buの顔の領域を検出し、検出した顔の領域に基づいて、関心領域310を設定する。これにより、牛Buの位置に応じた好適な関心領域310を設定することができる。すなわち、撮像領域302内のいずれの位置で牛Buが餌を食べたとしても、顔画像320を好適に得ることができる。
【0133】
また、本実施形態において、推定装置120は、判別モデルに抽出部203によって抽出された顔画像を入力し、確度が所定値以上である場合に、判別され牛IDに顔画像320を分類し、当該確度が所定値未満である場合に、関心領域310に対応する牛IDに顔画像320を分類する。これにより、新たに給餌場10に入った直後の牛Bu(牛IDが付与されていない牛Bu)に対しても、牛IDを付したフォルダ330を作成して、顔画像320を適切に分類することができる。
【0134】
また、本実施形態において、推定装置120は、牛IDごとに記憶した顔画像320を入力サンプルとし、複数のクラスのうち当該顔画像320が属するクラスを示すワンホットベクトルを出力サンプルとする学習用データセットを用いて、入力された顔画像320に対応して、当該顔画像320が属する前記クラスの事後確率を示すベクトルを出力するように学習済みモデル(判別モデル)を作成する。これにより、給餌場10で餌を食べる牛Buの顔画像320を用いて、数分程度で学習済みモデルを自動で作成することができる。したがって、簡単かつ迅速に学習済みモデルを作成することができるとともに、牛IDの識別を高精度に行うことができる。
【0135】
また、本実施形態において、推定装置120は、判別モデルを、学習装置220が作成した学習済みモデルとする。これにより、新たに給餌場10に入った直後の牛Bu(牛IDが付与されていない牛Bu)に対しても、牛IDを付したフォルダ330を作成して、学習済みモデルを作成することができる。したがって、酪農場内の全ての牛Buについて、学習済みモデルを簡単かつ迅速に作成することができる。
【0136】
また、本実施形態において、推定装置120は、学習装置220によって学習された学習済みモデルに、顔画像320を入力することで、牛IDを識別し、識別結果を出力する。これにより、給餌場10で餌を食べる牛Buを簡単かつ精度よく識別することができる。したがって、簡単な構成で、牛Buを好適に識別することが可能になる。
【0137】
また、本実施形態において、推定装置120は、所定数の連続するフレーム画像の撮像情報300について、それぞれ顔画像320を抽出して牛IDを識別して、出力する。これにより、撮像情報300(フレーム画像)が入力される度に、リアルタイムの識別結果をディスプレイ125に表示することができる。したがって、操作者に識別結果を迅速に提示することができる。
【0138】
また、本実施形態において、推定装置120は、所定数のフレーム画像において識別した牛IDのうち、最も多く識別した牛IDを最終結果として出力する。これにより、牛Buの顔の向き等によっては、識別結果にバラツキが生じる可能性があるものの、このようなバラツキが生じたとしても、所定時間内に最も多く識別した牛IDを最終結果とすることができる。したがって、より高精度に牛IDの識別を行うことができる。
【0139】
(実施形態の変形例)
以下に、実施形態の変形例について説明する。なお、以下の変形例では、上述した実施形態で説明した内容については、適宜説明を省略する。また、以下の変形例および上述した実施形態は、それぞれ組み合わせることも可能である。
【0140】
(変形例)
上述した実施形態では、給餌場10に柵20が配置され、下端に延設される下端延設部20aに摂食基準線900を設定する例について説明した。変形例では、このような構成に代えて又は加えて、給餌場10に給餌ボックスが配置され、さらに、給餌ボックスの上辺部分に摂食基準線900を設定する例について説明する。
【0141】
変形例に係る摂食時間推定システム1において、給餌場10には、備品としての柵20に代えて又は加えて、箱形状の給餌ボックスが配置される。給餌ボックスは、底板と、当該底板に対して立ち上がる側板(例えば4つの側板)とを備える。給餌ボックスは、各板に囲まれた収容領域を備え、収容領域に餌を収容する。牛Buは、給餌ボックスに頭部を入れ、餌を摂食する。給餌ボックスは、横方向に延びる直線部分として、側板の上辺部分を有する。側板の上辺部分は、牛Buの摂食時に、頭部の位置よりも上方に位置する。
【0142】
変形例において、直線検出部155は、給餌ボックスを形成する側板の上辺部分について多くの直線を検出するものとする。基準線設定部156は、直線検出部155によって検出された直線に基づいて、側板の上辺部分の座標(Y座標)を摂食基準線900として設定する。なお、変形例においても、摂食基準線900は、オペレータによる手動設定が可能であってもよい。すなわち、基準線設定部156は、オペレータから操作入力された直線(Y座標)に基づいて、摂食基準線900を設定してもよい。
【0143】
このようにして、摂食基準線900を設定することにより、判別部159は、牛Buの頭部を示すバウンディングボックス600(
図6)の下辺のY座標が摂食基準線900(側板の上辺部分)を下回った場合に、当該牛Buが摂食したことを判別することができる。
【0144】
以上のように、変形例に係る摂食時間推定システム1において、給餌場10には、牛Buの摂食時における頭部位置よりも上方に位置する側板(の上辺)を有する給餌ボックスが配置される。そして、摂食時間推定システム1は、側板の上辺に摂食基準線900(
図9)を設定する。これにより、給餌ボックスを用いる場合でも、摂食基準線900を容易に(自動で)設定することができる。また、側板の上辺を基準にして摂食の有無を判別することができるため、摂食時間の推定精度を向上させることができる。よって、変形例によれば、牛Buの健康管理を効率よく行うことができる。
【0145】
なお、摂食時間推定システム1、家畜識別システム1800、推定装置120、記憶制御装置200、および学習装置220が備える各機能部は、CPU121などのハードウェアプロセッサがプログラム(ソフトウェア)を実行することにより実現されることに限らない。例えば、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)などのハードウェア(回路部;circuitryを含む)によって実現されてもよいし、ソフトウェアとハードウェアの協働によって実現されてもよい。プログラムは、予めHDD(Hard Disk Drive)やフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体(非一過性の記憶媒体)に格納されており、記憶媒体がドライブ装置に装着されることでインストールされてもよい。
【0146】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【0147】
なお、以上に説明した摂食時間推定システム1、家畜識別システム1800、推定装置120、記憶制御装置200、および学習装置220を実現するためのプログラムを、コンピュータ読み取り可能な記憶媒体に記録し、そのプログラムをコンピュータシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記憶媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記憶媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【符号の説明】
【0148】
1…摂食時間推定システム、100…撮像装置、120…推定装置、121…CPU、122…メモリ、123…操作部、124…マイク、125…ディスプレイ、126…スピーカ、127…通信I/F、151…データ入力部、152…位置検出部、153…高さ検出部、154…関心領域設定部、155…直線検出部、156…基準線設定部、157…分割領域設定部、158…行列生成部、159…判別部、160…識別部、161…推定部、200…記憶制御装置、201…入力部、202…設定部、203…抽出部、204…記憶制御部、205…検出部、210…記憶部、220…学習装置、221…学習処理部、231…撮像情報入力部、232…顔画像抽出部、234…出力部、1800…家畜識別システム、