推論結果をターミナルで見る
画像はlibsixelウェブサイトより
モチベーション
リモートマシンに接続する場合、通常、画像結果を視覚化することは不可能であるか、GUIを持つローカルデバイスにデータを移動する必要があります。VSCode統合ターミナルは、画像を直接レンダリングすることができます。これは、VSCode統合ターミナルを使用した簡単なデモンストレーションです。 ultralytics
と 予測結果.
警告
LinuxとMacOSのみ対応。VSCodeを確認する リポジトリチェック 問題ステータスあるいは ドキュメンテーション を使用してターミナルで画像を表示するためのWindowsサポートに関する最新情報については、こちらをご覧ください。 sixel
.
統合端末を使用して画像を表示するためのVSCode互換プロトコルは次のとおりです。 sixel
そして iTerm
.このガイドでは sixel
プロトコルを使用する。
プロセス
-
まず、設定を有効にします。
terminal.integrated.enableImages
そしてterminal.integrated.gpuAcceleration
をVSCodeに追加した。
-
をインストールします。
python-sixel
ライブラリーを仮想環境にインストールします。これは フォーク のPySixel
現在はメンテナンスされていない。 -
関連ライブラリのインポート
-
モデルをロードして推論を実行し、結果をプロットして変数に格納します。推論の引数と結果の操作については、predict modeのページを参照してください。
from ultralytics import YOLO # Load a model model = YOLO("yolov8n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() #(1)!
- 使用可能な引数については、plotメソッドのパラメータを参照してください。
-
では、OpenCV を使って
numpy.ndarray
へのbytes
データを使用します。そしてio.BytesIO
で「ファイルのような」オブジェクトを作る。# Results image as bytes im_bytes = cv.imencode( ".png", #(1)! plot, )[1].tobytes() #(2)! # Image bytes as a file-like object mem_file = io.BytesIO(im_bytes)
- 他の画像拡張子を使うことも可能だ。
- インデックス
1
が必要である。
-
を作成する。
SixelWriter
インスタンスを作成し.draw()
メソッドを使って端末に画像を描画する。
推論結果の例
危険
この例を動画やアニメーションGIFフレームで使用することはテストされていません。自己責任でお試しください。
コード例
import io
import cv2 as cv
from ultralytics import YOLO
from sixel import SixelWriter
# Load a model
model = YOLO("yolov8n.pt")
# Run inference on an image
results = model.predict(source="ultralytics/assets/bus.jpg")
# Plot inference results
plot = results[0].plot() #(3)!
# Results image as bytes
im_bytes = cv.imencode(
".png", #(1)!
plot,
)[1].tobytes() #(2)!
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
- 他の画像拡張子を使うことも可能だ。
- インデックス
1
が必要である。 - 使用可能な引数については、plotメソッドのパラメータを参照してください。
チップ
を使用する必要があるかもしれない。 clear
をクリックすると、端末内の画像の表示を「消す」ことができる。