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 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ı#
| Üretim | Spor | Güvenlik |
|---|---|---|
| Araç Yedek Parçası Tespiti | Futbolcu 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
Resultsnesne üreteci oluşturmak için akış özelliğini kullan. Bunu tahminleyicinin çağrı yöntemindestream=Trueayarlayarak etkinleştirebilirsin. Tüm sonuçları içeren bir liste döndüren varsayılan davranışın (stream=False) aksine,stream=Truesonuç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:
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.
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 | Örnek | Tür | Notlar |
|---|---|---|---|
| görüntü | 'image.jpg' | str veya Path | Tek bir görüntü dosyası. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | Bir görüntünün URL'si. |
| ekran görüntüsü | 'screen' | str | Ekran görüntüsü al. |
| PIL | Image.open('image.jpg') | PIL.Image | RGB kanallarıyla HWC biçimi. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | BGR kanallarıyla HWC biçimi uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | BGR kanallarıyla HWC biçimi uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | RGB kanallarıyla BCHW biçimi float32 (0.0-1.0). |
| CSV | 'sources.csv' | str veya Path | Görüntü, video veya dizin yollarını içeren CSV dosyası. |
| video ✅ | 'video.mp4' | str veya Path | MP4, AVI vb. biçimlerde video dosyası. |
| dizin ✅ | 'path/' | str veya Path | Görüntü veya video içeren bir dizinin yolu. |
| glob ✅ | 'path/*.jpg' | str | Birden fazla dosyayla eşleşen glob deseni. Joker karakter olarak * karakterini kullan. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | Bir YouTube videosunun URL'si. |
| akış ✅ | 'rtsp://example.com/media.mp4' | str | RTSP, RTMP, TCP gibi akış protokollerinin URL'si veya bir IP adresi. |
| çoklu akış ✅ | 'list.streams' | str veya Path | Her satırda bir akış URL'si bulunan *.streams metin dosyası; örneğin 8 akış, toplu iş boyutu 8 olacak şekilde çalışır. |
| web kamerası ✅ | 0 | int | Çı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:
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=Truekullanı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.
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ş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 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. |
conf | float | 0.25 | Tespitler 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. |
iou | float | 0.7 | Maksimum 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. |
imgsz | int veya tuple | 640 | Letterbox 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. |
rect | bool | True | True 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. |
quantize | int veya str | None | Çı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. |
device | str | None | Çı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. |
dnn | bool | False | True ise ONNX model çıkarımı için ONNX Runtime yerine OpenCV DNN modülünü kullanır. |
data | str | None | Bir 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. |
batch | int | 1 | Çı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_det | int | 300 | Gö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_stride | int | 1 | Video 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_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 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. |
visualize | bool | False | Her 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. |
augment | bool | False | Tahminler 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_nms | bool | False | Sı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. |
classes | list[int] | None | Tahminleri 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_masks | bool | False | Yü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. |
embed | list[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. |
project | str | None | save etkinse tahmin çıktılarının kaydedileceği proje dizininin adı. |
name | str | None | Tahmin ç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. |
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 biçimde işlenmesini sağlar. |
verbose | bool | True | Tahmin 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. |
compile | bool veya str | False | PyTorch 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_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ü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. |
nms | bool, isteğe bağlı | None | Varsayı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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
show | bool | False | True 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. |
save | bool | False or True | Açı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_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 puanlarını ekler. Son işleme ve analiz için kullanılabilir 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 yönelik odaklanmış 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österir. Algılanan nesnelerin hemen anlaşılmasını sağlar. |
show_conf | bool | True | Her 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_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 konumlarını belirlemek için gereklidir. |
line_width | int or None | None | Sı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.
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 Komutu | Referans |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Görüntü Dosyası Biçimi |
.bmp | yolo predict source=image.bmp | Microsoft BMP Dosya 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 tabloda geçerli Ultralytics video biçimleri yer alıyor.
| 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ü Birleştirme |
.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 Aktarım 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ı, Results nesnelerinden oluşan bir liste döndürür:
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ımResults nesneleri şu özniteliklere sahiptir:
| Öznitelik | Tür | Açıklama |
|---|---|---|
orig_img | np.ndarray | Özgün görüntünün NumPy dizisi. |
orig_shape | tuple | Özgün görüntünün (yükseklik, genişlik) biçimindeki ş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 anahtar 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 | Piksel başına yoğun bir sınıf haritası içeren bir SemanticMask nesnesi. |
depth | DepthMap, optional | Piksel başına yoğun bir derinlik haritası içeren bir DepthMap nesnesi. |
speed | dict | Görüntü başına milisaniye cinsinden ön işleme, çıkarım ve son işleme hızlarını içeren bir sözlük. |
names | dict | Sınıf indekslerini sınıf adlarıyla eşleştiren 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 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.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.boxes | Boxes | (N) | Algılama kutuları. |
result.boxes.data | torch.float32 | (N,6/7) | Ham [x1,y1,x2,y2,conf,cls] ve isteğe bağlı izleme kimliği. |
result.boxes.xyxy | torch.float32 | (N,4) | xyxy piksel kutuları. |
result.boxes.conf | torch.float32 | (N,) | Güven puanları. |
result.boxes.cls | torch.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öntem | Dönüş Türü | Açıklama |
|---|---|---|
update() | None | Results nesnesini kutular, maskeler, olasılıklar, obb, anahtar noktalar, anlamsal maskeler veya derinlik 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 aygıta ve veri türüne taşınmış Results nesnesinin bir kopyasını döndürür. |
new() | Results | Aynı image, path, names ve speed özelliklerine sahip yeni bir Results nesnesi oluşturur. |
plot() | np.ndarray | Algı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() | 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ış 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() | DataFrame | Algılama sonuçlarını Polars DataFrame'ine dönüştürür. |
to_csv() | str | Algılama sonuçlarını CSV biçimine dönüştürür. |
to_json() | str | Algı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.
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ırBoxes 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:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Nesneyi CPU belleğine taşı. |
numpy() | Yöntem | Nesneyi NumPy dizisine dönüştür. |
cuda() | Yöntem | Nesneyi CUDA belleğine taşı. |
to() | Yöntem | Nesneyi 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.
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ırMasks 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:
| Ad | Tür | Açı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ö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 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.
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| Ad | Tür | Açı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ö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 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.
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ırKeypoints 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:
| 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 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.
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ırProbs sınıfının yöntem ve özelliklerini özetleyen tablo aşağıda verilmiştir:
| 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 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.
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ırOBB 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:
| Ad | Tür | Açıklama |
|---|---|---|
cpu() | Yöntem | Nesneyi CPU belleğine taşı. |
numpy() | Yöntem | Nesneyi NumPy dizisine dönüştür. |
cuda() | Yöntem | Nesneyi CUDA belleğine taşı. |
to() | Yöntem | Nesneyi 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.
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şken | Tür | Açıklama | Varsayılan |
|---|---|---|---|
conf | bool | Algılama güven skorlarını ekle. | True |
line_width | float | Sınırlayıcı kutuların çizgi kalınlığı. None olduğunda görüntü boyutuna göre ölçeklenir. | None |
font_size | float | Metin yazı tipi boyutu. None olduğunda görüntü boyutuna göre ölçeklenir. | None |
font | str | Metin açıklamalarında kullanılacak yazı tipi adı. | 'Arial.ttf' |
pil | bool | Görüntüyü PIL Image nesnesi olarak döndü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ştir. | True |
labels | bool | Açıklamalara sınıf etiketlerini ekle. | True |
boxes | bool | Görüntünün üzerine sınırlayıcı kutuları bindir. | True |
masks | bool | Görüntünün üzerine maskeleri bindir. | True |
probs | bool | Sınıflandırma olasılıklarını ekle. | True |
show | bool | Açıklama eklenmiş görüntüyü varsayılan görüntü görüntüleyicisini kullanarak doğrudan göster. | False |
save | bool | Açıklama eklenmiş görüntüyü filename ile belirtilen dosyaya kaydet. | False |
filename | str | save, True olduğunda açıklama eklenmiş görüntünün kaydedileceği dosyanın yolu ve adı. | None |
color_mode | str | Renk modunu belirt; ör. 'instance' veya 'class'. | 'class' |
txt_color | tuple[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 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.
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=Trueayarını yaparak akış modunu kullanabilirsin. Akış modu, tüm kareleri belleğe yüklemek yerineResultsnesnelerinden 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,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ı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çinembed=[layer_index]öğesinimodel.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 listesiYOLO ile çıkarım yaptıktan sonra
Resultsnesneleri, 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çinresult.show()veresult.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.