İçeriğe geç

Ultralytics YOLO ile Model Tahmini

Ultralytics YOLO ekosistemi ve entegrasyonları

Giriş

Makine öğrenimi ve bilgisayar görüşü dünyasında, görsel verilerden anlam çıkarma işlemine 'çıkarım' veya 'tahmin' denir. Ultralytics YOLO11, çok çeşitli veri kaynaklarında yüksek performanslı, gerçek zamanlı çıkarım için uyarlanmış tahmin modu olarak bilinen güçlü bir özellik sunar.



İzle: Özel Projeler için Ultralytics YOLO Modelinden Çıktılar Nasıl Çıkarılır?

Gerçek Dünya Uygulamaları

Üretim Spor Güvenlik
Araç Yedek Parça Tespiti Futbol Oyuncusu Tespiti İnsan Düşme Tespiti
Araç Yedek Parça Tespiti Futbol Oyuncusu Tespiti İnsan Düşme Tespiti

Çıkarım için Neden Ultralytics YOLO Kullanılır?

İşte çeşitli çıkarım ihtiyaçlarınız için neden YOLO11'in tahmin modunu düşünmeniz gerektiği:

  • Çok Yönlülük: Resimler, videolar ve hatta canlı yayınlar üzerinde çıkarımlar yapabilir.
  • Performans: Doğruluktan ödün vermeden gerçek zamanlı, yüksek hızlı işleme için tasarlanmıştır.
  • Kullanım Kolaylığı: Hızlı dağıtım ve test için sezgisel Python ve CLI arayüzleri.
  • Yüksek Oranda Özelleştirilebilir: Modelin çıkarım davranışını özel gereksinimlerinize göre ayarlamak için çeşitli ayarlar ve parametreler.

Tahmin Modunun Temel Özellikleri

YOLO11'in tahmin modu, sağlam ve çok yönlü olacak şekilde tasarlanmıştır ve şu özelliklere sahiptir:

  • Çoklu Veri Kaynağı Uyumluluğu: Verileriniz ister tek tek görüntüler, ister görüntü koleksiyonu, video dosyaları veya gerçek zamanlı video akışları şeklinde olsun, tahmin modu sizi kapsar.
  • Akış Modu: Bellek açısından verimli bir üreteç oluşturmak için akış özelliğini kullanın: Results nesneler. Bunu ayarlayarak etkinleştirin stream=True tahmin edicinin çağırma yönteminde.
  • Toplu İşleme: Tek bir partide birden fazla görüntü veya video karesini işleme yeteneği, çıkarım süresini daha da hızlandırır.
  • Entegrasyon Dostu: Esnek API'si sayesinde mevcut veri işlem hatları ve diğer yazılım bileşenleriyle kolayca entegre olur.

Ultralytics YOLO modelleri, bir python listesi veya Results nesneler veya belleği verimli kullanan bir python nesne üreteci. Results olduğunda nesneler stream=True çıkarım sırasında modele iletilir:

Tahmin et

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n 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
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

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

# Process results generator
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ı

YOLO11, aşağıdaki tabloda gösterildiği gibi çıkarım için farklı türde girdi kaynaklarını işleyebilir. Kaynaklar, statik görüntüler, video akışları ve çeşitli veri formatlarını içerir. Tablo ayrıca, her kaynağın bağımsız değişkeniyle akış modunda kullanılıp kullanılamayacağını da gösterir. stream=True ✅ Akış modu, tüm çerçeveleri belleğe yüklemek yerine bir sonuç üreteci oluşturduğu için videoları veya canlı yayınları işlemek için faydalıdır.

İpucu

