Laboratuvardan Üretime
Ultralytics'i yükle, YOLO26'yı kendi görsellerinde çalıştır, çıktıyı tanımına göre kontrol et ve sonraki adımını seç.
Önceden eğitilmiş bir modelle geçireceğin on dakika, tüm planını belirleyecek soruyu yanıtlar: hazır bir model sınıflarını ve kameranı zaten kapsıyor mu, yoksa kendi verilerine mi ihtiyacın var? Bu derste Ultralytics'i yüklüyor, YOLO26'yı gerçek görseller üzerinde çalıştırıyor ve sonucu ilk derste yazdığın görev tanımına göre kontrol ediyorsun.
Uygulamalı
Yükle#
pip install ultralytics
yolo checksİlk satır, ultralytics Python paketini ve yolo komutunu yükler; PyTorch yüklü değilse onu da yükler. yolo checks, Python, PyTorch ve CUDA sürümlerini ve Ultralytics'in kullanacağı donanımı gösterir; böylece herhangi bir şey çalıştırmadan önce kurulumu doğrulayabilirsin. Yeni bir sanal ortam kullan; hızlı başlangıç kılavuzunda conda, Docker ve GPU kurulumları anlatılıyor.
ultralytics paketi Python 3.8 ve üzeri sürümlere kurulur, ancak güncel PyTorch sürümleri Python 3.10 veya üzerini gerektirir. Ortamın daha eskiyse önce güncel bir Python sürümüyle yeni bir sanal ortam oluştur.

Belirti: NVIDIA GPU bulunan bir makinede yolo checks CPU gösteriyor ve çıkarım yavaş. Neden: yalnızca CPU destekli bir PyTorch derlemesi — örneğin Windows'ta varsayılan pip wheel'i. Çözüm: yukarıdaki PyTorch seçicisinde işletim sistemini, paket yöneticisini ve CUDA sürümünü seç, gösterilen komutu çalıştır, ardından ultralytics paketini yeniden yükle. Ekran görüntüsündeki gibi Mac'te varsayılan derleme doğrudur; device=mps ile Apple GPU'yu kullanmasını sağlamadığın sürece Ultralytics CPU'da çalışır.
İlk tahmin#
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # İlk kullanımda ~5 MB'lık nano modelini indirir
results = model("https://ultralytics.com/images/bus.jpg", save=True)
for box in results[0].boxes:
print(model.names[int(box.cls)], round(float(box.conf), 2))Her ikisi de her görsel için tek satırlık bir özet yazdırır ve açıklama eklenmiş görseli runs/detect/predict konumuna kaydeder:
image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predictSatır satır açıklaması: görsel çıkarım için 640×480 boyutuna yeniden ölçeklendi; model dört kişi ve bir otobüs buldu; çıkarım bir dizüstü bilgisayarın CPU'sunda yaklaşık 20 ms sürdü. Speed satırı ilk gecikme kontrolün; bunu, görev tanımının girdi satırındaki kare hızıyla karşılaştır. Kaydedilen görseli aç: her kutuda algılama dersinde gördüğün sınıf, kutu ve güven değeri bulunur.
Çıktıyı görev tanımına göre kontrol et#
| Soru | Evetse | Hayırsa |
|---|---|---|
| Sınıfların, modelin bildiği 80 COCO sınıfı arasında mı? | Hiç eğitim yapmadan prototip oluştur | Etiketli veriye ve ince ayara ihtiyacın var (ince ayar kılavuzu) |
| Kendi görsellerinde, eşiğinin üzerindeki kutular doğru nesnelerin üzerine yerleşiyor mu? | Görev ve bakış açısı eşleşiyor | Alan farkı bekle: kendi kameralarından veri topla |
| Çıktı türü, karar satırının gerektirdiği tür mü? | Görevi koru | Ağırlıkları değiştir: -seg, -sem, -depth, -pose, -obb veya -cls |
| Hedef donanımda kare hızına yetecek kadar hızlı mı? | Devam et | Daha küçük bir model veya optimize edilmiş bir dışa aktarma biçimi dene |
İlk sorunun yanıtı kesin: model.names, önceden eğitilmiş modelin bildiği tüm sınıfları listeler. Forklift görev tanımı için person bir COCO sınıfıdır, ancak forklift değildir; dolayısıyla hiçbir eşik, önceden eğitilmiş modelin forklift bulmasını sağlayamaz. İlk çalıştırmada en sık karşılaşılan sonuç budur — model görev tanımının bir bölümünü kapsar — ve doğru yaklaşım, geri kalan sınıflar için veri kümesini hazırlarken mevcut sınıflarla karar mantığının prototipini oluşturmaktır.
Üretimde neler değişir#
Dağıtılmış bir model, veri kümesinde hiç örneklenmemiş koşullarla karşılaşır: yeni kameralar, mevsimler, ürünler ve üniformalar. Yeniden eğitim yapılmazsa doğruluk zamanla düşer; üretimde karşılaşılan verilerle düzenli yeniden eğitim yapılırsa toparlanır:

Bu kurstaki her ders bu döngüyü besler: görev tanımı bir hatayı belirler, kapsama denetimi nereye bakacağını gösterir, etiket denetleyicisi ve yönergesi yeni verileri kullanışlı kılar, dürüst veri bölme ve metrikler ise yeniden eğitilmiş modelin gerçekten daha iyi olup olmadığını gösterir. İlk günden itibaren işe yarayan iki alışkanlık vardır: düşük güvenli olanlar da dahil olmak üzere girdi ve tahminlerden örnekler kaydet ve her modeli aynı görsellerde karşılaştırabilmek için sabit test kümesini koru. Gözlemlenebilirlik ve Kayma bölümünde veri kayması izlemesi ayrıntılı olarak anlatılıyor.
Sonraki adım#
| Kurs | Şu durumda al |
|---|---|
| Yüksek Performanslı YOLO Veri Kümeleri Oluşturma | Sınıfların önceden eğitilmiş modelde yoksa veya sahnelerin COCO'dan farklıysa |
| İlk YOLO modelini eğit | Etiketli bir veri kümen varsa ve ince ayar yapmak istiyorsan |
| Üretimde Ultralytics YOLO | Bir modelin varsa ve dışa aktarma, izleme ve gözlemleme gerekiyorsa |
| Ultralytics Platform ile geliştir | Veri, etiketleme, eğitim ve dağıtımın tek bir yerde olmasını istiyorsan |
Tarayıcı tabanlı bir iş akışını mı tercih ediyorsun? Ultralytics Platform, yerel kurulum gerektirmeden aynı döngüyü — yükle, açıklama ekle, eğit, dağıt — yürütür:
Çözümü göster
from pathlib import Path
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)} needs your own data: {sorted(spec_classes - known)}")
# 2. What does it find on your images?
sources = [
"https://ultralytics.com/images/bus.jpg", # replace with your own images
"https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
names = [result.names[int(c)] for c in result.boxes.cls]
print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")pretrained: ['person'] needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']Forklift görev tanımı için: person kapsanıyor, forklift ise kapsanmıyor. Sonraki adım: Şimdilik önceden eğitilmiş modelle kişiler üzerindeki bölge kuralının prototipini oluştur ve depo kameralarından forklift görüntüleri toplayıp etiketlemek için Yüksek Performanslı YOLO Veri Kümeleri Oluşturma kursuna başla.