YoloV8
15日目とか書きつつ既に1年経ってしまった。オジサンの一生は短い。
もたもたしているうちにYoloがバージョンアップしてYoloV8が出てしまった。
性能的にガツンと上がったわけでは無さそうだけどCLIが用意され、普通のアプリケーションのようになってきた。次はGUIになっていよいよ「アプリ」になっていくのだろうか。
C++でYoloV8を動かす
C++とYolov8の組合せについて、日本語で調べてもあまり情報が無い。というか皆無。ChatGPT先生に聞いても「最近のことは分かりません」とツレナイ返事。何かいろいろ調べていたら、何のことは無い、公式にサンプルがあった。
ここ↓
ultralytics/examples/YOLOv8-CPP-Inference/inference.cpp
公式にあるんじゃ調べても出てこないわけだ。
動かし方
基本的にはyolov8のptファイルをonnxに変換し、opencvのdnnで動かせばいい。yolov5と同じである。注意点は下記の3点。
- Onnx convert はyolov8のCLIを使う。こんな感じ。
yolo export model=yolov8m.pt format=onnx opset=12
- OpenCV 4.8.0を使う
CPUバージョンだと4.8.0でないと動かなかった。自分でコンパイルとしたGPUバージョンだと4.7.0でも動いた。余談だが、4.8.0だとGPUバージョンを自分でビルドしなくてもGPUに対応しているような気がするけどどうなのか。⇒ダメでした。 - 出力のサイズが違う
公式のコードを見れば分かる。
手順
別につまづきポイントが有ったわけではないけど、ptファイルのダウンロードするまでをサラッと手順をメモる。公式に手順が出ているので困ることは無いと思うが一応。
- yolov8用の作業フォルダを作る。
- pythonまたはcondaでyolov8の環境を作る。
- その環境をアクティベーション。
- 下記のコマンドでyolov8をインストール。
pip install ultralytics
- pip install requiement.txt はしなくていい
- pythonを起動
- pythonのプロンプトで、下記コードでptファイルをダウンロードする。
>>>from ultralytics import YOLO
>>> model = YOLO("yolov8s.pt")
>>> model = YOLO("yolov8s.pt")
>>> model = YOLO("yolov8m.pt")
>>> model = YOLO("yolov8l.pt")
>>> model = YOLO("yolov8x.pt")
これで作業フォルダにcocoの学習済みのptファイルが保存されている。別に自分でリンクを探して落としてもそんなもんだと思うけど。
次はいよいよソースを載せたいが・・・
つづく