概述
Visual Studio Code深受全球开发人员的欢迎,并在2021 年、2022 年、2023 年和2024 年的 Stack Overflow 开发人员调查中被评为最受欢迎的软件。由于 VS Code 具有高度的定制性、内置功能、广泛的兼容性和可扩展性,因此有如此多的开发人员使用它也就不足为奇了。
VS Code 的Ultralytics-snippets 扩展能够使开发者显著加快开发Ultralytics应用。
安装Ultralytics-snippets扩展
打开VSCode扩展,搜索Ultralytics,选择Ultralytics-snippets,点击“安装”即可。
使用Ultralytics-snippets扩展
在开发Python程序时,使用Ultralytics-snippets扩展,具有以下优势:
- **智能代码自动补全:**利用为Ultralytics API 量身定制的高级代码完成建议,更快、更准确地编写代码。
- **提高开发速度:**通过消除重复编码任务和利用预置代码块片段来节省时间。
- **提高代码质量:**利用智能代码自动补全功能,编写更简洁、更一致、无差错的代码。
- **简化工作流程:**通过自动化常见任务,专注于项目的核心逻辑。
使用代码片段
片段的前缀是 ultra
,键入 ultra
将显示一个可能使用的片段列表。还可以使用 Ctrl+Shift+P 打开 VS Code 命令面板 并运行命令 Snippets: Insert Snippet
.
代码片段字段
许多片段的 "字段 "都有默认占位符值或名称。例如,predict方法的输出可以保存到 r
, results
, detections
, preds
或开发人员选择的任何其他python变量,这就是为什么片段(snippets)包括 “字段”。在插入代码片段之后,使用 Tab ⇥,光标就会在字段之间快速移动。选中一个字段后,键入一个新变量名将改变该变量的实例,同时也会改变代码片段中该变量的所有其他实例。
代码片段补全
这些片段尽可能以描述性的方式命名,但这意味着要输入的内容可能会很多,如果目的是为了更快的移动,这将适得其反。 幸运的是,VS Code 可以让用户键入 ultra.example-yolo-predict
, example-yolo-predict
, yolo-predict
甚至 ex-yolo-p
并仍能达到预期的片段选项!如果预定的片段实际上是 ultra.example-yolo-predict
,然后使用键盘箭头 ↑ 或 ↓ 突出显示所需的片段,然后按 输入Enter ↵ 或 Tab ⇥ 将插入正确的代码块。
选择第一行后,自动填入了以下代码:
片段类别
这些是Ultralytics-snippets 扩展目前可用的片段类别。以后还会添加更多类别,请务必检查更新并启用扩展的自动更新功能。
片段格式:
{PREFIX}.{ROOT}*-{DESCRIPTOR}
{PREFIX}
是ultra
{ROOT}
例如import
或results
. 至少一个root,也可能有多个,例如result-boxes
.{DESCRIPTOR}
与片段功能相关联,所有单词使用-
连接.
类别 | 前缀 | 说明 |
---|---|---|
Examples | ultra.examples |
帮助学习或开始使用Ultralytics 的示例代码。示例是文档页面代码的副本或类似代码。 |
Kwargs | `ultra.kwargs | 通过为train、track、predict 和val方法添加包含所有关键字参数和默认值的代码段,加快开发速度。 |
Imports | ultra.imports |
快速导入通用Ultralytics 对象的片段。 |
Models | ultra.yolo |
插入代码块,用于初始化各种 模型 (yolo , sam , rtdetr 等),包括下拉式配置选项。 |
Results | ultra.result |
用于处理推理结果时常用操作的代码块。 |
Utilities | ultra.util |
可快速访问Ultralytics 软件包内置的常用实用程序,更多信息请访问简单实用程序页面。 |
使用Examples学习
ultra.examples
对于希望学习如何开始使用Ultralytics YOLO 基础知识的人来说非常有用。示例片段插入后即可运行(有些片段还有下拉选项)。插入代码段后,所有代码都会被选中,并通过使用 Shift ⇑+Enter ↵交互运行.
例如,使用片段 ultra.example-yolo-predict
插入以下代码示例。插入后,唯一可配置的选项是模型比例,可以是以下任何一种: n
, s
, m
, l
或 x
.
from ultralytics import ASSETS, YOLO
model = YOLO("yolo11n.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 支持众多tasks, 当处理推理结果时,有其他您可能希望访问的Results
属性,这就是代码段字段的强大之处。
关键字参数
有超过100个关键字参数,可用于各种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[w,h] 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) visualize model features
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
)
结论
Ultralytics-Snippets 扩展用于 VS Code,旨在帮助数据科学家和机器学习工程师更高效地使用Ultralytics YOLO 构建计算机视觉应用程序。通过提供预构建的代码片段和有用的示例,开发人员可以专注于创建创新的解决方案。