Ultralytics YOLO27:

분할 추론을 위해 SAHI와 함께 YOLO26 사용하기#

Open SAHI for Sliced Inference In Colab

이 가이드에서는 SAHI(Slicing Aided Hyper Inference)와 함께 YOLO26을 사용하는 방법을 설명합니다. SAHI가 무엇인지, 대규모 애플리케이션에서 분할 추론이 왜 중요한지, 그리고 향상된 객체 감지 성능을 위해 이러한 기능을 YOLO26과 통합하는 방법을 자세히 알아봅니다.

SAHI 소개#

SAHI(슬라이싱 지원 하이퍼 추론)는 대규모 및 고해상도 이미지에 대한 객체 감지 알고리즘을 최적화하도록 설계된 혁신적인 라이브러리입니다. 핵심 기능은 이미지를 처리하기 쉬운 슬라이스로 나누고, 각 슬라이스에서 객체 감지를 수행한 다음, 결과를 다시 하나로 결합하는 것입니다. SAHI는 YOLO 시리즈를 비롯한 다양한 객체 감지 모델과 호환되므로 유연성을 제공하는 동시에 컴퓨팅 리소스를 최적으로 사용할 수 있도록 합니다.



Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀

SAHI의 주요 기능#

  • 원활한 통합: SAHI는 YOLO 모델과 손쉽게 통합되므로 코드를 크게 수정하지 않고도 슬라이싱과 감지를 시작할 수 있습니다.
  • 리소스 효율성: SAHI는 큰 이미지를 더 작은 부분으로 나누어 메모리 사용량을 최적화하므로, 제한된 리소스의 하드웨어에서도 고품질 감지를 수행할 수 있습니다.
  • 높은 정확도: SAHI는 결합 과정에서 겹치는 감지 박스를 병합하는 지능형 알고리즘을 사용하여 감지 정확도를 유지합니다.

슬라이스 추론이란 무엇인가요?#

슬라이스 추론은 크기가 크거나 고해상도인 이미지를 더 작은 세그먼트(슬라이스)로 나누고, 이러한 슬라이스에서 객체 감지를 수행한 다음, 슬라이스를 다시 결합하여 원본 이미지에서 객체의 위치를 재구성하는 방법입니다. 이 기법은 컴퓨팅 리소스가 제한된 경우나 매우 고해상도인 이미지로 작업하여 메모리 문제가 발생할 수 있는 경우에 매우 유용합니다.

슬라이스 추론의 이점#

  • 컴퓨팅 부담 감소: 더 작은 이미지 슬라이스는 더 빠르게 처리되고 메모리를 적게 사용하므로, 저사양 하드웨어에서도 더욱 원활하게 작동할 수 있습니다.

  • 감지 품질 유지: 각 슬라이스를 독립적으로 처리하므로, 관심 객체를 포착할 수 있을 만큼 슬라이스가 충분히 크다면 객체 감지 품질이 저하되지 않습니다.

  • 확장성 향상: 이 기법을 사용하면 다양한 크기와 해상도의 이미지에서 객체 감지를 더욱 쉽게 확장할 수 있으므로, 위성 이미지부터 의료 진단까지 폭넓은 애플리케이션에 적합합니다.

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

설치 및 준비#

설치#

시작하려면 SAHI와 Ultralytics의 최신 버전을 설치합니다:

pip install -U ultralytics sahi

모듈 가져오기 및 리소스 다운로드#

다음은 테스트 이미지를 다운로드하는 방법입니다:

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

YOLO26을 사용한 표준 추론#

모델 인스턴스화#

다음과 같이 객체 감지를 위한 YOLO26 모델을 인스턴스화할 수 있습니다:

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

표준 예측 수행#

이미지 경로를 사용하여 표준 추론을 수행합니다.

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)

결과 시각화#

예측된 바운딩 박스와 마스크를 내보내고 시각화합니다:

from PIL import Image

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

YOLO26을 사용한 슬라이스 추론#

슬라이스 크기와 오버랩 비율을 지정하여 슬라이스 추론을 수행합니다:

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

예측 결과 처리#

SAHI는 PredictionResult 객체를 제공하며, 이를 다양한 어노테이션 형식으로 변환할 수 있습니다:

# 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]
추가 내보내기 형식

