İçeriğe geç

Ultralytics Dokümanlar: Dilimlenmiş Çıkarım için YOLOv8 adresini SAHI ile kullanma

YOLOv8 'un SAHI (Slicing Aided Hyper Inference) ile nasıl kullanılacağına ilişkin Ultralytics belgelerine hoş geldiniz. Bu kapsamlı kılavuz, YOLOv8 ile birlikte SAHI'yi uygulamak için ihtiyaç duyacağınız tüm temel bilgileri size sağlamayı amaçlamaktadır. SAHI'nin ne olduğu, dilimli çıkarımın büyük ölçekli uygulamalar için neden kritik olduğu ve gelişmiş nesne algılama performansı için bu işlevlerin YOLOv8 ile nasıl entegre edileceği konularını derinlemesine inceleyeceğiz.

SAHI Dilimli Çıkarsamaya Genel Bakış

SAHI'ye Giriş

SAHI (Slicing Aided Hyper Inference), 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 çalıştırmak ve ardından sonuçları bir araya getirmektir. SAHI, YOLO serisi de dahil olmak üzere bir dizi nesne algılama modeliyle uyumludur, böylece hesaplama kaynaklarının optimize edilmiş kullanımını sağlarken esneklik sunar.

SAHI'nin Temel Özellikleri

  • Sorunsuz Entegrasyon: SAHI, YOLO modelleriyle zahmetsizce entegre olur, yani çok fazla kod değişikliği yapmadan dilimlemeye ve algılamaya başlayabilirsiniz.
  • Kaynak Verimliliği: SAHI, büyük görüntüleri daha küçük parçalara ayırarak bellek kullanımını optimize eder ve sınırlı kaynaklara sahip donanımlarda yüksek kaliteli algılama yapmanızı sağlar.
  • Yüksek Doğruluk: SAHI, birleştirme işlemi sırasında çakışan algılama kutularını birleştirmek için akıllı algoritmalar kullanarak algılama doğruluğunu korur.

Dilimlenmiş Çıkarım Nedir?

Dilim Çıkarım, büyük veya yüksek çözünürlüklü bir görüntünün daha küçük parçalara (dilimlere) bölünmesi, bu dilimler üzerinde nesne tespiti yapılması ve ardından orijinal görüntü üzerindeki nesne konumlarının yeniden yapılandırılması için dilimlerin yeniden derlenmesi uygulamasını ifade eder. Bu teknik, hesaplama kaynaklarının sınırlı olduğu senaryolarda veya aksi takdirde bellek sorunlarına yol açabilecek aşırı yüksek çözünürlüklü görüntülerle çalışırken ç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üketerek düşük kaliteli donanımlarda daha sorunsuz çalışmayı sağlar.

  • Korunmuş Algılama Kalitesi: Her dilim bağımsız olarak ele alındığından, dilimlerin ilgilenilen nesneleri yakalayacak kadar büyük olması koşuluyla nesne algılama kalitesinde herhangi bir azalma olmaz.

  • Geliştirilmiş Ölçeklenebilirlik: Bu teknik, nesne tespitinin farklı boyut ve çözünürlükteki görüntülerde daha kolay ölçeklendirilmesini sağlayarak uydu görüntülerinden tıbbi teşhislere kadar geniş bir uygulama yelpazesi için idealdir.

YOLOv8 SAHI olmadan YOLOv8 SAHI ile
YOLOv8 SAHI olmadan YOLOv8 SAHI ile

Kurulum ve Hazırlık

Kurulum

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

pip install -U ultralytics sahi

Modülleri İçe Aktarın ve Kaynakları İndirin

Gerekli modüllerin nasıl içe aktarılacağı ve bir YOLOv8 modelinin ve bazı test görüntülerinin nasıl indirileceği aşağıda açıklanmıştır:

from sahi.utils.yolov8 import download_yolov8s_model
from sahi import AutoDetectionModel
from sahi.utils.cv import read_image
from sahi.utils.file import download_from_url
from sahi.predict import get_prediction, get_sliced_prediction, predict
from pathlib import Path
from IPython.display import Image

# Download YOLOv8 model
yolov8_model_path = "models/yolov8s.pt"
download_yolov8s_model(yolov8_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')

Standart Çıkarım ile YOLOv8

Modeli Instantiate Etme

Nesne algılama için bir YOLOv8 modelini şu şekilde örnekleyebilirsiniz:

detection_model = AutoDetectionModel.from_pretrained(
    model_type='yolov8',
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Standart Tahmin Gerçekleştirin

Bir görüntü yolu veya bir numpy görüntüsü kullanarak standart çıkarım gerçekleştirin.

# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

Sonuçları Görselleştirin

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

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

Dilimlenmiş Çıkarım ile YOLOv8

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

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
)

Tahmin Sonuçlarının İşlenmesi

SAHI şunları sağlar PredictionResult nesnesine dönüştürülebilir ve bu nesne çeşitli açıklama biçimlerine dönüştürülebilir:

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

Toplu Tahmin

Bir görüntü dizini üzerinde toplu tahmin için:

predict(
    model_type="yolov8",
    model_path="path/to/yolov8n.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,
)

İşte bu kadar! Artık hem standart hem de dilimli çıkarım için YOLOv8 adresini SAHI ile birlikte kullanabilecek donanıma sahipsiniz.

Atıflar ve Teşekkür

Araştırma veya geliştirme çalışmalarınızda SAHI'yi kullanırsanız, lütfen orijinal SAHI makalesine atıfta bulunun ve yazarlara teşekkür edin:

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

Bilgisayarla görme topluluğu için bu paha biçilmez kaynağı yaratan ve sürdüren SAHI araştırma grubuna teşekkürlerimizi sunarız. SAHI ve yaratıcıları hakkında daha fazla bilgi için SAHI GitHub deposunu ziyaret edin.



Oluşturma 2023-11-12, Güncelleme 2023-11-22
Yazarlar: glenn-jocher (3)

Yorumlar