Extensão Ultralytics para VS Code#
Assista: Como usar a extensão Ultralytics para Visual Studio Code | Trechos de código prontos para usar | Ultralytics YOLO 🎉
Funcionalidades e vantagens#
✅ És cientista de dados ou engenheiro de aprendizagem automática a criar aplicações de visão computacional com a Ultralytics?
✅ Detestas escrever repetidamente os mesmos blocos de código?
✅ Esqueces-te sempre dos argumentos ou dos valores predefinidos dos métodos train, val, predict, export ou track?
✅ Queres começar a usar a Ultralytics e gostarias de ter uma forma mais fácil de consultar ou executar exemplos de código?
✅ Queres acelerar o teu ciclo de desenvolvimento ao trabalhar com a Ultralytics?
Se usas o Visual Studio Code e respondeste «sim» a alguma das perguntas acima, a extensão Ultralytics-snippets para VS Code está aqui para ajudar! Continua a ler para saberes mais sobre a extensão, como a instalar e como a utilizar.
Execute um exemplo de código usando Ultralytics YOLO em menos de 20 segundos! 🚀
Inspirada pela comunidade Ultralytics#
A inspiração para criar esta extensão veio da comunidade Ultralytics. As perguntas da comunidade sobre tópicos e exemplos semelhantes impulsionaram o desenvolvimento deste projeto. Além disso, muitos membros da equipa Ultralytics usam o VS Code para acelerar o seu próprio trabalho ⚡.
Porquê o VS Code?#
O Visual Studio Code é extremamente popular entre programadores de todo o mundo e ficou em primeiro lugar na pesquisa Stack Overflow Developer Survey em 2021, 2022, 2023 e 2024. Graças ao elevado nível de personalização do VS Code, às funcionalidades integradas, à ampla compatibilidade e à extensibilidade, não é de admirar que tantos programadores o utilizem. Dada a sua popularidade na comunidade de programadores em geral e nas comunidades Ultralytics do Discord, Discourse, Reddit e GitHub, fazia sentido criar uma extensão para o VS Code para ajudar a simplificar o teu fluxo de trabalho e aumentar a tua produtividade.
Queres dizer-nos o que usas para desenvolver código? Vai à sondagem da comunidade no nosso Discourse e partilha a tua opinião! Já que lá estás, talvez queiras ver alguns dos nossos memes favoritos sobre visão computacional, aprendizagem automática, IA e desenvolvimento, ou até publicar o teu favorito!
Instalar a extensão#
Qualquer ambiente de código que permita instalar extensões do VS Code deverá ser compatível com a extensão Ultralytics-snippets. Depois de publicar a extensão, descobriu-se que o neovim pode ser compatível com extensões do VS Code. Para saberes mais, consulta a secção de instalação de neovim do Readme no repositório Ultralytics-Snippets.
Instalar no VS Code#
-
Acede ao menu Extensões do VS Code ou usa o atalho Ctrl+Shift ⇑+x e pesquisa por Ultralytics-snippets.
-
Clica no botão Install.
Instalar a partir do Marketplace de extensões do VS Code#
-
Visita o Marketplace de extensões do VS Code e pesquisa por Ultralytics-snippets ou acede diretamente à página da extensão no Marketplace do VS Code.
-
Clica no botão Install e permite que o navegador inicie uma sessão do VS Code.
-
Segue as instruções apresentadas para instalar a extensão.
Página da extensão Ultralytics-Snippets no Marketplace do Visual Studio CodeUltralytics-Snippets
Utilizar a extensão Ultralytics-Snippets#
-
🧠 Conclusão inteligente de código: escreve código de forma mais rápida e precisa com sugestões avançadas de conclusão de código, adaptadas à API da Ultralytics.
-
⌛ Maior velocidade de desenvolvimento: poupa tempo eliminando tarefas de programação repetitivas e aproveitando fragmentos de código predefinidos.
-
🔬 Melhor qualidade do código: escreve código mais limpo, consistente e sem erros com a conclusão inteligente de código.
-
💎 Fluxo de trabalho simplificado: mantém o foco na lógica central do teu projeto ao automatizar tarefas comuns.
Visão geral#
A extensão só funciona quando o Modo de linguagem está configurado para Python 🐍. Isto evita a inserção de fragmentos ao trabalhar com qualquer outro tipo de ficheiro. Todos os fragmentos têm um prefixo que começa por ultra; basta escrever ultra no editor depois de instalar a extensão para ver uma lista de fragmentos disponíveis. Também podes abrir a Paleta de comandos do VS Code com Ctrl+Shift ⇑+p e executar o comando Snippets: Insert Snippet.
Campos dos fragmentos de código#
Muitos fragmentos têm «campos» com valores predefinidos ou nomes de marcador de posição. Por exemplo, o resultado do método predict pode ser guardado numa variável Python chamada r, results, detections, preds ou qualquer outro nome escolhido pelo programador; por isso, os fragmentos incluem «campos». Depois de inserir um fragmento, usa Tab ⇥ no teclado para mover rapidamente o cursor entre os campos. Quando um campo estiver selecionado, ao escrever um novo nome de variável, esse nome substituirá o campo selecionado e todas as outras ocorrências dessa variável no código do fragmento!
Depois de inserir o trecho, renomear model como world_model atualiza todas as instâncias. Ao pressionar Tab ⇥, você vai para o próximo campo, que abre um menu suspenso e permite selecionar uma escala de modelo; ao avançar para o campo seguinte, outro menu suspenso permite escolher a variante do modelo world ou worldv2.
Conclusões dos fragmentos de código#
Não é necessário escrever o prefixo completo do fragmento, nem sequer começar a escrever desde o início do prefixo. Vê o exemplo na imagem abaixo.
Os fragmentos têm nomes tão descritivos quanto possível, mas isso pode implicar escrever muito, o que seria contraproducente se o objetivo for avançar mais depressa. Felizmente, o VS Code permite escrever ultra.example-yolo-predict, example-yolo-predict, yolo-predict ou até ex-yolo-p e, mesmo assim, encontrar a opção de fragmento pretendida! Se o fragmento pretendido for mesmo ultra.example-yolo-predict-kwords, basta usar as teclas de seta ↑ ou ↓ para selecionar o fragmento pretendido e premir Enter ↵ ou Tab ⇥ para inserir o bloco de código correto.
Digitar ex-yolo-p ainda vai levar ao trecho correto.
Categorias de fragmentos#
Estas são as categorias de fragmentos atualmente disponíveis na extensão Ultralytics-snippets. Serão adicionadas mais no futuro, por isso verifica se há atualizações e ativa as atualizações automáticas da extensão. Também podes pedir a adição de fragmentos se achares que falta algum.
| Categoria | Prefixo inicial | Descrição |
|---|---|---|
| Exemplos | ultra.examples | Exemplos de código para ajudar a aprender ou começar a utilizar a Ultralytics. Os exemplos são cópias ou adaptações de código das páginas da documentação. |
| Kwargs | ultra.kwargs | Acelera o desenvolvimento adicionando fragmentos para os métodos train, val, predict e track, com todos os argumentos nomeados e valores predefinidos. |
| Importações | ultra.imports | Fragmentos para importar rapidamente objetos comuns da Ultralytics. |
| Modelos | ultra.yolo | Insere blocos de código para inicializar vários modelos (yolo, sam, rtdetr, etc.), incluindo opções de configuração em menus pendentes. |
| Resultados | ultra.result | Blocos de código para operações comuns ao trabalhar com resultados de inferência. |
| Utilitários | ultra.util | Oferece acesso rápido a utilitários comuns incluídos no pacote Ultralytics. Sabe mais sobre eles na página de utilitários simples. |
Aprender com exemplos#
Os fragmentos ultra.examples são muito úteis para quem quer aprender a começar a trabalhar com os conceitos básicos da Ultralytics YOLO. Os fragmentos de exemplo foram concebidos para serem executados assim que são inseridos (alguns também têm opções em menus pendentes). Um exemplo é apresentado no início desta página, onde, depois de inserir o fragmento, todo o código fica selecionado e é executado interativamente com Shift ⇑+Enter ↵.
Tal como mostra a animação no início desta página, podes usar o fragmento ultra.example-yolo-predict para inserir o seguinte exemplo de código. Depois de o inserires, a única opção configurável é a escala do modelo, que pode ser uma destas: n, s, m, l ou 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() # descomenta para ver cada imagem de resultadoAcelerar o desenvolvimento#
Os fragmentos que não sejam ultra.examples destinam-se a tornar o desenvolvimento mais fácil e rápido ao trabalhar com a Ultralytics. Um bloco de código comum em muitos projetos consiste em percorrer a lista de Results devolvida pelo método predict do modelo. O fragmento ultra.result-loop pode ajudar com isso.
Ao usar ultra.result-loop, será inserido o seguinte código predefinido (incluindo comentários).
# referência https://docs.ultralytics.com/modes/predict#working-with-results
for result in results:
result.boxes.data # matriz torch.TensorNo entanto, como a Ultralytics suporta inúmeras tarefas, ao trabalhar com resultados de inferência, há outros atributos Results que talvez queiras aceder; é aqui que os campos dos fragmentos podem ser úteis.
Depois de avançar com Tab até o campo boxes, aparece um menu suspenso que permite selecionar outro atributo, conforme necessário.
Argumentos nomeados#
Há mais de 💯 argumentos nomeados para todas as tarefas e modalidades da Ultralytics! É muita coisa para memorizar, e é fácil esquecer se o argumento é save_frame ou save_frames (a propósito, é definitivamente save_frames). É aqui que os fragmentos ultra.kwargs podem ajudar!
Para inserir o método predict, incluindo todos os argumentos de inferência, usa ultra.kwargs-predict, que insere o seguinte código (incluindo comentários).
model.predict(
source=src, # (str, optional) diretório de origem das imagens ou vídeos
imgsz=640, # (int | list) tamanho das imagens de entrada como int ou list[h,w] para predict
conf=0.25, # (float) limiar mínimo de confiança
iou=0.7, # (float) limiar de interseção sobre união (IoU) para NMS
vid_stride=1, # (int) intervalo entre fotogramas de vídeo
stream_buffer=False, # (bool) guardar os fotogramas recebidos numa fila (True) ou manter apenas o fotograma mais recente (False)
visualize=False, # (bool) guardar mapas de calor de ativação de classes
augment=False, # (bool) aplicar aumento de dados de imagem às fontes de previsão
agnostic_nms=False, # (bool) NMS independente da classe
classes=None, # (int | list[int], optional) filtrar resultados por classe, por exemplo, classes=0 ou classes=[0,2,3]
retina_masks=False, # (bool) usar máscaras de segmentação de alta resolução
embed=None, # (list[int], optional) devolver vetores de características/embeddings das camadas indicadas
show=False, # (bool) mostrar imagens e vídeos previstos, se o ambiente o permitir
save=True, # (bool) guardar os resultados da previsão
save_frames=False, # (bool) guardar fotogramas individuais do vídeo previsto
save_txt=False, # (bool) guardar os resultados num ficheiro .txt
save_conf=False, # (bool) guardar os resultados com as pontuações de confiança
save_crop=False, # (bool) guardar imagens recortadas com os resultados
stream=False, # (bool) processar vídeos longos ou muitas imagens com menor utilização de memória, devolvendo um gerador
verbose=True, # (bool) ativar/desativar o registo detalhado da inferência no terminal
)Este fragmento tem campos para todos os argumentos nomeados, mas também para model e src, caso tenhas usado uma variável diferente no teu código. Cada linha com um argumento nomeado inclui uma breve descrição para consulta.
Todos os fragmentos de código#
A melhor forma de descobrir que fragmentos estão disponíveis é transferir e instalar a extensão e experimentá-la! Se tiveres curiosidade e quiseres consultar a lista primeiro, visita o repositório ou a página da extensão no Marketplace do VS Code para ver as tabelas com todos os fragmentos disponíveis.
Conclusão#
A extensão Ultralytics-Snippets para VS Code foi concebida para ajudar cientistas de dados e engenheiros de aprendizagem automática a criar aplicações de visão computacional com a Ultralytics YOLO de forma mais eficiente. Ao disponibilizar fragmentos de código predefinidos e exemplos úteis, ajudamos-te a concentrar no que é mais importante: criar soluções inovadoras. Partilha a tua opinião visitando a página da extensão no Marketplace do VS Code e deixando uma avaliação. ⭐
Perguntas frequentes#
Podes pedir novos fragmentos através das Issues no repositório Ultralytics-Snippets.
É 100% grátis!
O VS Code usa a combinação de teclas Ctrl+Space para mostrar mais ou menos informações na janela de pré-visualização. Se não estiveres a ver uma pré-visualização do trecho ao escreveres um prefixo de trecho de código, usar esta combinação de teclas deverá restaurar a pré-visualização.
Se usas o VS Code e começaste a ver uma mensagem a pedir que instales a extensão Ultralytics-snippets, mas não queres voltar a ver essa mensagem, há duas formas de a desativar.
-
Instala o Ultralytics-snippets e a mensagem deixará de aparecer 😆!
-
Podes usar
yolo settings vscode_msg=Falsepara impedir que a mensagem apareça sem teres de instalar a extensão. Se não estiveres familiarizado com a página Definições do Ultralytics, podes saber mais.
-
Visita o repositório do Ultralytics-snippets e abre uma issue ou um pull request!
Tal como qualquer outra extensão do VS Code, podes desinstalá-la acedendo ao menu Extensões no VS Code. Encontra a extensão Ultralytics-snippets no menu, clica no ícone da engrenagem (⚙) e, em seguida, clica em "Desinstalar" para remover a extensão.