YOLOv5 ile Özel Veri Kümesi Nasıl Eğitilir?

YOLOv5 ile Özel Veri Kümesi Nasıl Eğitilir?

Kaynak Düğüm: 1953267

Giriş

Yapay zeka ve derin öğrenme için önceden eğitilmiş modeller, transfer öğrenme vb. gibi bazı süslü terimler gördük. Sizi yaygın olarak kullanılan ve en önemli ve etkili teknolojilerden biri ile eğitmeme izin verin: YOLOv5 ile transfer öğrenme.

Bir Kez Bakarsınız veya YOLO, en yaygın kullanılan derin öğrenme tabanlı nesne tanımlama yöntemlerinden biridir. Bu makale, özel bir veri kümesi kullanarak, en yeni varyasyonlarından biri olan YOLOv5'i nasıl eğiteceğinizi gösterecektir.

Öğrenme hedefleri 

  1. Bu makale, temel olarak YOLOv5 modelini özel bir veri kümesi uygulaması üzerinde eğitmeye odaklanacaktır.
  2. Önceden eğitilmiş modellerin neler olduğunu ve transfer öğrenmenin ne olduğunu göreceğiz.
  3. YOLOv5'in ne olduğunu ve neden YOLO'nun 5. sürümünü kullandığımızı anlayacağız.

O halde vakit kaybetmeden işlemlere başlayalım.

İçerik Tablosu

  1. Önceden Eğitimli Modeller
  2. Transfer Öğrenimi
  3. Ne ve Neden YOLOv5?
  4. Transfer Öğrenimi ile İlgili Adımlar
  5. Uygulama
  6. Karşılaşabileceğiniz Bazı Zorluklar
  7. Sonuç

Önceden eğitilmiş Modeller

Veri bilimcilerin "önceden eğitilmiş model" terimini yaygın olarak kullandığını duymuş olabilirsiniz. Bir derin öğrenme modelinin/ağının ne işe yaradığını açıkladıktan sonra terimi açıklayacağım. Derin öğrenme modeli, sınıflandırma, tespit vb. gibi tek bir amaca hizmet edecek şekilde bir araya getirilmiş çeşitli katmanları içeren bir modeldir. Derin öğrenme ağları, kendilerine beslenen verilerdeki karmaşık yapıları keşfederek ve ağırlıkları bir dosyaya kaydederek öğrenir. daha sonra benzer görevleri gerçekleştirmek için kullanılır. Önceden eğitilmiş modeller zaten eğitilmiş Derin Öğrenme modelleridir. Bunun anlamı, milyonlarca görüntü içeren devasa bir veri kümesi üzerinde zaten eğitilmiş olmalarıdır.

İşte nasıl TensorFlow web sitesi önceden eğitilmiş modelleri tanımlar: Önceden eğitilmiş bir model, önceden büyük bir veri kümesinde, genellikle büyük ölçekli bir görüntü sınıflandırma görevinde eğitilmiş kayıtlı bir ağdır.

Bazıları yüksek düzeyde optimize edilmiş ve olağanüstü verimli önceden eğitilmiş modeller internette mevcuttur. Farklı görevleri gerçekleştirmek için farklı modeller kullanılır. Önceden eğitilmiş modellerden bazıları VGG-16, VGG-19, YOLOv5, YOLOv3 ve ResNet 50.

Hangi modeli kullanacağınız, gerçekleştirmek istediğiniz göreve bağlıdır. Örneğin, bir işlem yapmak istersem nesne algılama görev, YOLOv5 modelini kullanacağım.

Transfer Öğrenimi

Transfer Öğrenimi veri bilimcinin işini kolaylaştıran en önemli tekniktir. Bir modeli eğitmek ağır ve zaman alan bir iştir; bir model sıfırdan eğitilirse genellikle çok iyi sonuçlar vermez. Önceden eğitilmiş bir modele benzer bir model eğitsek bile, o kadar etkili bir performans göstermez ve bir modelin eğitilmesi haftalar alabilir. Bunun yerine, benzer bir görevi gerçekleştirmek için önceden eğitilmiş modelleri kullanabilir ve önceden öğrenilmiş ağırlıkları özel bir veri kümesi üzerinde eğiterek kullanabiliriz. Mimari ve performans açısından oldukça verimli ve rafine olan bu modeller, farklı yarışmalarda daha iyi performans göstererek zirveye yerleşti. Bu modeller çok büyük miktarda veri üzerinde eğitilir ve bu da onları bilgi açısından daha çeşitli hale getirir.

