YOLO Vision 2026:

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

Abrir SAHI para Inferência Fatiada no Colab

Bem-vindo à documentação do Ultralytics sobre como usar o YOLO26 com o SAHI (Slicing Aided Hyper Inference). Este guia abrangente tem como objetivo fornecer todo o conhecimento essencial que precisas para implementar o SAHI em conjunto com o YOLO26. Vamos aprofundar o que é o SAHI, porque é que a inferência fatiada é crítica para aplicações de grande escala e como integrar estas 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 alta resolução e em larga escala. 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. 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 Contínua: O SAHI integra-se facilmente aos modelos YOLO, o que significa que você pode 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 que você execute detecções de alta qualidade em hardware com recursos limitados.
  • Alta Precisão: O SAHI mantém a precisão da detecção ao empregar algoritmos inteligentes para unir caixas de detecção sobrepostas durante o processo de costura.

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. Essa técnica é inestimável em cenários onde os recursos computacionais são limitados ou ao trabalhar com imagens de altíssima resolução que 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 fluida em hardwares de entrada.

  • 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 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.

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

Instanciar o Modelo#

Você pode instanciar um modelo YOLO26 para detecção de objetos assim:

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#

Realize 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#

Exporte e visualize 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 o YOLO26#

Realize 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()

Manipulando 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 and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Formatos de exportação adicionais

PredictionResult também pode converter detecções em objetos imantics e FiftyOne com result.to_imantics_annotations() e result.to_fiftyone_detections(). Estes métodos exigem os respetivos pacotes, por isso instala-os primeiro com pip install imantics fiftyone.

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

Você está agora pronto para usar o YOLO26 com o SAHI para inferência tanto padrão quanto fatiada.

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:

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}
}

Agradecemos ao grupo de investigação 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.

FAQ#

  • Integrar o YOLO26 da Ultralytics ao 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 as 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.

  • Usar o SAHI com o YOLO26 da Ultralytics 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 executar 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.

  • Sim, você pode visualizar os resultados da predição ao usar o YOLO26 com o SAHI. Veja como você pode 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 guardará as previsões visualizadas no diretório especificado e podes carregar a imagem para a ver no teu notebook ou aplicação. Para um guia detalhado, consulta a secção de Inferência Padrão.

  • O SAHI (Slicing Aided Hyper Inference) oferece vários recursos que complementam o YOLO26 da Ultralytics para detecção de objetos:

    • Integração Contínua: O SAHI integra-se facilmente aos modelos YOLO, exigindo ajustes mínimos de código.
    • Eficiência de Recursos: Ele particiona imagens grandes em fatias menores, o que otimiza o uso da memória e a velocidade.
    • Alta Precisão: Ao mesclar efetivamente caixas de detecção sobrepostas durante o processo de união, o SAHI mantém alta precisão de detecção.

    Para uma compreensão mais profunda, lê sobre as principais funcionalidades do SAHI.

  • Para lidar com projetos de inferência em larga escala usando o YOLO26 e o SAHI, siga estas melhores práticas:

    1. Instale as Bibliotecas Necessárias: Garanta que você tenha as versões mais recentes do ultralytics e do sahi.
    2. Configure a Inferência Fatiada: Determine as dimensões das fatias e as taxas de sobreposição ideais para o seu projeto específico.
    3. Execute Predições em Lote: Use os recursos do SAHI para realizar predições em lote em um 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 secção sobre Previsão em Lote.

Comentários