Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OD 分析ツール(バス乗降 OD 推定システム)

乗合バスの乗降映像・GPS データを解析し、乗降客の OD(Origin-Destination)情報を自動生成するツールです。
カメラ映像から人物検出・顔認識・Re-ID を行い、乗降をマッチングして OD 表を作成します。


概要

ノートブック 処理内容
01_GPS&カメラデータ保存_ver05.ipynb GPS ログ・カメラ動画を AWS S3 から取得し、ローカルに保存
02_バス乗降の時間推定_ver04.ipynb GPS データをもとに各バス停への到着・出発時刻を推定
03_バス乗降の動画解析_ver08.ipynb YOLO・FaceAnalysis・StrongSORT により乗車・降車人物を検出・追跡
04_マッチング_ver02.ipynb 顔特徴量・Re-ID 特徴量のコサイン類似度により乗車・降車人物をマッチング
05_マッチング画像のエクセル保存_ver03 1.ipynb マッチング結果画像を Excel ファイルに整形・保存
06_OD表自動生成_ver7.ipynb マッチング結果から乗降バス停の OD 表を自動生成
07_乗降者判定用の画像挿入.ipynb 乗降判定確認用の画像を Excel に挿入
01~05の連続実行_ver01.ipynb 上記 01〜05 を連続実行するランチャー

ディレクトリ構成

od/
├── INPUT/
│   ├── yolov8l.pt                  # YOLOv8 モデルウェイト
│   ├── osnet_ibn_x1_0_msmt17.pt    # OSNet Re-ID モデルウェイト
│   ├── stop.csv                    # バス停マスタ
│   ├── stops_ew.csv                # 路線別バス停(東西方向)
│   ├── stops_sn.csv                # 路線別バス停(南北方向)
│   ├── timetable_ew.csv            # 時刻表(東西方向)
│   ├── timetable_sn.csv            # 時刻表(南北方向)
│   ├── start_ew.csv                # 運行開始情報(東西方向)
│   └── start_sn.csv                # 運行開始情報(南北方向)
└── *.ipynb                         # 各処理ノートブック

動作要件

  • Python 3.9 以上
  • Jupyter Notebook / JupyterLab
  • GPU 環境推奨(YOLO・Re-ID 推論処理を含むため)

セットアップ

pip install boto3 pandas numpy geopy scikit-learn Pillow openpyxl \
            ultralytics insightface boxmot loguru opencv-python

insightface のインストールには C++ ビルドツールが必要な場合があります。
boxmotStrongSORT トラッカーを使用します。

以下変数定義を実際の環境に合わせて更新。

<BUCKET_CAM_S3>:カメラデータを格納しているS3バケット名
例) "odcollect-camera-data-xxxxxxxxxx-ap-northeast-1"

 <BUCKET_GPS_S3>:GPSデータを格納しているS3バケット名
例) "odcollect-gps-data-xxxxxxxxxx-ap-northeast-1"


実行方法

  1. INPUT/ フォルダに必要なモデルウェイトおよびマスタ CSV を配置します。
  2. 各ノートブックを順番に実行します(または 01~05の連続実行_ver01.ipynb を使用)。
  3. 実行時に日付(例: 20250804)の入力を求められます。

使用ライブラリとライセンス

Python サードパーティライブラリ

ライブラリ バージョン(目安) ライセンス 用途
boto3 ≥1.28 Apache License 2.0 AWS S3 からのデータ取得
pandas ≥2.0 BSD 3-Clause データ処理・CSV 操作
NumPy ≥1.24 BSD 3-Clause 数値計算・配列操作
geopy ≥2.4 MIT License GPS 座標間距離計算
scikit-learn ≥1.3 BSD 3-Clause コサイン類似度計算
Pillow ≥10.0 HPND (MIT互換) 画像読み書き
openpyxl ≥3.1 MIT License Excel ファイル操作
ultralytics (YOLOv8) ≥8.0 AGPL-3.0 人物検出
insightface ≥0.7 MIT License(コード) / 非商用限定(モデル) ※1 顔認識・顔特徴量抽出
boxmot ≥10.0 AGPL-3.0 StrongSORT による人物追跡 (Re-ID)
OpenCV (opencv-python) ≥4.8 Apache License 2.0 動画読み込み・フレーム処理
loguru ≥0.7 MIT License ログ出力

⚠️ AGPL-3.0 に関する注意
ultralytics(YOLOv8)および boxmotGNU Affero General Public License v3.0 (AGPL-3.0) の下で配布されています。
AGPL-3.0 は「ネットワーク経由でユーザーにサービスを提供する行為」も配布と同等に扱い、その場合も派生物のソースコード開示を要求します。

本ツールはオフラインのバッチ解析ツールであり、ネットワーク経由のサービス提供を意図していません。
そのため、本ツールを内部解析目的で使用する範囲においては、AGPL-3.0 のソースコード開示義務は原則として発生しません。
ただし、以下のケースに該当する場合は AGPL-3.0 の条件が適用されます。十分に確認のうえ、必要に応じて商用ライセンスを取得してください。

※1 insightface モデルウェイトに関する注意
insightface ライブラリ(コード) は MIT License ですが、同プロジェクトが提供する 学習済みモデルウェイト(GitHub リポジトリおよび python-package による自動ダウンロードを含む)は
非商用研究目的のみ(Non-commercial research purposes only) の利用に限定されています。
本ツールが使用する buffalo_l モデル(顔検出・認識・年齢性別推定等)もこの制限対象です。
商用利用・社外サービスへの組み込みは、ライブラリのライセンスに関わらずモデルウェイトの利用条件に違反する可能性があります。
商用利用を検討する場合は、insightface 公式(recognition-oss-pack@insightface.ai)へライセンス確認を行ってください。
参照: https://github.com/deepinsight/insightface#license

モデルウェイト

モデル ファイル ライセンス
YOLOv8l INPUT/yolov8l.pt AGPL-3.0(ultralytics 公式モデル)
insightface 顔認識モデル python-package による自動ダウンロード 非商用研究目的のみ(insightface 公式モデルポリシー)
OSNet-IBN (MSMT17) INPUT/osnet_ibn_x1_0_msmt17.pt MIT License(torchreid/boxmot 提供)

標準ライブラリ(ライセンス不要)

os, re, csv, sys, json, pathlib, datetime, logging, io, subprocess, shutil, glob, math, warnings, typing
これらは Python 標準ライブラリであり、PSF(Python Software Foundation)ライセンスの下で提供されます。


注意事項

  • 動画データおよび GPS データには個人情報が含まれる可能性があります。取り扱いには十分ご注意ください。
  • モデルウェイトファイル(.pt)は本リポジトリには含まれていません。別途入手・配置が必要です。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages