こんにちは!デバイスソフトウエア開発部の斎藤です。
生産性向上エッジAIカメラシステム「PROLICA®」を用いたリアルタイム映像解析システムの開発を担当しています。
PROLICA は、映像に対してディープラーニングによる物体検出を行うだけでなく、ARマーカー検知や信号機の色判定などの様々な画像処理機能を備えています。
本記事では、「車両や人の移動方向から入退場を判定し、その数をカウントする機能」について、数学的な記号などは極力使わずにロジックを解説します!
PROLICAの詳細や他の機能につきましては、弊社HPや過去の技術ブログをご覧ください。
入退場カウントとは?
入退場カウントとは、
カメラ映像上に設定した判定ラインを、人や車両がどちらの方向に通過したかをもとに、「入場」「退場」を判定し、その回数を記録する機能です。
ディープラーニング技術により人や車両を検出し、設定した仮想的な判定ラインを基準に入退場を判定します。
例えば、入退場のタイミングに応じてトラボードの表示内容を切り替えたり、
構内から一般道へ出る際(退場時)にパトランプを鳴らして注意喚起を行ったりなど、人や車両の動きを把握・制御する用途で利用されています。
また、エコモットのIoTデータコレクトプラットフォームである「FASTIO」と連携することで、カウント結果をCSV出力することができます。
※「トラボード(LED文字表示)」はエコモットグループ企業「GRIFFY」の製品です。
便利な入退場カウント機能ですが、実際の現場で安定して運用するには、
単に「物体を検出し、バウンディングボックスの位置変化だけを見る」といった単純な方法では不十分です。
たとえば、
-
カメラ画角内でも、特定の範囲を通過した物体だけを数えたい
-
カメラの設置角度や検出の揺れによって、誤ってカウントしてしまうケースを避けたい
といった課題が必ず発生します。
こうした問題に対応するため、PROLICA では
物体の「位置」ではなく、「動き」と「判定ラインとの関係」に着目した入退場判定ロジックを採用していますので、今回はそちらを解説いたします。
※今回の入退場カウントは、物体トラッキングアルゴリズムを使用し、前後フレームの物体が「同じ物体である」ことを前提とした技術です。
物体トラッキングのアルゴリズムに関しては、以下の記事をご覧ください。
線分の交差に基づいた入退場の判定
入退場カウントでは、基準となる判定ラインに対して、物体がどちらの方向から通過したかをもとに、入場・退場を判定します。
具体的には、物体の軌跡(P₀→P₁)と判定ライン(Q₀→Q₁)が交差したかどうかを判定基準にしています。
ポイントは、単に物体の位置を“上下左右で比較する”のではなく、
“物体が実際に移動した軌跡と判定ラインの関係”を見る という点です。
これにより、
-
物体の通過方向を安定して判定できる
-
ラインの長さを自由に設定でき、カウントしたい範囲を限定できる。
といったメリットが得られます。
単純な座標比較の問題点と線分交差が必要な理由
単純に「物体がラインを超えた」ことを判定するのであれば、その物体の中心点(バウンディングボックス中心点)が、「ラインより上か下」だけを比較する方法が考えられます。しかし、このように座標だけを見てしまうと、誤判定につながる場面が少なくありません。
例えば、
-
反対車線を走る車両は数えたくない
-
歩道を歩く人を除外したい(道路を歩いている人だけカウントしたい)
-
検出の揺れで中心点が一瞬だけ上下に行き来してしまう
といったケースです。
座標の単純比較では、無限に伸びるラインに対する上下(左右)という広い領域で判定されてしまうため、どの範囲を通過した物体を入退場判定の対象とするかを柔軟に指定することができないのです。
一方で、物体の軌跡と判定ラインの交差による判定は、 判定ライン Q₀→Q₁ を”長さを持つ物理的な通過ポイント” として扱うことができるため、
-
ラインの長さを短くして反対車線を除外
-
歩道部分を避けて誤判定を防ぐ
といった、現場に合わせた柔軟で精度の高い入退場判定が可能になります。

