Extensión de Ultralytics para VS Code
Watch: How to use Ultralytics Visual Studio Code Extension | Ready-to-Use Code Snippets | Ultralytics YOLO 🎉
Características y beneficios
✅ ¿Eres científico de datos o ingeniero de machine learning y desarrollas aplicaciones de visión artificial con Ultralytics?
✅ ¿Detestas escribir los mismos bloques de código una y otra vez?
✅ ¿Siempre olvidas los argumentos o valores predeterminados para los métodos export, predict, train, track o val?
✅ ¿Buscas empezar con Ultralytics y desearías tener una forma más fácil de consultar o ejecutar ejemplos de código?
✅ ¿Quieres acelerar tu ciclo de desarrollo cuando trabajas con Ultralytics?
Si utilizas Visual Studio Code y has respondido "sí" a alguna de las anteriores, ¡la extensión Ultralytics-snippets para VS Code está aquí para ayudarte! Sigue leyendo para saber más sobre la extensión, cómo instalarla y cómo utilizarla.
Run example code using Ultralytics YOLO in under 20 seconds! 🚀
Inspirado en la comunidad de Ultralytics
La inspiración para crear esta extensión provino de la comunidad de Ultralytics. Las preguntas de la comunidad sobre temas y ejemplos similares impulsaron el desarrollo de este proyecto. Además, muchos miembros del equipo de Ultralytics utilizan VS Code para acelerar su propio trabajo ⚡.
¿Por qué VS Code?
Visual Studio Code es extremadamente popular entre los desarrolladores de todo el mundo y ha sido clasificado como el más popular en la Encuesta de desarrolladores de Stack Overflow en 2021, 2022, 2023 y 2024. Debido al alto nivel de personalización, las funciones integradas, la amplia compatibilidad y la extensibilidad de VS Code, no es ninguna sorpresa que tantos desarrolladores lo utilicen. Dada su popularidad en la comunidad de desarrolladores en general y dentro de las comunidades de Discord, Discourse, Reddit y GitHub de Ultralytics, tenía sentido crear una extensión de VS Code para ayudar a agilizar tu flujo de trabajo y aumentar tu productividad.
¿Quieres contarnos qué utilizas para desarrollar código? ¡Dirígete a nuestra encuesta de la comunidad en Discourse y háznoslo saber! Mientras estás allí, ¡quizás quieras echar un vistazo a algunos de nuestros memes favoritos sobre visión artificial, machine learning, IA y desarrollo, o incluso publicar el tuyo!
Instalación de la extensión
Cualquier entorno de código que permita instalar extensiones de VS Code debería ser compatible con la extensión Ultralytics-snippets. Tras publicar la extensión, se descubrió que neovim puede hacerse compatible con extensiones de VS Code. Para saber más, consulta la sección de instalación de neovim del archivo Readme en el repositorio Ultralytics-Snippets.
Instalación en VS Code
-
Navega al menú de extensiones en VS Code o utiliza el acceso directo Ctrl+Shift ⇑+x, y busca Ultralytics-snippets.
-
Haz clic en el botón Install.
Instalación desde el VS Code Extension Marketplace
-
Visita el VS Code Extension Marketplace y busca Ultralytics-snippets o ve directamente a la página de la extensión en el mercado de VS Code.
-
Haz clic en el botón Install y permite que tu navegador inicie una sesión de VS Code.
-
Sigue las instrucciones que aparecen para instalar la extensión.
Visual Studio Code Extension Marketplace page for Ultralytics-Snippets
Uso de la extensión Ultralytics-Snippets
-
🧠 Finalización inteligente de código: Escribe código de forma más rápida y precisa con sugerencias avanzadas de finalización de código adaptadas a la API de Ultralytics.
-
⌛ Mayor velocidad de desarrollo: Ahorra tiempo eliminando tareas repetitivas de codificación y aprovechando fragmentos de bloques de código predefinidos.
-
🔬 Calidad de código mejorada: Escribe código más limpio, consistente y sin errores con la finalización inteligente de código.
-
💎 Flujo de trabajo optimizado: Mantente enfocado en la lógica central de tu proyecto automatizando tareas comunes.
Descripción general
La extensión solo funcionará cuando el modo de idioma esté configurado para Python 🐍. Esto es para evitar que se inserten fragmentos al trabajar con cualquier otro tipo de archivo. Todos los fragmentos tienen un prefijo que comienza con ultra, y simplemente escribiendo ultra en tu editor después de instalar la extensión, se mostrará una lista de posibles fragmentos para usar. También puedes abrir la paleta de comandos de VS Code usando Ctrl+Shift ⇑+p y ejecutando el comando Snippets: Insert Snippet.
Campos de los fragmentos de código
Muchos fragmentos tienen "campos" con valores o nombres de marcador de posición predeterminados. Por ejemplo, la salida del método predict podría guardarse en una variable de Python llamada r, results, detections, preds o cualquier otra que elija el desarrollador, por lo que los fragmentos incluyen "campos". Si utilizas Tab ⇥ en tu teclado después de insertar un fragmento, el cursor se moverá rápidamente entre los campos. Una vez seleccionado un campo, al escribir un nombre de variable nuevo, se cambiará esa instancia, ¡pero también todas las demás instancias de esa variable en el código del fragmento!
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.
Finalizaciones de fragmentos de código
No es necesario escribir el prefijo completo del fragmento, ni siquiera empezar a escribir desde el principio del mismo. Mira el ejemplo en la imagen de abajo.
Los fragmentos tienen los nombres más descriptivos posibles, pero esto significa que podría haber mucho que escribir y eso sería contraproducente si el objetivo es ir más rápido. Afortunadamente, VS Code permite a los usuarios escribir ultra.example-yolo-predict, example-yolo-predict, yolo-predict, o incluso ex-yolo-p ¡y aún así llegar a la opción de fragmento deseada! Si el fragmento deseado era realmente ultra.example-yolo-predict-kwords, entonces basta con utilizar las flechas de tu teclado ↑ o ↓ para resaltar el fragmento deseado y pulsar Enter ↵ o Tab ⇥ para insertar el bloque de código correcto.
Typing ex-yolo-p will still arrive at the correct snippet.
Categorías de fragmentos
Estas son las categorías de fragmentos actuales disponibles para la extensión Ultralytics-snippets. En el futuro se añadirán más, así que asegúrate de comprobar si hay actualizaciones y de habilitar las actualizaciones automáticas para la extensión. También puedes solicitar que se añadan fragmentos adicionales si sientes que falta alguno.
| Categoría | Prefijo de inicio | Descripción |
|---|---|---|
| Ejemplos | ultra.examples | Código de ejemplo para ayudar a aprender o para empezar con Ultralytics. Los ejemplos son copias de, o similares a, el código de las páginas de documentación. |
| Kwargs | ultra.kwargs | Acelera el desarrollo añadiendo fragmentos para los métodos train, track, predict y val con todos los argumentos de palabra clave y valores predeterminados. |
| Imports | ultra.imports | Fragmentos para importar rápidamente objetos comunes de Ultralytics. |
| Models | ultra.yolo | Inserta bloques de código para inicializar varios modelos (yolo, sam, rtdetr, etc.), incluyendo opciones de configuración desplegables. |
| Results | ultra.result | Bloques de código para operaciones comunes al trabajar con resultados de inferencia. |
| Utilidades | ultra.util | Proporciona acceso rápido a utilidades comunes integradas en el paquete Ultralytics; aprende más sobre ellas en la página de Utilidades simples. |
Aprender con ejemplos
Los fragmentos ultra.examples son muy útiles para cualquiera que busque aprender a empezar con los aspectos básicos de trabajo con Ultralytics YOLO. Los fragmentos de ejemplo están destinados a ejecutarse una vez insertados (algunos tienen también opciones desplegables). Un ejemplo de esto se muestra en la animación en la parte superior de esta página, donde después de insertar el fragmento, todo el código se selecciona y se ejecuta de forma interactiva utilizando Shift ⇑+Enter ↵.
Tal y como muestra la animación en la parte superior de esta página, puedes utilizar el fragmento ultra.example-yolo-predict para insertar el siguiente ejemplo de código. Una vez insertado, la única opción configurable es la escala del modelo, que puede ser cualquiera de: n, s, m, l o 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 imageAcelerar el desarrollo
El objetivo de los fragmentos distintos a ultra.examples es hacer que el desarrollo sea más fácil y rápido cuando se trabaja con Ultralytics. Un bloque de código común que se utiliza en muchos proyectos es iterar la lista de Results devuelta al utilizar el método de predict del modelo. El fragmento ultra.result-loop puede ayudar con esto.
El uso de ultra.result-loop insertará el siguiente código predeterminado (incluidos los comentarios).
# reference https://docs.ultralytics.com/modes/predict/#working-with-results
for result in results:
result.boxes.data # torch.Tensor arraySin embargo, dado que Ultralytics admite numerosas tareas, al trabajar con resultados de inferencia hay otros atributos de Results a los que puede que desees acceder, que es donde los campos de los fragmentos de código serán potentes.
Once tabbed to the boxes field, a dropdown menu appears to allow selection of another attribute as required.
Argumentos de palabras clave
¡Hay más de 💯 argumentos de palabras clave para todas las distintas tareas y modos de Ultralytics! Es mucho para recordar, y puede ser fácil olvidar si el argumento es save_frame o save_frames (por cierto, definitivamente es save_frames). ¡Aquí es donde pueden ayudar los fragmentos ultra.kwargs!
Para insertar el método predict, incluyendo todos los argumentos de inferencia, utiliza ultra.kwargs-predict, que insertará el siguiente código (incluidos los comentarios).
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
)Este fragmento tiene campos para todos los argumentos de palabras clave, pero también para model y src en caso de que hayas utilizado una variable diferente en tu código. En cada línea que contiene un argumento de palabra clave, se incluye una breve descripción como referencia.
Todos los fragmentos de código
¡La mejor forma de averiguar qué fragmentos están disponibles es descargar e instalar la extensión y probarla! Si tienes curiosidad y quieres echar un vistazo a la lista de antemano, puedes visitar el repositorio o la página de la extensión en el mercado de VS Code para ver las tablas de todos los fragmentos disponibles.
Conclusión
La extensión Ultralytics-Snippets para VS Code está diseñada para capacitar a los científicos de datos e ingenieros de machine learning para construir aplicaciones de visión artificial utilizando Ultralytics YOLO de forma más eficiente. Proporcionando fragmentos de código predefinidos y ejemplos útiles, te ayudamos a enfocarte en lo más importante: crear soluciones innovadoras. Por favor, comparte tus comentarios visitando la página de la extensión en el mercado de VS Code y dejando una reseña. ⭐
Preguntas frecuentes
¿Cómo solicito un nuevo fragmento?
Se pueden solicitar nuevos fragmentos utilizando los Issues en el repositorio de Ultralytics-Snippets.
¿Cuánto cuesta la extensión de Ultralytics?
¡Es 100% gratuita!
¿Por qué no veo una vista previa del fragmento de código?
VS Code utiliza la combinación de teclas Ctrl+Space para mostrar más o menos información en la ventana de vista previa. Si no ves una vista previa del fragmento al escribir un prefijo de fragmento de código, usar esta combinación de teclas debería restaurar la vista previa.
¿Cómo deshabilito la recomendación de la extensión en Ultralytics?
Si utilizas VS Code y has empezado a ver un mensaje que te pide instalar la extensión Ultralytics-snippets, y no quieres volver a ver el mensaje, hay dos formas de deshabilitarlo.
-
¡Instala Ultralytics-snippets y el mensaje ya no se mostrará 😆!
-
Puedes usar
yolo settings vscode_msg Falsepara evitar que aparezca el mensaje sin tener que instalar la extensión. Puedes aprender más sobre la Configuración de Ultralytics en la página de inicio rápido si no estás familiarizado.
Tengo una idea para un nuevo fragmento de código de Ultralytics, ¿cómo puedo conseguir que se añada uno?
¡Visita el repositorio de Ultralytics-snippets y abre un Issue o Pull Request!
¿Cómo desinstalo la extensión Ultralytics-Snippets?
Como cualquier otra extensión de VS Code, puedes desinstalarla navegando al menú de extensiones en VS Code. Encuentra la extensión Ultralytics-snippets en el menú, haz clic en el icono de engranaje (⚙) y luego haz clic en "Uninstall" para eliminar la extensión.