Ir para o conteúdo

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

Abrir SAHI para Inferência em Fatias no Colab

Bem-vindo à documentação da Ultralytics sobre como usar o YOLO26 com SAHI (Slicing Aided Hyper Inference). Este guia abrangente visa fornecer-lhe todo o conhecimento essencial necessário para implementar o SAHI em conjunto com o YOLO26. Vamos aprofundar o que é o SAHI, por que a inferência fatiada é crítica para aplicações em larga escala e como integrar essas funcionalidades com o YOLO26 para um desempenho aprimorado na detecção de objetos.

Inferência SAHI para pequenos 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 YOLO26

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.

YOLO26 sem SAHIYOLO26 com SAHI
YOLO26 sem SAHIYOLO26 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 YOLO26 e algumas imagens de teste:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_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 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=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
from sahi.utils.cv import read_image

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

from IPython.display import Image

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

Inferência Fatiada com YOLO26

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/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 YOLO26 com SAHI para inferência padrão e 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:

@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 YOLO26 com SAHI para inferência fatiada na detecção de objetos?

A integração do Ultralytics YOLO26 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 YOLO26 e imagens de teste:

from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo26n_model

# Download YOLO26 model
model_path = "models/yolo26n.pt"
download_yolo26n_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 SAHI com YOLO26 para detecção de objetos em imagens grandes?

Usar SAHI com 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 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 YOLO26 com SAHI?

Sim, você pode visualizar os resultados da previsão ao usar YOLO26 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 com YOLO26?

SAHI (Slicing Aided Hyper Inference) oferece vários recursos que complementam o Ultralytics YOLO26 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 YOLO26 e SAHI?

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

  1. Instale as Bibliotecas Necessárias: Certifique-se de ter as versões mais recentes do ultralytics e sahi.
  2. Configurar Inferência Fatiada: Determine as dimensões de fatia e as taxas de sobreposição ideais para o seu projeto específico.
  3. 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/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 obter passos mais detalhados, visite a nossa seção sobre Previsão em Lote.



📅 Criado há 2 anos ✏️ Atualizado há 5 dias
glenn-jocherRizwanMunawarpderrengerCoderUniUltralyticsAssistantMatthewNoyce

Comentários