(57)【要約】      （修正有）【課題】物体検出のコスト増加を抑えつつ撮影空間の奥にある物体の検出精度を向上させることができる物体検出装置及び物体検出方法を提供する。【解決手段】人物頭部検出装置６は、入力画像に対し人物を検出する検出領域を設定する検出領域設定部３５と、入力画像に対し射影変換を含む前処理を施す前処理部３２と、前処理の際に用いるパラメータを生成する前処理パラメータ算出部３７と、所定の検出モデル４２を用いて前処理を施した画像から人物を検出する人物頭部検出部３４を備える。前処理パラメータ算出部３７は、人物頭部を一定のサイズと仮定してカメラの撮影時のカメラパラメータ４４から算出される人物頭部の画像上のサイズと、検出モデルを用いて検出可能な人物頭部の画像上の推奨サイズに基づき、射影変換を含む前処理のパラメータを生成する。【選択図】図３
2019219804.tif 000002
【特許請求の範囲】
【請求項１】
カメラで撮影した画像から所定の物体を検出する物体検出装置において、
入力画像に対し前記物体を検出する検出領域を設定する検出領域設定部と、
前記入力画像に対し射影変換を含む前処理を施す前処理部と、
前記前処理の際に用いるパラメータを生成する前処理パラメータ算出部と、
所定の検出モデルを用いて前記前処理を施した画像から前記物体を検出する物体検出部と、を備え、
前記前処理パラメータ算出部は、前記物体を一定のサイズと仮定して前記カメラの撮影時のカメラパラメータから算出される前記物体の画像上のサイズと、前記検出モデルを用いて検出可能な前記物体の画像上の推奨サイズに基づき、前記射影変換を含む前記前処理のパラメータを生成することを特徴とする物体検出装置。
【請求項２】
請求項１に記載の物体検出装置であって、
前記前処理パラメータ算出部は、前記カメラパラメータから算出した前記物体のサイズの前記検出領域における最小値が、前記検出モデルを用いて検出可能な前記物体の推奨サイズ以上となるように、前記射影変換のパラメータを算出することを特徴とする物体検出装置。
【請求項３】
請求項２に記載の物体検出装置であって、
前記前処理パラメータ算出部は、前記検出領域の中で前記カメラから見て奥にある画像を手前にある画像よりも拡大率が大きくなるように前記射影変換のパラメータを算出することを特徴とする物体検出装置。
【請求項４】
請求項３に記載の物体検出装置であって、
前記前処理パラメータ算出部は、前記射影変換により前記画像を拡大するとき、拡大後の前記物体の形状の歪みが閾値を超えないように前記射影変換のパラメータを修正することを特徴とする物体検出装置。
【請求項５】
請求項１に記載の物体検出装置であって、
前記前処理には、さらに、前記検出領域に基づく前記入力画像からの画像切出しと、前記検出モデルが受付可能となる推奨画像サイズに前記入力画像を縮小する処理とが含まれていることを特徴とする物体検出装置。
【請求項６】
請求項５に記載の物体検出装置であって、
前記物体検出部による物体の検出結果と、前記前処理のパラメータをもとに検出した前記物体の位置を前記入力画像の座標に変換して統合する検出結果統合部と、
前記統合された物体検出情報を外部の装置に出力する出力制御部と、
を備えることを特徴とする物体検出装置。
【請求項７】
カメラで撮影した画像から所定の物体を検出する物体検出方法において、
入力画像に対し前記物体を検出する検出領域を設定するステップと、
前記入力画像に対し射影変換を含む前処理を施すステップと、
前記前処理の際に用いるパラメータを生成する前処理パラメータの算出ステップと、
所定の検出モデルを用いて前記前処理を施した画像から前記物体を検出するステップと、を備え、
前記前処理パラメータの算出ステップでは、前記物体を一定のサイズと仮定して前記カメラの撮影時のカメラパラメータから前記物体の画像上のサイズを算出し、前記検出モデルを用いて検出可能な前記物体の画像上の推奨サイズと比較して、前記射影変換を含む前記前処理のパラメータを生成することを特徴とする物体検出方法。
【請求項８】
請求項７に記載の物体検出方法であって、
前記前処理のステップには、さらに、前記検出領域に基づく前記入力画像からの画像切出しと、前記検出モデルが受付可能となる推奨画像サイズに前記入力画像を縮小する処理とが含まれ、
前記物体を検出するステップでは、前記前処理を施した画像に対し、畳み込みニューラルネットワークにより前記物体を検出することを特徴とする物体検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラ等を用いて人物等の物体を検出する物体検出装置及び物体検出方法に関する。
【背景技術】
【０００２】
監視カメラにて人物等の物体を検出する際、撮影画像内での物体のサイズや向きに関わらず、物体を正しく検出できることが要求される。その手法の１つとして、特許文献１には、撮影画像に射影変換を施した後で、機械学習などの手段により物体検出を行うことが開示されている。すなわち、人物等の物体の姿勢を判定するために、特定方向から撮影した学習画像を用いて特定姿勢の所定物体の特徴を学習しておき、所定物体がとり得る複数通りの姿勢を仮定して、仮定した姿勢ごとに当該姿勢の所定物体の像を特定姿勢の像に変換する射影変換を入力画像に施す。そして、射影変換を施した入力画像に窓領域を設定し、窓領域に特定姿勢の所定物体の特徴が現れている度合いであるスコアを算出することで、スコアが最も高い姿勢の所定物体が入力画像に撮影されていると判定する構成となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−０４９６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、監視カメラの解像度が向上し、畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Numeral Network）を代表とする深層学習を用いて、物体検出を高精度に行うことが可能になっている。ＣＮＮでは基本的に矩形画像を入力し、画像内から所定の物体の検出を行う。その際計算が複雑になるため、よく利用される深層学習のモデルでは小さい画像で学習及び検出を行う。また物体検出アルゴリズムであるＳＳＤ（Single Shot Multibox Detector）では、検出できる物体のサイズは学習時のモデルに依存し、一定サイズ以上の物体しか検出できない。つまり、検出できる物体の画像内サイズは、学習時の画像内モデルサイズに依存する（以下、最小検出サイズと呼ぶ）。
【０００５】
高解像度で大きな画像の場合には、撮影空間の奥の物体まで検出できるが、処理負荷（以下、検出コスト）が増大する。このため、画像を縮小してから物体検出を行うことになるが、奥にある物体は画像内サイズが最小検出サイズに近づき、検出精度が低下する。一方、撮影空間の手前にある物体は、画面内サイズが最小検出サイズに比べて非常に大きくなるので、無駄なコストを費やすことになる。このように、奥行きのある撮影空間においては、物体の検出コストの低減と検出精度の向上を両立させることは困難であった。
【０００６】
前記特許文献１に記載される技術は、物体の姿勢の変化に対しては有効であるものの、物体の画像内サイズの変化については特に考慮されていない。すなわち、同じ物体であっても撮影空間においてカメラからの距離に応じて画像内サイズが変化することについて、考慮されていない。また、前記特許文献１では、複数通りの姿勢を仮定してそれぞれに対応した射影変換を繰り返して行う必要があり、深層学習を用いる物体検出ではコストが増大するという課題がある。
【０００７】
本発明の目的は、物体検出のコスト増加を抑えつつ撮影空間の奥にある物体の検出精度を向上させる物体検出装置及び物体検出方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の物体検出装置は、入力画像に対し物体を検出する検出領域を設定する検出領域設定部と、入力画像に対し射影変換を含む前処理を施す前処理部と、前処理の際に用いるパラメータを生成する前処理パラメータ算出部と、所定の検出モデルを用いて前処理を施した画像から物体を検出する物体検出部と、を備える。ここに前処理パラメータ算出部は、物体を一定のサイズと仮定してカメラの撮影時のカメラパラメータから算出される物体の画像上のサイズと、検出モデルを用いて検出可能な物体の画像上の推奨サイズに基づき、射影変換を含む前処理のパラメータを生成する。
【０００９】
また本発明の物体検出方法は、入力画像に対し前記物体を検出する検出領域を設定するステップと、入力画像に対し射影変換を含む前処理を施すステップと、前処理の際に用いるパラメータを生成する前処理パラメータの算出ステップと、所定の検出モデルを用いて前処理を施した画像から物体を検出するステップと、を備える。ここに前処理パラメータの算出ステップでは、物体を一定のサイズと仮定してカメラの撮影時のカメラパラメータから物体の画像上のサイズを算出し、検出モデルを用いて検出可能な物体の画像上の推奨サイズと比較して、射影変換を含む前処理のパラメータを生成する。
【発明の効果】
【００１０】
本発明によれば、物体検出のコスト増加を抑えつつ撮影空間の奥にある物体の検出精度を向上させることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】人数計測システムの全体の構成を示す図。
【図２】人物頭部検出装置のハードウェア構成を示す図。
【図３】人物頭部検出装置のシステム構成を示す図。
【図４】人物頭部検出装置の全体の動作フローを示す図。
【図５】事前設定（Ｓ１）の流れを示す図。
【図６】カメラパラメータの設定例を示す図。
【図７】検出モデル属性のデータ構造を示す図。
【図８】検出領域設定の画面を示す図。
【図９】検出領域情報のデータ構造を示す図。
【図１０】前処理パラメータ生成（Ｓ２）の流れを示す図。
【図１１】画面上頭部サイズ一覧のデータ構造を示す図。
【図１２】前処理パラメータ４６のデータ構造を示す図。
【図１３】前処理パラメータの確認画面を示す図。
【図１４】前処理（Ｓ３）の流れを示す図。
【図１５】人数計測処理（Ｓ４）の流れを示す図。
【図１６】人物検出結果の表示例を示す図。
【図１７】人物検出結果のデータ構造を示す図。
【発明を実施するための形態】
【００１２】
以下、本発明の物体検出装置の実施形態として、人物の頭部を検出する人物頭部検出装置と、これを用いて道路等を通行する人物の数を計測する人数計測システムについて説明する。
【００１３】
図１は、人数計測システムの全体の構成を示す図である。人数計測システム１は、道路等の特定の領域２を通行する人物３を検出し、検出した人数の結果を時刻順に保存するシステムである。人数計測システム１は、特定の領域２を撮影する監視カメラ４と、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、ＶＰＮ（Virtual Private Network）などのネットワーク５と、ネットワーク５を介して監視カメラ４の画像を受信し、画像内に写っている人物３の頭部を検出し、検出した人数を計測する人物頭部検出装置６と、を有する。さらに、監視カメラ４の画像及び人物頭部検出装置６による検出結果をリアルタイムに表示する映像表示装置７と、検出した人数情報を時刻ごとに蓄積する人数履歴蓄積装置８と、を備えて構成される。このシステムでは人数の計測を目的としているため、人物頭部検出装置６では人物３の頭部を検出する方式として処理効率を上げている。以下、人物頭部検出装置６の詳細を説明する。
【００１４】
図２は、人物頭部検出装置６のハードウェア構成を示す図である。人物頭部検出装置６は、ＣＰＵ（Central Processing Unit）１１、ストレージ部１２、メモリ２０、入出力部２１、通信部２２と、これらを接続するバス１９を含んで構成される。
【００１５】
ＣＰＵ１１は、各種演算を実行するユニットである。ＣＰＵ１１は、ストレージ部１２からメモリ２０にロードした所定のプログラムを実行することにより、各種処理を実行する。メモリ２０には、ＣＰＵ１１により実行されるプログラムや、プログラムの実行に必要なデータが一時保存される。
【００１６】
ストレージ部１２は、デジタル情報を記憶可能なハードディスク（Hard Disk Drive）やＳＳＤ（Solid State Drive）、あるいはフラッシュメモリなどの不揮発性記憶装置である。ストレージ部１２には、以下のプログラムやデータが格納されている。
人数計測プログラム１３は、人数計測に係わる全てのコンピュータに対する命令を記述したものである。ＣＰＵ１１は人数計測プログラム１３をメモリ２０に展開して、人数計測の各種処理を行う。
【００１７】
検出モデルＤＢ（データベース）１４は、物体を識別するためのパラメータを格納する。例えば、ＳＶＭ（Support Vector Machine）識別器を用いて物体検出を行う場合、検出モデルＤＢ１４には、当該物体と他の物体の特徴量を区別するサポートベクターが格納されている。ＣＮＮを用いて物体検出を行う場合、検出モデルＤＢ１４には、ＣＮＮネットワークの構造を示すパラメータ及びＣＮＮネットワークの学習済みモデルの初期化数値が格納されている。本実施例では、ＣＮＮネットワークのモデル情報が蓄積されている場合を想定して説明する。
検出モデル属性ＤＢ１５は、検出モデルＤＢ１４に格納されているモデルについての、入力可能な画像サイズや検出可能な頭部サイズなどの属性を格納する。
【００１８】
カメラパラメータＤＢ１６は、監視カメラ４の高さ、俯角などの設置情報、及び画角や焦点距離などのカメラの撮影パラメータを格納する。
検出領域設定ＤＢ１７は、特定領域２において人物３を検出したい領域を設定するための情報を格納する。
【００１９】
前処理パラメータＤＢ１８は、監視カメラ４からの入力画像に対して、検出精度を向上させるために射影変換などの前処理を行うためのパラメータを格納する。
入出力部２１は、ユーザの操作を入力したり、外部装置と送受信する画像やデータの信号変換を行う。例えば入出力部２１には、グラフィックボードやビデオカードなどが含まれ、監視カメラ４の画像や人数計測の結果などを映像表示装置７で表示可能な信号に変換する。
通信部２２は、ネットワーク５を介して監視カメラ４の画像を受信し、人物検出結果を映像表示装置７や人数履歴蓄積装置８に送信する。
【００２０】
図３は、人物頭部検出装置６のシステム構成を示す図である。人物頭部検出装置６は、画像入力部３１、前処理部３２、特徴量抽出部３３、人物頭部検出部３４、検出領域設定部３５、画面上頭部サイズ算出部３６、前処理パラメータ算出部３７、検出結果統合部３８、操作入力部３９、出力制御部４０、及びプログラム動作用データ４１からなる。
【００２１】
まず、プログラム動作用データ４１から説明すると、ＣＰＵ１１によりストレージ部１２からロードされたもので、以下のデータが含まれる。検出モデル４２は検出モデルＤＢ１４のデータであり、検出モデル属性４３は検出モデル属性ＤＢ１５のデータである。カメラパラメータ４４はカメラパラメータＤＢ１６のデータであり、検出領域情報４５は検出領域設定ＤＢ１７のデータである。前処理パラメータ４６は前処理パラメータＤＢ１８のデータである。
【００２２】
画像入力部３１は、ネットワーク５を介して監視カメラ４から符号化された画像データを受信し、これを復号化してフレーム単位の画像に変換する。
前処理部３２は、画像入力部３１のカメラ画像（入力画像とも呼ぶ）に対して、前処理パラメータ４６を用いて、画像の切出しや縮小と射影変換などの前処理を実施する。前処理は、撮影空間の奥にいる人物を精度良く検出するために行う。
【００２３】
特徴量抽出部３３は、前処理部３２による処理後の画像に対して、ＣＮＮネットワークなどを用いて特徴量の抽出を行う。
人物頭部検出部３４は、検出モデル４２と特徴量抽出部３３で抽出した特徴量を用いて、人物頭部の有無を判定し、頭部ありの場合、さらに頭部の中心位置と頭部サイズ（幅と高さ）を算出する。
【００２４】
検出領域設定部３５は、画像入力部３１からのカメラ画像に対して、どの領域の人物を検出すべきかを設定する。カメラ画像のサイズ（横×縦）が大きい場合、ＣＮＮを用いて検出を行うために適切な画像サイズに縮小する。その際、検出領域を設定しないと、カメラ画像全体を所定サイズに縮小する結果、人物の頭部サイズが小さすぎて検出精度が低下することになる。そこで、検出領域を設定することで画像の縮小率を抑え、検出精度の低下を回避することができる。また、検出領域を設定することで、重視すべき領域が分かり、その領域に特化した前処理パラメータを算出することが可能になる。
【００２５】
画面上頭部サイズ算出部３６は、所定のサイズ（身長、頭部サイズなど）の人物が画面上の各位置の地面に立っていると仮定して、画面上の各位置における人物頭部の画面上サイズを算出する。この計算では、監視カメラ４のカメラパラメータ４４を用いる。すなわち、画面内に見える人物頭部の大きさは、カメラと人物の位置の幾何学関係から決定され、カメラから距離が遠くなるほど小さく見えるからである。
【００２６】
前処理パラメータ算出部３７は、画面上頭部サイズ算出部３６の算出結果に基づき、前処理部３２にて射影変換などの前処理を行うときに用いる前処理パラメータ４６を算出する。前処理パラメータ４６には、画像の切出し領域や縮小率の情報も含む。
検出結果統合部３８は、人物頭部検出部３４の検出結果をもとに、人物の有無の情報と、検出した人物の座標（中心座標及び人物頭部に重畳する矩形マークの座標であって、前処理の前の画像における座標）を算出して、これらを統合して人物検出結果を出力する。
【００２７】
操作入力部３９は、キーボードやマウスなどのデバイスであり、ユーザの操作を識別して操作命令に変換する。
出力制御部４０は、検出結果統合部３８からの人物検出結果と画像入力部３１からのカメラ画像を、ユーザが視認可能な形式に変換して映像表示装置７にて表示させる。また、人物検出結果を人数履歴蓄積装置８へ出力して蓄積させる。
【００２８】
次に、人物頭部検出装置６の動作を説明する。
図４は、人物頭部検出装置６の全体の動作フローを示す図である。動作フローは大きく４段階に分かれ、事前設定（Ｓ１）、前処理パラメータ生成（Ｓ２）、前処理（Ｓ３）、人数計測（Ｓ４）の順に行う。その概要は次の通りである。
【００２９】
事前設定（Ｓ１）では、人物検出で使用する検出モデルやカメラパラメータなどの条件を設定する。
前処理パラメータ生成（Ｓ２）では、カメラパラメータから人物頭部の画面上のサイズを算出し、それに基づき射影変換を含む前処理パラメータを生成する。
前処理（Ｓ３）では、前処理パラメータを用いて、入力画像に対し射影変換を含む前処理を実施する。
人数計測（Ｓ４）では、検出モデルを用いて前処理を施した画像から人物頭部を検出し、検出した人数と位置の情報を出力する。
以下、各段階の処理について詳細に説明する。
【００３０】
（Ｓ１）事前設定（ステップＳ１０１〜Ｓ１０４）
図５は、事前設定の流れを示す図である。事前設定では、人物検出を行うための様々な条件を入力・設定する。
【００３１】
ステップＳ１０１では、カメラパラメータ４４を設定する。カメラパラメータ４４は、監視カメラ４の仕様書や設置情報をもとに手動入力する。あるいは、カメラパラメータの推定手段による自動入力でも可能である。
【００３２】
図６は、カメラパラメータ４４の設定例を示す図である。設定項目は、カメラの設置高さ、俯角、ロール角、焦点距離、イメージセンサーの横サイズＣｘ、イメージセンサーの縦サイズＣｙ、カメラ画像の横幅Ｗcam、カメラ画像の縦幅Ｈcamなどである。
【００３３】
ステップＳ１０２では、検出モデル４２の指定として、人物頭部検出で利用すべき学習済みモデルを指定する。学習済みモデルとは、例えばＣＮＮなどのニューラルネットワークを採用し、大量の同じサイズの人物頭部が含まれる画像を使ってネットワークの構造パラメータを算出したものである。
【００３４】
ステップＳ１０３では、検出モデル属性４３を指定する。
図７は、検出モデル属性４３のデータ構造を示す図である。検出モデル属性４３の項目は、検出モデル４２における推奨画像横幅Ｗopt、推奨画像縦幅Ｈopt、及び推奨頭部サイズＶopt（幅×高さ）からなる。
【００３５】
推奨画像サイズＷopt，Ｈoptは、検出モデル４２が受付可能となる入力画像のサイズを指定する。もしも、入力画像のサイズが推奨画像サイズと異なる場合は、入力画像のサイズを変更（縮小／拡大）する。
【００３６】
推奨頭部サイズＶoptは、検出モデル４２にて頭部として検出可能となる頭部画像のサイズである。カメラ画像においてカメラからの距離が遠い人物は、頭部の画面上サイズが小さくなるため検出ができない場合がある。そこで、検出モデル４２の学習時の頭部サイズに基づいて推奨頭部サイズＶoptを指定する。例えば、学習データの中で頭部画像の平均サイズを推奨頭部サイズとして指定する。
【００３７】
ステップＳ１０４では、検出領域設定部３５により検出領域を設定する。カメラ画像の中で、人物頭部を検出すべき領域を設定する。
【００３８】
図８は、検出領域設定の画面を示す図である。映像表示装置７の画面７０には、監視カメラ４からの画像が表示されている。ここには、道路７１や人物７２が表示されている。検出領域の設定では、ユーザがマウス等を操作して操作入力部３９が受付し、４つの画面上位置を連結して１つのポリゴンを生成する。このポリゴンの中の領域を検出領域とし、その境界線を画面上に表示する。図８の例ではポリゴンＡＢＣＤの領域（破線で示す）が検出領域７３であり、これに含まれる人物７２が検出対象となる。なお、上記の操作を複数回行うことで複数の検出領域を設定することができる。ユーザはリセットボタン７８を押すことで、設定した領域をリセットし再設定することができる。また、保存ボタン７９を押すことで、設定した検出領域７３は検出領域情報４５として保存される。
【００３９】
図９は、検出領域情報４５のデータ構造を示す図である。検出領域情報４５において、領域ＩＤは、複数のポリゴンがある場合に各ポリゴンを区別するための番号である。ポリゴン座標は、ポリゴンを構成する複数（４点）の画面上座標が記述されている。
【００４０】
（Ｓ２）前処理パラメータの生成（ステップＳ２０１−Ｓ２１３）
図１０は、前処理パラメータ生成の流れを示す図である。前処理パラメータの生成は、画面上頭部サイズ算出部３６と前処理パラメータ算出部３７が中心となって行う。ここでは、検出領域の中で、画面上に表示される頭部画像のサイズを算出し、それに基づき、前処理パラメータを生成する。
【００４１】
ステップＳ２０１では、画面上頭部サイズ算出部３６は、カメラパラメータＤＢ１６からカメラパラメータ４４を読み出す。
【００４２】
ステップＳ２０２では、全ての画面上位置において、人物が平面の地面に立っていると仮定して、人物の座標と頭部のサイズの関係を算出する。人物頭部のサイズ算出では、例えば以下の前提条件を用いるが、この前提条件は利用環境によって値を変更する。
・人物身長は１６０ｃｍである。
・人物頭部は直径４０ｃｍの球である。
・人物の活動範囲は平坦な地面上である。
【００４３】
具体的な頭部サイズの算出方法は、監視カメラ４をピンホール・カメラとみなし、カメラパラメータ４４を用いて、画面上の任意の画素位置に上記前提条件の人物頭部の中心が存在すると仮定し、人物頭部の世界座標を算出する。さらに、人物頭部の世界座標から人物頭部の画面上のサイズ（幅と高さ）を算出する。算出の結果、画面上頭部サイズ一覧を生成する。
【００４４】
図１１は、画面上頭部サイズ一覧のデータ構造を示す図である。画面上頭部サイズ一覧８０は、画面上座標及び頭部サイズからなる。画面上座標として、カメラからの入力画像のサイズ（図６のカメラ画像横幅Ｗcam、画像縦幅Ｈcam）内の全ての画像点を仮定する。各画像点に人物が立っている場合、表示される頭部のサイズ（横と縦）を画素数で記述する。図１１から分かるように、カメラから遠い画面上座標では、頭部サイズが小さく算出され、カメラから近い画面上座標では、頭部サイズが大きく算出されている。
【００４５】
ステップＳ２０３では、ユーザが設定した検出領域情報４５を用いて、検出領域の中における頭部サイズを抽出する。つまり、ステップＳ２０２ではカメラ画像の全領域における頭部サイズを算出したが、これから検出領域内の頭部サイズに絞り込む訳である。
【００４６】
次に前処理パラメータ算出部３７は、検出領域内の頭部サイズの情報を用いて、前処理部３２で利用する前処理パラメータ４６の算出を行う。
ステップＳ２０４では、検出モデル属性ＤＢ１５から該当する検出モデル属性４３を読み出す。
【００４７】
ステップＳ２０５では、検出モデル属性４３の推奨画像横幅Ｗoptと推奨画像縦幅Ｈopt、カメラパラメータ４４のカメラ画像横幅Ｗcam、カメラ画像縦幅Ｈcamを用いて、画像の縮小率を算出する。
横方向の縮小率＝推奨画像横幅Ｗopt／カメラ画像横幅Ｗcam
縦方向の縮小率＝推奨画像縦幅Ｈopt／カメラ画像縦幅Ｈcam
なお、カメラ画像サイズが推奨画像サイズよりも小さい場合は、縮小率が１より大きくなり、画像を拡大することになるが、ここでは画像を縮小する（縮小率＜１）の場合について説明する。
【００４８】
ステップ２０６では、前記画像縮小率を用いて、検出領域の頭部サイズから縮小後画像における頭部サイズを計算し、検出領域内で最小の頭部サイズＶminを算出する。一般に、カメラ画像内では奥方向になるほど頭部サイズが小さい。例えば図８の場合、検出領域７３内ではＣＤ直線が最も奥に位置するため、点Ｃと点Ｄにおける縮小後頭部サイズを最小頭部サイズＶminとする。
【００４９】
ステップＳ２０７では、ステップＳ２０６で求めた最小頭部サイズＶminを検出モデル属性４３に指定された推奨頭部サイズＶoptに拡大するための、理想拡大率Ｇoptを算出する。つまり、Ｇopt＝Ｖopt／Ｖminで求める。なお、この拡大率Ｇoptは検出領域７３のＣＤ位置での値であって、他の位置での拡大率はこれよりも小さく直線的に変化する。
【００５０】
ステップＳ２０８では、ステップＳ２０７で求めた理想拡大率Ｇoptについて、画像の歪みが一定閾値を超えないように拡大率を修正する。これは、画像の歪みが大きくなると検出精度が低下するからである。具体的には、人物頭部の場合、拡大後の頭部の形状における上部幅と下部幅の比率が一定閾値、例えば１．２以下になるように拡大率を修正する。修正後の拡大率を有効拡大率Ｇeffとする。画像の歪みが一定閾値以下であれば、理想拡大率Ｇoptがそのまま有効拡大率Ｇeffとなる。
【００５１】
ステップＳ２０９では、図８の検出領域７３の場合、ポリゴンＡＢＣＤが含まれる矩形を切り出し画像とし、切り出し画像内の点Ｃと点Ｄの座標を算出する。ここで点Ｃと点Ｄは画像拡大（射影変換）するときの頂点座標となるので、参考点と呼ぶことにする。
【００５２】
ステップＳ２１０では、参考点ＣとＤについて、前記有効拡大率Ｇeffにて拡大した後の参考点Ｃ’とＤ’（図１３に示す）の座標を算出する。なお、点Ａと点Ｂは画像拡大では固定される点とし、座標は変わらない。
【００５３】
ステップＳ２１１では、ポリゴンＡＢＣＤと拡大後のポリゴンＡＢＣ’Ｄ’の各点の座標を用いて、射影変換のパラメータを算出する。射影変換のパラメータの算出方法は下記の通りである。
【００５４】
【数１】
2019219804.tif 000003
【００５５】
数式１において、ｘ、ｙは拡大前の座標、ｕ，ｖは拡大後の座標、ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈは変換係数である。ＡＢＣＤの４点の座標（ｘ，ｙ）と拡大後のＡＢＣ’Ｄ’の４点の座標（ｕ，ｖ）の値を数式１に代入すると、８個の変換式が得られる。これより８個の変換係数ａ〜ｈを求め、これらを次の数式２の行列形式で記述したものが、射影変換パラメータである。
【００５６】
【数２】
2019219804.tif 000004
【００５７】
ステップＳ２１２では、上記射影変換パラメータを用いて、前処理パラメータ４６を生成する。
図１２は、前処理パラメータ４６のデータ構造を示す図である。前処理パラメータ４６の項目は、切り出し領域、画像縮小率、射影変換パラメータ、出力画像サイズからなる。切り出し領域は、検出領域７３のポリゴンＡＢＣＤが含まれる矩形領域（図１３のＡＢＣ’Ｄ’）で、その対角点の座標値で示す。画像縮小率は、ステップＳ２０５にて算出した横方向と縦方向の縮小率である。射影変換パラメータは、ステップＳ２１１にて算出した値であり、変換係数ａ〜ｈを行列で示している。出力画像サイズは画像縮小後のサイズで、検出モデル属性４３の推奨画像横幅Ｗopt及び推奨画像縦幅Ｈoptと同じ値になる。
【００５８】
ステップＳ２１３では、ユーザによる前処理パラメータの確認動作を行う。
図１３は、前処理パラメータの確認画面を示す図である。映像表示装置７の画面７０には、カメラ画像とともに前処理による効果のプレビューを表示する。すなわち、現在設定されている検出領域７３（ＡＢＣＤ、破線で示す）を表示するとともに、前処理において切り出される画像領域８３（ＡＢＣ’Ｄ’、一点鎖線で示す）、及び射影変換により検出可能となる領域８５（ドットパターンで示す）を表示する。ここで、検出領域７３が全て検出可能領域８５とならないのは、射影変換により画像歪みが閾値を超える領域が生じるからである。
【００５９】
ユーザはこの結果を確認し、問題ないと判断した場合は保存ボタン８９を押すことで、前処理パラメータ４６が前処理パラメータＤＢ１８に格納される。もしユーザが検出領域７３を変更したい場合には、リセットボタン８８を押すことで図５における検出領域の設定（ステップＳ１０４）に戻る。そして検出領域を変更し、再度前処理パラメータを算出することが可能である。
【００６０】
（Ｓ３）前処理（ステップＳ３０１−Ｓ３０５）
図１４は、前処理の流れを示す図である。画像入力部３１がカメラ画像を前処理部３２に送ると、前処理部３２はカメラ画像に対して前処理を実施する。
【００６１】
ステップＳ３０１では、検出領域設定ＤＢ１７から検出領域情報４５（検出領域座標）を読み出す。図１３では、ポリゴンＡＢＣＤで示す検出領域７３が相当する。
【００６２】
ステップＳ３０２では、前処理パラメータＤＢ１８から前処理パラメータ４６を読み出す。
【００６３】
ステップＳ３０３では、前処理パラメータ４６の切り出し領域の情報を用いて、検出すべき領域の画像を切り出す。図１３では、ポリゴンＡＢＣ’Ｄ’で示す矩形領域８３を切り出す。
【００６４】
ステップＳ３０４では、前処理パラメータ４６の射影変換パラメータを用いて、切り出し画像に対して射影変換を実施する。射影変換では、前記数式２を用いて画像内の各画素位置を変換する。図１３では、点Ｃ，Ｄの画像が点Ｃ’，Ｄ’の位置に拡大変換される。射影変換を実施することで、撮影空間の奥にいる人物の頭部画像を拡大することができる。
【００６５】
ステップＳ３０５では、前処理パラメータ４６の画像縮小率に従い、射影変換後の画像を縮小する。これで、前処理を終了する。
【００６６】
（Ｓ４）人数計測（ステップＳ４０１−Ｓ４１１）
図１５は、人数計測処理の流れを示す図である。前処理部３２が前処理後の画像を特徴量抽出部３３に送ると、人物検出と人数計測の処理に進む。ここでは、特徴量抽出部３３による特徴量抽出、人物頭部検出部３４による人物頭部の検出、検出結果統合部３８による人物位置統合処理を行う。
【００６７】
ステップＳ４０１では、特徴量抽出部３３は画像から特徴量の抽出を行う。ＣＮＮネットワークの場合、畳み込み演算またはプーリング層などの深層学習の手法により画像特徴量の抽出を行う。
【００６８】
ステップＳ４０２では、抽出された特徴量を用いて、人物頭部検出部３４は人物頭部の有無、及び人物頭部の中心座標、頭部サイズの計算を行う。人物頭部検出の結果、人物頭部の座標情報を含むリストが生成される。
【００６９】
ただし、ここで生成される座標情報は前処理後の座標情報であり、画像入力部３１で入力した画像の座標と異なる。そこで検出結果統合部３８は、ステップＳ４０３において、前処理前の入力画像の座標に変換する人物位置統合処理を行う。
【００７０】
ステップＳ４０３に示す人物位置統合処理は、ステップＳ４０４〜Ｓ４０９の工程からなる。
ステップＳ４０４では、前処理パラメータＤＢ１８から前処理パラメータ４６を読み出す。
【００７１】
ステップＳ４０５では、検出領域設定ＤＢ１７から検出領域情報４５を読み出す。
ステップＳ４０６では、カメラパラメータＤＢ１６からカメラパラメータ４４を読み出す。
【００７２】
ステップＳ４０７では、前処理パラメータ４６の画像縮小率を用いて、Ｓ４０２で生成した人物頭部座標情報から縮小前の座標に変換する。
ステップＳ４０８では、人物頭部座標情報を射影変換前の座標に変換するために、逆射影変換を行う。逆射影変換時のパラメータには、前処理パラメータ４６の射影変換パラメータ（数式２）の転置行列を用いればよい。
【００７３】
ステップＳ４０９では、前処理パラメータ４６の切り出し領域の情報を用いて、切り出し前の画像における人物頭部の座標に変換する。
以上により、人物位置統合処理を完了し、前処理前の座標で記述された人物位置の情報が出力制御部４０へ送られる。
【００７４】
ステップＳ４１０では、出力制御部４０は人物検出情報を映像表示装置７へ出力し、人物検出結果が表示される。
図１６は、人物検出結果の表示例を示す図である。映像表示装置７の画面７０には、監視カメラ４からの画像とともに、設定した検出領域７３が表示されている。また現在の人物検出結果をもとに、検出された人物頭部位置に矩形の検出マーク９０を重ねて表示し、検出人数欄９１には最新の検出された人数を表示する。
【００７５】
ステップＳ４１１では、出力制御部４０は人物検出情報を人数履歴蓄積装置８へ出力し、人物検出結果が蓄積される。
図１７は、人物検出結果のデータ構造を示す図である。人物検出結果９２には、検出領域７３における検出時刻ごとの人物頭部の数、すなわち人数を記述する。また、人数の他に検出した人物の座標や頭部座標を記述してもよい。
【００７６】
以上、本実施例の人物頭部検出装置６の動作を説明したが、所定の領域の人物を検出する場合、カメラパラメータを用いて撮影画像の射影変換を含む適切な前処理を行うことで、検出処理のコスト増加を抑えつつ、人物の検出精度、ひいては人数計測の精度を向上させる効果が得られる。すなわち本実施例では、検出領域の中でカメラから見て奥にいる人物の画像を手前にある画像よりも拡大率が大きくなるように射影変換を行うことで、検出時の処理負荷を抑えつつ奥にいる人物を含めて検出精度を向上させることができる。また、前処理において入力画像のサイズを推奨画像サイズに縮小することで、畳み込みニューラルネットワークによる人物検出の処理負荷を低減させることができる。
【００７７】
上記実施例においては、検出する物体として人物の頭部を例に説明したが、これに限らず学習済みの検出モデルを用いることで任意の物体を検出できることは言うまでもない。また、監視カメラ４の台数は複数台であってもよく、さらに、人物頭部検出装置６と人数履歴蓄積装置８を複数台備え、装置間で連携しながら、人数計測を行うシステムであってもよい。
【００７８】
本発明は上記実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成の追加・削除・置換をすることも可能である。
【００７９】
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記した実施例の技術的要素は、単独で適用されてもよいし、プログラム部品とハードウェア部品のような複数の部分に分けられて適用されるようにしてもよい。
【符号の説明】
【００８０】
１：人数計測システム、３，７２：人物、４：監視カメラ、６：人物頭部検出装置、７：映像表示装置、８：人数履歴蓄積装置、１１：ＣＰＵ、１２：ストレージ部、３２：前処理部、３３：特徴量抽出部、３４：人物頭部検出部、３５：検出領域設定部、３６：画面上頭部サイズ算出部、３７：前処理パラメータ算出部、３８：検出結果統合部、４０：出力制御部、４２：検出モデル、４３：検出モデル属性、４４：カメラパラメータ、４５：検出領域情報、４６：前処理パラメータ、７３：検出領域、８０：画面上頭部サイズ一覧、８３：切り出し画像領域、８５：検出可能領域、９０：検出マーク、９１：検出人数欄、９２：人物検出結果。
【図１】
2019219804.tif 000005
【図２】
2019219804.tif 000006
【図３】
2019219804.tif 000007
【図４】
2019219804.tif 000008
【図５】
2019219804.tif 000009
【図６】
2019219804.tif 000010
【図７】
2019219804.tif 000011
【図８】
2019219804.tif 000012
【図９】
2019219804.tif 000013
【図１０】
2019219804.tif 000014
【図１１】
2019219804.tif 000015
【図１２】
2019219804.tif 000016
【図１３】
2019219804.tif 000017
【図１４】
2019219804.tif 000018
【図１５】
2019219804.tif 000019
【図１６】
2019219804.tif 000020
【図１７】
2019219804.tif 000021