Kullanım stream=True belleği verimli bir şekilde yönetmek için uzun videoları veya büyük veri kümelerini işlemek için. Ne zaman stream=False, tüm kareler veya veri noktaları için sonuçlar bellekte saklanır; bu da hızla artabilir ve büyük girişler için bellek yetersiz hatalarına neden olabilir. Aksine, stream=True bir üreteç kullanır, bu da yalnızca mevcut kare veya veri noktasının sonuçlarını bellekte tutar, bu da 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 resim dosyası.
URL 'https://ultralytics.com/images/bus.jpg' str Bir resmin URL'si.
ekran görüntüsü 'screen' str Ekran görüntüsü yakalayın.
PIL Image.open('image.jpg') PIL.Image RGB kanallarıyla HWC formatı.
OpenCV cv2.imread('image.jpg') np.ndarray BGR kanallarıyla HWC formatı uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray BGR kanallarıyla HWC formatı uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor RGB kanallarıyla BCHW formatı float32 (0.0-1.0).
CSV 'sources.csv' str veya Path Görüntülerin, videoların veya dizinlerin yollarını içeren CSV dosyası.
video ✅ 'video.mp4' str veya Path MP4, AVI vb. formatlarda video dosyası
dizini ✅ 'path/' str veya Path Görüntüler veya videolar içeren bir dizinin yolu.
glob ✅ 'path/*.jpg' str Birden çok dosyayı eşleştirmek için Glob deseni. Şunu kullanın: * karakteri joker karakter olarak.
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str Bir YouTube videosunun URL'si.
akış ✅ 'rtsp://example.com/media.mp4' str RTSP, RTMP, TCP gibi akış protokolleri veya bir IP adresi için URL.
çoklu akış ✅ 'list.streams' str veya Path *.streams satır başına bir akış URL'si içeren metin dosyası, yani 8 akış 8 toplu iş boyutunda çalışacaktır.
web kamerası ✅ 0 int Üzerinde çıkarım yapılacak bağlı kamera cihazının dizini.

Aşağıda, her kaynak türünü kullanmak için kod örnekleri bulunmaktadır:

Tahmin kaynakları

Bir resim dosyası üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Ekran görüntüsü olarak mevcut ekran içeriği üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

URL aracılığıyla uzaktan barındırılan bir resim veya video üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

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

Python Görüntüleme Kütüphanesi (PIL) ile açılan bir resim üzerinde çıkarım çalıştırın.

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Open an image using PIL
source = Image.open("path/to/image.jpg")

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

OpenCV ile okunan bir resim üzerinde çıkarım çalıştırın.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

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

Bir numpy dizisi olarak temsil edilen bir resim üzerinde çıkarım çalıştırın.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

PyTorch tensörü olarak temsil edilen bir resim üzerinde çıkarım çalıştırın.

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

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

Bir CSV dosyasında listelenen bir resim, URL, video ve dizin koleksiyonu üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

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

Bir video dosyası üzerinde çıkarım çalıştırın. Kullanarak stream=True, bellek kullanımını azaltmak için bir Sonuç nesnesi oluşturucu oluşturabilirsiniz.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Bir dizindeki tüm resimler ve videolar üzerinde çıkarım çalıştırın. Alt dizinlerdeki resimleri ve videoları da yakalamak için bir glob deseni kullanın, örneğin: path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Bir glob ifadesiyle eşleşen tüm resimler ve videolar üzerinde çıkarım çalıştırın: * karakterler.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Bir YouTube videosu üzerinde çıkarım çalıştırın. Kullanarak stream=True, uzun videolar için bellek kullanımını azaltmak amacıyla bir Sonuç nesnesi oluşturucu oluşturabilirsiniz.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

RTSP, RTMP, TCP veya IP adresi protokollerini kullanarak canlı video akışlarında çıkarım çalıştırmak için akış modunu kullanın. Tek bir akış sağlanırsa, model çıkarımı şu şekilde çalıştırır: yığın boyutu 1'in. Birden çok akış için bir .streams metin dosyası, toplu çıkarım gerçekleştirmek için kullanılabilir; burada toplu iş boyutu, sağlanan akış sayısıyla belirlenir (örneğin, 8 akış için 8 toplu iş boyutu).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Tek akış kullanımı için, toplu iş boyutu varsayılan olarak 1'e ayarlanmıştır ve video akışının verimli bir şekilde gerçek zamanlı işlenmesini sağlar.

