Ultralytics YOLO27:
Get Started

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 tasarlanmış tahmin modu adlı güçlü bir özellik sunar.

Planlanan çıkarım örnekleri için henüz yayımlanmamış YOLO27 önizlemesine bak.



İzle: Özel Projelerin İçin Ultralytics YOLO26 Görevlerinden Sonuçlar Nasıl Çıkarılır 🚀

Gerçek Dünya Uygulamaları#

ÜretimSporGüvenlik
Araç Yedek Parçası TespitiFutbolcu Tespitiİnsan Düşmesi Tespiti

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

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

  • Ç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ı ve yüksek hızlı işlem için tasarlandı.
  • Kullanım kolaylığı: Hızlı dağıtım ve test için sezgisel Python ve CLI arayüzleri.
  • Yüksek düzeyde özelleştirilebilir: Modelin çıkarım davranışını özel gereksinimlerine göre ayarlamak için çeşitli seçenekler ve parametreler.
  • Üretime hazır: Modelleri otomatik ölçeklendirme ve izleme özellikleriyle 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; şu özellikleri sunar:

  • Birden fazla veri kaynağıyla uyumluluk: Verilerin tekil görüntüler, görüntü koleksiyonu, video dosyaları veya gerçek zamanlı video akışları biçiminde olsa da tahmin modu ihtiyacını karşılar.
  • Akış modu: Bellek verimliliği yüksek bir Results nesne üreteci oluşturmak için akış özelliğini kullan. Bunu tahminleyicinin çağrı yönteminde stream=True ayarlayarak etkinleştirebilirsin. Tüm sonuçları içeren bir liste döndüren varsayılan davranışın (stream=False) aksine, stream=True sonuçları teker teker üretir; bu da özelliği uzun videolar ve canlı yayınlar için özellikle kullanışlı kılar.
  • Toplu işleme: Toplam çıkarım süresini daha da azaltmak için birden fazla görüntüyü veya video karesini tek bir toplu işlemde işle.
  • Entegrasyon kolaylığı: Esnek API'si sayesinde mevcut veri işlem hatlarına ve diğer yazılım bileşenlerine kolayca entegre olur.

Ultralytics YOLO modelleri, çıkarım sırasında modele stream=True geçirildiğinde bir Python Results nesne listesi veya bellek verimliliği yüksek bir Results nesne üreteci döndürür:

Tahmin
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n.pt")  # önceden eğitilmiş YOLO26n modeli

# Görüntü listesi üzerinde toplu çıkarım çalıştır
results = model(["image1.jpg", "image2.jpg"])  # Results nesnelerinden oluşan bir liste döndür

# Sonuç listesini işle
for result in results:
    boxes = result.boxes  # Sınırlayıcı kutu çıktıları için Boxes nesnesi
    masks = result.masks  # Segmentasyon maskesi çıktıları için Masks nesnesi
    keypoints = result.keypoints  # Poz çıktıları için Keypoints nesnesi
    probs = result.probs  # Sınıflandırma çıktıları için Probs nesnesi
    obb = result.obb  # OBB çıktıları için yönlendirilmiş kutular nesnesi
    result.show()  # Ekranda göster
    result.save(filename="result.jpg")  # Diske kaydet

Çıkarım Kaynakları#

YOLO26, aşağıdaki tabloda gösterildiği gibi çıkarım için farklı türlerdeki girdi kaynaklarını işleyebilir. Kaynaklar arasında statik görüntüler, video akışları ve çeşitli veri biçimleri bulunur. Tabloda ayrıca her kaynağın stream=True ✅ argümanıyla akış modunda kullanılıp kullanılamayacağı belirtilir. Akış modu, tüm kareleri belleğe yüklemek yerine bir sonuç üreteci oluşturduğu için videoları veya canlı yayınları işlerken avantaj sağlar.

İpucu

Belleği verimli 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 da hızla birikerek büyük girdilerde bellek yetersizliği hatalarına yol açabilir. Buna karşılık stream=True, bellekte yalnızca geçerli karenin veya veri noktasının sonuçlarını tutan bir üreteç kullanır; böylece bellek tüketimini önemli ölçüde azaltır ve bellek yetersizliği sorunlarını önler.

