Ultralytics YOLO27:

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 adı verilir. Ultralytics YOLO26, çok çeşitli veri kaynaklarında yüksek performanslı, gerçek zamanlı çıkarım için tasarlanmış tahmin modu adı verilen güçlü bir özellik sunar.

Planlanan çıkarım örnekleri için yayınlanmamış YOLO27 önizlemesine göz at.



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

Gerçek Dünya Uygulamaları#

ÜretimSporGüvenlik
Araç Yedek Parçası TespitiFutbolcu Tespitiİnsanların Düşmesini Tespit Etme

Çıkarım için Ultralytics YOLO Neden Kullanılmalı?#

Çeşitli çıkarım ihtiyaçların için YOLO26'nın tahmin modunu değerlendirmen için nedenler:

  • Çok Yönlülük: Görseller, videolar ve hatta canlı akışlar üzerinde çıkarım çalıştırabilir.
  • 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 Özelleştirilebilirlik: Modelin çıkarım davranışını özel gereksinimlerine göre ayarlamak için çeşitli ayarlar ve parametreler.
  • Üretime Hazır: Modelleri otomatik ölçeklendirme ve izleme özelliklerine sahip Ultralytics Platform çıkarım uç noktaları olarak dağıtabilir veya çıkarımı yerel olarak çalıştırabilirsin.

Tahmin Modunun Temel Özellikleri#

YOLO26'nın tahmin modu sağlam ve çok yönlü olacak şekilde tasarlanmıştır ve şu özellikleri sunar:

  • Birden Çok Veri Kaynağıyla Uyumluluk: Verilerin tek tek görseller, bir görsel koleksiyonu, video dosyaları veya gerçek zamanlı video akışları biçiminde olsun, tahmin modu ihtiyacını karşılar.
  • Akış Modu: Bellek açısından verimli bir Results nesne oluşturucu üretmek için akış özelliğini kullan. Bunu, tahmincinin çağrı yönteminde stream=True ayarlayarak etkinleştir. Tüm sonuçları içeren bir liste döndüren varsayılan davranışın (stream=False) aksine, stream=True sonuçları tek tek üretir; bu da onu özellikle uzun videolar ve canlı akışlar için kullanışlı kılar.
  • Toplu İşleme: Birden çok görseli veya video karesini tek bir toplu işlemde işleyerek toplam çıkarım süresini daha da azalt.
  • Entegrasyona Uygunluk: Esnek API'si sayesinde mevcut veri işlem hatları ve diğer yazılım bileşenleriyle kolayca entegre olur.

Ultralytics YOLO modelleri, çıkarım sırasında modele stream=True geçirildiğinde bir Python Results nesne listesi veya bellek açısından verimli bir Results nesne oluşturucu döndürür:

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, aşağıdaki tabloda gösterildiği gibi çıkarım için farklı türlerdeki giriş kaynaklarını işleyebilir. Kaynaklar arasında statik görseller, video akışları ve çeşitli veri biçimleri bulunur. Tablo ayrıca her kaynağın stream=True ✅ bağımsız değişkeniyle akış modunda kullanılıp kullanılamayacağını gösterir. Akış modu, tüm kareleri belleğe yüklemek yerine bir sonuç oluşturucusu oluşturduğu için videoları veya canlı akışları işlerken faydalıdır.

İpucu

Belleği verimli şekilde yönetmek için uzun videoları veya büyük veri kümelerini işlerken stream=True kullan. stream=False olduğunda tüm karelerin veya veri noktalarının sonuçları bellekte saklanır; bu değerler büyük girdilerde hızla birikerek bellek yetersizliği hatalarına neden olabilir. Buna karşılık stream=True, yalnızca geçerli karenin veya veri noktasının sonuçlarını bellekte tutan bir oluşturucu kullanır; böylece bellek tüketimi önemli ölçüde azalır ve bellek yetersizliği sorunları önlenir.

