İç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.



İzle: SAHI (Dilimleme Destekli Hiper Çıkarım) kullanarak çıkarım Ultralytics YOLOv8

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.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

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

from sahi import AutoDetectionModel

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.

from sahi.predict import get_prediction

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

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

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:

from sahi.predict import predict

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.

SSS

Nesne tespitinde dilimli çıkarım için YOLOv8 adresini SAHI ile nasıl entegre edebilirim?

Dilimli çıkarım için Ultralytics YOLOv8 adresinin SAHI (Dilimleme Destekli Hiper Çıkarım) ile entegre edilmesi, yüksek çözünürlüklü görüntülerdeki nesne algılama görevlerinizi yönetilebilir dilimlere bölerek 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üklemeniz gerekir:

pip install -U ultralytics sahi

Ardından, bir YOLOv8 modeli ve test görüntüleri indirin:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

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

Daha ayrıntılı talimatlar için Dilimli Çıkarım kılavuzumuza bakın.

Büyük görüntülerde nesne algılama için neden YOLOv8 ile SAHI kullanmalıyım?

Büyük görüntülerde nesne tespiti için SAHI'yi Ultralytics YOLOv8 ile birlikte kullanmak çeşitli avantajlar 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 tespitlerin çalıştırılmasını mümkün kılar.
  • Korunan Algılama Doğruluğu: SAHI, algılama kalitesini koruyarak örtüşen kutuları birleştirmek için akıllı algoritmalar kullanır.
  • Geliştirilmiş Ölçeklenebilirlik: SAHI, nesne algılama görevlerini farklı görüntü boyutları ve çözünürlükleri arasında ölçeklendirerek uydu görüntüleri analizi ve tıbbi teşhis gibi çeşitli uygulamalar için ideal hale gelir.

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

SAHI ile YOLOv8 adresini kullanırken tahmin sonuçlarını görselleştirebilir miyim?

Evet, YOLOv8 adresini SAHI ile kullanırken tahmin sonuçlarını görselleştirebilirsiniz. Sonuçları nasıl dışa aktarabileceğiniz ve görselleştirebileceğiniz aşağıda açıklanmıştır:

result.export_visuals(export_dir="demo_data/")
from IPython.display import Image

Image("demo_data/prediction_visual.png")

Bu komut görselleştirilmiş tahminleri belirtilen dizine kaydeder ve daha sonra not defterinizde veya uygulamanızda görüntülemek için görüntüyü yükleyebilirsiniz. Ayrıntılı bir kılavuz için Standart Çıkarım bölümüne göz atın.

SAHI, YOLOv8 nesne tespitini iyileştirmek için hangi özellikleri sunuyor?

SAHI (Dilimleme Destekli Hiper Çıkarım), nesne tespiti için Ultralytics YOLOv8 adresini tamamlayan çeşitli özellikler sunar:

  • Sorunsuz Entegrasyon: SAHI, YOLO modelleriyle kolayca entegre olur ve minimum kod ayarlaması gerektirir.
  • Kaynak Verimliliği: Büyük görüntüleri daha küçük dilimlere bölerek 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 derin bir anlayış için SAHI'nin temel özellikleri hakkında bilgi edinin.

YOLOv8 ve SAHI kullanarak büyük ölçekli çıkarım projelerini nasıl ele alabilirim?

YOLOv8 ve SAHI kullanarak büyük ölçekli çıkarım projelerinin üstesinden gelmek için aşağıdaki en iyi uygulamaları izleyin:

  1. Gerekli Kütüphaneleri Yükleyin: ultralytics ve sahi'nin en son sürümlerine sahip olduğunuzdan emin olun.
  2. Dilimli Çıkarsamayı Yapılandırma: Özel projeniz için en uygun dilim boyutlarını ve örtüşme oranlarını belirleyin.
  3. Toplu Tahminler Çalıştırın: Verimliliği artıran bir görüntü dizini üzerinde toplu tahminler gerçekleştirmek için SAHI'nin yeteneklerini kullanın.

Toplu tahmin için örnek:

from sahi.predict import predict

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

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



Oluşturma 2023-11-12, Güncelleme 2024-07-05
Yazarlar: glenn-jocher (7), RizwanMunawar (1)

Yorumlar