Documentação Ultralytics: Usando YOLO26 com SAHI para Inferência Fatiada
Bem-vindo à documentação da Ultralytics sobre como usar o YOLO26 com o SAHI (Slicing Aided Hyper Inference). Este guia completo visa fornecer todo o conhecimento essencial de que precisas para implementar o SAHI juntamente com o YOLO26. Vamos analisar profundamente o que é o SAHI, por que a inferência fatiada é crítica para aplicações em grande escala e como integrar essas funcionalidades com o YOLO26 para um desempenho aprimorado de detecção de objetos.
Introdução ao SAHI
O SAHI (Slicing Aided Hyper Inference) é uma biblioteca inovadora projetada para otimizar algoritmos de detecção de objetos para imagens de grande escala e alta resolução. A sua funcionalidade principal consiste em dividir imagens em fatias gerenciáveis, executar a detecção de objetos em cada fatia e, em seguida, unir os resultados novamente. O SAHI é compatível com uma gama de modelos de detecção de objetos, incluindo a série YOLO, oferecendo flexibilidade enquanto garante o uso otimizado de recursos computacionais.
Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀
Principais Recursos do SAHI
- Integração Perfeita: O SAHI integra-se facilmente com modelos YOLO, o que significa que podes começar a fatiar e detectar sem muitas modificações no código.
- Eficiência de Recursos: Ao dividir imagens grandes em partes menores, o SAHI otimiza o uso da memória, permitindo-te executar detecção de alta qualidade em hardware com recursos limitados.
- Alta Precisão: O SAHI mantém a precisão da detecção empregando algoritmos inteligentes para mesclar caixas de detecção sobrepostas durante o processo de união.
O que é Inferência Fatiada?
A Inferência Fatiada refere-se à prática de subdividir uma imagem grande ou de alta resolução em segmentos menores (fatias), conduzindo a detecção de objetos nessas fatias e, em seguida, recompilando as fatias para reconstruir as localizações dos objetos na imagem original. Esta técnica é inestimável em cenários onde os recursos computacionais são limitados ou ao trabalhar com imagens de resolução extremamente alta que poderiam, de outra forma, levar a problemas de memória.
Benefícios da Inferência Fatiada
-
Carga Computacional Reduzida: Fatias de imagem menores são mais rápidas de processar e consomem menos memória, permitindo uma operação mais suave em hardware de menor desempenho.
-
Qualidade de Detecção Preservada: Como cada fatia é tratada independentemente, não há redução na qualidade da detecção de objetos, desde que as fatias sejam grandes o suficiente para capturar os objetos de interesse.
-
Escalabilidade Aprimorada: A técnica permite que a detecção de objetos seja escalada mais facilmente através de diferentes tamanhos e resoluções de imagem, tornando-a ideal para uma ampla gama de aplicações, desde imagens de satélite até diagnósticos médicos.
| YOLO26 without SAHI | YOLO26 with SAHI |
|---|---|
![]() | ![]() |
Instalação e Preparação
Instalação
Para começar, instala as versões mais recentes do SAHI e da Ultralytics:
pip install -U ultralytics sahiImportar Módulos e Baixar Recursos
Aqui está como baixar algumas imagens de teste:
from sahi.utils.file import download_from_url
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
"demo_data/terrain2.png",
)Inferência Padrão com YOLO26
Instanciar o Modelo
Podes instanciar um modelo YOLO26 para detecção de objetos desta forma:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path="yolo26n.pt",
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)Realizar Predição Padrão
Realiza a inferência padrão usando um caminho de imagem.
from sahi.predict import get_prediction
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
result.export_visuals(export_dir="demo_data/", hide_conf=True)Visualizar Resultados
Exporta e visualiza as caixas delimitadoras e máscaras preditas:
from PIL import Image
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Inferência Fatiada com YOLO26
Realiza a inferência fatiada especificando as dimensões das fatias e as taxas de sobreposição:
from PIL import Image
from sahi.predict import get_sliced_prediction
result = get_sliced_prediction(
"demo_data/small-vehicles1.jpeg",
detection_model,
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)
# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)
# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")
# Display the predicted image
processed_image.show()Manipulação de Resultados de Predição
O SAHI fornece um objeto PredictionResult, que pode ser convertido em vários formatos de anotação:
# Access the object prediction list
object_prediction_list = result.object_prediction_list
# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]Predição em Lote
Para predição em lote em um diretório de imagens:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="yolo26n.pt",
model_device="cpu", # or 'cuda:0'
model_confidence_threshold=0.4,
source="path/to/dir",
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)Estás agora pronto para usar o YOLO26 com o SAHI para inferência padrão e fatiada.
Citações e Agradecimentos
Se usares o SAHI no teu trabalho de pesquisa ou desenvolvimento, por favor cita o artigo original do SAHI e dá crédito aos autores:
@article{akyon2022sahi,
title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
journal={2022 IEEE International Conference on Image Processing (ICIP)},
doi={10.1109/ICIP46576.2022.9897990},
pages={966-970},
year={2022}
}Estendemos os nossos agradecimentos ao grupo de pesquisa do SAHI por criar e manter este recurso inestimável para a comunidade de visão computacional. Para mais informações sobre o SAHI e os seus criadores, visita o repositório GitHub do SAHI.
Perguntas Frequentes
Como posso integrar o YOLO26 com o SAHI para inferência fatiada na detecção de objetos?
Integrar o Ultralytics YOLO26 com o SAHI (Slicing Aided Hyper Inference) para inferência fatiada otimiza as tuas tarefas de detecção de objetos em imagens de alta resolução, dividindo-as em fatias gerenciáveis. Esta abordagem melhora o uso da memória e garante uma alta precisão de detecção. Para começar, precisas de instalar as bibliotecas ultralytics e sahi:
pip install -U ultralytics sahiEm seguida, baixa imagens de teste:
from sahi.utils.file import download_from_url
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
"demo_data/terrain2.png",
)Para instruções mais detalhadas, consulta o nosso guia de Inferência Fatiada.
Por que devo usar o SAHI com o YOLO26 para detecção de objetos em imagens grandes?
Usar o SAHI com o Ultralytics YOLO26 para detecção de objetos em imagens grandes oferece vários benefícios:
- Carga Computacional Reduzida: Fatias menores são mais rápidas de processar e consomem menos memória, tornando viável a execução de detecções de alta qualidade em hardware com recursos limitados.
- Precisão de Detecção Mantida: O SAHI usa algoritmos inteligentes para mesclar caixas sobrepostas, preservando a qualidade da detecção.
- Escalabilidade Aprimorada: Ao escalar tarefas de detecção de objetos através de diferentes tamanhos e resoluções de imagem, o SAHI torna-se ideal para várias aplicações, como análise de imagens de satélite e diagnósticos médicos.
Sabe mais sobre os benefícios da inferência fatiada na nossa documentação.
Posso visualizar os resultados da predição ao usar o YOLO26 com o SAHI?
Sim, podes visualizar os resultados da predição ao usar o YOLO26 com o SAHI. Aqui está como podes exportar e visualizar os resultados:
from PIL import Image
result.export_visuals(export_dir="demo_data/", hide_conf=True)
processed_image = Image.open("demo_data/prediction_visual.png")
processed_image.show()Este comando salvará as predições visualizadas no diretório especificado, e podes então carregar a imagem para visualizá-la no teu notebook ou aplicação. Para um guia detalhado, confere a seção de Inferência Padrão.
Que funcionalidades oferece o SAHI para melhorar a detecção de objetos com o YOLO26?
O SAHI (Slicing Aided Hyper Inference) oferece várias funcionalidades que complementam o Ultralytics YOLO26 para detecção de objetos:
- Integração Perfeita: O SAHI integra-se facilmente com modelos YOLO, exigindo ajustes mínimos de código.
- Eficiência de Recursos: Ele divide imagens grandes em fatias menores, o que otimiza o uso da memória e a velocidade.
- Alta Precisão: Ao mesclar efetivamente as caixas de detecção sobrepostas durante o processo de união, o SAHI mantém uma alta precisão de detecção.
Para uma compreensão mais profunda, lê sobre os principais recursos do SAHI.
Como lido com projetos de inferência em grande escala usando o YOLO26 e o SAHI?
Para lidar com projetos de inferência em grande escala usando o YOLO26 e o SAHI, segue estas boas práticas:
- Instalar Bibliotecas Necessárias: Garante que tens as versões mais recentes do ultralytics e do sahi.
- Configurar Inferência Fatiada: Determina as dimensões ideais das fatias e as taxas de sobreposição para o teu projeto específico.
- Executar Predições em Lote: Usa as capacidades do SAHI para realizar predições em lote num diretório de imagens, o que melhora a eficiência.
Exemplo para predição em lote:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo26n.pt",
model_device="cpu", # or 'cuda:0'
model_confidence_threshold=0.4,
source="path/to/dir",
slice_height=256,
slice_width=256,
overlap_height_ratio=0.2,
overlap_width_ratio=0.2,
)Para passos mais detalhados, visita a nossa seção sobre Predição em Lote.