Aynı anda birden fazla video akışını işlemek için şunu kullanın: .streams akış kaynaklarını içeren metin dosyası. Model, toplu iş boyutunun akış sayısına eşit olduğu toplu çıkarım çalıştıracaktır. Bu kurulum, birden fazla akışın eşzamanlı olarak verimli bir şekilde işlenmesini sağlar.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Örnek .streams metin dosyası:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Dosyadaki her satır bir akış kaynağını temsil eder ve aynı anda birkaç video akışını izlemenize ve çıkarım yapmanıza olanak tanır.

Belirli bir kameranın dizinini ileterek bağlı bir kamera cihazında çıkarım çalıştırabilirsiniz: source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on the source
results = model(source=0, stream=True)  # generator of Results objects

Çıkarım Argümanları

model.predict() çıkarım zamanında varsayılanları geçersiz kılmak için iletilebilen birden çok argümanı kabul eder:

Örnek

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

Çıkarım argümanları:

Argüman Tür Varsayılan Açıklama
source str 'ultralytics/assets' Çıkarım için veri kaynağını belirtir. Bir resim yolu, video dosyası, dizin, URL veya canlı yayınlar için cihaz kimliği olabilir. Farklı türde girdilerde esnek uygulamaya olanak tanıyan çok çeşitli formatları ve kaynakları destekler.
conf float 0.25 Algılamalar için minimum güven eşiğini ayarlar. Bu eşiğin altında güvenle algılanan nesneler dikkate alınmaz. Bu değeri ayarlamak, yanlış pozitifleri azaltmaya yardımcı olabilir.
iou float 0.7 Non-Maximum Suppression (NMS) için Kesişim Üzerinden Birleşim (IoU) eşiği. Daha düşük değerler, örtüşen kutuları ortadan kaldırarak daha az algılama ile sonuçlanır ve bu da yinelenenleri azaltmak için kullanışlıdır.
imgsz int veya tuple 640 Çıkarım için resim boyutunu tanımlar. Tek bir tamsayı olabilir 640 kare yeniden boyutlandırma veya (yükseklik, genişlik) demeti için. Doğru boyutlandırma, algılamayı iyileştirebilir doğruluğu ve işleme hızı.
rect bool True Etkinleştirilirse, çıkarım hızını artırmak için görüntünün kısa kenarını stride ile bölünebilir olana kadar minimum düzeyde doldurur. Devre dışı bırakılırsa, çıkarım sırasında görüntüyü kare olacak şekilde doldurur.
half bool False Yarı-duyarlıklı (FP16) çıkarımını etkinleştirir; bu, desteklenen GPU'larda model çıkarımını doğruluk üzerinde minimum etkiyle hızlandırabilir.
device str None Çıkarım için cihazı belirtir (örn. cpu, cuda:0 veya 0). Kullanıcıların model yürütme için CPU, belirli bir GPU veya diğer işlem cihazları arasında seçim yapmasına olanak tanır.
batch int 1 Çıkarım için toplu iş boyutunu belirtir (yalnızca kaynak olduğunda çalışır) bir dizin, video dosyası veya .txt dosyası). Daha büyük bir toplu iş boyutu, daha yüksek verim 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ırlar ve yoğun sahnelerde aşırı çıktıları önler.
vid_stride int 1 Video girişleri için çerçeve adımı. Zamansal çözünürlük pahasına işlemeyi hızlandırmak için videolardaki karelerin atlanmasına olanak tanır. 1 değeri her kareyi işler, daha yüksek değerler kareleri atlar.
stream_buffer bool False Video akışları için gelen çerçevelerin sıraya alınıp alınmayacağını belirler. Eğer False, eski çerçeveler yeni çerçevelere yer açmak için bırakılır (gerçek zamanlı uygulamalar için optimize edilmiştir). Eğer True, hiçbir çerçevenin atlanmamasını sağlamak için yeni çerçeveleri bir arabelleğe alır, ancak çıkarım FPS'si akış FPS'sinden düşükse gecikmeye neden olur.
visualize bool False Modelin ne "gördüğüne" dair içgörüler sağlayarak, çıkarım sırasında model özelliklerinin görselleştirilmesini etkinleştirir. Hata ayıklama ve model yorumlama için kullanışlıdır.
augment bool False Tahminler için test zamanı artırmayı (TTA) etkinleştirir, bu da çıkarım hızı pahasına algılama sağlamlığını potansiyel olarak artırır.
agnostic_nms bool False Sınıf-agnostik Non-Maximum Suppression'ı (NMS) etkinleştirir, bu da farklı sınıfların örtüşen kutularını birleştirir. Sınıf örtüşmesinin yaygın olduğu çok sınıflı algılama senaryolarında kullanışlıdır.
classes list[int] None Tahminleri bir dizi sınıf kimliğine 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. Döndürülen maskeler (masks.data), etkinleştirilirse orijinal görüntü boyutuna eşleşecektir. Devre dışı bırakılırsa, çıkarım sırasında kullanılan görüntü boyutuna sahip olurlar.
embed list[int] None Öznitelik vektörlerini veya gömme (embedding) işlemlerini çıkarmak için katmanları belirtir. Kümeleme veya benzerlik araması gibi sonraki görevler için kullanışlıdır.
project str None Tahmin çıktıları kaydedilirse proje dizininin adı save etkinleştirildi.
name str None Tahmin çalıştırmasının adı. Proje klasörü içinde bir alt dizin oluşturmak için kullanılır; tahmin çıktıları burada saklanırsa save etkinleştirildi.
stream bool False Tüm çerçeveleri aynı anda belleğe yüklemek yerine, Sonuç nesnelerinin bir üretecinin döndürülmesiyle uzun videolar veya çok sayıda görüntü için bellek açısından verimli işlemeyi etkinleştirir.
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 kontrol eder.

