İçeriğe geç

Yaygın YOLO Sorunlarını Giderme

YOLO Ortak Sorunlar Görüntüsü

Giriş

Bu kılavuz, Ultralytics projelerinizde YOLOv8 ile çalışırken karşılaşılan yaygın sorunları gidermek için kapsamlı bir yardımcı görevi görür. Bu sorunların üstesinden gelmek doğru rehberlikle çok kolay olabilir ve projelerinizin gereksiz gecikmeler olmadan yolunda gitmesini sağlar.



İzle: Ultralytics YOLOv8 Yaygın Sorunlar | Kurulum Hataları, Model Eğitimi Sorunları

Ortak Sorunlar

Kurulum Hataları

Uyumsuz sürümler, eksik bağımlılıklar veya yanlış ortam kurulumları gibi çeşitli nedenlerden dolayı kurulum hataları ortaya çıkabilir. İlk olarak, aşağıdakileri yaptığınızdan emin olmak için kontrol edin:

  • Tavsiye edildiği gibi Python 3.8 veya üstünü kullanıyorsunuz.

  • Doğru PyTorch sürümünün (1.8 veya üstü) yüklü olduğundan emin olun.

  • Çatışmaları önlemek için sanal ortamları kullanmayı düşünün.

  • Resmi kurulum kılavuzunu adım adım izleyin.

Ayrıca, kullanıcıların karşılaştığı bazı yaygın kurulum sorunlarını ve çözümlerini de burada bulabilirsiniz:

  • İçe Aktarma Hataları veya Bağımlılık Sorunları - YOLOv8 adresinin içe aktarılması sırasında hatalar alıyorsanız veya bağımlılıklarla ilgili sorunlar yaşıyorsanız, aşağıdaki sorun giderme adımlarını göz önünde bulundurun:

    • Yeni Kurulum: Bazen yeni bir kurulumla başlamak beklenmedik sorunları çözebilir. Özellikle Ultralytics gibi güncellemelerin dosya ağacı yapısında veya işlevlerde değişikliklere yol açabileceği kütüphanelerde.

    • Düzenli Olarak Güncelleyin: Kütüphanenin en son sürümünü kullandığınızdan emin olun. Eski sürümler son güncellemelerle uyumlu olmayabilir, bu da olası çakışmalara veya sorunlara yol açabilir.

    • Bağımlılıkları Kontrol Edin: Gerekli tüm bağımlılıkların doğru şekilde yüklendiğini ve uyumlu sürümlere sahip olduğunu doğrulayın.

    • Değişiklikleri Gözden Geçirin: Başlangıçta eski bir sürümü klonladıysanız veya yüklediyseniz, önemli güncellemelerin kütüphanenin yapısını veya işlevlerini etkileyebileceğini unutmayın. Önemli değişiklikleri anlamak için her zaman resmi belgelere veya değişiklik günlüklerine bakın.

    • Sorunsuz ve hatasız bir deneyim için kütüphanelerinizi ve bağımlılıklarınızı güncel tutmanın çok önemli olduğunu unutmayın.

  • YOLOv8 'u GPU'da Çalıştırma - YOLOv8 'u GPU'da çalıştırırken sorun yaşıyorsanız, aşağıdaki sorun giderme adımlarını göz önünde bulundurun:

    • CUDA Uyumluluğunu ve Kurulumunu Doğrulama: GPU'nuzun CUDA uyumlu olduğundan ve CUDA'nın doğru şekilde yüklendiğinden emin olun. Kullanın nvidia-smi komutunu kullanarak NVIDIA GPU'nuzun ve CUDA sürümünüzün durumunu kontrol edin.

    • PyTorch ve CUDA Entegrasyonunu Kontrol Edin: PyTorch çalıştırarak CUDA'yı kullanabildiğinden emin olun import torch; print(torch.cuda.is_available()) bir Python terminalinde. 'True' döndürürse, PyTorch CUDA kullanmak üzere ayarlanmıştır.

    • Ortam Etkinleştirme: Gerekli tüm paketlerin yüklü olduğu doğru ortamda olduğunuzdan emin olun.

    • Paketlerinizi Güncelleyin: Eski paketler GPU'nuzla uyumlu olmayabilir. Onları güncel tutun.

    • Program Yapılandırması: Programın veya kodun GPU kullanımını belirtip belirtmediğini kontrol edin. YOLOv8 adresinde bu ayarlarda veya yapılandırmada olabilir.

Model Eğitimi Sorunları