Dolayısıyla transfer öğrenimi temel olarak, modelin farklı ama benzer bir görevi yerine getirmek için daha iyi ve daha hızlı öğrenmesine yardımcı olmak için modeli önceki veriler üzerinde eğiterek edinilen bilgileri aktarmak anlamına gelir.

Örneğin, nesne tespiti için bir YOLOv5 kullanmak, ancak nesnenin önceki verilerinden farklı bir nesnedir.

Ne ve Neden YOLOv5?

YOLOv5, gerçek zamanlı nesne tespiti için sürüm 5 kullanıldığında yalnızca bir kez baktığınız anlamına gelen önceden eğitilmiş bir modeldir ve doğruluk ve çıkarım süresi açısından oldukça verimli olduğu kanıtlanmıştır. YOLO'nun başka sürümleri de var, ancak tahmin edileceği gibi YOLOv5 diğer sürümlerden daha iyi performans gösteriyor. YOLOv5 hızlı ve kullanımı kolaydır. Yolo v4 Darknet'ten daha geniş bir topluluğa sahip olan PyTorch çerçevesine dayanmaktadır.

yolov5

Şimdi YOLOv5'in mimarisine bakacağız.

Yapı kafa karıştırıcı görünebilir, ancak mimariye bakmak yerine doğrudan modeli ve ağırlıkları kullanmak zorunda olmadığımız için önemli değil.

Transfer öğreniminde, özel veri kümesini, yani modelin daha önce hiç görmediği verileri VEYA modelin eğitilmediği verileri kullanırız. Model zaten büyük bir veri kümesi üzerinde eğitildiğinden, ağırlıklara zaten sahibiz. Artık modeli, üzerinde çalışmak istediğimiz veriler üzerinde birkaç dönem için eğitebiliriz. Model verileri ilk kez gördüğünden ve görevi gerçekleştirmek için biraz bilgi gerektireceğinden eğitim gereklidir.

Transfer Öğreniminde Yer Alan Adımlar

Transfer öğrenimi basit bir süreçtir ve bunu birkaç basit adımda yapabiliriz:

  1. Veri Hazırlama
  2. Açıklamalar için doğru biçim
  3. İsterseniz birkaç katmanı değiştirin
  4. Modeli birkaç yineleme için yeniden eğitin
  5. Doğrula/Test Et

Veri Hazırlama

Seçtiğiniz veri biraz büyükse, veri hazırlığı zaman alıcı olabilir. Veri hazırlama, görüntüdeki nesnenin etrafında bir kutu oluşturarak görüntüleri etiketlediğiniz bir işlem olan görüntülere açıklama eklemek anlamına gelir. Bunu yaparak, işaretlenen nesnenin koordinatları, daha sonra eğitim için modele beslenecek olan bir dosyaya kaydedilecektir. gibi bir kaç site var makeense.ai ve roboflow.com, bu da verileri etiketlemenize yardımcı olabilir. 

Makeense.ai'de YOLOv5 modeli için verilere şu şekilde açıklama ekleyebilirsiniz.

1. Türkiye Dental Sosyal Medya Hesaplarından bizi takip edebilirsiniz. https://www.makesense.ai/. 

2. Ekranın sağ alt kısmındaki başla seçeneğine tıklayın.

yolov5

3. Ortada vurgulanan kutuya tıklayarak etiketlemek istediğiniz görüntüleri seçin.

Açıklama eklemek istediğiniz görüntüleri yükleyin ve nesne algılamaya tıklayın.
yolov5

4. Görüntüleri yükledikten sonra, veri kümenizin farklı sınıfları için etiketler oluşturmanız istenecektir.

Bir araçta plaka tespit ediyorum, bu nedenle kullanacağım tek etiket "Plakası" olacaktır. Diyalog kutusunun sol tarafındaki '+' düğmesine tıklayarak enter tuşuna basarak daha fazla etiket oluşturabilirsiniz.

Tüm etiketleri oluşturduktan sonra projeyi başlat'a tıklayın.

yolov5

Atladığınız etiketler varsa, bunları daha sonra eylemlere tıklayarak düzenleyebilir ve ardından etiketleri düzenleyebilirsiniz.

5. Görüntüdeki nesnenin etrafında bir sınırlayıcı kutu oluşturmaya başlayın. Bu alıştırma başlangıçta biraz eğlenceli olabilir, ancak çok büyük verilerle yorucu olabilir.

