Ultralytics YOLO ile Model Tahmini

Ultralytics YOLO ecosystem and integrations

Giriş

Makine öğrenimi ve bilgisayarlı görü dünyasında, görsel verileri anlamlandırma sürecine genellikle çıkarım veya tahmin denir. Ultralytics YOLO26, çok çeşitli veri kaynaklarında yüksek performanslı, gerçek zamanlı çıkarım için özel olarak tasarlanmış tahmin modu adında güçlü bir özellik sunar.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Gerçek Dünya Uygulamaları

ÜretimSporGüvenlik
Araç Yedek Parça TespitiFutbolcu Tespitiİnsan Düşme Tespiti
Araç Yedek Parça TespitiFutbolcu Tespitiİnsan Düşme Tespiti

Çıkarım için neden Ultralytics YOLO kullanmalısın?

Çeşitli çıkarım ihtiyaçların için YOLO26'nın tahmin modunu neden düşünmen gerektiği burada açıklanmıştır:

  • Çok yönlülük: Görüntüler, videolar ve hatta canlı yayınlar üzerinde çıkarım yapabilir.
  • Performans: Doğruluktan ödün vermeden gerçek zamanlı, yüksek hızlı işleme için tasarlanmıştır.
  • Kullanım Kolaylığı: Hızlı dağıtım ve test için sezgisel Python ve CLI arayüzleri.
  • Yüksek Derecede Özelleştirilebilir: Modelin çıkarım davranışını özel gereksinimlerine göre ayarlaman için çeşitli ayarlar ve parametreler.
  • Üretime Hazır: Modelleri, otomatik ölçeklendirme ve izleme özellikleriyle Ultralytics Platform üzerinde API uç noktaları olarak dağıtabilir veya yerel olarak çıkarım yapabilirsin.

Tahmin Modunun Temel Özellikleri

YOLO26'nın tahmin modu, sağlam ve çok yönlü olacak şekilde tasarlanmıştır ve şunları içerir:

  • Çoklu Veri Kaynağı Uyumluluğu: Verilerin ister bireysel görüntüler, ister görüntü koleksiyonu, video dosyaları veya gerçek zamanlı video akışları olsun, tahmin modu ihtiyacını karşılar.
  • Akış Modu: Bellek dostu bir Results nesnesi oluşturucu oluşturmak için akış özelliğini kullan. Bunu, tahmin edicinin çağırma yönteminde stream=True değerini ayarlayarak etkinleştirebilirsin.
  • Toplu İşleme: Toplam çıkarım süresini daha da azaltarak, birden çok görüntüyü veya video karesini tek bir partide işleyebilirsin.
  • Entegrasyon Dostu: Esnek API'si sayesinde mevcut veri hatları ve diğer yazılım bileşenleriyle kolayca entegre edilebilir.

Ultralytics YOLO models return either a Python list of Results objects or a memory-efficient generator of Results objects when stream=True is passed to the model during inference:

Tahmin
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # pretrained YOLO26n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Çıkarım Kaynakları

YOLO26, çıkarım için aşağıdaki tabloda gösterildiği gibi farklı türdeki girdi kaynaklarını işleyebilir. Kaynaklar statik görüntüleri, video akışlarını ve çeşitli veri formatlarını içerir. Tablo ayrıca her bir kaynağın stream=True bağımsız değişkeni ile akış modunda kullanılıp kullanılamayacağını ✅ belirtir. Akış modu, tüm kareleri belleğe yüklemek yerine sonuçlardan oluşan bir oluşturucu yarattığı için videoları veya canlı yayınları işlemek adına faydalıdır.

İpucu

Uzun videoları veya büyük veri kümelerini işlerken bellek yönetimi için stream=True kullan. stream=False olduğunda, tüm karelerin veya veri noktalarının sonuçları bellekte saklanır; bu durum büyük girdilerde hızla artarak bellek yetersizliği hatalarına yol açabilir. Buna karşılık stream=True, yalnızca mevcut karenin veya veri noktasının sonuçlarını bellekte tutan bir oluşturucu kullanarak bellek tüketimini önemli ölçüde azaltır ve bellek sorunlarını önler.