KaynakÖrnekTürNotlar
görüntü'image.jpg'str veya PathTek bir görüntü dosyası.
URL'https://ultralytics.com/images/bus.jpg'strBir görüntünün URL'si.
ekran görüntüsü'screen'strEkran görüntüsü al.
PILImage.open('image.jpg')PIL.ImageRGB kanallarıyla HWC biçimi.
OpenCVcv2.imread('image.jpg')np.ndarrayBGR kanallarıyla HWC biçimi uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayBGR kanallarıyla HWC biçimi uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorRGB kanallarıyla BCHW biçimi 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 vb. biçimlerde video dosyası.
dizin ✅'path/'str veya PathGörüntü veya video içeren bir dizinin yolu.
glob ✅'path/*.jpg'strBirden fazla dosyayla eşleşen glob deseni. Joker karakter olarak * karakterini kullan.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strBir YouTube videosunun URL'si.
akış ✅'rtsp://example.com/media.mp4'strRTSP, RTMP, TCP gibi akış protokollerinin URL'si veya bir IP adresi.
çoklu akış ✅'list.streams'str veya PathHer satırda bir akış URL'si bulunan *.streams metin dosyası; örneğin 8 akış, toplu iş boyutu 8 olacak şekilde çalışır.
web kamerası ✅0intÇıkarımın yapılacağı bağlı kamera cihazının indeksi.

Aşağıda her kaynak türünün kullanımına ilişkin kod örnekleri verilmiştir:

Tahmin kaynakları

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

from ultralytics import YOLO

# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")

# Görüntü dosyasının yolunu tanımla
source = "path/to/image.jpg"

# Kaynak üzerinde çıkarım çalıştır
results = model(source)  # Results nesnelerinden oluşan liste

Çıkarım Argümanları#

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

Sabit şekil ve minimum dikdörtgen (rect)#

Varsayılan olarak predict, rect=True kullanır ve mümkün olduğunda minimum dikdörtgen dolgusu uygular. Görüntü, imgsz içine sığacak şekilde ölçeklendirilir ve yalnızca en yakın stride katına kadar dolguyla tamamlanır; bu nedenle son tensör imgsz değerinden daha küçük olabilir. Minimum dikdörtgen dolgusu yalnızca batch içindeki tüm görüntüler aynı şekle sahipse ve arka uç bunu destekliyorsa kullanılır (PyTorch .pt veya dinamik ONNX gibi dinamik şekilli bir dışa aktarım). Aksi takdirde görüntüler, tam imgsz hedefine kadar doldurulur.

Tam imgsz hedefine kadar her zaman dolgu uygulamak için rect=False kullan. Dışa aktarılan modellerle (ONNX, TensorRT vb.) eşleşmesi için sabit bir girdi boyutuna ihtiyaç duyduğunda bu yöntem önerilir.

Tamsayı ve demet imgsz

  • Bir tamsayı imgsz=640, stride yuvarlamasından sonra kare bir (640, 640) hedefine dönüşür.
  • Bir demet imgsz=(384, 672), dikdörtgen bir hedef belirler. rect=True kullanıldığında gerçek tensör bu hedeften daha küçük olabilir.

Eğitim ve predict/export

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

Örnek
from ultralytics import YOLO

# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")