このように、単純な座標比較では実現できない
「通過範囲の限定」+「正確な通過判定」
を行うために、PROLICAでは線分交差に基づくロジックを採用しています。
交差判定ロジック
交差判定ロジックの利点が明らかになったところで、続いて具体的な判定ロジックを解説いたします。
①前後フレームから「代表点 P」を作る
物体検出器は、フレームごとに検出した物体のバウンディングボックス(bbox)を返します。
bboxは通常、左上・右下などの座標で表されますが、入退場カウントではボックスそのものより「物体の位置を代表する1点」を使用します。
具体的には、検出されたバウンディングボックスから基準となる代表点を決定し、前フレーム(Frame n)の代表点をP₀、次フレーム(Frame n+1)の代表点を P₁ とします。
この P₀→P₁ が、その物体の「2フレーム間の動き」を表します。

※本記事では、基準となる代表点はbbox中心とします。
② 移動の軌跡が判定ラインに到達したかを判定する
次に、物体の移動P₀→P₁が、手動で設定した判定ラインQ₀→Q₁に幾何学的に到達しているか を確認します。
ここで行うのは、
「この移動は、判定ラインの範囲内を通過した可能性があるか」
という 候補の抽出 です。
具体的には、P₀→P₁ の移動軌跡と Q₀→Q₁ が線分として交差しているかを判定します。
重要なのは、
-
「直線として交わるかどうか」ではなく
-
線分の長さの範囲内で交わっているか
という点です。
線分を延長すれば交点が現れるような状態でも、その交点が線分P₀→P₁やQ₀→Q₁の外側にある場合、
物体はその 2 フレーム間で判定ラインに到達していないということになります。
実装では、交点の位置を0〜1のパラメータで表し、
-
交点が P₀→P₁ の区間内
-
交点が Q₀→Q₁ の区間内
の両方を満たす場合に、
「長さを持った判定ラインに到達した移動」
と判断します。

なお、実装上は、物体が判定ライン上で停止・接触するような境界ケースも考慮し、代表点が判定ラインに対してどちら側にあるかを、外積の符号を用いて確認するなどの処理も入れています。
これにより、「線分としては交差している(判定ラインに触れている)が、実体としては通過していない」
といったケースを除外できます。
③横切った「向き」で入場・退場を決める
②で「判定ラインを通過した移動」と判定されたものについて、最後にその移動がどちら向きだったかを判定します。
具体的には、下記の2つの向きを比較します。
-
移動方向:P₀→P₁の向き(移動ベクトル)
-
判定ライン方向:Q₀→Q₁の向き
それぞれの向きを同一の画像座標系上で角度として表現し、その角度差を -180°〜180° の範囲に正規化することで、
「ラインに対してどちら向きに横切ったか」を安定して判定できます。
-
角度差が正 → 例:左から右に横切った → 入場
-
角度差が負 → 例:右から左に横切った → 退場
この方法なら、判定ラインが水平でも斜めでも、同じ考え方で判定できます。
後は入退場イベントが発生するたびに、変数に対しインクリメントすれば、「入場○○台、退場○○台」のように、入退場した物体の数をカウントすることができます。
※角度差の正負どちらを入場 or 退場 とラベル付けするかは、要件や画角によって変わります。

おわりに
今回は、PROLICAに搭載している入退場カウントの判定ロジックをご紹介しました。
本記事で解説したように、入退場カウントは物体検出の結果に加えて、バウンディングボックス中心点の移動と幾何学的な判定を組み合わせることで、シンプルかつ安定した挙動を実現しています。
近年は新しいAI技術が次々と登場していますが、実運用を考えると、
計算量が小さく説明性も高いこのような堅実なロジックには、今後も十分な価値があると感じています。
PROLICAでは、最新技術を追うことはもちろんのこと、エッジコンピュータであることを考慮した軽量で信頼性の高い仕組みを適切に組み合わせながら、現場で本当に使える映像解析システムを今後も提供していきたいと考えています。
PROLICAについての疑問やご質問がありましたら、以下のリンクからお気軽にお問い合わせください。
最後に、エコモットではソフトウェアエンジニアを募集しています!
IoTやWeb開発に興味のある方はぜひ、弊社採用ページもご覧ください。