Bu bölümde, eğitim sırasında karşılaşılan yaygın sorunlar ve bunların ilgili açıklamaları ve çözümleri ele alınacaktır.

Yapılandırma Ayarlarının Doğrulanması

Sorun: Yapılandırma ayarlarının aşağıdaki gibi olup olmadığından emin değilsiniz .yaml dosyasının model eğitimi sırasında doğru şekilde uygulandığından emin olun.

Çözüm: İçindeki yapılandırma ayarları .yaml dosyası kullanılırken uygulanmalıdır. model.train() işlevini yerine getirir. Bu ayarların doğru şekilde uygulandığından emin olmak için aşağıdaki adımları izleyin:

  • Yolunuzun aşağıdaki gibi olduğunu onaylayın .yaml yapılandırma dosyası doğrudur.
  • Yolunu geçtiğinizden emin olun .yaml dosyası olarak data argümanını çağırırken model.train()aşağıda gösterildiği gibi:
model.train(data='/path/to/your/data.yaml', batch=4)

Çoklu GPU'lar ile Eğitimi Hızlandırma

Sorun: Tek bir GPU'da eğitim yavaş ve birden fazla GPU kullanarak süreci hızlandırmak istiyorsunuz.

Çözüm: Yığın boyutunu artırmak eğitimi hızlandırabilir, ancak GPU bellek kapasitesini dikkate almak çok önemlidir. Birden fazla GPU ile eğitimi hızlandırmak için aşağıdaki adımları izleyin:

  • Birden fazla GPU'ya sahip olduğunuzdan emin olun.

  • Kullanılacak GPU sayısını belirtmek için .yaml yapılandırma dosyanızı değiştirin, örneğin, gpus: 4.

  • Bellek sınırlarını aşmadan çoklu GPU'ları tam olarak kullanmak için parti boyutunu uygun şekilde artırın.

  • Eğitim komutunuzu birden fazla GPU kullanacak şekilde değiştirin:

# Adjust the batch size and other settings as needed to optimize training speed
model.train(data='/path/to/your/data.yaml', batch=32, multi_scale=True)

Sürekli İzleme Parametreleri

Sorun: Antrenman sırasında kayıp dışında hangi parametrelerin sürekli olarak izlenmesi gerektiğini bilmek istiyorsunuz.

Çözüm: Kayıp, izlenmesi gereken çok önemli bir metrik olsa da model performans optimizasyonu için diğer metriklerin izlenmesi de önemlidir. Eğitim sırasında izlenecek bazı önemli metrikler şunlardır:

  • Hassasiyet
  • Geri Çağırma
  • Ortalama Ortalama Hassasiyet (mAP)

Bu metriklere eğitim günlüklerinden veya görselleştirme için TensorBoard veya wandb gibi araçları kullanarak erişebilirsiniz. Bu metriklere dayanarak erken durdurma uygulamak daha iyi sonuçlar elde etmenize yardımcı olabilir.

Eğitim İlerlemesini Takip Etmek için Araçlar

Sorun: Eğitim ilerlemesini takip etmek için araç önerileri arıyorsunuz.

Çözüm: Eğitim ilerlemesini izlemek ve görselleştirmek için aşağıdaki araçları kullanmayı düşünebilirsiniz:

  • TensorBoard: TensorBoard, kayıp, doğruluk ve daha fazlası dahil olmak üzere eğitim metriklerini görselleştirmek için popüler bir seçimdir. Bunu YOLOv8 eğitim sürecinize entegre edebilirsiniz.
  • Comet: Comet deney izleme ve karşılaştırma için kapsamlı bir araç seti sağlar. Metrikleri, hiperparametreleri ve hatta model ağırlıklarını izlemenizi sağlar. YOLO modelleri ile entegrasyon da basittir ve deney döngünüze tam bir genel bakış sağlar.
  • Ultralytics HUB: Ultralytics HUB, YOLO modellerini izlemek için özel bir ortam sunarak size metrikleri, veri kümelerini yönetmek ve hatta ekibinizle işbirliği yapmak için tek noktadan bir platform sağlar. Özel olarak YOLO adresine odaklandığı için daha özelleştirilmiş izleme seçenekleri sunar.

Bu araçların her biri kendine özgü avantajlar sunar, bu nedenle bir seçim yaparken projenizin özel ihtiyaçlarını göz önünde bulundurmak isteyebilirsiniz.

Eğitimin GPU'da Gerçekleşip Gerçekleşmediği Nasıl Kontrol Edilir?