KaynakÖrnekTürNotlar
image'image.jpg'str veya PathTek görsel dosyası.
URL'https://ultralytics.com/images/bus.jpg'strBir görsele URL.
screenshot'screen'strEkran görüntüsü yakala.
PILImage.open('image.jpg')PIL.ImageRGB kanallarına sahip HWC biçimi.
OpenCVcv2.imread('image.jpg')np.ndarrayBGR kanallarına sahip HWC biçimi uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayBGR kanallarına sahip HWC biçimi uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorRGB kanallarına sahip BCHW biçimi float32 (0.0-1.0).
CSV'sources.csv'str veya PathGörsellere, videolara veya dizinlere giden yolları içeren CSV dosyası.
video ✅'video.mp4'str veya PathMP4, AVI vb. biçimlerde video dosyası.
directory ✅'path/'str veya PathGörseller veya videolar içeren bir dizinin yolu.
glob ✅'path/*.jpg'strBirden çok dosyayla eşleşecek glob deseni. Joker karakter olarak * karakterini kullan.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strBir YouTube videosunun URL'si.
stream ✅'rtsp://example.com/media.mp4'strRTSP, RTMP, TCP gibi akış protokolleri veya bir IP adresi için URL.
multi-stream ✅'list.streams'str veya PathHer satırda bir akış URL'si bulunan *.streams metin dosyası; yani 8 akış, 8 toplu işlem boyutuyla çalışır.
webcam ✅0intÜzerinde çıkarım çalıştırılacak bağlı kamera cihazının dizini.

Her kaynak türünün kullanımına ilişkin kod örnekleri aşağıdadır:

Tahmin kaynakları

Bir görsel 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 Bağımsız Değişkenleri#

model.predict(), varsayılanları geçersiz kılmak üzere çıkarım sırasında geçirilebilecek birden çok bağımsız değişkeni kabul eder:

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

Varsayılan olarak predict, mümkün olduğunda minimum dikdörtgen dolguyu etkinleştiren rect=True seçeneğini kullanır. Görsel imgsz içine sığacak şekilde ölçeklendirilir ve yalnızca en yakın stride katına kadar doldurulur; bu nedenle son tensör imgsz değerinden daha küçük olabilir. Minimum dikdörtgen dolgusu yalnızca toplu işlemdeki tüm görseller aynı şekle sahip olduğunda ve arka uç bunu desteklediğinde kullanılır (PyTorch .pt veya dinamik ONNX / Triton). Aksi takdirde görseller tam imgsz hedef boyutuna kadar doldurulur.

Her zaman tam imgsz hedef boyutuna kadar doldurmak için rect=False kullan. Bu, dışa aktarılan modellerle (ONNX, TensorRT vb.) eşleşmesi için sabit bir giriş boyutuna ihtiyaç duyduğunda önerilir.

Tamsayı ve demet imgsz karşılaştırması

  • Bir tamsayı imgsz=640, stride yuvarlamasından sonra kare bir (640, 640) hedefi olur.
  • Bir demet imgsz=(384, 672), dikdörtgen bir hedef belirler. rect=True ve auto=True ile gerçek tensör bu hedeften daha küçük olabilir.

Eğitim ve predict/export karşılaştırması

Eğitim yalnızca tek bir tamsayı imgsz kabul eder (bir [h, w] listesi en büyük değere dönüştürülür). Predict ve export, tamsayı veya (height, width) demeti kabul eder.

Ö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 bağımsız değişkenleri:

