Ultralytics YOLO27:

Dilimlenmiş Çıkarım için SAHI ile YOLO26 Kullanımı#

Open SAHI for Sliced Inference In Colab

Bu kılavuz, SAHI (Slicing Aided Hyper Inference) ile YOLO26'nın nasıl kullanılacağını gösterir. SAHI'nin ne olduğunu, dilimlenmiş çıkarımın büyük ölçekli uygulamalar için neden kritik olduğunu ve gelişmiş nesne tespiti performansı için bu işlevselliklerin YOLO26 ile nasıl entegre edileceğini derinlemesine inceleyeceğiz.

SAHI'ye Giriş#

SAHI (Dilimleme Destekli Hiper Çıkarım), büyük ölçekli ve yüksek çözünürlüklü görüntüler için nesne algılama algoritmalarını optimize etmek üzere tasarlanmış yenilikçi bir kütüphanedir. Temel işlevi, görüntüleri yönetilebilir dilimlere ayırmak, her dilimde nesne algılama gerçekleştirmek ve ardından sonuçları yeniden bir araya getirmektir. SAHI, YOLO serisi de dahil olmak üzere çeşitli nesne algılama modelleriyle uyumludur; böylece hesaplama kaynaklarının en iyi şekilde kullanılmasını sağlarken esneklik sunar.



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

SAHI'nin Temel Özellikleri#

  • Sorunsuz Entegrasyon: SAHI, YOLO modelleriyle zahmetsizce entegre olur; bu da çok fazla kod değişikliği yapmadan dilimleme ve algılamaya başlayabileceğin anlamına gelir.
  • Kaynak Verimliliği: SAHI, büyük görüntüleri daha küçük parçalara bölerek bellek kullanımını optimize eder ve sınırlı kaynaklara sahip donanımlarda yüksek kaliteli algılama gerçekleştirmeni sağlar.
  • Yüksek Doğruluk: SAHI, birleştirme işlemi sırasında örtüşen algılama kutularını birleştirmek için akıllı algoritmalar kullanarak algılama doğruluğunu korur.

Dilimlenmiş Çıkarım Nedir?#

Dilimlenmiş çıkarım, büyük veya yüksek çözünürlüklü bir görüntüyü daha küçük bölümlere (dilimlere) ayırma, bu dilimler üzerinde nesne algılama gerçekleştirme ve ardından özgün görüntüdeki nesne konumlarını yeniden oluşturmak üzere dilimleri tekrar birleştirme işlemidir. Bu teknik, hesaplama kaynaklarının sınırlı olduğu veya aksi takdirde bellek sorunlarına yol açabilecek son derece yüksek çözünürlüklü görüntülerle çalışılan senaryolarda çok değerlidir.

Dilimlenmiş Çıkarımın Faydaları#

  • Azaltılmış Hesaplama Yükü: Daha küçük görüntü dilimlerinin işlenmesi daha hızlıdır ve daha az bellek tüketir; bu da daha düşük donanımlarda daha akıcı çalışmayı mümkün kılar.

  • Korunan Algılama Kalitesi: Her dilim bağımsız olarak ele alındığından, ilgi konusu nesneleri yakalayacak kadar büyük olmaları koşuluyla dilimler nesne algılama kalitesinde azalmaya neden olmaz.

  • Geliştirilmiş Ölçeklenebilirlik: Bu teknik, nesne algılamanın farklı görüntü boyutları ve çözünürlüklerinde daha kolay ölçeklendirilmesini sağlar; bu da onu uydu görüntülerinden tıbbi tanıya kadar çok çeşitli uygulamalar için ideal kılar.

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

Kurulum ve Hazırlık#

Kurulum#

Başlamak için SAHI ve Ultralytics'in en son sürümlerini yükle:

pip install -U ultralytics sahi

Modülleri İçe Aktarma ve Kaynakları İndirme#

Bazı test görüntülerini şu şekilde indirebilirsin:

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 ile Standart Çıkarım#

Modeli Örnekleme#

Nesne algılama için bir YOLO26 modelini şu şekilde örnekleyebilirsin:

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

Standart Tahmin Gerçekleştirme#

Bir görüntü yolu kullanarak standart çıkarım gerçekleştir.

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)

Sonuçları Görselleştirme#

Tahmin edilen sınırlayıcı kutuları ve maskeleri dışa aktar ve görselleştir:

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 ile Dilimlenmiş Çıkarım#

Dilim boyutlarını ve örtüşme oranlarını belirterek dilimlenmiş çıkarım gerçekleştir:

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

Tahmin Sonuçlarını İşleme#

SAHI, çeşitli açıklama biçimlerine dönüştürülebilen bir PredictionResult nesnesi sağlar:

# 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]
Ek dışa aktarma biçimleri

