このプログラムは、YOLOv4-Tinyを使用してカメラからのリアルタイムビデオストリームで物体検出を行うPythonスクリプトです。
- Python 3.7以上
- OpenCV 4.5以上
- NumPy
- PyInstaller(必要に応じて実行ファイル化する場合)
以下のファイルがプログラムと同じディレクトリ、または適切なパスに配置されている必要があります:
yolov4-tiny.weights
- YOLOv4-Tinyの学習済み重みファイルyolov4-tiny.cfg
- YOLOv4-Tinyの設定ファイルcoco.names
- COCOデータセットのクラス名が記載されたファイル
- 必要なライブラリをインストールしてください。
pip install opencv-python numpy
- 必要なYOLOファイル(
weights
,cfg
,names
)をダウンロードし、適切な場所に配置してください。
スクリプトを実行してカメラ映像のリアルタイム物体検出を開始します:
python detect.py
- ウィンドウが開いたら、
q
キーを押してプログラムを終了してください。
-
リソースパスの取得
resource_path
関数を使用して、PyInstaller環境下でも正確なファイルパスを取得します。
-
YOLOモデルの読み込み
yolov4-tiny.cfg
とyolov4-tiny.weights
をロードし、DNNモデルを初期化します。
-
クラス名の読み込み
coco.names
からクラス名を読み込み、物体検出結果にラベルを付与します。
-
リアルタイムビデオストリームの処理
- カメラからフレームを取得し、物体検出を実施します。
- 高い信頼度(50%以上)の検出結果に基づき、バウンディングボックスとクラスラベルを描画します。
-
出力ウィンドウ
- フレームサイズを1280x960にリサイズし、リアルタイムで検出結果を表示します。
プログラムはカメラ映像にリアルタイムでバウンディングボックスを描画し、物体のクラス名を表示します。
- 左右反転: フレームを鏡像として処理します。
- 物体検出: YOLOモデルで物体検出を行い、信頼度の高い結果のみを表示します。
- リサイズ: 出力フレームは1280x960にリサイズされます。
- ウェイトや設定ファイルがない場合、プログラムは正常に動作しません。
- カメラデバイスが接続されていない場合もエラーになります。
このプロジェクトは自由に利用可能ですが、YOLOのライセンス規約に従う必要があります。