Ultralytics VS Code拡張機能#
Watch: How to use Ultralytics Visual Studio Code Extension | Ready-to-Use Code Snippets | Ultralytics YOLO 🎉
機能とメリット#
✅ Ultralyticsを使用してコンピュータービジョンアプリケーションを構築するデータサイエンティストまたは機械学習エンジニアですか?
✅ 同じコードブロックを何度も繰り返し記述するのが嫌ではありませんか?
✅ export、predict、train、track、valメソッドの引数やデフォルト値をいつも忘れてしまいませんか?
✅ Ultralyticsを使い始めたいものの、コード例を参照または実行するためのより簡単な方法があればよいと思っていませんか?
✅ Ultralyticsを使用する際の開発サイクルを高速化したいですか?
Visual Studio Codeを使用していて、上記のいずれかに「はい」と答えた場合は、VS Code用のUltralytics-snippets拡張機能が役立ちます。この拡張機能の詳細、インストール方法、使用方法をご紹介します。
Run example code using Ultralytics YOLO in under 20 seconds! 🚀
Ultralytics Communityからの着想#
この拡張機能を構築するきっかけは、Ultralytics Communityでした。類似したトピックや例に関するCommunityからの質問が、このプロジェクトの開発を後押ししました。さらに、Ultralyticsチームの多くのメンバーが、自身の作業を効率化するためにVS Codeを使用しています⚡。
なぜVS Codeなのですか?#
Visual Studio Codeは世界中の開発者に非常に人気があり、Stack Overflow Developer Surveyでは2021年、2022年、2023年、2024年に最も人気の高いツールに選ばれています。VS Codeはカスタマイズ性が高く、組み込み機能、幅広い互換性、拡張性を備えているため、多くの開発者が使用しているのも不思議ではありません。開発者コミュニティ全体と、UltralyticsのDiscord、Discourse、Reddit、GitHub Communitiesでの人気を考えると、ワークフローを効率化し生産性を高めるVS Code拡張機能を構築するのは自然な選択でした。
コード開発に何を使っているか教えてください。コミュニティ投票にアクセスしてお知らせください。その際、コンピュータービジョン、機械学習、AI、開発者向けの気に入ったミームを見たり、お気に入りを投稿したりするのもよいでしょう。
拡張機能のインストール#
VS Code拡張機能をインストールできるコード環境であれば、Ultralytics-snippets拡張機能と互換性があるはずです。拡張機能の公開後、neovimをVS Code拡張機能と互換性のある環境にできることが判明しました。詳細については、Ultralytics-SnippetsリポジトリのReadmeにあるneovimのインストールセクションをご覧ください。
VS Codeへのインストール#
-
VS Codeの拡張機能メニューに移動するか、ショートカットCtrl+Shift ⇑+xを使用し、Ultralytics-snippetsを検索します。
-
Installボタンをクリックします。
VS Code Extension Marketplaceからのインストール#
-
VS Code Extension MarketplaceにアクセスしてUltralytics-snippetsを検索するか、VS Code marketplaceの拡張機能ページに直接移動します。
-
Installボタンをクリックし、ブラウザーによるVS Codeセッションの起動を許可します。
-
表示される手順に従って拡張機能をインストールします。
Visual Studio Code Extension Marketplace page for Ultralytics-Snippets
Ultralytics-Snippets拡張機能の使用#
-
🧠 インテリジェントなコード補完: Ultralytics APIに合わせた高度なコード補完候補により、より高速かつ正確にコードを記述できます。
-
⌛ 開発速度の向上: 反復的なコーディング作業をなくし、事前構築済みのコードブロックスニペットを活用することで時間を節約できます。
-
🔬 コード品質の向上: インテリジェントなコード補完により、よりクリーンで一貫性のある、エラーのないコードを記述できます。
-
💎 ワークフローの効率化: 一般的なタスクを自動化し、プロジェクトの中核ロジックに集中できます。
概要#
この拡張機能は、Language ModeがPythonに設定されている場合にのみ動作します🐍。これは、他のファイルタイプで作業しているときにスニペットが挿入されるのを防ぐためです。すべてのスニペットにはultraで始まるプレフィックスがあり、拡張機能のインストール後にエディターでultraと入力するだけで、使用可能なスニペットの一覧が表示されます。Ctrl+Shift ⇑+pでVS CodeのCommand Paletteを開き、Snippets: Insert Snippetコマンドを実行することもできます。
コードスニペットのフィールド#
多くのスニペットには、デフォルトのプレースホルダー値または名前を持つ「フィールド」があります。たとえば、predictメソッドの出力は、r、results、detections、predsという名前のPython変数、または開発者が選択した任意の名前に保存できます。そのため、スニペットには「フィールド」が含まれています。スニペットの挿入後にキーボードでTab ⇥を押すと、カーソルがフィールド間をすばやく移動します。フィールドを選択した状態で新しい変数名を入力すると、その箇所だけでなく、スニペットコード内のその変数の他のすべての箇所も変更されます。
After inserting snippet, renaming model as world_model updates all instances. Pressing Tab ⇥ moves to the next field, which opens a dropdown menu and allows for selection of a model scale, and moving to the next field provides another dropdown to choose either world or worldv2 model variant.
コードスニペットの補完#
スニペットのプレフィックス全体を入力する必要はありません。スニペットの先頭から入力を始める必要さえありません。以下の画像の例をご覧ください。
スニペットには可能な限り説明的な名前が付けられていますが、その分入力が多くなり、より速く操作するという目的に反してしまう可能性があります。幸い、VS Codeではultra.example-yolo-predict、example-yolo-predict、yolo-predict、さらにはex-yolo-pと入力しても、目的のスニペット候補にたどり着けます。目的のスニペットが実際にはultra.example-yolo-predict-kwordsだった場合は、キーボードの↑または↓で目的のスニペットを選択し、Enter ↵またはTab ⇥を押すと、正しいコードブロックが挿入されます。
Typing ex-yolo-p will still arrive at the correct snippet.
スニペットのカテゴリー#
Ultralytics-snippets拡張機能で現在利用できるスニペットカテゴリーは以下のとおりです。今後さらに追加されるため、更新を確認し、拡張機能の自動更新を有効にしてください。不足しているものがある場合は、追加のスニペットをリクエストすることもできます。
| カテゴリー | 開始プレフィックス | 説明 |
|---|---|---|
| 例 | ultra.examples | Ultralyticsの学習や使い始めに役立つコード例です。例はドキュメントページのコードをそのまま使用したもの、または類似したものです。 |
| Kwargs | ultra.kwargs | すべてのキーワード引数とデフォルト値を含むtrain、track、predict、valメソッドのスニペットを追加して、開発を高速化します。 |
| インポート | ultra.imports | 一般的なUltralyticsオブジェクトをすばやくインポートするためのスニペットです。 |
| モデル | ultra.yolo | 各種モデル(yolo、sam、rtdetrなど)を初期化するコードブロックを、ドロップダウン形式の設定オプションとともに挿入します。 |
| 結果 | ultra.result | 推論結果を扱う際によく使用する操作のコードブロックです。 |
| ユーティリティ | ultra.util | Ultralyticsパッケージに組み込まれた一般的なユーティリティにすばやくアクセスできます。詳細については、Simple Utilitiesページをご覧ください。 |
例を使った学習#
ultra.examplesスニペットは、Ultralytics YOLOの基本的な使い方を学びたい方に非常に便利です。スニペットの例は、挿入後すぐに実行できるようになっています(一部にはドロップダウンオプションもあります)。このページの上部のアニメーションに例が示されています。スニペットを挿入するとすべてのコードが選択され、Shift ⇑+Enter ↵でインタラクティブに実行されます。
ページの上部のアニメーションに示されているように、スニペットultra.example-yolo-predictを使用して次のコード例を挿入できます。挿入後に設定できるのはモデルのスケールのみで、n、s、m、l、xのいずれかを指定できます。
from ultralytics import ASSETS, YOLO
model = YOLO("yolo26n.pt", task="detect")
results = model(source=ASSETS / "bus.jpg")
for result in results:
print(result.boxes.data)
# result.show() # uncomment to view each result image開発の高速化#
ultra.examples以外のスニペットは、Ultralyticsを使用する際の開発をより簡単かつ迅速にすることを目的としています。多くのプロジェクトで使用する一般的なコードブロックとして、モデルのpredictメソッドの実行結果として返されるResultsのリストを反復処理するものがあります。ultra.result-loopスニペットがこれに役立ちます。
ultra.result-loopを使用すると、次のデフォルトコード(コメントを含む)が挿入されます。
# reference https://docs.ultralytics.com/modes/predict#working-with-results
for result in results:
result.boxes.data # torch.Tensor arrayただし、Ultralyticsは多数のタスクをサポートしているため、推論結果を扱う際にアクセスしたい別のResults属性が存在する場合があります。その際にスニペットのフィールドが役立ちます。
Once tabbed to the boxes field, a dropdown menu appears to allow selection of another attribute as required.
キーワード引数#
さまざまなUltralyticsのタスクとモードには、💯を超えるキーワード引数があります。覚えておくべきことが多く、引数がsave_frameなのかsave_framesなのか(ちなみに、確実にsave_framesです)を忘れやすい場合があります。そこでultra.kwargsスニペットが役立ちます。
すべての推論引数を含むpredictメソッドを挿入するには、ultra.kwargs-predictを使用します。次のコード(コメントを含む)が挿入されます。
model.predict(
source=src, # (str, optional) source directory for images or videos
imgsz=640, # (int | list) input images size as int or list[h,w] for predict
conf=0.25, # (float) minimum confidence threshold
iou=0.7, # (float) intersection over union (IoU) threshold for NMS
vid_stride=1, # (int) video frame-rate stride
stream_buffer=False, # (bool) buffer incoming frames in a queue (True) or only keep the most recent frame (False)
visualize=False, # (bool) save class activation heatmaps
augment=False, # (bool) apply image augmentation to prediction sources
agnostic_nms=False, # (bool) class-agnostic NMS
classes=None, # (int | list[int], optional) filter results by class, i.e. classes=0, or classes=[0,2,3]
retina_masks=False, # (bool) use high-resolution segmentation masks
embed=None, # (list[int], optional) return feature vectors/embeddings from given layers
show=False, # (bool) show predicted images and videos if environment allows
save=True, # (bool) save prediction results
save_frames=False, # (bool) save predicted individual video frames
save_txt=False, # (bool) save results as .txt file
save_conf=False, # (bool) save results with confidence scores
save_crop=False, # (bool) save cropped images with results
stream=False, # (bool) for processing long videos or numerous images with reduced memory usage by returning a generator
verbose=True, # (bool) enable/disable verbose inference logging in the terminal
)このスニペットにはすべてのキーワード引数用のフィールドに加え、コード内で別の変数を使用している場合に備えてmodelとsrc用のフィールドもあります。キーワード引数を含む各行には、参照用の簡単な説明が記載されています。
すべてのコードスニペット#
利用可能なスニペットを確認する最良の方法は、拡張機能をダウンロードしてインストールし、実際に試すことです。事前に一覧を確認したい場合は、repoまたはVS Code marketplaceの拡張機能ページで、利用可能なすべてのスニペットの表を確認できます。
まとめ#
VS Code用のUltralytics-Snippets拡張機能は、データサイエンティストや機械学習エンジニアがUltralytics YOLOを使用して、より効率的にコンピュータービジョンアプリケーションを構築できるよう設計されています。事前構築済みのコードスニペットと便利な例を提供することで、最も重要なこと、つまり革新的なソリューションの作成に集中できるよう支援します。VS Code marketplaceの拡張機能ページにアクセスしてレビューを投稿し、フィードバックをお寄せください。⭐
FAQ#
新しいスニペットは、Ultralytics-SnippetsのrepoのIssuesからリクエストできます。
100%無料です!
VS Codeでは、プレビューウィンドウに表示する情報量を切り替えるためにCtrl+Spaceキーを使用します。コードスニペットのプレフィックスを入力してもスニペットのプレビューが表示されない場合は、このキーの組み合わせでプレビューを再表示できます。
VS Codeを使用していて、Ultralytics-snippets拡張機能のインストールを促すメッセージが表示されるようになり、そのメッセージを今後表示したくない場合は、無効にする方法が2つあります。
-
Ultralytics-snippetsをインストールすれば、メッセージは表示されなくなります😆!
-
yolo settings vscode_msg=Falseを使用すると、拡張機能をインストールせずにメッセージの表示を無効にできます。不慣れな場合は、Ultralytics Settingsページで詳細を確認できます。
-
Ultralytics-snippetsのrepoにアクセスし、IssueまたはPull Requestを作成してください!
他のVS Code拡張機能と同様に、VS Codeの拡張機能メニューからアンインストールできます。メニューでUltralytics-snippets拡張機能を見つけ、歯車アイコン(⚙)をクリックしてから「Uninstall」をクリックすると、拡張機能が削除されます。