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 por computador con Ultralytics?
✅ ¿Te molesta tener que 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?
✅ ¿Quieres empezar con Ultralytics y ojalá tuvieras una forma más fácil de consultar o ejecutar ejemplos de código?
✅ ¿Quieres acelerar tu ciclo de desarrollo al trabajar con Ultralytics?
Si utilizas Visual Studio Code y has respondido "sí" a cualquiera de estas preguntas, ¡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 por la comunidad de Ultralytics#
La inspiración para crear esta extensión surgió 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 por la encuesta Stack Overflow Developer Survey en 2021, 2022, 2023 y 2024. Debido al alto nivel de personalización de VS Code, sus funciones integradas, su amplia compatibilidad y su extensibilidad, no sorprende 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 optimizar tu flujo de trabajo y aumentar tu productividad.
¿Quieres hacernos saber qué usas para desarrollar código? ¡Dirígete a nuestra encuesta de la comunidad en Discourse y cuéntanoslo! Mientras estás ahí, quizás quieras echar un vistazo a algunos de nuestros memes favoritos sobre visión por computador, machine learning, IA y desarrollo, ¡o incluso publicar el tuyo propio!
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 es posible hacer que neovim sea compatible con las extensiones de VS Code. Para obtener más información, consulta la sección de instalación de neovim del archivo Readme en el repositorio Ultralytics-Snippets.
Instalación en VS Code#
-
Dirígete al menú de extensiones en VS Code o usa el atajo Ctrl+Shift ⇑+x, y busca Ultralytics-snippets.
-
Haz clic en el botón Install.
Instalación desde el marketplace de extensiones de VS Code#
-
Visita el Marketplace de extensiones de VS Code y busca Ultralytics-snippets, o ve directamente a la página de la extensión en el marketplace 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 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 adaptadas a la API de Ultralytics.
-
⌛ Mayor velocidad de desarrollo: Ahorra tiempo eliminando tareas de programación repetitivas y aprovechando bloques de código predefinidos.
-
🔬 Mejora de la calidad del código: Escribe código más limpio, consistente y sin errores gracias a la finalización inteligente de código.
-
💎 Flujo de trabajo optimizado: Mantén el enfoque en la lógica principal de tu proyecto automatizando las tareas comunes.
Descripción general#
La extensión solo funcionará cuando el modo de lenguaje esté configurado para Python 🐍. Esto es para evitar que se inserten fragmentos (snippets) al trabajar con cualquier otro tipo de archivo. Todos los fragmentos tienen un prefijo que comienza con ultra, y con solo escribir 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 snippets de código#
Muchos fragmentos tienen "campos" con valores o nombres de marcador de posición predeterminados. Por ejemplo, el resultado del método predict podría guardarse en una variable de Python llamada r, results, detections, preds o cualquier otra que el desarrollador elija, razón por la cual los fragmentos incluyen "campos". Al usar Tab ⇥ en tu teclado después de insertar un fragmento, tu cursor se moverá rápidamente entre los campos. Una vez seleccionado un campo, escribir un nuevo nombre de variable 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 snippets de código#
No es obligatorio escribir el prefijo completo del snippet, ni siquiera empezar a escribir desde el principio del mismo. Mira el ejemplo en la imagen inferior.
Los fragmentos se nombran de la manera más descriptiva posible, pero esto significa que puede haber mucho que escribir y eso sería contraproducente si el objetivo es moverse 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 aun así alcanzar la opción de fragmento deseada! Si el fragmento deseado era en realidad ultra.example-yolo-predict-kwords, entonces solo con usar las flechas del teclado ↑ o ↓ para resaltar el fragmento deseado y presionar Enter ↵ o Tab ⇥ se insertará el bloque de código correcto.
Typing ex-yolo-p will still arrive at the correct snippet.
Categorías de snippets#
Estas son las categorías de fragmentos actuales disponibles para la extensión Ultralytics-snippets. Se añadirán más en el futuro, 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 consideras que falta alguno.
| Categoría | Prefijo inicial | Descripción |
|---|---|---|
| Ejemplos | ultra.examples | Código de ejemplo para ayudar a aprender o para empezar con Ultralytics. Los ejemplos son copias o similares al 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 sus argumentos de palabras clave y valores predeterminados. |
| Imports | ultra.imports | Snippets 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. |
| Resultados | 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; obtén más información sobre ellas en la página de utilidades simples. |
Aprendizaje con ejemplos#
Los fragmentos de ultra.examples son muy útiles para cualquier persona que busque aprender a empezar con los fundamentos de trabajar con Ultralytics YOLO. Los fragmentos de ejemplo están diseñados para ejecutarse una vez insertados (algunos también tienen opciones desplegables). Un ejemplo de esto se muestra en la animación al inicio de esta página, donde, después de insertar el fragmento, todo el código se selecciona y se ejecuta de forma interactiva usando Shift ⇑+Enter ↵.
Tal como muestra la animación al inicio de esta página, puedes usar 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 las siguientes: 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 imageAceleración del desarrollo#
El objetivo de los fragmentos distintos de ultra.examples es facilitar y agilizar el desarrollo al trabajar con Ultralytics. Un bloque de código común que se utiliza en muchos proyectos es recorrer la lista de Results devuelta al utilizar el método predict del modelo. El fragmento ultra.result-loop puede ayudar con esto.
El uso de ultra.result-loop insertará el siguiente código predeterminado (incluyendo 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 quizás desees acceder, y es ahí donde los campos de los fragmentos resultará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 diversas tareas y modos de Ultralytics! Son muchos 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 los fragmentos de ultra.kwargs pueden ayudar!
Para insertar el método predict, incluidos todos los argumentos de inferencia, utiliza ultra.kwargs-predict, lo que insertará el siguiente código (incluyendo comentarios).
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
)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 snippets de código#
¡La mejor manera de descubrir 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 marketplace 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 permitir a los científicos de datos e ingenieros de machine learning crear aplicaciones de visión por computador utilizando Ultralytics YOLO de manera más eficiente. Al proporcionar fragmentos de código preconstruidos y ejemplos útiles, te ayudamos a centrarte en lo que más importa: crear soluciones innovadoras. Por favor, comparte tus comentarios visitando la página de la extensión en el marketplace de VS Code y dejando una reseña. ⭐
FAQ#
Se pueden solicitar nuevos fragmentos utilizando las incidencias (Issues) en el repositorio de Ultralytics-Snippets.
¡Es 100% gratuita!
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 snippet al escribir un prefijo de snippet de código, esta combinación debería restaurar la vista previa.
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 desactivar la visualización del mensaje sin necesidad de instalar la extensión. Puedes obtener más información sobre la configuración de Ultralytics en la página de inicio rápido si no estás familiarizado.
-
¡Visita el repositorio de Ultralytics-snippets y abre una incidencia (Issue) o una solicitud de extracción (Pull Request)!
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 del engranaje (⚙) y después haz clic en "Uninstall" para eliminar la extensión.