Ultralytics YOLO27:

Расширение Ultralytics для VS Code#



Смотри: Как использовать расширение Ultralytics для Visual Studio Code | Готовые фрагменты кода | Ultralytics YOLO 🎉

Возможности и преимущества#

✅ Ты специалист по данным или инженер в области машинного обучения, который создает приложения для компьютерного зрения с помощью Ultralytics?

✅ Тебе надоело снова и снова писать одни и те же фрагменты кода?

✅ Ты постоянно забываешь аргументы или значения по умолчанию для методов train, val, predict, export или track?

✅ Хочешь начать работать с Ultralytics и хотел бы найти более простой способ просматривать примеры кода или запускать их?

✅ Хочешь ускорить цикл разработки при работе с Ultralytics?

Если ты пользуешься Visual Studio Code и ответил «да» хотя бы на один из вопросов выше, тебе поможет расширение Ultralytics-snippets для VS Code! Читай дальше, чтобы узнать больше о расширении, его установке и использовании.


Snippet Prediction Preview
Запусти пример кода с 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#

  1. Открой меню Extensions в VS Code или воспользуйся сочетанием клавиш Ctrl+Shift ⇑+x, затем найди Ultralytics-snippets.

  2. Нажми кнопку Install.


VS Code extension menu

Установка из магазина расширений VS Code#

  1. Открой магазин расширений VS Code и найди Ultralytics-snippets или сразу перейди на страницу расширения в магазине VS Code.

  2. Нажми кнопку Install и разреши браузеру запустить сеанс VS Code.

  3. Следуй инструкциям, чтобы установить расширение.


VS Code marketplace extension install
Страница 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 ⇥ на клавиатуре, чтобы быстро перемещать курсор между полями. Выбрав поле, введи новое имя переменной: оно изменится в этом месте и во всех остальных вхождениях этой переменной во фрагменте кода!


Multi-update field and options
После вставки фрагмента переименование 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 ⇥, чтобы вставить правильный блок кода.


VS Code incomplete code snippet preview
Если ввести 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 — здесь и пригодятся поля фрагментов.


VS Code YOLO results visualization options
После перехода клавишей 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, но больше не хочешь его видеть, есть два способа отключить это сообщение.

    1. Установи Ultralytics-snippets — и сообщение больше не будет появляться 😆!

    2. Ты можешь использовать yolo settings vscode_msg=False, чтобы отключить показ сообщения, не устанавливая расширение. Если тебе нужны подробности, загляни на страницу настроек Ultralytics.

  • Зайди в репозиторий Ultralytics-snippets и создай Issue или Pull Request!

  • Как и любое другое расширение VS Code, его можно удалить через меню Extensions в VS Code. Найди в меню расширение Ultralytics-snippets, нажми на значок шестерёнки (⚙), а затем выбери «Uninstall», чтобы удалить расширение.


    VS Code extension menu

Комментарии