Ultralytics Documentos: Usando YOLO11 com SAHI para inferência fatiada
Welcome to the Ultralytics documentation on how to use YOLO11 with SAHI (Slicing Aided Hyper Inference). This comprehensive guide aims to furnish you with all the essential knowledge you'll need to implement SAHI alongside YOLO11. We'll deep-dive into what SAHI is, why sliced inference is critical for large-scale applications, and how to integrate these functionalities with YOLO11 for enhanced object detection performance.
Introdução à SAHI
SAHI (Slicing Aided Hyper Inference) é uma biblioteca inovadora concebida para otimizar os algoritmos de deteção de objectos para imagens de grande escala e de alta resolução. A sua principal funcionalidade consiste em dividir as imagens em fatias geríveis, executar a deteção de objectos em cada fatia e depois juntar os resultados. O SAHI é compatível com uma série de modelos de deteção de objectos, incluindo a série YOLO , oferecendo assim flexibilidade e assegurando uma utilização optimizada dos recursos computacionais.
Observa: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO11
Principais características do SAHI
- Integração perfeita: O SAHI integra-se sem esforço nos modelos YOLO , o que significa que podes começar a cortar e a detetar sem muitas modificações no código.
- Eficiência de recursos: Ao dividir imagens grandes em partes mais pequenas, o SAHI optimiza a utilização da memória, permitindo-te executar uma deteção de alta qualidade em hardware com recursos limitados.
- High Accuracy: SAHI maintains the detection accuracy by employing smart algorithms to merge overlapping detection boxes during the stitching process.
O que é a Inferência em Fragmentos?
A inferência em fatias refere-se à prática de subdividir uma imagem grande ou de alta resolução em segmentos mais pequenos (fatias), efetuar a deteção de objectos nestas fatias e, em seguida, recompilar as fatias para reconstruir as localizações dos objectos na imagem original. Esta técnica é inestimável em cenários em que os recursos computacionais são limitados ou quando se trabalha com imagens de resolução extremamente elevada que, de outra forma, poderiam levar a problemas de memória.
Vantagens da inferência fragmentada
Reduz a carga computacional: As fatias de imagem mais pequenas são mais rápidas de processar e consomem menos memória, permitindo um funcionamento mais suave em hardware de gama baixa.
Qualidade de deteção preservada: Uma vez que cada corte é tratado de forma independente, não há redução na qualidade da deteção de objectos, desde que os cortes sejam suficientemente grandes para capturar os objectos de interesse.
Escalabilidade melhorada: A técnica permite que a deteção de objectos seja mais facilmente dimensionada em diferentes tamanhos e resoluções de imagens, tornando-a ideal para uma vasta gama de aplicações, desde imagens de satélite a diagnósticos médicos.
YOLO11 without SAHI | YOLO11 with SAHI |
---|---|
Instalação e preparação
Instalação
Para começar, instala as versões mais recentes do SAHI e Ultralytics:
Importar módulos e transferir recursos
Vê aqui como importar os módulos necessários e descarregar um modelo YOLO11 e algumas imagens de teste:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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
Podes instanciar um modelo YOLO11 para a deteção de objectos desta forma:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="yolov8",
model_path=yolov8_model_path,
confidence_threshold=0.3,
device="cpu", # or 'cuda:0'
)
Executa a previsão standard
Executa a inferência padrão utilizando 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 = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)
Visualiza os resultados
Exporta e visualiza as caixas delimitadoras e máscaras previstas:
Inferência fragmentada com YOLO11
Executa a inferência fatiada especificando as dimensões das fatias e os rácios 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,
)
Tratamento de resultados de previsão
A SAHI fornece um 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]
Previsão de lotes
Para previsão em lote num diretório de imagens:
from sahi.predict import predict
predict(
model_type="yolov8",
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,
)
E pronto! Agora estás equipado para usar o YOLO11 com o SAHI para inferência padrão e fatiada.
Citações e agradecimentos
Se utilizares o SAHI no teu trabalho de investigação ou desenvolvimento, por favor cita o artigo original do SAHI e reconhece 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}
}
We extend our thanks to the SAHI research group for creating and maintaining this invaluable resource for the computer vision community. For more information about SAHI and its creators, visit the SAHI GitHub repository.
FAQ
Como é que posso integrar o YOLO11 com o SAHI para a inferência fatiada na deteção de objectos?
A integração do Ultralytics YOLO11 com o SAHI (Slicing Aided Hyper Inference) para inferência fatiada optimiza as suas tarefas de deteção de objectos em imagens de alta resolução, dividindo-as em fatias geríveis. Esta abordagem melhora a utilização da memória e garante uma elevada precisão de deteção. Para começar, tens de instalar as bibliotecas ultralytics e sahi:
Em seguida, transfere um modelo YOLO11 e testa as imagens:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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, consulta o nosso guia Sliced Inference.
Por que razão devo utilizar o SAHI com o YOLO11 para a deteção de objectos em imagens de grandes dimensões?
A utilização do SAHI com Ultralytics YOLO11 para a deteção de objectos em imagens de grandes dimensões oferece várias vantagens:
- Reduz a carga computacional: As fatias mais pequenas 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.
- Mantém a precisão da deteção: O SAHI utiliza algoritmos inteligentes para fundir caixas sobrepostas, preservando a qualidade da deteção.
- Escalabilidade melhorada: Ao escalar as tarefas de deteção de objectos em diferentes tamanhos e resoluções de imagem, o SAHI torna-se ideal para várias aplicações, como a análise de imagens de satélite e diagnósticos médicos.
Sabe mais sobre as vantagens da inferência cortada na nossa documentação.
Posso visualizar os resultados da previsão quando utilizo o YOLO11 com o SAHI?
Sim, podes visualizar os resultados da previsão quando utilizas o YOLO11 com o SAHI. Vê aqui como podes 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 guarda as previsões visualizadas no diretório especificado e pode depois carregar a imagem para a visualizar no seu bloco de notas ou aplicação. Para obter um guia detalhado, consulta a secção Inferência padrão.
Que funcionalidades oferece o SAHI para melhorar a deteção de objectos do YOLO11?
O SAHI (Slicing Aided Hyper Inference) oferece várias funcionalidades que complementam o Ultralytics YOLO11 para a deteção de objectos:
- Integração perfeita: O SAHI integra-se facilmente com os modelos YOLO , exigindo ajustes mínimos no código.
- Eficiência de recursos: Divide imagens grandes em fatias mais pequenas, o que optimiza a utilização da memória e a velocidade.
- Elevada precisão: Ao fundir eficazmente as caixas de deteção sobrepostas durante o processo de costura, o SAHI mantém uma elevada precisão de deteção.
Para uma compreensão mais aprofundada, lê sobre as principais características do SAHI.
Como posso lidar com projectos de inferência em grande escala utilizando o YOLO11 e o SAHI?
Para lidar com projectos de inferência em grande escala utilizando o YOLO11 e o SAHI, segue estas boas práticas:
- Instala as bibliotecas necessárias: Certifica-te de que tens as versões mais recentes de ultralytics e sahi.
- Configura a inferência fatiada: Determina as dimensões ideais das fatias e os rácios de sobreposição para o teu projeto específico.
- Executa previsões em lote: Utiliza as capacidades do SAHI para realizar previsões em lote num diretório de imagens, o que melhora a eficiência.
Exemplo de previsão de lotes:
from sahi.predict import predict
predict(
model_type="yolov8",
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 obteres passos mais detalhados, visita a nossa secção sobre Previsão de lotes.