Documentação Ultralytics: Usando YOLO26 com SAHI para Inferência Fatiada

Abrir SAHI para Inferência Fatiada no Colab

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.

SAHI tiled inference for small objects

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 SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 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 sahi

Importar 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:

Citação
@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 sahi

Em 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:

  1. Instalar Bibliotecas Necessárias: Garante que tens as versões mais recentes do ultralytics e do sahi.
  2. Configurar Inferência Fatiada: Determina as dimensões ideais das fatias e as taxas de sobreposição para o teu projeto específico.
  3. 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.

Comentários