PredictionResult, algılamaları result.to_imantics_annotations() ve result.to_fiftyone_detections() ile imantics ve FiftyOne nesnelerine de dönüştürebilir. Bu yöntemler ilgili paketleri gerektirir; bu nedenle önce bunları pip install imantics fiftyone ile yükle.

Toplu Tahmin#

Bir görüntü dizininde toplu tahmin gerçekleştirmek için:

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

Artık hem standart hem de dilimlenmiş çıkarım için YOLO26'yı SAHI ile kullanmaya hazırsın.

Atıflar ve Teşekkürler#

SAHI'yi araştırma veya geliştirme çalışmalarında kullanıyorsan lütfen özgün SAHI makalesine atıf yap ve yazarları belirt:

Alıntı
@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}
}

bilgisayarlı görü topluluğu için bu paha biçilmez kaynağı oluşturup sürdürdüğü için SAHI araştırma grubuna teşekkürlerimizi sunarız. SAHI ve geliştiricileri hakkında daha fazla bilgi için SAHI GitHub deposunu ziyaret et.

SSS#

  • Ultralytics YOLO26'yı dilimlenmiş çıkarım için SAHI (Dilimleme Destekli Hiper Çıkarım) ile entegre etmek, yüksek çözünürlüklü görüntüleri yönetilebilir dilimlere ayırarak nesne algılama görevlerini optimize eder. Bu yaklaşım bellek kullanımını iyileştirir ve yüksek algılama doğruluğu sağlar. Başlamak için ultralytics ve sahi kütüphanelerini yüklemen gerekir:

    pip install -U ultralytics sahi

    Ardından test görüntülerini indir:

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

    Daha ayrıntılı talimatlar için Dilimlenmiş Çıkarım kılavuzumuza başvur.

  • Büyük görüntülerde nesne algılama için SAHI'yi Ultralytics YOLO26 ile kullanmak çeşitli faydalar sunar:

    • Azaltılmış Hesaplama Yükü: Daha küçük dilimlerin işlenmesi daha hızlıdır ve daha az bellek tüketir; bu da sınırlı kaynaklara sahip donanımlarda yüksek kaliteli algılamalar gerçekleştirmeyi mümkün kılar.
    • Korunan Algılama Doğruluğu: SAHI, örtüşen kutuları birleştirmek için akıllı algoritmalar kullanarak algılama kalitesini korur.
    • Geliştirilmiş Ölçeklenebilirlik: SAHI, nesne algılama görevlerini farklı görüntü boyutları ve çözünürlüklerinde ölçeklendirerek uydu görüntüsü analizi ve tıbbi tanı gibi çeşitli uygulamalar için ideal hale gelir.

    Belgelerimizde dilimlenmiş çıkarımın faydaları hakkında daha fazla bilgi edin.

  • Evet, YOLO26'yı SAHI ile kullanırken tahmin sonuçlarını görselleştirebilirsin. Sonuçları şu şekilde dışa aktarabilir ve görselleştirebilirsin:

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

    Bu komut, görselleştirilmiş tahminleri belirtilen dizine kaydeder; ardından görüntüyü yükleyerek not defterinde veya uygulamanda görüntüleyebilirsin. Ayrıntılı bir kılavuz için Standart Çıkarım bölümüne göz at.

  • SAHI (Dilimleme Destekli Hiper Çıkarım), nesne algılama için Ultralytics YOLO26'yı tamamlayan çeşitli özellikler sunar:

    • Sorunsuz Entegrasyon: SAHI, YOLO modelleriyle kolayca entegre olur ve minimum düzeyde kod değişikliği gerektirir.
    • Kaynak Verimliliği: Büyük görüntüleri daha küçük dilimlere ayırarak bellek kullanımını ve hızı optimize eder.
    • Yüksek Doğruluk: SAHI, birleştirme işlemi sırasında örtüşen algılama kutularını etkili bir şekilde birleştirerek yüksek algılama doğruluğunu korur.

    Daha derinlemesine bilgi edinmek için SAHI'nin temel özelliklerini oku.

  • YOLO26 ve SAHI kullanarak büyük ölçekli çıkarım projelerini yönetmek için şu en iyi uygulamaları izle:

    1. Gerekli Kütüphaneleri Yükle: ultralytics ve sahi'nin en son sürümlerine sahip olduğundan emin ol.
    2. Dilimlenmiş Çıkarımı Yapılandır: Projene özel en uygun dilim boyutlarını ve örtüşme oranlarını belirle.
    3. Toplu Tahminler Gerçekleştir: Verimliliği artırmak için bir görüntü dizininde toplu tahminler gerçekleştirmek üzere SAHI'nin özelliklerini kullan.

    Toplu tahmin örneği:

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

    Daha ayrıntılı adımlar için Toplu Tahmin bölümümüzü ziyaret et.

Yorumlar