Sorun: Eğitim günlüklerindeki 'cihaz' değeri 'null' ve GPU'da eğitim yapılıp yapılmadığından emin değilsiniz.

Çözüm: 'device' değerinin 'null' olması genellikle eğitim sürecinin otomatik olarak mevcut bir GPU'yu kullanacak şekilde ayarlandığı anlamına gelir ki bu varsayılan davranıştır. Eğitimin belirli bir GPU'da gerçekleşmesini sağlamak için .yaml yapılandırma dosyanızda 'device' değerini manuel olarak GPU dizinine (örneğin, ilk GPU için '0') ayarlayabilirsiniz:

device: 0

Bu, eğitim sürecini açıkça belirtilen GPU'ya atayacaktır. CPU üzerinde eğitim yapmak istiyorsanız, 'device' seçeneğini 'cpu' olarak ayarlayın.

Eğitim ilerlemesini etkili bir şekilde izlemek için günlükler ve ölçümler için 'koşular' klasörüne göz atın.

Etkili Model Eğitimi için Temel Hususlar

Model eğitimi ile ilgili sorunlarla karşılaşıyorsanız, aklınızda bulundurmanız gereken bazı noktalar şunlardır.

Veri Kümesi Formatı ve Etiketleri

  • Önemi: Herhangi bir makine öğrenimi modelinin temeli, üzerinde eğitildiği verilerin kalitesi ve biçiminde yatar.

  • Öneri: Özel veri kümenizin ve ilişkili etiketlerinin beklenen biçime uygun olduğundan emin olun. Ek açıklamaların doğru ve yüksek kalitede olduğunu doğrulamak çok önemlidir. Yanlış veya yetersiz ek açıklamalar, modelin öğrenme sürecini raydan çıkararak öngörülemeyen sonuçlara yol açabilir.

Model Yakınsaması

  • Önemi: Model yakınsamasının sağlanması, modelin eğitim verilerinden yeterince öğrenmiş olmasını sağlar.

  • Öneri: Bir modeli 'sıfırdan' eğitirken, modelin tatmin edici bir yakınsama seviyesine ulaştığından emin olmak çok önemlidir. Bu, mevcut bir modele ince ayar yaptığınız zamana kıyasla daha fazla epok içeren daha uzun bir eğitim süresi gerektirebilir.

Öğrenme Oranı ve Parti Büyüklüğü

  • Önemi: Bu hiperparametreler, modelin eğitim sırasında ağırlıklarını nasıl güncelleyeceğini belirlemede çok önemli bir rol oynar.

  • Öneri: Seçilen öğrenme oranı ve yığın boyutunun belirli veri setiniz için en uygun olup olmadığını düzenli olarak değerlendirin. Veri kümesinin özellikleriyle uyumlu olmayan parametreler modelin performansını engelleyebilir.

Sınıf Dağılımı

  • Önemlilik: Veri setinizdeki sınıfların dağılımı modelin tahmin eğilimlerini etkileyebilir.

  • Öneri: Veri setinizdeki sınıfların dağılımını düzenli olarak değerlendirin. Bir sınıf dengesizliği varsa, modelin daha yaygın olan sınıfa doğru bir önyargı geliştirme riski vardır. Bu önyargı, modelin ağırlıklı olarak çoğunluk sınıfını tahmin edebileceği karışıklık matrisinde belirgin olabilir.

Önceden Eğitilmiş Ağırlıklarla Çapraz Kontrol

  • Önemi: Önceden eğitilmiş ağırlıklardan yararlanmak, özellikle verilerin sınırlı olduğu durumlarda model eğitimi için sağlam bir başlangıç noktası sağlayabilir.

  • Öneri: Tanısal bir adım olarak, modelinizi aynı verileri kullanarak eğitmeyi ancak önceden eğitilmiş ağırlıklarla başlatmayı düşünün. Bu yaklaşım iyi biçimlendirilmiş bir karışıklık matrisi verirse, 'sıfırdan' modelin daha fazla eğitim veya ayarlama gerektirebileceğini gösterebilir.

Bu bölümde model tahmini sırasında karşılaşılan yaygın sorunlar ele alınacaktır.

YOLOv8 Özel Modelinizle Sınırlayıcı Kutu Tahminleri Alma

Sorun: Tahminleri özel bir YOLOv8 modeliyle çalıştırırken, sınırlayıcı kutu koordinatlarının biçimi ve görselleştirilmesiyle ilgili zorluklar yaşanmaktadır.