Görselleştirme argümanları:

Argüman Tür Varsayılan Açıklama
show bool False Eğer True, ek açıklamalı görüntüleri veya videoları bir pencerede görüntüler. Geliştirme veya test sırasında anında görsel geri bildirim için kullanışlıdır.
save bool False or True Açıklamalı resimlerin veya videoların dosyaya kaydedilmesini sağlar. Belgeleme, daha fazla analiz veya sonuçları paylaşmak için kullanışlıdır. CLI kullanılırken True ve python'da kullanılırken False olarak ayarlanmıştır.
save_frames bool False Videoları işlerken, tek tek kareleri görüntü olarak kaydeder. Belirli kareleri çıkarmak veya ayrıntılı kare kare analizi için kullanışlıdır.
save_txt bool False Algılama sonuçlarını şu formatta bir metin dosyasına kaydeder: [class] [x_center] [y_center] [width] [height] [confidence]Diğer analiz araçlarıyla entegrasyon için kullanışlıdır.
save_conf bool False Kaydedilen metin dosyalarına güvenilirlik skorlarını dahil eder. İşlem sonrası ve analiz için mevcut ayrıntıları geliştirir.
save_crop bool False Algılamaların kırpılmış görüntülerini kaydeder. Veri kümesi artırma, analiz veya belirli nesneler için odaklanmış veri kümeleri oluşturmak için kullanışlıdır.
show_labels bool True Görsel çıktıdaki her algılama için etiketleri görüntüler. Algılanan nesnelerin anında anlaşılmasını sağlar.
show_conf bool True Etiketin yanında her algılama için güvenilirlik puanını görüntüler. Modelin her algılama için kesinliği hakkında fikir verir.
show_boxes bool True Algılanan nesnelerin etrafına sınırlayıcı kutular çizer. Görüntülerdeki veya video karelerindeki nesnelerin görsel olarak tanımlanması ve konumlandırılması için önemlidir.
line_width None or int None Sınırlayıcı kutuların çizgi genişliğini belirtir. Eğer None, ç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

YOLO11, ultralytics/data/utils.py içinde belirtildiği gibi çeşitli resim ve video formatlarını destekler. Geçerli sonekler ve örnek tahmin komutları için aşağıdaki tablolara bakın.