sınırlayıcı kutu

6. Tüm resimlere açıklama ekledikten sonra, sınıfla birlikte sınırlayıcı kutuların koordinatlarını içeren dosyayı kaydetmeniz gerekir.

Bu nedenle, eylemler düğmesine gitmeniz ve ek açıklamaları dışa aktarmaya tıklamanız gerekir, 'YOLO biçimindeki dosyaları içeren bir zip paketi' seçeneğini işaretlemeyi unutmayın, çünkü bu, dosyaları YOLO modelinde gerektiği gibi doğru biçimde kaydedecektir.

YOLO modeli

7. Bu önemli bir adımdır, bu yüzden dikkatlice takip edin.

Tüm dosyalara ve görüntülere sahip olduktan sonra, herhangi bir adla bir klasör oluşturun. Klasöre tıklayın ve klasörün içindeki ad resimleri ve etiketlerle iki klasör daha oluşturun. Komutta eğitim yolunu besledikten sonra model otomatik olarak etiketleri aradığından, klasörü yukarıdakiyle aynı şekilde adlandırmayı unutmayın.

Size klasör hakkında bir fikir vermesi için, 'CarsData' adında bir klasör oluşturdum ve bu klasörde iki klasör oluşturdum - 'resimler' ve 'etiketler'.

Yolov5

İki klasörün içinde 'train' ve 'val' adlı iki klasör daha oluşturmanız gerekir. İmgeler klasöründe resimleri kendi isteğinize göre ayırabilirsiniz ancak etiketleri ayırırken dikkatli olmalısınız, çünkü etiketler ayırdığınız resimlerle eşleşmelidir.

8. Şimdi klasörün bir zip dosyasını oluşturun ve onu colab'da kullanabilmemiz için sürücüye yükleyin.

Uygulama

Şimdi çok basit ama meşakkatli olan uygulama kısmına geleceğiz. Tam olarak hangi dosyaları değiştireceğinizi bilmiyorsanız, modeli özel veri kümesinde eğitemezsiniz. 

İşte YOLOv5 modelini özel bir veri kümesi üzerinde eğitmek için izlemeniz gereken kodlar.

Daha hızlı hesaplamalar sağlayan GPU sağladığından, bu eğitim için google colab kullanmanızı öneririm.

1. !git klonu https://github.com/ultralytics/yolov5
Bu, ultralytics tarafından oluşturulan bir GitHub deposu olan YOLOv5 deposunun bir kopyasını oluşturacaktır.

2. cd yolov5
Bu, geçerli çalışma dizinini YOLOv5 dizinine değiştirmek için kullanılan bir komut satırı kabuğu komutudur.

3. !pip install -r gereksinimleri.txt
Bu komut, modelin eğitiminde kullanılan tüm paketleri ve kitaplıkları yükleyecektir.

4. !unzip '/content/drive/MyDrive/CarsData.zip'
Google colab'da resimler ve etiketler içeren klasörü açma

İşte en önemli adım geliyor…

Artık neredeyse tüm adımları gerçekleştirdiniz ve modeli eğitecek bir kod satırı daha yazmanız gerekiyor, ancak bundan önce birkaç adım daha gerçekleştirmeniz ve özel veri kümenizin yolunu vermek için bazı dizinleri değiştirmeniz gerekiyor. ve modelinizi bu veriler üzerinde eğitin.

Yapman gerekenler işte burada.

Yukarıdaki 4 adımı gerçekleştirdikten sonra, google colab'ınızda yolov5 klasörüne sahip olacaksınız. yolov5 klasörüne gidin ve 'veri' klasörüne tıklayın. Şimdi 'coco128.yaml' adlı bir klasör göreceksiniz. 

Yolov5

Devam edin ve bu klasörü indirin.

Klasör indirildikten sonra, üzerinde birkaç değişiklik yapmanız ve indirdiğiniz klasöre geri yüklemeniz gerekir.

Şimdi indirdiğimiz dosyanın içeriğine bakalım, şöyle bir şey olacak.

Yolov5

Bu dosyayı veri setimize ve ek açıklamalarımıza göre özelleştireceğiz.

Veri setini colab'da zaten açtık, bu yüzden trenimizin yolunu ve doğrulama resimlerini kopyalayacağız. Dataset klasöründe olacak ve '/content/yolov5/CarsData/images/train' gibi görünen tren görsellerinin yolunu kopyaladıktan sonra az önce indirdiğimiz coco128.yaml dosyasına yapıştırın.