# 'bus.jpg' üzerinde argümanlarla çıkarım yap
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 aygıt kimliği olabilir. Belirtilmezse günlüğe bir uyarı yazılır ve model yerleşik demo varlıklarına (ultralytics/assets veya OBB için bir demo URL'si) geri döner. Farklı girdi türlerini destekleyerek esnek kullanım sağlar.
conffloat0.25Tespitler için minimum güven eşiğini ayarlar. Bu eşiğin altındaki güven değerleriyle tespit edilen nesneler göz ardı edilir. Bu değeri ayarlamak yanlış pozitifleri azaltmaya yardımcı olabilir.
ioufloat0.7Maksimum Olmayan Bastırma (NMS) için Kesişim/Birleşim (IoU) eşiği. Daha düşük değerler, örtüşen kutuları eleyerek tespit sayısını azaltır; bu da yinelenen tespitleri azaltmak için kullanışlıdır.
imgszint veya tuple640Letterbox hedefi. Bir tam sayı kare N×N, 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. Sabit şekil ve minimum dikdörtgen konusuna bak.
rectboolTrueTrue ise mümkün olduğunda minimum dikdörtgen dolgusu kullanılır (aynı şekilli yığın ve desteklenen arka uç). False ise her zaman imgsz tam boyutuna kadar dolgu yapılır. Sabit şekil ve minimum dikdörtgen konusuna bak.
quantizeint veya strNoneÇıkarım duyarlığı: 16/"fp16" ile 32/"fp32"/boş bırakma, PyTorch ve TorchScript modellerinde FP16 veya FP32 hesaplamayı seçer; diğer biçimler, yapıt ve çalışma ortamının seçtiği duyarlıkta hesaplama yapar. 16 değerinde OpenVINO, çalışma ortamının hesaplama duyarlığını değiştirmeden istemcide girdiyi yine FP16'ya yuvarlar ve sonra FP32'ye genişletir. INT8/PTQ nicemlemesi dışa aktarma sırasında yapılandırılır, ardından dışa 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 aygıtı belirtir (ör. cpu, cuda:0, 0, npu veya npu:0). Modeli çalıştırmak için CPU, belirli bir GPU, Huawei Ascend NPU veya başka hesaplama aygıtları arasından seçim yapmayı sağlar.
dnnboolFalseTrue ise ONNX model çıkarımı için ONNX Runtime yerine OpenCV DNN modülünü kullanır.
datastrNoneBir veri kümesi YAML dosyasının yolu (örn. coco8.yaml); yalnızca names için okunur ve yalnızca yüklenen modelin kendi sınıf adları yoksa kullanılır: üçüncü taraf bir dışa aktarım veya birlikte sunulan meta verilerden ayrılmış bir Ultralytics dışa aktarımı. Aksi takdirde bu tür bir model class0, class1 vb. raporlar.
batchint1Çıkarım için toplu iş boyutunu belirtir (yalnızca kaynak bir dizin, video dosyası veya .txt dosyası olduğunda çalışır). Daha büyük bir toplu iş boyutu, verimi artırarak çıkarım için gereken toplam süreyi kısaltabilir.
max_detint300Görüntü başına izin verilen en yüksek 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ı sayıda çıktı oluşmasını önler.
vid_strideint1Video girdileri için kare adımı. Zamansal çözünürlükten ödün vererek videolardaki kareleri atlamanı ve işlemeyi hızlandırmanı sağlar. 1 değeri her kareyi işler; daha yüksek değerler kare 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 düşürülür (gerçek zamanlı uygulamalar için optimize edilmiştir). True ise yeni kareler arabellekte kuyruğa alınır; böylece hiçbir kare atlanmaz, ancak çıkarım FPS'si akış FPS'sinden düşükse gecikme oluşur.
visualizeboolFalseHer tahminin yanına, tahmin edilen sınıf puanlarını hangi piksellerin yükselttiğini gösteren bir sınıf aktivasyon ısı haritası kaydeder. conf ve classes değerlerini dikkate alır; 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ından ödün vererek algılama sağlamlığını artırabilir. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
agnostic_nmsboolFalseSınıftan bağımsız Maksimum Olmayan Bastırmayı (NMS) etkinleştirir; yalnızca aynı sınıf içindekileri değil, farklı sınıflardaki örtüşen kutular arasında puanı daha düşük olanları da bastırır. Sınıf örtüşmesinin yaygın olduğu çok sınıflı algılama senaryolarında kullanışlıdır. NMS'siz çıkarımda (YOLO26 veya YOLOv10'da nms=False), bu ayar yalnızca aynı algılamanın birden fazla sınıf etiketiyle görünmesini önler (IoU=1.0 yinelenenleri); farklı kutular arasında IoU eşiğine dayalı bastırma yapmaz.
classeslist[int]NoneTahminleri bir sınıf kimliği 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 maskeleri döndürür. Etkinleştirildiğinde döndürülen maskeler (masks.data) özgün görüntü boyutlarıyla eşleşir. Devre dışı bırakıldığında çıkarım sırasında kullanılan görüntü boyutlarında olur.
embedlist[int]NoneÖzellik vektörlerinin veya gömme vektörlerinin çıkarılacağı katmanları belirtir. Son ikinci katmanın gömme vektörleri için model.embed(source) değerini kullan veya belirli katmanları seçmek için model.predict(source, embed=[layer]) değerini belirt. Kümeleme veya benzerlik arama gibi sonraki görevlerde kullanışlıdır. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
projectstrNonesave etkinse tahmin çıktılarının kaydedileceği proje dizininin adı.
namestrNoneTahmin çalıştırmasının adı. save etkinse tahmin çıktılarının saklandığı proje klasöründe 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 biçimde işlenmesini sağlar.
verboseboolTrueTahmin süreci hakkında gerçek zamanlı geri bildirim sağlayarak terminalde ayrıntılı çıkarım günlüklerinin görüntülenip görüntülenmeyeceğini denetler.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", devre dışı bırakmak için False veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa uyarı vererek 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ümlerin yüklü olduğu, oneDNN etkin Linux ve Windows x86 CPU'larda bunu otomatik olarak etkinleştirir; False devre dışı bırakır ve True desteklenen x86 CPU veya CUDA cihazlarında kullanılmasını ister. ARM64, MPS, eski PyTorch sürümleri, oneDNN olmayan CPU'lar ve TensorRT ile ONNX gibi dışa aktarılmış biçimler değişmeden kalır.
nmsbool, isteğe bağlıNoneVarsayılan olarak NMS ile bire-çok çıkarım yapar (None veya True). Kullanılabiliyorsa NMS'siz bire-bir başlığı kullanmak için False değerini ayarla. Ayrıntılar için Uçtan Uca Algılama kılavuzuna bak.