Bağımsız değişkenTürVarsayılanAçıklama
sourcestr veya int veya NoneNoneÇıkarım için veri kaynağını belirtir. Görüntü yolu, video dosyası, dizin, URL veya canlı akışlar için cihaz kimliği olabilir. Belirtilmezse bir uyarı günlüğe kaydedilir ve model yerleşik demo varlıklarına (ultralytics/assets veya OBB için bir demo URL'si) geri döner. Çok çeşitli biçimleri ve kaynakları destekleyerek farklı giriş türleri arasında esnek uygulama olanağı sağlar.
conffloat0.25Algılamalar için minimum güven eşiğini belirler. Bu eşikten daha düşük güvenle algılanan nesneler göz ardı edilir. Bu değeri ayarlamak yanlış pozitifleri azaltmaya yardımcı olabilir.
ioufloat0.7Birleşim Üzerindeki Kesişim (IoU), Maksimum Olmayan Bastırma (NMS) için kullanılan eşiktir. Daha düşük değerler, çakışan kutuları ortadan kaldırarak daha az algılama sonucu üretir; bu, yinelenen sonuçları azaltmak için kullanışlıdır.
imgszint veya tuple640Letterbox hedefi. Bir tamsayı kare bir N×N verir; bir demet ise (height, width) verir. rect=True ile minimum dikdörtgen dolgusu nedeniyle gerçek tensör bu hedeften daha küçük olabilir. Sabit boyut için rect=False kullan. Ayrıntılar için Sabit şekil ve minimum dikdörtgen bölümüne bak.
rectboolTrueTrue ise mümkün olduğunda minimum dikdörtgen dolgusu kullanılır (aynı şekilli batch ve desteklenen backend). False ise her zaman tam imgsz boyutuna doldurulur. Ayrıntılar için Sabit şekil ve minimum dikdörtgen bölümüne bak.
quantizeint veya strNoneÇıkarım hassasiyeti: 16/"fp16" ve 32/"fp32"/ayarlanmamış, PyTorch ve TorchScript modelleri için FP16 veya FP32 hesaplamasını seçer; diğer formatlar, yapılarının ve çalışma zamanlarının seçtiği hassasiyette hesaplama yapar. 16 seviyesinde OpenVINO, çalışma zamanının hesaplama yaptığı yeri değiştirmeden, girdiyi istemci tarafında hâlâ FP16 olarak yuvarlar ve tekrar FP32'ye genişletir. INT8/PTQ nicelemesi, export sırasında yapılandırılır ve ardından dışarı aktarılan model yüklenerek kullanılır. Kullanımdan kaldırılan half bayrağının yerini alır.
devicestrNoneÇıkarım için cihazı belirtir (ör. cpu, cuda:0, 0, npu veya npu:0). Kullanıcıların model yürütme işlemi için CPU, belirli bir GPU, Huawei Ascend NPU veya diğer hesaplama cihazları arasında seçim yapmasını sağlar.
dnnboolFalseTrue ise ONNX modeli çıkarımı için ONNX Runtime yerine OpenCV DNN modülünü kullanır.
datastrNoneYalnızca names değeri için okunan ve yalnızca yüklenen model kendi sınıf adlarını içermediğinde kullanılan veri kümesi YAML dosyasının yolu (ör. coco8.yaml): üçüncü taraf bir dışa aktarma veya içerdiği meta verilerden ayrılmış bir Ultralytics dışa aktarması. Böyle bir model aksi takdirde class0, class1 ve benzeri değerleri bildirir.
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 aktarım hızı sağlayarak çıkarım için gereken toplam süreyi kısaltabilir.
max_detint300Görüntü başına izin verilen maksimum algılama sayısı. Modelin tek bir çıkarımda algılayabileceği toplam nesne sayısını sınırlandırarak yoğun sahnelerde aşırı çıktı oluşmasını önler.
vid_strideint1Video girdileri için kare adımı. Zamansal çözünürlük pahasına videolardaki kareleri atlayarak işlemeyi hızlandırır. 1 değeri her karenin işlenmesini sağlar, daha yüksek değerler kareleri atlar.
stream_bufferboolFalseVideo akışları için gelen karelerin kuyruğa alınıp alınmayacağını belirler. False ise yeni karelere yer açmak için eski kareler atılır (gerçek zamanlı uygulamalar için optimize edilmiştir). True ise yeni kareleri arabellekte kuyruğa alır ve hiçbir karenin atlanmamasını sağlar; ancak çıkarım FPS'i akış FPS'inden düşükse gecikmeye neden olur.
visualizeboolFalseHer tahminin yanına, tahmin edilen sınıf skorlarını hangi piksellerin yükselttiğini gösteren bir sınıf aktivasyon ısı haritası kaydeder. conf ve classes değerlerine uyar; bu nedenle classes=[0] yalnızca o sınıfı eşler. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
augmentboolFalseTahminler için test zamanı artırmayı (TTA) etkinleştirir; çıkarım hızı pahasına algılama sağlamlığını artırabilir. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
agnostic_nmsboolFalseSınıftan bağımsız NMS'yi (Non-Maximum Suppression) etkinleştirir; bu, yalnızca aynı sınıf içinde değil, farklı sınıflar arasında da daha düşük puanlı çakışan kutuları bastırır. Sınıf çakışmasının yaygın olduğu çok sınıflı algılama senaryolarında yararlıdır. NMS içermeyen çıkarımla (nms=False YOLO26 veya YOLOv10 üzerinde), bu yalnızca aynı algılamanın birden fazla sınıf etiketiyle görünmesini engeller (IoU=1.0 kopyaları) ve farklı kutular arasında IoU eşiğine dayalı bastırma gerçekleştirmez.
classeslist[int]NoneTahminleri bir sınıf kimlikleri kümesine göre filtreler. Yalnızca belirtilen sınıflara ait algılamalar döndürülür. Çok sınıflı algılama görevlerinde ilgili nesnelere odaklanmak için kullanışlıdır.
retina_masksboolFalseYüksek çözünürlüklü segmentasyon maskelerini döndürür. Etkinleştirilirse döndürülen maskeler (masks.data) özgün 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 gömme vektörlerinin çıkarılacağı katmanları belirtir. İkinci son katmanın gömme vektörleri için model.embed(source) değerini veya belirli katmanları seçmek için model.predict(source, embed=[layer]) değerini kullan. Kümeleme ya da benzerlik araması gibi sonraki işlemler için kullanışlıdır. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
projectstrNonesave etkinleştirilmişse tahmin çıktılarının kaydedildiği proje dizininin adı.
namestrNoneTahmin çalıştırmasının adı. Tahmin çıktılarının save etkinleştirilmişse depolandığı 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 bir Results nesneleri üreteci döndürerek uzun videoların veya çok sayıda görüntünün bellek açısından verimli işlenmesini sağlar.
verboseboolTrueTerminalde ayrıntılı çıkarım günlüklerinin görüntülenip görüntülenmeyeceğini denetler ve tahmin süreci hakkında gerçek zamanlı geri bildirim sağlar.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True"default", False → devre dışı veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarıyla eager moda geri döner.
channels_lastboolNoneYerel PyTorch çıkarımı için channels_last (NHWC) bellek biçimini kullanır. None, PyTorch 1.13 veya daha yeni sürümlerle oneDNN etkin Linux ve Windows x86 CPU'larında bunu otomatik olarak etkinleştirir; False devre dışı bırakır; True ise desteklenen x86 CPU veya CUDA cihazlarında kullanılmasını ister. ARM64, MPS, eski PyTorch sürümleri, oneDNN içermeyen CPU'lar ve TensorRT ile ONNX gibi dışa aktarılan biçimler değişmeden kalır.
nmsbool, isteğe bağlıNoneVarsayılan olarak NMS ile bire-çok çıkarım çalıştırır (None veya True). Mevcut olduğunda NMS içermeyen bire-bir başlığı kullanmak için False değerini ayarla. Ayrıntılar için Uçtan Uca Algılama kılavuzuna göz at.

Görselleştirme bağımsız değişkenleri:

Bağımsız değişkenTürVarsayılanAçıklama
showboolFalseTrue olduğunda 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 almak için kullanışlıdır.
saveboolFalse or TrueEk açıklamalı görüntülerin veya videoların dosyalara kaydedilmesini etkinleştirir. Belgeleme, daha ileri analiz veya sonuçları paylaşma için kullanışlıdır. CLI kullanılırken varsayılan değer True, Python kullanılırken False'tur.
save_framesboolFalseVideolar işlenirken tek tek kareleri görüntü olarak kaydeder. Belirli kareleri çıkarmak veya kare kare ayrıntılı analiz yapmak için kullanışlıdır.
save_txtboolFalseAlgılama sonuçlarını [class] [x_center] [y_center] [width] [height] [confidence] biçimini 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 skorlarını ekler. Sonraki işleme ve analiz için kullanılabilen ayrıntıları artırır.
save_cropboolFalseAlgılamaların kırpılmış görüntülerini kaydeder. Veri kümesi artırma, analiz veya belirli nesnelere odaklanan veri kümeleri oluşturma için kullanışlıdır.
show_labelsboolTrueGörsel çıktıda her algılama için etiketleri görüntüler. Algılanan nesnelerin hemen anlaşılmasını sağlar.
show_confboolTrueHer algılamanın güven skorunu etiketin yanında görüntüler. Modelin her algılamaya ilişkin kesinliği hakkında fikir verir.
show_boxesboolTrueAlgılanan nesnelerin çevresine sınırlayıcı kutular çizer. Görüntülerde veya video karelerinde nesneleri görsel olarak tanımlamak ve konumlandırmak için gereklidir.
line_widthint or NoneNoneSınırlayıcı kutuların çizgi genişliğini belirtir. None ise çizgi genişliği görüntü boyutuna göre otomatik olarak ayarlanır. Netlik için görsel özelleştirme sağlar.

Görüntü ve Video Biçimleri#

YOLO26, ultralytics/data/utils.py içinde belirtildiği üzere çeşitli görüntü ve video biçimlerini destekler. Geçerli uzantılar ve örnek predict komutları için aşağıdaki tablolara bak.

Görüntüler#

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

Not

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

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

Videolar#

Aşağıdaki tablo geçerli Ultralytics video biçimlerini içerir.

Video UzantılarıÖrnek Predict KomutuReferans
.asfyolo predict source=video.asfGelişmiş Sistemler Biçimi
.aviyolo predict source=video.aviSes ve Görüntü İç İçe Geçirme
.gifyolo predict source=video.gifGrafik Değişim Biçimi
.m4vyolo predict source=video.m4vMPEG-4 Bölüm 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime Dosya Biçimi
.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

Results ile Çalışma#

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

Sonuçlar
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 aşağıdaki özniteliklere sahiptir:

ÖznitelikTürAçıklama
orig_imgnp.ndarrayNumPy dizisi olarak özgün görüntü.
orig_shapetuple(yükseklik, genişlik) biçiminde özgün görüntü şekli.
boxesBoxes, optionalAlgılama sınırlayıcı kutularını içeren bir Boxes nesnesi.
masksMasks, optionalAlgılama 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 algılanan kilit noktaları içeren bir Keypoints nesnesi.
obbOBB, optionalYönlendirilmiş sınırlayıcı kutuları içeren bir OBB nesnesi.
semantic_maskSemanticMask, optionalYoğun piksel başına sınıf haritasını içeren bir SemanticMask nesnesi.
speeddictGörüntü başına milisaniye cinsinden ön işleme, çıkarım ve son işleme hızlarını eşleyen bir sözlük.
namesdictSınıf dizinlerini sınıf adlarıyla eşleyen bir sözlük.
pathstrGörüntü dosyasının yolu.
save_dirstr, optionalSonuçların kaydedileceği dizin.

Göreve Göre Sonuçlar#

Aşağıda hangi alanların doldurulacağı modelinin görevine bağlıdır — henüz bir görev seçmediysen detection, segmentation, semantic segmentation, depth estimation, classification, pose ve OBB'yi karşılaştır. Her tahmin, resim veya kare başına bir Results nesnesi döndürür. Yukarıdaki ortak alanlar her zaman kullanılabilir durumdayken, göreve özel tahmin verileri aşağıdaki alanlarda saklanır. YOLO koordinat ve güven tensörleri torch.float32 türündedir; yarı hassasiyet kullanılmadığı sürece olasılık tensörleri torch.float32 türündedir, yarı hassasiyet kullanıldığında ise torch.float16 türündedir. result.numpy() sonrasında tensörler, eşleşen NumPy veri türleriyle birlikte NumPy dizilerine dönüşür. Örnek maskeleri torch.uint8 ikili tensörleriyken, anlamsal maskeler sınıf sayısına bağlı olarak sınıf kimlikleri için en küçük pratik tamsayı veri türünü (torch.uint8, torch.int16 veya torch.int32) kullanır.

ÖznitelikTürŞekilAçıklama
result.boxesBoxes(N)Algılama kutuları.
result.boxes.datatorch.float32(N,6/7)İsteğe bağlı izleme kimliğiyle ham [x1,y1,x2,y2,conf,cls].
result.boxes.xyxytorch.float32(N,4)xyxy piksel kutuları.
result.boxes.conftorch.float32(N,)Güven skorları.
result.boxes.clstorch.float32(N,)Sınıf kimlikleri; adlar için int türüne dönüştür.

Results nesneleri aşağıdaki yöntemlere sahiptir:

YöntemDöndürülen TürAçıklama
update()NoneResults nesnesini kutular, maskeler, probs, obb, keypoints veya anlamsal maskeler gibi yeni verilerle günceller.
cpu()ResultsTüm tensörleri CPU belleğine taşınmış Results nesnesinin bir kopyasını döndürür.
numpy()ResultsTüm tensörleri NumPy dizilerine dönüştürülmüş Results nesnesinin bir kopyasını döndürür.
cuda()ResultsTüm tensörleri GPU belleğine taşınmış Results nesnesinin bir kopyasını döndürür.
to()ResultsTensörleri belirtilen cihaza ve veri türüne taşınmış Results nesnesinin bir kopyasını döndürür.
new()ResultsAynı görüntü, yol, adlar ve hız özniteliklerine sahip yeni bir Results nesnesi oluşturur.
plot()np.ndarrayAlgılama sonuçlarını bir girdi BGR görüntüsüne çizer ve ek açıklamalı görüntüyü döndürür.
show()NoneEk açıklamalı çıkarım sonuçlarının bulunduğu görüntüyü görüntüler.
save()strEk açıklamalı çıkarım sonuçları görüntüsünü bir dosyaya kaydeder ve dosya adını döndürür.
verbose()strHer görev için algılama ve sınıflandırma sonuçlarını ayrıntılandıran bir günlük dizesi döndürür.
save_txt()strAlgılama 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ı Polars DataFrame'ine dönüştürür.
to_csv()strTespit sonuçlarını CSV biçimine dönüştürür.
to_json()strTespit sonuçlarını JSON biçimine dönüştürür.

Daha fazla ayrıntı için Results sınıfı belgelerine bak.

Kutular#

Boxes nesnesi, sınırlayıcı kutuları indekslemek, işlemek ve farklı biçimlere dönüştürmek için kullanılabilir.

Kutular
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

Aşağıda, Boxes sınıfının yöntemlerini ve özelliklerini adları, türleri ve açıklamalarıyla birlikte gösteren bir tablo yer alır:

AdTürAçıklama
cpu()YöntemNesneyi CPU belleğine taşır.
numpy()YöntemNesneyi NumPy dizisine dönüştürür.
cuda()YöntemNesneyi CUDA belleğine taşır.
to()YöntemNesneyi belirtilen cihaza taşır.
xyxyÖzellik (torch.Tensor)Kutuları xyxy biçiminde döndürür.
confÖzellik (torch.Tensor)Kutuların güven değerlerini döndürür.
clsÖzellik (torch.Tensor)Kutuların sınıf değerlerini döndürür.
idÖzellik (torch.Tensor)Kutuların izleme kimliklerini döndürür (varsa).
xywhÖzellik (torch.Tensor)Kutuları xywh biçiminde döndürür.
xyxynÖzellik (torch.Tensor)Kutuları, özgün görüntü boyutuna göre normalleştirilmiş xyxy biçiminde döndürür.
xywhnÖzellik (torch.Tensor)Kutuları, özgün görüntü boyutuna göre normalleştirilmiş xywh biçiminde döndürür.

Daha fazla ayrıntı için Boxes sınıfı belgelerine bak.

Maskeler#

Masks nesnesi, maskeleri indekslemek, işlemek ve segmentlere dönüştürmek için kullanılabilir.

Maskeler
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

Aşağıda, Masks sınıfının yöntemlerini ve özelliklerini adları, türleri ve açıklamalarıyla birlikte gösteren bir tablo yer alır:

AdTürAçıklama
dataÖzellik (torch.Tensor)(N,H,W) şekline ve 0 veya 1 değerlerine sahip torch.uint8 ikili maske tensörü.
cpu()YöntemMaskeler tensörünü CPU belleğinde döndürür.
numpy()YöntemMaskeler tensörünü 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 cihaz ve dtype ile döndürür.
xynÖzellik (list[np.ndarray])Normalleştirilmiş maske çokgenlerinin listesi.
xyÖzellik (list[np.ndarray])Piksel koordinatlarındaki maske çokgenlerinin listesi.

Daha fazla ayrıntı için Masks sınıfı belgelerine bak.

SemanticMask#

SemanticMask, anlamsal segmentasyon sonuçları için tek bir yoğun sınıf haritası depolar. Masks öğesinden farklı olarak, nesne başına bir ikili maske içermez ve çokgen yardımcıları sağlamaz.

SemanticMask
from ultralytics import YOLO

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

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

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
AdTürAçıklama
dataÖzellik (torch.Tensor)(H,W) şekline sahip sınıf kimliği haritası. Dtype, sınıf sayısına göre seçilen torch.uint8, torch.int16 veya torch.int32 değeridir.
shapeÖzellik (tuple)Genellikle result.orig_shape ile eşleşen sınıf haritasının şekli.
cpu()YöntemAnlamsal maske tensörünü CPU belleğinde döndürür.
numpy()YöntemAnlamsal maske tensörünü NumPy dizisi olarak döndürür.
cuda()YöntemAnlamsal maske tensörünü GPU belleğinde döndürür.
to()YöntemAnlamsal maske tensörünü belirtilen cihaz ve dtype ile döndürür.

Keypoint'ler#

Keypoints nesnesi, koordinatları indekslemek, işlemek ve normalleştirmek için kullanılabilir.

Keypoint'ler
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

Aşağıda, Keypoints sınıfının yöntemlerini ve özelliklerini adları, türleri ve açıklamalarıyla birlikte gösteren bir tablo yer alır:

AdTürAçıklama
cpu()YöntemAnahtar noktalar tensörünü CPU belleğinde döndürür.
numpy()YöntemAnahtar noktalar tensörünü NumPy dizisi olarak döndürür.
cuda()YöntemAnahtar noktalar tensörünü GPU belleğinde döndürür.
to()YöntemAnahtar noktalar tensörünü belirtilen cihaz ve dtype ile döndürür.
xynÖzellik (torch.Tensor)Tensörler olarak gösterilen normalleştirilmiş anahtar noktaların listesi.
xyÖzellik (torch.Tensor)Piksel koordinatlarında tensörler olarak gösterilen anahtar noktaların listesi.
confÖzellik (torch.Tensor)Varsa anahtar noktaların güven değerlerini, yoksa None döndürür.

Daha fazla ayrıntı için Keypoints sınıfı belgelerine bak.

Probs#

Probs nesnesi, top1 ve top5 sınıflandırma indekslerini ve skorlarını elde etmek 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

Aşağıda, Probs sınıfının yöntemlerini ve özelliklerini özetleyen bir tablo yer alır:

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 NumPy dizisi olarak bir 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 dtype ile 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.
top1confÖzellik (torch.Tensor)En yüksek 1. sınıfın güven değeri.
top5confÖzellik (torch.Tensor)En yüksek 5 sınıfın güven değerleri.

Daha fazla ayrıntı için Probs sınıfı belgelerine bak.

OBB#

OBB nesnesi, yönlendirilmiş sınırlayıcı kutuları indekslemek, işlemek ve farklı biçimlere 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

Aşağıda, OBB sınıfının yöntemlerini ve özelliklerini adları, türleri ve açıklamalarıyla birlikte gösteren bir tablo yer alır:

AdTürAçıklama
cpu()YöntemNesneyi CPU belleğine taşır.
numpy()YöntemNesneyi NumPy dizisine dönüştürür.
cuda()YöntemNesneyi CUDA belleğine taşır.
to()YöntemNesneyi belirtilen cihaza taşır.
confÖzellik (torch.Tensor)Kutuların güven değerlerini döndürür.
clsÖzellik (torch.Tensor)Kutuların sınıf değerlerini döndürür.
idÖzellik (torch.Tensor)Kutuların izleme kimliklerini döndürür (varsa).
xyxyÖzellik (torch.Tensor)Yatay kutuları xyxy biçiminde döndürür.
xywhrÖzellik (torch.Tensor)Döndürülmüş kutuları xywhr biçiminde döndürür.
xyxyxyxyÖzellik (torch.Tensor)Döndürülmüş kutuları xyxyxyxy biçiminde döndürür.
xyxyxyxynÖzellik (torch.Tensor)Döndürülmüş kutuları, görüntü boyutuna göre normalleştirilmiş xyxyxyxy biçiminde döndürür.

Daha fazla ayrıntı için OBB sınıfı belgelerine bak.

Sonuçları Görselleştirme#

Results nesnelerindeki plot() yöntemi, tespit edilen nesneleri (sınırlayıcı kutular, maskeler, anahtar noktalar ve olasılıklar gibi) özgün görüntünün üzerine bindirerek tahminlerin görselleştirilmesini sağlar. Bu yöntem, açıklamalı görüntüyü NumPy dizisi olarak döndürür; böylece görüntüyü kolayca görüntüleyebilir veya kaydedebilirsin.

Görselleştirme
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öntem Parametreleri#

plot() yöntemi, çıktıyı özelleştirmek için çeşitli bağımsız değişkenleri destekler:

Bağımsız değişkenTürAçıklamaVarsayılan
confboolTespit güven skorlarını dahil eder.True
line_widthfloatSınırlayıcı kutuların çizgi genişliği. None ise görüntü boyutuyla ölçeklenir.None
font_sizefloatMetin yazı tipi boyutu. None ise görüntü boyutuyla ölçeklenir.None
fontstrMetin açıklamaları için yazı tipi adı.'Arial.ttf'
pilboolGörüntüyü PIL Image nesnesi olarak döndürür.False
imgnp.ndarray | torch.TensorAlternatif görüntü. Tensörler bitişik HWC BGR uint8 biçiminde olmalıdır.None
kpt_radiusintÇizilen anahtar noktaların yarıçapı.5
kpt_lineboolAnahtar noktaları çizgilerle birleştirir.True
labelsboolAçıklamalara sınıf etiketlerini dahil eder.True
boxesboolSınırlayıcı kutuları görüntünün üzerine bindirir.True
masksboolMaskeleri görüntünün üzerine bindirir.True
probsboolSınıflandırma olasılıklarını dahil eder.True
showboolAçıklamalı görüntüyü varsayılan görüntü görüntüleyicisini kullanarak doğrudan gösterir.False
saveboolAçıklamalı görüntüyü filename tarafından belirtilen dosyaya kaydeder.False
filenamestrsave, True ise açıklamalı görüntünün kaydedileceği dosyanın yolu ve adı.None
color_modestrRenk modunu belirtir; ö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 BGR metin rengi.(255, 255, 255)

İş Parçacığı Güvenli Çıkarım#

Birden fazla YOLO modelini farklı iş parçacıkları arasında paralel olarak çalıştırırken çıkarım sırasında iş parçacığı güvenliğini sağlamak kritik öneme sahiptir. İş parçacığı güvenli çıkarım, her iş parçacığının tahminlerinin yalıtılmasını ve birbirini etkilememesini garanti eder; böylece yarış koşullarını önler ve tutarlı, güvenilir çıktılar sağlar.

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

İş Parçacığı Güvenli Çıkarım

İş parçacığı güvenli çıkarım için her iş parçacığının içinde tek bir model örneği 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 iş parçacığı güvenli çıkarıma ve adım adım talimatlara ayrıntılı bir bakış için YOLO İş Parçacığı Güvenli Çıkarım Kılavuzu sayfamıza başvur. 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 gereken tüm bilgileri sunar.

Akış Kaynağı for döngüsü#

Aşağıda, video kareleri üzerinde çıkarım gerçekleştirmek için OpenCV (cv2) ve YOLO kullanan bir Python betiği yer alır. Bu betik, gerekli paketleri (opencv-python ve ultralytics) zaten yüklediğini varsayar.

Akış 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 karesi üzerinde tahminler gerçekleştirir, sonuçları görselleştirir ve bunları bir pencerede gösterir. Döngüye 'q' tuşuna basarak çıkabilirsin.

Sırada Ne Var?#

Önceden eğitilmiş bir modelin ötesine geçmeye hazır mısın? Görevinin probleminle uyumlu olduğunu doğrula, kendi verilerini Veri Kümeleri kılavuzuyla biçimlendir ve ardından bu verilerle eğitim yap.

SSS#

  • Ultralytics YOLO; gerçek zamanlı nesne tespiti, örnek segmentasyonu, anlamsal segmentasyon, derinlik tahmini ve sınıflandırma için son teknoloji bir modeldir. Tahmin modu, kullanıcıların görüntüler, videolar ve canlı akışlar gibi çeşitli veri kaynakları üzerinde yüksek hızlı çıkarım gerçekleştirmesini sağlar. Performans ve çok yönlülük için tasarlanan bu mod, toplu işleme ve akış modlarını da sunar. Özellikleri hakkında daha fazla bilgi için Ultralytics YOLO tahmin modu sayfasına göz at.

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

  • Çıkarım hızını optimize etmek ve belleği verimli bir şekilde yönetmek için tahminleyicinin çağrı yönteminde stream=True değerini ayarlayarak akış modunu kullanabilirsin. Akış modu, tüm kareleri belleğe yüklemek yerine bellek açısından verimli bir Results nesne oluşturucusu üretir. 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.

  • YOLO'daki model.predict() yöntemi; conf, iou, imgsz, device ve daha fazlası gibi çeşitli bağımsız değişkenleri destekler. Bu bağımsız değişkenler, 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 bağımsız değişkenlerin ayrıntılı açıklamalarını çıkarım bağımsız değişkenleri bölümünde bulabilirsin.

  • İkinci son katmandan özellik gömmelerini çıkarmak için model.embed(source) kullan veya belirli katmanları seçmek için embed=[layer_index] değerini model.predict() değerine aktar.

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    source = "https://ultralytics.com/images/bus.jpg"
    
    results = model.predict(source)  # Results objects
    embeddings = model.embed(source)  # list of torch.Tensor embeddings
  • YOLO ile çıkarım çalıştırdıktan sonra, Results nesneleri, 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 (ör. result.save("path/to/result.jpg")). Bu yöntemlerin kapsamlı bir listesi için sonuçlarla çalışma bölümüne bakabilirsin.

Yorumlar