Test ve doğrulama görüntüleri için de aynısını yapın.

Şimdi bununla işimiz bittikten sonra 'nc:1' gibi sınıf sayılarından bahsedeceğiz. Bu durumda sınıf sayısı sadece 1'dir. Daha sonra aşağıdaki resimde gösterildiği gibi adı anacağız. Diğer tüm sınıfları ve gerekli olmayan yorumlanan kısmı kaldırın, bundan sonra dosyamız buna benzer görünmelidir.

Yolo

Bu dosyayı istediğiniz herhangi bir adla kaydedin. Dosyayı customPath.yaml adıyla kaydettim ve şimdi bu dosyayı coco128.yaml'nin olduğu yerde colab'a geri yükleyin. 

Artık düzenleme kısmını bitirdik ve modeli eğitmeye hazırız.

Özel veri kümenizde birkaç etkileşim için modelinizi eğitmek üzere aşağıdaki komutu çalıştırın.

Yüklemiş olduğunuz dosyanın adını ('customPath.yaml) değiştirmeyi unutmayınız. Modeli eğitmek istediğiniz dönem sayısını da değiştirebilirsiniz. Bu durumda, modeli sadece 3 dönem için eğiteceğim.

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –ağırlıklar yolov5s.pt

Klasörü karşıya yüklediğiniz yolu unutmayın. Yol değiştirilirse, komutlar hiç çalışmaz.

Bu komutu çalıştırdıktan sonra modeliniz eğitime başlamalı ve ekranınızda buna benzer bir şey göreceksiniz.

Yolo

Yolo

Tüm çağlar tamamlandıktan sonra modeliniz herhangi bir görüntü üzerinde test edilebilir.

Detect.py dosyasında neyi kaydetmek isteyip neyi beğenmediğiniz, plakaların nerede tespit edildiği vb. konularda biraz daha özelleştirme yapabilirsiniz.

6. !python Detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

Modelin tahminini bazı görüntüler üzerinde test etmek için bu komutu kullanabilirsiniz.

Karşılaşabileceğiniz Bazı Zorluklar

Yukarıda açıklanan adımlar doğru olsa da, bunları tam olarak uygulamazsanız karşılaşabileceğiniz bazı sorunlar vardır. 

  1. Yanlış yol: Bu bir baş ağrısı veya sorun olabilir. İmajı eğitirken bir yerde yanlış yola girdiyseniz, bunu tespit etmek kolay olmayabilir ve modeli eğitemeyebilirsiniz.
  2. Yanlış etiket biçimi: Bu, YOLOv5'i eğitirken insanların karşılaştığı yaygın bir sorundur. Model, yalnızca her görüntünün içinde istenen biçime sahip kendi metin dosyasına sahip olduğu bir biçimi kabul eder. Çoğu zaman, ağa bir XLS biçim dosyası veya tek bir CSV dosyası beslenir ve bu da bir hataya neden olur. Verileri bir yerden indiriyorsanız, her görüntüye açıklama eklemek yerine, etiketlerin kaydedildiği farklı bir dosya biçimi olabilir. İşte XLS formatını YOLO formatına dönüştürmek için bir makale. (makalenin tamamlanmasından sonraki bağlantı).
  3. Dosyaları doğru adlandırmamak: Dosyayı doğru adlandırmamak yine bir hataya yol açacaktır. Klasörleri isimlendirirken adımlara dikkat edin ve bu hatadan kaçının.

Sonuç

Bu yazımızda transfer öğrenmenin ne olduğunu ve önceden eğitilmiş modeli öğrendik. YOLOv5 modelini ne zaman ve neden kullanacağımızı ve modeli özel bir veri kümesi üzerinde nasıl eğiteceğimizi öğrendik. Tekniğin uygulanmasında veri setini hazırlamaktan yolları değiştirmeye ve son olarak onları ağa beslemeye kadar her adımı tek tek inceledik ve adımları iyice anladık. Ayrıca bir YOLOv5'i eğitirken karşılaşılan yaygın sorunlara ve bunların çözümlerine de baktık. Umarım bu makale, ilk YOLOv5'inizi özel bir veri kümesi üzerinde eğitmenize yardımcı olmuştur ve makaleyi beğenmişsinizdir.

Zaman Damgası:

Den fazla Analitik Vidhya