(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
【0011】
図1は、第1の実施の形態に係る情報処理システムの一例を示す図である。第1の実施の形態は、カメラ1から配信されるフレームを画像処理装置20が画像処理を実行する実行時間に基づいて、カメラ1がフレームを配信する時間間隔を更新するものである。
【0012】
カメラ1は、動画を撮影可能なカメラである。カメラ1は、一定の時間間隔でフレームを配信する。フレームは、動画のある時点での静止画(コマ)を示すデータである。なお、一定の時間間隔で配信されるフレームは、他のコマとの差分データであってもよい。カメラ1は、ネットワークを介して画像処理装置20に接続されている。カメラ1と画像処理装置20とが接続されているネットワークには、他のカメラや他の装置が接続されていてもよい。
【0013】
画像処理装置20は、カメラ1から配信されるフレームに対する画像処理を実行するコンピュータである。画像処理装置20は、サーバコンピュータであってもよいし、クライアントコンピュータであってもよい。画像処理装置20は、計算装置2および情報処理装置10を含む。計算装置2は、画像処理を実行する。計算装置2は、例えば、アクセラレータまたは、プロセッサとアクセラレータとを組み合わせたものによって画像処理を実行する。なお、計算装置2は、複数のコンピュータであってもよい。
【0014】
情報処理装置10は、画像処理装置20を制御する。情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、情報処理装置10が用いるデータを記憶する。記憶部11は、例えば、情報処理装置10が有するメモリまたはストレージ装置である。記憶部11は、カメラ1から配信されるフレームを記憶する。つまり、記憶部11には、一定時間ごとに新しいフレームが追加される。なお、記憶部11は、一定期間にカメラ1から配信されたフレームを記憶していてもよいし、最新のフレームのみを記憶していてもよい。処理部12は、情報処理装置10を制御し、所要の処理を実行可能である。処理部12は、例えば、情報処理装置10が有するプロセッサまたは演算回路である。
【0015】
処理部12は、フレーム3を計算装置2に送信する。フレーム3は、記憶部11に記憶されたフレームのうちの一のフレームである。処理部12は、フレーム3に対する画像処理を計算装置2に実行させる。計算装置2が実行する画像処理は、計算装置2が有するアクセラレータによって、処理部12が実行するよりも高速に実行可能な処理である。計算装置2が実行する画像処理は、例えば、フレーム3から人物を検出し、検出した人物が所定の条件を満たすか否かを判定する処理である。
【0016】
計算装置2による画像処理が終了すると、処理部12は、計算装置2から画像処理の結果を取得する。処理部12は、計算装置2から取得した画像処理の結果を出力する。例えば、処理部12は、画像処理の結果を図示しない表示部に表示させてもよいし、記憶部11に格納してもよい。
【0017】
また、処理部12は、フレーム3に対する画像処理を計算装置2が実行する実行時間を計測する。なお、画像処理の実行時間は、処理部12による計算装置2へのフレーム3の送信にかかった時間を含む。また、画像処理の実行時間は、処理部12による画像処理の結果の出力にかかった時間を含む。
【0018】
そして、処理部12は、カメラ1がフレームを配信する時間間隔を画像処理の実行時間に基づいて更新する。例えば、処理部12は、カメラ1がフレームを配信する時間間隔を画像処理の実行時間に更新する。なお、処理部12は、画像処理の実行時間を複数回測定してもよい。そして、処理部12は、カメラ1がフレームを配信する時間間隔を、複数回の画像処理の実行時間に基づいて更新してもよい。例えば、処理部12は、カメラ1がフレームを配信する時間間隔を、複数回の画像処理の実行時間の最大値、最小値、中央値、平均値などに更新してもよい。
【0019】
第1の実施の形態によれば、処理部12は、一定の時間間隔でフレームを配信するカメラ1から配信されるフレーム3に対する画像処理を計算装置2が実行する実行時間を計測する。そして、処理部12は、カメラ1がフレームを配信する時間間隔を実行時間に基づいて更新する。これにより、情報処理装置10は、計算装置2の処理能力に対して過剰なフレームがカメラ1から配信されることを抑制できる。よって、情報処理装置10は、ネットワークの負荷を軽減することができる。
【0020】
また、記憶部11は、カメラ1から配信されるフレームを記憶する。処理部12は、記憶部11に記憶されたフレームのうちのフレーム3を計算装置2に送信する。そして、処理部12は、計算装置2へのフレーム3の送信にかかった時間を含む実行時間を計測する。これにより、情報処理装置10は、計算装置2へのフレーム3の送信に時間がかかる場合でも、カメラ1がフレームを配信する時間間隔を適切に更新できる。
【0021】
また、処理部12は、計算装置2から画像処理の結果を取得し、画像処理の結果を出力する。そして、処理部12は、画像処理の結果の出力にかかった時間を含む実行時間を計測する。これにより、情報処理装置10は、画像処理の結果の出力に時間がかかる場合でも、カメラ1がフレームを配信する時間間隔を適切に更新できる。
【0022】
なお、処理部12は、カメラ1がフレームを配信する時間間隔が実行時間よりも第1の所定時間以上短い場合またはカメラ1がフレームを配信する時間間隔が実行時間よりも第2の所定時間以上長い場合、カメラ1がフレームを配信する時間間隔を更新してもよい。これにより、情報処理装置10は、計算装置2の処理能力に対して適切な頻度でカメラ1にフレームを配信させることができる。
【0023】
また、カメラ1は、複数存在してもよい。また、計算装置2は、複数のカメラ1それぞれから配信される一のフレームに対する複数の画像処理を実行してもよい。また、処理部12は、複数の画像処理の複数の実行時間それぞれを計測し、複数の実行時間それぞれに基づいて、複数のカメラ1それぞれがフレームを配信する時間間隔を更新してもよい。これにより、情報処理装置10は、複数のカメラ1それぞれについて、フレームを配信する時間間隔を適切に更新できる。
【0024】
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、カメラがフレームを配信する時間間隔を、フレームに対する画像処理を実行する計算装置の処理能力に応じて更新するものである。
【0025】
図2は、第2の実施の形態に係る情報処理システムの一例を示す図である。第2の実施の形態の情報処理システムは、カメラ21−1,21−2,・・・および画像処理装置300を有する。カメラ21−1,21−2,・・・は、動画を撮影可能なカメラである。カメラ21−1,21−2,・・・は、例えば、店舗などに設置される防犯カメラである。カメラ21−1,21−2,・・・は、ネットワーク30を介して画像処理装置300に接続されている。ネットワーク30は、例えば、LAN(Local Area Network)である。カメラ21−1,21−2,・・・は、画像処理装置300に、一定の時間間隔で現在のフレームを配信する。
【0026】
画像処理装置300は、カメラ21−1,21−2,・・・が撮影した動画に対する画像処理を用いたサービスを提供するコンピュータである。例えば、画像処理装置300は、カメラ21−1,21−2,・・・が撮影した動画から不審者を検出するサービスを提供する。画像処理装置300は、カメラ21−1,21−2,・・・から配信されたフレームに対する画像処理をリアルタイムで実行する。
【0027】
ここで、画像処理装置300は、画像処理の実行にかかる実行時間を測定する。そして、画像処理装置300は、画像処理の実行時間に応じて、カメラ21−1,21−2,・・・がフレームを配信する時間間隔を更新する。なお、ネットワーク30には、他の情報処理装置や他のデバイスがさらに接続されていてもよい。
【0028】
図3は、画像処理装置のハードウェアの一構成例を示す図である。画像処理装置300は、中継装置22、情報処理装置100および計算装置200−1,200−2,・・・を有する。情報処理装置100は、画像処理装置300を制御する。情報処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0029】
メモリ102は、情報処理装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えば、RAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0030】
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、媒体リーダ106、ネットワークインタフェース107および接続インタフェース108がある。
【0031】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0032】
グラフィック処理装置104には、モニタ31が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ31の画面に表示させる。モニタ31としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0033】
入力インタフェース105は、情報処理装置100に接続された入力デバイス32から入力信号を取得し、プロセッサ101に出力する。入力デバイス32としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0034】
媒体リーダ106は、記録媒体33に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体33として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0035】
ネットワークインタフェース107は、ネットワーク30に接続されている。ネットワークインタフェース107は、ネットワーク30を介して、カメラ21−1,21−2,・・・との間でデータの送受信を行う。カメラ21−1,21−2,・・・は、カメラ21−1,21−2,・・・のレンズを向けた先の光景の動画のデータを生成する。カメラ21−1,21−2,・・・は、一定の時間間隔で、現在生成したフレームを情報処理装置100に送信する。
【0036】
接続インタフェース108は、中継装置22に接続されている。接続インタフェース108は、中継装置22を介して、計算装置200−1,200−2,・・・との間でデータの送受信を行う。中継装置22は、例えば、PCI Express(Peripheral Component Interconnect Express:PCIe、登録商標)の拡張バスを含むブリッジコントローラである。そして、プロセッサ101がホスト側として動作するRC(Root Complex)となり、中継装置22がデバイス側として動作するEP(End Point)となるように、接続インタフェース108が中継装置22に接続される。
【0037】
計算装置200−1,200−2,・・・は、情報処理装置100の命令に従って画像処理を実行する。計算装置200−1は、プロセッサ201によって装置全体が制御されている。プロセッサ201には、バス206を介してメモリ202と複数の周辺機器が接続されている。プロセッサ201は、マルチプロセッサであってもよい。プロセッサ201は、例えば、CPU、MPU、またはDSPである。プロセッサ201がプログラムを実行することで実現する機能の少なくとも一部を、ASIC、PLDなどの電子回路で実現してもよい。
【0038】
メモリ202は、計算装置200−1の主記憶装置として使用される。メモリ202には、プロセッサ201に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ202には、プロセッサ201による処理に利用する各種データが格納される。メモリ202としては、例えば、RAMなどの揮発性の半導体記憶装置が使用される。
【0039】
バス206に接続されている周辺機器としては、不揮発性メモリ203、アクセラレータ204および接続インタフェース205がある。不揮発性メモリ203は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。不揮発性メモリ203は、コンピュータの補助記憶装置として使用される。不揮発性メモリ203には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、不揮発性メモリ203としては、例えば、フラッシュメモリを使用することができる。
【0040】
アクセラレータ204は、並列演算処理に適したプロセッサである。アクセラレータ204としては、例えば、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)を使用することができる。
【0041】
接続インタフェース205は、中継装置22に接続されている。接続インタフェース205は、中継装置22を介して、情報処理装置100との間でデータの送受信を行う。例えば、PCIeの拡張バスを含むブリッジコントローラである中継装置22がEP、プロセッサ201がRCとなるように、接続インタフェース205が中継装置22に接続される。なお、接続インタフェース205は、中継装置22を介して、計算装置200−2,・・・との間でデータの送受信が可能であってもよい。
【0042】
情報処理装置100および計算装置200−1は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、
図3に示した情報処理装置100と同様のハードウェアにより実現することができる。また、プロセッサ101は、第1の実施の形態に示した処理部12の一例である。また、メモリ102またはストレージ装置103は、第1の実施の形態に示した、記憶部11の一例である。また、計算装置200−2,・・・および第1の実施の形態に示した計算装置2も、
図3に示した計算装置200−1と同様のハードウェアにより実現することができる。
【0043】
情報処理装置100は、例えば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。情報処理装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、情報処理装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また、情報処理装置100に実行させるプログラムを、記録媒体33に記録しておくこともできる。記録媒体33に格納されたプログラムは、例えば、プロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。また、プロセッサ101が、記録媒体33から直接プログラムを読み出して実行することもできる。
【0044】
計算装置200−1は、例えば、コンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。計算装置200−1に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、計算装置200−1に実行させるプログラムを不揮発性メモリ203に格納しておくことができる。プロセッサ201およびアクセラレータ204は、不揮発性メモリ203内のプログラムの少なくとも一部をメモリ202にロードし、プログラムを実行する。また、計算装置200−1に実行させるプログラムを、記録媒体33に記録しておくこともできる。情報処理装置100に接続された記録媒体33に格納されたプログラムは、例えば、プロセッサ101の制御により、不揮発性メモリ203にインストールされた後、実行可能となる。またプロセッサ201およびアクセラレータ204が、記録媒体33から直接プログラムを読み出して実行することもできる。
【0045】
第2の実施の形態では、情報処理装置100は、1つのカメラから配信されるフレームに対する画像処理を、対応する1つの計算装置に実行させる。以下では、情報処理装置100が、カメラ21−1から配信されるフレームを計算装置200−1に画像処理させる場合について説明する。
【0046】
次に、画像処理装置300の機能について詳細に説明する。
図4は、画像処理装置の機能例を示すブロック図である。情報処理装置100は、バッファ120、フレーム処理部130、結果記憶部140、および配信間隔更新部150を有する。バッファ120および結果記憶部140は、メモリ102またはストレージ装置103の記憶領域を用いて実現される。フレーム処理部130および配信間隔更新部150は、メモリ102に記憶されたプログラムをプロセッサ101が実行することで実現される。
【0047】
バッファ120は、フレーム121−1,121−2,121−3,・・・を記憶する。フレーム121−1,121−2,121−3,・・・は、カメラ21−1から一定の時間間隔で配信されるフレームである。なお、画像処理が行われたフレームは、バッファ120から削除される。
【0048】
フレーム処理部130は、計算装置200−1に画像処理を実行させ、画像処理の結果を出力する。フレーム処理部130は、バッファ120に記憶されたフレームのうち、撮影された時刻が最も古いフレーム(例えば、フレーム121−1)に対して前処理を行う。例えば、フレーム処理部130は、フレーム121−1に対する前処理として、フレーム121−1を計算装置200−1が処理できる形式に変換するデコード処理を実行する。フレーム処理部130は、前処理したフレーム121−1を計算装置200−1に送信し、計算装置200−1に画像処理を実行させる。フレーム処理部130は、計算装置200−1による画像処理の結果を取得し、取得した画像処理の結果を結果記憶部140に格納する。なお、フレーム処理部130は、計算装置200−1による画像処理の結果をモニタ31に表示させてもよい。
【0049】
配信間隔更新部150は、計算装置200−1による画像処理の実行時間を計測し、計測した実行時間に基づいて、カメラ21−1がフレームを配信する時間間隔を更新する。配信間隔更新部150は、フレーム処理部130が前処理を実行してから画像処理の結果を出力するまでの実行時間を計測する。ここで、配信間隔更新部150は、あらかじめ設定された指定回数だけ実行時間を計測する。配信間隔更新部150は、複数回の実行時間に基づいて、カメラ21−1がフレームを配信する時間間隔を更新する。例えば、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔を、配信間隔更新部150が計測した複数回の実行時間のうち最大の実行時間に更新する。
【0050】
計算装置200−1は、画像処理部220を有する。画像処理部220は、メモリ202に記憶されたプログラムをプロセッサ201およびアクセラレータ204が実行することで実現される。画像処理部220は、情報処理装置100から取得したフレーム121−1に対して、画像処理を実行する。例えば、画像処理部220は、画像処理として、フレーム121−1から人物を検出し、検出した人物が所定の条件を満たすか否かを判定する処理を実行する。
【0051】
画像処理部220は、画像処理の結果を出力し、出力した画像処理の結果を情報処理装置100に送信する。例えば、画像処理部220は、フレーム121−1から検出した人物が所定の条件を満たすか否かを判定する処理の結果として、所定の条件を満たす人物の位置に印をつけたフレーム121−1を出力する。また、例えば、画像処理部220は、第2の実施の形態の情報処理システムが設置された施設内における検出した人物の位置を示す位置情報(座標情報)、判定精度、満たした条件を示すラベルなどのメタデータを出力してもよい。なお、
図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【0052】
次に、計算装置200−1による画像処理について説明する。
図5は、画像処理の一例を示す図である。計算装置200−1の画像処理部220は、情報処理装置100から取得したフレームに写る所定の条件を満たす人物(例えば、不審者)を検出し、不審者に印をつけたフレームを出力する。
【0053】
フレーム41は、情報処理装置100から計算装置200−1に送信されたフレームである。画像処理部220は、フレーム41から人物を検出する。例えば、画像処理部220は、入力画像に写る人物を囲う検出枠を出力する学習済みモデルに、フレーム41を入力する。
【0054】
フレーム42は、フレーム41に対する人物検出の結果を示すフレームである。フレーム42は、フレーム41から検出された人物を囲う枠(検出枠)がフレーム41に追加されたものである。画像処理部220は、フレーム41から検出された人物それぞれが不審者であるか否かを判定する。例えば、画像処理部220は、フレーム42に含まれる検出枠内の画像それぞれを、入力画像に写る人物が不審者であるか否かを判定する学習済みモデルに入力する。
【0055】
フレーム43は、フレーム41から検出された不審者に印がついたフレームである。フレーム43は、不審者と判定された人物の検出枠がフレーム41に追加されたものである。画像処理部220は、フレーム41に対する画像処理の結果として、フレーム43を情報処理装置100に送信する。
【0056】
そして、情報処理装置100のフレーム処理部130は、フレーム43を結果記憶部140に格納する。このようにして、結果記憶部140には、写っている不審者に印がついた、一定時間間隔のフレーム(つまり、動画)が格納される。また、フレーム処理部130は、フレーム43をモニタ31に表示させてもよい。これにより、フレーム処理部130は、第2の実施の形態の情報処理システムが設置された施設内に不審者がいることを、モニタ31を見ているユーザにリアルタイムで通知できる。
【0057】
なお、上記の例では、画像処理部220がフレーム43を生成しているが、画像処理部220は検出枠の位置のみを生成し、フレーム処理部130がフレーム41と検出枠の位置とに基づいてフレーム43が生成してもよい。また、画像処理部220は、検出した人物の座標情報、判定精度、満たした条件を示すラベルなどのメタデータを生成し、フレーム処理部130がフレーム41の検出された人物の近傍にメタデータの表示を追加したフレームを生成してもよい。
【0058】
以下、配信間隔更新処理の手順について、詳細に説明する。なお、画像処理にかかる時間はキャッシュヒット率に応じて変化するため、配信間隔更新処理は、画像処理にかかる時間が安定した後(例えば、画像処理を用いたサービスの運用開始から5分後)に実行されることが好ましい。
【0059】
図6は、配信間隔更新処理の手順の一例を示すフローチャートである。以下、
図6に示す処理をステップ番号に沿って説明する。
[ステップS11]情報処理装置100の配信間隔更新部150は、バッファ120にフレームがあるか否かを判定する。配信間隔更新部150は、バッファ120にフレームがあると判定した場合、処理をステップS13に進める。また、配信間隔更新部150は、バッファ120にフレームがないと判定した場合、処理をステップS12に進める。
【0060】
[ステップS12]配信間隔更新部150は、一定時間待機する。そして、処理がステップS11に進む。つまり、配信間隔更新部150は、カメラ21−1からバッファ120にフレームが配信されるまで待機する。
【0061】
[ステップS13]配信間隔更新部150は、実行時間の計測を開始する。
[ステップS14]情報処理装置100のフレーム処理部130は、バッファ120に記憶されたフレームのうち、撮影された時刻が最も古いフレーム(例えば、フレーム121−1)に対して前処理を行う。例えば、フレーム処理部130は、フレーム121−1に対する前処理として、フレーム121−1を計算装置200−1が処理できる形式に変換するデコード処理を実行する。
【0062】
[ステップS15]フレーム処理部130は、ステップS14で前処理したフレーム121−1を計算装置200−1に送信し、計算装置200−1に画像処理を実行させる。
[ステップS16]計算装置200−1の画像処理部220は、情報処理装置100から取得したフレーム121−1に対して、画像処理を実行する。例えば、画像処理部220は、画像処理として、フレーム121−1から人物を検出し、検出した人物が不審者であるか否かを判定する処理を実行する。
【0063】
[ステップS17]画像処理部220は、画像処理の結果を情報処理装置100に送信する。例えば、画像処理部220は、検出した不審者に印をつけたフレーム121−1を情報処理装置100に送信する。
【0064】
[ステップS18]フレーム処理部130は、計算装置200−1による画像処理の結果を取得し、取得した画像処理の結果を出力する。例えば、フレーム処理部130は、検出した不審者に印をつけたフレーム121−1を結果記憶部140に格納する。また、例えば、フレーム処理部130は、検出した不審者に印をつけたフレーム121−1をモニタ31に表示させる。
【0065】
[ステップS19]配信間隔更新部150は、実行時間計測を終了する。配信間隔更新部150は、ステップS14〜ステップS18までの時間を実行時間として計測する。
[ステップS20]配信間隔更新部150は、実行時間を指定回数計測したか否かを判定する。配信間隔更新部150は、実行時間を指定回数計測したと判定した場合、処理をステップS21に進める。また、配信間隔更新部150は、実行時間を指定回数計測していないと判定した場合、処理をステップS11に進める。
【0066】
[ステップS21]配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔を更新する。例えば、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔を、指定回数計測した実行時間のうち最大の実行時間に更新する。
【0067】
このように、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔を、計算装置200−1に指定回数実行させた画像処理の実行時間のうち最大の実行時間に更新する。なお、計算装置200−1が実行する複数回の画像処理の実行時間は大きく変わらないため、配信間隔更新部150は、フレームの配信間隔と画像処理の実行時間とを同程度にすることができる。フレームの配信間隔と画像処理の実行時間とが同程度になることによる効果を、以下の
図7を参照して説明する。
【0068】
図7は、更新後のカメラの配信間隔の一例を示す図である。カメラ21−1は、一定の生成間隔でフレームを生成し、一定の配信間隔で現在生成したフレームを情報処理装置100に配信する。以下では一例として、配信間隔更新部150は、カメラ21−1によるフレームの配信間隔を、カメラ21−1によるフレームの生成間隔の4倍に更新したものとする。
【0069】
カメラ21−1は、一定の生成間隔で、フレーム44−1,44−2,44−3,44−4,44−5を生成する。カメラ21−1は、フレーム44−1を生成すると、フレーム44−1を情報処理装置100に配信する。情報処理装置100のフレーム処理部130は、カメラ21−1から配信されたフレーム44−1を計算装置200−1に送信し、計算装置200−1に画像処理を実行させる。計算装置200−1の画像処理部220は、フレーム44−1に対して画像処理を実行する。
【0070】
画像処理部220による画像処理は、フレーム44−4が生成される時刻とフレーム44−5が生成される時刻との間に終了したものとする。画像処理部220は、画像処理が終了すると、画像処理の結果を情報処理装置100に送信する。フレーム処理部130は、画像処理の結果を出力する。
【0071】
カメラ21−1は、フレーム44−5を生成すると、フレーム44−1を配信してから配信間隔だけ経過したため、フレーム44−5を情報処理装置100に配信する。情報処理装置100のフレーム処理部130は、カメラ21−1から配信されたフレーム44−5を計算装置200−1に送信し、計算装置200−1に画像処理を実行させる。計算装置200−1の画像処理部220は、フレーム44−5に対して画像処理を実行する。
【0072】
このように、カメラ21−1は、配信間隔更新部150が更新した配信間隔でフレーム44−1,44−5を情報処理装置100に配信する。つまり、カメラ21−1は、フレーム44−2,44−3,44−4を情報処理装置100に配信しない。カメラ21−1がフレーム44−2を情報処理装置100に配信しても、画像処理部220がフレーム44−1に対する画像処理を実行中であるため、フレーム処理部130は、フレーム44−2に対する画像処理を計算装置200−1に実行させることができない。カメラ21−1がフレーム44−3,44−4を情報処理装置100に配信する場合も同様である。よって、配信間隔更新部150は、カメラ21−1のフレームを配信する時間間隔を更新することで、情報処理装置100に余分なフレームを配信することを抑止できる。これにより、配信間隔更新部150は、カメラ21−1と情報処理装置100とが接続されるネットワーク30の負荷を軽減することができる。
【0073】
なお、フレームを取得する他の方法として、計算装置200−1による画像処理が終了したときに、カメラ21−1が生成した最新のフレームを取得する方法が考えられる。しかし、画像処理が終了したときにカメラ21−1からフレームを取得する方法では、情報処理装置100がフレームを取得する時間間隔は、画像処理にかかった時間によって異なる。すると、画像処理の結果として出力されるフレームを連結した動画は、フレームの間隔が異なる不自然な動画になる。これに対して、第2の実施の形態では、カメラ21−1は、情報処理装置100に一定の時間間隔でフレームを配信する。よって、画像処理の結果として出力されるフレームを連結した動画は、フレームの間隔が均等で自然な動画になる。
【0074】
以下、画像処理を用いたサービスの運用時処理の手順について、詳細に説明する。
図8は、運用時処理の手順の一例を示すフローチャートである。以下、
図8に示す処理をステップ番号に沿って説明する。
【0075】
[ステップS31]配信間隔更新部150は、計算装置200−1による画像処理の実行時間を計測する。例えば、ステップS31の処理として、
図6に示したステップS11〜ステップS19の処理が実行される。
【0076】
[ステップS32]配信間隔更新部150は、計算装置200−1による画像処理の実行時間がカメラ21−1がフレームを配信する時間間隔以上であるか否かを判定する。つまり、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔が計算装置200−1による画像処理の実行時間よりも(0[秒]以上)短いか否かを判定する。なお、0[秒]は、第1の実施の形態に示した、第1の所定時間の一例である。配信間隔更新部150は、計算装置200−1による画像処理の実行時間がカメラ21−1がフレームを配信する時間間隔以上であると判定した場合、処理をステップS34に進める。また、配信間隔更新部150は、計算装置200−1による画像処理の実行時間がカメラ21−1がフレームを配信する時間間隔未満であると判定した場合、処理をステップS33に進める。
【0077】
[ステップS33]配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔と計算装置200−1による画像処理の実行時間との差(待ち時間)が所定時間以上であるか否かを判定する。つまり、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔が計算装置200−1による画像処理の実行時間よりも所定時間以上長いか否かを判定する。なお、所定時間は、第1の実施の形態に示した、第2の所定時間の一例である。配信間隔更新部150は、待ち時間が所定時間以上であると判定した場合、処理をステップS34に進める。また、配信間隔更新部150は、待ち時間が所定時間未満であると判定した場合、処理をステップS31に進める。
【0078】
[ステップS34]配信間隔更新部150は、実行時間が配信間隔以上であるまたは待ち時間が所定時間以上であることが所定回数以上発生したか否かを判定する。配信間隔更新部150は、実行時間が配信間隔以上であるまたは待ち時間が所定時間以上であることが所定回数以上発生したと判定した場合、処理をステップS35に進める。また、配信間隔更新部150は、実行時間が配信間隔以上であるまたは待ち時間が所定時間以上であることが所定回数以上発生していないと判定した場合、処理をステップS31に進める。
【0079】
[ステップS35]配信間隔更新部150は、配信間隔更新処理を実行する。ステップS35の処理として、
図6に示した配信間隔更新処理が実行される。そして、処理がステップS31に進む。
【0080】
このように、配信間隔更新部150は、実行時間が配信間隔以上である場合または待ち時間が所定時間以上である場合に配信間隔を更新する。これにより、配信間隔更新部150は、画像処理を用いたサービスの運用を開始するときに更新した配信間隔が不適切になった場合、配信間隔を適切に更新することができる。実行時間が配信間隔以上である場合または待ち時間が所定時間以上である場合に配信間隔を更新することによる効果を、以下の
図9および
図10を参照して説明する。
【0081】
図9は、配信間隔更新による効果を説明するための図(その1)である。配信間隔更新部150は、実行時間が配信間隔以上である場合に配信間隔を更新することで、フレームが配信されてから画像処理が実行されるまでの遅れ時間の発生を抑制することができる。なお、
図9では、実行時間は長方形の長さで示され、遅れ時間は両矢印の長さで示される。
【0082】
グラフ51は、実行時間が配信間隔以上である場合の実行時間と配信間隔との関係を示す。グラフ51に示す例では、画像処理部220は、カメラ21−1がフレームを配信する時間間隔より長い一定の実行時間で画像処理を実行する。すると、フレームが配信されてから画像処理が実行されるまでの遅れ時間が発生する。画像処理の実行時間がフレームの配信時間間隔より長い場合、画像処理の実行回数が増加することで、遅れ時間は増加する。遅れ時間が画像処理の実行時間を超えると、カメラ21−1から配信されるフレームがバッファ120に複数溜まる。バッファ120に複数のフレームが溜まると、フレーム処理部130が最新のフレーム以外のフレームに対する画像処理を計算装置200−1に実行させるため、画像処理のリアルタイム性は損なわれる。
【0083】
グラフ52は、配信間隔が実行時間と同程度に更新された場合の実行時間と配信間隔との関係を示す。グラフ52に示す例では、画像処理部220は、カメラ21−1がフレームを配信する時間間隔と同程度の実行時間で画像処理を実行する。配信間隔が実行時間と同程度の場合、遅れ時間の発生が抑制される。よって、配信間隔更新部150は、実行時間が配信間隔以上である場合に配信間隔を更新することで、計算装置200−1に画像処理をリアルタイムに実行させることができる。
【0084】
図10は、配信間隔更新による効果を説明するための図(その2)である。配信間隔更新部150は、待ち時間が所定時間以上である場合に配信間隔を更新することで、待ち時間の発生を抑制することができる。なお、
図10では、実行時間は長方形の長さで示され、待ち時間は両矢印の長さで示される。
【0085】
グラフ61は、待ち時間が所定時間以上である場合の実行時間と配信間隔との関係を示す。グラフ61に示す例では、画像処理部220は、カメラ21−1がフレームを配信する時間間隔より所定時間以上短い一定の実行時間で画像処理を実行する。すると、画像処理が実行されてから次の画像処理が実行されるまで、計算装置200−1が処理を実行しない待ち時間が発生する。
【0086】
グラフ62は、配信間隔が実行時間と同程度に更新された場合の実行時間と配信間隔との関係を示す。グラフ62に示す例では、画像処理部220は、カメラ21−1がフレームを配信する時間間隔と同程度の実行時間で画像処理を実行する。配信間隔が実行時間と同程度の場合、待ち時間の発生が抑制される。よって、配信間隔更新部150は、待ち時間が所定時間以上である場合に配信間隔を更新することで、計算装置200−1のリソースを有効活用することができる。
【0087】
第2の実施の形態によれば、配信間隔更新部150は、一定の時間間隔でフレームを配信するカメラ21−1から配信されるフレームに対する画像処理を計算装置200−1が実行する実行時間を計測する。そして、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔を実行時間に基づいて更新する。これにより、情報処理装置100は、計算装置200−1の処理能力に対して過剰なフレームがカメラ21−1から配信されることを抑制できる。よって、情報処理装置100は、ネットワーク30の負荷を軽減することができる。
【0088】
また、バッファ120は、カメラ21−1から配信されるフレーム121−1,121−2,121−3,・・・を記憶する。フレーム処理部130は、バッファ120に記憶されたフレーム121−1,121−2,121−3,・・・のうちのフレーム121−1を計算装置200−1に送信する。そして、配信間隔更新部150は、計算装置200−1へのフレーム121−1の送信にかかった時間を含む実行時間を計測する。これにより、情報処理装置100は、計算装置200−1へのフレーム121−1の送信に時間がかかる場合でも、カメラ21−1がフレームを配信する時間間隔を適切に更新できる。
【0089】
また、フレーム処理部130は、計算装置200−1から画像処理の結果を取得し、画像処理の結果を出力する。そして、配信間隔更新部150は、画像処理の結果の出力にかかった時間を含む実行時間を計測する。これにより、情報処理装置100は、画像処理の結果の出力に時間がかかる場合でも、カメラ21−1がフレームを配信する時間間隔を適切に更新できる。
【0090】
また、配信間隔更新部150は、カメラ21−1がフレームを配信する時間間隔が実行時間よりも短い場合またはカメラ21−1がフレームを配信する時間間隔が実行時間よりも所定時間以上長い場合、カメラ21−1がフレームを配信する時間間隔を更新する。これにより、情報処理装置100は、計算装置200−1の処理能力に対して適切な頻度でカメラ21−1にフレームを配信させることができる。
【0091】
〔第3の実施の形態〕
次に、第3の実施の形態を説明する。第3の実施の形態については、第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の内容については説明を省略することがある。第3の実施の形態は、複数のカメラがある場合に、複数のカメラそれぞれのフレームの配信間隔を、フレームに対する画像処理を実行する計算装置の処理能力に応じて更新するものである。
【0092】
図11は、第3の実施の形態の概要を示す図である。第2の実施の形態では、情報処理装置100は、計算装置200−1が実行する画像処理の実行時間を基にカメラ21−1がフレームを配信する間隔を更新していた。これに対して、第3の実施の形態では、画像処理装置300aに含まれる情報処理装置100aは、画像処理装置300aに含まれる計算装置200a−1が実行する画像処理の実行時間を基にカメラ21a−1,21a−2がフレームを配信する間隔を更新する。
【0093】
例えば、計算装置200a−1が
図5に示した画像処理を実行する場合、画像処理の実行時間は、検出される人物の数によって変化する。よって、カメラ21a−1が配信するフレームに対する画像処理の実行時間とカメラ21a−2が配信するフレームに対する画像処理の実行時間とは、異なることがある。そこで、情報処理装置100aは、カメラ21a−1,21a−2のフレームの配信間隔を別々に更新する。
【0094】
カメラ21a−1,21a−2は、情報処理装置100に一定の時間間隔で現在のフレームを配信する。情報処理装置100aは、カメラ21a−1,21a−2から配信されたフレームに対する画像処理を、計算装置200a−1に並列に実行させる。計算装置200a−1は、情報処理装置100aから取得したフレームに対して並列に画像処理を実行する。計算装置200a−1は、並列に実行する画像処理のうち、いずれかの画像処理が終了すると、終了した画像処理の結果を情報処理装置100aに送信する。
【0095】
情報処理装置100aは、計算装置200a−1が画像処理を実行する実行時間を測定する。そして、情報処理装置100aは、計算装置200a−1によるカメラ21a−1から配信されるフレームに対する画像処理の実行時間に応じて、カメラ21a−1がフレームを配信する時間間隔を更新する。また、情報処理装置100aは、計算装置200a−1によるカメラ21a−2から配信されるフレームに対する画像処理の実行時間に応じて、カメラ21a−2がフレームを配信する時間間隔を更新する。なお、計算装置200a−1は、1つの計算装置でもよいし複数の計算装置でもよい。
【0096】
情報処理装置100aは、第2の実施の形態の情報処理装置100と同様に
図3のハードウェア構成によって実現される。また、計算装置200a−1は、第2の実施の形態の計算装置200−1と同様に
図3のハードウェア構成によって実現される。以下では、情報処理装置100aのハードウェアとして情報処理装置100のハードウェアと同じ符号が用いられ、計算装置200a−1のハードウェアとして計算装置200−1のハードウェアと同じ符号が用いられる。
【0097】
次に、画像処理装置300aの機能について詳細に説明する。
図12は、画像処理装置の他の機能例を示すブロック図である。情報処理装置100aは、バッファ120a、フレーム処理部130a、結果記憶部140a、および配信間隔更新部150aを有する。バッファ120aおよび結果記憶部140aは、情報処理装置100aのメモリ102またはストレージ装置103の記憶領域を用いて実現される。フレーム処理部130aおよび配信間隔更新部150aは、情報処理装置100aのメモリ102に記憶されたプログラムを情報処理装置100aのプロセッサ101が実行することで実現される。
【0098】
バッファ120aは、フレーム121a−1,121a−2,121a−3,・・・およびフレーム122a−1,122a−2,122a−3,・・・を記憶する。フレーム121a−1,121a−2,121a−3,・・・は、カメラ21a−1から一定の時間間隔で配信されるフレームである。フレーム122a−1,122a−2,122a−3,・・・は、カメラ21a−2から一定の時間間隔で配信されるフレームである。なお、画像処理が行われたフレームは、バッファ120aから削除される。
【0099】
フレーム処理部130aは、計算装置200a−1に画像処理を実行させ、画像処理の結果を出力する。フレーム処理部130aは、フレーム121a−1,121a−2,121a−3,・・・のうち、撮影された時刻が最も古いフレーム(例えば、フレーム121a−1)に対して前処理を行う。また、フレーム処理部130aは、フレーム122a−1,122a−2,122a−3,・・・のうち、撮影された時刻が最も古いフレーム(例えば、フレーム122a−1)に対して前処理を行う。フレーム処理部130aは、前処理したフレーム121a−1,122a−1を計算装置200a−1に送信し、計算装置200a−1に画像処理を実行させる。フレーム処理部130aは、計算装置200a−1による画像処理の結果を取得し、取得した画像処理の結果を結果記憶部140aに格納する。
【0100】
配信間隔更新部150aは、計算装置200a−1による画像処理の実行時間を計測し、計測した実行時間に基づいて、カメラ21a−1,21a−2のフレーム配信間隔を更新する。配信間隔更新部150aは、フレーム処理部130aがフレーム121a−1に対する前処理を実行してからフレーム121a−1に対する画像処理の結果を出力するまでの実行時間を計測する。配信間隔更新部150aは、カメラ21a−1から配信されるフレームに対する複数回の実行時間に基づいて、カメラ21a−1がフレームを配信する時間間隔を更新する。また、配信間隔更新部150aは、フレーム処理部130aがフレーム122a−1に対する前処理を実行してからフレーム122a−1に対する画像処理の結果を出力するまでの実行時間を計測する。配信間隔更新部150aは、カメラ21a−2から配信されるフレームに対する複数回の実行時間に基づいて、カメラ21a−2がフレームを配信する時間間隔を更新する。
【0101】
計算装置200a−1は、画像処理部220aを有する。画像処理部220aは、計算装置200a−1のメモリ202に記憶されたプログラムを計算装置200a−1のプロセッサ201およびアクセラレータ204が実行することで実現される。画像処理部220aは、情報処理装置100aから取得したフレーム121a−1,122a−1に対して、並列に画像処理を実行する。画像処理部220aは、並列に実行する画像処理のうち、いずれかの画像処理が終了すると、終了した画像処理の結果を出力し、出力した画像処理の結果を情報処理装置100aに送信する。なお、
図12に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
【0102】
以下、第3の実施の形態の配信間隔更新処理の手順について、詳細に説明する。
図13は、配信間隔更新処理の手順の他の一例を示すフローチャート(その1)である。以下、
図13に示す処理をステップ番号に沿って説明する。
【0103】
[ステップS41]情報処理装置100aの配信間隔更新部150aは、バッファ120aにフレームがあるか否かを判定する。配信間隔更新部150aは、バッファ120aにフレームがあると判定した場合、処理をステップS43に進める。また、配信間隔更新部150aは、バッファ120aにフレームがないと判定した場合、処理をステップS42に進める。
【0104】
[ステップS42]配信間隔更新部150aは、一定時間待機する。そして、処理がステップS41に進む。つまり、配信間隔更新部150aは、カメラ21a−1,21a−2からバッファ120aにフレームが配信されるまで待機する。
【0105】
[ステップS43]配信間隔更新部150aは、実行時間の計測を開始する。
[ステップS44]情報処理装置100aのフレーム処理部130aは、フレーム121a−1,121a−2,121a−3,・・・のうち、撮影された時刻が最も古いフレーム(例えば、フレーム121a−1)に対して前処理を行う。また、フレーム処理部130aは、フレーム122a−1,122a−2,122a−3,・・・のうち、撮影された時刻が最も古いフレーム(例えば、フレーム122a−1)に対して前処理を行う。
【0106】
[ステップS45]フレーム処理部130aは、ステップS44で前処理したフレーム121a−1,122a−1を計算装置200a−1に送信し、計算装置200a−1に画像処理を実行させる。
【0107】
[ステップS46]計算装置200a−1の画像処理部220aは、情報処理装置100aから取得したフレーム121a−1,122a−1に対して、並列に画像処理を実行する。
【0108】
[ステップS47]画像処理部220aは、並列に実行した画像処理のうちいずれかが終了すると、先に終了した画像処理(例えば、フレーム121a−1に対する画像処理)の結果を情報処理装置100aに送信する。
【0109】
[ステップS48]フレーム処理部130aは、先に終了した画像処理の結果を取得し、取得した画像処理の結果を出力する。例えば、フレーム処理部130aは、フレーム121a−1に対する画像処理の結果を結果記憶部140aに格納する。また、例えば、フレーム処理部130aは、フレーム121a−1に対する画像処理の結果をモニタ31に表示させる。
【0110】
[ステップS49]配信間隔更新部150aは、先に終了した画像処理の実行時間計測を終了する。配信間隔更新部150aは、ステップS44〜ステップS48までの時間をフレーム121a−1に対する画像処理の実行時間として計測する。
【0111】
[ステップS50]画像処理部220aは、並列に実行した画像処理のうちステップS47で終了していない方が終了すると、後に終了した画像処理(例えば、フレーム122a−1に対する画像処理)の結果を情報処理装置100aに送信する。
【0112】
[ステップS51]フレーム処理部130aは、後に終了した画像処理の結果を取得し、取得した画像処理の結果を出力する。例えば、フレーム処理部130aは、フレーム122a−1に対する画像処理の結果を結果記憶部140aに格納する。また、例えば、フレーム処理部130aは、フレーム122a−1に対する画像処理の結果をモニタ31に表示させる。
【0113】
[ステップS52]配信間隔更新部150aは、後に終了した画像処理の実行時間計測を終了する。配信間隔更新部150aは、ステップS44〜ステップS51までの時間をフレーム122a−1に対する画像処理の実行時間として計測する。
【0114】
図14は、配信間隔更新処理の手順の他の一例を示すフローチャート(その2)である。以下、
図14に示す処理をステップ番号に沿って説明する。
[ステップS53]配信間隔更新部150aは、実行時間を指定回数計測したか否かを判定する。配信間隔更新部150aは、実行時間を指定回数計測したと判定した場合、処理をステップS54に進める。また、配信間隔更新部150aは、実行時間を指定回数計測していないと判定した場合、処理をステップS41に進める。
【0115】
[ステップS54]配信間隔更新部150aは、カメラ21a−1,21a−2がフレームを配信する時間間隔を更新する。例えば、配信間隔更新部150aは、カメラ21a−1がフレームを配信する時間間隔を、指定回数計測した、カメラ21a−1が配信するフレームに対する画像処理の実行時間のうち最大の実行時間に更新する。また、例えば、配信間隔更新部150aは、カメラ21a−2がフレームを配信する時間間隔を、指定回数計測した、カメラ21a−2が配信するフレームに対する画像処理の実行時間のうち最大の実行時間に更新する。
【0116】
このように、配信間隔更新部150aは、カメラ21a−1,21a−2がフレームを配信する時間間隔を、計算装置200a−1に指定回数実行させた画像処理の実行時間のうち最大の実行時間に更新する。これにより、配信間隔更新部150は、カメラ21a−1,21a−2がフレームを配信する時間間隔とカメラ21a−1,21a−2が配信するフレームに対する画像処理の実行時間とを同程度にすることができる。
【0117】
さらに、配信間隔更新部150aは、
図8に示した運用時処理と同様の処理を、カメラ21a−1,21a−2それぞれに対して並列に実行することもできる。これにより、配信間隔更新部150aは、画像処理を用いたサービスの運用を開始するときに更新したカメラ21a−1,21a−2それぞれの配信間隔が不適切になった場合、配信間隔を適切に更新することができる。
【0118】
第3の実施の形態によれば、第2の実施の形態と同様に、情報処理装置100aは、ネットワークの負荷を軽減することができる。さらに第3の実施の形態では、計算装置200a−1は、カメラ21a−1,21a−2それぞれから配信される一のフレームに対する複数の画像処理を実行する。また、配信間隔更新部150aは、複数の画像処理の複数の実行時間それぞれを計測し、複数の実行時間それぞれに基づいて、カメラ21a−1,21a−2それぞれがフレームを配信する時間間隔を更新する。これにより、情報処理装置100aは、カメラ21a−1,21a−2それぞれについて、フレームを配信する時間間隔を適切に更新できる。
【0119】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【解決手段】情報処理システムにおいて、情報処理装置10は、一定の時間間隔で配信するカメラ1から配信されるフレームを記憶部11に記憶し、フレーム3に対する画像処理を計算装置2が実行する実行時間を計測する。そして、情報処理装置10は、カメラ1がフレームを配信する時間間隔を、実行時間に基づいて更新する。