İçeriğe geç

ile Model Tahmini Ultralytics YOLO

Ultralytics YOLO ekosistem ve entegrasyonlar

Giriş

Makine öğrenimi ve bilgisayarla görme dünyasında, görsel verilerden anlam çıkarma sürecine 'çıkarım' veya 'tahmin' denir. Ultralytics YOLOv8 , çok çeşitli veri kaynakları üzerinde 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 YOLOv8 Modelinden Çıktılar Nasıl Çıkarılır?

Gerçek Dünya Uygulamaları

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

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

Çeşitli çıkarım ihtiyaçlarınız için neden YOLOv8'un tahmin modunu düşünmeniz gerektiğini burada bulabilirsiniz:

  • Çok yönlülük: Görüntüler, 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.
  • Son Derece Özelleştirilebilir: Modelin çıkarım davranışını özel gereksinimlerinize göre ayarlamak için çeşitli ayarlar ve parametreler.

Tahmin Modunun Temel Özellikleri

YOLOv8'nin tahmin modu, sağlam ve çok yönlü olacak şekilde tasarlanmıştır:

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

Ultralytics YOLO modelleri ya bir Python listesi döndürür Results nesneleri veya bellek açısından verimli bir Python Results nesneler ne zaman stream=True çıkarım sırasında modele aktarılır:

Tahmin Et

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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ı

YOLOv8 aşağıdaki tabloda gösterildiği gibi çıkarım için farklı türde giriş kaynaklarını işleyebilir. Bu kaynaklar arasında statik görüntüler, video akışları ve çeşitli veri formatları bulunmaktadır. Tabloda ayrıca her bir kaynağın aşağıdaki bağımsız değişkenle akış modunda kullanılıp kullanılamayacağı da belirtilmektedir stream=True ✅. Akış modu, tüm kareleri belleğe yüklemek yerine bir sonuç üreteci oluşturduğundan videoları veya canlı akışları 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'de, tüm kareler veya veri noktaları için sonuçlar bellekte saklanır, bu da büyük girdiler için hızla toplanabilir ve bellek dışı hatalara neden olabilir. Bunun aksine, stream=True yalnızca geçerli karenin veya veri noktasının sonuçlarını bellekte tutan, bellek tüketimini önemli ölçüde azaltan ve bellek dışı sorunları önleyen bir üreteç kullanır.

Kaynak Tartışma Tip Notlar
görüntü 'image.jpg' str veya Path Tek 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 Bir ekran görüntüsü yakalayın.
PIL Image.open('im.jpg') PIL.Image RGB kanalları ile HWC formatı.
OpenCV cv2.imread('im.jpg') np.ndarray BGR kanalları ile HWC formatı uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray BGR kanalları ile HWC formatı uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor RGB kanalları ile 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ı.
dizin ✅ 'path/' str veya Path Görüntü veya video içeren bir dizinin yolu.
glob ✅ 'path/*.jpg' str Birden fazla dosyayla eşleşmek için glob deseni. Kullanın * karakterini joker karakter olarak kullanır.
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str Bir YouTube videosunun URL'si.
akış ✅ 'rtsp://example.com/media.mp4' str RTSP, RTMP, TCP gibi akış protokolleri için URL veya bir IP adresi.
çoklu akış ✅ 'list.streams' str veya Path *.streams her satır için bir akış URL'si içeren metin dosyası, yani 8 akış toplu iş boyutu 8'de çalışacaktır.

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

Tahmin kaynakları

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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 geçerli ekran içeriği üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 görüntü veya video üzerinde çıkarım çalıştırın.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 Imaging Library (PIL) ile açılmış bir görüntü üzerinde çıkarım çalıştırın.

from PIL import Image
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 görüntü üzerinde çıkarım çalıştırın.

import cv2
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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

Numpy dizisi olarak temsil edilen bir görüntü üzerinde çıkarım çalıştırın.

import numpy as np
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 tensor olarak temsil edilen bir görüntü üzerinde çıkarım çalıştırın.

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 resimler, URL'ler, videolar ve dizinlerden oluşan bir koleksiyon üzerinde çıkarım çalıştırın.

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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=Truebellek kullanımını azaltmak için bir Sonuç nesneleri oluşturucu oluşturabilirsiniz.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 resim ve videoları da yakalamak için bir glob kalıbı kullanın, örn. path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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