Görüntüler

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

Not

HEIC resimleri yalnızca çıkarım için desteklenir, eğitim için desteklenmez.

Görüntü Uzantıları Örnek Tahmin Komutu Referans
.bmp yolo predict source=image.bmp Microsoft BMP Dosya Formatı
.dng yolo predict source=image.dng Adobe DNG
.jpeg yolo predict source=image.jpeg JPEG
.jpg yolo predict source=image.jpg JPEG
.mpo yolo predict source=image.mpo Çoklu Resim Nesnesi
.png yolo predict source=image.png Taşınabilir Ağ Grafikleri
.tif yolo predict source=image.tif Etiket Görüntü Dosyası Biçimi
.tiff yolo predict source=image.tiff Etiket Görüntü Dosyası Biçimi
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Taşınabilir FloatMap
.HEIC yolo predict source=image.HEIC Yüksek Verimli Görüntü Formatı

Videolar

Aşağıdaki tabloda geçerli Ultralytics video formatları yer almaktadır.

Video Uzantıları Örnek Tahmin Komutu Referans
.asf yolo predict source=video.asf Gelişmiş Sistemler Formatı
.avi yolo predict source=video.avi Ses Video Çoklu Ortamı
.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 - Vikipedi
.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

Sonuçlarla Çalışmak

Tüm Ultralytics predict() çağrıları bir listesini döndürecektir. Results nesneler:

Sonuçlar

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

Results nesneleri aşağıdaki özelliklere sahiptir:

Özellik Tür Açıklama
orig_img np.ndarray Bir numpy dizisi olarak orijinal görüntü.
orig_shape tuple Orijinal görüntü şekli (yükseklik, genişlik) biçiminde.
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 Maskeler nesnesi.
probs Probs, optional Sınıflandırma görevi için her sınıfın olasılıklarını içeren bir Olasılıklar 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.
speed dict Görüntü başına milisaniye cinsinden ön işleme, çıkarım ve son işleme hızlarının bir sözlüğü.
names dict Sınıf indekslerini sınıf adlarına eşleyen bir sözlük.
path str Görüntü dosyasının yolu.
save_dir str, optional Sonuçları kaydetmek için dizin.

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

Metot Dönüş Türü Açıklama
update() None Sonuçlar nesnesini yeni algılama verileriyle (kutular, maskeler, olasılıklar, obb, anahtar noktaları) günceller.
cpu() Results Tüm tensorleri CPU belleğine taşınmış bir Sonuçlar nesnesinin bir kopyasını döndürür.
numpy() Results Tüm tensorleri numpy dizilerine dönüştürülmüş bir Sonuçlar nesnesinin bir kopyasını döndürür.
cuda() Results Tüm tensorleri GPU belleğine taşınmış bir Sonuçlar nesnesinin bir kopyasını döndürür.
to() Results Tensorleri belirtilen aygıta ve dtype'a taşınmış bir Sonuçlar nesnesinin bir kopyasını döndürür.
new() Results Aynı resim, yol, adlar ve hız özelliklerine sahip yeni bir Sonuçlar nesnesi oluşturur.
plot() np.ndarray Bir RGB giriş görüntüsü üzerinde algılama sonuçlarını çizer ve açıklamalı görüntüyü döndürür.
show() None Görüntüyü açıklama eklenmiş çıkarım sonuçlarıyla birlikte görüntüler.
save() str Açıklamalı çıkarım sonuçları görüntüsünü 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ı detaylandı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 ile özetlenmiş bir sözlüğe dönüştürür.
to_df() DataFrame Algılama sonuçlarını bir Pandas DataFrame'e dönüştürür.
to_csv() str Algılama sonuçlarını CSV biçimine dönüştürür.
to_xml() str Algılama sonuçlarını XML biçimine dönüştürür.
to_html() str Algılama sonuçlarını HTML biçimine dönüştürür.
to_json() str Algılama sonuçlarını JSON biçimine dönüştürür.
to_sql() None Algılama sonuçlarını SQL uyumlu biçime dönüştürür ve veritabanına kaydeder.

