(第1の実施の形態に至る経緯)
今後、カメラが取り扱う撮像画像データは例えば4Kや8K等の高精細かつ大容量となってデータサイズが増大することが予想されている。このような撮像画像データのサイズの増大に伴い、撮像画像データの検出に用いたパラメータの学習をカメラではなくサーバで行う場合、サーバにおいて処理負荷が集中してしまい、更に、大容量のデータを逐一サーバに送信することで、ネットワーク上のトラフィックが増大し、データ通信時に相応の遅延が生じるという課題が生じてしまう。このような課題に対する技術的対策について、特許文献1のような従来技術では特段の考慮はなされてはいなかった。
そこで、実施の形態1では、監視エリアに設置された複数のカメラにおいて撮像されたそれぞれの撮像画像内の少なくとも1つのオブジェクトの検出に際し、その検出に用いるパラメータの学習等の処理を複数のカメラ間で分散し、ネットワーク上のトラフィックの増大を抑制し、複数のカメラに接続されるサーバの処理負荷の軽減を支援する監視システム及び監視方法の例を説明する。
(実施の形態1)
図1は、実施の形態1の監視システム5のシステム構成の一例を示すブロック図である。
監視システム5は、例えば防犯用の監視システムであって、銀行、店舗、企業、施設等の屋内、又は、駐車場や公園等の屋外に設置される。銀行、店舗、企業、施設等の屋内、又は、駐車場や公園等の屋外は、監視システム5の監視エリアとなる。本実施の形態の監視システム5は、人工知能(AI:Artificial Intelligence)技術を利用し、撮像画像に出現する少なくとも1つの対象物(言い換えると、オブジェクト)を認識する少なくとも1つのカメラ10と、サーバ30と、レコーダ50とを含む構成を有する。少なくとも1つのカメラ10と、サーバ30と、レコーダ50とは、ネットワークNWを介して互いに通信可能に接続される。
以下、複数のカメラ10をそれぞれ区別する必要がある場合には、カメラ10A,10B,10C,…と表記する。複数のカメラ10は、監視エリアとして、例えば建物内の同じ場所に設置されてもよいし、一部のカメラ10が他のカメラ10とは異なる場所に設置されてもよい。ここでは、監視エリアとして異なる場所に設置されたカメラ10A,10B,10Cの設置状況(例えば設置角度やカメラの画角)が同じであることを想定している。例えば、カメラ10A,10B,10Cは、いずれも自動ドアが設置された出入口の上方に位置するように壁面に取り付けられ、出入口を出入りする人物をやや上方から見下ろすように撮像する。なお、カメラ10A,10B,10Cの設置状況は、自動ドアが設置された出入口の情報に位置する場合に限定されない。
先ず始めに、人工知能(AI)技術の機械学習の一例としてのディープラーニングに用いられるニューラルネットワーク(言い換えると、学習モデル)を生成するための学習、及び学習済みの学習モデル(以下、「学習済みモデル」という)にデータを入力して結果を出力する検出(つまり、推論)について、その概要を説明する。
図2は、学習及び検出の概要例の説明図である。
学習処理(以下、単に「学習」という)は、例えば人工知能(AI)技術の機械学習の一例としてのディープラーニングによって行われる処理である。言い換えると、機械学習の1つとして、近年注目されているニューラルネットワーク(以下、「NN」と略記する)におけるディープラーニング(つまり、深層学習)を用いて学習が行われる。ディープラーニングによる機械学習では、教師データを用いた「教師有り学習」と、教師データを用いない「教師無し学習」とが行われる。機械学習の結果、学習済みモデルが生成される。一方、検出は、生成された学習済みモデルにデータを入力して結果を得る処理である。
学習は、リアルタイムで行われてもよいが、多くの演算処理を必要とするので、通常、オフライン(つまり、非同期)で行われる。一方、検出処理(以下、単に「検出」という)は、通常リアルタイムで行われる。また、学習が行われるデバイスは、例えばカメラ10、サーバ30、レコーダ50のいずれであってもよく、ここでは、カメラ10において学習される場合を示す。一方、検出は、カメラ10において行われる。なお、カメラ10により撮像された撮像画像データをサーバ30やレコーダ50に転送しても、ネットワークNW上のトラフィックが発生しない場合には、サーバ30やレコーダ50が検出を行ってもよい。
学習時、デバイス150は、多くの学習データ(例えばカメラ10で撮像された画像データ)を入力する。デバイス150は、入力された学習データを基に、機械学習(例えば、ディープラーニングの処理)を行い、学習モデルであるニューラルネットワーク(NN140)のモデルパラメータPを更新する。モデルパラメータPは、NN140を構成する複数のそれぞれのニューロンにおいて設定される重み付け係数(つまり、バイアス)やしきい値等である。デバイス150は、機械学習(例えばディープラーニングの処理)を行う際、教師データを用い、学習データごとに正誤を取得するか、或いは評価値(つまり、スコア)を算出する。デバイス150は、学習データの正誤或いはスコアの高低に応じて、モデルパラメータPの学習度合いを変更する。学習後、NN140は、学習済みモデルとして、デバイス150における検出に用いられる。
検出時(つまり、推論時)、デバイス150は、入力データ(例えばカメラ10でリアルタイムに撮像された撮像画像データ)を入力し、NN140において推論を実行し、その実行により得られた推論結果(つまり、検出されたオブジェクトの判定結果)を出力する。判定結果は、例えば、撮像画像データに含まれる対象物の有無に応じた正報や誤報に関する情報、及び、対象物の評価値を示すスコアに関する情報を含む。正報とは、対象物の検出時に高い確度で正しく検出されたことを示すレポートである。誤報とは、対象物の検出時に高い確度で誤って検出されたことを示すレポートである。
図3は、実施の形態1のカメラ10の内部構成の一例を詳細に示すブロック図である。
カメラ10は、例えば監視エリアの被写体像を撮像して撮像画像データを取得する。具体的には、カメラ10は、レンズ11と、イメージセンサ12と、信号処理部13と、処理実行部14と、リソース監視部15と、クロップエンコード部17と、ネットワークI/F16とを含む構成である。
カメラ10は、監視エリアSAからの被写体像を入射可能に配されたレンズ11を介して、監視エリアSAからの入射された被写体像をイメージセンサ12に結像し、イメージセンサ12において被写体像(つまり、光学像)を電気信号に変換して撮像する。少なくともレンズ11及びイメージセンサ12により、カメラ10の撮像部が構成される。カメラ10は、イメージセンサ12において得られた電気信号を用いて、信号処理部13においてRGB信号を生成したり、ホワイトバランスやコントラスト調整等の既定の各種の画像処理を行うことで、撮像画像データを生成して出力する。
処理実行部14は、例えばGPU(Graphics Processing Unit)又はFPGA(Field Programmable Gate Array)を用いて構成される。今後、高性能で演算処理能力の高いGPU又はFPGAがカメラ10のプロセッサとして採用されてくると、カメラ10の演算処理能力は飛躍的に向上し、カメラ10においてディープラーニングの処理が十分に実行可能であると期待される。処理実行部14は、GPU又はFPGAにおける処理実行によって生成又は更新されたNN140としての学習モデル又は学習済みモデルを含み、入力された撮像画像データに対し、撮像画像に現れる少なくとも1つの対象物(つまり、オブジェクト)の判定結果を出力する。
リソース監視部15は、処理実行部14内のGPU或いはFPGAやメモリ等の使用状況を基に、カメラ10の処理能力に関する情報(例えば空きリソースの量)を監視する。
クロップエンコード部17は、検出時、撮像画像データに現れる対象物(つまり、オブジェクト)の一部を切り出し、処理すべき撮像画像データ或いはサムネイルのデータとして出力する。
ネットワークI/F16は、ネットワークNWとの接続を制御する。カメラ10は、ネットワークI/F16を介して、サーバ30やレコーダ50に対し、処理実行部14から出力される対象物(つまり、オブジェクト)の判定結果、リソース監視部15によって監視された空きリソースの量、サムネイルのデータ等を送信する。また、カメラ10は、ネットワークI/F16を介して、サーバ30やレコーダ50、他のカメラ10から、学習の結果であるモデルパラメータPを受信する。
図4は、実施の形態1のサーバ30の内部構成の一例を詳細に示すブロック図である。
サーバ30は、プロセッサ(例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)又はDSP(Digital Signal Processor))31と、メモリ32と、通信部33と、操作部36と、表示部37と、学習用DB(データベース)34と、テーブルメモリ35とを含む構成である。プロセッサ31は、メモリ32と協働して、サーバ30の各部の処理や制御を統括的に実行する。メモリ32は、不揮発メモリ及び揮発メモリを有する。不揮発メモリには、例えば複数のカメラ10A,10B,10Cから通知された、それぞれのカメラ10A,10B,10Cの単価コストに関する情報(例えばカメラ10A,10B,10Cの電力コストに関する情報)が記憶される。電力コストに関する情報とは、詳細は後述するが、例えばカメラ10A,10B,10Cがどのくらい使用されれば結果的にどの程度の電力量(つまり、コスト)がかかるかを示す指標値である。
プロセッサ31は、サーバ30が機械学習(例えば、ディープラーニングの処理)を行う場合、不揮発メモリに記憶されたプログラムを実行し、学習モデル(ニューラルネットワーク:NN)を生成する。また、サーバ30は、複数のカメラ10から学習の結果であるモデルパラメータPを受信し、監視エリアSAに設置されたそれぞれのカメラ10の設置状況(つまり、設置角度や画角等の設置環境)が同一であるモデルパラメータPを統合する。
学習用DB(データベース)34には、複数のカメラ10から送信されてサーバ30において受信された学習の結果であるモデルパラメータP(例えば重み付け係数やしきい値)が保存される。
テーブルメモリ35は、複数のカメラ10の処理能力に関する情報(例えば空きリソースの量)が登録されたテーブルを記憶する。
操作部36は、ユーザが操作可能な学習ボタンbt5(例えば図13参照)等、各種ボタンを有し、ユーザの入力操作を受け付ける。
表示部37は、サーバ30における統合学習の処理結果を提示するUI(ユーザインタフェース)画面310(例えば図12又は図13参照)を表示する。
図5は、デバイス150における学習の概要例の説明図である。
ここでは、デバイス150が撮像画像に出現する「車」を対象物objとして学習する場合を例示して説明する。前述したように、学習は、通常オフライン(非同期)で行われる処理であり、カメラ10、サーバ30、レコーダ50のいずれで行われてもよい。本実施の形態では、デバイス150の一例として、カメラ10が学習を行う。デバイス150は、処理実行部164と、リソース監視部165と、ネットワークI/F166と、パラメータ勾配算出部168とを含む構成である。
ネットワークI/F166は、ネットワークNWとの接続を制御し、学習データを、ネットワークNWを介して受信する。ここでは、学習データは、車を対象物objとする撮像画像データgz1,gz2である。各撮像画像データgz1,gz2は、それぞれスコア(評価値)と正報或いは誤報を付加した教師データである。例えば、撮像画像データgz1は、対象物となる「車」を含む撮像画像であり、高いスコア或いは正報を持つ教師データである。一方、撮像画像データgz2は、対象物となる車ではない「木」の画像であり、低いスコア或いは誤報を持つ教師データである。
処理実行部164は、ネットワークI/F166を介して入力された、これらの教師データを基に推論を実行することで、学習モデルのモデルパラメータP(例えば重み付け係数やしきい値等)を更新する。また、処理実行部164は、更新されモデルパラメータPを、ネットワークI/F166を介して、カメラ10、サーバ30、レコーダ50等、他のデバイスに送信する。このように、「教師有り学習」を行うことで、学習能力が高まり、処理実行部164は、高品質な学習モデルを生成できる。
パラメータ勾配算出部168は、教師データの撮像画像に出現する対象物の勾配を算出する。例えば、横からカメラにより撮像された撮像画像と正面からカメラにより撮像された撮像画像とでは、同じ対象物であっても撮像画像は異なる。つまり、カメラの設置状況(例えば設置角度や画角)に応じて、同じ対象物を検出する際に用いられる学習モデルのモデルパラメータPも異なってくる。このため、パラメータ勾配算出部168は、撮像方向を表す勾配(以下、「パラメータ勾配」という)を算出し、ネットワークI/F166を介して、パラメータ勾配Ptをカメラ10、サーバ30、レコーダ50等、他のデバイスに送信する。パラメータ勾配Ptは、モデルパラメータと一緒に或いは別に送信されてもよい。いずれにせよ、カメラの設置状況は頻繁に変更されないので、パラメータ勾配Ptは少なくとも1回送信されればよい。パラメータ勾配Ptを用いることで、カメラの設置状況毎に異なる学習モデルが利用可能となる。
リソース監視部165は、処理実行部164内のGPUやメモリ等の使用状況を基に、空きリソースの量を監視する。なお、デバイス150がカメラ10である場合には、図5に示す処理実行部164及びパラメータ勾配算出部168は図3の処理実行部14に対応し、図5に示すリソース監視部165は図3に示すリソース監視部15に対応し、図5に示すネットワークI/F166は図3に示すネットワークI/F16に対応する。
図6は、カメラ10の検出の概要例の説明図である。
ここでは、カメラ10が撮像画像に出現する「車」を対象物として検出する場合を例示して説明する。カメラ10の処理実行部14は、機械学習(例えばディープラーニングの処理)が行われた後の学習モデル(つまり、学習済みモデル)を有する。処理実行部14は、レンズ11を通して撮像された被写体の撮像画像ogを入力し、学習済みモデルを用いて検出(つまり、撮像画像ogに出現するオブジェクトの推論)を行い、その検出結果(つまり、推論結果)を出力する。クロップエンコード部17は、被写体の撮像画像ogに含まれる、対象物となる画像を切り出し、検出の結果として切り出し画像を出力する。
ここでは、クロップエンコード部17によって切り出された、「車」の切り出し画像tg2と、「木」の切り出し画像tg1が出力される。「車」の切り出し画像tg2は、対象物となる車の撮像画像を含むので、高いスコアと正報を有する。一方、「木」の切り出し画像tg1は、対象物となる車の撮像画像を含まないので、低いスコアと誤報を有する。
次に、本実施の形態の監視システム5の具体的な動作について、図面を参照して説明する。
図7は、監視システム5における複数のカメラを用いた学習時の分散を行う時の処理概要例の説明図である。
前述したように、学習では、人工知能(AI)技術の機械学習の一例としてのディープラーニングの処理を用いて生成される学習モデル(つまり、ニューラルネットワーク)のモデルパラメータPを更新する処理が行われる。一例として、学習を行うデバイスとして、3つのカメラ10A,10B,10Cが学習を行う場合を示す。なお、学習を行うデバイスは、カメラに限らず、サーバ、レコーダでもよい。各カメラ10A,10B,10Cは、それぞれ入力した撮像画像データに対し、例えば「教師なし学習」を行う。教師なし学習では、カメラ10は、学習モデルのモデルパラメータが収束しない場合、アラームを発生する。このとき、ユーザは、アラームを解除して、「教師あり学習」を行う。教師あり学習では、ユーザは、画像データの正報或いは誤報を入力する。なお、教師データの入力では、画像データの正報或いは誤報を入力する代わりに、正報或いは誤報とともにスコア(評価値)を入力してもよい。スコアは、撮像画像データが対象物を含む撮像画像データであることを評価する値であり、例えば80点,10点等の点数や、50%,20%等の確率で表現される。
3つのカメラ10A,10B,10Cは、それぞれ学習の結果であるモデルパラメータPをサーバ30に送信する。また、送信されるモデルパラメータPには、前述したパラメータ勾配Ptが付加される。
サーバ30は、3つのカメラ10A,10B,10Cから送信されたモデルパラメータPを基に、学習モデルのモデルパラメータPを更新する。このとき、パラメータ勾配Ptが同じであるモデルパラメータ、つまり、カメラの設置状況が同じであるモデルパラメータを統合する。従って、パラメータ勾配が同じである学習モデルのモデルパラメータが更新される。ここでは、カメラ10A,10B,10Cの設置状況はいずれも同じであり、サーバ30は、カメラ10A,10B,10Cの、更新された各モデルパラメータを統合する。
サーバ30は、統合したモデルパラメータを3つのカメラ10A,10B,10Cにフィードバック送信する。これにより、3つのカメラ10A,10B,10Cに記憶されるモデルパラメータは、同じになる。なお、3つのカメラ10A,10B,10Cからサーバ30へのモデルパラメータの送信は、非同期で行われる。
図8は、監視システム5におけるリソース管理の概要例の説明図である。
3つのカメラ10A,10B,10Cでは、リソース監視部15は、それぞれ学習モデルを生成するGPU或いはFPGA等の処理能力に対し、空きリソースの量(言い換えると、処理能力の余り度合いを示す余力)を監視している。3つのカメラ10A,10B,10Cは、リソース監視部15によって監視された空きリソースの量を非同期で又は周期的にサーバ30に通知する。空きリソースの量は、処理能力の百分率(%)で表される。一例として、カメラ10Aの空きリソースの量が90%であり、カメラ10Bの空きリソースの量が20%であり、カメラ10Cの空きリソースの量が10%である場合、サーバ30は、空きリソースの量が多いカメラ10Aに優先的に学習させるように、つまり、学習量を増やすように、このカメラ10Aに学習の指示を出力する。
また、サーバ30は、ネットワークNWの帯域が広い、或いはネットワークNWが空いている場合には、空きリソースの量が10%と少ないカメラ10Cで撮像された撮像画像データ(正報或いは誤報の情報付き)を受信すると、空きリソースの量が90%と多いカメラ10Aにその撮像画像データを送信して学習を指示してもよい。これにより、カメラ間で偏った処理の負荷がかかることなく、適正な学習が実現可能となる。
また、サーバ30は、空きリソース量の少ないカメラで撮像された撮像画像データを、空きリソース量の多いカメラに直接に転送して、学習を行うように指示してもよい。これにより、監視システム内で学習を分散させることができ、特定のカメラに大きな負荷をかけることなく、効率の良い学習が可能である。
また、サーバ30は、空きリソース量の少ないカメラで撮像された撮像画像データを、空きリソース量の多いカメラに直接に転送して、検出を行うように指示してもよい。これにより、監視システム内で検出を分散させることができ、特定のカメラに大きな負荷をかけることなく、効率の良い検出が可能である。
また、サーバ30は、空きリソース量の少ないカメラで撮像された撮像画像データを、空きリソース量の多いカメラに直接に転送して、分析を行うように指示してもよい。ここで、分析とは、撮像画像に出現する対象物(つまり、オブジェクト)objを追尾する、或いは、対象物が不審人物に該当するか否かを認識する、等の処理であり、分析の内容は本実施の形態では特に限定されない。これにより、監視システム内で分析を分散させることができ、特定のカメラに大きな負荷をかけることなく、効率の良い分析が可能である。
また、サーバ30は、監視システム5の全体の処理能力を監視し、システム全体の空きリソースの量が多い場合、各カメラ10に対し、学習量を増やすように指示し、一方、システム全体の空きリソースの量が少ない場合、各カメラ10に対し、学習量を減らすように指示してもよい。これにより、監視システム全体に大きな負荷をかけることなく、適正な学習が可能となる。
また、サーバ30は、各カメラ10による検出の結果を全てのカメラ10に共有するように、指示してもよい。これにより、各カメラ10に検出の結果を分散させることができ、次回以降の検出に用いることで検出精度の向上を図ることができる。
また、サーバ30は、カメラ10の空きリソースの量が多い場合、このカメラ10に送信する統合学習の結果のフィードバック量(例えばフィードバック回数)を増やすように指示し、一方、カメラ10の空きリソースの量が少ない場合、このカメラ10に送信する、統合学習の結果のフィードバック量(例えばフィードバック回数)を減らすように指示してもよい。これにより、カメラに大きな負荷をかけることなく、適正な量の学習の結果をカメラにフィードバックする(戻す)ことができる。
また、3つのカメラ10A,10B,10Cは、それぞれ単価コストに関する情報(例えば電力コストに関する情報)をサーバ30に通知する。電力コストは、カメラ固有の値であり、例えばワット/フレーム(W/frame)の単位で表現される。一例として、カメラ10Aでは1/200、カメラ10Bでは1/200、カメラ10Cでは1/400が挙げられる。なお、電力コストは、通常カメラの使用状況によって大きく変化しないので、1回の通知で充分である。また、電力コストの単位は、フレーム/ワット(frame/W)で表現されてもよい。
サーバ30は、カメラ10Aとカメラ10Bの電力コストが同じように高い場合、電力コストの低いカメラ10Cに対し、優先的に学習を割り当てる。
サーバ30は、カメラ10A,10B,10Cの空きリソースの量が同じ或いは同程度である場合、例えばカメラ10Aの空きリソースの量が10%であり、カメラ10B,10Cの空きリソースの量がいずれも45%である場合、電力コストのかからないカメラ10Cで優先的に学習するように、このカメラ10Cに学習の指示を出力する。
なお、カメラの空きリソースの多寡に拘わらず、サーバ30は、コスト優先で電力コストの低いカメラで学習を実行するように指示してもよい。また、各デバイスの空きリソース及び電力コストの管理を、サーバ30が行っていたが、各カメラやレコーダが管理してもよく、その場合、空きリソース及び電力コストを監視システム5内の全てデバイス150で共有できる。従って、空きリソース及び電力コストを考慮して、各デバイスは、処理の指示実行を行うことも可能となり、多様な運用が可能となる。
図9は、実施の形態1においてサーバ30がカメラ10に処理の実行指示を行う動作手順の一例を詳細に示すシーケンス図である。
図9の動作手順では、サーバ30は、カメラ10の空きリソースの情報を基に、複数のカメラ10の中から、分散処理の対象となるカメラ10を決定し、該当するカメラ10に処理実行を指示する。カメラの台数Nは、任意の台数でよく、ここでは、説明を簡単にするために2台(カメラ10A,10B)を例示する。なお、サーバ30の代わりに、レコーダ50が処理実行を指示するカメラ10を決定してもよい。
カメラ10Aは、リソース監視部15によって監視された空きリソースの情報を繰り返し(例えば常時、又は周期的に)サーバ30に通知する(T1)。同様に、カメラ10Bは、リソース監視部15によって監視された空きリソースの情報を繰り返し(例えば常時、又は周期的に)サーバ30に通知する(T2)。
サーバ30は、カメラ10A,10Bの空きリソースの情報をテーブルメモリ35に登録して管理する(T3)。サーバ30は、所定値(例えば70%)以上の空きリソースを有する少なくとも1台のカメラの有無を判別する(T4)。ここでは、カメラ10Bだけが所定値以上の空きリソースを有すると想定する。
所定値以上の空きリソースを有するカメラがある場合(T4、YES)、サーバ30は、該当するカメラに対する検出と学習との両方の実行指示を生成する(T5)。サーバ30は、カメラ10Bに対し、ネットワークNWを経由して、検出と学習との両方の実行指示を送信する(T6)。カメラ10Bは、該当する処理を実行する(T7)。
一方、手順T4で所定値以上の空きリソースを有するカメラが無い場合(T4、NO)、サーバ30は、全てのカメラ(ここでは、カメラ10A,10B)に対する検出の実行指示を生成する(T8)。カメラ10A,10Bは、学習を実行できる程の空きリソースを有していないので、検出のみを行うことになる。サーバ30は、検出の実行指示を全てのカメラ(ここでは、カメラ10A,10B)に送信する(T9)。カメラ10A,10Bは、それぞれ該当する処理を実行する(T10,T11)。
手順T7でカメラ10Bが該当する処理を実行した場合、カメラ10Bは、学習結果を生成し(T12)、生成した学習結果をサーバ30に送信する(T13)。
図10は、実施の形態1においてサーバ30がモデルパラメータのフィードバック量を制御する動作手順の一例を詳細に示すシーケンス図である。
図10の動作手順では、サーバ30は、カメラ10の空きリソースの情報を基に、モデルパラメータのフィードバック量を制御する。カメラの台数Nは、任意の台数でよく、ここでは、説明を簡単にするために2台(カメラ10A,10B)である。なお、サーバ30の代わりに、レコーダ50がモデルパラメータをフィードバックするカメラ10を決定してもよい。
サーバ30は、カメラ10A,10Bからそれぞれ学習結果であるモデルパラメータを受信し、学習用DB34に蓄積する(T21)。サーバ30は、各カメラ10A,10Bの空きリソースの量に応じて、学習結果である多くのモデルパラメータの中から、推論(検出)処理時に用いる学習モデルのモデルパラメータのフィードバック量をカメラごとに算出する(T22)。
サーバ30は、カメラ10Bに対し、算出されたフィードバック量分のモデルパラメータのデータを送信する(T23)。同様に、サーバ30は、カメラ10Aに対し、算出されたフィードバック量分のモデルパラメータのデータを送信する(T24)。カメラ10Bは、サーバ30から受信したモデルパラメータを、処理実行部14のメモリに追加登録して蓄積する(T25)。同様に、カメラ10Aは、サーバ30から受信したモデルパラメータを、処理実行部14のメモリに追加登録して蓄積する(T26)。
なお、ここでは、フィードバック量は、各カメラの空きリソースの情報を基に、サーバ30により決定されたが、空きリソースに限らず、教師データに基づく正報検出数や教師データに基づく誤報検出数に応じて、決定されてもよい。
図11は、監視システム5における学習結果の共有の概要例の説明図である。
各カメラ10(10A,10B,10C)は、撮像により得られた撮像画像データを用いてローカル学習を行い、モデルパラメータを更新する。また、各カメラ10は、正報が得られた撮像画像データだけを用いて学習を行うことができ、学習の結果であるモデルパラメータの精度を向上できる。また、カメラ10は、オプションとして接続された表示器19に、ローカル学習において、撮像画像データを評価するためのUI画面320(図12参照)を表示可能である。また、カメラ10は、ローカル学習時のUI画面320をサーバ30の表示部37に表示させることも可能である。
図12は、ローカル学習時に表示されるUI画面320を示す図である。
UI画面320は、例えばカメラ10のローカル学習時に、カメラ10と通信可能に接続されたサーバ30の表示部37又はPC(図示略)の表示部において表示され、具体的には、撮像画像データから切り出された学習データごとに、正誤の判定、カメラID、リジェクトボタンbxを表示する。なお、撮像画像データのサムネイルは、カメラ10が元の撮像画像データを記憶しているので、ここでは表示されないが、表示されるようにしてもよい。検出の対象物(オブジェクト)objは「人」である。
サーバ30は、正誤の判定処理において、撮像画像データに対象物objを検出できた場合に正報と判定し、撮像画像データに対象物objを検出できなかった場合に誤報と判定する。なお、ユーザが、サーバ30の表示部37に表示されたUI画面320に対して入力することで、サーバ30は、正報或いは誤報を判定してもよい。
カメラIDは、学習データを得るために撮像したカメラの識別情報である。
リジェクトボタンbxは、ユーザにより選択され、チェックマークが表示される。リジェクトボタンbxにチェックマークが付加された学習データは、ユーザが学習ボタンbt5を押下すると、学習に用いられなくなる。
カメラ10は、自動的に、誤報の撮像画像データを採用する学習に用いず、正報の撮像画像データを採用する学習に用いたが、カメラ10の代わりに、ユーザがリジェクトボタンbxを用いて撮像画像データを指示してもよい。例えば、ユーザは、誤報の撮像画像データを採用する学習に用いず、正報の撮像画像データを採用する学習に用いるように指示してもよい。これにより、誤報の撮像画像データを用いて学習することができる。また、カメラ10は、正報の撮像画像データと誤報の撮像画像データとを組み合わせて学習に用いてもよい。これにより、撮像画像データの品質に照らして、学習に用いる撮像画像データを選別できる。
サーバ30は、各カメラ10(10A,10B,10C)から送信されたモデルパラメータPを受信し、受信した各モデルパラメータPを合算する統合学習を行い、合算したモデルパラメータPを学習用DB34に追加する。ここで、統合されるモデルパラメータは、設置状況が同じカメラで撮像された画像データを基に得られたモデルパラメータである。一方、設置状況が異なるカメラで撮像された画像データを基に得られるモデルパラメータは、合算されず、別々の学習モデルに対するモデルパラメータとして個別に登録される。
図13は、統合学習時にサーバ30の表示部37に表示されるUI画面310を示す図である。
サーバ30は、表示部37に、統合学習時のUI画面310(図13参照)を表示可能である。UI画面310は、撮像画像データから切り出された学習データごとに、正誤の判定、サムネイル、カメラID、リジェクトボタンbxを表示する。ここでは、検出の対象物(オブジェクト)が「人」である場合を示す。
サーバ30は、正誤の判定処理では、撮像画像データに対象物objを検出できた場合に正報と判定し、撮像画像データに対象物objを検出できなかった場合に誤報と判定する。なお、ユーザが、サーバ30の表示部37に表示されたUI画面310に対して入力することで、サーバ30は、正報或いは誤報を判定してもよい。
サムネイルは、学習データの縮小画像である。サムネイルであるので、カメラ10からサーバ30に送信される際、データ転送量は抑えられる。カメラIDは、学習データを得るために撮像したカメラの識別情報である。
リジェクトボタンbxは、ユーザにより選択され、チェックマークが表示される。リジェクトボタンbxにチェックマークが付加された学習データは、ユーザが学習ボタンbt5を押下すると、学習に用いられなくなる。
サーバ30は、自動的に正報の撮像画像データを採用するように学習し(つまり、正報の撮像画像データの検出に用いたモデルパラメータを蓄積するように学習し)、誤報の撮像画像データを排除するように学習する(つまり、誤報の撮像画像データの検出に用いたモデルパラメータを蓄積しないように学習する)。但し、学習に用いる撮像画像データの選択について、ユーザが主体的にリジェクトボタンbxを用いて、学習に用いる撮像画像データが指示されてもよい。また、ユーザは、誤報の撮像画像データを排除する学習を行わず、正報の撮像画像データを採用する学習を行うように指示してもよい。
このように、サーバ30がモデルパラメータを統合学習することで、モデルパラメータの学習の精度が向上する。サーバ30は、統合学習の結果である更新されたモデルパラメータを、該当するカメラ10にフィードバック送信する。これにより、各カメラ10で得られる撮像画像データの正報が多くなるほど、カメラの検出精度が高くなる。
また、サーバ30は、統合学習の結果である更新されたモデルパラメータPを、各カメラ10にフィードバック送信する際、各カメラ10の正報の数に応じて、フィードバック量を制御する。つまり、サーバ30は、誤報の数が多いカメラ10に対し、フィードバック量(例えばフィードバック回数)が多くなるように、更新済みモデルパラメータを送信する。これにより、正報の数が増加し、カメラの検出精度が向上する。
一方、サーバ30は、正報の数が多いカメラ10に対し、フィードバック量(例えばフィードバック回数)が少なくなるように、更新済みモデルパラメータを送信する。これにより、カメラの処理負荷を軽減できる。なお、サーバ30は、設置環境が同じであるカメラに対し、同一の更新済みのモデルパラメータを送信して共有させることは、前述した通りである。
また、サーバ30は、各カメラ10に対し、学習の実行指示を行う際、各カメラ10の正報の数に応じて、学習の量を指示する。誤報の数が多いカメラ10に対し、学習量が多くなるように、学習の実行指示を行う。これにより、正報の数が増加し、カメラの検出精度が向上する。一方、サーバ30は、正報の数が多いカメラ10に対し、学習量が少なくなるように、学習の実行指示を行う。これにより、カメラの処理負荷を軽減できる。
また、サーバ30は、各カメラ10で撮像された撮像画像に出現する対象物を検出する検出の結果を統合して管理してもよい。検出の結果を統合する場合、対象物の動きをベクトルで表し、ベクトルで検出の結果を管理してもよい。
以上により、第1の実施形態の監視システム5では、サーバ30と、監視エリアSAに設置された複数のカメラ10とが互いに通信可能に接続される。サーバ30は、それぞれのカメラ10の空きリソース(つまり、処理能力に関する情報)と、それぞれのカメラ10により監視エリアSAの撮像により得られた撮像画像のデータとを保持するテーブルメモリ35を有する。サーバ30は、カメラ10の処理能力に関する情報に基づいて、それぞれのカメラ10により得られる撮像画像に出現する少なくとも1つの対象物(オブジェクト)objの検出に関してカメラ10が実行する処理をカメラ10ごとに決定し、決定された処理の実行指示をカメラ10ごとに送信する。それぞれのカメラ10は、サーバ30から送信された処理の実行指示に基づいて、実行指示に対応する処理を実行する。
これにより、監視システム5は、監視エリアSAに設置された複数のカメラ10において撮像されたそれぞれの撮像画像内の少なくとも1つのオブジェクトの検出に際し、その検出に用いるパラメータの学習等の処理を複数のカメラ10間で分散でき、ネットワーク上のトラフィックの増大を抑制し、複数のカメラ10に接続されるサーバ30の処理負荷の軽減を支援することができる。
また、上述した処理は、撮像画像に出現する少なくとも1つの対象物(オブジェクト)objの検出に用いるモデルパラメータPを学習する学習である。これにより、監視システム5は、負荷の大きな学習を複数のカメラ10に分散させることができる。
また、サーバ30は、複数のカメラ10に対し、学習の実行指示をそれぞれ送信する。複数のカメラ10は、それぞれ学習の実行指示に従って、学習を実行する。サーバ30は、複数のカメラ10により実行された学習の結果を受信する。これにより、サーバ30は、例えば自装置で学習することなく、複数のカメラ10から学習の結果を得ることができる。
また、サーバ30は、自身で学習を実行するとともに、複数のカメラ10に学習の実行指示をそれぞれ送信する。複数のカメラ10は、それぞれ学習の実行指示に従い、学習を実行する。サーバ30は、複数のカメラ10により実行された学習の結果を受信する。これにより、サーバ30は、複数のカメラ10から得た学習の結果に、自装置の学習結果を加えることができ、次回以降の学習の効率化を図ることができる。
また、サーバ30は、学習の結果を複数の前記カメラに送信する。複数のカメラ10は、学習の結果を共有する。これにより、複数のカメラは、同じ学習の結果を利用できる。
また、複数のカメラ10のうち一部の複数のカメラ10は同一の設置状況で設置される。サーバ30は、学習の結果を、設置状況が同じである一部の複数のカメラ10にそれぞれ送信する。設置状況が同じである一部の複数のカメラ10は、サーバ30から送信された学習の結果を共有する。これにより、監視システム5は、設置状況が同じである複数のカメラ10によるオブジェクトの検出精度を高めることができる。
また、サーバ30は、カメラ10により検出された対象物(オブジェクト)objの検出数に応じて、学習の処理量を制御する。これにより、サーバ30は、オブジェクトの検出数が多くて、処理の負荷が大きいカメラに対し、負荷を増加させるような、学習の量を減らすことができる。一方、サーバ30は、オブジェクトの検出数が多くて、処理の負荷が小さいカメラに対し、学習の量を増やすことができる。従って、カメラの処理の負荷を均一化に繋がる。
また、サーバ30は、カメラ10により検出された対象物(オブジェクト)objの検出の正報の数に応じて、カメラ10における学習の処理量を制御する。これにより、サーバ30は、正報の学習の結果を多く用いることで、学習の結果の精度(言い換えると、次回以降の検出の精度)を向上できる。
また、サーバ30は、カメラ10により検出された対象物(オブジェクト)objの検出の誤報の数に応じて、カメラ10における学習の量を制御する。これにより、サーバ30は、誤報の学習の結果を用いないようにすることで、結果的に学習の結果の精度(言い換えると、次回以降の検出の精度)を向上できる。
また、サーバ30は、カメラ10の処理能力の量に応じて、カメラ10における学習の処理量を制御する。これにより、サーバ30は、特定のカメラに大きな負荷をかけることなく、複数のカメラに学習を分散させることができ、効率の良い学習の実現が可能である。
また、サーバ30は、監視システム5を構成するサーバ30及び複数のカメラ10のそれぞれの処理能力に関する情報をテーブルメモリ35に保持する。サーバ30は、サーバ30及び複数のカメラ10のそれぞれの処理能力の量に応じて、学習の処理量を制御する。これにより、サーバ30は、監視システムの特定のデバイスに大きな負荷をかけることなく、複数のデバイスに学習を分散させることができ、効率の良い学習の実現が可能である。
また、上記処理は、撮像画像ogに出現する少なくとも1つの対象物(オブジェクト)objの検出に用いるモデルパラメータPを学習する学習と、撮像画像ogに出現する少なくとも1つの対象物(オブジェクト)objを検出する検出と、検出によって検出された少なくとも1つの対象物(オブジェクト)objを分析する分析と、を含む。これにより、サーバ30は、学習の他、検出と分析においても、複数のカメラ10に処理を分散させることができる。
また、サーバ30は、複数のカメラ10のうち、他のカメラと比べて相対的に処理能力の高い少なくとも1つのカメラ10に対し、テーブルメモリ35に保持される撮像画像のデータを送信し、学習の実行指示を行う。これにより、サーバ30は、ネットワークの帯域が広い場合或いはネットワークが空いている時等において、他の処理能力の高いカメラに撮像画像データを送信することも可能であり、結果的に学習のスピードを向上させることができる。
また、サーバ30は、複数のカメラ10のうち、他のカメラと比べて相対的に処理能力の高い少なくとも1つのカメラ10に対し、テーブルメモリ35に保持される撮像画像のデータを送信し、検出の実行指示を行う。これにより、サーバ30は、ネットワークの帯域が広い場合或いはネットワークが空いている時等において、他の処理能力の高いカメラに撮像画像データを送信することも可能であり、結果的に検出のスピードを向上させることができる。
また、サーバ30は、複数のカメラ10のうち、他のカメラと比べて相対的に処理能力の高い少なくとも1つのカメラ10に対し、テーブルメモリ35に保持される撮像画像のデータを送信し、分析の実行指示を行う。これにより、サーバ30は、ネットワークの帯域が広い場合或いはネットワークが空いている時等において、他の処理能力の高いカメラに撮像画像データを送信することも可能であり、結果的に分析のスピードを向上させることができる。
また、上記処理は、撮像画像ogに出現する少なくとも1つの対象物(オブジェクト)objを検出する検出である。サーバ30は、検出の結果を複数のカメラ10にそれぞれ送信する。複数のカメラ10は、検出の結果を共有する。これにより、サーバ30は、特定のカメラに大きな負荷をかけることなく、複数のカメラに検出を分散させることができ、検出の効率を高めることができる。
また、サーバ30は、複数のカメラ10により実行された学習の結果を統合する。これにより、監視システム5は、サーバ30における統合によって集約された学習の結果の精度を向上できる。
また、複数のカメラ10のうち一部の複数のカメラ10は、同一の設置状況で設置される。サーバ30は、カメラ10の設置状況が同じである、複数のカメラ10により実行された学習の結果を統合する。これにより、サーバ30は、同じ設置状況のカメラによるオブジェクトの検出精度を高めることができる。
サーバ30は、設置状況が同一の一部の複数のカメラ10から、それぞれのカメラの設置状況に関する情報の通知を受信し、その一部の複数のカメラ10により実行された学習の結果を統合する。これにより、サーバ30は、同じ設置状況のカメラによる学習の結果を統合し易くなる。
また、サーバ30及び複数のカメラ10が、複数のカメラ10の処理能力に関する情報と複数のカメラ10の単価コストに関する情報(例えば個々のカメラ10の電力コストの情報)とを共有する。これにより、サーバ30は、空きリソース及び電力コストを考慮して、サーバ及び複数のカメラ等の各デバイスは、処理の指示実行を行うことも可能となり、多様な運用が可能となる。
(第2の実施の形態に至る経緯)
上述した特許文献1のような従来技術では、撮像画像内において追跡対象となる物体の正解となる物体動き情報を得るために、その物体に関する評価関数のスコアを用いることは開示されている。しかし、物体の検出精度を示すスコアに応じて、物体の検出において必要なパラメータの学習量をコントロールすることについては特段の考慮がなされていなかった。このため、例えば本来学習が必要ではない、検出に用いるパラメータを学習してしまうことでパラメータの学習精度にばらつきが生じ、物体の検出精度に影響を及ぼすことが懸念される。
そこで、実施の形態2では、監視エリアに設置されたカメラにおいて撮像された撮像画像内の少なくとも1つのオブジェクトの検出に得られた、そのオブジェクトの検出精度を示すスコアに応じて、検出に用いるパラメータの学習量を適切に制御し、カメラにおける学習精度を向上する監視システム及び監視方法の例、並びに、カメラ及びパラメータ登録方法を説明する。
(実施の形態2)
実施の形態2の監視システム5のシステム構成は、上述した実施の形態1の監視システム5のシステム構成と同一であるので、同一の符号を用いることで、その説明を簡略化又は省略し、異なる内容について説明する。
図14は、実施の形態2のカメラ10の処理実行部14の内部構成の一例を詳細に示すブロック図である。
カメラ10の主要な構成である処理実行部14は、ニューラルネットワーク(つまり、NN140)の他、教師データセットメモリ151及びパラメータメモリ152を含む。
NN140は、オブジェクト推論機能141と、スコア導出機能142と、正誤判定機能143と、パラメータ学習機能144との各機能を有する。
検出部の一例としてのオブジェクト推論機能141では、NN140は、モデルパラメータに従い、撮像画像に出現する対象物が何であるかを推論(つまり、検出)する。
導出部の一例としてのスコア導出機能142では、NN140は、推論時に対象物の検出精度を示すスコア(評価値)を、教師データセットメモリ151に登録された教師データを用いて導出し、そのスコアを出力する。
正誤判定機能143では、NN140は、推論時に対象物の正誤の判定を、教師データセットメモリ151に登録された教師データを用いて導出し、その判定結果を出力する。
パラメータ学習部の一例としてのパラメータ学習機能144では、NN140は、スコアが高い対象物の推論に用いられたモデルパラメータを採用するように学習する。また、パラメータ学習機能144では、NN140は、スコアが低い対象の推論に用いられたモデルパラメータを排除するように学習する。NN140は、学習したモデルパラメータをパラメータメモリ152に登録して蓄積する。パラメータメモリ152に登録された第1所定値(例えば80点)よりスコアが高い対象物の推論に用いられたモデルパラメータは、後述する学習結果の共有において、サーバ30に送信され、統合学習において利用される。
図15は、カメラ10のローカル学習の動作手順の一例を詳細に示すフローチャートである。
図15において、カメラ10は、イメージセンサ12において被写体像から対象物を撮像し(S1)、撮像画像データを生成する(S2)。
処理実行部14は、撮像画像データを入力し、撮像画像に現れる少なくとも1つの対象物(つまり、オブジェクト)を推論(検出)する(S3)。処理実行部14は、推論(検出)時に少なくとも1つのオブジェクトのスコアリング処理を行う(S4)。このスコアリング処理では、処理実行部14は、教師データセットメモリ151に登録された教師データを用いて、オブジェクトのスコア(評価値)を出力する。
処理実行部14は、スコアリング処理の結果、第1所定値(例えば80点)より上位スコアのオブジェクトの推論に用いたモデルパラメータ、及び第2所定値(例えば10点)下位スコアのオブジェクトの推論に用いたモデルパラメータを用いて、NN140のモデルパラメータを学習する(S5)。また、ステップS5において、処理実行部14は、第1所定値より上位スコアのモデルパラメータをパラメータメモリ152に登録して蓄積する。この後、カメラ10は、図15に示す処理を終了する。
上位スコアは、例えば80点〜100点である。下位スコアは、例えば0点〜10点である。処理実行部14は、例えば上位スコアのモデルパラメータを採用し、下位スコアのモデルパラメータを排除する。
上位スコアのオブジェクトは正報の可能性が高いオブジェクトであり、下位スコアのオブジェクトは誤報の可能性が高いオブジェクトである。従って、上位スコアのオブジェクトの推論(検出)に用いたモデルパラメータを採用するように学習することで、正報の可能性が高いオブジェクトの推定に適用されたモデルパラメータが用いられるようになり、モデルパラメータの学習精度を向上させることができる。
また、下位スコアのオブジェクトの推論に用いたモデルパラメータを排除するように学習することで、誤報の可能性が高いオブジェクトの推定に適用されたモデルパラメータが用いられなくなり、モデルパラメータの学習精度を向上させることができる。
また、処理実行部14は、上位スコアのオブジェクトの推論に用いたモデルパラメータと、下位スコアのオブジェクトの推論に用いたモデルパラメータとを組み合わせて、学習してもよい。このように、上位スコアのオブジェクトの推論に用いたモデルパラメータと、下位スコアのオブジェクトの推論に用いたモデルパラメータとを組み合わせて学習することで、モデルパラメータの学習精度をより一層向上させることができる。
図16は、監視システム5における学習結果の共有の概要例の説明図である。
各カメラ10(10A,10B,10C)は、撮像により得られた撮像画像データを用いてローカル学習を行う。ローカル学習において、各カメラ10は、撮像画像データの中で検出した対象物の検出精度に関するスコアリング処理を実行し、得られたスコアに応じて、NN140のモデルパラメータを学習する。また、各カメラ10は、上位スコアのオブジェクトの推論(検出)に用いたモデルパラメータのみ採用して学習する。これにより、モデルパラメータの学習精度を向上できる。
また、ローカル学習では、撮像画像データを評価するためのUI画面340(図17参照)が表示可能である。例えば、カメラ10は、カメラ10にオプションとして接続された表示器(図示略)にUI画面340を表示させてもよいし、サーバ30の表示部37に転送してUI画面340を表示させることも可能である。
図17は、ローカル学習時に表示されるUI画面340の一例を示す図である。
UI340は、撮像画像データから切り出された学習データごとに、スコア、カメラID、リジェクトボタンbxを表示する。なお、画像データのサムネイルは、カメラ10が元の撮像画像データを記憶しているので、ここでは表示されないが、表示されるようにしてもよい。検出の対象(オブジェクト)は「人」である。
スコアは、0点〜100点の範囲で数値化される。なお、スコアは、各カメラ10がスコアリング処理することで算出されたが、ユーザがUI320から入力することで取得されてもよい。カメラIDは、学習データを得るために撮像したカメラの識別情報である。リジェクトボタンbxは、ユーザにより選択された場合、チェックマークが表示される。リジェクトボタンbxにチェックマークが付加された学習データは、ユーザが学習ボタンbt5を押下すると、学習に用いられなくなる。
カメラ10は、自動的に、下位スコアの撮像画像データを採用する学習を行わず、上位スコアの撮像画像データを採用する学習を行った。但し、例えばカメラ10の代わりに、ユーザが、リジェクトボタンbxを用いて学習に用いる撮像画像データを指示してもよい。例えば、ユーザは、下位スコアの撮像画像データを排除する学習を行わず、上位スコアの撮像画像データを採用する学習を行うように指示してもよい。
また、各カメラ10は、上位スコアの撮像画像データのみ採用する学習を行ったが、例えば下位スコアの撮像画像データのみ排除する学習を行うように指示してもよい。これにより、下位スコアの撮像画像データが排除された撮像画像データを用いて学習を行うことができる。また、上位スコアの撮像画像データと下位スコアの撮像画像データとを組み合わせて用いるように設定されてもよい。これにより、撮像画像データの品質に照らして、学習に用いる画像データを、カメラ或いはユーザが個別に選別できる。
サーバ30は、各カメラ10(10A,10B,10C)から送信されたモデルパラメータを受信し、受信した各モデルパラメータを合算する統合学習を行い、合算したモデルパラメータを学習用DB34に追加する。ここで、統合されるモデルパラメータは、設置状況が同じカメラで撮像された画像データを基に得られたモデルパラメータである。一方、設置状況が異なるカメラで撮像された画像データを基に得られるモデルパラメータは、合算されず、別々の学習モデルに対するモデルパラメータとして個別に登録される。
図18は、統合学習時にサーバ30の表示部37に表示されるUI画面350の一例を示す図である。
サーバ30は、表示部37に、統合学習時のUI310(図18参照)を表示可能である。UI350は、撮像画像データから切り出された学習データ毎に、スコア、サムネイル、カメラID、リジェクトボタンbxを表示する。ここでは、検出の対象(オブジェクト)が「人」である場合を示す。
スコアは、0点〜100点の範囲で数値化される。例えば、対象が「人」である場合、人が写っている画像データの点数は、80点〜100点と高くなる。一方、人でなく「木」が写っている画像データの点数は、10点と低くなる。サムネイルは、学習データの縮小画像である。サムネイルであるので、カメラ10からサーバ30に送信される際、データ転送量は抑えられる。カメラIDは、学習データを得るために撮像したカメラの識別情報である。リジェクトボタンbxは、ユーザにより選択され、チェックマークが表示される。リジェクトボタンbxにチェックマークが付加された学習データは、ユーザが学習ボタンbt5を押下すると、学習に用いられなくなる。
サーバ30は、自動的に上位スコアの撮像画像データを採用する学習を行わず、下位スコアの撮像画像データを排除する学習を行う。但し、例えばユーザが、リジェクトボタンbxを用いて学習に用いる撮像画像データを指示してもよい。例えば、ユーザは、下位スコアの撮像画像データを排除する学習を行わず、上位スコアの撮像画像データを採用する学習を行うように指示してもよい。
このように、サーバ30がモデルパラメータを統合学習することで、モデルパラメータの学習の精度が向上する。サーバ30は、統合学習の結果である更新されたモデルパラメータを、該当するカメラ10にフィードバック送信する。これにより、各カメラ10で得られる画像データの正報が多くなるほど、カメラの検出精度が高くなる。
また、サーバ30は、統合学習の結果である、更新されたモデルパラメータを、各カメラ10にフィードバック送信する際、各カメラ10の正報の数に応じて、フィードバック量を制御する。つまり、サーバ30は、誤報の数が多いカメラ10に対し、フィードバック量(例えばフィードバック回数)が多くなるように、更新済みモデルパラメータを送信する。これにより、正報の数が増加し、カメラの検出精度が向上する。
一方、サーバ30は、正報の数が多いカメラ10に対し、フィードバック量(例えばフィードバック回数)が少なくなるように、更新済みモデルパラメータを送信する。これにより、カメラの処理の負荷を軽減できる。なお、サーバ30は、設置環境が同じであるカメラに対し、同一の更新済みのモデルパラメータを送信して共有させることは、前述した通りである。
また、サーバ30は、各カメラ10に対し、学習の実行指示を行う際、各カメラ10の正報の数に応じて、学習の処理量を指示する。誤報の数が多いカメラ10に対し、学習量が多くなるように、学習の実行指示を行う。これにより、正報の数が増加し、カメラの検出精度が向上する。一方、サーバ30は、正報の数が多いカメラ10に対し、学習量が少なくなるように、学習の実行指示を行う。これにより、カメラの処理の負荷を軽減できる。
また、サーバ30は、各カメラ10で撮像された画像に出現する対象を検出する検出の結果を統合して管理してもよい。検出の結果を統合する場合、対象の動きをベクトルで表し、ベクトルで検出の結果を管理してもよい。
以上により、実施の形態2のカメラ10は、監視エリアSAに設置され、サーバ30と互いに通信可能に接続された監視システム5に用いられるカメラである。カメラ10は、イメージセンサ12において、監視エリアSAからの被写体光を撮像する。カメラ10は、検出部の一例としてのオブジェクト推論機能141において、被写体光の撮像に基づく撮像画像ogを用いて、撮像画像に出現する少なくとも1つのオブジェクトを検出する。カメラ10は、オブジェクトの種別ごとに用意された教師データセットを教師データセットメモリ151において保持する。カメラ10は、導出部の一例としてのスコア導出機能142において、教師データセットを用いて、検出されたオブジェクトの検出精度を示すスコアを導出する。カメラ10は、パラメータ学習部の一例としてのパラメータ学習機能144において、導出されたスコアに応じて、オブジェクトの検出に用いるモデルパラメータを学習する。カメラ10は、パラメータ学習機能144において、モデルパラメータの学習結果をパラメータメモリ152に登録して蓄積する。
これにより、カメラ10は、監視エリアに設置されたカメラにおいて撮像された撮像画像内の少なくとも1つのオブジェクトの検出によって得られた、そのオブジェクトの検出精度を示すスコアに応じて、検出に用いるパラメータの学習量を適切に制御し、カメラにおける学習精度を向上させることができる。
また、パラメータ学習機能144は、第1所定値より上位のスコアが導出されたモデルパラメータを採用するように学習する。このように、カメラ10は、上位スコアのオブジェクトの推論に用いたモデルパラメータを採用するように学習することで、正報の可能性が高いオブジェクトの推定に適用されたモデルパラメータが用いられるようになり、モデルパラメータの学習精度を向上させることができる。
また、パラメータ学習機能144は、第2所定値より下位のスコアが導出されたモデルパラメータを排除するように学習する。このように、カメラ10は、下位スコアのオブジェクトの推論に用いたモデルパラメータを排除するように学習することで、誤報の可能性が高いオブジェクトの推定に適用されたモデルパラメータが用いられなくなり、モデルパラメータの学習精度を向上させることができる。
また、パラメータ学習機能144は、第1所定値より上位のスコアが導出されたモデルパラメータを採用するように学習し、かつ、第2所定値より下位のスコアが導出されたモデルパラメータを排除するように学習する。このように、カメラ10は、上位スコアのオブジェクトの推論に用いたモデルパラメータと、下位スコアのオブジェクトの推論に用いたモデルパラメータとを組み合わせて学習することで、モデルパラメータの学習精度をより一層向上させることができる。
以上、図面を参照しながら各種の実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。また、発明の趣旨を逸脱しない範囲において、上述実施の形態における各構成要素を任意に組み合わせてもよい。
例えば、上述した実施の形態では、監視システムは、泥棒等の不審者を発見・追跡する、防犯用の監視システムに適用される場合を示したが、無人自動化(FA化)された製造ラインにおける製品検査用の監視システム等に適用されてもよい。