Görselleştirme argümanları:

Bağımsız değişkenTürVarsayılanAçıklama
showboolFalseTrue ise açıklama eklenmiş görüntüleri veya videoları bir pencerede gösterir. Geliştirme veya test sırasında anında görsel geri bildirim almak için kullanışlıdır.
saveboolFalse or TrueAçıklama eklenmiş görüntülerin veya videoların dosyalara kaydedilmesini etkinleştirir. Belgeleme, daha ileri analiz veya sonuçları paylaşmak için kullanışlıdır. CLI kullanıldığında varsayılan değer True, Python'da kullanıldığında False olur.
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 puanlarını ekler. Son işleme ve analiz için kullanılabilir 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 yönelik odaklanmış veri kümeleri oluşturma için kullanışlıdır.
show_labelsboolTrueGörsel çıktıda her algılama için etiketleri gösterir. Algılanan nesnelerin hemen anlaşılmasını sağlar.
show_confboolTrueHer algılamanın güven puanını etiketinin yanında gösterir. Modelin her algılamaya ne kadar güvendiğini görmeni sağlar.
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 konumlarını belirlemek için gereklidir.
line_widthint or NoneNoneSınırlayıcı kutuların çizgi kalınlığını belirtir. None ise çizgi kalınlığı görüntü boyutuna göre otomatik 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 gibi ç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 tabloda geçerli Ultralytics görüntü biçimleri yer alıyor.

Not

HEIC/HEIF biçimleri için pi-heif gerekir; bu paket ilk kullanımda otomatik olarak yüklenir. 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 Dosya 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 tabloda geçerli Ultralytics video biçimleri yer alıyor.

Video UzantılarıÖrnek Predict KomutuReferans
.asfyolo predict source=video.asfGelişmiş Sistemler Biçimi
.aviyolo predict source=video.aviSes ve Görüntü Birleştirme
.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 Aktarım 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ı, Results nesnelerinden oluşan bir liste döndürür:

Results
from ultralytics import YOLO

# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # toplu çıkarım

Results nesneleri şu özniteliklere sahiptir:

ÖznitelikTürAçıklama
orig_imgnp.ndarrayÖzgün görüntünün NumPy dizisi.
orig_shapetupleÖzgün görüntünün (yükseklik, genişlik) biçimindeki ş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 anahtar noktaları içeren bir Keypoints nesnesi.
obbOBB, optionalYönlendirilmiş sınırlayıcı kutuları içeren bir OBB nesnesi.
semantic_maskSemanticMask, optionalPiksel başına yoğun bir sınıf haritası içeren bir SemanticMask nesnesi.
depthDepthMap, optionalPiksel başına yoğun bir derinlik haritası içeren bir DepthMap 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ının yolu.
save_dirstr, optionalSonuçların kaydedileceği dizin.

Göreve Göre Results#

