Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv5'i PyTorch Hub'dan Yükleme#

📚 This guide explains how to load YOLOv5 🚀 from PyTorch Hub at https://pytorch.org/hub/ultralytics_yolov5.

Link to this sectionBaşlamadan Önce#

Install requirements.txt in a Python>=3.8.0 environment, including PyTorch>=1.8. Models and datasets download automatically from the latest YOLOv5 release.

pip install -r https://raw.githubusercontent.com/ultralytics/yolov5/master/requirements.txt
İpucu

ultralytics/yolov5 deposunu klonlaman gerekmez; PyTorch Hub kodu otomatik olarak getirir.

Link to this sectionYOLOv5'i PyTorch Hub ile Yükle#

Link to this sectionBasit Örnek#

Bu örnek, PyTorch Hub'dan önceden eğitilmiş bir YOLOv5s modelini model olarak yükler ve çıkarım için bir görüntü gönderir. 'yolov5s', en hafif ve en hızlı YOLOv5 modelidir. Mevcut tüm modeller hakkında ayrıntılar için lütfen README dosyasını incele.

import torch

# Model
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# Image
im = "https://ultralytics.com/images/zidane.jpg"

# Inference
results = model(im)

results.pandas().xyxy[0]
#      xmin    ymin    xmax   ymax  confidence  class    name
# 0  749.50   43.50  1148.0  704.5    0.874023      0  person
# 1  433.50  433.50   517.5  714.5    0.687988     27     tie
# 2  114.75  195.75  1095.0  708.0    0.624512      0  person
# 3  986.00  304.00  1028.0  420.0    0.286865     27     tie

Link to this sectionAyrıntılı Örnek#

Bu örnek, PIL ve OpenCV görüntü kaynaklarıyla toplu çıkarımı (batched inference) gösterir. results konsola yazdırılabilir, runs/hub dizinine kaydedilebilir, desteklenen ortamlarda ekrana gösterilebilir ve tensors veya pandas veri çerçeveleri olarak döndürülebilir.

import cv2
import torch
from PIL import Image

# Model
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# Images
for f in "zidane.jpg", "bus.jpg":
    torch.hub.download_url_to_file("https://ultralytics.com/images/" + f, f)  # download 2 images
im1 = Image.open("zidane.jpg")  # PIL image
im2 = cv2.imread("bus.jpg")[..., ::-1]  # OpenCV image (BGR to RGB)

# Inference
results = model([im1, im2], size=640)  # batch of images

# Results
results.print()
results.save()  # or .show()

results.xyxy[0]  # im1 predictions (tensor)
results.pandas().xyxy[0]  # im1 predictions (pandas)
#      xmin    ymin    xmax   ymax  confidence  class    name
# 0  749.50   43.50  1148.0  704.5    0.874023      0  person
# 1  433.50  433.50   517.5  714.5    0.687988     27     tie
# 2  114.75  195.75  1095.0  708.0    0.624512      0  person
# 3  986.00  304.00  1028.0  420.0    0.286865     27     tie
YOLO inference results on zidane.jpg YOLO inference results on bus.jpg

Tüm çıkarım seçenekleri için YOLOv5 AutoShape() ileri besleme yöntemine bak.

Link to this sectionÇıkarım Ayarları#

YOLOv5 modelleri, aşağıdakilerle ayarlanabilen güven eşiği (confidence threshold), IoU eşiği (IoU threshold) gibi çeşitli çıkarım öznitelikleri içerir:

model.conf = 0.25  # NMS confidence threshold
model.iou = 0.45  # NMS IoU threshold
model.agnostic = False  # NMS class-agnostic
model.multi_label = False  # NMS multiple labels per box
model.classes = None  # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs
model.max_det = 1000  # maximum number of detections per image
model.amp = False  # Automatic Mixed Precision (AMP) inference

results = model(im, size=320)  # custom inference size

Link to this sectionCihaz#

Modeller oluşturulduktan sonra herhangi bir cihaza aktarılabilir:

model.cpu()  # CPU
model.cuda()  # GPU
model.to(device)  # i.e. device=torch.device(0)

Modeller ayrıca doğrudan herhangi bir device üzerinde oluşturulabilir:

model = torch.hub.load("ultralytics/yolov5", "yolov5s", device="cpu")  # load on CPU
İpucu

Giriş görüntüleri, çıkarımdan önce otomatik olarak doğru model cihazına aktarılır.

Link to this sectionÇıktıları Sessize Alma#

