(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024121867
(43)【公開日】2024-09-09
(54)【発明の名称】乗降者カウントプログラムおよび情報処理装置
(51)【国際特許分類】
G06T 7/60 20170101AFI20240902BHJP
G06T 7/20 20170101ALI20240902BHJP
G06V 10/762 20220101ALI20240902BHJP
G06V 20/54 20220101ALI20240902BHJP
【FI】
G06T7/60 110
G06T7/20 300Z
G06V10/762
G06V20/54
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023029075
(22)【出願日】2023-02-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】松下 輝
(72)【発明者】
【氏名】小山 周治
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096BA02
5L096BA04
5L096CA04
5L096FA10
5L096FA13
5L096FA52
5L096FA66
5L096FA67
5L096FA69
5L096GA51
5L096HA05
5L096MA07
(57)【要約】
【課題】車両の乗降者のカウント精度を向上させる。
【解決手段】情報処理装置10は、車両と車両の外を移動する複数の人とを写した画像データ13を取得する。情報処理装置10は、画像データ13から、複数の人の移動経路を示す軌跡14a,14b,14cを検出する。情報処理装置10は、画像データ13の画像領域に設定されたカウント線15と軌跡14a,14b,14cとが交差する複数の交点のクラスタに基づいて、カウント線15の範囲16を特定する。情報処理装置10は、軌跡14a,14b,14cのうち範囲16内でカウント線15と交差する軌跡の個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
車両と前記車両の外を移動する複数の人とを写した画像データを取得し、
前記画像データから、前記複数の人の移動経路を示す複数の軌跡を検出し、
前記画像データの画像領域に設定されたカウント線と前記複数の軌跡とが交差する複数の交点のクラスタに基づいて、前記カウント線の範囲を特定し、
前記複数の軌跡のうち前記特定された範囲内で前記カウント線と交差する軌跡の個数に基づいて、前記車両の乗車人数および降車人数の少なくとも一方を算出する、
処理をコンピュータに実行させる乗降者カウントプログラム。
【請求項2】
前記特定は、前記複数の交点を前記画像領域内の座標に基づいて複数のクラスタに分類し、前記複数のクラスタのうち交点の個数が閾値を超えるクラスタに基づいて、前記車両が備えるドアの位置を前記範囲として推定する処理を含む、
請求項1記載の乗降者カウントプログラム。
【請求項3】
前記特定は、1つの軌跡が前記カウント線と複数回交差する場合、前記1つの軌跡の移動方向に基づいて高々1つの交点を選択する処理を含む、
請求項1記載の乗降者カウントプログラム。
【請求項4】
前記検出は、前記画像データから前記車両が写った車両領域を検出する処理を含み、
前記特定は、前記1つの軌跡の始点および終点がそれぞれ前記車両領域に含まれるか否かに基づいて、前記移動方向を判定する処理を含む、
請求項3記載の乗降者カウントプログラム。
【請求項5】
前記検出は、前記複数の人それぞれが写った人領域を検出し、前記画像領域の縦方向の位置と前記人領域の高さとの関係に基づいて、前記複数の人のうち一部の人の前記人領域を補正し、前記補正された人領域に基づいて前記複数の軌跡を検出する処理を含む、
請求項1記載の乗降者カウントプログラム。
【請求項6】
前記特定された範囲に基づいて前記画像領域にドア領域を設定し、
前記複数の軌跡のうち、前記カウント線と交差せず、始点または終点が前記ドア領域に含まれる軌跡の個数に基づいて、前記乗車人数または前記降車人数を増やす、
処理を前記コンピュータに更に実行させる請求項1記載の乗降者カウントプログラム。
【請求項7】
前記複数の軌跡のうち、前記画像領域に設定された周辺領域と前記車両が写った車両領域との一方から他方へ移動する軌跡の個数に基づいて、前記車両の他の乗車人数および他の降車人数の少なくとも一方を算出し、
前記乗車人数および前記他の乗車人数を含む複数の乗車人数が算出された場合、前記複数の乗車人数のうちの最大値を選択し、前記降車人数および前記他の降車人数を含む複数の降車人数が算出された場合、前記複数の降車人数のうちの最大値を選択する、
処理を前記コンピュータに更に実行させる請求項1記載の乗降者カウントプログラム。
【請求項8】
前記他の乗車人数および前記他の降車人数の少なくとも一方の算出は、前記複数の軌跡のうち、始点または終点が前記周辺領域および前記車両領域の何れにも含まれない軌跡を除外する処理を含む、
請求項7記載の乗降者カウントプログラム。
【請求項9】
前記画像データに含まれる複数のフレームそれぞれから前記車両を示す境界ボックスを判定し、前記画像領域内での前記境界ボックスの位置が特定の条件を満たすか否かに基づいて、前記複数のフレームのうち前記車両が停車している停車期間を判定する処理を前記コンピュータに更に実行させ、
前記複数の軌跡は、前記停車期間に含まれるフレームから検出される、
請求項1記載の乗降者カウントプログラム。
【請求項10】
車両と前記車両の外を移動する複数の人とを写した画像データを取得し、
前記画像データから、前記複数の人の移動経路を示す複数の軌跡を検出し、
前記複数の軌跡のうち、前記画像データの画像領域に設定された周辺領域と前記車両が写った車両領域との一方から他方へ移動する軌跡の個数に基づいて、前記車両の乗車人数および降車人数の少なくとも一方を算出する、
処理をコンピュータに実行させる乗降者カウントプログラム。
【請求項11】
車両と前記車両の外を移動する複数の人とを写した画像データを記憶する記憶部と、
前記画像データから、前記複数の人の移動経路を示す複数の軌跡を検出し、前記画像データの画像領域に設定されたカウント線と前記複数の軌跡とが交差する複数の交点のクラスタに基づいて、前記カウント線の範囲を特定し、前記複数の軌跡のうち前記特定された範囲内で前記カウント線と交差する軌跡の個数に基づいて、前記車両の乗車人数および降車人数の少なくとも一方を算出する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は乗降者カウントプログラムおよび情報処理装置に関する。
【背景技術】
【0002】
コンピュータは、車両の停車時に撮像された画像データに基づいて、車両に乗った乗車者および車両から降りた降車者の少なくとも一方をカウントしたいことがある。
なお、カメラの画像から継続的に人を検出し、同一人の移動軌跡が判定ラインを通過した場合に通過人数を加算する入退場者数管理システムが提案されている。また、停車中の列車のドア周辺を撮像し、画像からドア毎の乗降者をカウントし、駅間で乗降人数を通知して現在の乗客数を推定する監視システムが提案されている。
【0003】
また、車両内に設置されたカメラにより継続的に乗降口を撮像し、画像から人を検出して追跡し、乗降口を通過する乗降者をカウントする乗降者カウント装置が提案されている。また、車両の乗降口を継続的に撮像し、画像から人を検出して追跡し、乗降口の手前に設定された2つのカウント線それぞれを人が通過したか否かに基づいて乗降人数を算出する乗降人数算出システムが提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10-49718号公報
【特許文献2】特開2014-54899号公報
【特許文献3】特開2014-219913号公報
【特許文献4】特開2022-149027号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
コンピュータは、車両が停車する停車場を撮像した画像データから、カウント線を通過した人をカウントすることで、乗車人数および降車人数の少なくとも一方を算出することが考えられる。しかし、バスのように、画像領域内で乗降口の写る位置が、車両の停車毎に変わることがある。また、トランクの荷物の出し入れなど、乗降以外の理由で人が車両に近付くこともある。このため、カウント線を用いた単純なカウント方法では、カウント精度が低くなることがある。そこで、1つの側面では、本発明は、車両の乗降者のカウント精度を向上させることを目的とする。
【課題を解決するための手段】
【0006】
1つの態様では、以下の処理をコンピュータに実行させる乗降者カウントプログラムが提供される。車両と車両の外を移動する複数の人とを写した画像データを取得する。画像データから、複数の人の移動経路を示す複数の軌跡を検出する。画像データの画像領域に設定されたカウント線と複数の軌跡とが交差する複数の交点のクラスタに基づいて、カウント線の範囲を特定する。複数の軌跡のうち特定された範囲内でカウント線と交差する軌跡の個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【0007】
また、1つの態様では、以下の処理をコンピュータに実行させる乗降者カウントプログラムが提供される。車両と車両の外を移動する複数の人とを写した画像データを取得する。画像データから、複数の人の移動経路を示す複数の軌跡を検出する。複数の軌跡のうち、画像データの画像領域に設定された周辺領域と車両が写った車両領域との一方から他方へ移動する軌跡の個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。
【発明の効果】
【0008】
1つの側面では、車両の乗降者のカウント精度が向上する。
【図面の簡単な説明】
【0009】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図2】第2の実施の形態の情報処理装置を説明するための図である。
【
図3】第3の実施の形態の情報処理システムの例を示す図である。
【
図4】情報処理装置のハードウェア例を示す図である。
【
図5】画像データから乗降者をカウントする流れの例を示す図である。
【
図6】ロジックおよび検知モードによる乗降者数の違いの例を示す図である。
【
図7】バスの境界ボックスの異常例を示す図である。
【
図8】フレーム番号とIoUの関係例を示すグラフである。
【
図9】追跡IDの共通化の第1の例を示す図である。
【
図10】追跡IDの共通化の第2の例を示す図である。
【
図11】追跡IDの共通化の第3の例を示す図である。
【
図12】フレーム内の許容領域の例を示す図である。
【
図13】バスの境界ボックスから算出されるバス領域の例を示す図である。
【
図14】人の境界ボックスから算出される軌跡の例を示す図である。
【
図15】低域通過フィルタによる軌跡の平準化例を示す図である。
【
図16】人の境界ボックスのY座標と高さの関係例を示すグラフである。
【
図17】人の境界ボックスの高さを補正する補正関数の例を示すグラフである。
【
図18】位置分析の設定テーブルの例を示す図である。
【
図19】カウント線ロジックによる乗降者カウントの例を示す図である。
【
図20】カウント線と軌跡の交点の例を示す図である。
【
図21】クラスタから判定される乗車口と降車口の例を示す図である。
【
図22】乗降モードにおける降車期間と乗車期間の判定例を示すグラフである。
【
図23】ドア領域を用いたカウント追加の例を示す図である。
【
図24】カウント線ロジックの設定テーブルの例を示す図である。
【
図25】周辺領域ロジックによる乗降者カウントの例を示す図である。
【
図26】軌跡毎のカウントの増減例を示す図である。
【
図27】情報処理装置の機能例を示すブロック図である。
【
図28】停車期間検出の手順例を示すフローチャートである。
【
図29】停車期間検出の手順例を示すフローチャート(続き1)である。
【
図30】停車期間検出の手順例を示すフローチャート(続き2)である。
【
図31】位置分析の手順例を示すフローチャートである。
【
図32】位置分析の手順例を示すフローチャート(続き)である。
【
図33】カウント線ロジックの手順例を示すフローチャートである。
【
図34】カウント線ロジックの手順例を示すフローチャート(続き1)である。
【
図35】カウント線ロジックの手順例を示すフローチャート(続き2)である。
【
図36】カウント線ロジックの手順例を示すフローチャート(続き3)である。
【
図37】周辺領域ロジックの手順例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0011】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10は、画像データを分析して車両の乗降者をカウントする。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータまたは乗降者カウント装置と呼ばれてもよい。
【0012】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。
【0013】
処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0014】
記憶部11は、画像データ13を記憶する。画像データ13には、車両と車両の外を移動する複数の人とが写っている。画像データ13には、例えば、車両が停車する停車場が写っている。画像データ13は、停車場に設定された定点カメラから受信されてもよい。停車場は、車両が停車する停車区画と人が歩行する歩行区画とを含んでもよい。車両には2以上の人が乗車可能であり、停車場から見た車両のドアの位置は停車毎に変わる。例えば、車両はバスであり、停車場はバス停である。ただし、車両はバスに限定されない。
【0015】
画像データ13は、撮像場所が同じで撮像時刻の異なる複数のフレームを含む。画像データ13が動画像データと呼ばれてもよい。フレーム間隔は10fpsのように一定であってもよく、フレームの解像度は1920×1080のように一定であってもよい。
【0016】
処理部12は、画像データ13から、複数の人の移動経路を示す複数の軌跡を検出する。例えば、処理部12は、画像データ13から、車両の停車期間における異なる人の移動経路を示す軌跡14a,14b,14cを検出する。
【0017】
このとき、処理部12は、訓練済みの機械学習モデルである画像認識モデルを用いて、画像データ13の各フレームに写った人を認識してもよい。また、処理部12は、機械学習モデルを用いて、異なるフレームで認識された人の同一性を判定してもよい。また、処理部12は、同一人の座標を列挙することで軌跡を算出してもよい。
【0018】
処理部12は、画像データ13の画像領域に対してカウント線15を設定する。カウント線15は、カメラの設置位置や車両が停車し得る停車区画を考慮して、画像データ13が取得される前に設定されてもよい。例えば、カウント線15は、歩行区画の端など、乗車者および降車者が通過すると想定される位置に設定される。
【0019】
処理部12は、軌跡14a,14b,14cなどの複数の軌跡それぞれとカウント線15とが交差する交点を検出する。1つの軌跡がカウント線15と2回以上交差する場合、処理部12は、その軌跡の移動方向に応じて、それら2以上の交点のうち高々1つの交点を選択して他の交点を削除してもよい。
【0020】
処理部12は、複数の軌跡に対応する複数の交点のクラスタに基づいて、カウント線15上の範囲16を特定する。例えば、処理部12は、k-means法などのクラスタリングアルゴリズムを用いて、複数の交点を画像領域上の座標に基づいて複数のクラスタに分類する。処理部12は、交点の個数が閾値を超えるクラスタなど、密度が高いクラスタに含まれる交点の分布から範囲16を特定する。処理部12は、カウント線15上の範囲16を、車両のドアがある区間と推定してもよい。
【0021】
処理部12は、検出された複数の軌跡のうち、範囲16の中でカウント線15と交差する軌跡をカウントする。このとき、処理部12は、範囲16の外でカウント線15と交差する軌跡をカウント対象から除外してもよい。例えば、軌跡14a,14bは範囲16の中でカウント線15と交差し、軌跡14cは範囲16の外でカウント線15と交差する。この場合、軌跡14cはカウント対象から除外される。
【0022】
処理部12は、カウントされた個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。このとき、処理部12は、軌跡がカウント線15を通過する方向に基づいて、乗車者の軌跡と降車者の軌跡とを区別してもよい。処理部12は、カウント線15を下から上に通過する軌跡を乗車者の軌跡と判定してもよく、カウント線15を上から下に通過する軌跡を降車者の軌跡と判定してもよい。また、処理部12は、乗車者の軌跡の交点と降車者の軌跡の交点とを分けてクラスタに分類することで、車両が備える乗車口と降車口とを区別して推定してもよい。
【0023】
処理部12は、算出された人数を出力する。処理部12は、人数を不揮発性ストレージに記録してもよく、表示装置に表示してもよく、他の情報処理装置に送信してもよい。
以上説明したように、第1の実施の形態の情報処理装置10は、車両と車両の外を移動する複数の人とを写した画像データ13を取得する。情報処理装置10は、画像データ13から、複数の人の移動経路を示す複数の軌跡を検出する。情報処理装置10は、画像データ13の画像領域に設定されたカウント線15と複数の軌跡とが交差する複数の交点のクラスタに基づいて、カウント線15の範囲16を特定する。情報処理装置10は、複数の軌跡のうち範囲16内でカウント線15と交差する軌跡の個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。
【0024】
これにより、情報処理装置10は、車両が備えるドアの位置を推定することができ、ドア位置を考慮して乗降者をカウントすることができる。よって、車両の停車位置が停車毎にずれる場合であっても、乗降者のカウント精度が向上する。また、荷物の出し入れなど乗降以外の理由で車両に近づく人を誤って乗降者としてカウントすることが抑制され、乗降者のカウント精度が向上する。
【0025】
なお、情報処理装置10は、複数の交点を画像領域内の座標に基づいて複数のクラスタに分類してもよく、交点の個数が閾値を超えるクラスタに基づいてドア位置を推定してもよい。これにより、車両のドア位置が精度よく推定される。
【0026】
また、情報処理装置10は、1つの軌跡がカウント線15と複数回交差する場合、その軌跡の移動方向に基づいて高々1つの交点を選択してもよい。これにより、乗車前の荷物の積み込みや降車後の荷物の引き取りなど、乗降以外の理由でカウント線15を跨いだ人の重複カウントが抑制される。また、情報処理装置10は、画像データ13から車両が写った車両領域を検出してもよく、軌跡の始点および終点がそれぞれ車両領域に含まれるか否かに基づいて軌跡の移動方向を判定してもよい。これにより、1つの軌跡から検出された複数の交点の中から、乗車点または降車点が精度よく判定される。
【0027】
また、情報処理装置10は、複数の人それぞれが写った人領域を検出してもよく、画像領域の縦方向の位置と人領域の高さとの関係に基づいて、一部の人の人領域の高さを補正してもよい。これにより、画像データ13に複数の人が重なって写っている場合であっても、複数の人の軌跡が精度よく検出される。
【0028】
また、情報処理装置10は、範囲16に基づいて画像領域にドア領域を設定してもよく、カウント線15と交差せず、始点または終点がドア領域に含まれる軌跡の個数に基づいて、算出される乗車人数または降車人数を増やしてもよい。これにより、車両のドア周辺に人が密集して人の移動経路の認識精度が低い場合であっても、乗降者の見逃しが抑制されて乗降者のカウント精度が向上する。
【0029】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置を説明するための図である。
【0030】
第2の実施の形態の情報処理装置20は、第1の実施の形態と同様に、画像データを分析して車両の乗降者をカウントする。情報処理装置20は、第1の実施の形態の情報処理装置10に対応する。情報処理装置10と情報処理装置20とが同一であってもよい。
【0031】
情報処理装置20は、記憶部21および処理部22を有する。記憶部21は、第1の実施の形態の記憶部11に対応する。処理部22は、第1の実施の形態の処理部12に対応する。記憶部21は、画像データ23を記憶する。画像データ23は、第1の実施の形態の画像データ13に対応する。処理部22は、第1の実施の形態と同様に、画像データ23から、複数の人の移動経路を示す複数の軌跡を検出する。例えば、処理部22は、画像データ23から軌跡24a,24b,24cを検出する。
【0032】
処理部22は、画像データ23の画像領域に周辺領域25を設定する。周辺領域25は、例えば、停車場の出入口など、乗車者が停車場に入る際に通過する歩行区画や、降車者が停車場から出る際に通過する歩行区画を示す。周辺領域25は、カメラの設置位置や停車場の構造を考慮して、画像データ23が取得される前に設定されてもよい。また、処理部22は、画像データ23から、車両が写った車両領域26を検出する。車両領域26は、車両の停車毎に異なってもよい。
【0033】
処理部22は、複数の人に対応する複数の軌跡のうち、設定された周辺領域25と検出された車両領域26との一方から他方へ移動する軌跡をカウントする。処理部22は、カウントされた個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。このとき、処理部22は、始点および終点の少なくとも一方が、周辺領域25および車両領域26の何れにも含まれない軌跡を、カウント対象から除外してもよい。
【0034】
処理部22は、周辺領域25から車両領域26に移動する軌跡の個数から、乗車人数を算出してもよい。また、処理部22は、車両領域26から周辺領域25に移動する軌跡の個数から、降車人数を算出してもよい。また、処理部22は、周辺領域25から車両領域26に移動する軌跡の個数と、車両領域26から周辺領域25に移動する軌跡の個数との差から、乗車人数および降車人数の何れか一方のみを算出してもよい。
【0035】
処理部22は、算出された人数を出力する。処理部22は、人数を不揮発性ストレージに記録してもよく、表示装置に表示してもよく、他の情報処理装置に送信してもよい。
以上説明したように、第2の実施の形態の情報処理装置20は、車両と車両の外を移動する複数の人とを写した画像データ23を取得する。情報処理装置20は、画像データ23から、複数の人の移動経路を示す複数の軌跡を検出する。情報処理装置20は、複数の軌跡のうち、画像データ23の画像領域に設定された周辺領域25と車両が写った車両領域26との一方から他方へ移動する軌跡の個数に基づいて、車両の乗車人数および降車人数の少なくとも一方を算出する。
【0036】
これにより、情報処理装置20は、停車場への進入経路や停車場からの退出経路など、乗降者が車両から離れた区画を移動した際の移動経路の情報を利用して、乗降者をカウントすることができる。よって、車両のドア周辺が混雑して人の認識精度が低い場合であっても、乗降者のカウント精度が向上する。
【0037】
なお、情報処理装置20は、第1の実施の形態のカウント方法を併用してもよい。例えば、情報処理装置20は、第1の実施の形態のカウント方法と第2の実施の形態のカウント方法とで異なる乗車人数が算出された場合、何れか大きい方を選択してもよい。また、情報処理装置20は、第1の実施の形態のカウント方法と第2の実施の形態のカウント方法とで異なる降車人数が算出された場合、何れか大きい方を選択してもよい。
【0038】
また、情報処理装置20は、人の軌跡のうち、始点または終点が周辺領域25および車両領域26の何れにも含まれない軌跡を、カウント対象から除外してもよい。これにより、停車場を通過したに過ぎない通行者がカウントされず、カウント精度が向上する。
【0039】
[第3の実施の形態]
次に、第3の実施の形態を説明する。
図3は、第3の実施の形態の情報処理システムの例を示す図である。
【0040】
第3の実施の形態の情報処理システムは、複数のバス停それぞれから画像データを収集し、収集した画像データを分析して各バス停の乗車人数および降車人数を算出する。情報処理システムは、カメラ35,36および情報処理装置100を含む。カメラ35,36および情報処理装置100は、ネットワーク30に接続されている。ネットワーク30は、例えば、インターネットなどの広域データ通信ネットワークである。
【0041】
カメラ35は、バス停31に設置されており、バス停31に到着したバスおよび歩道を歩道側から撮像する。バス停31には、バス33など1日に1台以上のバスが停車する。バス33は左側に乗降口を備えるため、カメラ35はバス33を左側から撮像する。カメラ36は、バス停32に設置されており、バス停32に到着したバスおよび歩道を歩道側から撮像する。バス停32には、バス34など1日に1台以上のバスが停車する。バス34は左側に乗降口を備えるため、カメラ36はバス34を左側から撮像する。バス停31,32は、バース(Berth)と呼ばれることがある。
【0042】
カメラ35,36は、撮像方向が固定された定点カメラであり、監視カメラと呼ばれてもよい。カメラ35,36は、一定の解像度および一定のフレームレートをもつ画像データを、情報処理装置100に継続的に送信する。解像度は、例えば、幅1920×高さ1080である。フレームレートは、例えば、10フレーム毎秒(fps)である。
【0043】
情報処理装置100は、カメラ35,36から画像データを受信して分析するサーバコンピュータである。情報処理装置100は、画像データから、バス停31,32を歩行する人やバス33,34を認識する。情報処理装置100は、画像認識結果に基づいて、バス停31,32それぞれの乗車人数および降車人数を算出する。情報処理装置100は、乗降者カウント装置または画像認識装置と呼ばれてもよい。情報処理装置100は、第1の実施の形態の情報処理装置10や第2の実施の形態の情報処理装置20に対応する。
【0044】
第3の実施の形態では、バス停31,32を管理するバス停管理会社が、バス33,34を運行するバス運行会社と異なる。バス運行会社はバス停毎の乗降者数の情報をもっているものの、乗降者数の情報がバス運行会社からバス停管理会社にリアルタイムに報告されるわけではない。そのため、バス停管理会社は、カメラ35,36の画像データを利用して、乗降者数を迅速に知りたいことがある。乗降者数の情報は、バス停位置の変更や清掃作業員の確保など、バス停31,32の管理に利用され得る。
【0045】
そこで、例えば、情報処理装置100は、バス停31,32に到着したバスそれぞれの乗降者数を示す報告データを、1日に1回など定期的に生成して出力する。報告データは、不揮発性ストレージに記憶されてもよいし、表示装置に表示されてもよいし、他の情報処理装置に送信されてもよい。なお、情報処理装置100は、カメラ35,36から受信された画像データをリアルタイムに分析してもよいし、蓄積した画像データを1日に1回など定期的にバッチ処理として分析してもよい。
【0046】
バスの種類として、ハイデッカーバス、ダブルデッカーバスおよびコミュニティバスがある。ハイデッカーバスは、客席の床が高いバスであり、前方に1つのドアを備える。ダブルデッカーバスは、二階建てバスであり、前方に運転手用ドアを備え、中央に乗客用ドアを備える。ただし、終点のバス停では、乗客が前方のドアから降車することもある。コミュニティバスは、客席の床が低いバスであり、前方に乗車用ドアを備え、中央に降車用ドアを備える。ただし、終点のバス停では、乗客が前方のドアから降車することもある。
【0047】
バス停の種類として、乗車専用のバス停、降車専用のバス停、および、乗降兼用のバス停がある。乗車専用のバス停では、停車する全てまたは大部分のバスについて、バスから降りる降車者がいない。降車専用のバス停では、停車する全てまたは大部分のバスについて、バスに乗る乗車者がいない。乗降兼用のバス停では、停車する全てまたは大部分のバスについて、乗車者と降車者の両方がいる可能性がある。
【0048】
図4は、情報処理装置のハードウェア例を示す図である。
情報処理装置100は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の処理部12および第2の実施の形態の処理部22に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11および第2の実施の形態の記憶部21に対応する。
【0049】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータをRAM102にロードし、プログラムを実行する。情報処理装置100は、複数のプロセッサを有してもよい。
【0050】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類の揮発性メモリを有してもよい。
【0051】
HDD103は、オペレーティングシステム(OS:Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムと、データとを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0052】
GPU104は、CPU101と連携して画像処理を行い、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。情報処理装置100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0053】
また、GPU104は、GPGPU(General Purpose Computing on Graphics Processing Unit)として使用されてもよい。GPU104は、CPU101からの指示に応じてプログラムを実行し得る。情報処理装置100は、RAM102以外の揮発性半導体メモリをGPUメモリとして有してもよい。
【0054】
入力インタフェース105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。情報処理装置100に複数の入力デバイスが接続されてもよい。
【0055】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0056】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0057】
通信インタフェース107は、ネットワーク30を介してカメラ35,36と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0058】
次に、乗降者のカウントの流れについて説明する。
図5は、画像データから乗降者をカウントする流れの例を示す図である。
情報処理装置100は、フレーム131-1~131-5を含む画像データを受信する。情報処理装置100は、画像データに対して、物体認識141、物体追跡142、停車期間検出143および乗降者カウント144を順に実行する。そして、情報処理装置100は、到着時刻、出発時刻、乗車人数および降車人数を示すデータ132を出力する。
【0059】
フレーム131-1は、バスがバス停に進入中であり停車していない時刻の画像である。フレーム131-2は、バスが停車したものの人の乗り降りが始まっていない時刻の画像である。フレーム131-3は、バスが停車中であり人の乗り降りが始まった時刻の画像である。フレーム131-4は、バスが停車中でありフレーム131-3より後の時刻の画像である。フレーム131-3,131-4には、人が写っている。フレーム131-5は、バスがバス停から出発した時刻の画像である。
【0060】
物体認識141は、フレーム131-1~131-5それぞれから物体を検出する。物体認識141は、物体が写った矩形領域を示す境界ボックス(Bounding Box)を生成し、物体のクラスを示すラベルを境界ボックスに付与する。例えば、物体認識141は、フレーム131-1~131-5からバスを検出し、バスクラスを示すラベルが付与された境界ボックスを生成する。また、物体認識141は、フレーム131-3,131-4から人を検出し、人クラスを示すラベルが付与された境界ボックスを生成する。
【0061】
物体追跡142は、物体認識141の出力に基づいて、異なるフレームに含まれる境界ボックスが同一の物体を表しているか判定する。物体追跡142は、隣接するフレームの間で、同じクラスが付与された2つの境界ボックスの距離と当該クラスから、境界ボックスの位置変化が物体の正常な動きを表しているか判定する。物体追跡142は、同一の物体を表す境界ボックスに、同じ追跡ID(トラックID)を付与する。
【0062】
例えば、物体追跡142は、フレーム131-1~131-5に含まれるバスの境界ボックスに、同じ追跡IDを付与する。また、物体追跡142は、フレーム131-3,131-4に含まれる人の境界ボックスに、同一の追跡IDを付与する。
【0063】
情報処理装置100は、物体認識141および物体追跡142に機械学習モデルを用いてもよい。物体認識141に関しては、例えば、次の非特許文献に記載がある。Zheng Ge, Songtao Liu, Feng Wang, Zeming Li and Jian Sun, "YOLOX: Exceeding YOLO Series in 2021", arXiv:2107.08430, July 2021。物体追跡142に関しては、例えば、次の非特許文献に記載がある。Yifu Zhang, Peize Sun, Yi Jiang, Dongdong Yu, Zehuan Yuan, Ping Luo, Wenyu Liu and Xinggang Wang, "ByteTrack: Multi-Object Tracking by Associating Every Detection Box", arXiv:2110.06864, October 2021。
【0064】
停車期間検出143は、物体追跡142の出力に基づいて、バスがバス停に停車している停車期間を検出し、画像データの中から停車期間に属するフレームを抽出する。このとき、停車期間検出143は、同じ追跡IDをもつバスの境界ボックスそれぞれの位置が、バス停毎に事前に設定された許容領域の中にあるか判定する。停車期間検出143は、境界ボックスの位置が許容領域に入ったフレームの時刻を到着時刻と判定し、境界ボックスの位置が許容領域から出たフレームの時刻を出発時刻と判定する。
【0065】
到着時刻から出発時刻までの期間が、バスがバス停に停車していた停車期間である。例えば、停車期間検出143は、フレーム131-2の時刻を到着時刻と判定し、フレーム131-4の時刻を出発時刻と判定する。そして、停車期間検出143は、画像データからフレーム131-2~131-4を抽出する。
【0066】
乗降者カウント144は、停車期間検出143の出力に基づいて、停車期間に停車していたバスの乗車人数および降車人数を算出する。ただし、バス停の種類やバスの種類によっては、乗車人数と降車人数の一方が0に固定されることがある。
【0067】
乗降者カウント144は、同じ追跡IDをもつ人の境界ボックスの座標を抽出し、抽出された座標を時系列に並べることで人の移動経路を示す軌跡を算出する。これにより、乗降者カウント144は、停車期間中に撮像された複数の人に対応する複数の軌跡を算出する。乗降者カウント144は、停車中のバスが存在するバス領域と複数の軌跡との関係に基づいて、乗車者および降車者をカウントする。
【0068】
なお、情報処理装置100による乗降者カウントの精度は、例えば、次のような指標で評価される。1-(|c1-d1|+|c2-d2|)/(c1+c2)。c1は、人が目視で確認した正解の乗車人数である。c2は、人が目視で確認した正解の降車人数である。d1は、情報処理装置100が算出した乗車人数である。d2は、情報処理装置100が算出した降車人数である。上記の指標は、乗降者数の誤差の割合を1から引いた正答率を表し、値が大きいほど精度が高いことを表す。例えば、c1=100,c2=10,d1=98,d2=15の場合、精度は約93.6%である。
【0069】
図6は、ロジックおよび検知モードによる乗降者数の違いの例を示す図である。
情報処理装置100は、乗降者カウント144のアルゴリズムとして、カウント線ロジックおよび周辺領域ロジックを実行することができる。第3の実施の形態では、カウント線ロジックと周辺領域ロジックが併用される。ただし、設定により、情報処理装置100は、カウント線ロジックと周辺領域ロジックの何れか一方のみを実行してもよい。また、情報処理装置100は、カウント線ロジックまたは周辺領域ロジックを、異なる設定値を用いて複数通り実行してもよい。
【0070】
カウント線ロジックは、人の境界ボックスの軌跡と、バス停毎に画像領域上に事前に設定されたカウント線(Count Line)との交点に基づいて、乗車人数および降車人数を算出する。カウント線ロジックは、乗車者と降車者とを区別してカウントすることができる。車両の乗降口付近の混雑が軽度である場合、カウント線ロジックのカウント精度は高い。なお、情報処理装置100は、同一の画像データに対して、カウント線が異なる複数通りのカウント線ロジックを実行することもできる。
【0071】
周辺領域ロジックは、画像領域上でバスが存在するバス領域と、画像領域上に事前に設定された周辺領域との間を移動する軌跡を検出して、乗車人数または降車人数を算出する。周辺領域ロジックは、乗車と降車を相殺するため、乗車人数と降車人数の何れか一方が0になる。周辺領域ロジックは、車両の乗降口付近における人の追跡精度が低い場合であっても、比較的高精度に乗車人数または降車人数を算出できる。人の追跡精度が低下する場合として、例えば、乗降者が多いために乗降口付近にいる複数の乗降者が重なって写っている場合や、乗降口の横に運転手が立って乗降者が隠れてしまう場合が挙げられる。
【0072】
テーブル133に示すように、情報処理装置100は、カウント線ロジック1、カウント線ロジック2および周辺領域ロジックそれぞれで、乗車人数および降車人数を算出する。カウント線ロジック1とカウント線ロジック2とは、設定値が異なる。例えば、カウント線ロジック1とカウント線ロジック2とは、カウント線が異なる。
【0073】
情報処理装置100は、カウント線ロジック1の乗車人数と、カウント線ロジック2の乗車人数と、周辺領域ロジックの乗車人数の中から、乗車人数の最大値を選択する。
図6の例では、カウント線ロジック2で算出された6人が採用される。また、情報処理装置100は、カウント線ロジック1の降車人数と、カウント線ロジック2の降車人数と、周辺領域ロジックの降車人数の中から、降車人数の最大値を選択する。
図6の例では、周辺領域ロジックで算出された7人が採用される。
【0074】
前述のように、バス停の種類には、乗車専用のバス停、降車専用のバス停および乗降兼用のバス停がある。そこで、テーブル134に示すように、各バス停に対して検知モードが設定される。検知モードは、乗車(Get On)モード、降車(Get Off)モード、自動(Auto)モードおよび乗降(Both)モードの中から選択される。
【0075】
乗車モードは、上記ロジックの実行結果に関係なく降車人数を0とみなす検知モードであり、乗車専用のバス停に対して設定されることが想定される。降車モードは、上記ロジックの実行結果に関係なく乗車人数を0とみなす検知モードであり、降車専用のバス停に対して設定されることが想定される。自動モードは、乗車人数と降車人数のうち小さい方を0とみなす検知モードである。乗車人数と降車人数が等しい場合、降車人数が0とみなされる。乗降モードは、乗車人数と降車人数の両方が0でないことを許容する。
【0076】
ここで、上記のように乗車人数が6人、降車人数が7人と算出されたとする。検知モードが乗車モードのバス停の場合、情報処理装置100は、最終的に乗車人数を6人、降車人数を0人と決定する。検知モードが降車モードのバス停の場合、情報処理装置100は、最終的に乗車人数を0人、降車人数を7人と決定する。検知モードが自動モードのバス停の場合、情報処理装置100は、最終的に乗車人数を0人、降車人数を7人と決定する。検知モードが乗降モードのバス停の場合、情報処理装置100は、最終的に乗車人数を6人、降車人数を7人と決定する。
【0077】
次に、停車期間検出について説明する。
図7は、バスの境界ボックスの異常例を示す図である。
情報処理装置100は、追跡IDが付与されたバスの境界ボックスに基づいて停車期間を判定する。ただし、前段処理である物体認識および物体追跡の精度には限界があるため、異常な境界ボックスが生成されていることがある。そこで、情報処理装置100は、異常な境界ボックスを検出して修正する。
【0078】
境界ボックスの異常は、2台のバスが写ったフレームで発生することがある。例えば、フレームtから境界ボックス201,202が検出される。境界ボックス201には、クラス=バスおよび追跡ID=1が付与されている。境界ボックス202には、クラス=バスおよび追跡ID=2が付与されている。境界ボックス201,202は、それぞれ1台のバスを正しく示している。
【0079】
このとき、フレームtの次のフレームt+1から、車両に関して境界ボックス203のみが検出されることがある。境界ボックス203には、クラス=バスおよび追跡ID=1が付与されている。よって、追跡ID=2の境界ボックスが消失している。境界ボックス203は、2台のバスに跨がっており、特定のバスを正しく示していない。
【0080】
また、フレームt+1から、車両に関して境界ボックス204のみが検出されることもある。境界ボックス204には、クラス=バスおよび追跡ID=2が付与されている。よって、追跡ID=1の境界ボックスが消失している。境界ボックス204は、2台のバスに跨がっており、特定のバスを正しく示していない。このような異常は、2台のバスの間に人などの他の物体が存在する場合に発生することがある。
【0081】
そこで、情報処理装置100は、以下のように境界ボックスを修正する。情報処理装置100は、隣接するフレームの間で、車両に関するクラスをもつ境界ボックスであって同じ追跡IDをもつ2つの境界ボックスのIoU(Intersection over Union)を算出する。IoUは、2つの領域の論理和に対する2つの領域の論理積(共通領域)の割合である。2つの領域の重複が大きいほどIoUが大きい。
【0082】
情報処理装置100は、IoUが閾値未満の境界ボックスを含むフレームのペアを検出する。短時間に物体が大きく移動することは、異常である可能性が高いためである。閾値は、例えば、0.8である。情報処理装置100は、ペアのうちの前フレームが車両に関して2つの追跡IDを含み、ペアのうちの後フレームが一方の追跡IDを含まない(一方の追跡IDが消失している)か判定する。この条件を満たす場合、情報処理装置100は、後フレームの境界ボックスを異常と判定する。
【0083】
後フレームが、車両に関して前フレームに存在しない新追跡IDを含む場合、情報処理装置100は、前フレームの2つの境界ボックスと後フレームの2つの境界ボックスとの間で、位置が近い境界ボックス同士を対応付ける。情報処理装置100は、対応付けた境界ボックスが同じ車両を示すとみなし、追跡IDを共通化する。例えば、情報処理装置100は、後フレーム以降の追跡IDを前フレームの追跡IDに置換する。
【0084】
一方、後フレームが車両に関して新追跡IDを含まない場合、情報処理装置100は、
図7の例のように、後フレームの境界ボックスの信頼性が低いと判断する。この場合、情報処理装置100は、後フレームに含まれる車両の境界ボックスを削除し、前フレームに含まれる2つの境界ボックスをコピーする。
【0085】
図8は、フレーム番号とIoUの関係例を示すグラフである。
曲線210は、隣接するフレームに含まれる追跡IDが同じ境界ボックスのIoUを示す。隣接するフレームの経過時間は微少であるため、各境界ボックスが同じバスを正しく示している場合、IoUは1に近い。ただし、点211,212のように、IoUが一時的に低下することがある。IoUが低下したフレームでは、バス周辺を移動する人の影響で、バスが正しく認識されていないことがある。特に、IoUが大きく低下した点212のフレームでは、境界ボックスが大きく移動しており、認識異常が発生している。
【0086】
次に、情報処理装置100は、境界ボックスに付与されたクラスを修正する。物体認識では、バスが、トラックや列車など車両に関する他のクラスに誤って分類されることがある。一方、バス停の画像データに写る大型車両は、通常はバスのみである。そこで、情報処理装置100は、バス以外の車両のクラスをバスのクラスとみなす。ただし、同一の車両に対して、クラスが異なる複数の境界ボックスが生成されることがある。その場合、情報処理装置100は、一部の境界ボックスを削除して重複を解消する。
【0087】
情報処理装置100は、車両に関するクラスに、優先度を示すスコアを付与しておく。例えば、情報処理装置100は、バスのスコアを1.0、トラックおよび列車のスコアを0.5と決定する。次に、情報処理装置100は、同一フレームが車両に関するクラスの境界ボックスを2以上含む場合、それら境界ボックスの間でIoUを算出する。
【0088】
情報処理装置100は、算出されたIoUとクラスに付与されたスコアに基づいて、非極大値抑制(NMS:Non Maximum Suppression)を実行する。NMSは、IoUが閾値を超える2つの境界ボックスがある場合、スコアが低い方の境界ボックスを削除する。これにより、実質的に同じバスを示す冗長な境界ボックスが削除される。情報処理装置100は、残った境界ボックスのクラスをバスとみなす。
【0089】
次に、情報処理装置100は、同じバスを示す異なる追跡IDを検出し、それら異なる追跡IDを共通化する。物体認識は、あるフレームでバスの認識を失敗することがある。その場合、物体追跡は、そのフレームの前後のフレームに含まれるバスの境界ボックスの連続性を判定できず、追跡IDが変わってしまうことがある。
【0090】
そこで、情報処理装置100は、以下に説明する3つのアルゴリズムによって、追跡IDを共通化する。3つのアルゴリズムは、第1アルゴリズム、第2アルゴリズムおよび第3アルゴリズムの優先度で使用される。例えば、ある境界ボックスが第1アルゴリズムと第2アルゴリズムの両方の条件に適合する場合、第1アルゴリズムのみが使用される。
【0091】
図9は、追跡IDの共通化の第1の例を示す図である。
フレーム221は、追跡ID=1のバスの境界ボックス224を含む。フレーム221は、例えば、追跡ID=1が出現する最後のフレームである。フレーム223は、フレーム221の後のフレームであり、フレーム221からTフレーム以内のフレームである。フレーム223は、追跡ID=2のバスの境界ボックス225を含む。フレーム223は、例えば、追跡ID=2が出現する最初のフレームである。
【0092】
フレーム221とフレーム223の間には、バスの境界ボックスを含まない1以上のフレームが存在することがある。例えば、フレーム221とフレーム223の間に、バスの境界ボックスを含まないフレーム222が存在する。
【0093】
この場合、情報処理装置100は、境界ボックス224の重心と境界ボックス225の重心を算出する。重心は、例えば、境界ボックスが示す領域の中心点である。情報処理装置100は、2つの重心の距離が閾値未満であるか判断する。重心の距離が閾値未満の場合、情報処理装置100は、旧追跡IDと新追跡IDを共通化する。例えば、情報処理装置100は、追跡ID=2を追跡ID=1に置換する。
【0094】
図10は、追跡IDの共通化の第2の例を示す図である。
フレーム231は、追跡ID=1のバスの境界ボックス235を含む。フレーム232は、フレーム231の次のフレームであり、追跡ID=1のバスの境界ボックス236を含む。フレーム233は、フレーム232より後のフレームであり、追跡ID=1のバスの境界ボックス237を含む。フレーム233は、例えば、追跡ID=1が出現する最後のフレームである。フレーム231からフレーム233の区間にN個のフレームがある。Nは、例えば、5秒間のフレーム数である。
【0095】
フレーム234は、フレーム233より後のフレームであり、追跡ID=2のバスの境界ボックス238を含む。フレーム234は、例えば、追跡ID=2が出現する最初のフレームである。フレーム234は、フレーム233の次のフレームでもよい。また、フレーム234は、フレーム233からTフレーム以内のフレームでもよい。フレーム233とフレーム234の間に、バスの境界ボックスを含まないフレームがあってもよい。
【0096】
この場合、情報処理装置100は、フレーム231からフレーム233までのN個のフレームから、追跡ID=1の境界ボックスを平均化した境界ボックス239を算出する。平均化では、情報処理装置100は、左上座標、左下座標、右上座標および右下座標それぞれの平均を算出し、4つの平均座標で規定される矩形を境界ボックス239とみなす。
【0097】
情報処理装置100は、境界ボックス238の重心が境界ボックス239の中にあるか判断する。重心が境界ボックス239の中にある場合、情報処理装置100は、旧追跡IDと新追跡IDを共通化する。例えば、情報処理装置100は、追跡ID=2を追跡ID=1に置換する。上記の条件を満たす新追跡IDが複数ある場合、情報処理装置100は、重心が境界ボックス239の重心に最も近いものを選択する。
【0098】
図11は、追跡IDの共通化の第3の例を示す図である。
フレーム241は、追跡ID=1のバスの境界ボックス245を含む。フレーム242は、フレーム241の次のフレームであり、追跡ID=1のバスの境界ボックス246を含む。フレーム243は、フレーム242より後のフレームであり、追跡ID=1のバスの境界ボックス247と、追跡ID=2のバスの境界ボックス248とを含む。フレーム241からフレーム243の区間にN個のフレームがある。
【0099】
フレーム243は、例えば、追跡ID=1が出現する最後のフレームである。追跡ID=2が最初に出現するフレームは、追跡ID=1が最初に出現するフレームよりも後である。例えば、フレーム243は、追跡ID=2が出現する最初のフレームである。フレーム243には1つのバスが写っているものの、前のフレームまでは正しく生成されていた境界ボックスが2つに分割されている。フレーム244は、フレーム243より後のフレームであり、追跡ID=2のバスの境界ボックスを含む。フレーム244は、例えば、フレーム243の次のフレームである。
【0100】
この場合、情報処理装置100は、フレーム241からフレーム243までのN個のフレームから、追跡ID=1の境界ボックスを平均化した境界ボックス249を算出する。情報処理装置100は、境界ボックス248の重心が境界ボックス249の中にあるか判断する。重心が境界ボックス249の中にある場合、情報処理装置100は、旧追跡IDと新追跡IDを共通化する。例えば、情報処理装置100は、追跡ID=2を追跡ID=1に置換する。上記の条件を満たす新追跡IDが複数ある場合、情報処理装置100は、重心が境界ボックス249の重心に最も近いものを選択する。
【0101】
次に、情報処理装置100は、追跡IDが同じバスの境界ボックスの位置を時系列に走査することで、バスの停車期間を判定する。ここで、バス停毎に事前に、境界ボックスの左端座標、右端座標、上端座標、下端座標および重心座標の少なくとも一部に対して、許容領域が設定されている。情報処理装置100は、境界ボックスの位置が条件を満たした最初のフレームの時刻を、バスの到着時刻と判定する。
【0102】
また、情報処理装置100は、境界ボックスの位置が条件を満たさない状態が一定時間継続した時点、または、追跡IDが消滅して一定時間経過した時点を、バスの出発時刻と判定する。ただし、到着時刻から出発時刻までの停車時間が閾値未満である場合、情報処理装置100は、乗客の乗り降りが行われていない可能性が高いため、その停車期間を無視する。停車時間の閾値は、例えば、40秒である。
【0103】
図12は、フレーム内の許容領域の例を示す図である。
フレーム250は、バスの境界ボックス251を含む。また、このバス停では、画像領域に対して、境界ボックスの重心が満たすべき重心許容領域252と、境界ボックスの左端が満たすべき左端許容領域253とが設定されている。境界ボックス251の重心は、重心許容領域252の中にある。また、境界ボックス251の左端は、左端許容領域253の中にある。よって、フレーム250は停車期間に含まれる。
【0104】
次に、乗降者カウントうち、2つのロジックに共通する処理について説明する。情報処理装置100は、停車期間のフレームから、画面領域上でバスが存在するバス領域を検出する。また、情報処理装置100は、人の移動経路を示す軌跡を検出する。
【0105】
図13は、バスの境界ボックスから算出されるバス領域の例を示す図である。
情報処理装置100は、停車期間に属するフレームに含まれるバスの境界ボックスを、追跡ID毎に平均化する。情報処理装置100は、バスに関して2以上の追跡IDがある場合、平均の境界ボックスのうち重心が重心許容領域の外にある境界ボックスを除外する。2以上の境界ボックスが残った場合、情報処理装置100は、設定に従って、統合(Merge)、右選択(Right)または左選択(Left)を行い、境界ボックスを1つにする。
【0106】
統合は、2以上の境界ボックスを囲む最小の矩形領域を、正しい境界ボックスとみなす。右選択は、2以上の境界ボックスのうち最も右側にある境界ボックスを選択する。左選択は、2以上の境界ボックスのうち最も左側にある境界ボックスを選択する。統合、右選択および左選択のうちの1つが、バス停の構造やカメラの位置に応じて事前に指定される。これにより、境界ボックス261が決定される。
【0107】
次に、情報処理装置100は、バス停毎に事前に設定された右マージンMright、左マージンMleft、上マージンMtopおよび下マージンMbottomに従って、境界ボックス261を拡大した拡大領域262を算出する。
【0108】
拡大領域262の右辺は、境界ボックス261の右辺よりも、境界ボックス261の幅Wに右マージンMrightを乗じた分だけ右にある。拡大領域262の左辺は、境界ボックス261の左辺よりも、幅Wに左マージンMleftを乗じた分だけ左にある。拡大領域262の上辺は、境界ボックス261の上辺よりも、境界ボックス261の高さHに上マージンMtopを乗じた分だけ上にある。拡大領域262の下辺は、境界ボックス261の下辺よりも、高さHに下マージンMbottomを乗じた分だけ下にある。
【0109】
また、バス停毎に画像領域には、停車中のバスが写る可能性があるバス候補領域263が設定されている。バス候補領域263は、矩形でない多角形であってもよい。情報処理装置100は、拡大領域262とバス候補領域263との共通部分をバス領域264として算出する。バス領域264は、停車中のバスが存在する画像領域上の区画である。バス領域264は、矩形でない多角形であってもよい。なお、画像領域上に事前に設定される領域が、注目領域(ROI:Region of Interest)と呼ばれることがある。
【0110】
図14は、人の境界ボックスから算出される軌跡の例を示す図である。
情報処理装置100は、停車期間に属するフレームに含まれる人の境界ボックスから、代表座標を抽出する。第3の実施の形態では、代表座標は下辺中央の座標である。情報処理装置100は、追跡IDが同じ境界ボックスの代表座標を時系列に並べることで、同じ人の移動経路を示す軌跡を算出する。
【0111】
例えば、境界ボックス271は、追跡ID=1の人の境界ボックスである。境界ボックス272は、追跡ID=1の人の境界ボックスであり、境界ボックス271の後のフレームに含まれる。境界ボックス273は、追跡ID=1の人の境界ボックスであり、境界ボックス272の後のフレームに含まれる。情報処理装置100は、境界ボックス271~273の下辺中央の座標を結合することで、軌跡274を算出する。
【0112】
ただし、境界ボックスの位置は、認識精度の限界から、フレーム間で微細にぶれることがある。また、人の大まかな移動経路を把握するという目的に鑑みて、人の細かな動きが軌跡に反映されていない方が分析が容易になる。そこで、情報処理装置100は、低域通過フィルタを用いて人の軌跡を平準化する。
【0113】
図15は、低域通過フィルタによる軌跡の平準化例を示す図である。
曲線275は、低域通過フィルタを適用する前の軌跡を画像領域上にプロットしたものである。曲線276は、低域通過フィルタを適用した後の軌跡を画像領域上にプロットしたものである。低域通過フィルタとしては、例えば、バターワース(Butterworth)フィルタが用いられる。バターワースフィルタは、通過帯域ができる限り平坦な周波数特性をもつよう設計されたフィルタ回路である。
【0114】
次に、情報処理装置100は、一部の人の境界ボックスの高さを補正し、補正後の境界ボックスを用いて軌跡を再度算出する。画像領域上では、複数の人が重なることで一部の人の足下が写らないことがある。その場合、一部の人の境界ボックスの高さが短くなり、不正確な軌跡が算出されることがある。そこで、情報処理装置100は、人の境界ボックスの高さを分析し、高さが短すぎる境界ボックスの下辺を下方向に伸ばす。
【0115】
図16は、人の境界ボックスのY座標と高さの関係例を示すグラフである。
ここでは、画像領域の左上が原点であり、原点から右方向がX軸であり、原点から下方向がY軸であるとする。情報処理装置100は、停車期間における人の境界ボックスそれぞれから、上辺のY座標Y
topと境界ボックスの高さLとを抽出し、点(Y
top,L)を生成する。情報処理装置100は、生成された点を、横軸がY
topであり縦軸がLである平面にプロットする。グラフ280は、このような平面を表す。
【0116】
なお、ここで使用するYtopおよびLは、低域通過フィルタを適用した後の値である。情報処理装置100は、境界ボックスの上辺中央の座標を時系列に並べて低域通過フィルタを適用することで、平準化後の各時刻のYtopを算出する。また、情報処理装置100は、境界ボックスの下辺中央の座標を時系列に並べて低域通過フィルタを適用することで、平準化後の各時刻のYbottomを算出する。情報処理装置は、YbottomからYtopを引くことで、平準化後の各時刻の高さLを算出する。
【0117】
情報処理装置100は、グラフ280からYtopの最小値Min(Ytop)を探す。情報処理装置100は、Min(Ytop)からY1=Min(Ytop)+ΔYの範囲で、グラフ280からLの最大値L1を探す。ΔYは、事前に設定されるパラメータである。情報処理装置100は、点P1=(Y1,L1)を生成する。
【0118】
また、情報処理装置100は、YtopがMaxHeight以下の範囲で、グラフ280からYtopの最大値Max(Y’top)を探す。MaxHeightは、事前に設定されるパラメータである。情報処理装置100は、Y2=Max(Y’top)-ΔYからMax(Y’top)の範囲で、グラフ280からLの最大値L2を探す。情報処理装置100は、点P2=(Y2,L2)を生成する。
【0119】
図17は、人の境界ボックスの高さを補正する補正関数の例を示すグラフである。
情報処理装置100は、上記の点P1,P2から、補正関数F(Y
top)=Coef×f(Y
top)を生成する。Coefは、事前に設定されるパラメータであり、0以上1以下の数値である。関数f(Y
top)は、Y
topがY1未満の場合はL1を返し、Y
topがY2を超える場合はL2を返し、Y
topがY1以上Y2以下の場合は(L2-L1)/(Y2-Y1)×(Y
top-Y1)+L1を返す。曲線281は関数f(Y
top)を表す。曲線282は補正関数F(Y
top)を示す。
【0120】
情報処理装置100は、各境界ボックスについて、L’=F(Ytop)を算出し、Y’bottom=Ytop+L’を算出する。情報処理装置100は、YbottomがY’bottomより小さい境界ボックスの下辺を、Y座標がY’bottomになるよう下げる。これにより、高さLの下限がF(Ytop)になるように人の境界ボックスが補正され、グラフ280で曲線282より下方にある点が曲線282の上に移動する。情報処理装置100は、補正された境界ボックスを用いて人の軌跡を修正する。
【0121】
なお、曲線281は、画像領域の上側に写る奥側の人ほど高さが短く、画像領域の下側に写る手前側の人ほど高さ長いことを示している。曲線282より下の点は、画像領域のY座標と人の高さとの関係を考慮して、不自然に高さが短い人を表している。
【0122】
次に、情報処理装置100は、軌跡に含まれる座標を画像領域の範囲にクリップする。境界ボックスの拡張や低域通過フィルタの適用によって、軌跡が画像領域外の座標を含むことがある。例えば、解像度が1920×1080の場合に、0未満または1920超のX座標や、0未満または1080超のY座標が、軌跡に含まれる可能性がある。
【0123】
そこで、情報処理装置100は、画像領域外の座標を画像領域内の座標に置換する。例えば、情報処理装置100は、1未満のX座標を1に置換し、1919を超えるx座標を1919に置換する。また、情報処理装置100は、1未満のY座標を1に置換し、1079を超えるY座標を1079に置換する。
【0124】
図18は、位置分析の設定テーブルの例を示す図である。
以上説明した共通処理では、設定テーブル135に示す設定値が用いられる。設定テーブル135は、バス停毎に作成されて情報処理装置100に記憶される。
【0125】
重心許容領域は、バスの境界ボックスの重心の許容範囲を示すROIであり、端点の座標によって特定される。バス候補領域は、バス領域を算出するためのROIであり、端点の座標によって特定される。右マージンは、バスの境界ボックスから拡大領域の右辺を決定するためのパラメータである。左マージンは、バスの境界ボックスから拡大領域の左辺を決定するためのパラメータである。上マージンは、バスの境界ボックスから拡大領域の上辺を決定するためのパラメータである。下マージンは、バスの境界ボックスから拡大領域の下辺を決定するためのパラメータである。
【0126】
境界ボックス選択は、バスに関する2以上の境界ボックスから1つの境界ボックスを得る方法を示し、統合(Merge)、右選択(Right)または左選択(Left)である。フィルタ次数、サンプリング周波数およびカットオフ周波数は、低域通過フィルタの挙動を調整するパラメータである。補正係数は、人の境界ボックスの高さを補正する補正関数に含まれる係数である。Y座標幅は、補正関数を生成する際に用いられるΔYである。最大Y座標は、補正関数を生成する際に用いられるMaxHeightである。
【0127】
次に、カウント線ロジックについて説明する。
図19は、カウント線ロジックによる乗降者カウントの例を示す図である。
カウント線ロジックは、事前に設定されたカウント線と停車期間における人の軌跡との交点に基づいて、乗車人数および降車人数を算出する。ただし、バスの停車位置は厳密に決まっているとは限らない。また、バスによって乗降口の位置が異なることがある。また、人の軌跡は、乗降以外の理由でカウント線を跨ぐことがある。そこで、カウント線ロジックは、複数の人の軌跡からバスの乗降口を推定し、推定した乗降口を通過する軌跡をカウントすることで、乗降者のカウント精度を向上させる。
【0128】
カウント線ロジックを利用する場合、バス停毎に、まずカウント線として線分が設定される。カウント線は、例えば、歩道の端や歩道と車道の間など、乗客が通過する位置に設定される。カウント精度の向上のため、複数のカウント線が設定されてもよい。その場合、カウント線毎に乗車人数および降車人数が算出され、最大値が算出されたカウント線が採用される。カウント線が設定されると、次に、前述のバス領域がカウント線を含むように、右マージン、左マージン、上マージンおよび下マージンが設定される。そして、バス領域がカウント線を含むように、バス候補領域が設定される。
【0129】
情報処理装置100は、画像データから軌跡302~305を検出する。すると、情報処理装置100は、カウント線301と軌跡302~305それぞれとの交点を特定する。情報処理装置100は、カウント線301から交点が密集している範囲を探し、交点が密集している範囲を乗降口と判定する。そして、情報処理装置100は、軌跡302~305のうち乗降口の範囲内でカウント線301と交差する軌跡をカウントする。
【0130】
軌跡302~304は、乗降口の範囲内でカウント線301と交差しており、乗降者を表す。よって、軌跡302~304は、乗車人数または降車人数としてカウントされる。一方、軌跡305は、乗降口の範囲外でカウント線301と交差しており、乗降者を表さない。よって、軌跡305は、乗車人数または降車人数としてカウントされない。以下、上記の処理について更に詳細に説明する。
【0131】
図20は、カウント線と軌跡の交点の例を示す図である。
情報処理装置100は、1つの軌跡がカウント線と複数回交差する場合、交点を高々1つに絞り混む。乗車または降車は1回のみの行為だからである。まず、情報処理装置100は、軌跡とカウント線との交点を全て検出し、各交点を乗車点候補または降車点候補に分類する。軌跡がカウント線を下から上に通過する場合、交点は乗車点候補である。軌跡がカウント線を上から下に通過する場合、交点は降車点候補である。
【0132】
次に、情報処理装置100は、画像領域上で、隣接する乗車点候補と降車点候補の距離が閾値未満である場合、その乗車点候補と降車点候補を両方とも削除する。これは、トランクへの荷物の積み込みまたはトランクからの荷物の引き出しのために、人が一時的にバスに近づいたに過ぎない可能性が高いためである。情報処理装置100は、削除した交点がある場合、削除した交点の中心から一定距離以内の他の交点も削除する。同様の理由で、同じ人がバスに複数回近づくことがあるためである。
【0133】
次に、情報処理装置100は、軌跡の終点が前述のバス領域の外にある場合、軌跡内の乗車点候補を全て削除する。その軌跡は乗車者を表していないためである。また、情報処理装置100は、軌跡の始点がバス領域の外にある場合、軌跡内の降車点候補を全て削除する。その軌跡は降車者を表していないためである。
【0134】
1以上の乗車点候補が残っている場合、情報処理装置100は、末尾の乗車点候補を乗車点として選択する。軌跡が乗車者を示す場合、最後にカウント線を跨いだときにバスに乗車したと考えられるためである。また、1以上の降車点候補が残っている場合、情報処理装置100は、先頭の降車点候補を降車点として選択する。軌跡が降車者を示す場合、最初にカウント線を跨いだときにバスから降車したと考えられるためである。
【0135】
次に、情報処理装置100は、バス領域外にある乗車点および降車点を削除する。結果として、このような乗車点はバスへの乗車を表しておらず、このような降車点はバスからの降車を表していないためである。最後に、人の追跡の失敗によって同じ人の移動経路が2以上の軌跡に分割されていることがあり、軌跡内に乗車点と降車点の両方がまだ残っていることがある。この場合、情報処理装置100は、乗車点と降車点を適切に処理する。
【0136】
時系列として乗車点の後に降車点がある場合、そのような軌跡は異常であるため、情報処理装置100は、乗車点と降車点の両方を削除する。時系列として降車点の後に乗車点がある場合、乗降口は左寄りにあることが多いため、情報処理装置100は、乗車点と降車点のうち右側の交点を削除する。
【0137】
例えば、情報処理装置100は、画像データからバス領域311を検出する。また、情報処理装置100は、カウント線312と軌跡313の交点314~318を検出する。交点314,316,318は、カウント線312を下から上に通過する乗車点候補である。交点315,317は、カウント線312を上から下に通過する降車点候補である。
【0138】
乗車点候補である交点316と降車点候補である交点317とは、距離が閾値未満の隣接する交点である。よって、情報処理装置100は、交点316,317を削除する。また、軌跡313の始点がバス領域311の外にあるため、情報処理装置100は、降車点候補である交点315を削除する。そして、情報処理装置100は、乗車点候補である交点314,318のうち、末尾の乗車点候補である交点318を選択する。
【0139】
図21は、クラスタから判定される乗車口と降車口の例を示す図である。
情報処理装置100は、複数の軌跡から複数の乗車点が特定された場合、それら乗車点をクラスタリングアルゴリズムを用いて複数のクラスタに分類する。また、情報処理装置100は、複数の軌跡から複数の降車点が特定された場合、それら降車点をクラスタリングアルゴリズムを用いて複数のクラスタに分類する。クラスタリングアルゴリズムは、例えば、k-means++法である。
【0140】
k-means++法は、点の集合を座標に基づいてk個のクラスタに分類するクラスタリングアルゴリズムである。クラスタ数kは、最初に指定される。k-means++法は、k個のクラスタそれぞれの中心点を算出し、各点を中心点が最も近いクラスタに再分類することを繰り返す反復アルゴリズムである。k-means++法は、初期のk個のクラスタの中心点を、できる限り相互に離れるように選択する。
【0141】
乗車点の集合および降車点の集合それぞれについて、情報処理装置100は、まずk=n(nは2以上の整数)でクラスタリングを行う。2つのクラスタの中心点間の距離が閾値未満である場合、情報処理装置100は、クラスタが多すぎると判断し、クラスタ数kを減らしてクラスタリングを再度行う。情報処理装置100は、あるクラスタの要素数に係数を乗じた値が、最も大きいクラスタの要素数未満である場合、その小さいクラスタを削除する。
【0142】
情報処理装置100は、乗車点のクラスタが複数ある場合、その中で最も左側のクラスタを残して他のクラスタを削除する。また、情報処理装置100は、降車点のクラスタが複数ある場合、その中で最も左側のクラスタを残して他のクラスタを削除する。
【0143】
情報処理装置100は、乗車点のクラスタについて、クラスタに含まれる乗車点のうち左端の乗車点のX座標と右端の乗車点のX座標とを抽出する。情報処理装置100は、カウント線のうち、抽出した2つのX座標で挟まれる範囲を乗車口と判定する。ただし、バスが備えるドアの幅は、物理的に決まっている。そこで、情報処理装置100は、判定した乗車口の幅が上限値を超える場合は、幅が上限値になるように乗車口の範囲を縮小する。また、情報処理装置100は、判定した乗車口の幅が下限値を下回る場合は、幅が下限値になるように乗車口の範囲を拡張する。
【0144】
同様に、情報処理装置100は、降車点のクラスタについて、クラスタに含まれる降車点のうち左端の降車点のX座標と右端の降車点のX座標とを抽出する。情報処理装置100は、カウント線のうち、抽出した2つのX座標で挟まれる範囲を降車口と判定する。ただし、情報処理装置100は、判定した降車口の幅が上限値を超える場合は、幅が上限値になるように降車口の範囲を縮小する。また、情報処理装置100は、判定した降車口の幅が下限値を下回る場合は、幅が下限値になるように乗車口の範囲を拡張する。
【0145】
例えば、情報処理装置100は、カウント線321上の乗車点をクラスタ322,323に分類する。また、情報処理装置100は、カウント線321上の降車点をクラスタ324,325に分類する。クラスタ324はクラスタ325と比べて過小なクラスタであるため、情報処理装置100は、クラスタ324を削除する。また、情報処理装置100は、クラスタ322より右側のクラスタ323を削除する。情報処理装置100は、クラスタ322から乗車口を判定し、クラスタ325から降車口を判定する。
【0146】
情報処理装置100は、乗車口の範囲でカウント線321と交差する軌跡を検出して、交点を乗車点と降車点とに分類する。また、情報処理装置100は、降車口の範囲でカウント線321と交差する軌跡を検出して、交点を乗車点と降車点とに分類する。ここでの乗車点と降車点の特定には、
図20で説明した方法が用いられてもよい。また、乗車口や降車口の判定に用いられた乗車点および降車点の情報が利用されてもよい。ただし、
図20で説明した手順のうち、隣接する乗車点候補と降車点候補とが削除された場合に一定距離以内の他の交点を削除する処理は、ここでは実行されない。
【0147】
情報処理装置100は、乗車口にある乗車点の個数から乗車口にある降車点の個数を引くことで、乗車人数を算出する。また、情報処理装置100は、降車口にある降車点の個数から降車口にある乗車点の個数を引くことで、降車人数を算出する。これは、運転手や乗客が一時的に下車することがあるためである。
【0148】
情報処理装置100は、バス停毎に設定される検知モードに応じて、算出された乗車人数および降車人数を修正する。乗車モードの場合、情報処理装置100は、降車人数を0に書き換える。降車モードの場合、情報処理装置100は、乗車人数を0に書き換える。自動モードの場合、情報処理装置100は、乗車人数が降車人数以上の場合は降車人数を0に書き換え、乗車人数が降車人数未満の場合は乗車人数を0に書き換える。
【0149】
乗降モードの場合、情報処理装置100は、算出された乗車人数および降車人数を原則として維持する。ただし、カウント線ロジックにおいては、複数の人の乗降口の通過時刻が一定条件を満たす場合のみ、乗降モードが有効になる。乗降口の通過時刻が一定条件を満たさない場合、乗降モードに代えて自動モードが適用される。
【0150】
図22は、乗降モードにおける降車期間と乗車期間の判定例を示すグラフである。
情報処理装置100は、複数の軌跡それぞれについて、軌跡が乗車口を通過したフレームを特定し、(フレーム番号,+1)という点を生成する。また、情報処理装置100は、複数の軌跡それぞれについて、軌跡が降車口を通過したフレームを特定し、(フレーム番号,-1)という点を生成する。情報処理装置100は、横軸がフレーム番号を表し縦軸が整数を表す平面に、これらの点をプロットする。
【0151】
情報処理装置100は、このように生成されたグラフから、降車期間331および乗車期間332を判定する。乗車期間332は、降車期間331の後の期間である。このとき、情報処理装置100は、フレーム番号がC未満の場合は-1を返し、フレーム番号がC以上の場合は+1を返すというステップ関数を、点の集合にフィッティングする。
【0152】
パラメータCを変化させることで、ステップ関数のフィッティング精度が変化する。ステップ関数のフィッティング精度は、フレーム番号がC未満の点のうち値が-1の点の割合である降車期間精度と、フレーム番号がC以上の点のうち値が+1の点の割合である乗車期間精度のうちの何れか低い方である。情報処理装置100は、精度が最大になるパラメータCの値を特定し、精度が最大値付近でほぼ変化しないパラメータCの範囲を特定する。これにより、情報処理装置100は、降車点が密集する降車期間331の末尾のフレームと、乗車点が密集する乗車期間332の先頭のフレームを判定する。
【0153】
情報処理装置100は、降車期間331と乗車期間332の間の時間である乗降間隔が閾値を超えるか判断する。また、情報処理装置100は、ステップ関数のフィッティング精度が閾値を超えるか判断する。乗降間隔が閾値を超え、かつ、フィッティング精度が閾値を超える場合、情報処理装置100は、乗降モードを有効にする。乗降間隔が閾値を超えないか、または、フィッティング精度が閾値を超えない場合、情報処理装置100は、乗降モードを無効にして自動モードを有効にする。
【0154】
次に、追加カウントがONに設定されているバス停について、情報処理装置100は、乗車人数と降車人数の何れか一方を増やす追加カウントを実行する。一部のバス停では、乗降口周辺を多数の人が歩行するため、乗降口周辺で人の移動が正確に追跡されず、カウント線と交差しない断片的な軌跡が生成されることがある。そこで、情報処理装置100は、このような断片的な軌跡を分析して、カウントから漏れた乗客を推定する。
【0155】
図23は、ドア領域を用いたカウント追加の例を示す図である。
情報処理装置100は、前述のように判定されたカウント線321上の乗降口の上側に、矩形のドア領域326を設定する。ドア領域326の下辺は、乗車口または降車口を示すカウント線321上の線分である。ドア領域326の上辺は、下辺と平行で下辺より上側の線分である。ドア領域326の右辺および左辺は、カウント線321と垂直な線分である。ドア領域326の高さは、事前に設定される。
【0156】
情報処理装置100は、以下のような条件を満たす軌跡327を検出する。軌跡327の始点または終点は、ドア領域326の中にある。軌跡327は、カウント線321より下の点を含まない。軌跡327の長さは、閾値を超えない。軌跡327の点のうちX座標が最も小さい左端点は、軌跡327の始点または終点である。軌跡327の点のうちX座標が最も大きい右端点は、軌跡327の始点または終点である。軌跡327の点のうちY座標が最も小さい上端点は、軌跡327の始点または終点である。軌跡327の点のうちY座標が最も大きい下端点は、軌跡327の始点または終点である。よって、軌跡327は、カウント線321と交差せず十分に短い断片的な軌跡である。
【0157】
情報処理装置100は、軌跡327の乗降方向を判定する。このとき、情報処理装置100は、軌跡327の始点から終点に向かうベクトルと、カウント線321の上を左側から右側に向かうベクトルとの外積を算出する。外積が正である場合は軌跡327は乗車方向を表し、外積が負である場合は軌跡327は降車方向を表す。
【0158】
情報処理装置100は、乗車方向の軌跡の個数から降車方向の軌跡の個数を引いて、追加乗車人数を算出する。追加カウント前の乗車人数が正であり、かつ、追加乗車人数が正である場合、情報処理装置100は、乗車人数に追加乗車人数を加算する。追加カウント前の降車人数が正であり、かつ、追加乗車人数が負である場合、情報処理装置100は、降車人数に追加乗車人数の絶対値を加算する。
【0159】
図24は、カウント線ロジックの設定テーブルの例を示す図である。
以上説明したカウント線ロジックでは、設定テーブル136に示す設定値が用いられる。設定テーブル136は、バス停毎に作成されて情報処理装置100に記憶される。
【0160】
カウント線は、画像領域上に設定された線分であり、左端の座標と右端の座標とで表現される。点間最小距離は、隣接する乗車点候補と降車点候補を削除するか否か判断するための距離の閾値である。ドア領域高さは、追加カウントで設定されるドア領域の高さである。ドア領域高さが0の場合、追加カウントは行われない。最大軌跡長は、追加カウントの対象となる軌跡の長さの上限である。軌跡の長さは、例えば、フレーム数で表現される。X座標制約は、追加カウントにおいて、右端点および左端点を始点または終点に限定するか否かを示すフラグである。Y座標制約は、追加カウントにおいて、上端点および下端点を始点または終点に限定するか否かを示すフラグである。
【0161】
最大クラスタ数は、乗車点および降車点をクラスタに分類する際のクラスタ数kの初期値である。クラスタ間最小距離は、クラスタ数kを減らすか否か判断するためのクラスタ間距離の閾値である。クラスタサイズ係数は、あるクラスタのサイズが過小か否か判断する際に、当該クラスタの要素数に乗じる係数である。最大ドア幅は、カウント線上で乗車口または降車口として判定される範囲の幅の上限である。最小ドア幅は、カウント線上で乗車口または降車口として判定される範囲の幅の下限である。
【0162】
降車最小点数は、乗降モードの有効性を判断する際に、降車期間に含まれる点の個数の下限である。降車期間に含まれる点の個数が降車最小点数未満である場合、ステップ関数のフィッティングが失敗したと判断され、乗降モードが無効になる。乗車最小点数は、乗車期間に含まれる点の個数の下限である。乗車期間に含まれる点の個数が乗車最小点数未満である場合、ステップ関数のフィッティングが失敗したと判断され、乗降モードが無効になる。精度閾値は、許容されるフィッティング精度の下限である。乗降間隔閾値は、降車期間と乗車期間の間の乗降間隔の下限である。
【0163】
次に、周辺領域ロジックについて説明する。
図25は、周辺領域ロジックによる乗降者カウントの例を示す図である。
周辺領域ロジックは、事前に設定された周辺領域342と前述のように算出されたバス領域341との間の人の移動に基づいて、乗降人数を算出する。ただし、乗降兼用のバス停であっても、算出される乗降人数は乗車人数と降車人数の差であり、出力される乗車人数および降車人数の何れか一方は0である。
【0164】
周辺領域ロジックを利用する場合、バス停毎に、画像領域の中でバスに乗る直前の乗車者やバスから降りた直後の降車者が存在し得る領域が、バス候補領域として事前に設定される。また、そのような乗車者や降車者が拡大領域に含まれるように、右マージン、左マージン、上マージンおよび下マージンが事前に設定される。
【0165】
また、バス停毎に、周辺領域342のような周辺領域が事前に設定される。周辺領域342は、バス停の出入口に相当し、通常はバス領域341と離れている。乗車者は、バス停の外から周辺領域342に進入し、周辺領域342を通ってバスの乗車口に移動する。よって、乗車者の移動経路は、周辺領域342の中の点からバス領域341の中の点へ向かう軌跡で表現される。降車者は、バスの降車口から周辺領域342に移動し、周辺領域342を通ってバス停の外に退出する。よって、降車者の移動経路は、バス領域341の中の点から周辺領域342の中の点へ向かう軌跡で表現される。
【0166】
情報処理装置100は、軌跡の移動方向に基づいて、軌跡が乗車者を表すか降車者を表すか判定する。周辺領域342の後にバス領域341を通る軌跡は、原則として乗車者を表す。ただし、始点が周辺領域342の外にあるか、終点がバス領域341の外にある軌跡は、バス停を通過しただけであり除外される。バス領域341の後に周辺領域342を通る軌跡は、原則として降車者を表す。ただし、始点がバス領域341の外にあるか、終点が周辺領域342の外にある軌跡は、バス停を通過しただけであり除外される。
【0167】
情報処理装置100は、検出された乗車者の軌跡1つにつきカウントを1だけ増やし、検出された降車者の軌跡1つにつきカウントを1だけ減らす。最終的にカウントが正である場合、情報処理装置100は、カウントを乗車人数と判定し、降車人数を0と判定する。最終的にカウントが負である場合、情報処理装置100は、カウントの絶対値を降車人数と判定し、乗車人数を0と判定する。
【0168】
そして、情報処理装置100は、設定された検知モードに応じて、乗車人数および降車人数を修正して出力する。ただし、カウント線ロジックの場合と異なり、情報処理装置100は、乗降モードの有効性を判断しない。周辺領域ロジックは、バスの乗降口から離れた場所での人の移動経路の情報も利用するため、乗降口付近が非常に混雑する場合であっても、乗降者のカウント漏れを減らしてカウント精度を改善することができる。
【0169】
例えば、情報処理装置100は、異なる人の軌跡343~345を検出する。軌跡343~345は、一方の端点がバス領域341の中にあり、他方の端点が周辺領域342の中にある軌跡である。よって、情報処理装置100は、軌跡343~345それぞれの移動方向に応じて、乗車人数および降車人数を算出する。
【0170】
図26は、軌跡毎のカウントの増減例を示す図である。
軌跡346は、始点が周辺領域342の中にあり、終点がバス領域341の中にある軌跡である。よって、情報処理装置100は、軌跡346からカウントを1だけ増やす。軌跡347は、始点がバス領域341の中にあり、終点が周辺領域342の中にある軌跡である。よって、情報処理装置100は、軌跡347からカウントを1だけ減らす。
【0171】
軌跡348は、周辺領域342を通ってバス領域341に移動しているものの、始点が周辺領域342の外にある軌跡である。よって、情報処理装置100は、軌跡348からカウントを増減させない。軌跡349は、バス領域341を通って周辺領域342に移動しているものの、始点がバス領域341の外にある軌跡である。よって、情報処理装置100は、軌跡349からカウントを増減させない。なお、軌跡348,349は、バスの運行またはバス停の運用を補助するスタッフの軌跡である可能性がある。
【0172】
次に、情報処理装置100の機能および処理手順について説明する。
図27は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、画像記憶部121、モデル記憶部122、設定記憶部123および乗降人数記憶部124を有する。これらの記憶部は、例えば、RAM102またはHDD103を用いて実装される。また、情報処理装置100は、画像受信部125、物体認識部126、物体追跡部127、停車期間検出部128および乗降者カウント部129を有する。これらの処理部は、例えば、CPU101、GPU104、通信インタフェース107およびプログラムを用いて実装される。
【0173】
画像記憶部121は、各バス停の画像データを記憶する。画像データは、一定の解像度および一定のフレームレートをもつ動画像データである。モデル記憶部122は、物体認識および物体追跡に用いられる画像認識モデルを記憶する。画像認識モデルは、訓練済みの機械学習モデルである。画像認識モデルは、ニューラルネットワークでもよい。
【0174】
設定記憶部123は、停車期間検出および乗降者カウントの挙動を制御するパラメータの値を記憶する。パラメータの値は、バス停毎に設定される。前述の設定テーブル135,136が、設定記憶部123に記憶される。乗降人数記憶部124は、情報処理装置100によって生成されたカウントデータを記憶する。カウントデータは、バス停、到着時刻、出発時刻、乗車人数および降車人数を対応付ける。
【0175】
画像受信部125は、複数のバス停それぞれのカメラから画像データを継続的に受信する。画像受信部125は、受信した画像データを画像記憶部121に保存する。
物体認識部126は、画像記憶部121から画像データを読み出し、モデル記憶部122から画像認識モデルを読み出し、画像データに含まれる各フレームを画像認識モデルに入力する。物体認識部126は、画像認識モデルによって出力された1以上の境界ボックスそれぞれの座標およびクラスラベルを、フレームに付加する。
【0176】
物体追跡部127は、物体認識部126から境界ボックスを含むフレームを取得し、モデル記憶部122から画像認識モデルを読み出す。物体追跡部127は、画像認識モデルに従って、隣接フレーム間での境界ボックスの移動を検知し、同一の物体を表す可能性が高い境界ボックスに同一の追跡IDを付与する。
【0177】
停車期間検出部128は、物体追跡部127から追跡IDが付与された境界ボックスを含むフレームを取得し、設定記憶部123からパラメータの値を読み出す。停車期間検出部128は、異常な境界ボックスの削除や追跡IDの修正を行い、同じ追跡IDをもつバスの境界ボックスを走査して当該バスの停車期間を検出する。
【0178】
乗降者カウント部129は、停車期間検出部128から停車期間に属するフレームを取得し、設定記憶部123からパラメータの値を読み出す。乗降者カウント部129は、停車期間中にバスが存在したバス領域を検出し、停車期間中の人の移動経路を示す軌跡を検出する。乗降者カウント部129は、バス領域と軌跡から乗降者をカウントする。
【0179】
このとき、乗降者カウント部129は、カウント線ロジックおよび周辺領域ロジックそれぞれで乗降者をカウントする。乗降者カウント部129は、2つのロジックで算出された乗車人数および降車人数を合成して、最終的な乗車人数および降車人数を決定する。乗降者カウント部129は、算出された乗車人数および降車人数を示すカウントデータを生成して乗降人数記憶部124に保存する。なお、乗降者カウント部129は、カウントデータを表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。
【0180】
図28は、停車期間検出の手順例を示すフローチャートである。
(S10)停車期間検出部128は、車両に関する境界ボックスを2以上含むフレームを検出し、次のフレームとの間で、追跡IDが同じ境界ボックスのIoUを算出する。
【0181】
(S11)停車期間検出部128は、IoUが閾値未満で、かつ、前フレームに含まれる何れかの追跡IDが後フレームで欠落しているか判断する。条件を満たす場合はステップS12に処理が進み、条件を満たさない場合はステップS15に処理が進む。
【0182】
(S12)停車期間検出部128は、後フレームが、車両に関する追跡IDであって前フレームに含まれない新追跡IDを含むか判断する。新追跡IDを含む場合はステップS13に処理が進み、新追跡IDを含まない場合はステップS14に処理が進む。
【0183】
(S13)停車期間検出部128は、前フレームと後フレームの間で境界ボックスの位置を比較し、位置が近い境界ボックス同士を対応付ける。停車期間検出部128は、対応付けた境界ボックスの間で追跡IDを共通化する。例えば、停車期間検出部128は、新追跡IDを前フレームの旧追跡IDに置換する。そして、ステップS15に処理が進む。
【0184】
(S14)停車期間検出部128は、後フレームから車両に関する境界ボックスを削除し、前フレームの境界ボックスを後フレームにコピーする。これにより、後フレームの境界ボックスが前フレームのものに置換される。
【0185】
(S15)停車期間検出部128は、車両に関するクラスに、優先度に応じたスコアを付与する。車両に関するクラスには、例えば、バスやトラックや列車が含まれる。
(S16)停車期間検出部128は、車両に関する境界ボックスを2以上含むフレームを検出し、同一フレームの境界ボックスの間でIoUを算出する。
【0186】
(S17)停車期間検出部128は、ステップS16で算出されたIoUが閾値を超えるか判断する。IoUが閾値を超える場合はステップS18に処理が進み、IoUが閾値を超えない場合はステップS19に処理が進む。
【0187】
(S18)停車期間検出部128は、ステップS16の2以上の境界ボックスのうち、スコアが最大の境界ボックスを残し、スコアが最大でない境界ボックスを削除する。
(S19)停車期間検出部128は、残った境界ボックスについて、車両に関するクラスをバスとみなす。よって、トラックと認識された境界ボックスや列車と認識された境界ボックスが、バスの境界ボックスとみなされることがある。
【0188】
図29は、停車期間検出の手順例を示すフローチャート(続き1)である。
(S20)停車期間検出部128は、バスの境界ボックスについて、旧追跡IDが消失してTフレーム以内に新追跡IDが出現したことを検出する。
【0189】
(S21)停車期間検出部128は、旧追跡IDをもつ最後の境界ボックスの重心と、新追跡IDをもつ最初の境界ボックスの重心とを算出する。
(S22)停車期間検出部128は、ステップS21で算出された2つの重心の間の距離が閾値未満であるか判断する。重心間距離が閾値未満の場合はステップS28に処理が進み、重心間距離が閾値未満でない場合はステップS23に処理が進む。
【0190】
(S23)停車期間検出部128は、旧追跡IDが消失する直前のNフレームから旧追跡IDをもつ境界ボックスを抽出し、抽出した境界ボックスの時間平均を算出する。
(S24)停車期間検出部128は、新追跡IDをもつ最初の境界ボックスの重心が、ステップS23で算出された平均境界ボックスの中にあるか判断する。条件を満たす場合はステップS28に処理が進み、条件を満たさない場合はステップS25に処理が進む。
【0191】
(S25)停車期間検出部128は、旧追跡IDが含まれる最後のフレームに新追跡IDが含まれることを検出し、新追跡IDをもつ境界ボックスを抽出する。
(S26)停車期間検出部128は、旧追跡IDが消失する直前のNフレームについて、旧追跡IDをもつ境界ボックスの時間平均を算出する。
【0192】
(S27)停車期間検出部128は、ステップS25で抽出された境界ボックスの重心が、平均境界ボックスの中にあるか判断する。条件を満たす場合はステップS28に処理が進み、条件を満たさない場合はステップS29に処理が進む。
【0193】
(S28)停車期間検出部128は、旧追跡IDと新追跡IDとを共通化する。例えば、停車期間検出部128は、新追跡IDを旧追跡IDに置換する。
図30は、停車期間検出の手順例を示すフローチャート(続き2)である。
【0194】
(S29)停車期間検出部128は、各フレームからバスの境界ボックスを選択する。
(S30)停車期間検出部128は、境界ボックスの重心および端点の少なくとも一部について許容領域が設定されている場合、該当する点が許容領域内にあるか判定する。
【0195】
(S31)停車期間検出部128は、追跡ID毎に、境界ボックスがステップS30の許容領域の条件を最初に満たした時刻を到着時刻と判定する。
(S32)停車期間検出部128は、追跡IDが消失して一定時間経過した時刻を出発時刻と判定する。または、停車期間検出部128は、追跡IDが消失して一定時間経過した時刻と、許容領域の条件を満たさなくなって一定時間経過した時刻の何れか早い方を、出発時刻と判定する。何れの方法を使用するかは、設定値によって指定されてもよい。
【0196】
(S33)停車期間検出部128は、ステップS32の出発時刻からステップS31の到着時刻を引くことで、到着時刻から出発時刻までの停車時間を算出する。
(S34)停車期間検出部128は、ステップS33で算出された停車時間が閾値を超えるか判断する。停車時間が閾値を超える場合はステップS35に処理が進み、停車時間が閾値を超えない場合は処理が終了する。
【0197】
(S35)停車期間検出部128は、停車期間中の境界ボックスの端点の最頻値を算出し、最頻値がステップS30の許容領域内にあるか判断する。最頻値が許容領域内にある場合はステップS36に処理が進み、それ以外の場合は処理が終了する。
【0198】
(S36)停車期間検出部128は、停車期間に属するフレームを抽出する。
図31は、位置分析の手順例を示すフローチャートである。
(S40)乗降者カウント部129は、停車期間に属するフレームからバスの境界ボックスを抽出し、追跡IDが同じ境界ボックスを平均化する。
【0199】
(S41)乗降者カウント部129は、平均化された境界ボックスそれぞれの重心を算出し、重心が許容領域外にある境界ボックスを削除する。
(S42)乗降者カウント部129は、複数の境界ボックスが残っているか判断する。複数の境界ボックスが残っている場合はステップS43に処理が進み、1つの境界ボックスのみ残っている場合はステップS44に処理が進む。
【0200】
(S43)乗降者カウント部129は、設定に応じて、残っている複数の境界ボックスに対して統合、右選択または左選択を行い、1つの境界ボックスを得る。
(S44)乗降者カウント部129は、設定されたマージンに基づいて、ステップS43で得られたバスの境界ボックスを拡大した拡大領域を算出する。
【0201】
(S45)乗降者カウント部129は、ステップS44で算出された拡大領域と設定されたバス候補領域とが重なるバス領域を算出する。
(S46)乗降者カウント部129は、停車期間に属するフレームから人の境界ボックスを抽出し、抽出した境界ボックスの下辺中点を基準点として選択する。
【0202】
(S47)乗降者カウント部129は、同じ追跡IDをもつ人の境界ボックスの基準点を時系列に並べることで、各人の軌跡を算出する。
(S48)乗降者カウント部129は、ステップS47で算出された軌跡を低域通過フィルタに入力することで、平準化された軌跡を得る。
【0203】
図32は、位置分析の手順例を示すフローチャート(続き)である。
(S49)乗降者カウント部129は、人の境界ボックスから上辺のY座標Y
topおよび高さLを抽出し、点(Y
top,L)を算出して平面にプロットする。
【0204】
(S50)乗降者カウント部129は、ステップS49の平面から、横軸の範囲[Min(Ytop),Y1]における最大値L1を検索する。
(S51)乗降者カウント部129は、ステップS49の平面から、横軸の範囲[Y2,Max(Y’top)]における最大値L2を検索する。
【0205】
(S52)乗降者カウント部129は、点(Y1,L1),(Y2,L2)から、上限値および下限値をもつ線形関数を補正関数F(Ytop)として生成する。
(S53)乗降者カウント部129は、ステップS52で生成された補正関数F(Ytop)を用いて、人の境界ボックスそれぞれについてY’bottomを算出する。
【0206】
(S54)乗降者カウント部129は、境界ボックスの下辺のY座標YbottomがステップS53のY’bottomより小さいか判断する。Ybottom<Y’bottomの場合はステップS55に処理が進み、それ以外の場合はステップS56に処理が進む。
【0207】
(S55)乗降者カウント部129は、ステップS54に該当する境界ボックスの下辺のY座標をY’bottomまで伸ばすことで、境界ボックスを補正する。乗降者カウント部129は、補正された境界ボックスを用いて人の軌跡を修正する。
【0208】
(S56)乗降者カウント部129は、修正後の軌跡に含まれる点の座標を、画像領域の解像度の範囲内に収まるようにクリッピングする。
図33は、カウント線ロジックの手順例を示すフローチャートである。
【0209】
(S60)乗降者カウント部129は、軌跡それぞれについて、設定されたカウント線との交点を検出する。乗降者カウント部129は、軌跡がカウント線を通過する方向に基づいて、各交点を乗車点候補または降車点候補に分類する。
【0210】
(S61)乗降者カウント部129は、軌跡それぞれについて、隣接する乗車点候補と降車点候補のうち距離が閾値未満のペアを削除する。
(S62)乗降者カウント部129は、ステップS61で削除された交点の集合の中心から一定距離以内にある他の交点を削除する。
【0211】
(S63)乗降者カウント部129は、軌跡の終点がバス領域の外にあるか判断する。終点がバス領域の外にある場合はステップS64に処理が進み、終点がバス領域の中にある場合はステップS65に処理が進む。
【0212】
(S64)乗降者カウント部129は、該当する軌跡の乗車点候補を全て削除する。
(S65)乗降者カウント部129は、軌跡の始点がバス領域の外にあるか判断する。始点がバス領域の外にある場合はステップS66に処理が進み、始点がバス領域の中にある場合はステップS67に処理が進む。
【0213】
(S66)乗降者カウント部129は、該当する軌跡の降車点候補を全て削除する。
(S67)乗降者カウント部129は、軌跡内に1以上の乗車点候補が残っているか判断する。乗車点候補が残っている場合はステップS68に処理が進み、乗車点候補が残っていない場合はステップS69に処理が進む。
【0214】
(S68)乗降者カウント部129は、末尾の乗車点候補を乗車点として選択する。
(S69)乗降者カウント部129は、軌跡内に1以上の降車点候補が残っているか判断する。降車点候補が残っている場合はステップS70に処理が進み、降車点候補が残っていない場合はステップS71に処理が進む。
【0215】
(S70)乗降者カウント部129は、先頭の降車点候補を降車点として選択する。
図34は、カウント線ロジックの手順例を示すフローチャート(続き1)である。
(S71)乗降者カウント部129は、バス領域外の乗車点および降車点を削除する。
【0216】
(S72)乗降者カウント部129は、同一の軌跡について乗車点と降車点の両方が残っており、乗車点の後に降車点があるか判断する。条件を満たす場合はステップS73に処理が進み、条件を満たさない場合はステップS74に処理が進む。
【0217】
(S73)乗降者カウント部129は、該当する軌跡の乗車点と降車点を両方とも削除する。そして、ステップS76に処理が進む。
(S74)乗降者カウント部129は、同一の軌跡について乗車点と降車点の両方が残っており、降車点の後に乗車点があるか判断する。条件を満たす場合はステップS75に処理が進み、条件を満たさない場合はステップS76に処理が進む。
【0218】
(S75)乗降者カウント部129は、該当する軌跡の乗車点と降車点のうち右側にある点、すなわち、X座標が大きい方の点を削除する。
(S76)乗降者カウント部129は、複数の軌跡から特定された複数の乗車点をクラスタに分類し、複数の軌跡から特定された複数の降車点をクラスタに分類する。
【0219】
(S77)乗降者カウント部129は、複数の乗車点クラスタの中に、中心間距離が閾値未満の乗車点クラスタのペアがあるか判断する。また、乗降者カウント部129は、複数の降車点クラスタの中に、中心間距離が閾値未満の降車点クラスタのペアがあるか判断する。該当する乗車点クラスタのペアまたは降車点クラスタのペアがある場合、ステップS78に処理が進む。それ以外の場合、ステップS79に処理が進む。
【0220】
(S78)乗降者カウント部129は、クラスタ数を1つ減らす。そして、ステップS76に処理が戻り、減少したクラスタ数でクラスタリングが行われる。なお、再クラスタリングは、乗車点と降車点のうち中心間距離が閾値未満であった方に対してのみ行われてもよいし、乗車点と降車点の両方に対して行われてもよい。
【0221】
(S79)乗降者カウント部129は、複数の乗車点クラスタのうち、最大サイズの乗車点クラスタと比べて過小サイズの乗車点クラスタを削除する。また、乗降者カウント部129は、複数の降車点クラスタのうち、最大サイズの降車点クラスタと比べて過小サイズの降車点クラスタを削除する。
【0222】
(S80)乗降者カウント部129は、複数の乗車点クラスタが残っている場合、最も左側の乗車点クラスタを選択する。また、乗降者カウント部129は、複数の降車点クラスタが残っている場合、最も左側の降車点クラスタを選択する。
【0223】
(S81)乗降者カウント部129は、乗車点クラスタに含まれる乗車点のX座標の分布から乗車口を判定する。また、乗降者カウント部129は、降車点クラスタに含まれる降車点のX座標の分布から降車口を判定する。
【0224】
図35は、カウント線ロジックの手順例を示すフローチャート(続き2)である。
(S82)乗降者カウント部129は、乗車口の範囲で軌跡と交差する乗車点および降車点を検出する。乗車点および降車点の検出には、ステップS60~S75と同様の方法が用いられる。ただし、ステップS62に相当する処理は行われない。
【0225】
(S83)乗降者カウント部129は、ステップS82で検出された乗車点の個数から降車点の個数を引くことで、乗車人数を算出する。
(S84)乗降者カウント部129は、降車口の範囲で軌跡と交差する降車点および乗車点を検出する。降車点および乗車点の検出には、ステップS60~S75と同様の方法が用いられる。ただし、ステップS62に相当する処理は行われない。
【0226】
(S85)乗降者カウント部129は、ステップS84で検出された降車点の個数から乗車点の個数を引くことで、降車人数を算出する。
(S86)乗降者カウント部129は、検知モードが乗降(Both)モードであるか判断する。検知モードが乗降モードである場合はステップS87に処理が進み、検知モードが乗降モードでない場合はステップS91に処理が進む。
【0227】
(S87)乗降者カウント部129は、乗降口の範囲内の乗車点に対応する乗車時刻を特定し、点(乗車時刻,+1)を生成する。また、乗降者カウント部129は、降車口の範囲内の降車点に対応する降車時刻を特定し、点(降車時刻,-1)を生成する。乗降者カウント部129は、生成された点を平面にプロットする。
【0228】
(S88)乗降者カウント部129は、ステップS87で生成された点の集合に対してステップ関数をフィッティングすることで、降車に関する点が密集する降車期間と、乗車に関する点が密集する乗車期間とを判定する。
【0229】
(S89)乗降者カウント部129は、フィッティング精度が閾値を超えており、かつ、降車期間と乗車期間の間の乗降間隔が閾値を超えているか判断する。条件を満たす場合はステップS91に処理が進み、条件を満たさない場合はステップS90に処理が進む。
【0230】
(S90)乗降者カウント部129は、検知モードを自動(Auto)モードと見なす。
(S91)乗降者カウント部129は、検知モードに応じて、ステップS83で算出された乗車人数およびS85で算出された降車人数の一方を0に修正する。ただし、検知モードが乗降モードの場合は修正は不要である。
【0231】
図36は、カウント線ロジックの手順例を示すフローチャート(続き3)である。
(S92)乗降者カウント部129は、乗車口を基準としてバス側にドア領域を生成する。また、乗降者カウント部129は、降車口を基準としてバス側にドア領域を生成する。なお、ここでは、設定により追加カウントが有効になっている場合を想定する。
【0232】
(S93)乗降者カウント部129は、検出されている複数の軌跡の中から、始点または終点がドア領域内にある軌跡を検索する。
(S94)乗降者カウント部129は、カウント線より下の点を含む軌跡を除外する。
【0233】
(S95)乗降者カウント部129は、長さが閾値を超える軌跡を除外する。
(S96)乗降者カウント部129は、X座標が最も小さい左端点が始点でも終点でもない軌跡を除外する。また、乗降者カウント部129は、X座標が最も大きい右端点が始点でも終点でもない軌跡を除外する。
【0234】
(S97)乗降者カウント部129は、Y座標が最も小さい上端点が始点でも終点でもない軌跡を除外する。また、乗降者カウント部129は、Y座標が最も大きい下端点が始点でも終点でもない軌跡を除外する。
【0235】
(S98)乗降者カウント部129は、残った軌跡それぞれの乗降方向を判定する。例えば、乗降者カウント部129は、軌跡の始点から終点に向かうベクトルとカウント線のベクトルとの外積を算出し、外積の正負に基づいて乗降方向を判定する。
【0236】
(S99)乗降者カウント部129は、乗車方向の軌跡の個数から降車方向の軌跡の個数を引いた追加乗車人数を算出する。追加乗車人数は、負になることもある。
(S100)乗降者カウント部129は、ステップS91の修正後の乗車人数が正であり、かつ、追加乗車人数が正であるか判断する。条件を満たす場合はステップS101に処理が進み、条件を満たさない場合はステップS102に処理が進む。
【0237】
(S101)乗降者カウント部129は、乗車人数に追加乗車人数を加算する。そして、処理が終了する。
(S102)乗降者カウント部129は、ステップS91の修正後の降車人数が正であり、かつ、追加乗車人数が負であるか判断する。条件を満たす場合はステップS103に処理が進み、条件を満たさない場合は処理が終了する。
【0238】
(S103)乗降者カウント部129は、降車人数に追加乗車人数の絶対値(追加乗車人数の正負を反転させた数)を加算する。
図37は、周辺領域ロジックの手順例を示すフローチャートである。
【0239】
(S110)乗降者カウント部129は、バス領域および設定された周辺領域の両方を通る軌跡を検索する。乗降者カウント部129は、検索された軌跡それぞれについて、バス領域および周辺領域を通る順序を判定する。
【0240】
(S111)乗降者カウント部129は、周辺領域からバス領域に移動する軌跡があるか判断する。該当する軌跡がある場合はステップS112に処理が進み、該当する軌跡がない場合はステップS114に処理が進む。
【0241】
(S112)乗降者カウント部129は、ステップS111に該当する軌跡のうち、始点が周辺領域の外であるか、終点がバス領域の外である軌跡を除外する。
(S113)乗降者カウント部129は、残った軌跡の数だけカウントを増やす。
【0242】
(S114)乗降者カウント部129は、バス領域から周辺領域に移動する軌跡があるか判断する。該当する軌跡がある場合はステップS115に処理が進み、該当する軌跡がない場合はステップS117に処理が進む。
【0243】
(S115)乗降者カウント部129は、ステップS114に該当する軌跡のうち、始点がバス領域の外であるか、終点が周辺領域の外である軌跡を除外する。
(S116)乗降者カウント部129は、残った軌跡の数だけカウントを減らす。
【0244】
(S117)乗降者カウント部129は、カウントが正である場合、カウントを乗車人数とし、降車人数を0にする。乗降者カウント部129は、カウントが負である場合、カウントの絶対値を降車人数とし、乗車人数を0にする。
【0245】
(S118)乗降者カウント部129は、検知モードに応じて、ステップS117で算出された乗車人数および降車人数の一方を0に修正する。ただし、検知モードが自動モードまたは乗降モードの場合は修正は不要である。
【0246】
以上説明したように、第3の実施の形態の情報処理装置100は、バス停に設定されたカメラの画像データを分析して、バス毎の乗車人数および降車人数を推定する。これにより、バス停の管理に有用な情報がリアルタイムに生成される。
【0247】
また、情報処理装置100は、バスの近くに設定されるカウント線と人の移動経路を示す軌跡との交点から、乗車人数および降車人数を算出する。これにより、高いカウント精度が達成される。また、カウント線を軌跡が跨ぐ方向に基づいて乗車者と降車者とが区別され、乗車人数と降車人数とが分けて算出される。また、情報処理装置100は、複数の人の軌跡からバスの乗車口および降車口を推定し、乗車口および降車口の範囲内でカウント線と交差する軌跡をカウントする。これにより、乗降以外の理由でカウント線を跨ぐ人を誤ってカウントすることが抑制され、カウント精度が向上する。
【0248】
また、情報処理装置100は、カウント線ロジックとは別に、バス領域とバスから離れた周辺領域との両方を通る軌跡を検出して、乗車人数および降車人数を算出する。これにより、情報処理装置100は、乗降口周辺における人の軌跡の検出精度が低い場合であっても、乗車人数および降車人数を算出することができる。
【0249】
また、情報処理装置100は、カウント線ロジックと周辺領域ロジックとを併用し、乗車人数として算出された2以上の推定値のうちの最大値と、降車人数として算出された2以上の推定値のうちの最大値とを採用する。これにより、2つのロジックの長所が活用され、カウント漏れが抑制される。
【符号の説明】
【0250】
10,20 情報処理装置
11,21 記憶部
12,22 処理部
13,23 画像データ
14a,14b,14c,24a,24b,24c 軌跡
15 カウント線
16 範囲
25 周辺領域
26 車両領域