ターミナルでの推論結果の表示
libsixel Webサイトからの画像。
モチベーション
リモートマシンに接続する場合、通常、画像の結果を視覚化することは不可能であるか、GUIを備えたローカルデバイスにデータを移動する必要があります。VSCode統合ターミナルを使用すると、画像を直接レンダリングできます。これは、これと組み合わせて使用する方法の簡単なデモンストレーションです。 ultralytics
with 予測結果.
警告
LinuxおよびMacOSとのみ互換性があります。確認してください VSCode リポジトリ、確認してください。 Issueステータス、または ドキュメンテーション Windowsサポートに関する最新情報については、以下をご覧ください。ターミナルで画像を表示するには sixel
.
統合ターミナルを使用して画像を表示するためのVSCode互換プロトコルは次のとおりです。 sixel
および iTerm
。このガイドでは、以下の使用法を説明します。 sixel
プロトコル。
プロセス
-
まず、設定を有効にする必要があります。
terminal.integrated.enableImages
およびterminal.integrated.gpuAcceleration
VSCode内。"terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
以下のインストール
python-sixel
仮想環境内のlibrary。 フォーク のPySixel
library。これは現在メンテナンスされていません。pip install sixel
-
モデルをロードして推論を実行し、結果をプロットして変数に保存します。推論の引数と結果の操作の詳細については、predict modeのページを参照してください。
from ultralytics import YOLO # Load a model model = YOLO("yolo11n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() # (1)!
- 使用できる引数については、plotメソッドのパラメータを参照してください。
-
次に、使用してください。 OpenCV 変換するには
np.ndarray
宛先bytes
データを使用します。次にio.BytesIO
「ファイルのような」オブジェクトを作成します。import io import cv2 # Results image as bytes im_bytes = cv2.imencode( ".png", # (1)! plot, )[1].tobytes() # (2)! # Image bytes as a file-like object mem_file = io.BytesIO(im_bytes)
- 他の画像拡張子も使用できます。
- インデックスにあるオブジェクトのみ
1
返されるものが必要です。
-
新規作成
SixelWriter
インスタンスを作成し、次に.draw()
ターミナルに画像を描画するメソッド。from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
推論結果の例
危険
この例をビデオやアニメーション GIF フレームで使用することは、テストされていません。ご自身の責任でお試しください。
コード例全体
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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 = cv2.imencode(
".png", # (1)!
plot,
)[1].tobytes() # (2)!
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
- 他の画像拡張子も使用できます。
- インデックスにあるオブジェクトのみ
1
返されるものが必要です。 - 使用できる引数については、plotメソッドのパラメータを参照してください。
ヒント
を使用する必要がある場合があります。 clear
ターミナルでの画像の表示を「消去」します。
よくある質問
macOS または Linux の VSCode ターミナルで YOLO 推論の結果を表示するにはどうすればよいですか?
macOSまたはLinuxのVSCodeターミナルでYOLO推論の結果を表示するには、以下の手順に従ってください。
-
必要なVSCode設定を有効にします:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
sixelライブラリをインストール:
pip install sixel
-
YOLOモデルをロードして推論を実行します:
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model.predict(source="path_to_image") plot = results[0].plot()
-
推論結果の画像をバイトに変換し、ターミナルに表示します:
import io import cv2 from sixel import SixelWriter im_bytes = cv2.imencode(".png", plot)[1].tobytes() mem_file = io.BytesIO(im_bytes) SixelWriter().draw(mem_file)
詳細については、predict modeのページをご覧ください。
sixelプロトコルがLinuxとmacOSでのみ動作するのはなぜですか?
sixelプロトコルは現在、LinuxおよびmacOSでのみサポートされています。これらのプラットフォームには、sixelグラフィックスと互換性のあるネイティブターミナル機能があるためです。Windowsでのsixelを使用したターミナルグラフィックスのサポートは、まだ開発中です。Windowsの互換性に関する最新情報については、VSCode Issueのステータスとドキュメントを確認してください。
VSCode ターミナルで画像を表示する際に問題が発生した場合はどうすればよいですか?
sixelを使用してVSCodeターミナルに画像を表示する際に問題が発生した場合:
-
VSCodeで必要な設定が有効になっていることを確認してください。
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
sixelライブラリのインストールを確認します:
pip install sixel
-
画像データ変換とプロットコードにエラーがないか確認してください。例:
import io import cv2 from sixel import SixelWriter im_bytes = cv2.imencode(".png", plot)[1].tobytes() mem_file = io.BytesIO(im_bytes) SixelWriter().draw(mem_file)
問題が解決しない場合は、VSCodeリポジトリを参照し、plotメソッドのパラメーターセクションで追加のガイダンスを確認してください。
YOLOはsixelを使用してターミナルにビデオ推論の結果を表示できますか?
ターミナルでsixelを使用してビデオ推論の結果またはアニメーションGIFフレームを表示することは、現在テストされておらず、サポートされていない可能性があります。静止画像から始めて互換性を確認することをお勧めします。パフォーマンスの制約に注意して、自己責任でビデオの結果を試してください。推論結果のプロットの詳細については、予測モードのページをご覧ください。
次の問題のトラブルシューティング方法 python-sixel
library?
に関する問題のトラブルシューティングを行うには python-sixel
library:
-
ライブラリが仮想環境に正しくインストールされていることを確認してください。
pip install sixel
-
必要なpythonとシステムの依存関係があることを確認してください。
-
追加のドキュメントとコミュニティサポートについては、python-sixel GitHubリポジトリを参照してください。
-
コードに潜在的なエラーがないか、特に以下の使用法を念入りに確認してください。
SixelWriter
画像データ変換ステップ。
YOLOモデルとsixel統合の連携に関する詳細な情報については、exportおよびpredict modeのドキュメントページを参照してください。