Çözüm:

  • Koordinat Formatı: YOLOv8 sınırlayıcı kutu koordinatlarını mutlak piksel değerleri olarak sağlar. Bunları göreli koordinatlara (0 ile 1 arasında değişen) dönüştürmek için görüntü boyutlarına bölmeniz gerekir. Örneğin, görüntü boyutunuzun 640x640 olduğunu varsayalım. O zaman aşağıdakileri yaparsınız:
# 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 tahminde bulunduğunuz görüntünün dosya adını elde etmek için, görüntü dosyası yoluna doğrudan tahmin döngünüzdeki sonuç nesnesinden erişin.

YOLOv8 Tahminlerinde Nesneleri Filtreleme

Sorun: Ultralytics kütüphanesi kullanılarak YOLOv8 çalıştırıldığında tahmin sonuçlarında yalnızca belirli nesnelerin nasıl filtreleneceği ve görüntüleneceği ile ilgili sorunlarla karşılaşılıyor.

Çözüm: Belirli sınıfları tespit etmek için, çıktıya dahil etmek istediğiniz sınıfları belirtmek üzere classes bağımsız değişkenini kullanın. Örneğin, yalnızca arabaları tespit etmek için ('cars' sınıf indeksinin 2 olduğunu varsayarak):

yolo task=detect mode=segment model=yolov8n-seg.pt source='path/to/car.mp4' show=True classes=2

Hassasiyet Ölçütlerini Anlamak YOLOv8

Sorun: YOLOv8 adresinde kutu hassasiyeti, maske hassasiyeti ve karışıklık matrisi hassasiyeti arasındaki farka ilişkin karışıklık.

Çözüm: Kutu hassasiyeti, metrik olarak IoU (Intersection over Union) kullanılarak tahmin edilen sınırlayıcı kutuların gerçek yer gerçeği kutularına kıyasla doğruluğunu ölçer. Maske hassasiyeti, piksel bazında nesne sınıflandırmasında tahmin edilen segmentasyon maskeleri ile zemin gerçeği maskeleri arasındaki uyumu değerlendirir. Karışıklık matrisi hassasiyeti ise tüm sınıflar genelinde genel sınıflandırma doğruluğuna odaklanır ve tahminlerin geometrik doğruluğunu dikkate almaz. Sınıf tahmini yanlış olsa bile bir sınırlayıcı kutunun geometrik olarak doğru (gerçek pozitif) olabileceğine dikkat etmek önemlidir, bu da kutu hassasiyeti ile karışıklık matrisi hassasiyeti arasında farklılıklara yol açar. Bu metrikler bir modelin performansının farklı yönlerini değerlendirir ve çeşitli görevlerde farklı değerlendirme metriklerine duyulan ihtiyacı yansıtır.

Nesne Boyutlarını Çıkarma YOLOv8

Sorun: Özellikle bir görüntüde birden fazla nesne algılandığında, YOLOv8 adresinde algılanan nesnelerin uzunluğunu ve yüksekliğini alma zorluğu.

Çözüm: Sınırlayıcı kutu boyutlarını almak için, önce bir görüntüdeki nesneleri tahmin etmek üzere Ultralytics YOLOv8 modelini kullanın. Ardından, tahmin sonuçlarından sınırlayıcı kutuların genişlik ve yükseklik bilgilerini çıkarın.

from ultralytics import YOLO

# Load a pre-trained YOLOv8 model
model = YOLO('yolov8n.pt')

# Specify the source image
source = 'https://ultralytics.com/images/bus.jpg'

# Make predictions
results = model.predict(source, save=True, imgsz=320, conf=0.5)

# 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 çoklu GPU ortamında dağıtmak bazen beklenmedik bellek kullanımı, GPU'lar arasında tutarsız sonuçlar vb. gibi beklenmedik davranışlara yol açabilir.

Çözüm: Varsayılan GPU başlatmayı kontrol edin. PyTorch gibi bazı çerçeveler, belirlenen GPU'lara geçmeden önce CUDA işlemlerini varsayılan bir GPU'da başlatabilir. Beklenmedik varsayılan başlatmaları atlamak için, dağıtım ve tahmin sırasında GPU'yu doğrudan belirtin. Ardından, herhangi bir anormalliği gerçek zamanlı olarak tespit etmek için GPU kullanımını ve bellek kullanımını izlemek üzere araçlar kullanın. Ayrıca, çerçevenin veya kütüphanenin en son sürümünü kullandığınızdan emin olun.