Daha fazla ayrıntı için şuraya bakın: Results sınıf dokümantasyonu.

Kutular

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

Kutular

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

İşte için bir tablo Boxes adları, türleri ve açıklamaları dahil olmak üzere sınıf metotları ve özellikleri:

Ad Tür Açıklama
cpu() Metot Nesneyi CPU belleğine taşı.
numpy() Metot Nesneyi bir numpy dizisine dönüştürün.
cuda() Metot Nesneyi CUDA belleğine taşı.
to() Metot Nesneyi belirtilen cihaza taşı.
xyxy Özellik (torch.Tensor) Kutuları xyxy biçiminde döndür.
conf Özellik (torch.Tensor) Kutuların güvenilirlik 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 döndürür (varsa).
xywh Özellik (torch.Tensor) Kutuları xywh biçiminde döndür.
xyxyn Özellik (torch.Tensor) Kutuları orijinal görüntü boyutuyla normalleştirilmiş xyxy biçiminde döndür.
xywhn Özellik (torch.Tensor) Kutuları orijinal görüntü boyutuyla normalleştirilmiş xywh biçiminde döndür.

Daha fazla ayrıntı için şuraya bakın: Boxes sınıf dokümantasyonu.

Maskeler

Masks nesne indekslenebilir, maskeler işlenebilir ve segmentlere dönüştürülebilir.

Maskeler

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

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

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

İşte için bir tablo Masks adları, türleri ve açıklamaları dahil olmak üzere sınıf metotları ve özellikleri:

Ad Tür Açıklama
cpu() Metot Maskeler tensorünü CPU belleğinde döndürür.
numpy() Metot Maskeler tensorünü bir numpy dizisi olarak döndürür.
cuda() Metot Maskeler tensorünü GPU belleğinde döndürür.
to() Metot Maskeler tensorünü belirtilen cihaz ve veri türüyle döndürür.
xyn Özellik (torch.Tensor) Normalleştirilmiş segmentlerin tensörler olarak temsil edildiği bir liste.
xy Özellik (torch.Tensor) Piksel koordinatlarında segmentlerin tensörler olarak temsil edildiği bir liste.

Daha fazla ayrıntı için şuraya bakın: Masks sınıf dokümantasyonu.

Anahtar Noktalar

Keypoints nesne indekslenebilir, işlenebilir ve koordinatlar normalleştirilebilir.

Anahtar Noktalar

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

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

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

İşte için bir tablo Keypoints adları, türleri ve açıklamaları dahil olmak üzere sınıf metotları ve özellikleri:

Ad Tür Açıklama
cpu() Metot Anahtar noktaları tensorünü CPU belleğinde döndürür.
numpy() Metot Anahtar noktaları tensorünü bir numpy dizisi olarak döndürür.
cuda() Metot Anahtar noktaları tensorünü GPU belleğinde döndürür.
to() Metot Anahtar noktaları tensorünü belirtilen cihaz ve veri türüyle döndürür.
xyn Özellik (torch.Tensor) Tensorler olarak temsil edilen normalleştirilmiş anahtar noktaların bir listesi.
xy Özellik (torch.Tensor) Piksel koordinatlarında tensorler olarak temsil edilen bir anahtar nokta listesi.
conf Özellik (torch.Tensor) Varsa, anahtar noktalarının güven değerlerini, aksi takdirde Yok (None) değerini döndürür.

Daha fazla ayrıntı için şuraya bakın: Keypoints sınıf dokümantasyonu.

Olasılıklar

Probs nesne indekslenebilir, alınabilir top1 ve top5 sınıflandırmanın indeksleri ve skorları.

Olasılıklar

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

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

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

İşte yöntemleri ve özellikleri özetleyen bir tablo: Probs sınıf:

