(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023014766
(43)【公開日】2023-01-31
(54)【発明の名称】体重推定装置、体向き判定装置、体部位画像生成装置、機械学習装置、推論装置、体重推定方法、及び、体重推定プログラム
(51)【国際特許分類】
G06T 7/00 20170101AFI20230124BHJP
【FI】
G06T7/00 350B
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021118915
(22)【出願日】2021-07-19
(71)【出願人】
【識別番号】590002389
【氏名又は名称】静岡県
(74)【代理人】
【識別番号】100214248
【弁理士】
【氏名又は名称】青山 純
(74)【代理人】
【識別番号】100214260
【弁理士】
【氏名又は名称】相羽 昌孝
(72)【発明者】
【氏名】瀬戸 隆弘
(72)【発明者】
【氏名】大村 学海
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA02
5L096AA03
5L096AA06
5L096AA09
5L096BA08
5L096BA18
5L096CA02
5L096DA02
5L096HA09
5L096HA11
5L096KA04
(57)【要約】
【課題】簡便かつ安全に牛の体重を推定することを可能とする体重推定装置を提供する。
【解決手段】体重推定装置10は、牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部300と、画像を第1の学習モデル11Aに入力することで、牛の体向きを判定する体向き判定部301と、牛の体向きが所定の体向きにて撮像された画像を、第2の学習モデル11Bに入力することで、体部位画像を生成する体部位画像生成部302と、体部位画像を第3の学習モデル11Cに入力することで、牛の体重を推定する体重推定部303とを備える。
【選択図】
図10
【特許請求の範囲】
【請求項1】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定部と、
前記牛の前記体向きが所定の体向きにて撮像された前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成部と、
前記体部位画像を、前記体部位画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定部とを備える、
体重推定装置。
【請求項2】
前記所定の体向きは、
前記画像が前記牛の左後方又は左側方から撮像されることで、前記画像に前記牛の胴体の左側が撮像される体向きである、
請求項1に記載の体重推定装置。
【請求項3】
前記所定の体部位は、
前記牛の胴体、又は、前記牛の胴体及び四肢である、
請求項1又は請求項2に記載の体重推定装置。
【請求項4】
前記画像取得部は、
前記深度画像を取得し、
前記体向き判定部は、
前記深度画像を前記第1の学習モデルに入力することで、前記深度画像に撮像された前記牛の前記体向きを判定し、
前記体部位画像生成部は、
前記牛の前記体向きが所定の体向きにて撮像された前記深度画像を前記第2の学習モデルに入力することで、前記深度画像から前記除去領域を除去した前記深度画像を前記体部位画像として生成し、
前記体重推定部は、
前記体部位画像を前記第3の学習モデルに入力することで、前記深度画像に撮像された前記牛の前記体重を推定する、
請求項1乃至請求項3のいずれか一項に記載の体重推定装置。
【請求項5】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成部と、
前記体部位画像を、前記体部位画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定部とを備える、
体重推定装置。
【請求項6】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定部と、
前記牛の前記体向きが所定の体向きにて撮像された前記画像を、前記画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定部とを備える、
体重推定装置。
【請求項7】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定部とを備える、
体重推定装置。
【請求項8】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定部とを備える、
体向き判定装置。
【請求項9】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成部とを備える、
体部位画像生成装置。
【請求項10】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像に基づいて前記牛の体重を推定するための第3の学習モデルを生成する機械学習装置であって、
前記画像に対応する第3の学習用画像と、当該第3の学習用画像に撮像された前記牛の前記体重とで構成される第3の学習用データを複数組記憶する学習用データ記憶部と、
前記第3の学習モデルに前記第3の学習用データを複数組入力することで、前記第3の学習用画像と前記体重との相関関係を前記第3の学習モデルに機械学習させる機械学習部と、
前記機械学習部により機械学習させた前記第3の学習モデルを記憶する学習済みモデル記憶部とを備える、
機械学習装置。
【請求項11】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像に基づいて前記牛の体向きを判定するための第1の学習モデルを生成する機械学習装置であって、
前記画像に対応する第1の学習用画像と、当該第1の学習用画像に撮像された前記牛の前記体向きとで構成される第1の学習用データを複数組記憶する学習用データ記憶部と、
前記第1の学習モデルに前記第1の学習用データを複数組入力することで、前記第1の
学習用画像と前記体向きとの相関関係を前記第1の学習モデルに機械学習させる機械学習部と、
前記機械学習部により機械学習させた前記第1の学習モデルを記憶する学習済みモデル記憶部とを備える、
機械学習装置。
【請求項12】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像から前記牛の所定の体部位を含む体部位領域以外の除去領域を除去した前記画像を体部位画像として生成するための第2の学習モデルを生成する機械学習装置であって、
前記画像に対応する第2の学習用画像と、当該第2の学習用画像に撮像された前記牛の前記所定の体部位を含む前記体部位領域とで構成される第2の学習用データを複数組記憶する学習用データ記憶部と、
前記第2の学習モデルに前記第2の学習用データを複数組入力することで、前記第2の学習用画像と前記体部位領域との相関関係を前記第2の学習モデルに機械学習させる機械学習部と、
前記機械学習部により機械学習させた前記第2の学習モデルを記憶する学習済みモデル記憶部とを備える、
機械学習装置。
【請求項13】
メモリと、プロセッサとを備える推論装置であって、
前記プロセッサは、
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、
前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の体重を推論する推論処理とを実行する、
推論装置。
【請求項14】
メモリと、プロセッサとを備える推論装置であって、
前記プロセッサは、
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、
前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の体向きを推論する推論処理とを実行する、
推論装置。
【請求項15】
メモリと、プロセッサとを備える推論装置であって、
前記プロセッサは、
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、
前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の所定の体部位を含む体部位領域を推論する推論処理とを実行する、
推論装置。
【請求項16】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得工程と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定工程と、
前記牛の前記体向きが所定の体向きにて撮像された前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位
領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成工程と、
前記体部位画像を、前記体部位画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定工程とを備える、
体重推定方法。
【請求項17】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得工程と、
前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成工程と、
前記体部位画像を、前記体部位画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定工程とを備える、
体重推定方法。
【請求項18】
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得工程と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定工程と、
前記牛の前記体向きが所定の体向きにて撮像された前記画像を、前記画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定工程とを備える、
体重推定方法。
【請求項19】
コンピュータを、請求項1乃至請求項7のいずれか一項に記載の体重推定装置が備える各部として機能させる、
体重推定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、体重推定装置、体向き判定装置、体部位画像生成装置、機械学習装置、推論装置、体重推定方法、及び、体重推定プログラムに関する。
【背景技術】
【0002】
従来、牛の体重を測定する手段として、各種の装置や器具が使用されている。例えば、特許文献1には、牛が一対の柵の間に設けられた秤量板の上を歩行通過するときに、その牛の体重を測定する体重測定装置が開示されている。また、特許文献2には、牛の胸囲の目盛りに対応する位置に、牛の推定体重の目盛りが付された巻き尺が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平5-18806号公報
【特許文献2】特開2002-262714号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示された体重測定装置は、高価で大掛かりな装置であるだけでなく、牛が柵の間を通過するように誘導する必要があるため、作業者の作業負担が大きく、測定作業にも時間を要するものであった。また、特許文献2に開示された巻き尺を使用して牛の体重を推定するには、作業者が牛と接触して胸囲を測定する必要があるため、牛に挟まれる等の事故が発生する危険性があった。
【0005】
本発明は、上述した課題に鑑みてなされたものであって、簡便かつ安全に牛の体重を推定することを可能とする体重推定装置、体向き判定装置、体部位画像生成装置、機械学習装置、推論装置、体重推定方法、及び、体重推定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明の一態様に係る体重推定装置は、
牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得部と、
前記画像を、前記画像に対応する第1の学習用画像と当該第1の学習用画像に撮像された前記牛の体向きとの相関関係を機械学習させた第1の学習モデルに入力することで、前記画像に撮像された前記牛の前記体向きを判定する体向き判定部と、
前記牛の前記体向きが所定の体向きにて撮像された前記画像を、前記画像に対応する第2の学習用画像と当該第2の学習用画像に撮像された前記牛の所定の体部位を含む体部位領域との相関関係を機械学習させた第2の学習モデルに入力することで、前記画像から前記体部位領域以外の除去領域を除去した前記画像を体部位画像として生成する体部位画像生成部と、
前記体部位画像を、前記体部位画像に対応する第3の学習用画像と当該第3の学習用画像に撮像された前記牛の体重との相関関係を機械学習させた第3の学習モデルに入力することで、前記画像に撮像された前記牛の前記体重を推定する体重推定部とを備える。
【発明の効果】
【0007】
本発明の一態様に係る体重推定装置によれば、牛が所定の体向きにて撮像された画像か
ら牛の体重が推定されるので、簡便かつ安全に牛の体重を推定することができる。
【0008】
上記以外の課題、構成及び効果は、後述する発明を実施するための形態にて明らかにされる。
【図面の簡単な説明】
【0009】
【
図1】第1の実施形態に係る牛管理システム1の一例を示す全体構成図である。
【
図2】牛管理データベース40の一例を示すデータ構成図である。
【
図3】コンピュータ900の一例を示すハードウエア構成図である。
【
図4】第1の実施形態に係る機械学習装置2の一例を示すブロック図である。
【
図5】第1の学習モデル11A及び第1の学習用データ12Aの一例を示す図である。
【
図6】第2の学習モデル11B及び第2の学習用データ12Bの一例を示す図である。
【
図7】第3の学習モデル11C及び第3の学習用データ12Cの一例を示す図である。
【
図8】第1の実施形態に係る機械学習装置2による機械学習方法の一例を示すフローチャートである。
【
図9】第1の実施形態に係る体重推定装置10として機能する端末装置3の一例を示すブロック図である。
【
図10】第1の実施形態に係る体重推定装置10の一例を示す機能説明図である。
【
図11】第1の実施形態に係る体重推定装置10による体重推定方法の一例を示すフローチャートである。
【
図12】撮像画面13の一例を示す画面構成図である。
【
図13】体重推定結果画面14の一例を示す画面構成図である。
【
図14】第2の実施形態に係る体重推定装置10aとして機能する端末装置3aの一例を示すブロック図である。
【
図15】第2の実施形態に係る体重推定装置10aの一例を示す機能説明図である。
【
図16】第3の実施形態に係る体重推定装置10bとして機能する端末装置3bの一例を示すブロック図である。
【
図17】第3の実施形態に係る体重推定装置10bの一例を示す機能説明図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明を実施するための実施形態について説明する。以下では、本発明の目的を達成するための説明に必要な範囲を模式的に示し、本発明の該当部分の説明に必要な範囲を主に説明することとし、説明を省略する箇所については公知技術によるものとする。
【0011】
(第1の実施形態)
図1は、第1の実施形態に係る牛管理システム1の一例を示す全体構成図である。牛管理システム1は、牛Cの体重を推定(測定)し、牛Cの生育状況や健康状態を管理するシステムである。
【0012】
牛管理システム1は、その主要な構成要素として、機械学習装置2と、端末装置3と、管理装置4とを備える。各装置2~4は、例えば、汎用又は専用のコンピュータ(後述の
図3参照)で構成されるとともに、有線又は無線のネットワーク5に接続されて、各種のデータを相互に送受信可能に構成される。なお、各装置2~4の数やネットワーク5への接続構成は、
図1の例に限られない。
【0013】
牛Cは、例えば、畜産施設にて飼育されている畜産牛である。なお、牛Cの数や品種は特に限定されない。
【0014】
機械学習装置2は、機械学習の学習フェーズの主体として動作し、端末装置3にて用いられる第1乃至第3の学習モデル11A~11Cを機械学習により生成する。機械学習装置2は、機械学習の手法として、例えば、教師あり学習を採用する。
【0015】
学習済みの第1乃至第3の学習モデル11A~11Cは、例えば、ネットワーク5や記録媒体等を介して端末装置3に提供される。その際、第1乃至第3の学習モデル11A~11Cは、端末装置3にて実行されるアプリの1つである体重推定プログラム100に組み込まれることで体重推定プログラム100と一体的なデータで提供されてもよいし、体重推定プログラム100により参照可能なデータとして、体重推定プログラム100とは別のデータで提供されてもよい。
【0016】
端末装置3は、例えば、畜産施設の作業者(施設管理者、飼育員等)により使用される。端末装置3は、作業者が所有する装置であって、例えば、スマートフォン、タブレット端末等の携帯型コンピュータで構成される。端末装置3は、各種の入力操作を受け付けるとともに、アプリやブラウザによる表示画面や音声を介して、各種の情報を出力する。また、端末装置3は、ネットワーク5を介して管理装置4との間で各種のデータを送受信する。
【0017】
端末装置3は、牛Cを撮像するためのカメラ35を備えるとともに、端末装置3にインストールされた体重推定プログラム100を実行することで、牛Cの体重を推定(測定)する体重推定装置10として機能する。体重推定装置10は、機械学習の推論フェーズの主体として動作し、カメラ35により牛Cが撮像された画像と、機械学習装置2により生成された第1乃至第3の学習モデル11A~11Cとに基づいて、牛Cの体重を推定する。
【0018】
カメラ35は、二次元画像、及び、深度画像の少なくとも一方を撮像可能な撮像装置で構成される。二次元画像は、被写体及びその周囲をカメラ35の光軸に直交する二次元平面に投影した画像であり、例えば、カラー画像、グレースケール画像等である。深度画像は、カメラ35の光軸方向に対する被写体及びその周囲の奥行きのデータを記録した画像であり、例えば、アクティブ方式及びパッシブ方式のいずれでもよく、グレースケール画像(明暗により遠近を表現する画像)、カラー画像(色により遠近を表現する画像)等である。カメラ35が、二次元画像及び深度画像の両方を撮像する場合には、両画像を撮像可能な範囲(画角)は、同程度であることが好ましい。
【0019】
本実施形態では、カメラ35は、二次元画像(カラー画像)、及び、深度画像(グレースケール画像)の両方を撮像可能なRGB-D(Red Green Blue Depth)カメラで構成されるものとして説明する。
【0020】
管理装置4は、牛Cの各種の情報を管理する牛管理データベース40を備える。管理装置4は、端末装置3から受信した情報に基づいて、牛管理データベース40の情報を編集(追加、変更、削除等)したり、牛管理データベース40に記憶された情報を端末装置3に送信したりする。
【0021】
図2は、牛管理データベース40の一例を示すデータ構成図である。牛管理データベース40は、牛情報テーブル400、及び、測定情報テーブル401から構成される。
【0022】
牛情報テーブル400は、牛IDにより特定される複数のレコードを有し、各レコードには、牛名、分娩日、及び、産次が登録される。測定情報テーブル401は、測定IDにより特定される複数のレコードを有し、各レコードには、牛ID、撮像日時、二次元画像、深度画像、及び、体重が登録される。
【0023】
牛管理データベース40では、測定情報テーブル401の各レコードが、牛IDにより牛情報テーブル400と関連付けられることで、端末装置3(体重推定装置10)により推定(測定)された牛Cの体重の測定結果(推定結果)が、牛C毎に管理される。そのため、牛管理データベース40に記憶された情報に基づいて、体重の推移や平均値等の分析情報が牛C毎に取得可能である。
【0024】
(コンピュータ900の構成)
図3は、コンピュータ900の一例を示すハードウエア構成図である。機械学習装置2、端末装置3、及び、管理装置4の各々は、汎用又は専用のコンピュータ900により構成される。
【0025】
コンピュータ900は、
図3に示すように、その主要な構成要素として、バス910、プロセッサ912、メモリ914、入力デバイス916、出力デバイス917、表示デバイス918、ストレージ装置920、通信I/F(インターフェース)部922、外部機器I/F部924、I/O(入出力)デバイスI/F部926、及び、メディア入出力部928を備える。なお、上記の構成要素は、コンピュータ900が使用される用途に応じて適宜省略されてもよい。
【0026】
プロセッサ912は、1つ又は複数の演算処理装置(CPU(Central Processing Unit)、MPU(Micro-processing unit)、DSP(digital signal processor)、GPU(Graphics Processing Unit)等)で構成され、コンピュータ900全体を統括する制御部として動作する。メモリ914は、各種のデータ及びプログラム930を記憶し、例えば、メインメモリとして機能する揮発性メモリ(DRAM、SRAM等)と、不揮発性メモリ(ROM)、フラッシュメモリ等とで構成される。
【0027】
入力デバイス916は、例えば、キーボード、マウス、テンキー、電子ペン等で構成され、入力部として機能する。出力デバイス917は、例えば、音(音声)出力装置、バイブレーション装置等で構成され、出力部として機能する。表示デバイス918は、例えば、液晶ディスプレイ、有機ELディスプレイ、電子ペーパー、プロジェクタ等で構成され、出力部として機能する。入力デバイス916及び表示デバイス918は、タッチパネルディスプレイのように、一体的に構成されていてもよい。ストレージ装置920は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等で構成され、記憶部として機能する。ストレージ装置920は、オペレーティングシステムやプログラム930の実行に必要な各種のデータを記憶する。
【0028】
通信I/F部922は、インターネットやイントラネット等のネットワーク940(
図1のネットワーク5と同じであってもよい)に有線又は無線により接続され、所定の通信規格に従って他のコンピュータとの間でデータの送受信を行う通信部として機能する。外部機器I/F部924は、カメラ、プリンタ、スキャナ、リーダライタ等の外部機器950に有線又は無線により接続され、所定の通信規格に従って外部機器950との間でデータの送受信を行う通信部として機能する。I/OデバイスI/F部926は、各種のセンサ、アクチュエータ等のI/Oデバイス960に接続され、I/Oデバイス960との間で、例えば、センサによる検出信号やアクチュエータへの制御信号等の各種の信号やデータの送受信を行う通信部として機能する。メディア入出力部928は、例えば、DVD(
Digital Versatile Disc)ドライブ、CD(Compact Disc)ドライブ等のドライブ装置で構成され、DVD、CD等のメディア(非一時的な記憶媒体)970に対してデータの読み書きを行う。
【0029】
上記構成を有するコンピュータ900において、プロセッサ912は、ストレージ装置920に記憶されたプログラム930をメモリ914に呼び出して実行し、バス910を介してコンピュータ900の各部を制御する。なお、プログラム930は、ストレージ装置920に代えて、メモリ914に記憶されていてもよい。プログラム930は、インストール可能なファイル形式又は実行可能なファイル形式でメディア970に記録され、メディア入出力部928を介してコンピュータ900に提供されてもよい。プログラム930は、通信I/F部922を介してネットワーク940経由でダウンロードすることによりコンピュータ900に提供されてもよい。また、コンピュータ900は、プロセッサ912がプログラム930を実行することで実現する各種の機能を、例えば、FPGA(field-programmable gate array)、ASIC(application specific integrated circuit)等のハードウエアで実現するものでもよい。
【0030】
コンピュータ900は、例えば、据置型コンピュータや携帯型コンピュータで構成され、任意の形態の電子機器である。コンピュータ900は、クライアント型コンピュータでもよいし、サーバ型コンピュータやクラウド型コンピュータでもよい。コンピュータ900は、機械学習装置2、端末装置3、及び、管理装置4以外の他の装置に適用されてもよい。
【0031】
(機械学習装置2)
図4は、第1の実施形態に係る機械学習装置2の一例を示すブロック図である。機械学習装置2は、制御部20、入力部21、出力部22、通信部23、学習用データ記憶部24、及び、学習済みモデル記憶部25を備える。
【0032】
制御部20は、機械学習プログラム(不図示)を実行することで、学習用データ取得部200、及び、第1乃至第3の機械学習部201A~201Cとして機能する。入力部21は、各種の入力操作を受け付けるとともに、出力部22は、表示画面や音声を介して各種の情報を出力することで、ユーザインターフェースとして機能する。通信部23は、ネットワーク5を介して外部装置(例えば、端末装置3、管理装置4等)と接続され、各種のデータを送受信する通信インターフェースとして機能する。
【0033】
学習用データ取得部200は、通信部23及びネットワーク5を介して外部装置から各種のデータを受信することで、第1乃至第3の学習用データ12A~12Cを取得する。また、学習用データ取得部200は、入力部21及び出力部22を介して操作者の入力操作を受け付けることで、第1乃至第3の学習用データ12A~12Cを取得する。
【0034】
学習用データ記憶部24は、学習用データ取得部200が取得した第1乃至第3の学習用データ12C~12Cを複数組記憶するデータベースである。第1乃至第3の学習用データ12C~12Cは、教師あり学習における訓練データ(トレーニングデータ)、検証データ及びテストデータとして用いられる。なお、学習用データ記憶部24を構成するデータベースの具体的な構成は適宜設計すればよい。
【0035】
第1乃至第3の機械学習部201A~201Cは、学習用データ記憶部24に記憶された第1乃至第3の学習用データ12A~12Cをそれぞれ用いて機械学習を実施することにより、第1乃至第3の学習モデル11A~11Cをそれぞれ生成する。
【0036】
学習済みモデル記憶部25は、第1乃至第3の機械学習部201A~201Cによりそれぞれ機械学習させた学習済みの第1乃至第3の学習モデル11A~11Cを記憶するデータベースである。学習済みモデル記憶部25に記憶された第1乃至第3の学習モデル11A~11Cは、ネットワーク5や記録媒体等を介して実システム(例えば、端末装置3)に提供される。なお、
図3では、学習用データ記憶部24と、学習済みモデル記憶部25とが別々の記憶部として示されているが、これらは単一の記憶部で構成されてもよい。
【0037】
図5は、第1の学習モデル11A及び第1の学習用データ12Aの一例を示す図である。第1の学習用データ12Aは、第1の学習用画像と、当該第1の学習用画像に撮像された牛Cの体向きとで構成される。
【0038】
第1の学習用画像は、カメラ35により牛Cが撮像された画像であって、二次元画像及び深度画像の少なくとも一方の画像に対応する。本実施形態では、第1の学習用画像は、二次元画像である場合について説明するが、深度画像であってもよい。
【0039】
牛Cの体向きは、教師あり学習における正解ラベルに対応する。牛Cの体向きは、牛Cが撮像されたときの体向きを表すものであり、全周囲(360度)を所定の数(4、8、16等)で分割したときの方位(4方位、8方位、16方位)による多クラスの分類で表されてもよいし、所定の体向きであるか否かの2クラスの分類で表されてもよい。
【0040】
例えば、牛Cの体向きが、
図5に示すように、8方位による8クラスの分類で表される場合には、牛の前方から撮像されることで、画像に牛Cの頭部側が正面に撮像される「前方」と、牛の左前方、左側方、左後方からそれぞれ撮像されることで、画像に牛Cの胴体の左側が撮像される「左前方」、「左側方」、「左後方」と、牛の右前方、右側方、右後方からそれぞれ撮像されることで、画像に牛Cの胴体の右側が撮像される「右前方」、「右側方」、「右後方」と、画像に牛Cの臀部側が正面に撮像される「後方」とで表される。また、牛Cの体向きが、2クラスの分類で表される場合には、画像が牛の左後方又は左側方から撮像されることで、画像に牛Cの胴体の左側が撮像される所定の体向き(「左後方」又は「左側方」)であるか否かで表される。
【0041】
学習用データ取得部200は、例えば、過去に牛Cが撮像されたときの画像(本実施形態では、二次元画像)を外部装置から第1の学習用画像として受信するとともに、その第1の学習用画像に撮像された牛Cの体向きを特定する入力操作を入力部21から受け付けて、それらを対応付けることで、第1の学習用データ12Aを取得する。
【0042】
第1の学習モデル11Aは、例えば、畳み込みニューラルネットワーク(CNN)の構造を採用したものであり、入力層110A、中間層111A、及び、出力層112Aを備える。各層の間には、各ニューロンをそれぞれ接続するシナプス(不図示)が張られており、各シナプスには、重みが対応付けられている。
【0043】
入力層110Aは、入力データとしての第1の学習用画像の画素数に対応する数のニューロンを有し、各ピクセルの画素値が各ニューロンにそれぞれ入力される。中間層111Aは、例えば、畳み込み層、プーリング層及び全結合層から構成され、第1の学習用画像から特徴量を抽出し、一次元配列の特徴ベクトルとして出力する。出力層112Aは、中間層111Aから出力された特徴ベクトルに基づいて、第1の学習用画像に撮像された牛Cの体向きを判定(推論)した判定結果を、出力データとして出力する。
図5の例では、出力層112Aは、「前方」、「左前方」、「左側方」、「左後方」、「右前方」、「右側方」、「右後方」及び「後方」からなる8クラスに対応する数のニューロンを有し、各ニューロンは、各クラスにそれぞれ分類されるときのスコア(信頼度)を、所定の範囲(例えば、0~1)の値で出力する。
【0044】
第1の機械学習部201Aは、第1の学習モデル11Aに第1の学習用データ12Aを複数組入力することで、第1の学習用画像と、当該第1の学習用画像に撮像された牛Cの体向きとの相関関係を第1の学習モデル11Aに機械学習させる。複数組の第1の学習用データ12Aは、各クラスに対応する様々な体向きで撮像された第1の学習用画像で構成される。
【0045】
具体的には、第1の機械学習部201Aは、第1の学習用データ12Aを構成する第1の学習用画像を入力データとして、入力層110Aに入力し、出力層112Aから判定結果として出力された牛Cの体向き(出力データ)と、当該第1の学習用データ12Aを構成する牛Cの体向き(正解ラベル)とを比較する誤差関数を用いて、各シナプスに対応付けられた重みを調整する。そして、第1の機械学習部201Aは、所定の学習終了条件が満たされたと判断した場合には、機械学習を終了し、そのときの各シナプスのそれぞれに対応付けられた重みからなる重みパラメータ群を、学習済みの第1の学習モデル11Aとして学習済みモデル記憶部25に格納する。なお、第1の機械学習部201Aは、第1の学習用画像を入力層110Aに入力する際の前処理として、所定の画像調整(例えば、画像フォーマット、画像サイズ、色補正等)を第1の学習用画像に施してもよい。
【0046】
図6は、第2の学習モデル11B及び第2の学習用データ12Bの一例を示す図である。第2の学習用データ12Bは、第2の学習用画像と、当該第2の学習用画像に撮像された牛Cの所定の体部位を含む体部位領域とで構成される。
【0047】
第2の学習用画像は、カメラ35により牛Cが撮像された画像であって、二次元画像及び深度画像の少なくとも一方の画像に対応する。本実施形態では、第2の学習用画像は、牛Cの体向きが所定の体向き(「左後方」)にて撮像された深度画像である場合について説明するが、同様の条件にて撮像された二次元画像であってもよい。
【0048】
体部位領域は、教師あり学習における正解ラベルに対応する。体部位領域は、第2の学習用画像のうち、牛Cの所定の体部位が撮像された領域を表すものであり、所定の体部位以外の除去領域、すなわち、所定の体部位以外の体部位や背景が撮像された領域は含まれない。所定の体部位は、牛Cの胴体だけでもよいし、牛Cの胴体及び四肢でもよい。所定の体部位が、牛Cの「胴体」である場合、体部位領域は、胴体のみが撮像された領域であり、胴体以外の体部位や背景が撮像された領域(除去領域)は含まれない。また、所定の体部位が、牛Cの「胴体及び四肢」である場合、体部位領域は、
図6に示すように、胴体が撮像された領域と、四肢が撮像された領域とを結合した領域であり、胴体及び四肢以外の体部位や背景が撮像された領域(除去領域)は含まれない。
【0049】
学習用データ取得部200は、例えば、過去に牛Cが撮像されたときの画像(本実施形態では、「左後方」の体向きにて撮像された深度画像)を外部装置から第2の学習用画像として受信するとともに、その第2の学習用画像における体部位領域及び除去領域を特定する入力操作を入力部21から受け付けて、それらを対応付けることで、第2の学習用データ12Bを取得する。その際、学習用データ取得部200は、体部位領域及び除去領域を特定する入力操作として、例えば、牛Cの体部位の各部(胴体、頭部、頸部、四肢)が撮像された領域と、背景が撮像された領域とをそれぞれ特定する情報を受け付けてもよい。
【0050】
第2の学習モデル11Bは、セグメンテーションを実施する学習モデルとして、例えば、全層畳み込みネットワーク(FCN)の構造を採用したものであり、入力層110B、中間層111B、及び、出力層112Bを備える。各層の間には、各ニューロンをそれぞれ接続するシナプス(不図示)が張られており、各シナプスには、重みが対応付けられてい
る。
【0051】
入力層110Bは、入力データとしての第2の学習用画像の画素数に対応する数のニューロンを有し、各ピクセルの画素値が各ニューロンにそれぞれ入力される。中間層111Bは、例えば、畳み込み層、逆畳み込み層から構成される。出力層112Bは、第2の学習用画像の画像数に対応する数のニューロンを有し、体部位領域と、体部位領域以外の除去領域とに分類(推論)した分類結果を、出力データとして出力する。出力層112Bの各ニューロンは、例えば、各ピクセルが体部位領域であるか否かのスコア(信頼度)を、所定の範囲(例えば、0~1)の値で出力する。
図6の例では、出力層112Bは、「胴体及び四肢」に対応するピクセルを体部位領域とし、それら以外に対応するピクセルを除去領域とする体部位画像を生成して出力する。
【0052】
第2の機械学習部201Bは、第2の学習モデル11Bに第2の学習用データ12Bを複数組入力することで、第2の学習用画像と、当該第2の学習用画像に撮像された牛Cの所定の体部位を含む体部位領域との相関関係を第2の学習モデル11Bに機械学習させる。
【0053】
具体的には、第2の機械学習部201Bは、第2の学習用データ12Bを構成する第2の学習用画像を入力データとして、入力層110Bに入力し、出力層112Bから分類結果として出力された体部位領域(出力データ)と、当該第2の学習用データ12Bを構成する体部位領域(正解ラベル)とを比較する誤差関数を用いて、各シナプスに対応付けられた重みを調整する。そして、第2の機械学習部201Bは、所定の学習終了条件が満たされたと判断した場合には、機械学習を終了し、そのときの各シナプスのそれぞれに対応付けられた重みからなる重みパラメータ群を、学習済みの第2の学習モデル11Bとして学習済みモデル記憶部25に格納する。
【0054】
図7は、第3の学習モデル11C及び第3の学習用データ12Cの一例を示す図である。第3の学習用データ12Cは、第3の学習用画像と、当該第3の学習用画像に撮像された牛Cの体重とで構成される。
【0055】
第3の学習用画像は、カメラ35により牛Cが撮像された画像であって、二次元画像及び深度画像の少なくとも一方の画像に対応する。本実施形態では、第3の学習用画像は、牛Cの体向きが所定の体向き(「左後方」)にて撮像された深度画像であって、その深度画像から所定の体部位(「胴体及び四肢」)を含む体部位領域以外の除去領域を除去した深度画像(体部位画像)である場合について説明するが、同様の条件にて撮像されて処理された二次元画像であってもよい。
【0056】
牛Cの体重は、教師あり学習における正解ラベルに対応する。牛Cの体重は、第3の学習モデル11Cを分類モデルとする場合には、
図7に示すように、所定の範囲毎(例えば、10kg毎)による多クラスの分類で表されてもよいし、第3の学習モデル11Cを回帰モデルとする場合には、単位をキログラムとする数値で表されてもよい。
【0057】
学習用データ取得部200は、例えば、過去に牛Cが撮像されたときの画像(本実施形態では、「左後方」の体向きにて撮像された深度画像から「胴体及び四肢」を含む体部位領域以外の除去領域を除去した深度画像(体部位画像))を外部装置から第3の学習用画像として受信するとともに、その第3の学習用画像に撮像された牛Cの体重を入力する入力操作を入力部21から受け付けて、それらを対応付けることで、第3の学習用データ12Cを取得する。その際、第3の学習用画像は、画像編集ソフトウェア等で画像を編集することで生成されたものでもよい。また、牛Cの体重は、例えば、体重計により測定された測定値が入力される。
【0058】
第3の学習モデル11Cは、例えば、畳み込みニューラルネットワークの構造を採用したものであり、入力層110C、中間層111C、及び、出力層112Cを備える。各層の間には、各ニューロンをそれぞれ接続するシナプス(不図示)が張られており、各シナプスには、重みが対応付けられている。
【0059】
入力層110Cは、入力データとしての第3の学習用画像の画素数に対応する数のニューロンを有し、各ピクセルの画素値が各ニューロンにそれぞれ入力される。中間層111Cは、例えば、畳み込み層、プーリング層及び全結合層から構成され、第3の学習用画像から特徴量を抽出し、一次元配列の特徴ベクトルとして出力する。出力層112Cは、中間層111Cから出力された特徴ベクトルに基づいて、第3の学習用画像に撮像された牛Cの体重を推定(推論)した推定結果を、出力データとして出力する。
図7の例では、出力層112Cは、10kg毎の各体重に対応する数のニューロンを有し、各ニューロンは、各クラスにそれぞれ分類されるときのスコア(信頼度)を、所定の範囲(例えば、0~1)の値で出力する。
【0060】
第3の機械学習部201Cは、第3の学習モデル11Cに第3の学習用データ12Cを複数組入力することで、第3の学習用画像と、当該第3の学習用画像に撮像された牛Cの体重との相関関係を第3の学習モデル11Cに機械学習させる。
【0061】
具体的には、第3の機械学習部201Cは、第3の学習用データ12Cを構成する第3の学習用画像を入力データとして、入力層110Cに入力し、出力層112Cから推定結果として出力された牛Cの体重(出力データ)と、当該第3の学習用データ12Cを構成する牛Cの体重(正解ラベル)とを比較する誤差関数を用いて、各シナプスに対応付けられた重みを調整する。そして、第3の機械学習部201Cは、所定の学習終了条件が満たされたと判断した場合には、機械学習を終了し、そのときの各シナプスのそれぞれに対応付けられた重みからなる重みパラメータ群を、学習済みの第3の学習モデル11Cとして学習済みモデル記憶部25に格納する。
【0062】
(機械学習方法)
図8は、第1の実施形態に係る機械学習装置2による機械学習方法の一例を示すフローチャートである。以下では、第3の機械学習部201Cが、複数組の第3の学習用データ12Cを用いて第3の学習モデル11Cを生成する場合について説明する。なお、
図8では、「第3の学習モデル11C」及び「第3の学習用データ12C」における「第3の」という記載は省略する。また、第1の機械学習部201A及び第2の機械学習部201Bによる機械学習方法は、第3の機械学習部201Cと同様であるため、それらの説明は省略する。
【0063】
まず、ステップS100において、学習用データ取得部200は、機械学習を開始するための事前準備として、複数組の第3の学習用データ12Cを取得し、その取得した複数組の第3の学習用データ12Cを学習用データ記憶部24に記憶する。
【0064】
次に、ステップS110において、第3の機械学習部201Cは、機械学習を開始すべく、学習前の第3の学習モデル11Cを準備する。学習前の第3の学習モデル11Cは、各シナプスの重みが初期値に設定されている。入力層110Cの各ニューロンには、第3の学習用データ12Cを構成する第3の学習用画像の各画素が対応付けられる。出力層112Cの各ニューロンには、10kg毎の各体重に対応する各クラスが対応付けられる。
【0065】
次に、ステップS120において、第3の機械学習部201Cは、学習用データ記憶部24に記憶された複数組の第3の学習用データ12Cから、例えば、ランダムに1組の第
3の学習用データ12Cを取得する。
【0066】
次に、ステップS130において、第3の機械学習部201Cは、1組の第3の学習用データ12Cに含まれる第3の学習用画像(入力データ)を、準備された学習前(又は学習中)の第3の学習モデル11Cの入力層110Cに入力する。その結果、第3の学習モデル11Cの出力層112Cから牛Cの体重の推定結果(出力データ)が出力されるが、当該推定結果は、学習前(又は学習中)の第3の学習モデル11Cによって推定されたものである。そのため、学習前(又は学習中)の状態では、推定結果として出力された牛Cの体重は、第3の学習用データ12Cに含まれる牛Cの体重(正解ラベル)とは異なる情報を示す。
【0067】
次に、ステップS140において、第3の機械学習部201Cは、ステップS120において取得された1組の第3の学習用データ12Cに含まれる牛Cの体重(正解ラベル)と、ステップS130において出力層112Cから推定結果として出力された牛Cの体重(出力データ)とを比較する誤差関数を用いて、誤差関数の評価値が小さくなるように、各シナプスに対応付けられた重みを調整することで、機械学習を実施する。これにより、第3の機械学習部201Cは、第3の学習用画像と、当該第3の学習用画像に撮像された牛Cの体重との相関関係を第3の学習モデル11Cに機械学習させる。
【0068】
次に、ステップS150において、第3の機械学習部201Cは、所定の学習終了条件が満たされたか否かを、例えば、誤差関数の評価値が許容値より小さいか否か、ステップS120~S140の反復回数が所定の回数に到達したか否か等に基づいて判定する。
【0069】
ステップS150において、第3の機械学習部201Cが、学習終了条件が満たされておらず、機械学習を継続すると判定した場合(ステップS150でNo)、ステップS120に戻り、学習中の第3の学習モデル11Cに対してステップS120~S140の工程を未学習の第3の学習用データ12Cを用いて実施する。一方、ステップS150において、第3の機械学習部201Cが、学習終了条件が満たされて、機械学習を終了すると判定した場合(ステップS150でYes)、ステップS160に進む。
【0070】
そして、ステップS160において、第3の機械学習部201Cは、各シナプスに対応付けられた重みを調整することで機械学習させた学習済みの第3の学習モデル11C(調整済みの重みパラメータ群)を学習済みモデル記憶部25に記憶し、
図8に示す一連の機械学習方法を終了する。上記の機械学習方法において、ステップS100が学習用データ記憶工程、ステップS110~S150が機械学習工程、ステップS160が学習済みモデル記憶工程に相当する。
【0071】
以上のように、本実施形態に係る機械学習装置2及び機械学習方法によれば、カメラ35により牛Cが撮像された画像から、牛Cの体重を高精度に推定(測定)することが可能な第3の学習モデル11Cを提供することができる。また、本実施形態に係る機械学習装置2及び機械学習方法によれば、カメラ35により牛Cが撮像された画像から、牛Cの体向きを高精度に判定することが可能な第1の学習モデル11Aを提供することができる。さらに、本実施形態に係る機械学習装置2及び機械学習方法によれば、カメラ35により牛Cが撮像された画像から、体部位画像を生成することが可能な第2の学習モデル11Bを提供することができる。
【0072】
(体重推定装置10)
図9は、第1の実施形態に係る体重推定装置10として機能する端末装置3の一例を示すブロック図である。
図10は、第1の実施形態に係る体重推定装置10の一例を示す機能説明図である。端末装置3は、制御部30、入力部31、出力部32、通信部33、記
憶部34、及び、カメラ35を備える。
【0073】
制御部30は、記憶部34に記憶された体重推定プログラム100を実行することで、体重推定装置10として機能する。具体的には、制御部30は、体重推定装置10が備える画像取得部300、体向き判定部301、体部位画像生成部302、体重推定部303、及び、入出力処理部304として機能する。
【0074】
入力部31は、各種の入力操作を受け付けるとともに、出力部32は、表示画面や音声を介して各種の情報を出力することで、入出力処理部304と連携するユーザインターフェースとして機能する。通信部33は、ネットワーク5を介して外部装置(例えば、機械学習装置2、管理装置4等)と接続され、各種のデータを送受信する通信インターフェースとして機能する。記憶部34は、体重推定プログラム100を記憶する他に、機械学習装置2により生成された学習済みの第1乃至第3の学習モデル11A~11C(例えば、調整済みの重みパラメータ群)、オペレーティングシステム(OS)、他のプログラム(アプリ)、各種のデータ等を記憶する。
【0075】
画像取得部300は、カメラ35により体重推定の対象とする牛Cが撮像された画像を取得する。本実施形態では、画像取得部300は、二次元画像及び深度画像の両方を取得する場合について説明する。
【0076】
体向き判定部301は、画像取得部300により取得された画像(本実施形態では、二次元画像)を、第1の学習モデル11Aに入力することで、その画像に撮像された牛Cの体向きを判定する。本実施形態では、第1の学習モデル11Aは、8クラス(8方位)に対する各スコアを出力するため、体向き判定部301は、クラス毎のスコアのうち最大値のスコアを出力するクラスを選択し、そのクラスに対応する体向きを判定結果として出力する。
【0077】
体部位画像生成部302は、体向き判定部301により判定された牛の体向きが所定の体向きにて撮像された画像(本実施形態では、「左後方」の体向きにて撮像された深度画像)を、第2の学習モデル11Bに入力することで、その画像から所定の体部位を含む体部位領域以外の除去領域を除去した画像を体部位画像として生成する。本実施形態では、第2の学習モデル11Bは、所定の体部位として、「胴体及び四肢」を含む体部位領域以外の除去領域(頭部、頸部、背景等)を除去した画像を体部位画像として生成するため、体部位画像生成部302は、胴体及び四肢のみを抽出し、頭部、頸部、背景等を除去した体部位画像を出力する。
【0078】
体重推定部303は、体部位画像生成部302により生成された体部位画像(本実施形態では、「左後方」の体向きにて撮像された深度画像から「胴体及び四肢」を含む体部位領域以外の除去領域を除去した深度画像)を、第3の学習モデル11Cに入力することで、その体部位画像に撮像された牛Cの体重を推定する。本実施形態では、第3の学習モデル11Bは、多クラス(10kg毎の体重)に対する各スコアを出力するため、体重推定部303は、クラス毎のスコアのうち最大値のスコアを出力するクラスを選択し、そのクラスに対応する体重を推定結果として出力する。
【0079】
入出力処理部304は、各種の表示画面(撮像画面、体重推定結果画面等)を表示し、表示画面の画面遷移を制御するとともに、各表示画面に対する入力操作を受け付けることで、各種のタスクを制御する。タスクとしては、例えば、カメラ35による牛Cの撮像、その撮像された牛Cの体重の推定、その推定された結果の表示、牛管理データベース40の編集(追加、変更、削除等)や参照、牛管理データベース40に記憶された情報を所定の形式のデータとして保存するデータ保存、牛管理データベース40に記憶された情報に
基づく分析情報(体重の推移や平均値等)の取得、体重推定プログラム100における各種のパラメータの設定等が挙げられる。
【0080】
なお、記憶部34に記憶される第1乃至第3の学習モデル11A~11Cの数はそれぞれ1つに限定されず、例えば、機械学習の手法、牛Cの体向き、品種等の条件が異なる複数の学習済みモデルが記憶され、選択的に利用されてもよい。また、第1乃至第3の学習モデル11A~11Cは、外部コンピュータ(機械学習装置2でもよいし、他のサーバ型コンピュータやクラウド型コンピュータでもよい)の記憶部で代用されてもよく、その場合には、体向き判定部301、体部位画像生成部302、及び、体重推定部303は、当該外部コンピュータにアクセスすればよい。
【0081】
また、本実施形態では、画像取得部300は、
図10に示すように、二次元画像及び深度画像の両方を取得する場合について説明するが、二次元画像及び深度画像の一方の画像だけを取得してもよく、その場合には、体向き判定部301、体部位画像生成部302、及び、体重推定部303では、画像取得部300により取得された一方の画像を用いるようにすればよい。画像取得部300が、一方の画像として、例えば、深度画像を取得する場合には、体向き判定部301は、深度画像を第1の学習モデル11Aに入力することで、深度画像に撮像された牛Cの体向きを判定し、体部位画像生成部302は、牛Cの体向きが所定の体向きにて撮像された深度画像を第2の学習モデル11Bに入力することで、深度画像から除去領域を除去した深度画像を体部位画像として生成し、体重推定部は、体部位画像を第3の学習モデルに入力することで、深度画像に撮像された牛Cの前記体重を推定すればよい。その際、第1の学習モデル11Aは、第1の学習用画像としての深度画像と、当該深度画像に撮像された牛Cの体向きとの相関関係を機械学習させたものである。
【0082】
さらに、画像取得部300が、二次元画像及び深度画像の両方を取得した場合においても、体向き判定部301、体部位画像生成部302、及び、体重推定部303では、画像取得部300により取得された一方の画像(例えば、深度画像)を用いるようにしてもよい。その場合、他方の画像(例えば、二次元画像)については、入出力処理部304が、各種のタスクで用いるようにしてもよく、他方の画像(例えば、二次元画像)を、例えば、撮像画面13(後述の
図12参照)や体重推定結果画面14(後述の
図13参照)に表示するようにしてもよい。これにより、他方の画像が、二次元画像である場合には、ユーザインターフェースにおける画像の視認性を向上させることができる。
【0083】
(体重推定方法)
図11は、第1の実施形態に係る体重推定装置10による体重推定方法の一例を示すフローチャートである。
図11に示す体重推定方法は、端末装置3にて体重推定プログラム100が起動されることで実行される。以下では、体重推定プログラム100の設定パラメータは、設定済みであり、体重推定の対象とする牛Cの情報は、牛管理データベース40の牛情報テーブル400に登録済みであるものとして説明する。
【0084】
まず、ステップS200において、入出力処理部304は、作業者の入力操作として、牛Cの体重測定を開始する旨の体重測定開始操作を受け付けると、ステップS201において、カメラ35により牛Cを撮像するための撮像画面13を表示する。
【0085】
図12は、撮像画面13の一例を示す画面構成図である。撮像画面13は、カメラ35によるリアルタイムの画像を表示する画像表示領域130と、カメラ35による撮像を指示する撮像ボタン131とを備える。なお、撮像画面13には、所定の体向きである「左後方」にて牛Cを撮像するように促す旨のメッセージが表示されていてもよい。また、画像表示領域130には、二次元画像及び深度画像のいずれかの画像が表示されてもよいし
、両画像が、並べて表示されてもよいし、切替可能に表示されてもよい。
【0086】
ステップS202において、入出力処理部304が、撮像ボタン131の押下操作を受け付けると、カメラ35が、牛Cを撮像する。そして、ステップS210において、画像取得部300は、カメラ35により撮像された画像として、二次元画像及び深度画像を取得する。
【0087】
次に、ステップS220において、体向き判定部301は、ステップS210にて取得された二次元画像及び深度画像のうち、二次元画像を第1の学習モデル11Aに入力することで、その画像に撮像された牛Cの体向きを判定する。
【0088】
そして、ステップS221において、ステップS220にて判定された牛Cの体向きが、所定の体向き(「左後方」)である場合には、ステップS230に進み、そうでない場合には、カメラ35により撮像された牛Cの体向きが、所定の体向き(「左後方」)でない旨のメッセージを表示し、ステップS201に戻る。なお、体向き判定部301が、カメラ35によるリアルタイムの画像を所定の周期で第1の学習モデル11Aに入力することで、牛Cの体向きを所定の周期で判定してもよく、その場合には、入出力処理部304は、牛Cの体向きが所定の体向き(「左後方」)であるタイミングにおいて、撮像画面13の撮像ボタン131を有効にしたり、牛Cの撮像を促す旨のメッセージを表示したりしてもよい。
【0089】
次に、ステップS230において、体部位画像生成部302は、ステップS210にて取得された、「左後方」の体向きにて撮像された二次元画像及び深度画像のうち、深度画像を第2の学習モデル11Bに入力することで、その深度画像から「胴体及び四肢」を含む体部位領域以外の除去領域を除去した深度画像を体部位画像として生成する。
【0090】
次に、ステップS240において、体重推定部303は、ステップS230にて生成された体部位画像を第3の学習モデル11Cに入力することで、その体部位画像に撮像された牛Cの体重を推定する。
【0091】
次に、ステップS250において、入出力処理部304は、ステップS240にて推定された推定結果として、体重推定の対象とする牛Cの体重を出力するための体重推定結果画面14を表示する。
【0092】
図13は、体重推定結果画面14の一例を示す画面構成図である。体重推定結果画面14は、ステップS202にてカメラ35により撮像された画像を表示する画像表示領域140と、体重推定の対象とする牛Cの情報を表示する牛情報表示欄141と、ステップS240にて体重推定部303により推定された牛Cの体重の推定結果を表示する推定結果示欄142と、牛Cの体重の推定結果を牛管理データベース40に登録する登録ボタン143とを備える。
【0093】
ステップS251において、入出力処理部304が、登録ボタン143の押下操作により体重推定結果登録操作を受け付けると、ステップS252において、入出力処理部304は、ステップS240にて推定された牛Cの体重を牛管理データベース40に登録するための登録情報を管理装置4に送信し、
図11に示す一連の体重推定方法を終了する。なお、入出力処理部304が、登録ボタン143の押下操作を受け付けなかった場合には、登録情報を管理装置4に送信せずに、上記の体重推定方法を終了すればよい。また、体重推定の対象とする牛Cが複数存在する場合には、上記の体重推定方法を繰り返し実行すればよい。上記の体重推定方法において、ステップS210が画像取得工程、ステップS220が体向き判定工程、ステップS230が体部位画像生成工程、ステップS240が体
重推定工程に相当する。
【0094】
以上のように、本実施形態に係る体重推定装置10及び体重推定方法によれば、牛Cが所定の体向きにて撮像された画像を第1乃至第3の学習モデル11A~11Cに入力することで、画像から牛Cの体重が推定されるので、簡便かつ安全に牛Cの体重を推定することができる。
【0095】
その際、体向き判定部301が、第1の学習モデル11Aを用いて牛Cの体向きを判定することで、所定の体向きにて撮像された画像に基づいて牛Cの体重が推定される。そのため、牛Cの所定の体向きとして、例えば、「左後方」又は「左側方」から撮像された画像を用いる場合、その画像には、左腹部を含む牛Cの側面全体が撮像されて牛Cの体部分の撮像範囲が大きくなるので、牛Cの体重を推定する際の推定精度を向上させることができる。
【0096】
また、体部位画像生成部302が、第2の学習モデル11Bを用いて体部位画像を生成することで、牛Cの所定の体部位を含む体部位領域以外の除去領域が除去された体部位画像に基づいて牛Cの体重が推定される。そのため、牛Cの所定の体部位として、例えば、「胴体」又は「胴体及び四肢」以外の除去領域が除去された体部位画像を用いる場合、その体部位画像では、牛Cが頻繁に動作させる体部位である頭部や頸部が除去されているので、牛Cの姿勢の変化による影響が低減されることで、牛Cの体重を推定する際の推定精度の低下を抑制することができる。
【0097】
さらに、体重推定部303が、第3の学習モデル11Cを用いて体部位画像から牛Cの体重を推定することで、体重推定装置10として、例えば、スマートフォン、タブレット端末等の携帯型コンピュータを使用することができるので、高価で大掛かりな装置を使用することなく、簡便かつ安全に牛Cの体重を推定することができる。
【0098】
(第2の実施形態)
図14は、第2の実施形態に係る体重推定装置10aとして機能する端末装置3aの一例を示すブロック図である。
図15は、第2の実施形態に係る体重推定装置10aの一例を示す機能説明図である。
【0099】
端末装置3aの制御部30は、体重推定プログラム100aを実行することで、画像取得部300、体部位画像生成部302、体重推定部303、及び、入出力処理部304を備える体重推定装置10aとして機能する。すなわち、第2の実施形態に係る体重推定装置10aは、第1の実施形態に係る体重推定装置10に対して、第1の学習モデル11Aを用いて牛Cの体向きを判定する体向き判定部301を省略したものである。
【0100】
図15に示す体重推定装置10aでは、画像取得部300が、深度画像を取得し、体部位画像生成部302が、その深度画像を第2の学習モデル11Bに入力することで体部位画像を生成し、体重推定部303が、その体部位画像を第3の学習モデル11Cに入力することで牛Cの体重を推定する。なお、画像取得部300が取得する深度画像は、牛Cの体向きが「左後方」又は「左側方」にて撮像された深度画像である場合が好ましいが、特に限定されない。牛管理システム1におけるその他の基本的な構成及び動作は、第1の実施形態と同様であるため、説明を省略する。
【0101】
以上のように、本実施形態に係る体重推定装置10a及び体重推定方法によれば、牛Cが所定の体向きにて撮像された画像を第2及び第3の学習モデル11B、11Cに入力することで、画像から牛Cの体重が推定されるので、簡便かつ安全に牛Cの体重を推定することができる。
【0102】
(第3の実施形態)
図16は、第3の実施形態に係る体重推定装置10bとして機能する端末装置3bの一例を示すブロック図である。
図17は、第3の実施形態に係る体重推定装置10bの一例を示す機能説明図である。
【0103】
端末装置3bの制御部30は、体重推定プログラム100bを実行することで、画像取得部300、体向き判定部301、体重推定部303、及び、入出力処理部304を備える体重推定装置10bとして機能する。すなわち、第3の実施形態に係る体重推定装置10bは、第1の実施形態に係る体重推定装置10に対して、第2の学習モデル11Bを用いて体部位画像を生成する体部位画像生成部302を省略したものである。
【0104】
図17に示す体重推定装置10bでは、画像取得部300が、二次元画像及び深度画像を取得し、体向き判定部301が、その二次元画像を第1の学習モデル11Aに入力することで牛Cの体向きを判定し、体重推定部303が、牛Cの体向きが所定の体向き(「左後方」)にて撮像された深度画像を第3の学習モデル11Cに入力することで牛Cの体重を推定する。なお、第3の学習モデル11Cは、体部位画像と牛Cの体重との相関関係ではなく、深度画像と牛Cの体重との相関関係を機械学習させたものである場合が好ましいが、特に限定されない。牛管理システム1におけるその他の基本的な構成及び動作は、第1の実施形態と同様であるため、説明を省略する。
【0105】
以上のように、本実施形態に係る体重推定装置10b及び体重推定方法によれば、牛Cが所定の体向きにて撮像された画像を第1及び第3の学習モデル11A、11Cに入力することで、画像から牛Cの体重が推定されるので、簡便かつ安全に牛Cの体重を推定することができる。
【0106】
(他の実施形態)
本発明は上述した実施形態に制約されるものではなく、本発明の主旨を逸脱しない範囲内で種々変更して実施することが可能である。そして、それらはすべて、本発明の技術思想に含まれるものである。
【0107】
上記実施形態では、機械学習装置2が、第1乃至第3の機械学習部201A~201Cを備える場合について説明したが、例えば、3つの機械学習装置が、第1乃至第3の機械
学習部201A~201Cをそれぞれ備えるようにしてもよい。
【0108】
上記実施形態では、コンピュータ900(端末装置3)に体重推定プログラム100、100a、100bを実行させることで実現される体重推定装置10、10a、10bが、画像取得部300及び体重推定部303に加えて、体向き判定部301及び体部位画像生成部302の少なくとも一方を備えるものとして説明したが、体重推定装置は、少なくとも画像取得部300及び体重推定部303を備えるものであればよい。また、コンピュータ900(端末装置3)に体向き判定プログラムを実行させることで、コンピュータ900が、画像取得部300及び体向き判定部301を備える体向き判定装置として機能するようにしてもよい。さらに、コンピュータ900(端末装置3)に体部位画像生成プログラムを実行させることで、コンピュータ900が、画像取得部300及び体部位画像生成部302を備える体部位画像生成装置として機能するようにしてもよい。
【0109】
上記実施形態では、第1乃至第3の機械学習部201A~201Cによる機械学習の具体的な手法として、畳み込みニューラルネットワークや全層畳み込みネットワークを採用した場合について説明したが、第1乃至第3の機械学習部201A~201Cは、任意の他の機械学習の手法(教師あり学習だけでなく、教師なし学習や強化学習も含む)を採用
してもよい。他の機械学習の手法としては、例えば、決定木、回帰木等のツリー型、バギング、ブースティング等のアンサンブル学習、再帰型ニューラルネットワーク、等の他のニューラルネット型(ディープラーニングを含む)、階層型クラスタリング、非階層型クラスタリング、k近傍法、k平均法等のクラスタリング型、主成分分析、因子分析、ロジスティク回帰等の多変量解析、サポートベクターマシン等が挙げられる。
【0110】
上記実施形態では、第3の学習モデル11Cの出力データは、牛Cの体重である場合について説明したが、第3の学習モデル11Cの出力データは、牛Cの体重に加えて、ボディコンディションスコア(太り具合の指標)、ルーメンフィルスコア(満腹具合の指標)、及び、跛行スコア(脚の病気の指標)の少なくとも1つを採用するようにしてもよい。その場合には、体重推定部303が、画像を第3の学習モデル11Cに入力することで、牛Cの体重に加えて、ボディコンディションスコア、ルーメンフィルスコア、及び、跛行スコアの少なくとも1つをさらに推定するようにしてもよい。
【0111】
(推論装置、推論方法又は推論プログラム)
上記実施形態に係る体重推定装置10の態様に代えて、牛Cの体重を推定するために用いられる推論装置(推論方法又は推論プログラム)の態様で提供してもよい。この場合、推論装置は、メモリと、プロセッサとを含み、このうちのプロセッサが、一連の処理を実行する。
【0112】
一連の処理の第1の態様は、牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の体向きを推論する推論処理とを含む。一連の処理の第2の態様は、牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の所定の体部位を含む体部位領域を推論する推論処理とを含む。一連の処理の第3の態様は、牛が撮像された二次元画像及び深度画像の少なくとも一方の画像を取得する画像取得処理と、前記画像取得処理にて前記画像を取得すると、前記画像に撮像された前記牛の体重を推論する推論処理とを含む。上記の推論装置(推論方法又は推論プログラム)の態様で提供することで、体重推定装置10を実装する場合に比して簡単に種々の装置への適用が可能となる。なお、推論装置(推論方法又は推論プログラム)が、推論処理を実行する際、上記実施形態に係る機械学習装置2により生成された学習済みの第1乃至第3の学習モデル11A~11Cを用いてもよいことは、当業者にとって当然に理解され得るものである。
【符号の説明】
【0113】
1…牛管理システム、2…機械学習装置、3、3a、3b…端末装置、
4…管理装置、5…ネットワーク、10、10a、10b…体重推定装置、
11A…第1の学習モデル、11B…第2の学習モデル、
11C…第3の学習モデル、12A…第1の学習用データ、
12B…第2の学習用データ、12C…第3の学習用データ、
13…撮像画面、14…体重推定結果画面、
20…制御部、21…入力部、22…出力部、23…通信部、24…学習用データ記憶部、
25…学習済みモデル記憶部、
30…制御部、31…入力部、32…出力部、33…通信部、34…記憶部、
35…カメラ、40…牛管理データベース、
100、100a、100b…体重推定プログラム、110A~110C…入力層、
111A~111C…中間層、112A~112C…出力層、
130…画像表示領域、131…撮像ボタン、
140…画像表示領域、141…牛情報表示欄、142…推定結果示欄、
143…登録ボタン、
200…学習用データ取得部、201A…第1の機械学習部、
201B…第2の機械学習部、201C…第3の機械学習部
300…画像取得部、301…体向き判定部、302…体部位画像生成部、
303…体重推定部、304…入出力処理部、
400…牛情報テーブル、401…測定情報テーブル
900…コンピュータ