Modeller _verbose=False ile sessizce yüklenebilir:

model = torch.hub.load("ultralytics/yolov5", "yolov5s", _verbose=False)  # load silently

Link to this sectionGiriş Kanalları#

Varsayılan 3 yerine 4 giriş kanallı, önceden eğitilmiş bir YOLOv5s modeli yüklemek için:

model = torch.hub.load("ultralytics/yolov5", "yolov5s", channels=4)

Bu durumda model, artık önceden eğitilmiş giriş katmanıyla aynı şekle sahip olmayan ilk giriş katmanı hariç, önceden eğitilmiş ağırlıklardan oluşacaktır. Giriş katmanı rastgele ağırlıklarla başlatılmış olarak kalacaktır.

Link to this sectionSınıf Sayısı#

Varsayılan 80 yerine 10 çıkış sınıflı, önceden eğitilmiş bir YOLOv5s modeli yüklemek için:

model = torch.hub.load("ultralytics/yolov5", "yolov5s", classes=10)

Bu durumda model, artık önceden eğitilmiş çıkış katmanlarıyla aynı şekle sahip olmayan çıkış katmanları hariç, önceden eğitilmiş ağırlıklardan oluşacaktır. Çıkış katmanları rastgele ağırlıklarla başlatılmış olarak kalacaktır.

Link to this sectionZorla Yeniden Yükleme#

Yukarıdaki adımlarla ilgili sorun yaşarsan, force_reload=True ayarını yapmak, mevcut önbelleği atıp en son YOLOv5 sürümünün PyTorch Hub'dan yeniden indirilmesini zorlayarak yardımcı olabilir. Önbelleğe alınan kopyalar ~/.cache/torch/hub dizininde bulunur; bu klasörü silmek aynı etkiyi yaratır.

model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True)  # force reload

Link to this sectionEkran Görüntüsü ile Çıkarım#

Masaüstü ekranında çıkarım çalıştırmak için:

import torch
from PIL import ImageGrab

# Model
model = torch.hub.load("ultralytics/yolov5", "yolov5s")

# Image
im = ImageGrab.grab()  # take a screenshot

# Inference
results = model(im)

Link to this sectionÇoklu GPU Çıkarımı#

YOLOv5 modelleri, iş parçacıklı çıkarım ile birden fazla GPU'ya paralel olarak yüklenebilir:

import threading

import torch

def run(model, im):
    """Performs inference on an image using a given model and saves the output; model must support `.save()` method."""
    results = model(im)
    results.save()

# Models
model0 = torch.hub.load("ultralytics/yolov5", "yolov5s", device=0)
model1 = torch.hub.load("ultralytics/yolov5", "yolov5s", device=1)

# Inference
threading.Thread(target=run, args=[model0, "https://ultralytics.com/images/zidane.jpg"], daemon=True).start()
threading.Thread(target=run, args=[model1, "https://ultralytics.com/images/bus.jpg"], daemon=True).start()

Link to this sectionEğitim#

Çıkarım yerine eğitim için bir YOLOv5 modeli yüklemek istersen autoshape=False ayarını yap. Rastgele başlatılmış ağırlıklara sahip bir model yüklemek için (sıfırdan eğitmek amacıyla) pretrained=False kullan. Bu durumda kendi eğitim betiğini sağlamalısın. Alternatif olarak, model eğitimi için YOLOv5 Özel Veri Eğitimi Öğreticimize göz at.

import torch

model = torch.hub.load("ultralytics/yolov5", "yolov5s", autoshape=False)  # load pretrained
model = torch.hub.load("ultralytics/yolov5", "yolov5s", autoshape=False, pretrained=False)  # load scratch

Link to this sectionBase64 Sonuçları#

API hizmetleriyle kullanım için. Ayrıntılar için Flask REST API örneğine bak.

import base64
from io import BytesIO

from PIL import Image

results = model(im)  # inference

results.ims  # array of original images (as np array) passed to model for inference
results.render()  # updates results.ims with boxes and labels
for im in results.ims:
    buffered = BytesIO()
    im_base64 = Image.fromarray(im)
    im_base64.save(buffered, format="JPEG")
    print(base64.b64encode(buffered.getvalue()).decode("utf-8"))  # base64 encoded image with results

Link to this sectionKırpılmış Sonuçlar#

Sonuçlar algılama kırpmaları olarak döndürülebilir ve kaydedilebilir:

results = model(im)  # inference
crops = results.crop(save=True)  # cropped detections dictionary

Link to this sectionPandas Sonuçları#