Aşağıdaki alanların hangilerinin doldurulacağı modelinin görevine bağlıdır — henüz seçim yapmadıysan algılama, segmentasyon, anlamsal segmentasyon, derinlik tahmini, sınıflandırma, poz ve OBB'yi karşılaştır. Her tahmin, görüntü veya kare başına bir Results nesnesi döndürür. Yukarıdaki ortak alanlar her zaman kullanılabilir; göreve özgü tahmin verileri ise aşağıdaki alanlarda saklanır. YOLO koordinat ve güven tensörleri torch.float32 olur; FP16 çıkarımı (quantize=16) kullanılmadığı sürece olasılık tensörleri torch.float32 olur; FP16 çıkarımı kullanıldığında torch.float16 olur. result.numpy() işleminden sonra tensörler, eşleşen NumPy veri türlerine sahip NumPy dizilerine dönüşür. Örnek maskeleri torch.uint8 ikili tensörlerdir; anlamsal maskeler ise sınıf kimlikleri için sınıf sayısına bağlı olarak en uygun en küçük tamsayı veri türünü kullanır: torch.uint8, torch.int16 veya torch.int32.

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

Results nesnelerinin aşağıdaki yöntemleri vardır:

YöntemDönüş TürüAçıklama
update()NoneResults nesnesini kutular, maskeler, olasılıklar, obb, anahtar noktalar, anlamsal maskeler veya derinlik 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 aygıta ve veri türüne taşınmış Results nesnesinin bir kopyasını döndürür.
new()ResultsAynı image, path, names ve speed özelliklerine sahip yeni bir Results nesnesi oluşturur.
plot()np.ndarrayAlgılama sonuçlarını bir BGR giriş görüntüsü üzerinde çizer ve açıklama eklenmiş görüntüyü döndürür.
show()NoneÇıkarım sonuçlarına açıklama eklenmiş görüntüyü gösterir.
save()strÇıkarım sonuçlarına açıklama eklenmiş görüntüyü 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ış algılama görüntülerini belirtilen dizine kaydeder.
summary()List[Dict[str, Any]]Çıkarım sonuçlarını isteğe bağlı normalleştirme uygulayarak özetlenmiş bir sözlüğe dönüştürür.
to_df()DataFrameAlgılama sonuçlarını Polars DataFrame'ine dönüştürür.
to_csv()strAlgılama sonuçlarını CSV biçimine dönüştürür.
to_json()strAlgılama sonuçlarını JSON biçimine dönüştürür.

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

Kutular#

Boxes nesnesi; sınırlayıcı kutuları dizinlemek, üzerinde işlem yapmak ve farklı biçimlere dönüştürmek için kullanılabilir.

Kutular
from ultralytics import YOLO

# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.boxes)  # Algılanan sınırlayıcı kutuları içeren Boxes nesnesini yazdır

Boxes sınıfının yöntem ve özelliklerinin adlarını, türlerini ve açıklamalarını içeren tablo aşağıda verilmiştir:

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

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

Maskeler#

Masks nesnesi; maskeleri dizinlemek, üzerinde işlem yapmak ve segmentlere dönüştürmek için kullanılabilir.

Maskeler
from ultralytics import YOLO