Ad Tür Açıklama
cpu() Metot Olasılık (probs) tensorünün bir kopyasını CPU belleğinde döndürür.
numpy() Metot Olasılık (probs) tensorünün bir kopyasını numpy dizisi olarak döndürür.
cuda() Metot Olasılık (probs) tensorünün bir kopyasını GPU belleğinde döndürür.
to() Metot Olasılık (probs) tensorünün bir kopyasını belirtilen cihaz ve veri türüyle döndürür.
top1 Özellik (int) En üstteki 1. sınıfın dizini.
top5 Özellik (list[int]) En iyi 5 sınıfın indeksleri.
top1conf Özellik (torch.Tensor) En iyi 1. sınıfın güvenilirliği.
top5conf Özellik (torch.Tensor) En iyi 5 sınıfın güven değerleri.

Daha fazla ayrıntı için şuraya bakın: Probs sınıf dokümantasyonu.

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

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

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

İşte için bir tablo OBB adları, türleri ve açıklamaları dahil olmak üzere sınıf metotları ve özellikleri:

Ad Tür Açıklama
cpu() Metot Nesneyi CPU belleğine taşı.
numpy() Metot Nesneyi bir numpy dizisine dönüştürün.
cuda() Metot Nesneyi CUDA belleğine taşı.
to() Metot Nesneyi belirtilen cihaza taşı.
conf Özellik (torch.Tensor) Kutuların güvenilirlik 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 döndürür (varsa).
xyxy Özellik (torch.Tensor) Yatay kutuları xyxy formatında döndürür.
xywhr Özellik (torch.Tensor) Döndürülmüş kutuları xywhr formatında döndürür.
xyxyxyxy Özellik (torch.Tensor) Döndürülmüş kutuları xyxyxyxy formatında döndürür.
xyxyxyxyn Özellik (torch.Tensor) Döndürülmüş kutuları, görüntü boyutuyla normalleştirilmiş xyxyxyxy formatında döndürür.

Daha fazla ayrıntı için şuraya bakın: OBB sınıf dokümantasyonu.

Çizim Sonuçları

plot() içindeki yöntem Results nesneleri, algılanan nesneleri (sınırlayıcı kutular, maskeler, anahtar noktaları ve olasılıklar gibi) orijinal görüntünün üzerine yerleştirerek tahminlerin görselleştirilmesini kolaylaştırır. Bu yöntem, açıklama eklenmiş görüntüyü bir NumPy dizisi olarak döndürerek kolay görüntüleme veya kaydetme olanağı sağlar.

Çizim

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 argümanları destekler:

Argüman Tür Açıklama Varsayılan
conf bool Algılama güven skorlarını ekleyin. True
line_width float Sınırlayıcı kutuların çizgi genişliği. Eğer resim boyutuyla ölçeklenir None. None
font_size float Metin yazı tipi boyutu. Eğer resim boyutuyla ölçeklenir ise None. None
font str Metin açıklamaları için yazı tipi adı. 'Arial.ttf'
pil bool Görüntüyü bir PIL Görüntü nesnesi olarak döndür. False
img np.ndarray Çizim için alternatif resim. Eğer varsa orijinal resmi kullanır. None. None
im_gpu torch.Tensor Daha hızlı maske çizimi için GPU hızlandırmalı görüntü. Şekil: (1, 3, 640, 640). None
kpt_radius int Çizilen anahtar noktaların yarıçapı. 5
kpt_line bool Anahtar noktaları çizgilerle birleştirin. True
labels bool Açıklamalara sınıf etiketlerini ekleyin. True
boxes bool Görüntü üzerine sınırlayıcı kutular (bounding box) yerleştirin. True
masks bool Görüntü üzerine maskeler yerleştirin. True
probs bool Sınıflandırma olasılıklarını ekleyin. True
show bool Varsayılan görüntü görüntüleyiciyi kullanarak açıklamalı görüntüyü doğrudan görüntüleyin. False
save bool Açıklamalı görüntüyü, belirtilen bir dosyaya kaydet filename. False
filename str Açıklamalı görüntüyü kaydetmek için dosyanın yolu ve adı, eğer save şudur True. None
color_mode str 'instance' veya 'class' gibi renk modunu belirtin. 'class'
txt_color tuple[int, int, int] Sınırlayıcı kutu ve görüntü sınıflandırma etiketi için RGB metin rengi. (255, 255, 255)

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