Sonuçlar Pandas DataFrames olarak döndürülebilir:

results = model(im)  # inference
results.pandas().xyxy[0]  # Pandas DataFrame
Pandas Output (click to expand)
print(results.pandas().xyxy[0])
#      xmin    ymin    xmax   ymax  confidence  class    name
# 0  749.50   43.50  1148.0  704.5    0.874023      0  person
# 1  433.50  433.50   517.5  714.5    0.687988     27     tie
# 2  114.75  195.75  1095.0  708.0    0.624512      0  person
# 3  986.00  304.00  1028.0  420.0    0.286865     27     tie

Link to this sectionSıralanmış Sonuçlar#

Sonuçlar sütuna göre sıralanabilir; örneğin, plaka hanesi algılamasını soldan sağa (x-ekseni) sıralamak için:

results = model(im)  # inference
results.pandas().xyxy[0].sort_values("xmin")  # sorted left-right

Link to this sectionJSON Sonuçları#

Sonuçlar, .pandas() veri çerçevelerine dönüştürüldükten sonra .to_json() yöntemi kullanılarak JSON formatında döndürülebilir. JSON formatı orient argümanı kullanılarak değiştirilebilir. Ayrıntılar için pandas .to_json() belgelerine bak.

results = model(ims)  # inference
results.pandas().xyxy[0].to_json(orient="records")  # JSON img1 predictions
JSON Output (click to expand)
[
    {
        "xmin": 749.5,
        "ymin": 43.5,
        "xmax": 1148.0,
        "ymax": 704.5,
        "confidence": 0.8740234375,
        "class": 0,
        "name": "person"
    },
    {
        "xmin": 433.5,
        "ymin": 433.5,
        "xmax": 517.5,
        "ymax": 714.5,
        "confidence": 0.6879882812,
        "class": 27,
        "name": "tie"
    },
    {
        "xmin": 115.25,
        "ymin": 195.75,
        "xmax": 1096.0,
        "ymax": 708.0,
        "confidence": 0.6254882812,
        "class": 0,
        "name": "person"
    },
    {
        "xmin": 986.0,
        "ymin": 304.0,
        "xmax": 1028.0,
        "ymax": 420.0,
        "confidence": 0.2873535156,
        "class": 27,
        "name": "tie"
    }
]

Link to this sectionÖzel Modeller#

Bu örnek, PyTorch Hub ile 20 sınıflı, VOC üzerinde eğitilmiş özel bir YOLOv5s modeli olan 'best.pt' dosyasını yükler.

import torch

model = torch.hub.load("ultralytics/yolov5", "custom", path="path/to/best.pt")  # local model
model = torch.hub.load("path/to/yolov5", "custom", path="path/to/best.pt", source="local")  # local repo

Link to this sectionTensorRT, ONNX ve OpenVINO Modelleri#

PyTorch Hub, özel eğitilmiş modeller dahil olmak üzere çoğu YOLOv5 dışa aktarma formatında çıkarımı destekler. Modelleri dışa aktarma hakkında ayrıntılar için TFLite, ONNX, CoreML, TensorRT Dışa Aktarma öğreticisine bak.

İpucu
import torch

model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.pt")  # PyTorch
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.torchscript")  # TorchScript
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.onnx")  # ONNX
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s_openvino_model/")  # OpenVINO
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.engine")  # TensorRT
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.mlmodel")  # CoreML (macOS-only)
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s.tflite")  # TFLite
model = torch.hub.load("ultralytics/yolov5", "custom", path="yolov5s_paddle_model/")  # PaddlePaddle

Link to this sectionDesteklenen Ortamlar#

Ultralytics, projelerine hızlı bir başlangıç yapman için CUDA, CUDNN, Python ve PyTorch gibi temel bağımlılıkların önceden yüklü olduğu, kullanıma hazır çeşitli ortamlar sağlar.

Link to this sectionProje Durumu#

YOLOv5 CI

Bu rozet, tüm YOLOv5 GitHub Actions Sürekli Entegrasyon (CI) testlerinin başarıyla geçtiğini gösterir. Bu CI testleri, YOLOv5'in işlevselliğini ve performansını çeşitli temel yönlerden titizlikle kontrol eder: eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslamalar. macOS, Windows ve Ubuntu üzerinde tutarlı ve güvenilir çalışmayı garanti eder; testler her 24 saatte bir ve her yeni commit yapıldığında gerçekleştirilir.

Katkıda bulunanlar

Yorumlar