Ultralytics YOLO ile Model Tahmini#
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ı#
| Üretim | Spor | Güvenlik |
|---|---|---|
| Araç Yedek Parçası Tespiti | Futbolcu 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
Resultsnesne oluşturucu üretmek için akış özelliğini kullan. Bunu, tahmincinin çağrı yöntemindestream=Trueayarlayarak etkinleştir. Tüm sonuçları içeren bir liste döndüren varsayılan davranışın (stream=False) aksine,stream=Truesonuç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:
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.
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 | Örnek | Tür | Notlar |
|---|---|---|---|
| image | 'image.jpg' | str veya Path | Tek görsel dosyası. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | Bir görsele URL. |
| screenshot | 'screen' | str | Ekran görüntüsü yakala. |
| PIL | Image.open('image.jpg') | PIL.Image | RGB kanallarına sahip HWC biçimi. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | BGR kanallarına sahip HWC biçimi uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | BGR kanallarına sahip HWC biçimi uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | RGB kanallarına sahip BCHW biçimi float32 (0.0-1.0). |
| CSV | 'sources.csv' | str veya Path | Görsellere, videolara veya dizinlere giden yolları içeren CSV dosyası. |
| video ✅ | 'video.mp4' | str veya Path | MP4, AVI vb. biçimlerde video dosyası. |
| directory ✅ | 'path/' | str veya Path | Görseller veya videolar içeren bir dizinin yolu. |
| glob ✅ | 'path/*.jpg' | str | Birden çok dosyayla eşleşecek glob deseni. Joker karakter olarak * karakterini kullan. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | Bir YouTube videosunun URL'si. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | RTSP, RTMP, TCP gibi akış protokolleri veya bir IP adresi için URL. |
| multi-stream ✅ | 'list.streams' | str veya Path | Her satırda bir akış URL'si bulunan *.streams metin dosyası; yani 8 akış, 8 toplu işlem boyutuyla çalışır. |
| webcam ✅ | 0 | int | Ü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:
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=Trueveauto=Trueile 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.
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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
source | str veya int veya None | None | Çı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. |
conf | float | 0.25 | Algı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. |
iou | float | 0.7 | Birleş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. |
imgsz | int veya tuple | 640 | Letterbox 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. |
rect | bool | True | True 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. |
quantize | int veya str | None | Çı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. |
device | str | None | Çı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. |
dnn | bool | False | True ise ONNX modeli çıkarımı için ONNX Runtime yerine OpenCV DNN modülünü kullanır. |
data | str | None | Yalnı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. |
batch | int | 1 | Çı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_det | int | 300 | Gö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_stride | int | 1 | Video 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_buffer | bool | False | Video 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. |
visualize | bool | False | Her 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. |
augment | bool | False | Tahminler 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_nms | bool | False | Sı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. |
classes | list[int] | None | Tahminleri 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_masks | bool | False | Yü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. |
embed | list[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. |
project | str | None | save etkinleştirilmişse tahmin çıktılarının kaydedildiği proje dizininin adı. |
name | str | None | Tahmin ç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. |
stream | bool | False | Tü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. |
verbose | bool | True | Terminalde 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. |
compile | bool veya str | False | PyTorch 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_last | bool | None | Yerel 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. |
nms | bool, isteğe bağlı | None | Varsayı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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
show | bool | False | True 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. |
save | bool | False or True | Ek 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_frames | bool | False | Videolar 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_txt | bool | False | Algı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_conf | bool | False | Kaydedilen metin dosyalarına güven skorlarını ekler. Sonraki işleme ve analiz için kullanılabilen ayrıntıları artırır. |
save_crop | bool | False | Algı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_labels | bool | True | Görsel çıktıda her algılama için etiketleri görüntüler. Algılanan nesnelerin hemen anlaşılmasını sağlar. |
show_conf | bool | True | Her 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_boxes | bool | True | Algı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_width | int or None | None | Sı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.
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 Komutu | Referans |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Görüntü Dosyası Biçimi |
.bmp | yolo predict source=image.bmp | Microsoft BMP Dosyası Biçimi |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | Yüksek Verimli Görüntü Biçimi |
.heif | yolo predict source=image.heif | Yüksek Verimli Görüntü Biçimi |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Çoklu Görüntü Nesnesi |
.png | yolo predict source=image.png | Taşınabilir Ağ Grafikleri |
.tif | yolo predict source=image.tif | Etiketli Görüntü Dosyası Biçimi |
.tiff | yolo predict source=image.tiff | Etiketli Görüntü Dosyası Biçimi |
.webp | yolo predict source=image.webp | WebP |
Videolar#
Aşağıdaki tablo geçerli Ultralytics video biçimlerini içerir.
| Video Uzantıları | Örnek Predict Komutu | Referans |
|---|---|---|
.asf | yolo predict source=video.asf | Gelişmiş Sistemler Biçimi |
.avi | yolo predict source=video.avi | Ses ve Görüntü İç İçe Geçirme |
.gif | yolo predict source=video.gif | Grafik Değişim Biçimi |
.m4v | yolo predict source=video.m4v | MPEG-4 Bölüm 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime Dosya Biçimi |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Bölüm 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Bölüm 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Bölüm 2 |
.ts | yolo predict source=video.ts | MPEG Taşıma Akışı |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM Projesi |
Results ile Çalışma#
Tüm Ultralytics predict() çağrıları bir Results nesneleri listesi döndürür:
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 inferenceResults nesneleri aşağıdaki özniteliklere sahiptir:
| Öznitelik | Tür | Açıklama |
|---|---|---|
orig_img | np.ndarray | NumPy dizisi olarak özgün görüntü. |
orig_shape | tuple | (yükseklik, genişlik) biçiminde özgün görüntü şekli. |
boxes | Boxes, optional | Algılama sınırlayıcı kutularını içeren bir Boxes nesnesi. |
masks | Masks, optional | Algılama maskelerini içeren bir Masks nesnesi. |
probs | Probs, optional | Sınıflandırma görevi için her sınıfın olasılıklarını içeren bir Probs nesnesi. |
keypoints | Keypoints, optional | Her nesne için algılanan kilit noktaları içeren bir Keypoints nesnesi. |
obb | OBB, optional | Yönlendirilmiş sınırlayıcı kutuları içeren bir OBB nesnesi. |
semantic_mask | SemanticMask, optional | Yoğun piksel başına sınıf haritasını içeren bir SemanticMask nesnesi. |
speed | dict | Görüntü başına milisaniye cinsinden ön işleme, çıkarım ve son işleme hızlarını eşleyen bir sözlük. |
names | dict | Sınıf dizinlerini sınıf adlarıyla eşleyen bir sözlük. |
path | str | Görüntü dosyasının yolu. |
save_dir | str, optional | Sonuç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.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.boxes | Boxes | (N) | Algılama kutuları. |
result.boxes.data | torch.float32 | (N,6/7) | İsteğe bağlı izleme kimliğiyle ham [x1,y1,x2,y2,conf,cls]. |
result.boxes.xyxy | torch.float32 | (N,4) | xyxy piksel kutuları. |
result.boxes.conf | torch.float32 | (N,) | Güven skorları. |
result.boxes.cls | torch.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öntem | Döndürülen Tür | Açıklama |
|---|---|---|
update() | None | Results nesnesini kutular, maskeler, probs, obb, keypoints veya anlamsal maskeler gibi yeni verilerle günceller. |
cpu() | Results | Tüm tensörleri CPU belleğine taşınmış Results nesnesinin bir kopyasını döndürür. |
numpy() | Results | Tüm tensörleri NumPy dizilerine dönüştürülmüş Results nesnesinin bir kopyasını döndürür. |
cuda() | Results | Tüm tensörleri GPU belleğine taşınmış Results nesnesinin bir kopyasını döndürür. |
to() | Results | Tensörleri belirtilen cihaza ve veri türüne taşınmış Results nesnesinin bir kopyasını döndürür. |
new() | Results | Aynı görüntü, yol, adlar ve hız özniteliklerine sahip yeni bir Results nesnesi oluşturur. |
plot() | np.ndarray | Algı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() | None | Ek açıklamalı çıkarım sonuçlarının bulunduğu görüntüyü görüntüler. |
save() | str | Ek açıklamalı çıkarım sonuçları görüntüsünü bir dosyaya kaydeder ve dosya adını döndürür. |
verbose() | str | Her 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() | str | Algılama sonuçlarını bir metin dosyasına kaydeder ve kaydedilen dosyanın yolunu döndürür. |
save_crop() | None | Kı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() | DataFrame | Tespit sonuçlarını Polars DataFrame'ine dönüştürür. |
to_csv() | str | Tespit sonuçlarını CSV biçimine dönüştürür. |
to_json() | str | Tespit 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.
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 boxesAş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:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Nesneyi CPU belleğine taşır. |
numpy() | Yöntem | Nesneyi NumPy dizisine dönüştürür. |
cuda() | Yöntem | Nesneyi CUDA belleğine taşır. |
to() | Yöntem | Nesneyi 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.
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 masksAş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:
| Ad | Tür | Açıklama |
|---|---|---|
data | Özellik (torch.Tensor) | (N,H,W) şekline ve 0 veya 1 değerlerine sahip torch.uint8 ikili maske tensörü. |
cpu() | Yöntem | Maskeler tensörünü CPU belleğinde döndürür. |
numpy() | Yöntem | Maskeler tensörünü NumPy dizisi olarak döndürür. |
cuda() | Yöntem | Maskeler tensörünü GPU belleğinde döndürür. |
to() | Yöntem | Maskeler 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.
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| Ad | Tür | Açı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öntem | Anlamsal maske tensörünü CPU belleğinde döndürür. |
numpy() | Yöntem | Anlamsal maske tensörünü NumPy dizisi olarak döndürür. |
cuda() | Yöntem | Anlamsal maske tensörünü GPU belleğinde döndürür. |
to() | Yöntem | Anlamsal 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.
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 keypointsAş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:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Anahtar noktalar tensörünü CPU belleğinde döndürür. |
numpy() | Yöntem | Anahtar noktalar tensörünü NumPy dizisi olarak döndürür. |
cuda() | Yöntem | Anahtar noktalar tensörünü GPU belleğinde döndürür. |
to() | Yöntem | Anahtar 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.
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 probabilitiesAşağıda, Probs sınıfının yöntemlerini ve özelliklerini özetleyen bir tablo yer alır:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Probs tensörünün CPU belleğindeki bir kopyasını döndürür. |
numpy() | Yöntem | Probs tensörünün NumPy dizisi olarak bir kopyasını döndürür. |
cuda() | Yöntem | Probs tensörünün GPU belleğindeki bir kopyasını döndürür. |
to() | Yöntem | Probs 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.
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 boxesAş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:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Nesneyi CPU belleğine taşır. |
numpy() | Yöntem | Nesneyi NumPy dizisine dönüştürür. |
cuda() | Yöntem | Nesneyi CUDA belleğine taşır. |
to() | Yöntem | Nesneyi 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.
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şken | Tür | Açıklama | Varsayılan |
|---|---|---|---|
conf | bool | Tespit güven skorlarını dahil eder. | True |
line_width | float | Sınırlayıcı kutuların çizgi genişliği. None ise görüntü boyutuyla ölçeklenir. | None |
font_size | float | Metin yazı tipi boyutu. None ise görüntü boyutuyla ölçeklenir. | None |
font | str | Metin açıklamaları için yazı tipi adı. | 'Arial.ttf' |
pil | bool | Görüntüyü PIL Image nesnesi olarak döndürür. | False |
img | np.ndarray | torch.Tensor | Alternatif görüntü. Tensörler bitişik HWC BGR uint8 biçiminde olmalıdır. | None |
kpt_radius | int | Çizilen anahtar noktaların yarıçapı. | 5 |
kpt_line | bool | Anahtar noktaları çizgilerle birleştirir. | True |
labels | bool | Açıklamalara sınıf etiketlerini dahil eder. | True |
boxes | bool | Sınırlayıcı kutuları görüntünün üzerine bindirir. | True |
masks | bool | Maskeleri görüntünün üzerine bindirir. | True |
probs | bool | Sınıflandırma olasılıklarını dahil eder. | True |
show | bool | Açıklamalı görüntüyü varsayılan görüntü görüntüleyicisini kullanarak doğrudan gösterir. | False |
save | bool | Açıklamalı görüntüyü filename tarafından belirtilen dosyaya kaydeder. | False |
filename | str | save, True ise açıklamalı görüntünün kaydedileceği dosyanın yolu ve adı. | None |
color_mode | str | Renk modunu belirtir; örneğin 'instance' veya 'class'. | 'class' |
txt_color | tuple[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 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.
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=Truedeğerini ayarlayarak akış modunu kullanabilirsin. Akış modu, tüm kareleri belleğe yüklemek yerine bellek açısından verimli birResultsnesne 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,deviceve 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çinembed=[layer_index]değerinimodel.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 embeddingsYOLO ile çıkarım çalıştırdıktan sonra,
Resultsnesneleri, 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çinresult.show()veresult.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.