ile 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 YOLOv8n model
model = YOLO('yolov8n.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 yapın. Kullanarak stream=Trueuzun videolarda bellek kullanımını azaltmak için bir Sonuç nesneleri oluşturucu oluşturabilirsiniz.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 ve IP adresi protokollerini kullanarak uzak akış kaynakları üzerinde çıkarım çalıştırın. Birden fazla akış sağlanmışsa *.streams metin dosyasından sonra toplu çıkarım çalışacaktır, yani 8 akış toplu iş boyutu 8'de çalışacaktır, aksi takdirde tek akış toplu iş boyutu 1'de çalışacaktır.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

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

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

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

Çıkarım Argümanları

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

Örnek

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on 'bus.jpg' with arguments
model.predict('bus.jpg', save=True, imgsz=320, conf=0.5)

Çıkarım argümanları:

Tartışma Tip Varsayılan Açıklama
source str 'ultralytics/assets' Çıkarım için veri kaynağını belirtir. Bir görüntü yolu, video dosyası, dizin, URL veya canlı yayınlar için cihaz kimliği olabilir. Çok çeşitli formatları ve kaynakları destekleyerek farklı girdi türlerinde esnek uygulama sağlar.
conf float 0.25 Tespitler için minimum güven eşiğini ayarlar. Bu eşiğin altında güvenle tespit edilen nesneler dikkate alınmayacaktır. Bu değerin ayarlanması yanlış pozitiflerin azaltılmasına yardımcı olabilir.
iou float 0.7 Maksimum Olmayan Bastırma (NMS) için Birlik Üzerinde Kesişme (IoU) eşiği. Daha düşük değerler, üst üste binen kutuları ortadan kaldırarak daha az tespitle sonuçlanır, bu da kopyaları azaltmak için kullanışlıdır.
imgsz int or tuple 640 Çıkarım için görüntü boyutunu tanımlar. Tek bir tamsayı olabilir 640 kare yeniden boyutlandırma veya bir (yükseklik, genişlik) tuple için. Doğru boyutlandırma, algılama doğruluğunu ve işlem hızını artırabilir.
half bool False Desteklenen GPU'larda model çıkarımını doğruluk üzerinde minimum etkiyle hızlandırabilen yarı hassas (FP16) çıkarımı etkinleştirir.
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 hesaplama cihazları arasında seçim yapmasına olanak tanır.
max_det int 300 Görüntü başına izin verilen maksimum algılama sayısı. Modelin tek bir çıkarımda tespit edebileceği toplam nesne sayısını sınırlayarak yoğun sahnelerde aşırı çıktıları önler.
vid_stride int 1 Video girişleri için kare atlama. Zamansal çözünürlük pahasına işlemeyi hızlandırmak için videolardaki karelerin atlanmasına izin verir. 1 değeri her kareyi işler, daha yüksek değerler kareleri atlar.
stream_buffer bool False Video akışları işlenirken tüm karelerin arabelleğe alınıp alınmayacağını belirler (True) veya modelin en son kareyi döndürmesi gerekip gerekmediğini (False). Gerçek zamanlı uygulamalar için kullanışlıdır.
visualize bool False Çıkarım sırasında model özelliklerinin görselleştirilmesini etkinleştirerek modelin "ne gördüğüne" dair içgörü sağlar. Hata ayıklama ve model yorumlama için kullanışlıdır.
augment bool False Tahminler için test zamanı artırımını (TTA) etkinleştirerek çıkarım hızı pahasına tespit sağlamlığını potansiyel olarak iyileştirir.
agnostic_nms bool False Farklı sınıfların örtüşen kutularını birleştiren, sınıftan bağımsız Maksimum Olmayan Bastırma (NMS) özelliğini etkinleştirir. Sınıf çakışmasının 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 göre filtreler. Yalnızca belirtilen sınıflara ait tespitler 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 Modelde mevcutsa yüksek çözünürlüklü segmentasyon maskeleri kullanır. Bu, segmentasyon görevleri için maske kalitesini artırarak daha ince ayrıntılar sağlayabilir.
embed list[int] None Özellik vektörlerinin veya katıştırmaların çıkarılacağı katmanları belirtir. Kümeleme veya benzerlik arama gibi sonraki görevler için kullanışlıdır.

Görselleştirme argümanları:

Tartışma Tip Varsayılan Açıklama
show bool False Eğer True, 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 Açıklamalı görüntülerin veya videoların dosyaya kaydedilmesini sağlar. Dokümantasyon, ileri analiz veya sonuçları paylaşmak için kullanışlıdır.
save_frames bool False Videoları işlerken, tek tek kareleri görüntü olarak kaydeder. Belirli kareleri ayıklamak veya ayrıntılı kare kare analiz için kullanışlıdır.
save_txt bool False Algılama sonuçlarını formata uygun olarak 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üven puanları ekler. İşlem sonrası ve analiz için mevcut ayrıntıları geliştirir.
save_crop bool False Tespitlerin kırpılmış görüntülerini kaydeder. Veri kümesini büyütmek, analiz etmek 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 bir tespit için güven puanını görüntüler. Her bir tespit için modelin 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 gereklidir.
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 Formatları

YOLOv8 ultralytics/data/utils .py adresinde belirtildiği gibi çeşitli görüntü ve video formatlarını destekler. Geçerli son ekler ve örnek tahmin komutları için aşağıdaki tablolara bakın.

Görüntüler

Aşağıdaki tabloda geçerli Ultralytics görüntü formatları yer almaktadır.

Görüntü Sonekleri Örnek Tahmin Et 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ü Dosya Formatı
.tiff yolo predict source=image.tiff Etiket Görüntü Dosya Formatı
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Taşınabilir FloatMap

Videolar

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

Video Sonekleri Örnek Tahmin Et Komutu Referans
.asf yolo predict source=video.asf Gelişmiş Sistem Formatı
.avi yolo predict source=video.avi Ses Video Interleave
.gif yolo predict source=video.gif Grafik Değişim Formatı
.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 Formatı
.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ışma

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

Sonuçlar

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # list of 1 Results object
results = model(['bus.jpg', 'zidane.jpg'])  # list of 2 Results objects

Results nesneleri aşağıdaki niteliklere sahiptir:

Öznitelik Tip Açıklama
orig_img numpy.ndarray Bir numpy dizisi olarak orijinal görüntü.
orig_shape tuple (Yükseklik, genişlik) biçimindeki orijinal 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 anahtar noktaları içeren bir Anahtar Noktalar 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şlem, çıkarım ve son işlem hızları sözlüğü.
names dict Sınıf adları sözlüğü.
path str Görüntü dosyasının yolu.

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

Yöntem Dönüş Tipi Açıklama
update() None Results nesnesinin kutularını, maskelerini ve probs niteliklerini güncelleyin.
cpu() Results CPU belleğindeki tüm tensörlerle birlikte Results nesnesinin bir kopyasını döndürür.
numpy() Results Tüm tensörleri numpy dizileri olarak içeren Results nesnesinin bir kopyasını döndürür.
cuda() Results GPU belleğindeki tüm tensörlerle birlikte Results nesnesinin bir kopyasını döndürür.
to() Results Belirtilen aygıt ve d türündeki tensörleri içeren Results nesnesinin bir kopyasını döndürür.
new() Results Aynı görüntü, yol ve adlara sahip yeni bir Results nesnesi döndürür.
plot() numpy.ndarray Algılama sonuçlarını çizer. Açıklamalı görüntünün bir numpy dizisini döndürür.
show() None Açıklamalı sonuçları ekranda gösterin.
save() None Açıklamalı sonuçları dosyaya kaydedin.
verbose() str Her görev için günlük dizesi döndürür.
save_txt() None Tahminleri bir txt dosyasına kaydedin.
save_crop() None Kırpılmış tahminleri şuraya kaydet save_dir/cls/file_name.jpg.
tojson() str Nesneyi JSON biçimine dönüştürün.

Daha fazla ayrıntı için bkz. Results sınıf dokümantasyonu.

Kutular

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

Kutular

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

İşte aşağıdakiler için bir tablo Boxes sınıf yöntemleri ve özellikleri, adları, türleri ve açıklamaları dahil:

İsim Tip Açıklama
cpu() Yöntem Nesneyi CPU belleğine taşıyın.
numpy() Yöntem Nesneyi bir numpy dizisine dönüştürün.
cuda() Yöntem Nesneyi CUDA belleğine taşıyın.
to() Yöntem Nesneyi belirtilen cihaza taşır.
xyxy Mülkiyet (torch.Tensor) Kutuları xyxy biçiminde döndürür.
conf Mülkiyet (torch.Tensor) Kutuların güven değerlerini döndürür.
cls Mülkiyet (torch.Tensor) Kutuların sınıf değerlerini döndürür.
id Mülkiyet (torch.Tensor) Kutuların parça kimliklerini döndürür (varsa).
xywh Mülkiyet (torch.Tensor) Kutuları xywh biçiminde döndürür.
xyxyn Mülkiyet (torch.Tensor) Kutuları orijinal görüntü boyutuna göre normalleştirilmiş xyxy biçiminde döndürür.
xywhn Mülkiyet (torch.Tensor) Kutuları orijinal görüntü boyutuna göre normalleştirilmiş xywh biçiminde döndürür.

Daha fazla ayrıntı için bkz. Boxes sınıf dokümantasyonu.

Maskeler

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

Maskeler

from ultralytics import YOLO

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO('yolov8n-seg.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

İşte aşağıdakiler için bir tablo Masks sınıf yöntemleri ve özellikleri, adları, türleri ve açıklamaları dahil:

İsim Tip Açıklama
cpu() Yöntem CPU belleğindeki tensor maskelerini döndürür.
numpy() Yöntem tensor maskelerini bir numpy dizisi olarak döndürür.
cuda() Yöntem GPU belleğindeki tensor maskelerini döndürür.
to() Yöntem Belirtilen cihaz ve dtype ile tensor maskelerini döndürür.
xyn Mülkiyet (torch.Tensor) Tensör olarak temsil edilen normalleştirilmiş segmentlerin bir listesi.
xy Mülkiyet (torch.Tensor) Tensör olarak temsil edilen piksel koordinatlarındaki segmentlerin bir listesi.

Daha fazla ayrıntı için bkz. Masks sınıf dokümantasyonu.

Anahtar Noktalar

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

Anahtar Noktalar

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO('yolov8n-pose.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

İşte aşağıdakiler için bir tablo Keypoints sınıf yöntemleri ve özellikleri, adları, türleri ve açıklamaları dahil:

İsim Tip Açıklama
cpu() Yöntem CPU belleğindeki tensor anahtar noktalarını döndürür.
numpy() Yöntem Anahtar noktalarını tensor bir numpy dizisi olarak döndürür.
cuda() Yöntem GPU belleğindeki tensor anahtar noktalarını döndürür.
to() Yöntem Belirtilen cihaz ve dtype ile tensor anahtar noktalarını döndürür.
xyn Mülkiyet (torch.Tensor) Tensör olarak temsil edilen normalleştirilmiş anahtar noktalarının bir listesi.
xy Mülkiyet (torch.Tensor) Tensör olarak temsil edilen piksel koordinatlarındaki anahtar noktaların bir listesi.
conf Mülkiyet (torch.Tensor) Varsa anahtar noktalarının güven değerlerini döndürür, yoksa Yoktur.

Daha fazla ayrıntı için bkz. Keypoints sınıf dokümantasyonu.

Probs

Probs nesnesi indeks olarak kullanılabilir, get top1 ve top5 endeksleri ve sınıflandırma puanları.

Probs

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO('yolov8n-cls.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

Burada, aşağıdaki metot ve özellikleri özetleyen bir tablo bulunmaktadır Probs Sınıf:

İsim Tip Açıklama
cpu() Yöntem CPU belleğindeki tensor problarının bir kopyasını döndürür.
numpy() Yöntem tensor prob'larının bir kopyasını numpy dizisi olarak döndürür.
cuda() Yöntem GPU belleğindeki tensor problarının bir kopyasını döndürür.
to() Yöntem Belirtilen aygıt ve dtype ile probs tensor dosyasının bir kopyasını döndürür.
top1 Mülkiyet (int) En üst 1 sınıfın endeksi.
top5 Mülkiyet (list[int]) İlk 5 sınıfın endeksleri.
top1conf Mülkiyet (torch.Tensor) En iyi 1. sınıfın güveni.
top5conf Mülkiyet (torch.Tensor) İlk 5 sınıfın sırları.

Daha fazla ayrıntı için bkz. Probs sınıf dokümantasyonu.

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n-obb.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

İşte aşağıdakiler için bir tablo OBB sınıf yöntemleri ve özellikleri, adları, türleri ve açıklamaları dahil:

İsim Tip Açıklama
cpu() Yöntem Nesneyi CPU belleğine taşıyın.
numpy() Yöntem Nesneyi bir numpy dizisine dönüştürün.
cuda() Yöntem Nesneyi CUDA belleğine taşıyın.
to() Yöntem Nesneyi belirtilen cihaza taşır.
conf Mülkiyet (torch.Tensor) Kutuların güven değerlerini döndürür.
cls Mülkiyet (torch.Tensor) Kutuların sınıf değerlerini döndürür.
id Mülkiyet (torch.Tensor) Kutuların parça kimliklerini döndürür (varsa).
xyxy Mülkiyet (torch.Tensor) Yatay kutuları xyxy biçiminde döndürür.
xywhr Mülkiyet (torch.Tensor) Döndürülmüş kutuları xywhr biçiminde döndürür.
xyxyxyxy Mülkiyet (torch.Tensor) Döndürülmüş kutuları xyxyxyxy biçiminde döndürür.
xyxyxyxyn Mülkiyet (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 bkz. OBB sınıf dokümantasyonu.

Sonuçları Çizme

Bu plot() içinde yöntem Results nesneleri, tespit edilen 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 kolaylaştırır. Bu yöntem, açıklamalı 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 YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on 'bus.jpg'
results = model(['bus.jpg', '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

Bu plot() yöntemi, çıktıyı özelleştirmek için çeşitli argümanları destekler:

Tartışma Tip Açıklama Varsayılan
conf bool Tespit güven puanlarını ekleyin. True
line_width float Sınırlayıcı kutuların çizgi genişliği. Aşağıdaki durumlarda görüntü boyutuyla ölçeklenir None. None
font_size float Metin yazı tipi boyutu. Aşağıdaki durumlarda görüntü boyutu ile ölçeklenir None. None
font str Metin ek 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ür. False
img numpy.ndarray Çizim için alternatif görüntü. Aşağıdaki durumlarda orijinal görüntüyü kullanır None. None
im_gpu torch.Tensor Daha hızlı maske çizimi için GPU ile hızlandırılmış görüntü. Şekil: (1, 3, 640, 640). None
kpt_radius int Çizilen anahtar noktalar için yarıçap. 5
kpt_line bool Anahtar noktaları çizgilerle birleştirin. True
labels bool Ek açıklamalara sınıf etiketlerini ekleyin. True
boxes bool Sınırlayıcı kutuları görüntünün üzerine bindirin. True
masks bool Görüntü üzerinde maskeleri üst üste bindirin. True
probs bool Sınıflandırma olasılıklarını dahil edin. 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ü şu şekilde belirtilen bir dosyaya kaydedin filename. False
filename str Açıklamalı görüntünün kaydedileceği dosyanın yolu ve adı save o True. None

İş 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 bir iş parçacığının tahminlerinin izole edilmesini ve birbiriyle etkileşime girmemesini garanti ederek yarış koşullarını önler ve tutarlı ve güvenilir çıktılar sağlar.

Çok iş parçacıklı bir uygulamada YOLO modellerini kullanırken, çakışmaları önlemek için her iş parçacığı için ayrı model nesnelerini örneklemek veya iş parçacığı yerel depolamasını kullanmak önemlidir:

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

İş parçacığı güvenli çıkarım için her iş parçacığı içinde tek bir modeli örnekleyin:

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

YOLO modelleri ve adım adım talimatlarla iş parçacığı güvenli çıkarıma 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 gerekli tüm bilgileri sağlayacaktır.

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

İşte OpenCV kullanan bir Python betiği (cv2) ve video kareleri üzerinde çıkarım yapmak için YOLOv8 . Bu betik, gerekli paketleri zaten yüklediğinizi varsayar (opencv-python ve ultralytics).

Akış for döngüsü

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.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 YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 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 komut dosyası, videonun her karesinde tahminleri çalıştıracak, sonuçları görselleştirecek ve bir pencerede görüntüleyecektir. Döngüden 'q' tuşuna basılarak çıkılabilir.



Oluşturuldu 2023-11-12, Güncellendi 2024-05-03
Yazarlar: glenn-jocher (18), UltralyticsAssistant (1), Burhan-Q (1), plashchynski (1), tensorturtle (1), AyushExel (1), Laughing-q (1)

Yorumlar