Model Dönüştürme/İhraç Etme Sorunları

Sorun: Makine öğrenimi modellerini farklı biçimlere veya platformlara dönüştürme veya dışa aktarma işlemi sırasında kullanıcılar hatalarla veya beklenmedik davranışlarla karşılaşabilir.

Çözüm:

  • Uyumluluk Kontrolü: Kütüphanelerin ve çerçevelerin birbiriyle uyumlu sürümlerini kullandığınızdan emin olun. Uyumsuz sürümler dönüştürme sırasında beklenmedik hatalara yol açabilir.

  • Ortam Sıfırlama: Jupyter veya Colab gibi etkileşimli bir ortam kullanıyorsanız, önemli değişiklikler veya kurulumlar yaptıktan sonra ortamınızı yeniden başlatmayı düşünün. Yeni bir başlangıç bazen altta yatan sorunları çözebilir.

  • Resmi Belgeler: Her zaman dönüştürme için kullandığınız araç veya kütüphanenin resmi belgelerine başvurun. Genellikle model dışa aktarma için özel yönergeler ve en iyi uygulamaları içerir.

  • Topluluk Desteği: Diğer kullanıcılar tarafından bildirilen benzer sorunlar için kütüphane veya çerçevenin resmi deposunu kontrol edin. Bakımcılar veya topluluk, tartışma başlıklarında çözümler veya geçici çözümler sağlamış olabilir.

  • Düzenli Olarak Güncelleyin: Aracın veya kütüphanenin en son sürümünü kullandığınızdan emin olun. Geliştiriciler sık sık bilinen hataları düzelten veya işlevselliği artıran güncellemeler yayınlar.

  • Aşamalı Olarak Test Edin: Tam bir 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 edin.

Topluluk ve Destek

Benzer düşünen bireylerden oluşan bir toplulukla etkileşim kurmak, YOLOv8 ile çalışma deneyiminizi ve başarınızı önemli ölçüde artırabilir. Aşağıda yararlı bulabileceğiniz bazı kanallar ve kaynaklar yer almaktadır.

Yardım Almak için Forumlar ve Kanallar

GitHub Sorunları: GitHub'daki YOLOv8 deposunda soru sorabileceğiniz, hataları bildirebileceğiniz ve yeni özellikler önerebileceğiniz bir Sorunlar sekmesi vardır. Topluluk ve bakımcılar burada aktiftir ve belirli sorunlarla ilgili yardım almak için harika bir yerdir.

Ultralytics Discord Sunucusu: Ultralytics , diğer kullanıcılar ve geliştiricilerle etkileşime girebileceğiniz bir Discord sunucusuna sahiptir.

Resmi Dokümantasyon ve Kaynaklar

Ultralytics YOLOv8 Dokümanlar: Resmi belgeler, kurulum, kullanım ve sorun giderme kılavuzlarının yanı sıra YOLOv8 hakkında kapsamlı bir genel bakış sağlar.

Bu kaynaklar, YOLOv8 projelerinizde sorun giderme ve iyileştirmenin yanı sıra YOLOv8 topluluğundaki diğer kişilerle bağlantı kurmak için sağlam bir temel oluşturmalıdır.

Sonuç

Sorun giderme, her türlü geliştirme sürecinin ayrılmaz bir parçasıdır ve doğru bilgilerle donatılmış olmak, sorunları çözmek için harcanan zamanı ve çabayı önemli ölçüde azaltabilir. Bu kılavuz, Ultralytics ekosisteminde YOLOv8 modeli kullanıcılarının karşılaştığı en yaygın zorlukları ele almayı amaçlamıştır. Bu yaygın sorunları anlayarak ve ele alarak, projenin daha sorunsuz ilerlemesini sağlayabilir ve bilgisayarla görme görevlerinizde daha iyi sonuçlar elde edebilirsiniz.

Ultralytics topluluğunun değerli bir kaynak olduğunu unutmayın. Diğer geliştiriciler ve uzmanlarla etkileşim kurmak, standart belgelerde yer almayan ek bilgiler ve çözümler sağlayabilir. Topluluğun kolektif bilgisine katkıda bulunmak için her zaman öğrenmeye, denemeye ve deneyimlerinizi paylaşmaya devam edin.

Mutlu sorun giderme!



Oluşturuldu 2023-11-12, Güncellendi 2024-04-19
Yazarlar: RizwanMunawar (1), glenn-jocher (2)

Yorumlar