Documentação Ultralytics: Usando YOLO11 com SAHI para Inferência em Fatias
Bem-vindo à documentação Ultralytics sobre como usar o YOLO11 com SAHI (Slicing Aided Hyper Inference). Este guia abrangente tem como objetivo fornecer-lhe todo o conhecimento essencial de que necessita para implementar o SAHI juntamente com o YOLO11. Vamos aprofundar o que é o SAHI, porque é que a inferência em fatias é fundamental para aplicações de grande escala e como integrar estas funcionalidades com o YOLO11 para um melhor desempenho de deteção de objetos.
Introdução ao SAHI
SAHI (Slicing Aided Hyper Inference) é uma biblioteca inovadora projetada para otimizar algoritmos de detecção de objetos para imagens de alta resolução e em larga escala. Sua funcionalidade principal reside na divisão de imagens em fatias gerenciáveis, executando a detecção de objetos em cada fatia e, em seguida, juntando os resultados novamente. O SAHI é compatível com uma variedade de modelos de detecção de objetos, incluindo a série YOLO, oferecendo assim flexibilidade e garantindo o uso otimizado de recursos computacionais.
Assista: Inferência com SAHI (Slicing Aided Hyper Inference) usando Ultralytics YOLO11
Principais funcionalidades do SAHI
- Integração Contínua: O SAHI integra-se facilmente com os modelos YOLO, o que significa que pode começar a segmentar e detetar sem muita modificação de código.
- Eficiência de Recursos: Ao dividir imagens grandes em partes menores, o SAHI otimiza o uso da memória, permitindo que você execute 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 junção.
O que é Inferência Fatiada?
Inferência Fatiada refere-se à prática de subdividir uma imagem grande ou de alta resolução em segmentos menores (fatias), realizar a detecção de objetos nessas fatias e, em seguida, recompilar 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, de outra forma, poderiam 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 gama baixa.
-
Qualidade de Detecção Preservada: Como cada fatia é tratada de forma independente, 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 mais facilmente escalada em diferentes tamanhos e resoluções de imagens, tornando-a ideal para uma ampla gama de aplicações, desde imagens de satélite até diagnósticos médicos.
YOLO11 sem SAHI | YOLO11 com SAHI |
---|---|
![]() |
![]() |
Instalação e Preparação
Instalação
Para começar, instale as versões mais recentes do SAHI e da Ultralytics:
pip install -U ultralytics sahi
Importar Módulos e Baixar Recursos
Veja como importar os módulos necessários e baixar um modelo YOLO11 e algumas imagens de teste:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)
# 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 YOLO11
Instanciar o Modelo
Você pode instanciar um modelo YOLO11 para detecção de objetos desta forma:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path=model_path,
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)
Realizar Predição Padrão
Realize a inferência padrão usando um caminho de imagem ou uma imagem numpy.
from sahi.predict import get_prediction
# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
# With a numpy image
result_with_np_image = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)
Visualizar Resultados
Exporte e visualize as bounding boxes e máscaras previstas:
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
Inferência Fatiada com YOLO11
Realize a inferência em fatias, especificando as dimensões da fatia e as taxas de sobreposição:
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,
)
Lidar com Resultados de Previsão
SAHI fornece um PredictionResult
objeto, 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 previsão em lote em um diretório de imagens:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo11n.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,
)
É isso! Agora você está equipado para usar YOLO11 com SAHI para inferência padrão e em fatias.
Citações e Agradecimentos
Se você usar o SAHI em seu trabalho de pesquisa ou desenvolvimento, por favor, cite o artigo original do SAHI e reconheça os 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 nossos agradecimentos ao grupo de pesquisa SAHI por criar e manter este recurso inestimável para a comunidade de visão computacional. Para obter mais informações sobre o SAHI e seus criadores, visite o repositório SAHI no GitHub.
FAQ
Como posso integrar o YOLO11 com o SAHI para inferência em fatias na detecção de objetos?
A integração do Ultralytics YOLO11 com SAHI (Slicing Aided Hyper Inference) para inferência fatiada otimiza suas tarefas de detecção de objetos em imagens de alta resolução, particionando-as em fatias gerenciáveis. Essa abordagem melhora o uso da memória e garante alta precisão de detecção. Para começar, você precisa instalar as bibliotecas ultralytics e sahi:
pip install -U ultralytics sahi
Em seguida, baixe um modelo YOLO11 e imagens de teste:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_model(model_path)
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
Para obter instruções mais detalhadas, consulte o nosso guia de Inferência em Fatias.
Por que devo usar o SAHI com o YOLO11 para detecção de objetos em imagens grandes?
Usar SAHI com Ultralytics YOLO11 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 possível executar deteções de alta qualidade em hardware com recursos limitados.
- Precisão de Detecção Mantida: O SAHI usa algoritmos inteligentes para combinar caixas sobrepostas, preservando a qualidade da detecção.
- Escalabilidade Aprimorada: Ao dimensionar as tarefas de detecção de objetos em 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.
Saiba mais sobre os benefícios da inferência em fatias em nossa documentação.
Posso visualizar os resultados da previsão ao usar YOLO11 com SAHI?
Sim, você pode visualizar os resultados da previsão ao usar YOLO11 com SAHI. Veja como você pode exportar e visualizar os resultados:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
Este comando salvará as predições visualizadas no diretório especificado, e você poderá então carregar a imagem para visualizá-la no seu notebook ou aplicação. Para um guia detalhado, consulte a seção de Inferência Padrão.
Quais recursos o SAHI oferece para melhorar a detecção de objetos YOLO11?
SAHI (Slicing Aided Hyper Inference) oferece diversos recursos que complementam o Ultralytics YOLO11 para detecção de objetos:
- Integração Contínua: O SAHI integra-se facilmente com os modelos YOLO, exigindo ajustes mínimos no 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 combinar eficazmente as caixas de detecção sobrepostas durante o processo de junção, o SAHI mantém uma alta precisão de detecção.
Para uma compreensão mais profunda, leia sobre os recursos principais do SAHI.
Como lidar com projetos de inferência em larga escala usando YOLO11 e SAHI?
Para lidar com projetos de inferência em larga escala usando YOLO11 e SAHI, siga estas práticas recomendadas:
- Instale as Bibliotecas Necessárias: Certifique-se de ter as versões mais recentes do ultralytics e sahi.
- Configurar Inferência Fatiada: Determine as dimensões de fatia e as taxas de sobreposição ideais para o seu projeto específico.
- Executar Previsões em Lote: Use os recursos do SAHI para realizar previsões em lote em um diretório de imagens, o que melhora a eficiência.
Exemplo para previsão em lote:
from sahi.predict import predict
predict(
model_type="ultralytics",
model_path="path/to/yolo11n.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 obter passos mais detalhados, visite a nossa seção sobre Previsão em Lote.