PredictionResultresult.to_imantics_annotations()result.to_fiftyone_detections()를 사용하여 감지 결과를 imanticsFiftyOne 객체로 변환할 수도 있습니다. 이러한 메서드를 사용하려면 해당 패키지가 필요하므로 먼저 pip install imantics fiftyone로 설치합니다.

배치 예측#

이미지 디렉터리에서 배치 예측을 수행하려면 다음과 같이 합니다:

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

이제 SAHI와 함께 YOLO26을 사용하여 표준 추론과 슬라이스 추론을 모두 수행할 수 있습니다.

인용 및 감사의 글#

연구 또는 개발 작업에서 SAHI를 사용하는 경우, 원본 SAHI 논문을 인용하고 저자들을 밝혀 주시기 바랍니다:

인용문
@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}
}

컴퓨터 비전(computer vision) 커뮤니티를 위한 이 귀중한 리소스를 만들고 유지 관리해 주신 SAHI 연구 그룹에 감사드립니다. SAHI와 제작자에 대한 자세한 내용은 SAHI GitHub 저장소를 참조하세요.

FAQ#

  • 슬라이스 추론을 위해 Ultralytics YOLO26을 SAHI(슬라이싱 지원 하이퍼 추론)와 통합하면 고해상도 이미지를 처리하기 쉬운 슬라이스로 나누어 객체 감지 작업을 최적화할 수 있습니다. 이 접근 방식은 메모리 사용량을 개선하고 높은 감지 정확도를 보장합니다. 시작하려면 ultralytics 및 sahi 라이브러리를 설치해야 합니다:

    pip install -U ultralytics sahi

    그런 다음 테스트 이미지를 다운로드합니다:

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

    더 자세한 지침은 슬라이스 추론 가이드를 참조하세요.

  • 큰 이미지에서 객체 감지를 위해 Ultralytics YOLO26과 함께 SAHI를 사용하면 다음과 같은 이점이 있습니다:

    • 컴퓨팅 부담 감소: 더 작은 슬라이스는 더 빠르게 처리되고 메모리를 적게 사용하므로, 제한된 리소스의 하드웨어에서도 고품질 감지를 수행할 수 있습니다.
    • 감지 정확도 유지: SAHI는 지능형 알고리즘을 사용하여 겹치는 박스를 병합하고 감지 품질을 유지합니다.
    • 확장성 향상: 다양한 이미지 크기와 해상도에 걸쳐 객체 감지 작업을 확장할 수 있으므로, SAHI는 위성 이미지 분석 및 의료 진단과 같은 다양한 애플리케이션에 적합합니다.

    문서에서 슬라이스 추론의 이점에 대해 자세히 알아보세요.

  • 예. YOLO26과 SAHI를 사용할 때 예측 결과를 시각화할 수 있습니다. 결과를 내보내고 시각화하는 방법은 다음과 같습니다:

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

    이 명령은 시각화된 예측 결과를 지정된 디렉터리에 저장하며, 그런 다음 이미지를 로드하여 노트북이나 애플리케이션에서 확인할 수 있습니다. 자세한 가이드는 표준 추론 섹션을 참조하세요.

  • SAHI(슬라이싱 지원 하이퍼 추론)는 객체 감지를 위해 Ultralytics YOLO26을 보완하는 다음과 같은 여러 기능을 제공합니다:

    • 원활한 통합: SAHI는 YOLO 모델과 쉽게 통합되며 코드 수정이 최소화됩니다.
    • 리소스 효율성: 큰 이미지를 더 작은 슬라이스로 나누어 메모리 사용량과 처리 속도를 최적화합니다.
    • 높은 정확도: SAHI는 결합 과정에서 겹치는 감지 박스를 효과적으로 병합하여 높은 감지 정확도를 유지합니다.

    더 깊이 이해하려면 SAHI의 주요 기능에 대해 읽어보세요.

  • YOLO26과 SAHI를 사용하여 대규모 추론 프로젝트를 처리하려면 다음 모범 사례를 따르세요:

    1. 필수 라이브러리 설치: ultralytics 및 sahi의 최신 버전이 설치되어 있는지 확인합니다.
    2. 슬라이스 추론 구성: 프로젝트에 맞는 최적의 슬라이스 크기와 오버랩 비율을 결정합니다.
    3. 배치 예측 실행: SAHI의 기능을 사용하여 이미지 디렉터리에서 배치 예측을 수행하면 효율성을 높일 수 있습니다.

    배치 예측 예시:

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

    더 자세한 단계는 배치 예측 섹션을 참조하세요.

댓글