コンテンツにスキップ

クイックスタート

YOLOv8n で人物や車両を検出し、検出枠とラベルを描画した MP4 を作ります。モデルの準備に 1 分ほど、動画の処理に数秒かかります。

flowchart LR
  A[bus.h264] --> B[vah264dec<br>デコード] --> C[amddetect<br>検出] --> D[amdwatermark<br>描画] --> E[amdencode<br>エンコード] --> F[out.mp4]

インストール を終え、リポジトリのルートで source scripts/env.sh を実行したシェルで作業します。作業用のファイルは artifacts/quickstart/ に置きます(artifacts/ は Git の管理対象外です)。

1. モデルを準備する

YOLOv8n の重みをダウンロードし、ONNX に変換してから、この GPU 向けにコンパイルします。変換には CPU だけを使う専用の Python 環境を使います。

python3 scripts/setup_model_export.py
mkdir -p artifacts/quickstart
curl -fsSL -o artifacts/quickstart/yolov8n.pt \
  https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt
PATH="$PWD/build/src/gst:$PATH" .deps/model-export/bin/python \
  examples/nvr/scripts/export_nvr_model.py \
  artifacts/quickstart/yolov8n.pt artifacts/quickstart/model --batch=1

artifacts/quickstart/model/ に次のファイルができれば成功です。

ファイル 内容
yolov8n-b1.mxr コンパイル済みモデル(バッチサイズ 1)
yolov8n-b1.mxr.manifest.json モデルのハッシュと対象 GPU。一致しないモデルは読み込み時に拒否されます
model-info.json 入力の形と前処理、出力の形式を記述した設定
coco80.txt クラス名(80 行)

YOLOv8n の重みには Ultralytics のライセンスが適用されます。配布や商用利用の前に条件を確認してください。

2. テスト用の動画を作る

Ultralytics のサンプル画像から、3 秒・30fps の H.264 を作ります。手元の H.264 ファイルを使う場合は、この手順を飛ばしてください。

curl -fsSL -o artifacts/quickstart/bus.jpg \
  https://raw.githubusercontent.com/ultralytics/ultralytics/main/ultralytics/assets/bus.jpg
ffmpeg -loop 1 -i artifacts/quickstart/bus.jpg -t 3 -r 30 \
  -vf 'scale=1920:1080:out_color_matrix=bt709:out_range=limited' \
  -c:v libx264 -pix_fmt yuv420p -color_primaries bt709 -color_trc bt709 -colorspace bt709 \
  -f h264 artifacts/quickstart/bus.h264

3. 検出結果を描画して保存する

付属のレシピスクリプトは、デコードからエンコードまでの GStreamer パイプラインを組み立てて実行します。

VIDEO=artifacts/quickstart/bus.h264 \
MODEL=artifacts/quickstart/model/yolov8n-b1.mxr \
MODEL_INFO=artifacts/quickstart/model/model-info.json \
  examples/pipelines/annotate-to-file.sh artifacts/quickstart/out.mp4

スクリプトは実行する gst-launch-1.0 のコマンドを表示し、Execution ended after ... と出力して終了します。出力を確認します。

ffprobe -v error -count_frames -select_streams v \
  -show_entries stream=codec_name,width,height,nb_read_frames -of csv=p=0 \
  artifacts/quickstart/out.mp4

h264,1920,1080,90 と表示されれば成功です。out.mp4 を動画プレーヤーで開くと、人物とバスに検出枠とラベルが描画されています。

次に読むページ