Saltar para o conteúdo

Ultralytics Docs: Usando YOLO11 com SAHI para inferência fatiada

Bem-vindo à documentação Ultralytics sobre como utilizar YOLO11 com SAHI (Slicing Aided Hyper Inference). Este guia abrangente tem como objetivo fornecer-lhe todos os conhecimentos essenciais necessários para implementar o SAHI juntamente com YOLO11. Iremos aprofundar o que é a SAHI, porque é que a inferência fatiada é fundamental para aplicações de grande escala e como integrar estas funcionalidades com YOLO11 para melhorar o desempenho da deteção de objectos.

SAHI Sliced Inference Overview (Visão geral da inferência fatiada SAHI)

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.



Ver: Inferência com SAHI (Slicing Aided Hyper Inference) utilizando Ultralytics YOLO11

Principais caraterísticas do SAHI

  • Integração perfeita: O SAHI integra-se sem esforço nos modelos YOLO , o que significa que pode 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-lhe executar uma deteção de alta qualidade em hardware com recursos limitados.
  • Elevada precisão: O SAHI mantém a precisão da deteção através da utilização de algoritmos inteligentes para fundir caixas de deteção sobrepostas durante o processo de costura.

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

  • Redução da 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 sem SAHI YOLO11 com SAHI
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 Ultralytics:

pip install -U ultralytics sahi

Importar módulos e descarregar recursos

Eis 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

É possível instanciar um modelo YOLO11 para a deteção de objectos da seguinte 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'
)

Executar previsão standard

Efetuar 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)

Visualizar resultados

Exporte e visualize as caixas delimitadoras e máscaras previstas:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Inferência fragmentada com YOLO11

Efectue 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 dos resultados da 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,
)

É isso mesmo! Agora está equipado para usar YOLO11 com SAHI para inferência padrão e fatiada.

Citações e agradecimentos

Se utilizar o SAHI no seu trabalho de investigação ou desenvolvimento, cite o documento 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 os nossos agradecimentos ao grupo de investigação 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, visite o repositório SAHI GitHub.

FAQ

Como 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, é necessário instalar as bibliotecas ultralytics e sahi:

pip install -U ultralytics sahi

Em seguida, descarregue um modelo YOLO11 e teste 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, consulte o nosso guia Sliced Inference.

Por que razão devo utilizar o SAHI com 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:

  • Redução da 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.
  • Manutenção da precisão da deteção: O SAHI utiliza algoritmos inteligentes para fundir caixas sobrepostas, preservando a qualidade da deteção.
  • Escalabilidade melhorada: Ao escalonar 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.

Saiba mais sobre as vantagens da inferência cortada na nossa documentação.

Posso visualizar os resultados da previsão quando utilizo YOLO11 com o SAHI?

Sim, é possível visualizar os resultados da previsão ao utilizar YOLO11 com o SAHI. Eis como 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 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, consulte a secção Inferência padrão.

Que funcionalidades oferece o SAHI para melhorar a deteção de objectos em YOLO11 ?

SAHI (Slicing Aided Hyper Inference) oferece várias funcionalidades que complementam 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, leia sobre as principais caraterísticas do SAHI.

Como posso lidar com projectos de inferência em grande escala utilizando YOLO11 e SAHI?

Para lidar com projectos de inferência em grande escala utilizando YOLO11 e SAHI, siga estas práticas recomendadas:

  1. Instalar as bibliotecas necessárias: Certifique-se de que tem as versões mais recentes de ultralytics e sahi.
  2. Configurar a inferência fatiada: Determine as dimensões ideais das fatias e os rácios de sobreposição para o seu projeto específico.
  3. Executar previsões em lote: Utilize as capacidades do SAHI para efetuar 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 obter passos mais detalhados, visite a nossa secção sobre Previsão de lotes.

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários