コンテンツにスキップ

ターミナルでの推論結果の表示

ターミナルでの画像表示のSixelの例

libsixel Webサイトからの画像。

モチベーション

リモートマシンに接続する場合、通常、画像の結果を視覚化することは不可能であるか、GUIを備えたローカルデバイスにデータを移動する必要があります。VSCode統合ターミナルを使用すると、画像を直接レンダリングできます。これは、これと組み合わせて使用する方法の簡単なデモンストレーションです。 ultralytics with 予測結果.

警告

LinuxおよびMacOSとのみ互換性があります。確認してください VSCode リポジトリ、確認してください。 Issueステータス、または ドキュメンテーション Windowsサポートに関する最新情報については、以下をご覧ください。ターミナルで画像を表示するには sixel.

統合ターミナルを使用して画像を表示するためのVSCode互換プロトコルは次のとおりです。 sixel および iTerm。このガイドでは、以下の使用法を説明します。 sixel プロトコル。

プロセス

  1. まず、設定を有効にする必要があります。 terminal.integrated.enableImages および terminal.integrated.gpuAcceleration VSCode内。

    "terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on"
    "terminal.integrated.enableImages": true
    

    VSCode ターミナルイメージ設定を有効にする

  2. 以下のインストール python-sixel 仮想環境内のlibrary。 フォークPySixel library。これは現在メンテナンスされていません。

    pip install sixel
    
  3. モデルをロードして推論を実行し、結果をプロットして変数に保存します。推論の引数と結果の操作の詳細については、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)!
    
    1. 使用できる引数については、plotメソッドのパラメータを参照してください。
  4. 次に、使用してください。 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. 他の画像拡張子も使用できます。
    2. インデックスにあるオブジェクトのみ 1 返されるものが必要です。
  5. 新規作成 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. 他の画像拡張子も使用できます。
  2. インデックスにあるオブジェクトのみ 1 返されるものが必要です。
  3. 使用できる引数については、plotメソッドのパラメータを参照してください。

ヒント

を使用する必要がある場合があります。 clear ターミナルでの画像の表示を「消去」します。

よくある質問

macOS または Linux の VSCode ターミナルで YOLO 推論の結果を表示するにはどうすればよいですか?

macOSまたはLinuxのVSCodeターミナルでYOLO推論の結果を表示するには、以下の手順に従ってください。

  1. 必要なVSCode設定を有効にします:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. sixelライブラリをインストール:

    pip install sixel
    
  3. YOLOモデルをロードして推論を実行します:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model.predict(source="path_to_image")
    plot = results[0].plot()
    
  4. 推論結果の画像をバイトに変換し、ターミナルに表示します:

    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ターミナルに画像を表示する際に問題が発生した場合:

  1. VSCodeで必要な設定が有効になっていることを確認してください。

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. sixelライブラリのインストールを確認します:

    pip install sixel
    
  3. 画像データ変換とプロットコードにエラーがないか確認してください。例:

    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:

  1. ライブラリが仮想環境に正しくインストールされていることを確認してください。

    pip install sixel
    
  2. 必要なpythonとシステムの依存関係があることを確認してください。

  3. 追加のドキュメントとコミュニティサポートについては、python-sixel GitHubリポジトリを参照してください。

  4. コードに潜在的なエラーがないか、特に以下の使用法を念入りに確認してください。 SixelWriter 画像データ変換ステップ。

YOLOモデルとsixel統合の連携に関する詳細な情報については、exportおよびpredict modeのドキュメントページを参照してください。



📅 1年前に作成 ✏️ 1か月前に更新

コメント