KaynakÖrnekTürNotlar
görüntü'image.jpg'str veya PathTek görüntü dosyası.
URL'https://ultralytics.com/images/bus.jpg'strBir görüntüye ait URL.
ekran görüntüsü'screen'strEkran görüntüsü yakala.
PILImage.open('image.jpg')PIL.ImageRGB kanallı HWC formatı.
OpenCVcv2.imread('image.jpg')np.ndarrayBGR kanallı HWC formatı uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayBGR kanallı HWC formatı uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorRGB kanallı BCHW formatı float32 (0.0-1.0).
CSV'sources.csv'str veya PathGörüntü, video veya dizin yollarını içeren CSV dosyası.
video ✅'video.mp4'str veya PathMP4, AVI gibi formatlardaki video dosyası.
dizin ✅'path/'str veya PathGörüntü veya video içeren dizin yolu.
glob ✅'path/*.jpg'strBirden çok dosyayı eşleştirmek için glob deseni. Joker karakter olarak * karakterini kullan.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strYouTube videosuna ait URL.
akış ✅'rtsp://example.com/media.mp4'strRTSP, RTMP, TCP gibi akış protokolleri veya bir IP adresi için URL.
çoklu akış ✅'list.streams'str veya PathHer satırda bir akış URL'si bulunan *.streams metin dosyası, örn. 8 akış, 8 batch-size ile çalışacaktır.
web kamerası ✅0intÇıkarım yapılacak bağlı kamera cihazının indeksi.

Her kaynak türünü kullanmak için kod örnekleri aşağıdadır:

Tahmin kaynakları

Bir görüntü dosyası üzerinde çıkarım çalıştır.

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Çıkarım Argümanları

model.predict() yöntemi, varsayılan değerleri geçersiz kılmak için çıkarım sırasında geçirilebilecek birden fazla argümanı kabul eder:

Sabit şekil ile minimum dikdörtgen (rect) karşılaştırması

Varsayılan olarak, tahmin (predict) işlemi rect=True kullanır, bu da mümkün olduğunda minimum-dikdörtgen dolgusunu etkinleştirir. Görüntü imgsz içine sığacak şekilde ölçeklendirilir ve yalnızca en yakın adım (stride) katına kadar doldurulur, bu nedenle nihai tensör imgsz değerinden daha küçük olabilir. Minimum-dikdörtgen dolgusu yalnızca yığındaki tüm görüntüler aynı şekle sahip olduğunda ve arka uç (PyTorch .pt veya dinamik ONNX / Triton) bunu desteklediğinde kullanılır. Aksi takdirde, görüntüler tam imgsz hedefine göre doldurulur.

Use rect=False to always pad to the full imgsz target. This is recommended when you need a fixed input size to match exported models (ONNX, TensorRT, etc.).

Tam sayı ile demet (tuple) imgsz karşılaştırması

  • Bir tam sayı olan imgsz=640, adım (stride) yuvarlamasından sonra kare bir hedef olan (640, 640) değerine dönüşür.
  • Bir demet (tuple) olan imgsz=(384, 672) dikdörtgen bir hedef belirler. rect=True ve auto=True ile, gerçek tensör bu hedef değerinden daha küçük olabilir.

Eğitim ile tahmin/dışa aktarma karşılaştırması

Training accepts only a single integer imgsz (a [h, w] list is coerced to the largest value). Predict and export accept either an integer or a (height, width) tuple.

Örnek
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Çıkarım argümanları:

