PyTorch Hub
📚 This guide explains how to load YOLOv5 🚀 from PyTorch Hub at https://pytorch.org/hub/ultralytics_yolov5.
Başlamadan Önce
requirements.txt dosyasını bir Python>=3.8.0 ortamı dahil olmak üzere PyTorch>=1.8. Modeller ve veri setleri en son YOLOv5 sürümünden otomatik olarak indirilir.
💡 ProTip: https://github.com/ ultralytics/ yolov5 adreslerinin klonlanması gerekli değildir 😃
PyTorch Hub ile YOLOv5 adresini yükleyin
Basit Örnek
Bu örnek, PyTorch Hub adresinden önceden eğitilmiş bir YOLOv5s modelini şu şekilde yükler model
ve çıkarım için bir görüntü iletir. 'yolov5s'
en hafif ve en hızlı YOLOv5 modelidir. Mevcut tüm modeller hakkında ayrıntılı bilgi için lütfen README.
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
Detaylı Örnek
Bu örnek şunları göstermektedir toplu çıkarım ile PIL ve OpenCV görüntü kaynakları. results
olabilir basılı konsola, kaydedildi için runs/hub
, gösterdi desteklenen ortamlarda ekrana getirilir ve tensörler veya pandalar veri çerçeveleri.
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
Tüm çıkarım seçenekleri için bkz. YOLOv5 AutoShape()
ileri yöntem.
Çıkarım Ayarları
YOLOv5 modeller, güven eşiği, IoU eşiği vb. gibi çeşitli çıkarım öznitelikleri içerir ve bunlar tarafından ayarlanabilir:
model.conf = 0.25 # NMS confidence threshold
iou = 0.45 # NMS IoU threshold
agnostic = False # NMS class-agnostic
multi_label = False # NMS multiple labels per box
classes = None # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs
max_det = 1000 # maximum number of detections per image
amp = False # Automatic Mixed Precision (AMP) inference
results = model(im, size=320) # custom inference size
Cihaz
Modeller oluşturulduktan sonra herhangi bir cihaza aktarılabilir:
Modeller ayrıca doğrudan herhangi bir device
:
💡 ProTip: Girdi görüntüleri, çıkarımdan önce otomatik olarak doğru model cihaza aktarılır.
Sessizlik Çıkışları
Modeller şu şekilde sessizce yüklenebilir _verbose=False
:
Giriş Kanalları
Varsayılan 3 yerine 4 giriş kanalına sahip önceden eğitilmiş bir YOLOv5s modeli yüklemek için:
Bu durumda model, artık ön eğitimli girdi katmanıyla aynı şekilde olmayan ilk girdi katmanı dışında ön eğitimli ağırlıklardan oluşacaktır. Giriş katmanı rastgele ağırlıklarla başlatılmış olarak kalacaktır.
Sınıf Sayısı
Varsayılan 80 yerine 10 çıktı sınıfı ile önceden eğitilmiş bir YOLOv5s modeli yüklemek için:
Bu durumda model, artık önceden eğitilmiş çıktı katmanlarıyla aynı şekilde olmayan çıktı katmanları dışında önceden eğitilmiş ağırlıklardan oluşacaktır. Çıktı katmanları rastgele ağırlıklarla başlatılmış olarak kalacaktır.
Yeniden Yüklemeye Zorla
Yukarıdaki adımlarla ilgili sorunlarla karşılaşırsanız force_reload=True
mevcut önbelleği atarak ve PyTorch Hub'dan en son YOLOv5 sürümünü yeni bir indirmeye zorlayarak yardımcı olabilir.
Ekran Görüntüsü Çıkarsama
Masaüstü ekranınızda çı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)
ÇokluGPU Çıkarım
YOLOv5 modeller, iş parçacıklı çıkarım ile paralel olarak birden fazla GPU'ya 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()
Eğitim
Çıkarım yerine eğitim için bir YOLOv5 modeli yüklemek için autoshape=False
. Bir modeli rastgele başlatılmış ağırlıklarla yüklemek için (sıfırdan eğitmek için) pretrained=False
. Bu durumda kendi eğitim metninizi sağlamanız gerekir. Alternatif olarak bizim YOLOv5 Özel Verileri Eğitme Eğitimi model eğitimi için.
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
Base64 Sonuçları
API hizmetleri ile kullanım için. Ayrıntılar için https://github.com/ultralytics / yolov5/pull/2291 ve Flask REST API örneğine bakın.
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
Kırpılmış Sonuçlar
Sonuçlar geri döndürülebilir ve tespit mahsulleri olarak kaydedilebilir:
Pandalar Sonuçlar
Sonuçlar Pandas DataFrames olarak döndürülebilir:
Pandaların Çıktısı (genişletmek için tıklayın)
Sıralanmış Sonuçlar
Sonuçlar sütuna göre sıralanabilir, yani plaka hanesi tespitini soldan sağa (x ekseni) sıralamak için:
Kutu Kırpılmış Sonuçlar
Sonuçlar geri döndürülebilir ve tespit mahsulleri olarak kaydedilebilir:
JSON Sonuçları
Sonuçlar JSON formatına dönüştürüldükten sonra .pandas()
veri çerçevelerini kullanarak .to_json()
yöntemini kullanabilirsiniz. JSON biçimi, aşağıdaki kullanılarak değiştirilebilir orient
argüman. Bkz. pandas .to_json()
dokümantasyon detaylar için.
results = model(ims) # inference
results.pandas().xyxy[0].to_json(orient="records") # JSON img1 predictions
JSON Çıktısı (genişletmek için tıklayın)
[
{
"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"
}
]
Özel Modeller
Bu örnek özel bir 20 sınıfı yükler VOC-eğitilmiş YOLOv5s modeli 'best.pt'
PyTorch Hub ile.
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
TensorRT, ONNX ve OpenVINO Modelleri
PyTorch Hub, özel eğitimli modeller de dahil olmak üzere çoğu YOLOv5 dışa aktarma formatında çıkarımı destekler. Modellerin dışa aktarılmasıyla ilgili ayrıntılar için TFLite, ONNX, CoreML, TensorRT Dışa aktarma öğreticisine bakın.
💡 ProTip: TensorRT may be up to 2-5X faster than PyTorch on GPU benchmarks 💡 ProTip: ONNX and OpenVINO may be up to 2-3X faster than PyTorch on CPU benchmarks
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
Desteklenen Ortamlar
Ultralytics gibi temel bağımlılıklarla önceden yüklenmiş bir dizi kullanıma hazır ortam sağlar. CUDA, CUDNN, Pythonve PyTorchProjelerinizi başlatmak için.
- Ücretsiz GPU Not Defterleri:
- Google Bulut: GCP Hızlı Başlangıç Kılavuzu
- Amazon: AWS Hızlı Başlangıç Kılavuzu
- Azure: AzureML Hızlı Başlangıç Kılavuzu
- Docker: Docker Hızlı Başlangıç Kılavuzu
Proje Durumu
Bu rozet, tüm YOLOv5 GitHub Actions Sürekli Entegrasyon (CI) testlerinin başarıyla geçtiğini gösterir. Bu CI testleri, YOLOv5 'un 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. Her 24 saatte bir ve her yeni işlemde yapılan testlerle macOS, Windows ve Ubuntu üzerinde tutarlı ve güvenilir çalışma sağlarlar.