Расширение Ultralytics для VS Code#
Смотри: Как использовать расширение Ultralytics для Visual Studio Code | Готовые фрагменты кода | Ultralytics YOLO 🎉
Возможности и преимущества#
✅ Ты специалист по данным или инженер в области машинного обучения, который создает приложения для компьютерного зрения с помощью Ultralytics?
✅ Тебе надоело снова и снова писать одни и те же фрагменты кода?
✅ Ты постоянно забываешь аргументы или значения по умолчанию для методов train, val, predict, export или track?
✅ Хочешь начать работать с Ultralytics и хотел бы найти более простой способ просматривать примеры кода или запускать их?
✅ Хочешь ускорить цикл разработки при работе с Ultralytics?
Если ты пользуешься Visual Studio Code и ответил «да» хотя бы на один из вопросов выше, тебе поможет расширение Ultralytics-snippets для VS Code! Читай дальше, чтобы узнать больше о расширении, его установке и использовании.
Запусти пример кода с Ultralytics YOLO менее чем за 20 секунд! 🚀
Вдохновлено сообществом Ultralytics#
Идея создать это расширение появилась благодаря сообществу Ultralytics. Вопросы сообщества на похожие темы и примеры помогли развить этот проект. Кроме того, многие участники команды Ultralytics используют VS Code, чтобы ускорить свою работу ⚡.
Почему VS Code?#
Visual Studio Code чрезвычайно популярен среди разработчиков по всему миру и занимал первое место по популярности в опросе разработчиков Stack Overflow в 2021, 2022, 2023 и 2024 годах. Учитывая широкие возможности настройки VS Code, встроенные функции, совместимость с различными платформами и расширяемость, неудивительно, что им пользуется так много разработчиков. Благодаря популярности редактора в широком сообществе разработчиков, а также в сообществах Ultralytics в Discord, Discourse, Reddit и GitHub, создание расширения для VS Code стало логичным шагом: оно помогает упростить рабочий процесс и повысить продуктивность.
Хочешь рассказать, чем пользуешься для разработки кода? Загляни в наш опрос сообщества на Discourse и поделись своим мнением! Заодно можешь посмотреть наши любимые мемы о компьютерном зрении, машинном обучении, ИИ и разработчиках или даже опубликовать свой любимый мем!
Установка расширения#
Расширение Ultralytics-snippets должно работать в любой среде разработки кода, в которой можно устанавливать расширения VS Code. После публикации расширения выяснилось, что neovim тоже можно сделать совместимым с расширениями VS Code. Подробнее смотри в разделе neovim об установке файла Readme в репозитории Ultralytics-Snippets.
Установка в VS Code#
-
Открой меню Extensions в VS Code или воспользуйся сочетанием клавиш Ctrl+Shift ⇑+x, затем найди Ultralytics-snippets.
-
Нажми кнопку Install.
Установка из магазина расширений VS Code#
-
Открой магазин расширений VS Code и найди Ultralytics-snippets или сразу перейди на страницу расширения в магазине VS Code.
-
Нажми кнопку Install и разреши браузеру запустить сеанс VS Code.
-
Следуй инструкциям, чтобы установить расширение.
Страница Ultralytics-Snippets в каталоге расширений Visual Studio CodeUltralytics-Snippets
Использование расширения Ultralytics-Snippets#
-
🧠 Умное автодополнение кода: пиши код быстрее и точнее благодаря расширенным подсказкам автодополнения, адаптированным к API Ultralytics.
-
⌛ Ускорение разработки: экономь время, избавляясь от повторяющихся задач программирования и используя готовые фрагменты кода.
-
🔬 Повышение качества кода: пиши более чистый, единообразный код без ошибок благодаря умному автодополнению.
-
💎 Оптимизация рабочего процесса: сосредоточься на основной логике проекта, автоматизировав рутинные задачи.
Обзор#
Расширение будет работать только в том случае, если для режима языка настроен Python 🐍. Это позволяет избежать вставки фрагментов при работе с файлами других типов. Префикс каждого фрагмента начинается с ultra; просто введи ultra в редакторе после установки расширения, чтобы увидеть список доступных фрагментов. Ты также можешь открыть палитру команд VS Code с помощью Ctrl+Shift ⇑+p и выполнить команду Snippets: Insert Snippet.
Поля фрагментов кода#
Во многих фрагментах есть «поля» со значениями или именами-заполнителями по умолчанию. Например, результат метода predict можно сохранить в переменную Python с именем r, results, detections, preds или любым другим именем на выбор разработчика — поэтому во фрагментах и предусмотрены «поля». После вставки фрагмента нажимай Tab ⇥ на клавиатуре, чтобы быстро перемещать курсор между полями. Выбрав поле, введи новое имя переменной: оно изменится в этом месте и во всех остальных вхождениях этой переменной во фрагменте кода!
После вставки фрагмента переименование model в world_model обновляет все его вхождения. Нажми Tab ⇥, чтобы перейти к следующему полю: откроется раскрывающееся меню, в котором можно выбрать масштаб модели. Переход к следующему полю откроет ещё одно меню, где можно выбрать вариант модели world или worldv2.
Автодополнение фрагментов кода#
Вводить полный префикс фрагмента не обязательно — можно даже начать ввод не с начала префикса. Смотри пример на изображении ниже.
Названия фрагментов максимально понятны, но из-за этого их ввод может занимать много времени, что противоречит цели — работать быстрее. К счастью, в VS Code можно ввести ultra.example-yolo-predict, example-yolo-predict, yolo-predict или даже ex-yolo-p, и нужный фрагмент всё равно появится в списке! Если нужный фрагмент — именно ultra.example-yolo-predict-kwords, просто выдели его стрелками на клавиатуре ↑ или ↓ и нажми Enter ↵ или Tab ⇥, чтобы вставить правильный блок кода.
Если ввести ex-yolo-p, нужный фрагмент кода всё равно будет найден.
Категории фрагментов#
Вот категории фрагментов, доступные в расширении Ultralytics-snippets на данный момент. В будущем появятся новые категории, поэтому проверяй обновления и включи автоматическое обновление расширения. Если тебе не хватает какого-либо фрагмента, можешь запросить его добавление.
| Категория | Начальный префикс | Описание |
|---|---|---|
| Примеры | ultra.examples | Примеры кода для обучения или знакомства с Ultralytics. Это копии кода со страниц документации или похожие на него примеры. |
| Именованные аргументы | ultra.kwargs | Ускорь разработку: добавь фрагменты для методов train, val, predict и track со всеми именованными аргументами и значениями по умолчанию. |
| Импорты | ultra.imports | Фрагменты для быстрого импорта часто используемых объектов Ultralytics. |
| Модели | ultra.yolo | Вставляй блоки кода для инициализации различных моделей (yolo, sam, rtdetr и т. д.), в том числе с настройками в виде раскрывающихся списков. |
| Результаты | ultra.result | Блоки кода для распространенных операций при работе с результатами инференса. |
| Утилиты | ultra.util | Быстрый доступ к часто используемым утилитам, встроенным в пакет Ultralytics. Подробнее о них читай на странице простых утилит. |
Обучение на примерах#
Фрагменты 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() # раскомментируй, чтобы просмотреть изображение каждого результатаУскорение разработки#
Фрагменты, отличные от ultra.examples, призваны упростить и ускорить разработку с Ultralytics. Во многих проектах используется распространенный блок кода, который перебирает список Results, возвращаемый методом predict модели. Для этого пригодится фрагмент 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 — здесь и пригодятся поля фрагментов.
После перехода клавишей Tab к полю boxes появится раскрывающееся меню, в котором можно выбрать другой нужный атрибут.
Именованные аргументы#
Для различных задач и режимов Ultralytics предусмотрено более 💯 именованных аргументов! Запомнить их все непросто, и легко перепутать save_frame и save_frames (кстати, правильный вариант — save_frames). Здесь помогут фрагменты ultra.kwargs!
Чтобы вставить метод predict со всеми аргументами инференса, используй ultra.kwargs-predict: он вставит следующий код, включая комментарии.
model.predict(
source=src, # (str, optional) исходная папка с изображениями или видео
imgsz=640, # (int | list) размер входных изображений: целое число или список [h,w] для predict
conf=0.25, # (float) минимальный порог уверенности
iou=0.7, # (float) порог пересечения над объединением (IoU) для NMS
vid_stride=1, # (int) шаг частоты кадров видео
stream_buffer=False, # (bool) помещать входящие кадры в очередь (True) или сохранять только самый последний кадр (False)
visualize=False, # (bool) сохранять тепловые карты активации классов
augment=False, # (bool) применять аугментацию изображений к источникам для предсказания
agnostic_nms=False, # (bool) NMS без учета классов
classes=None, # (int | list[int], optional) фильтровать результаты по классу, например classes=0 или classes=[0,2,3]
retina_masks=False, # (bool) использовать маски сегментации высокого разрешения
embed=None, # (list[int], optional) возвращать векторы признаков/эмбеддинги из заданных слоев
show=False, # (bool) показывать предсказанные изображения и видео, если среда это поддерживает
save=True, # (bool) сохранять результаты предсказания
save_frames=False, # (bool) сохранять отдельные предсказанные кадры видео
save_txt=False, # (bool) сохранять результаты в файл .txt
save_conf=False, # (bool) сохранять результаты с оценками уверенности
save_crop=False, # (bool) сохранять обрезанные изображения с результатами
stream=False, # (bool) обрабатывать длинные видео или большое количество изображений с меньшим расходом памяти, возвращая генератор
verbose=True, # (bool) включать или отключать подробные журналы инференса в терминале
)В этом фрагменте предусмотрены поля для всех именованных аргументов, а также для model и src на случай, если в твоем коде использовались другие переменные. В каждой строке с именованным аргументом есть краткое описание для справки.
Все фрагменты кода#
Лучший способ узнать, какие фрагменты доступны, — скачать и установить расширение, а затем попробовать его! Если хочешь заранее посмотреть список, открой репозиторий или страницу расширения в магазине VS Code и изучи таблицы со всеми доступными фрагментами.
Заключение#
Расширение Ultralytics-Snippets для VS Code создано, чтобы помочь специалистам по данным и инженерам в области машинного обучения эффективнее разрабатывать приложения для компьютерного зрения с помощью Ultralytics YOLO. Готовые фрагменты кода и полезные примеры позволяют сосредоточиться на главном — создании инновационных решений. Поделись отзывом: открой страницу расширения в магазине VS Code и оставь оценку. ⭐
Часто задаваемые вопросы#
Запросить новые фрагменты можно, создав Issue в репозитории Ultralytics-Snippets.
Это совершенно бесплатно!
В VS Code сочетание клавиш Ctrl+Space позволяет показывать больше или меньше информации в окне предварительного просмотра. Если при вводе префикса фрагмента кода предварительный просмотр не отображается, это сочетание клавиш должно восстановить его.
Если ты пользуешься VS Code и видишь сообщение с предложением установить расширение Ultralytics-snippets, но больше не хочешь его видеть, есть два способа отключить это сообщение.
-
Установи Ultralytics-snippets — и сообщение больше не будет появляться 😆!
-
Ты можешь использовать
yolo settings vscode_msg=False, чтобы отключить показ сообщения, не устанавливая расширение. Если тебе нужны подробности, загляни на страницу настроек Ultralytics.
-
Зайди в репозиторий Ultralytics-snippets и создай Issue или Pull Request!
Как и любое другое расширение VS Code, его можно удалить через меню Extensions в VS Code. Найди в меню расширение Ultralytics-snippets, нажми на значок шестерёнки (⚙), а затем выбери «Uninstall», чтобы удалить расширение.