# Önceden eğitilmiş YOLO26n-seg Segment modelini yükle
model = YOLO("yolo26n-seg.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.masks)  # Algılanan örnek maskelerini içeren Masks nesnesini yazdır

Masks sınıfının yöntem ve özelliklerinin adlarını, türlerini ve açıklamalarını içeren tablo aşağıda verilmiştir:

AdTürAçıklama
dataÖzellik (torch.Tensor)torch.uint8 ikili maske tensörü, şekil olarak (N,H,W) boyutuna ve 0 veya 1 değerlerine sahiptir.
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 aygıt ve veri türüyle döndürür.
xynÖzellik (list[np.ndarray])Normalize edilmiş maske çokgenlerinin listesi.
xyÖzellik (list[np.ndarray])Piksel koordinatlarındaki maske çokgenlerinin listesi.

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

SemanticMask#

SemanticMask, anlamsal bölümleme sonuçları için tek bir yoğun sınıf haritası depolar. Masks'den farklı olarak, nesne başına bir ikili maske içermez ve çokgen yardımcıları sunmaz.

SemanticMask
from ultralytics import YOLO

# Önceden eğitilmiş YOLO26n-sem Semantic modelini yükle
model = YOLO("yolo26n-sem.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.semantic_mask.data)  # H x W sınıf kimliği haritasını yazdır
AdTürAçıklama
dataÖzellik (torch.Tensor)(H,W) biçimindeki sınıf kimliği haritası. Veri türü, 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 aygıt ve veri türüyle döndürür.

Anahtar Noktalar#

Keypoints nesnesi; koordinatları dizinlemek, üzerinde işlem yapmak ve normalize etmek için kullanılabilir.

Anahtar Noktalar
from ultralytics import YOLO

# Önceden eğitilmiş YOLO26n-pose Pose modelini yükle
model = YOLO("yolo26n-pose.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.keypoints)  # Algılanan anahtar noktaları içeren Keypoints nesnesini yazdır

Keypoints sınıfının yöntem ve özelliklerinin adlarını, türlerini ve açıklamalarını içeren tablo aşağıda verilmiştir:

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 aygıt ve veri türüyle döndürür.
xynÖzellik (torch.Tensor)(N,K,2) biçimindeki normalize edilmiş anahtar nokta koordinatları.
xyÖzellik (torch.Tensor)(N,K,2) biçimindeki piksel cinsinden anahtar nokta koordinatları.
confÖzellik (torch.Tensor)Varsa anahtar noktaların güven değerlerini, yoksa None değerini döndürür.

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

Olasılıklar#

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

Olasılıklar
from ultralytics import YOLO

# Önceden eğitilmiş YOLO26n-cls Classify modelini yükle
model = YOLO("yolo26n-cls.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/bus.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.probs)  # Algılanan sınıf olasılıklarını içeren Probs nesnesini yazdır

Probs sınıfının yöntem ve özelliklerini özetleyen tablo aşağıda verilmiştir:

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 veri türündeki bir kopyasını döndürür.
top1Özellik (int)En yüksek ilk 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 ilk sınıfın güven skoru.
top5confÖzellik (torch.Tensor)En yüksek 5 sınıfın güven skorları.

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

OBB#

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

OBB
from ultralytics import YOLO

# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n-obb.pt")

# Bir görüntü üzerinde çıkarım yap
results = model("https://ultralytics.com/images/boats.jpg")  # sonuçlar listesi

# Sonuçları görüntüle
for r in results:
    print(r.obb)  # yönlendirilmiş algılama sınırlayıcı kutularını içeren OBB nesnesini yazdır

OBB sınıfının yöntem ve özelliklerinin adlarını, türlerini ve açıklamalarını içeren tablo aşağıda verilmiştir:

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

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

Sonuçları Görselleştirme#

Results nesnelerindeki plot() yöntemi, algılanan nesneleri (sınırlayıcı kutular, maskeler, anahtar noktalar ve olasılıklar gibi) orijinal görüntünün üzerine bindirerek tahminlerin görselleştirilmesini sağlar. Bu yöntem, açıklama eklenmiş 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önteminin 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
confboolAlgılama güven skorlarını ekle.True
line_widthfloatSınırlayıcı kutuların çizgi kalınlığı. None olduğunda görüntü boyutuna göre ölçeklenir.None
font_sizefloatMetin yazı tipi boyutu. None olduğunda görüntü boyutuna göre ölçeklenir.None
fontstrMetin açıklamalarında kullanılacak yazı tipi adı.'Arial.ttf'
pilboolGörüntüyü PIL Image nesnesi olarak döndü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ştir.True
labelsboolAçıklamalara sınıf etiketlerini ekle.True
boxesboolGörüntünün üzerine sınırlayıcı kutuları bindir.True
masksboolGörüntünün üzerine maskeleri bindir.True
probsboolSınıflandırma olasılıklarını ekle.True
showboolAçıklama eklenmiş görüntüyü varsayılan görüntü görüntüleyicisini kullanarak doğrudan göster.False
saveboolAçıklama eklenmiş görüntüyü filename ile belirtilen dosyaya kaydet.False
filenamestrsave, True olduğunda açıklama eklenmiş görüntünün kaydedileceği dosyanın yolu ve adı.None
color_modestrRenk modunu belirt; ör. 'instance' veya 'class'.'class'
txt_colortuple[int, int, int]Sınıflandırma etiketleri için BGR metin rengi.(255, 255, 255)

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

Farklı iş parçacıklarında birden fazla YOLO modeli paralel olarak çalıştırılırken çıkarım sırasında iş parçacığı güvenliğini sağlamak çok önemlidir. İş parçacığı güvenli çıkarım, her iş parçacığının tahminlerinin birbirinden yalıtılmasını ve birbirine müdahale etmemesini garanti eder; böylece yarış koşulları önlenir ve tutarlı, güvenilir çıktılar elde edilir.

YOLO modellerini çok iş parçacıklı bir uygulamada kullanırken çakışmaları önlemek için her iş parçacığına ayrı bir model nesnesi örneği oluşturmak veya iş parçacığına özel 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)
    # Sonuçları işle

# Her biri kendi model örneğine sahip iş parçacıklarını başlat
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ımı ayrıntılı olarak incelemek ve adım adım yönergeler için YOLO ile İş Parçacığı Güvenli Çıkarım Kılavuzumuza başvur. Bu kılavuz, yaygın sorunlardan 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 karelerinde çıkarım yapmak için OpenCV (cv2) ve YOLO kullanan bir Python betiği yer alıyor. Bu betik, gerekli paketleri (opencv-python ve ultralytics) zaten yüklediğini varsayar.

Akış for döngüsü
import cv2

from ultralytics import YOLO

# YOLO modelini yükle
model = YOLO("yolo26n.pt")

# Video dosyasını aç
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Video kareleri üzerinde döngü oluştur
while cap.isOpened():
    # Videodan bir kare oku
    success, frame = cap.read()

    if success:
        # Kare üzerinde YOLO çıkarımı yap
        results = model(frame)

        # Sonuçları kare üzerinde görselleştir
        annotated_frame = results[0].plot()

        # Açıklama eklenmiş kareyi görüntüle
        cv2.imshow("YOLO Inference", annotated_frame)

        # 'q' tuşuna basılırsa döngüyü sonlandır
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Videonun sonuna ulaşılırsa döngüyü sonlandır
        break

# Video yakalama nesnesini serbest bırak ve görüntüleme penceresini kapat
cap.release()
cv2.destroyAllWindows()

Bu betik, videonun her karesinde tahminler yapar, sonuçları görselleştirir ve bir pencerede görüntüler. 'q' tuşuna basarak döngüden çıkabilirsin.

Sırada ne var?#

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

Sık Sorulan Sorular#

  • Ultralytics YOLO; gerçek zamanlı nesne algılama, örnek bölütleme, anlamsal bölütleme, derinlik tahmini, sınıflandırma, poz tahmini ve yönlendirilmiş sınırlayıcı kutu (OBB) algılama için son teknoloji ürünü bir modeldir. Tahmin modu, kullanıcıların görüntüler, videolar ve canlı akışlar gibi çeşitli veri kaynaklarında yüksek hızlı çıkarım yapmasını sağlar. Performans ve çok yönlülük için tasarlanan model, toplu işleme ve akış modlarını da sunar. Özellikleri hakkında daha fazla bilgi için Ultralytics YOLO tahmin moduna göz at.

  • Ultralytics YOLO; tekil görüntüler, videolar, dizinler, URL'ler ve akışlar dâhil 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', bir URL içinse 'https://ultralytics.com/images/bus.jpg' kullan. Belgelerdeki çeşitli çıkarım kaynakları için ayrıntılı örneklere göz at.

  • Çıkarım hızını optimize etmek ve belleği verimli kullanmak için tahmincinin çağrı yönteminde stream=True ayarını yaparak akış modunu kullanabilirsin. Akış modu, tüm kareleri belleğe yüklemek yerine Results nesnelerinden oluşan, belleği verimli kullanan bir üretici oluşturur. Uzun videoları veya büyük veri kümelerini işlerken 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ılacak 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] öğesini model.predict() öğesine aktar.

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    source = "https://ultralytics.com/images/bus.jpg"
    
    results = model.predict(source)  # Sonuç nesneleri
    embeddings = model.embed(source)  # torch.Tensor gömmelerinin listesi
  • YOLO ile çıkarım yaptıktan sonra Results nesneleri, açıklama eklenmiş görüntüleri görüntüleme ve kaydetme yöntemlerini 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ındaki yolda eksik olan üst dizinler otomatik olarak oluşturulur (ör. result.save("path/to/result.jpg")). Bu yöntemlerin kapsamlı listesi için sonuçlarla çalışma bölümüne başvur.

Yorumlar