Çıkarım sırasında iş parçacığı güvenliğini sağlamak, farklı iş parçacıklarında paralel olarak birden fazla YOLO modeli çalıştırdığınızda çok önemlidir. İş parçacığı güvenli çıkarım, her iş parçacığının tahminlerinin yalıtılmasını ve birbirini etkilememesini garanti ederek yarış durumlarını önler ve tutarlı ve 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ığı için ayrı model nesneleri 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şturun:

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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

YOLO modelleriyle iş parçacığı güvenli çıkarıma ve adım adım talimatlara derinlemesine bir bakış için lütfen YOLO İş Parçacığı Güvenli Çıkarım Kılavuzumuza bakın. Bu kılavuz, yaygın tuzaklardan kaçınmak ve çok iş parçacıklı çıkarımınızın sorunsuz çalışmasını sağlamak için ihtiyacınız olan tüm bilgileri sağlayacaktır.

Akış Kaynağı for-döngü

İşte OpenCV kullanarak bir Python betiği (cv2) ve video karelerinde çıkarım çalıştırmak için YOLO. Bu betik, gerekli paketleri zaten kurduğunuzu varsayar (opencv-python ve ultralytics).

Akış Döngüsü

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.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 yürütecek, sonuçları görselleştirecek ve bir pencerede gösterecektir. Döngüden 'q' tuşuna basılarak çıkılabilir.

SSS

Ultralytics YOLO ve gerçek zamanlı çıkarım için tahmin modu nedir?

Ultralytics YOLO, gerçek zamanlı nesne algılama, segmentasyon ve sınıflandırma için son teknoloji ürünü bir modeldir. Tahmin modu, kullanıcıların resimler, videolar ve canlı yayınlar gibi çeşitli veri kaynaklarında yüksek hızlı çıkarım gerçekleştirmesine olanak tanır. Performans ve çok yönlülük için tasarlanmıştır; ayrıca toplu işleme ve yayın modları da sunar. Özellikleri hakkında daha fazla ayrıntı için Ultralytics YOLO tahmin moduna göz atın.

Farklı veri kaynaklarında Ultralytics YOLO kullanarak çıkarımı nasıl çalıştırabilirim?

Ultralytics YOLO, tekil resimler, videolar, dizinler, URL'ler ve yayınlar dahil olmak üzere çok çeşitli veri kaynaklarını işleyebilir. Veri kaynağını şurada belirtebilirsiniz: model.predict() çağrısı. Örneğin, şunu kullanın: 'image.jpg' yerel bir resim veya 'https://ultralytics.com/images/bus.jpg' bir URL için. Çeşitli konularla ilgili ayrıntılı örneklere göz atın çıkarım kaynakları dokümantasyonda.

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

Çıkarım hızını optimize etmek ve belleği verimli bir şekilde yönetmek için, ayarını yaparak akış modunu kullanabilirsiniz. stream=True tahmin edicinin çağırma yönteminde. Akış modu, bellekte verimli bir üreteç oluşturur. Results tüm çerçeveleri belleğe yüklemek yerine nesneleri kullanın. Uzun videoları veya büyük veri kümelerini işlemek için akış modu özellikle kullanışlıdır. Hakkında daha fazla bilgi edinin akış modu.

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

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

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

YOLO ile çıkarım çalıştırdıktan sonra, Results nesneleri, açıklama eklenmiş görüntüleri görüntülemek ve kaydetmek için yöntemler içerir. Şunun gibi yöntemleri kullanabilirsiniz: result.show() ve result.save(filename="result.jpg") sonuçları görselleştirmek ve kaydetmek için. Bu yöntemlerin kapsamlı bir listesi için, sonuçlarla çalışmak bölüm.



📅 1 yıl önce oluşturuldu ✏️ 5 gün önce güncellendi

Yorumlar