Yaygın YOLO Sorunlarını Giderme#
Bu kılavuz, Ultralytics YOLO26 ile çalışırken karşılaşabileceğin en yaygın sorunları ortaya çıktıkları yere göre gruplandırarak ele alır: kurulum, model eğitimi, tahmin ve dağıtım. Hatanla eşleşen kategoriye git veya hızlı yanıtlar için SSS bölümünü incele. Her girişte sorun ve doğrudan uygulayabileceğin somut bir çözüm belirtilir.
Watch: Ultralytics YOLO26 Common Issues | Installation Errors, Model Training Issues
Yaygın Sorunlar#
Kurulum Hataları#
Kurulum hataları; uyumsuz sürümler, eksik bağımlılıklar veya yanlış ortam yapılandırmaları gibi çeşitli nedenlerle ortaya çıkabilir. Öncelikle aşağıdakileri yaptığından emin ol:
- Önerildiği gibi Python 3.8 veya sonraki bir sürümü kullanıyorsun.
- Doğru PyTorch sürümünün (1.8 veya sonrası) yüklü olduğundan emin ol.
- Çakışmaları önlemek için sanal ortamları kullanmayı düşün.
- Resmî kurulum kılavuzunu adım adım izle.
Ayrıca, yaygın kurulum sorunları için aşağıdaki çözümleri uygulayabilirsin.
Birçok içe aktarma, GPU ve dışa aktarma hatası yalnızca yükseltme yapılarak düzeltilebilir. pip install -U ultralytics komutunu çalıştır ve daha derin hata ayıklamaya geçmeden önce PyTorch ile CUDA sürümlerinin uyumlu olduğunu doğrula.
İçe Aktarma Hataları veya Bağımlılık Sorunları#
YOLO26'yı içe aktarırken hata alırsan veya bağımlılık çakışmalarıyla karşılaşırsan şu adımları dene:
- Temiz Kurulum: Temiz bir kurulumla başlamak, özellikle paket yapısını veya işlevselliğini değiştiren güncellemelerden sonra beklenmeyen sorunları çözebilir.
- Düzenli Güncelleme: Kitaplığın en son sürümünü kullan; eski sürümler güncel değişikliklerle uyumlu olmayabilir.
- Bağımlılıkları Denetleme: Gerekli tüm bağımlılıkların doğru şekilde yüklendiğini ve uyumlu sürümlere sahip olduğunu doğrula.
- Değişiklikleri İnceleme: Eski bir sürüm yüklediysen önemli yapısal değişiklikleri anlamak için resmî belgelere veya değişiklik günlüğüne başvur.
YOLO26'yı GPU'da Çalıştırma#
YOLO26'yı GPU'da çalıştırırken sorun yaşıyorsan aşağıdaki sorun giderme adımlarını değerlendir:
- CUDA Uyumluluğunu ve Kurulumu Doğrulama: GPU'nun CUDA ile uyumlu olduğundan ve CUDA'nın doğru şekilde yüklendiğinden emin ol. NVIDIA GPU'nun ve CUDA sürümünün durumunu kontrol etmek için
nvidia-smikomutunu kullan. - PyTorch ve CUDA Entegrasyonunu Denetleme: Bir Python terminalinde
import torch; print(torch.cuda.is_available())komutunu çalıştırarak PyTorch'un CUDA'yı kullanabildiğinden emin ol. 'True' döndürürse PyTorch, CUDA'yı kullanacak şekilde yapılandırılmıştır. - Ortamı Etkinleştirme: Gerekli tüm paketlerin yüklü olduğu doğru ortamda olduğundan emin ol.
- Paketlerini Güncelleme: Güncel olmayan paketler GPU'nla uyumlu olmayabilir. Paketlerini güncel tut.
- Program Yapılandırması: Kodunun GPU kullanımını isteyip istemediğini kontrol et. Eğitim veya tahmin çalıştırırken
devicebağımsız değişkenini ayarlayabilirsin (örneğin,device=0).
Turing'den önceki GPU mimarileri (1080 Ti gibi, hesaplama yeteneği (SM) 7.5'in altında olanlar) için destek cuDNN 9.11.0'da kaldırıldı. Eski bir GPU'da, daha eski bir CUDA/cuDNN sürümüyle derlenmiş bir PyTorch derlemesine ihtiyacın olabilir. Kurulumunu şu komutla kontrol et:
import torch
cap = torch.cuda.get_device_capability(0) if torch.cuda.is_available() else (0, 0)
cudnn = torch.backends.cudnn.version() or 0
ok = "not compatible" if cudnn >= 91100 and (cap[0] < 7 or (cap[0] == 7 and cap[1] < 5)) else "should be ok"
print(f"Compute capability: SM {cap[0]}.{cap[1]}, cuDNN: {cudnn} => {ok}")Model Eğitimi Sorunları#
Yaygın eğitim sorunları ve çözümleri aşağıda ele alınmaktadır.
Yapılandırma Ayarlarını Doğrulama#
Sorun: .yaml dosyasındaki yapılandırma ayarlarının model eğitimi sırasında doğru şekilde uygulanıp uygulanmadığından emin değilsin.
Çözüm: .yaml dosyasındaki yapılandırma ayarları, model.train() işlevi kullanıldığında uygulanmalıdır. Bu ayarların doğru şekilde uygulandığından emin olmak için şu adımları izle:
-
.yamlyapılandırma dosyanın yolunun doğru olduğunu doğrula. -
Aşağıda gösterildiği gibi,
model.train()çağrılırken.yamldosyanın yolunudatabağımsız değişkeni olarak ilettiğinden emin ol:model.train(data="/path/to/your/data.yaml", batch=4)
Birden Fazla GPU ile Eğitimi Hızlandırma#
Sorun: Eğitim tek bir GPU'da yavaş ilerliyor ve birden fazla GPU kullanarak süreci hızlandırmak istiyorsun.
Çözüm: Batch boyutunu artırmak eğitimi hızlandırabilir, ancak GPU belleği kapasitesini dikkate almak çok önemlidir. Birden fazla GPU ile eğitimi hızlandırmak için şu adımları izle:
-
Birden fazla GPU'nun kullanılabilir olduğundan emin ol.
-
devicebağımsız değişkenini GPU dizinlerinden oluşan bir listeye ayarla; örneğin,device=[0,1,2,3]. -
Bellek sınırlarını aşmadan birden fazla GPU'dan tam olarak yararlanmak için batch boyutunu uygun şekilde artır.
-
Birden fazla GPU'dan yararlanacak şekilde eğitim komutunu değiştir:
# Adjust the batch size and other settings as needed to optimize training speed model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])
Sürekli İzleme Parametreleri#
Sorun: Kayıp değerinin yanı sıra eğitim sırasında hangi parametrelerin sürekli izlenmesi gerektiğini bilmek istiyorsun.
Çözüm: Kayıp, izlenmesi gereken önemli bir metrik olsa da model performansını optimize etmek için diğer metrikleri de takip etmek önemlidir. Eğitim sırasında izlenmesi gereken bazı temel metrikler şunlardır:
- Precision
- Recall
- Ortalama Kesinlik (mAP)
Bu metriklere eğitim günlüklerinden erişebilir veya görselleştirme için TensorBoard veya Weights & Biases gibi araçları kullanabilirsin. Bu metrikleri temel alarak erken durdurma uygulamak, daha iyi sonuçlar elde etmene yardımcı olabilir.
Eğitim İlerlemesini İzleme Araçları#
Sorun: Eğitim ilerlemesini izlemek için araç önerileri arıyorsun.
Çözüm: Eğitim ilerlemesini takip etmek ve görselleştirmek için aşağıdaki araçları kullanmayı düşünebilirsin:
- TensorBoard: TensorBoard; kayıp, doğruluk ve daha fazlası dahil olmak üzere eğitim metriklerini görselleştirmek için popüler bir seçenektir. Bunu YOLO26 eğitim sürecine entegre edebilirsin.
- Comet: Comet, deney izleme ve karşılaştırma için kapsamlı bir araç seti sunar. Metrikleri, hiperparametreleri ve hatta model ağırlıklarını takip etmeni sağlar. YOLO modelleriyle entegrasyonu da kolaydır ve deney döngüne ilişkin eksiksiz bir genel bakış sunar.
- Ultralytics Platform: Ultralytics Platform, YOLO modellerini izlemek için özel bir ortam sunar; metrikleri ve veri kümelerini yönetebileceğin, hatta ekibinle iş birliği yapabileceğin tek noktadan bir platform sağlar. YOLO'ya odaklanan özel yapısı sayesinde daha özelleştirilmiş izleme seçenekleri sunar.
Eğitimin GPU'da Gerçekleşip Gerçekleşmediğini Kontrol Etme#
Sorun: Eğitim günlüklerindeki 'device' değeri 'null' ve eğitimin GPU'da gerçekleşip gerçekleşmediğinden emin değilsin.
Çözüm: 'device' değerinin 'null' olması genellikle eğitim sürecinin kullanılabilir bir GPU'yu otomatik olarak seçmeye ayarlandığı anlamına gelir; bu varsayılan davranıştır. Belirli bir GPU'da eğitim yapmak için eğitimi başlatırken device bağımsız değişkenini ayarla. device bir eğitim bağımsız değişkenidir; bu nedenle bunu veri kümen için .yaml içinde ayarlamanın hiçbir etkisi olmaz:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Use GPU 0; device=[0, 1] for multiple GPUs, device="cpu" for CPU
model.train(data="path/to/data.yaml", device=0)Eğitim ilerlemesini etkili bir şekilde izlemek için günlükler ve metrikler açısından 'runs' klasörünü takip et.
Etkili Model Eğitimi İçin Temel Hususlar#
Model eğitimiyle ilgili sorunlar yaşıyorsan aklında bulundurman gereken bazı noktalar şunlardır.
Veri Kümesi Biçimi ve Etiketler
- Önem: Her makine öğrenmesi modelinin temeli, eğitildiği verilerin kalitesine ve biçimine dayanır.
- Öneri: Özel veri kümenle ilişkili etiketlerin beklenen biçime uygun olduğundan emin ol. Açıklamaların doğru ve yüksek kaliteli olduğunu doğrulamak çok önemlidir. Yanlış veya düşük kaliteli açıklamalar modelin öğrenme sürecini sekteye uğratarak öngörülemeyen sonuçlara yol açabilir.
Model Yakınsaması
- Önem: Model yakınsamasını sağlamak, modelin eğitim verilerinden yeterince öğrendiğini gösterir.
- Öneri: Bir modeli 'sıfırdan' eğitirken modelin tatmin edici bir yakınsama düzeyine ulaştığından emin olmak hayati önem taşır. Mevcut bir modele ince ayar yapmaya kıyasla daha fazla epoch içeren daha uzun bir eğitim süresi gerekebilir.
Öğrenme Oranı ve Batch Boyutu
- Önem: Bu hiperparametreler, modelin eğitim sırasında ağırlıklarını nasıl güncellediğini belirlemede kritik bir rol oynar.
- Öneri: Seçilen öğrenme oranı ve batch boyutunun belirli veri kümen için optimal olup olmadığını düzenli olarak değerlendir. Veri kümesinin özellikleriyle uyumlu olmayan parametreler modelin performansını engelleyebilir.
Sınıf Dağılımı
- Önem: Veri kümenizdeki sınıfların dağılımı, modelin tahmin eğilimlerini etkileyebilir.
- Öneri: Veri kümen içindeki sınıf dağılımını düzenli olarak değerlendir. Sınıf dengesizliği varsa modelin daha yaygın olan sınıfa karşı önyargı geliştirme riski vardır. Bu önyargı, modelin çoğunluk sınıfını ağırlıklı olarak tahmin edebileceği karmaşıklık matrisinde görülebilir.
Önceden Eğitilmiş Ağırlıklarla Çapraz Kontrol
- Önem: Önceden eğitilmiş ağırlıklardan yararlanmak, özellikle veri sınırlı olduğunda model eğitimi için sağlam bir başlangıç noktası sağlayabilir.
- Öneri: Tanılayıcı bir adım olarak modelini aynı verileri kullanarak, ancak önceden eğitilmiş ağırlıklarla başlatarak eğitmeyi düşün. Bu yaklaşım iyi yapılandırılmış bir karmaşıklık matrisi üretirse 'sıfırdan' modelin daha fazla eğitim veya ayarlama gerektirdiğini gösterebilir.
Model Tahminleriyle İlgili Sorunlar#
Model tahmini sırasında karşılaşılan yaygın sorunlar ve çözümleri aşağıda ele alınmaktadır.
Özel YOLO26 Modelinle Sınırlayıcı Kutu Tahminleri Alma#
Sorun: Özel bir YOLO26 modeliyle tahminler çalıştırırken sınırlayıcı kutu koordinatlarının biçimi ve görselleştirilmesiyle ilgili zorluklar yaşanıyor.
Çözüm:
-
Koordinat Biçimi: YOLO26, sınırlayıcı kutu koordinatlarını mutlak piksel değerleri olarak sağlar. Bunları göreli koordinatlara (0 ile 1 arasında) dönüştürmek için görüntü boyutlarına bölmen gerekir. Örneğin, görüntü boyutunun 640x640 olduğunu varsayalım. Bu durumda aşağıdakini yapmalısın:
# Convert absolute coordinates to relative coordinates x1 = x1 / 640 # Divide x-coordinates by image width x2 = x2 / 640 y1 = y1 / 640 # Divide y-coordinates by image height y2 = y2 / 640 -
Dosya Adı: Üzerinde tahmin yaptığın görüntünün dosya adını almak için tahmin döngüsünde sonuç nesnesinden görüntü dosyası yoluna doğrudan eriş.
YOLO26 Tahminlerinde Nesneleri Filtreleme#
Sorun: Ultralytics kitaplığını kullanarak YOLO26'yı çalıştırırken tahmin sonuçlarında yalnızca belirli nesnelerin nasıl filtrelenip gösterileceğiyle ilgili sorun yaşıyorsun.
Çözüm: Belirli sınıfları algılamak için çıktıya dahil etmek istediğin sınıfları belirtmek üzere classes bağımsız değişkenini kullan. Örneğin, yalnızca arabaları algılamak için ('cars' sınıf dizininin 2 olduğunu varsayarak):
yolo segment predict model=yolo26n-seg.pt source='path/to/car.mp4' show=True classes=2YOLO26'da Kesinlik Metriklerini Anlama#
Sorun: YOLO26'da kutu kesinliği, maske kesinliği ve karmaşıklık matrisi kesinliği arasındaki fark konusunda kafa karışıklığı yaşıyorsun.
Çözüm: Kutu kesinliği, metrik olarak IoU'yu (Kesişim-Birleşim) kullanarak tahmin edilen sınırlayıcı kutuların gerçek referans kutularıyla karşılaştırıldığında ne kadar doğru olduğunu ölçer. Maske kesinliği, piksel düzeyinde nesne sınıflandırmasında tahmin edilen segmentasyon maskeleri ile referans maskeleri arasındaki uyumu değerlendirir. Buna karşılık karmaşıklık matrisi kesinliği, tüm sınıflardaki genel sınıflandırma doğruluğuna odaklanır ve tahminlerin geometrik doğruluğunu dikkate almaz. Bir sınırlayıcı kutunun, sınıf tahmini yanlış olsa bile geometrik olarak doğru (doğru pozitif) olabileceğini unutmamak önemlidir; bu durum kutu kesinliği ile karmaşıklık matrisi kesinliği arasında farklılıklara yol açar. Bu metrikler, model performansının farklı yönlerini değerlendirir ve çeşitli görevlerde farklı değerlendirme metriklerine duyulan ihtiyacı yansıtır.
YOLO26'da Nesne Boyutlarını Çıkarma#
Sorun: Özellikle bir görüntüde birden fazla nesne algılandığında YOLO26'da algılanan nesnelerin uzunluğunu ve yüksekliğini almakta zorlanıyorsun.
Çözüm: Sınırlayıcı kutu boyutlarını almak için önce Ultralytics YOLO26 modelini kullanarak bir görüntüde nesneleri tahmin et. Ardından tahmin sonuçlarından sınırlayıcı kutuların genişlik ve yükseklik bilgilerini çıkar.
from ultralytics import YOLO
# Load a pretrained YOLO26 model
model = YOLO("yolo26n.pt")
# Specify the source image
source = "https://ultralytics.com/images/bus.jpg"
# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.25)
# Extract bounding box dimensions
boxes = results[0].boxes.xywh.cpu()
for box in boxes:
x, y, w, h = box
print(f"Width of Box: {w}, Height of Box: {h}")Dağıtım Zorlukları#
GPU Dağıtımı Sorunları#
Sorun: Modelleri birden fazla GPU bulunan bir ortamda dağıtmak bazen beklenmeyen bellek kullanımı, GPU'lar arasında tutarsız sonuçlar gibi beklenmeyen davranışlara yol açabilir.
Çözüm: Varsayılan GPU başlatmasını kontrol et. PyTorch gibi bazı çerçeveler, belirlenen GPU'lara geçmeden önce CUDA işlemlerini varsayılan bir GPU'da başlatabilir. Beklenmeyen varsayılan başlatmaları önlemek için dağıtım ve tahmin sırasında GPU'yu doğrudan belirt. Ardından anormallikleri gerçek zamanlı olarak tespit etmek için GPU kullanımını ve bellek tüketimini izlemeye yarayan araçları kullan. Ayrıca çerçevenin veya kitaplığın en güncel sürümünü kullandığından emin ol.
Model Dönüştürme/Dışa Aktarma Sorunları#
Sorun: Makine öğrenmesi modellerini farklı biçimlere veya platformlara dönüştürme ya da dışa aktarma sürecinde kullanıcılar hatalarla veya beklenmeyen davranışlarla karşılaşabilir.
Çözüm: Dışa Aktarma modu belgelerinde desteklenen biçimleri ve biçime özgü seçenekleri incele, ardından şu kontrolleri gerçekleştir:
- Uyumluluk Kontrolü: Birbiriyle uyumlu kitaplık ve çerçeve sürümlerini kullandığından emin ol. Uyumsuz sürümler dönüştürme sırasında beklenmeyen hatalara yol açabilir.
- Ortamı Sıfırlama: Jupyter veya Colab gibi etkileşimli bir ortam kullanıyorsan önemli değişiklikler veya kurulumlar yaptıktan sonra ortamını yeniden başlatmayı düşün. Temiz bir başlangıç bazen temel sorunları çözebilir.
- Resmî Belgeler: Dönüştürme için kullandığın araç veya kitaplığın resmî belgelerine her zaman başvur. Bu belgelerde genellikle model dışa aktarma için özel yönergeler ve en iyi uygulamalar bulunur.
- Topluluk Desteği: Diğer kullanıcıların bildirdiği benzer sorunlar için kitaplığın veya çerçevenin resmî deposunu kontrol et. Geliştiriciler veya topluluk, tartışma başlıklarında çözümler ya da geçici çözüm yolları sunmuş olabilir.
- Düzenli Güncelle: Aracın veya kütüphanenin en son sürümünü kullandığından emin ol. Geliştiriciler bilinen hataları gideren veya işlevselliği geliştiren güncellemeleri sık sık yayımlar.
- Artımlı Test Et: Tam dönüşüm gerçekleştirmeden önce olası sorunları erkenden belirlemek için süreci daha küçük bir model veya veri kümesiyle test et.
Topluluk ve Destek#
Bu kanallar ve kaynaklar aracılığıyla yardım al ve çözümlerini paylaş.
Yardım Alma Forumları ve Kanalları#
GitHub Issues: GitHub üzerindeki Ultralytics deposunda sorular sorabileceğin, hataları bildirebileceğin ve yeni özellikler önerebileceğin bir Issues sekmesi bulunmaktadır. Topluluk ve geliştiriciler burada aktiftir; burası belirli sorunlarla ilgili yardım almak için harika bir yerdir.
Ultralytics Discord Sunucusu: Ultralytics, diğer kullanıcılar ve geliştiricilerle etkileşim kurabileceğin bir Discord sunucusuna sahiptir.
Resmi Belgeler ve Kaynaklar#
Ultralytics YOLO26 Belgeleri: resmi belgeler, YOLO26 hakkında kapsamlı bir genel bakışın yanı sıra kurulum, kullanım ve sorun giderme kılavuzları sunar.
Sonuç#
YOLO26 sorunlarının çoğu birkaç temel nedene dayanır: sürüm uyumsuzlukları, veri kümesi biçimlendirmesi ve GPU yapılandırması. Bir hata burada ele alınmamışsa GitHub Issues sekmesinde ara veya Discord sunucusunda sor — büyük olasılıkla birileri bu sorunu daha önce çözmüştür. Daha kapsamlı eğitim sorunları için Model Eğitimi İpuçları kılavuzuna bakarak bilgisayarlı görü projelerinde daha iyi sonuçlar elde etmeye yönelik pratik önerilerden yararlanabilirsin.
SSS#
Kurulum hataları çoğunlukla uyumluluk sorunlarından veya eksik bağımlılıklardan kaynaklanabilir. Python 3.8 veya sonraki bir sürümü kullandığından ve PyTorch 1.8 veya sonraki bir sürümün yüklü olduğundan emin ol. Çakışmaları önlemek için sanal ortamları kullanman faydalı olur. Adım adım kurulum kılavuzu için resmi kurulum kılavuzumuzu takip et. İçe aktarma hatalarıyla karşılaşırsan yeni bir kurulum yapmayı veya kütüphaneyi en son sürüme güncellemeyi dene.
Tek bir GPU üzerinde eğitim, büyük batch boyutları veya yetersiz bellek nedeniyle yavaş olabilir. Eğitimi hızlandırmak için birden fazla GPU kullan. Sisteminde birden fazla GPU bulunduğundan emin ol ve
devicebağımsız değişkenini, örneğindevice=[0,1,2,3]değerini ayarla. Bellek sınırlarını aşmadan GPU'lardan tam olarak yararlanmak için batch boyutunu uygun şekilde artır. Örnek komut:model.train(data="/path/to/your/data.yaml", batch=32, device=[0, 1, 2, 3])Eğitim günlüklerinde 'device' değeri 'null' olarak görünüyorsa bu genellikle eğitim sürecinin kullanılabilir bir GPU'yu otomatik olarak seçmek üzere ayarlandığı anlamına gelir. Belirli bir GPU'yu açıkça atamak için eğitimi başlatırken
devicebağımsız değişkenini ilet; örneğin ilk GPU içinyolo train data=path/to/data.yaml device=0kullan. CUDA kurulumunu doğrulamak içinnvidia-smikomutuna başvur.Eğitim ilerlemesini izleme ve görselleştirme işlemleri TensorBoard, Comet ve Ultralytics Platform gibi araçlarla verimli bir şekilde yönetilebilir. Bu araçlar kayıp, precision, recall ve mAP gibi metrikleri günlüğe kaydetmene ve görselleştirmene olanak tanır. Bu metriklere dayalı erken durdurma uygulamak da daha iyi eğitim sonuçları elde etmene yardımcı olabilir.
Veri kümenin ve etiketlerinin beklenen biçime uygun olduğundan emin ol. Ek açıklamaların doğru ve yüksek kalitede olduğunu doğrula. Herhangi bir sorunla karşılaşırsan en iyi uygulamalar için Veri Toplama ve Ek Açıklama kılavuzuna başvur. Veri kümesine özgü daha fazla rehberlik için belgelerdeki Veri Kümeleri bölümünü incele.