アプリケーションの実行

以下のプログラムで生成された検出結果を、元の画像に重ねて表示します。
これは、小さなアプリケーションとして実行するのと同じYOLOv8推論です。Model.run(...)を直接呼び出す代わりに(モデルを実行するの場合と同様)、モデルをGraph(入力、モデル、および出力を持つ名前付きグラフフロー)に組み込み、それを構築してプッシュ/プルします。PythonとC++で同じプログラムを使用できます。各コードブロックで言語タブを選択してください。
この最初のアプリケーションでは、意図的に単純な構造にしています。
- 名前付きの_入力_ (
nodes.input("image"))は、データがアプリケーションにどこから入力されるかを示します。 - モデル (
graph.add(model))は、グラフ内の1つのステップとしてモデルを実行します。 - 名前付きの_出力_ (
nodes.output("detections"))は、アプリケーションが結果を読み取る場所を示します。
同じAPIは、後により複雑なアプリケーションにも拡張できます。ここでは、基本的な構成パターンを理解することが目的です。
任意のコードブロックにある「Python / C++」タブを使用してください。選択はサイト全体の言語セレクターに従うため、すべてのコードスニペットとプログラム全体がまとめて切り替わります。
プロジェクトのセットアップ
このセクションはスキップできます。ここでは、同じassets/ディレクトリ、モデルパッケージ、およびサンプル画像を使用します。直接、コードをステップごとに確認するに進んでください。
-
モデルと入力画像用のアセットディレクトリを作成します。
sdk or devkit$mkdir -p assets -
モデルをダウンロードします:
sdk or devkit$sima-cli modelzoo -v 2.0.0 get yolo_v8ssima-cli モデルのダウンロードsima-cliがモデルをassetsディレクトリ以外の場所に書き込む場合は、そのファイルをassets/yolo_v8s_mpk.tar.gzにコピーしてください。
:::
3. サンプル画像をダウンロードし、assets/tutorial_sample_image.png として保存します。
コードの解説
このプログラムは、短い8つの部分で構成されています。各ブロックで言語タブを切り替えてください。
1. 画像を読み込む
#include <opencv2/opencv.hpp>
cv::Mat bgr = cv::imread("assets/tutorial_sample_image.png");
cv::Mat rgb;
cv::cvtColor(bgr, rgb, cv::COLOR_BGR2RGB);
OpenCVはBGR形式で画像を読み込みますが、YOLOv8はRGB形式を想定しています。この処理は必須ではありません。 Neat —アプリケーションは、ファイル、カメラ、またはデコーダーからピクセルデータを取得します。 Neat 次のステップで入力します。