コンテンツへスキップ

推論結果をターミナルで見る

ターミナルでの画像の例

画像はlibsixelウェブサイトより

モチベーション

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

警告

LinuxとMacOSのみ対応。をチェックしてください。 VSCodeリポジトリチェック 問題ステータスあるいは ドキュメンテーション を使用してターミナルで画像を表示するための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": false
    

    VSCodeイネーブル端末画像設定

  2. をインストールします。 python-sixel ライブラリーを仮想環境にインストールします。これは フォークPySixel 現在はメンテナンスされていない。

    pip install sixel
    
  3. モデルをロードして推論を実行し、結果をプロットして変数に格納します。推論の引数と結果の操作については、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)!
    
    1. 使用可能な引数については、plotメソッドのパラメータを参照してください。
  4. では、OpenCV を使って numpy.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("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 = 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("yolov8n.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)
    

詳しくは予測モードのページをご覧ください。

なぜsixelプロトコルはLinuxとmacOSでしか動作しないのですか?

sixelプロトコルは現在、LinuxとmacOSでのみサポートされている。これらのプラットフォームは、sixelグラフィックスと互換性のあるネイティブ端末機能を備えているからである。sixelを使用したターミナルグラフィックスのWindowsサポートはまだ開発中です。Windowsの互換性に関する最新情報については、VSCode Issue Statusと ドキュメントを確認してください。

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リポジトリを参照し、プロットメソッドパラメータセクションを参照してください。

YOLO sixelを使ってビデオ推論の結果を端末に表示することはできますか?

端末でsixelを使用してビデオ推論結果やアニメーションGIFフレームを表示することは現在未検証であり、サポートされていない可能性があります。静止画像から始め、互換性を確認することをお勧めします。パフォーマンスの制約を念頭に置き、自己責任でビデオ結果を試してください。推論結果のプロットに関する詳細は、予測モードのページをご覧ください。

のトラブルシューティングはどうすればよいですか? python-sixel 図書館?

の問題をトラブルシューティングするには python-sixel 図書館

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

    pip install sixel
    
  2. 必要なPython 、システムの依存関係があることを確認する。

  3. その他のドキュメントやコミュニティ・サポートについては、python-sixelGitHub リポジトリを参照のこと。

  4. コードに潜在的なエラーがないか再チェックしてください。 SixelWriter と画像データ変換のステップ。

YOLO モデルとsixelの統合に関する更なる支援については、エクスポートと 予測モードのドキュメントページを参照してください。



作成日:2024-03-09 更新日:2024-07-05
作成者:glenn-jocher(6),IvorZhu331(1),Burhan-Q(1)

コメント