Ultralytics Docs: Using YOLO11 with SAHI for Sliced Inference
Welcome to the Ultralytics documentation on how to use YOLO11 with SAHI (Slicing Aided Hyper Inference). This comprehensive guide aims to furnish you with all the essential knowledge you'll need to implement SAHI alongside YOLO11. We'll deep-dive into what SAHI is, why sliced inference is critical for large-scale applications, and how to integrate these functionalities with YOLO11 for enhanced object detection performance.
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: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO11
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.
- High Accuracy: SAHI maintains the detection accuracy by employing smart algorithms to merge overlapping detection boxes during the stitching process.
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.
YOLO11 without SAHI | YOLO11 with SAHI |
---|---|
Kurulum ve Hazırlık
Kurulum
Başlamak için SAHI ve Ultralytics adreslerinin en son sürümlerini yükleyin:
Modülleri İçe Aktarın ve Kaynakları İndirin
Here's how to import the necessary modules and download a YOLO11 model and some test images:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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",
)
Standard Inference with YOLO11
Modeli Instantiate Etme
You can instantiate a YOLO11 model for object detection like this:
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:
Sliced Inference with YOLO11
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/yolo11n.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,
)
That's it! Now you're equipped to use YOLO11 with SAHI for both standard and sliced inference.
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}
}
We extend our thanks to the SAHI research group for creating and maintaining this invaluable resource for the computer vision community. For more information about SAHI and its creators, visit the SAHI GitHub repository.
SSS
How can I integrate YOLO11 with SAHI for sliced inference in object detection?
Integrating Ultralytics YOLO11 with SAHI (Slicing Aided Hyper Inference) for sliced inference optimizes your object detection tasks on high-resolution images by partitioning them into manageable slices. This approach improves memory usage and ensures high detection accuracy. To get started, you need to install the ultralytics and sahi libraries:
Then, download a YOLO11 model and test images:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_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",
)
Daha ayrıntılı talimatlar için Dilimli Çıkarım kılavuzumuza bakın.
Why should I use SAHI with YOLO11 for object detection on large images?
Using SAHI with Ultralytics YOLO11 for object detection on large images offers several benefits:
- 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.
Can I visualize prediction results when using YOLO11 with SAHI?
Yes, you can visualize prediction results when using YOLO11 with SAHI. Here's how you can export and visualize the results:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
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.
What features does SAHI offer for improving YOLO11 object detection?
SAHI (Slicing Aided Hyper Inference) offers several features that complement Ultralytics YOLO11 for object detection:
- 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.
How do I handle large-scale inference projects using YOLO11 and SAHI?
To handle large-scale inference projects using YOLO11 and SAHI, follow these best practices:
- Gerekli Kütüphaneleri Yükleyin: ultralytics ve sahi'nin en son sürümlerine sahip olduğunuzdan emin olun.
- Dilimli Çıkarsamayı Yapılandırma: Özel projeniz için en uygun dilim boyutlarını ve örtüşme oranlarını belirleyin.
- 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/yolo11n.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.