ArgümanTürVarsayılanAçıklama
sourcestr veya int veya NoneNoneÇıkarım için veri kaynağını belirtir. Bir görüntü yolu, video dosyası, dizin, URL veya canlı yayınlar için cihaz kimliği olabilir. Belirtilmezse bir uyarı kaydedilir ve model yerleşik demo varlıklarına (ultralytics/assets veya OBB için bir demo URL'si) döner. Çok çeşitli formatları ve kaynakları destekleyerek farklı giriş türleri genelinde esnek uygulama sağlar.
conffloat0.25Tespitler için minimum güven eşiğini belirler. Bu eşiğin altındaki güvenle tespit edilen nesneler göz ardı edilecektir. Bu değeri ayarlamak yanlış pozitifleri azaltmaya yardımcı olabilir.
ioufloat0.7Maksimum Olmayan Baskılama (NMS) için Kesişim Üzerinden Birlik (IoU) eşiği. Daha düşük değerler çakışan kutuları eleyerek daha az tespit sonucu verir; kopyaları azaltmak için kullanışlıdır.
imgszint veya tuple640Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle.
rectboolTrueEğer True ise, mümkün olduğunda minimum dikdörtgen dolgusu kullanın (aynı şekilli yığın ve desteklenen arka uç). Eğer False ise, her zaman tam imgsz değerine dolgu yapın. Bkz. Sabit şekil vs minimum dikdörtgen.
halfboolFalseDoğruluk üzerindeki minimal etkiyle desteklenen GPU'larda model çıkarımını hızlandırabilen yarı hassasiyetli (FP16) çıkarımı etkinleştirir.
devicestrNoneÇıkarım için cihazı belirtir (örn. cpu, cuda:0, 0, npu veya npu:0). Kullanıcıların CPU, belirli bir GPU, Huawei Ascend NPU veya model yürütme için diğer bilgi işlem cihazlarını seçmelerine olanak tanır.
batchint1Çıkarım için yığın boyutunu belirtir (yalnızca kaynak bir dizin, video dosyası veya .txt dosyası olduğunda çalışır). Daha büyük bir yığın boyutu daha yüksek verim sağlayarak çıkarım için gereken toplam süreyi kısaltabilir.
max_detint300Görüntü başına izin verilen maksimum tespit sayısı. Modelin tek bir çıkarımda tespit edebileceği toplam nesne sayısını sınırlar ve yoğun sahnelerde aşırı çıktı oluşmasını önler.
vid_strideint1Video girişleri için kare aralığı (stride). İşlem hızını artırmak için videolardaki karelerin atlanmasına olanak tanır, ancak zamansal çözünürlükten ödün verir. 1 değeri her kareyi işlerken, daha yüksek değerler kareleri atlar.
stream_bufferboolFalseVideo akışları için gelen karelerin sıraya alınıp alınmayacağını belirler. Eğer False ise, yeni karelere yer açmak için eski kareler atılır (gerçek zamanlı uygulamalar için optimize edilmiştir). Eğer True ise, yeni kareleri bir arabelleğe alır ve hiçbir karenin atlanmamasını sağlar; ancak çıkarım FPS'si akış FPS'sinden düşükse gecikmeye neden olur.
visualizeboolFalseÇıkarım sırasında model özelliklerinin görselleştirilmesini etkinleştirir ve modelin ne "gördüğüne" dair içgörüler sağlar. Hata ayıklama ve model yorumlama için kullanışlıdır.
augmentboolFalseTahminler için test zamanı artırmayı (TTA) etkinleştirir; çıkarım hızından ödün vererek tespit sağlamlığını potansiyel olarak artırır.
agnostic_nmsboolFalseSınıftan bağımsız Non-Maximum Suppression (NMS) yöntemini etkinleştirir; bu, farklı sınıflara ait çakışan kutuları birleştirir. Sınıf çakışmasının yaygın olduğu çok sınıflı tespit senaryolarında yararlıdır. Uçtan uca modeller için (YOLO26, YOLOv10), bu özellik yalnızca aynı tespitin birden fazla sınıf etiketiyle (IoU=1.0 kopyaları) görünmesini engeller ve farklı kutular arasında IoU eşik tabanlı bir bastırma işlemi gerçekleştirmez.
classeslist[int]NoneTahminleri belirli sınıf kimliklerine (class ID) göre filtreler. Yalnızca belirtilen sınıflara ait tespitler döndürülür. Çok sınıflı tespit görevlerinde ilgili nesnelere odaklanmak için kullanışlıdır.
retina_masksboolFalseYüksek çözünürlüklü segmentasyon maskeleri döndürür. Etkinleştirilirse, döndürülen maskeler (masks.data) orijinal görüntü boyutuyla eşleşir. Devre dışı bırakılırsa, çıkarım sırasında kullanılan görüntü boyutuna sahip olurlar.
embedlist[int]NoneÖzellik vektörlerinin veya embeddings kısımlarının çıkarılacağı katmanları belirtir. Kümeleme veya benzerlik arama gibi sonraki görevler için kullanışlıdır.
projectstrNonesave özelliği etkinleştirildiğinde tahmin çıktılarının kaydedileceği proje dizininin adı.
namestrNoneTahmin çalıştırmasının adı. save etkinleştirildiğinde tahmin çıktılarının saklandığı proje klasörü içinde bir alt dizin oluşturmak için kullanılır.
streamboolFalseTüm kareleri aynı anda belleğe yüklemek yerine, Results nesnelerinden oluşan bir jeneratör döndürerek uzun videolar veya çok sayıda görüntü için bellek açısından verimli işlem yapılmasını sağlar.
verboseboolTrueTahmin süreci hakkında gerçek zamanlı geri bildirim sağlamak için terminalde ayrıntılı çıkarım günlüklerinin görüntülenip görüntülenmeyeceğini kontrol eder.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True"default" kabul eder, False devre dışı bırakır veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu alır. Desteklenmiyorsa uyarı vererek eager moduna döner.
end2endboolNoneNMS içermeyen çıkarımı destekleyen YOLO modellerinde (YOLO26, YOLOv10) uçtan uca modunu geçersiz kılar. False olarak ayarlamak, tahmini geleneksel NMS hattını kullanarak çalıştırmanıza ve ayrıca iou argümanını kullanmanıza olanak tanır. Ayrıntılar için Uçtan Uca Tespit rehberine bak.

Görselleştirme argümanları:

ArgümanTürVarsayılanAçıklama
showboolFalseEğer True ise, açıklamalı görüntüleri veya videoları bir pencerede görüntüler. Geliştirme veya test sırasında anında görsel geri bildirim için kullanışlıdır.
saveboolFalse or TrueAçıklamalı görüntülerin veya videoların dosyalara kaydedilmesini etkinleştirir. Dokümantasyon, ileri analiz veya sonuçları paylaşmak için kullanışlıdır. CLI kullanırken varsayılan olarak True, Python'da kullanıldığında False değerini alır.
save_framesboolFalseVideoları işlerken, tek tek kareleri görüntü olarak kaydeder. Belirli kareleri ayıklamak veya ayrıntılı kare kare analiz için kullanışlıdır.
save_txtboolFalseTespit sonuçlarını [class] [x_center] [y_center] [width] [height] [confidence] formatını izleyerek bir metin dosyasına kaydeder. Diğer analiz araçlarıyla entegrasyon için kullanışlıdır.
save_confboolFalseKaydedilen metin dosyalarına güven puanlarını (confidence scores) dahil eder. İşlem sonrası ve analiz için mevcut ayrıntıyı artırır.
save_cropboolFalseTespit edilen nesnelerin kırpılmış görüntülerini kaydeder. Veri seti artırma, analiz veya belirli nesneler için odaklanmış veri setleri oluşturmak için kullanışlıdır.
show_labelsboolTrueGörsel çıktıda her tespit için etiketleri görüntüler. Tespit edilen nesnelerin anında anlaşılmasını sağlar.
show_confboolTrueEtiketle birlikte her tespit için güven puanını görüntüler. Her bir tespit için modelin kesinliği hakkında fikir verir.
show_boxesboolTrueTespit edilen nesnelerin etrafına sınırlayıcı kutular (bounding boxes) çizer. Görüntülerdeki veya video karelerindeki nesnelerin görsel tanımlaması ve konumlandırılması için gereklidir.
line_widthint or NoneNoneSınırlayıcı kutuların çizgi kalınlığını belirtir. None ise, çizgi kalınlığı otomatik olarak görüntü boyutuna göre ayarlanır. Netlik için görsel özelleştirme sağlar.

Görüntü ve Video Formatları

YOLO26, ultralytics/data/utils.py dosyasında belirtildiği gibi çeşitli görüntü ve video formatlarını destekler. Geçerli son ekler ve örnek tahmin komutları için aşağıdaki tablolara bak.

Görüntüler

Aşağıdaki tablo geçerli Ultralytics görüntü formatlarını içerir.

Not

HEIC/HEIF formatları, ilk kullanımda otomatik olarak yüklenen pi-heif paketini gerektirir. AVIF, Pillow tarafından yerel olarak desteklenir.

Görüntü Son EkleriÖrnek Tahmin KomutuReferans
.avifyolo predict source=image.avifAV1 Görüntü Dosyası Formatı
.bmpyolo predict source=image.bmpMicrosoft BMP Dosya Formatı
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicYüksek Verimli Görüntü Formatı
.heifyolo predict source=image.heifYüksek Verimli Görüntü Formatı
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoÇoklu Resim Nesnesi
.pngyolo predict source=image.pngTaşınabilir Ağ Grafikleri
.tifyolo predict source=image.tifEtiketli Görüntü Dosyası Formatı
.tiffyolo predict source=image.tiffEtiketli Görüntü Dosyası Formatı
.webpyolo predict source=image.webpWebP

Videolar

Aşağıdaki tablo geçerli Ultralytics video formatlarını içerir.

Video Son EkleriÖrnek Tahmin KomutuReferans
.asfyolo predict source=video.asfGelişmiş Sistemler Formatı
.aviyolo predict source=video.aviSes Video Ara Birimi
.gifyolo predict source=video.gifGrafik Değişim Formatı
.m4vyolo predict source=video.m4vMPEG-4 Bölüm 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime Dosya Formatı
.mp4yolo predict source=video.mp4MPEG-4 Bölüm 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Bölüm 2
.mpgyolo predict source=video.mpgMPEG-1 Bölüm 2
.tsyolo predict source=video.tsMPEG Taşıma Akışı
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Projesi

Sonuçlarla Çalışmak

Tüm Ultralytics predict() çağrıları bir Results nesneleri listesi döndürür:

Results
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

Results nesneleri şu niteliklere sahiptir:

NitelikTürAçıklama
orig_imgnp.ndarrayNumPy dizisi olarak orijinal görüntü.
orig_shapetuple(yükseklik, genişlik) formatında orijinal görüntü boyutu.
boxesBoxes, optionalTespit sınırlayıcı kutularını içeren bir Boxes nesnesi.
masksMasks, optionalTespit maskelerini içeren bir Masks nesnesi.
probsProbs, optionalSınıflandırma görevi için her sınıfın olasılıklarını içeren bir Probs nesnesi.
keypointsKeypoints, optionalHer nesne için tespit edilen anahtar noktaları içeren bir Keypoints nesnesi.
obbOBB, optionalYönlendirilmiş sınırlayıcı kutuları içeren bir OBB nesnesi.
speeddictGörüntü başına milisaniye cinsinden ön işleme, çıkarım ve son işleme hızlarını içeren bir sözlük.
namesdictSınıf indekslerini sınıf adlarıyla eşleştiren bir sözlük.
pathstrGörüntü dosyasına giden yol.
save_dirstr, optionalSonuçları kaydetmek için dizin.

Results nesneleri şu yöntemlere sahiptir:

YöntemDönüş TürüAçıklama
update()NoneResults nesnesini yeni tespit verileriyle (boxes, masks, probs, obb, keypoints) günceller.
cpu()ResultsTüm tensörleri CPU belleğine taşınmış şekilde Results nesnesinin bir kopyasını döndürür.
numpy()ResultsTüm tensörleri NumPy dizilerine dönüştürülmüş şekilde Results nesnesinin bir kopyasını döndürür.
cuda()ResultsTüm tensörleri GPU belleğine taşınmış şekilde Results nesnesinin bir kopyasını döndürür.
to()ResultsTensörleri belirtilen aygıta ve veri türüne taşınmış şekilde Results nesnesinin bir kopyasını döndürür.
new()ResultsAynı görüntü, yol, isimler ve hız niteliklerine sahip yeni bir Results nesnesi oluşturur.
plot()np.ndarrayTespit sonuçlarını bir girdi RGB görüntüsü üzerine çizer ve açıklamalı görüntüyü döndürür.
show()NoneGörüntüyü açıklamalı çıkarım sonuçlarıyla görüntüler.
save()strAçıklamalı çıkarım sonuçları görüntüsünü dosyaya kaydeder ve dosya adını döndürür.
verbose()strTespit ve sınıflandırma sonuçlarını detaylandırarak her görev için bir günlük dizesi döndürür.
save_txt()strTespit sonuçlarını bir metin dosyasına kaydeder ve kaydedilen dosyanın yolunu döndürür.
save_crop()NoneKırpılmış tespit görüntülerini belirtilen dizine kaydeder.
summary()List[Dict[str, Any]]Çıkarım sonuçlarını isteğe bağlı normalleştirme ile özetlenmiş bir sözlüğe dönüştürür.
to_df()DataFrameTespit sonuçlarını bir Polars DataFrame'ine dönüştürür.
to_csv()strTespit sonuçlarını CSV formatına dönüştürür.
to_json()strTespit sonuçlarını JSON formatına dönüştürür.

Daha fazla detay için Results sınıfı dokümantasyonuna bakabilirsin.

Boxes

Boxes nesnesi sınırlayıcı kutuları dizinlemek, değiştirmek ve farklı formatlara dönüştürmek için kullanılabilir.

Boxes
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

İsimleri, türleri ve açıklamaları dahil olmak üzere Boxes sınıfı yöntemleri ve nitelikleri için bir tablo aşağıdadır:

AdTürAçıklama
cpu()YöntemNesneyi CPU belleğine taşı.
numpy()YöntemNesneyi bir NumPy dizisine dönüştür.
cuda()YöntemNesneyi CUDA belleğine taşı.
to()YöntemNesneyi belirtilen aygıta taşı.
xyxyNitelik (torch.Tensor)Kutuları xyxy formatında döndür.
confNitelik (torch.Tensor)Kutuların güven değerlerini döndür.
clsNitelik (torch.Tensor)Kutuların sınıf değerlerini döndür.
idNitelik (torch.Tensor)Kutuların takip ID'lerini (varsa) döndür.
xywhNitelik (torch.Tensor)Kutuları xywh formatında döndür.
xyxynNitelik (torch.Tensor)Kutuları orijinal görüntü boyutuyla normalleştirilmiş xyxy formatında döndür.
xywhnNitelik (torch.Tensor)Kutuları orijinal görüntü boyutuyla normalleştirilmiş xywh formatında döndür.

Daha fazla detay için Boxes sınıfı dokümantasyonuna bakabilirsin.

Masks

Masks nesnesi maskeleri dizinlemek, değiştirmek ve segmentlere dönüştürmek için kullanılabilir.

Masks
from ultralytics import YOLO

# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

İsimleri, türleri ve açıklamaları dahil olmak üzere Masks sınıfı yöntemleri ve nitelikleri için bir tablo aşağıdadır:

AdTürAçıklama
cpu()YöntemMaskeler tensörünü CPU belleğinde döndürür.
numpy()YöntemMaskeler tensörünü bir NumPy dizisi olarak döndürür.
cuda()YöntemMaskeler tensörünü GPU belleğinde döndürür.
to()YöntemMaskeler tensörünü belirtilen aygıt ve veri türüyle döndürür.
xynNitelik (torch.Tensor)Tensörler olarak temsil edilen normalleştirilmiş segmentlerin bir listesi.
xyNitelik (torch.Tensor)Tensörler olarak temsil edilen piksel koordinatlarındaki segmentlerin bir listesi.

Daha fazla detay için Masks sınıfı dokümantasyonuna bakabilirsin.

Keypoints

Keypoints nesnesi koordinatları indekslemek, değiştirmek ve normalize etmek için kullanılabilir.

Keypoints
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

İşte Keypoints sınıfı yöntemleri ve özellikleri için isimlerini, türlerini ve açıklamalarını içeren bir tablo:

AdTürAçıklama
cpu()YöntemKeypoints tensörünü CPU belleğinde döndürür.
numpy()YöntemKeypoints tensörünü bir NumPy dizisi olarak döndürür.
cuda()YöntemKeypoints tensörünü GPU belleğinde döndürür.
to()YöntemKeypoints tensörünü belirtilen cihaz ve veri tipiyle döndürür.
xynNitelik (torch.Tensor)Tensörler olarak temsil edilen normalize edilmiş keypoints listesi.
xyNitelik (torch.Tensor)Tensörler olarak temsil edilen piksel koordinatlarında keypoints listesi.
confNitelik (torch.Tensor)Varsa keypoints güven değerlerini döndürür, aksi takdirde None döndürür.

Daha fazla detay için Keypoints sınıfı belgelerine bakabilirsin.

Probs

Probs nesnesi sınıflandırma indekslerini ve skorlarını indekslemek, top1 ve top5 verilerini almak için kullanılabilir.

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

İşte Probs sınıfı yöntemlerini ve özelliklerini özetleyen bir tablo:

AdTürAçıklama
cpu()YöntemProbs tensörünün CPU belleğindeki bir kopyasını döndürür.
numpy()YöntemProbs tensörünün bir NumPy dizisi olarak kopyasını döndürür.
cuda()YöntemProbs tensörünün GPU belleğindeki bir kopyasını döndürür.
to()YöntemProbs tensörünün belirtilen cihaz ve veri tipiyle bir kopyasını döndürür.
top1Özellik (int)En yüksek 1. sınıfın indeksi.
top5Özellik (list[int])En yüksek 5 sınıfın indeksleri.
top1confNitelik (torch.Tensor)En yüksek 1. sınıfın güven değeri.
top5confNitelik (torch.Tensor)En yüksek 5 sınıfın güven değerleri.

Daha fazla detay için Probs sınıfı belgelerine bakabilirsin.

OBB

OBB nesnesi, yönlendirilmiş sınırlayıcı kutuları (oriented bounding boxes) indekslemek, manipüle etmek ve farklı formatlara dönüştürmek için kullanılabilir.

OBB
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg")  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

İşte OBB sınıfı yöntemleri ve özellikleri için isimlerini, türlerini ve açıklamalarını içeren bir tablo:

AdTürAçıklama
cpu()YöntemNesneyi CPU belleğine taşı.
numpy()YöntemNesneyi bir NumPy dizisine dönüştür.
cuda()YöntemNesneyi CUDA belleğine taşı.
to()YöntemNesneyi belirtilen aygıta taşı.
confNitelik (torch.Tensor)Kutuların güven değerlerini döndür.
clsNitelik (torch.Tensor)Kutuların sınıf değerlerini döndür.
idNitelik (torch.Tensor)Kutuların takip ID'lerini (varsa) döndür.
xyxyNitelik (torch.Tensor)Yatay kutuları xyxy formatında döndürür.
xywhrNitelik (torch.Tensor)Döndürülmüş kutuları xywhr formatında döndürür.
xyxyxyxyNitelik (torch.Tensor)Döndürülmüş kutuları xyxyxyxy formatında döndürür.
xyxyxyxynNitelik (torch.Tensor)Görüntü boyutuyla normalize edilmiş döndürülmüş kutuları xyxyxyxy formatında döndürür.

Daha fazla detay için OBB sınıfı belgelerine bakabilirsin.

Sonuçları Görselleştirme

The plot() method in Results objects facilitates visualization of predictions by overlaying detected objects (such as bounding boxes, masks, keypoints, and probabilities) onto the original image. This method returns the annotated image as a NumPy array, allowing for easy display or saving.

Çizim
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

plot() Yöntemi Parametreleri

plot() yöntemi çıktıyı özelleştirmek için çeşitli argümanları destekler:

ArgümanTürAçıklamaVarsayılan
confboolAlgılama güven skorlarını dahil et.True
line_widthfloatSınırlayıcı kutuların çizgi kalınlığı. None ise görüntü boyutuyla ölçeklenir.None
font_sizefloatMetin yazı tipi boyutu. None ise görüntü boyutuyla ölçeklenir.None
fontstrMetin ek açıklamaları için yazı tipi adı.'Arial.ttf'
pilboolGörüntüyü bir PIL Image nesnesi olarak döndür.False
imgnp.ndarrayGörselleştirme için alternatif görüntü. None ise orijinal görüntü kullanılır.None
im_gputorch.TensorDaha hızlı maske çizimi için GPU hızlandırmalı görüntü. Boyut: (1, 3, 640, 640).None
kpt_radiusintÇizilen keypoints için yarıçap.5
kpt_lineboolKeypoints noktalarını çizgilerle birleştir.True
labelsboolEk açıklamalara sınıf etiketlerini dahil et.True
boxesboolSınırlayıcı kutuları görüntünün üzerine bindir.True
masksboolMaskeleri görüntünün üzerine bindir.True
probsboolSınıflandırma olasılıklarını dahil et.True
showboolEk açıklamalı görüntüyü doğrudan varsayılan görüntü görüntüleyicisiyle göster.False
saveboolEk açıklamalı görüntüyü filename ile belirtilen dosyaya kaydet.False
filenamestrsave değeri True ise, ek açıklamalı görüntünün kaydedileceği dosyanın yolu ve adı.None
color_modestrRenk modunu belirtin, örneğin 'instance' veya 'class'.'class'
txt_colortuple[int, int, int]Sınırlayıcı kutu ve görüntü sınıflandırma etiketi için RGB metin rengi.(255, 255, 255)

İş parçacığı (Thread-Safe) Güvenli Çıkarım

Birden fazla YOLO modelini farklı iş parçacıklarında paralel olarak çalıştırırken çıkarım sırasında iş parçacığı güvenliğini sağlamak çok önemlidir. Thread-safe çıkarım, her iş parçacığının tahminlerinin izole edildiğini ve birbirine müdahale etmediğini garanti eder, bu da yarış durumlarını önler ve tutarlı, güvenilir çıktılar sağlar.

Çok iş parçacıklı bir uygulamada YOLO modellerini kullanırken, çakışmaları önlemek için her iş parçacığı için ayrı model nesneleri oluşturmak veya iş parçacığına özgü depolama kullanmak önemlidir:

İş parçacığı (Thread-Safe) Güvenli Çıkarım

Thread-safe çıkarım için her iş parçacığının içinde tek bir model oluştur:

from threading import Thread

from ultralytics import YOLO

def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Process results

# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

YOLO modelleriyle thread-safe çıkarıma derinlemesine bir bakış ve adım adım talimatlar için lütfen YOLO Thread-Safe Çıkarım Kılavuzumuza bak. Bu kılavuz, yaygın hatalardan kaçınman ve çok iş parçacıklı çıkarımının sorunsuz çalışmasını sağlaman için ihtiyacın olan tüm bilgileri sana sunacaktır.

Akış (Streaming) Kaynağı for döngüsü

İşte video kareleri üzerinde çıkarım çalıştırmak için OpenCV (cv2) ve YOLO kullanan bir Python betiği. Bu betik, gerekli paketleri (opencv-python ve ultralytics) çoktan yüklediğini varsayar.

Akış (Streaming) for döngüsü
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

Bu betik videonun her karesinde tahminleri çalıştıracak, sonuçları görselleştirecek ve bir pencerede görüntüleyecektir. Döngü, 'q' tuşuna basılarak sonlandırılabilir.

SSS

Ultralytics YOLO nedir ve gerçek zamanlı çıkarım için predict modu ne işe yarar?

Ultralytics YOLO, gerçek zamanlı nesne algılama, bölütleme ve sınıflandırma için son teknoloji bir modeldir. predict modu, görüntü, video ve canlı akışlar gibi çeşitli veri kaynakları üzerinde yüksek hızlı çıkarım yapmanı sağlar. Performans ve çok yönlülük için tasarlanmış olup, toplu işleme ve akış modlarını da sunar. Özellikleri hakkında daha fazla ayrıntı için Ultralytics YOLO predict moduna göz at.

Farklı veri kaynaklarında Ultralytics YOLO kullanarak nasıl çıkarım yapabilirim?

Ultralytics YOLO, tekil görüntüler, videolar, dizinler, URL'ler ve akışlar dahil olmak üzere geniş bir veri kaynağı yelpazesini işleyebilir. Veri kaynağını model.predict() çağrısında belirtebilirsin. Örneğin, yerel bir görüntü için 'image.jpg' veya bir URL için 'https://ultralytics.com/images/bus.jpg' kullan. Belgelerdeki çeşitli çıkarım kaynakları için ayrıntılı örneklere göz at.

YOLO çıkarım hızını ve bellek kullanımını nasıl optimize edebilirim?

Çıkarım hızını optimize etmek ve belleği verimli yönetmek için, tahmincinin çağrı yönteminde stream=True değerini ayarlayarak akış modunu kullanabilirsin. Akış modu, tüm kareleri belleğe yüklemek yerine Results nesnelerinden oluşan bellek açısından verimli bir üretici (generator) oluşturur. Uzun videoları veya büyük veri kümelerini işlemek için akış modu özellikle kullanışlıdır. Akış modu hakkında daha fazla bilgi edin.

Ultralytics YOLO hangi çıkarım argümanlarını destekler?

YOLO'daki model.predict() yöntemi conf, iou, imgsz, device ve daha fazlası gibi çeşitli argümanları destekler. Bu argümanlar, güven eşikleri, görüntü boyutu ve hesaplama için kullanılan cihaz gibi parametreleri ayarlayarak çıkarım sürecini özelleştirmeni sağlar. Bu argümanların ayrıntılı açıklamaları çıkarım argümanları bölümünde bulunabilir.

YOLO tahminlerinin sonuçlarını nasıl görselleştirebilir ve kaydedebilirim?

YOLO ile çıkarım çalıştırdıktan sonra, Results nesneleri ek açıklamalı görüntüleri görüntülemek ve kaydetmek için yöntemler içerir. Sonuçları görselleştirmek ve kaydetmek için result.show() ve result.save(filename="result.jpg") gibi yöntemleri kullanabilirsin. Dosya adı yolundaki eksik üst dizinler otomatik olarak oluşturulur (örneğin, result.save("path/to/result.jpg")). Bu yöntemlerin kapsamlı bir listesi için sonuçlarla çalışma bölümüne bak.

Yorumlar