【文献】
Du-Ming Tsai and Ching-Ying Huang,A motion and image analysis method for automatic detection of estrus and mating behavior in cattle,Computers and Electronics in Agriculture,2014年06月,Vol. 104,pp. 25 - 31
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0019】
図1は、本実施例における情報処理システムのシステム構成の一例を示す図である。
【0020】
本発明におけるシステムは、ネットワークカメラ端末(撮像装置)101と、サーバ装置(情報処理装置)102、クライアント端末103とが通信可能に接続されたシステムである。
【0021】
牛舎に設置されたネットワークカメラ端末101によって牛舎内の牛Aを撮影し、撮影した映像データはサーバ装置102に送信される。サーバ装置102は映像データを解析処理し、乗駕行動の有無を判定する。解析処理によって乗駕行動ありと判定された場合には、クライアント端末103に通知を行う。
【0022】
図2は、本発明の実施形態に係わるネットワークカメラ端末101、サーバ装置102、クライアント端末103のハードウェア構成の一例を示すブロック図である。
【0023】
図2に示すように、ネットワークカメラ端末101、サーバ装置102、クライアント端末103では、システムバス200を介してCPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、記憶装置204、入力コントローラ205、音声入力コントローラ206、ビデオコントローラ207、メモリコントローラ208、よび通信I/Fコントローラ209が接続される。
【0024】
CPU201は、システムバス200に接続される各デバイスやコントローラを統括的に制御する。
【0025】
ROM202あるいは記憶装置204は、CPU201が実行する制御プログラムであるBIOS(Basic Input/Output System)やOS(Operating System)や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ(データテーブルを含む)を保持している。
【0026】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは記憶装置204からRAM203にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【0027】
入力コントローラ205は、キーボード/タッチパネル210などの入力装置からの入力を制御する。入力装置はこれに限ったものでなく、マウスやマルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【0028】
ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができる。
【0029】
この入力装置を用いて各種通信装置で利用可能な通信宛先に対する宛先を入力するようになっている。
【0030】
音声入力コントローラ206は、マイク211からの入力を制御する。マイク211から入力された音声を音声認識することが可能となっている。
【0031】
ビデオコントローラ207は、ディスプレイ212などの外部出力装置への表示を制御する。ディスプレイは本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、外部出力装置はディスプレイに限ったものははく、例えばプロジェクタであってもよい。また、前述のタッチ操作により受け付け可能な装置については、キーボード/タッチパネル210からの入力を受け付けることも可能となる。
【0032】
なおビデオコントローラ207は、表示制御を行うためのビデオメモリ(VRAM)を制御することが可能で、ビデオメモリ領域としてRAM203の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【0033】
本発明では、ユーザが情報処理装置を通常する場合の表示に用いられる第1のビデオメモリ領域と、所定の画面が表示される場合に、第1のビデオメモリ領域の表示内容に重ねての表示に用いられる第2のビデオメモリ領域を有している。ビデオメモリ領域は2つに限ったものではなく、情報処理装置の資源が許す限り複数有することが可能なものとする。
【0034】
メモリコントローラ208は、外部メモリ213へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置(ハードディスク)、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等を利用可能である。
【0035】
通信I/Fコントローラ209、ネットワーク214を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信やISDNなどの電話回線、および携帯電話の3G回線を用いた通信が可能である。
【0036】
なお、記憶装置204は情報を永続的に記憶するための媒体であって、その形態をハードディスク等の記憶装置に限定するものではない。例えば、SSD(Solid State Drive)などの媒体であってもよい。
【0037】
また本実施形態における通信端末で行われる各種処理時の一時的なメモリエリアとしても利用可能である。
【0038】
次に
図3に示すフローチャートを用いて、本実施例における牛の発情判定処理の全体像を説明する。
【0039】
ステップS101では、牛舎に設置されたネットワークカメラ端末101のCPU201が撮影可能な状態か否かを判定する。
【0040】
撮影可能である場合(ステップS101:YES)は、処理をステップS102に移行する。
【0041】
撮影不可能である場合(ステップS101:NO)は、本フローチャートの処理を終了する。
【0042】
ステップS102では、ネットワークカメラ端末101のCPU201は、撮影した映像の1フレーム画像を取得する。
【0043】
ステップS103では、ネットワークカメラ端末101のCPU201は、ステップS102で取得した1フレーム画像をサーバ装置102に転送する。
【0044】
ステップS104では、サーバ装置102のCPU201は、ステップS103でネットワークカメラ端末101から送信された1フレーム画像を受信する。
【0045】
なお、ネットワークカメラ端末101により撮影された動画データをサーバ装置に送信し、サーバ装置において受信した動画データから1フレーム画像を取得するよう構成してもよい。
【0046】
ステップS105では、サーバ装置102のCPU201は、ステップS104で受信した画像を用いて、発情判定処理を実行する。発情判定処理の詳細については、
図4〜
図6のフローチャートを用いて説明する。
【0047】
ステップS106では、サーバ装置102のCPU201は、ステップS105の発情判定処理により発情判定フラグがTrueとなったか否かを判定する。
【0048】
Trueである場合(ステップS106:YES)は、処理をステップS107に移行する。
【0049】
Falseである場合(ステップS106:NO)は、処理をステップS101に戻す。
【0050】
ステップS107では、サーバ装置102のCPU201は、発情している牛がいる旨をクライアント端末103に対して通知する。
【0051】
次に、
図4〜
図6のフローチャートを用いて、ステップS105における発情判定処理について説明する。
【0052】
ステップS201では、サーバ装置102のCPU201は、見え情報(静止画)による発情判定処理を実行する。
【0053】
見え情報による発情判定処理の詳細は、
図5のフローチャートを用いて説明する。
【0054】
図5は、ステップS201における見え情報による発情判定処理を示すフローチャートである。
【0055】
ステップS301では、サーバ装置102のCPU201は、学習済みの特徴量の重みデータを読み込む。
【0056】
例えば、
図7に示すような発情行動(例えば乗駕行動)をしている牛の画像(すなわち、検出対象の動作、行為を示す画像)を複数学習させておき、それらの画像から特徴量を算出しておく。
【0057】
ステップS302では、サーバ装置102のCPU201は、処理対象の画像(ステップS104で受信した画像)から、物体が映っている領域を候補矩形として抽出する。候補矩形の抽出については、例えば「Faster R−CNN」といった公知技術を用いることで実現可能である。
【0058】
ステップS303では、サーバ装置102のCPU201は、ステップS302の処理により抽出された候補矩形が存在するかを判定する。
【0059】
存在する場合(ステップS303:YES)は、処理をステップS304に移行する。
【0060】
存在しない場合(ステップS303:NO)は、本フローチャートに示す処理を終了する。
【0061】
なお、ステップS310を実行後の場合には、ステップS303〜S310までの処理を実行していない候補矩形が存在するか否かを判定する処理となる。すなわち、本実施例においては、ステップS302で抽出された候補矩形ごとにステップS303〜S310の処理を繰り返し実行するものである。
【0062】
ステップS304では、サーバ装置102のCPU201は、処理対象の候補矩形における画像特徴量を算出する。
【0063】
ステップS305では、サーバ装置102のCPU201は、ステップS304で算出した特徴量とステップS301で読み込んだ学習済み画像の特徴量とを比較する。
【0064】
図8は、動画中の1フレーム(t)について、候補矩形を抽出し、当該候補矩形における画像と学習済み画像との類似度を算出した結果を示す模式図である。
【0065】
図8の例では、フレーム(t)における候補矩形の座標は(x1,y1,x2,y2)であり、類似度は0.9であることを示している。
【0066】
ステップS306では、サーバ装置102のCPU201は、ステップS305における比較の結果、特徴量の類似度が閾値以上であるかを判定する。すなわち、候補矩形における物体が発情行動をしている牛であるか(検出対象の動作を行っている物体であるか)を判定する。
【0067】
閾値以上である場合(ステップS306:YES)は、処理をステップS307に移行する。
【0068】
閾値に満たない場合(ステップS306:NO)は、処理をステップS309に移行する。
【0069】
ステップS307では、サーバ装置102のCPU201は、見え判定フラグをTrueに設定する。
【0070】
ステップS308では、サーバ装置102のCPU201は、処理対象の候補矩形の領域情報を保持する。領域情報は、例えば座標情報(x1、y1、x2、y2)等の情報である。
【0071】
ステップS309では、サーバ装置102のCPU201は、見え判定フラグをFalseに設定する。
【0072】
ステップS310では、サーバ装置102のCPU201は、ステップS302で抽出された候補矩形のうち、S303〜S310の処理を実行していない候補矩形を取得する。
【0073】
ステップS302で抽出されたすべての候補矩形について、S303〜S310の処理が実行されると(ステップS303:NO)、本フローチャートの処理を終了し、処理をステップS202に移行する。
【0074】
ステップS202では、サーバ装置102のCPU201は、見え判定フラグにTrueが設定されているか否かを判定する。
【0075】
Trueが設定されている場合(ステップS202:YES)は、処理をステップS203に移行する。
【0076】
Falseが設定されている場合(ステップS202:NO)は、処理をステップS207に移行する。
【0077】
ステップS203では、サーバ装置102のCPU201は、ステップS308で保持した領域情報を取得する。
【0078】
ステップS204では、サーバ装置102のCPU201は、動き情報(動画)による発情判定処理を実行する。
【0079】
動き情報による発情判定処理の詳細は、
図6のフローチャートを用いて説明する。
【0080】
図6は、ステップS204における動き情報による発情判定処理を示すフローチャートである。
【0081】
ステップS401では、サーバ装置102のCPU201は、対象オブジェクト領域(ステップS308で保持した座標情報により特定される領域)の情報を読み込む。
【0082】
ステップS402では、サーバ装置102のCPU201は、領域情報の有無を判定し、領域情報が無い場合は、処理をステップS411に移行する。領域情報がある場合は処理をステップS403に移行する。
【0083】
ステップS403では、サーバ装置102のCPU201は、処理対象のフレーム画像の前のフレーム画像が存在するかを判定する。
【0084】
存在する場合(ステップS403:YES)は、処理をステップS404に移行する。
【0085】
存在しない場合(ステップS403:NO)は、処理をステップS411に移行する。
【0086】
ステップS404では、サーバ装置102のCPU201は、前フレームから対象オブジェクト領域の画像を取得する。すなわち、前フレームの画像から、ステップS308で保持した座標情報と同じ座標情報で特定される領域を取得する。
【0087】
ステップS405では、サーバ装置102のCPU201は、処理対象のフレーム画像から対象オブジェクト領域の画像を取得する。
【0088】
ステップS406では、サーバ装置102のCPU201は、ステップS404とS405で取得した2つの画像から、OpticalFlow特徴量を算出する。
【0089】
OpticalFlow特徴量の算出方法については、公知の技術としていくつかの手法があるが、いずれの手法を用いても良い。また、本実施例においては、動き情報の特徴量を算出するにあたりOpticalFlow特徴量を用いるが、動き情報の特徴量の算出方法はOpticalFlowを用いた手法に限らず、いずれの方法であっても良い。
【0090】
ステップS407では、サーバ装置102のCPU201は、ステップS406で算出したOpticalFlow特徴量を対象オブジェクト領域のサイズで除算することで、動き情報の特徴量を算出する。
【0091】
ステップS408では、サーバ装置102のCPU201は、ステップS407で算出した動き情報の特徴量が閾値以上であるかを判定する。すなわち、牛の動きに基づき、発情行動をしているか否か(動作から算出された特徴量に基づき、当該動作が検出対象の動作であるか否か)を判定する。
【0092】
閾値以上である場合(ステップS408:YES)は、処理をステップS409に移行する。
【0093】
閾値を満たさない場合(ステップS408:NO)は、処理をステップS410に移行する。
【0094】
ステップS409では、サーバ装置102のCPU201は、動き判定フラグにTrueを設定する。
【0095】
ステップS410では、サーバ装置102のCPU201は、次の対象オブジェクト領域を取得し、当該対象オブジェクト領域に対する処理に移行する。そして、本フローチャートに示す処理を終了し、処理をステップS205に戻す。
【0096】
ステップS411では、サーバ装置102のCPU201は、動き判定フラグにFalseを設定する。そして、本フローチャートに示す処理を終了し、処理をステップS205に戻す。
【0097】
ステップS205では、サーバ装置102のCPU201は、ステップS204における処理の結果、動き判定フラグにTrueが設定されたか否かを判定する。すなわち、動き情報を用いた発情行為判定処理により、発情行為が検知されたか否かを判定する。
【0098】
動き判定フラグがTrueの場合(ステップS205:YES)は、処理をステップS206に移行する。
【0099】
動き判定フラグがFalseの場合(ステップS205:NO)は、処理をステップS207に移行する。
【0100】
ステップS206では、サーバ装置102のCPU201は、ステップS201、S204の処理により発情している牛がいると判定されたため、発情判定フラグをTrueに設定する。
【0101】
ステップS207では、サーバ装置102のCPU201は、ステップS201、S204の処理により発情している牛を検知できなかったため、発情判定フラグをFalseに設定する。
【0102】
ステップS208では、サーバ装置102のCPU201は、処理対象のフレーム画像を保持する。本ステップにおいて保持したフレーム画像は、次のフレーム画像に対する処理において、動き特徴量を計算する処理にて使用する。
【0103】
図9は、フレーム画像(t)とその前後のフレーム画像を示す模式図である。
図10は、
図9における各フレーム画像から抽出された候補矩形(対象オブジェクト領域)を示す図である。
【0104】
以上説明したように、本発明は、まず見え情報(静止画)により発情行為が行われているかの検出と、当該行為を行っている牛が映っている領域を特定し、当該特定された領域について、動き情報(動画)により発情行為が行われているかを判定することを特徴とする。
【0105】
このように、見え情報だけでなく動き情報を用いることで、見え情報だけでは発情行為か否かの判断が困難なケース(例えば単に乗駕行動をしているだけの場合や、2頭の牛が重なって立っている場合)であっても、より正確に判断することが可能となる。
【0106】
また、動画情報だけの場合には処理対象のデータサイズが大きいため判定処理に時間がかかるが、静止画により発情行動をしている牛が映っている領域を特定し、当該特定された領域に対して動き情報を用いた判定処理を行うことで、少ないデータサイズに対する処理が可能となるため、処理時間の短縮をすることが可能となる。
【0107】
また、牛の身体に特別なセンサを取り付けることなく牛の乗駕行動の有無を発見するため、コスト面や取り付けの手間、牛へのストレスも低減することが可能となる。また、カメラで撮影できる場所であれば牛がどこにいても発情行動を検出することができるため、牛の居場所について制約がない。また、乗駕行動などによって発情しているかを判断するため、歩数や行動量での判断に比べて発情状態であることを高精度で判定することが可能となる。
【0108】
なお、本実施例においては、牛の発情行動の検知への適用を前提として説明したが、本発明の適用対象は牛の発情行動の検知に限られず、動画データから特定の動きの検知する仕組みとして、様々な対象に適用可能である。
【0109】
本発明におけるプログラムは、
図3〜
図6の処理をコンピュータに実行させるプログラムである。なお、本発明におけるプログラムは、
図3〜
図6の各処理ごとのプログラムであってもよい。
【0110】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0111】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0112】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、DVD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0113】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0114】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0115】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0116】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。