YOLO Vision 2026:

Özel Verilerle YOLOv5 Eğitme#

📚 Bu kılavuz, YOLOv5 modelini kullanarak kendi özel veri kümeni nasıl eğiteceğini açıklar 🚀. Özel modelleri eğitmek, genel nesne algılama yaklaşımının ötesinde, bilgisayarlı görü çözümlerini belirli gerçek dünya uygulamalarına uyarlamanın temel adımlarından biridir.

Başlamadan Önce#

Öncelikle gerekli ortamın kurulu olduğundan emin ol. YOLOv5 deposunu klonla ve gerekli bağımlılıkları requirements.txt üzerinden yükle. Python>=3.8.0 ve PyTorch>=1.8 içeren bir ortam gereklidir. Modeller ve veri kümeleri yerel olarak bulunamadığında en son YOLOv5 sürümünden otomatik olarak indirilir.

git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies

Özel Verilerle Eğit#

Ultralytics aktif öğrenme döngüsü şeması

Özel bir nesne algılama modeli geliştirmek, yinelemeli bir süreçtir:

  1. Görüntüleri Topla ve Düzenle: Belirli görevinle ilgili görüntüleri topla. Yüksek kaliteli ve çeşitli veriler kritik öneme sahiptir. Veri Toplama ve Etiketleme kılavuzumuza göz at.
  2. Nesneleri Etiketle: Görüntülerindeki ilgi alanı nesnelerini doğru şekilde anotasyonla.
  3. Model Eğit: YOLOv5 modelini eğitmek için etiketlenmiş verileri kullan. Önceden eğitilmiş ağırlıklarla başlayarak aktarılmış öğrenmeden yararlan.
  4. Dağıt ve Tahmin Et: Eğitilmiş modeli yeni ve daha önce görülmemiş veriler üzerinde çıkarım yapmak için kullan.
  5. Uç Durumları Topla: Modelin kötü performans gösterdiği senaryoları (uç durumları) belirle ve dayanıklılığı artırmak için benzer verileri veri kümesine ekle. Döngüyü tekrarla.

Ultralytics Platform, veri kümesi yönetimi, model eğitimi ve dağıtım dahil olmak üzere tüm makine öğrenimi operasyonları (MLOps) döngüsü için kullanımı kolay, kodsuz bir çözüm sunar.

Lisanslama

Ultralytics, çeşitli kullanım senaryolarına uyum sağlamak için iki lisans seçeneği sunar:

  • AGPL-3.0 Lisansı: Bu OSI onaylı açık kaynak lisansı, açık iş birliğine ve bilgi paylaşımına önem veren öğrenciler, araştırmacılar ve meraklılar için idealdir. Türetilmiş çalışmaların aynı lisans kapsamında paylaşılmasını gerektirir. Tüm ayrıntılar için LICENSE dosyasına bak.
  • Kurumsal Lisans: Geliştirme ve üretim kullanımı için bu lisans, Ultralytics yazılımlarının ve AI modellerinin dahili araçlar, otomatik iş akışları ve üretim dağıtımları dahil olmak üzere iş ürünlerine ve hizmetlerine sorunsuz biçimde entegre edilmesini sağlar ve AGPL-3.0'ın açık kaynak gerekliliklerini ortadan kaldırır. Başlamak için Ultralytics Lisanslama üzerinden bizimle iletişime geç.

Lisans seçeneklerimizi Ultralytics Lisanslama sayfasında daha ayrıntılı incele.

Eğitimi başlatmadan önce veri kümesini hazırlamak çok önemlidir.

1. Veri Kümesi Oluştur#

YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketlenmiş verilere ihtiyaç duyar. Veri kümeni doğru şekilde düzenlemek çok önemlidir.

1.1 dataset.yaml Oluştur#

Veri kümesi yapılandırma dosyası (ör. coco128.yaml), veri kümesinin yapısını, sınıf adlarını ve görüntü dizinlerinin yollarını tanımlar. COCO128, kapsamlı COCO veri kümesindeki ilk 128 görüntüden oluşan küçük bir örnek veri kümesidir. Eğitim hattını hızlıca test etmek ve aşırı öğrenme gibi olası sorunları teşhis etmek için kullanışlıdır.

dataset.yaml dosya yapısı şunları içerir:

  • path: Veri kümesini içeren kök dizin.
  • train, val, test: Eğitim, doğrulama ve test kümelerine ait görüntüleri veya görüntü yollarını listeleyen metin dosyalarını içeren dizinlere, path konumundan itibaren göreli yollar.
  • names: Sınıf dizinlerini (0'dan başlayarak) ilgili sınıf adlarıyla eşleyen bir sözlük.

Eğitimi YOLOv5 deposunun kök dizininden başlatırken path değerini mutlak bir dizin (ör. /home/user/datasets/coco128) veya ../datasets/coco128 gibi göreli bir yol olarak ayarlayabilirsin.

Aşağıda coco128.yaml için yapı gösterilmiştir (GitHub'da görüntüle):

# Dataset root directory relative to the yolov5 directory
path: coco128

# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images

# Classes (example using 80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ... (remaining COCO classes)
    77: teddy bear
    78: hair drier
    79: toothbrush

1.2 Otomatik Etiketleme için Modellerden Yararlan#

Manuel etiketleme yaygın bir yaklaşımdır ancak zaman alır. Temel modeller, anotasyonu otomatikleştirebilir veya yarı otomatik hâle getirerek veri kümesi oluşturmayı hızlandırabilir. Etiket oluşturmaya yardımcı olabilecek model örnekleri:

  • Google Gemini: Gemini gibi büyük çok modlu modeller, güçlü görüntü anlama yeteneklerine sahiptir. Görüntülerdeki nesneleri belirleyip konumlandırmaları istenebilir; böylece YOLO biçimindeki etiketlere dönüştürülebilecek sınırlayıcı kutular veya açıklamalar oluşturabilirler. Potansiyelini, sağlanan eğitim not defterinde keşfet.
  • SAM2 (Her Şeyi Segmentleme Modeli 2): SAM2 gibi segmentasyona odaklanan temel modeller, nesneleri yüksek hassasiyetle belirleyip sınırlarını çizebilir. Esas olarak segmentasyon için kullanılsalar da ortaya çıkan maskeler çoğu zaman nesne algılama görevlerine uygun sınırlayıcı kutu anotasyonlarına dönüştürülebilir.
  • YOLOWorld: Bu model, açık kelime dağarcıklı algılama yetenekleri sunar. İlgilendiğin nesnelerin metinsel açıklamalarını sağlayabilirsin; YOLOWorld, bu belirli sınıflar üzerinde önceden eğitilmeden görüntülerdeki nesneleri bulabilir. Bu yaklaşım, daha sonra iyileştirilebilecek ilk etiketleri oluşturmak için başlangıç noktası olarak kullanılabilir.

Bu modelleri kullanmak, gerekli manuel çalışmayı azaltan bir "ön etiketleme" adımı sağlayabilir. Ancak otomatik oluşturulan etiketlerin doğruluk ve tutarlılığı sağlamak için gözden geçirilip iyileştirilmesi kritik öneme sahiptir; çünkü kalite, eğittiğin YOLOv5 modelinin performansını doğrudan etkiler. Etiketlerini oluşturduktan (ve gerekiyorsa iyileştirdikten) sonra bunların YOLO biçimine uygun olduğundan emin ol: her görüntü için bir *.txt dosyası ve her satırda class_index x_center y_center width height biçiminde bir nesne (normalize edilmiş koordinatlar, sıfır tabanlı sınıf). Bir görüntüde ilgi alanı nesnesi yoksa ilgili bir *.txt dosyası gerekmez.

YOLO biçimindeki *.txt dosyasının özellikleri kesindir:

  • Nesne sınırlayıcı kutusu başına bir satır.
  • Her satır şunu içermelidir: class_index x_center y_center width height.
  • Koordinatlar 0 ile 1 arasındaki aralığa normalize edilmelidir. Bunun için x_center ve width piksel değerlerini görüntünün toplam genişliğine, y_center ve height değerlerini ise görüntünün toplam yüksekliğine böl.
  • Sınıf dizinleri sıfır tabanlıdır (yani ilk sınıf 0, ikinci sınıf 1 ile gösterilir ve bu şekilde devam eder).

Example image with two persons and a tie annotated

Yukarıdaki görüntüye karşılık gelen, iki 'person' nesnesi (sınıf dizini 0) ve bir 'tie' nesnesi (sınıf dizini 27) içeren etiket dosyası şu şekilde görünür:

YOLO format label file content example

1.3 Dizinleri Düzenle#

Veri kümeleri dizinini aşağıda gösterildiği gibi yapılandır. Varsayılan olarak YOLOv5, veri kümesi dizininin (ör. /coco128), /yolov5 deposu dizininin yanında bulunan bir /datasets klasöründe yer almasını bekler.

YOLOv5, görüntü yolundaki son /images/ örneğini /labels/ ile değiştirerek her görüntünün etiketlerini otomatik olarak bulur. Örneğin:

../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file

Önerilen dizin yapısı şöyledir:

/datasets/
└── coco128/  # Dataset root
    ├── images/
    │   ├── train2017/  # Training images
    │   │   ├── 000000000009.jpg
    │   │   └── ...
    │   └── val2017/    # Validation images (optional if using same set for train/val)
    │       └── ...
    └── labels/
        ├── train2017/  # Training labels
        │   ├── 000000000009.txt
        │   └── ...
        └── val2017/    # Validation labels (optional if using same set for train/val)
            └── ...

YOLOv5 recommended dataset directory structure

2. Model Seç#

Eğitim sürecini başlatmak için bir önceden eğitilmiş model seç. Önceden eğitilmiş ağırlıklarla başlamak, sıfırdan eğitime kıyasla öğrenmeyi önemli ölçüde hızlandırır ve performansı artırır. YOLOv5, hız ve doğruluk arasında farklı dengeler sunan çeşitli model boyutları sağlar. Örneğin YOLOv5s, kaynakları kısıtlı ortamlar için uygun, en küçük ikinci ve en hızlı modeldir. Mevcut tüm modellerin ayrıntılı karşılaştırması için README tablosuna göz at.

Comparison chart of YOLOv5 models showing size, speed, and accuracy

3. Eğit#

train.py betiğini kullanarak model eğitimini başlat. Temel bağımsız değişkenler şunlardır:

  • --img: Girdi görüntü boyutunu tanımlar (ör. --img 640). Daha büyük boyutlar genellikle daha iyi doğruluk sağlar ancak daha fazla GPU belleği gerektirir.
  • --batch: Toplu iş boyutunu belirler (ör. --batch 16). GPU'nun kaldırabileceği en büyük boyutu seç.
  • --epochs: Toplam eğitim epoch sayısını belirtir (ör. --epochs 100). Bir epoch, tüm eğitim veri kümesi üzerinde tam bir geçişi temsil eder.
  • --data: dataset.yaml dosyanın yolu (ör. --data coco128.yaml).
  • --weights: Başlangıç ağırlıkları dosyasının yolu. Daha hızlı yakınsama ve daha iyi sonuçlar için önceden eğitilmiş ağırlıkların (ör. --weights yolov5s.pt) kullanılması önemle önerilir. Sıfırdan eğitim için (çok büyük bir veri kümen ve özel gereksinimlerin yoksa önerilmez) --weights '' --cfg yolov5s.yaml kullan.

Önceden eğitilmiş ağırlıklar yerel olarak bulunamadığında en son YOLOv5 sürümünden otomatik olarak indirilir.

# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
Eğitim Hızını Optimize Et

💡 Veri kümesi görüntülerini sırasıyla RAM veya yerel diskte önbelleğe almak için --cache ram ya da --cache disk kullan. Bu, özellikle veri kümesi G/Ç (Girdi/Çıktı) işlemleri darboğaz oluşturduğunda eğitimi önemli ölçüde hızlandırır. Bunun büyük miktarda RAM veya disk alanı gerektirdiğini unutma.

Yerel Veri Depolama

💡 Eğitimi her zaman yerel olarak depolanan veri kümeleriyle gerçekleştir. Ağ sürücülerinden (Google Drive gibi) veya uzak depolama alanlarından verilere erişmek çok daha yavaş olabilir ve eğitim performansını olumsuz etkileyebilir. Veri kümeni yerel bir SSD'ye kopyalamak genellikle en iyi uygulamadır.

Ağırlıklar ve günlükler dahil olmak üzere tüm eğitim çıktıları runs/train/ dizinine kaydedilir. Her eğitim oturumu yeni bir alt dizin oluşturur (ör. runs/train/exp, runs/train/exp2 vb.). Etkileşimli ve uygulamalı bir deneyim için resmi eğitim not defterlerimizdeki eğitim bölümünü incele: Open In Colab Open In Kaggle

4. Görselleştir#

YOLOv5, eğitim ilerlemesini görselleştirmek, sonuçları değerlendirmek ve performansı gerçek zamanlı izlemek için çeşitli araçlarla sorunsuz şekilde entegre olur.

Comet Günlük Kaydı ve Görselleştirme#

Comet, kapsamlı deney takibi için tamamen entegredir. Metrikleri canlı olarak görselleştir, hiperparametreleri kaydet, veri kümelerini ve model kontrol noktalarını yönet, ayrıca etkileşimli Comet Özel Panelleri ile model tahminlerini analiz et.

Başlamak oldukça kolaydır:

pip install comet_ml                                                          # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE                                        # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!

Desteklenen özellikleri Comet Entegrasyon Kılavuzumuzda daha ayrıntılı incele. Comet'in yetenekleri hakkında resmî belgelerinden daha fazla bilgi edin. Canlı bir demo için Comet Colab Not Defterini dene: Colab'da Aç

Comet UI showing YOLOv5 training metrics and visualizations

ClearML Günlük Kaydı ve Otomasyon#

ClearML entegrasyonu, ayrıntılı deney takibini, veri kümesi sürüm yönetimini ve hatta eğitim çalıştırmalarının uzaktan yürütülmesini sağlar. ClearML'yi şu basit adımlarla etkinleştir:

  • Paketi yükle: pip install clearml
  • ClearML'yi başlat: ClearML sunucuna (kendi sunucun veya ücretsiz katman) bağlanmak için clearml-init komutunu bir kez çalıştır.

ClearML; tam yeniden üretilebilirlik sağlamak için deney ayrıntılarını, model yüklemelerini, karşılaştırmaları, işlenmemiş kod değişikliklerini ve yüklü paketleri otomatik olarak kaydeder. Eğitim görevlerini uzak aracılarda kolayca zamanlayabilir ve ClearML Data ile veri kümesi sürümlerini yönetebilirsin. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzunu incele.

ClearML experiment management UI for YOLOv5

Yerel Günlük Kaydı#

Eğitim sonuçları TensorBoard kullanılarak otomatik olarak günlüğe kaydedilir ve belirli deney dizini (ör. runs/train/exp) içinde CSV dosyaları olarak saklanır. Günlüğe kaydedilen veriler şunları içerir:

  • Eğitim ve doğrulama kaybı ile performans metrikleri.
  • Uygulanan artırımları (mozaikler gibi) gösteren örnek görüntüler.
  • Görsel inceleme için gerçek etiketler ve model tahminleri.
  • Kesinlik-Geri Çağırma (PR) eğrileri gibi temel değerlendirme metrikleri.
  • Ayrıntılı sınıf bazlı performans analizi için karmaşıklık matrisleri.
YOLOv5 local logging results with charts and mosaics

results.csv dosyası her epoch sonrasında güncellenir ve eğitim tamamlandığında results.png olarak çizilir. Ayrıca sağlanan yardımcı işlevi kullanarak herhangi bir results.csv dosyasını manuel olarak da çizebilirsin:

from utils.plots import plot_results

# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv")  # This will generate 'results.png' in the same directory

YOLOv5 results.png training metrics plot

5. Sonraki Adımlar#

Eğitim başarıyla tamamlandığında, en iyi performans gösteren model kontrol noktası (best.pt) kaydedilir ve dağıtıma veya daha ileri iyileştirmelere hazır hâle gelir. Olası sonraki adımlar şunlardır:

  • Eğitilmiş modelle CLI veya Python üzerinden yeni görüntüler ya da videolar üzerinde çıkarım çalıştır.
  • Modelin farklı veri bölümleri (ör. ayrılmış bir test kümesi) üzerindeki doğruluğunu ve genelleme yeteneklerini değerlendirmek için doğrulama gerçekleştir.
  • Çeşitli platformlarda optimize edilmiş çıkarım için modeli ONNX, TensorFlow SavedModel veya TensorRT gibi çeşitli dağıtım biçimlerine aktar.
  • Ek performans kazanımları elde etmek için hiperparametre ayarlama tekniklerinden yararlan.
  • En İyi Eğitim Sonuçları için İpuçları kılavuzumuzu izleyerek ve performans analizine dayalı olarak daha çeşitli ve zorlu verileri yinelemeli biçimde ekleyerek modelini geliştirmeye devam et.

Desteklenen Ortamlar#

Ultralytics; CUDA, cuDNN, Python ve PyTorch gibi temel bağımlılıklarla donatılmış, sorunsuz bir başlangıç sağlayan kullanıma hazır ortamlar sunar.

Proje Durumu#

YOLOv5 Continuous Integration Status Badge

Bu rozet, tüm YOLOv5 GitHub Actions Sürekli Entegrasyon (CI) testlerinin başarıyla geçtiğini gösterir. Bu kapsamlı CI testleri; macOS, Windows ve Ubuntu işletim sistemlerinde eğitim, doğrulama, çıkarım, dışa aktarma ve karşılaştırmalar dahil olmak üzere temel işlevleri kapsar. Testler her 24 saatte bir ve her kod gönderiminde otomatik olarak çalıştırılarak tutarlı kararlılık ve optimum performans sağlanır.

SSS#

  • YOLOv5'i özel bir veri kümesi üzerinde eğitmek birkaç temel adımı içerir:

    1. Veri Kümene Hazırla: Görüntüleri topla ve anotasyonla. Anotasyonların gerekli YOLO biçiminde olduğundan emin ol. Görüntüleri ve etiketleri train/ ve val/ (isteğe bağlı olarak test/) dizinlerinde düzenle. Etiketleme sürecine yardımcı olması veya süreci otomatikleştirmesi için Google Gemini, SAM2 ya da YOLOWorld gibi modelleri kullanmayı düşün (bkz. Bölüm 1.2).
    2. Ortamını Kur: YOLOv5 deposunu klonla ve bağımlılıkları pip install -r requirements.txt kullanarak yükle.
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
    3. Veri Kümesi Yapılandırması Oluştur: Veri kümesi yollarını, sınıf sayısını ve sınıf adlarını bir dataset.yaml dosyasında tanımla.
    4. Eğitimi Başlat: train.py betiğini çalıştırarak dataset.yaml yolunu, istediğin önceden eğitilmiş ağırlıkları (ör. yolov5s.pt), görüntü boyutunu, toplu iş boyutunu ve epoch sayısını sağla.
      python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
  • Ultralytics Platform, YOLO modeli geliştirme yaşam döngüsünün tamamını, çoğu zaman herhangi bir kod yazmana gerek kalmadan kolaylaştırmak için tasarlanmış kapsamlı bir platformdur. Başlıca avantajları şunlardır:

    • Basitleştirilmiş Eğitim: Önceden yapılandırılmış ortamları ve sezgisel kullanıcı arayüzünü kullanarak modelleri kolayca eğit.
    • Entegre Veri Yönetimi: Veri kümelerini platform içinde verimli bir şekilde yükle, sürüm denetimini gerçekleştir ve yönet.
    • Gerçek Zamanlı İzleme: Eğitim ilerlemesini izle ve Comet veya TensorBoard gibi entegre araçları kullanarak performans metriklerini görselleştir.
    • İş Birliği Özellikleri: Paylaşılan kaynaklar, proje yönetimi araçları ve kolay model paylaşımı sayesinde ekip çalışmasını kolaylaştırır.
    • Kodsuz Dağıtım: Eğitilmiş modelleri doğrudan çeşitli hedeflere dağıt.

    Uygulamalı bir anlatım için blog yazımıza göz at: Ultralytics Platform ile Özel Modellerini Nasıl Eğitirsin.

  • İster ek açıklamaları manuel olarak ekle ister otomatik araçlar kullan (1.2. Bölüm'de bahsedilenler gibi), son etiketlerin YOLOv5'in gerektirdiği belirli YOLO formatında olması gerekir:

    • Her görüntü için bir .txt dosyası oluştur. Dosya adı görüntü dosyasının adıyla eşleşmelidir (örneğin, image1.jpg, image1.txt dosyasına karşılık gelir). Bu dosyaları, images/ dizininle aynı seviyede bulunan bir labels/ dizinine yerleştir (örneğin, ../datasets/mydataset/labels/train/).
    • Bir .txt dosyasındaki her satır bir nesne ek açıklamasını temsil eder ve şu biçimi izler: class_index center_x center_y width height.
    • Koordinatlar (center_x, center_y, width, height), görüntünün boyutlarına göre normalize edilmiş olmalıdır (0.0 ile 1.0 arasındaki değerler).
    • Sınıf indeksleri sıfır tabanlıdır (ilk sınıf 0, ikinci sınıf 1 olur ve bu şekilde devam eder).

    Birçok manuel ek açıklama aracı, YOLO formatına doğrudan dışa aktarma olanağı sunar. Otomatik modeller kullanıyorsan çıktılarını (örneğin, sınırlayıcı kutu koordinatlarını ve segmentasyon maskelerini) bu özel normalize edilmiş metin formatına dönüştürmek için betiklere veya işlemlere ihtiyacın olacaktır. Son veri kümesi yapının kılavuzda verilen örneğe uygun olduğundan emin ol. Daha fazla bilgi için Veri Toplama ve Ek Açıklama Kılavuzu sayfamıza göz at.

  • Ultralytics, farklı ihtiyaçlara göre uyarlanmış esnek lisans seçenekleri sunar:

    • AGPL-3.0 Lisansı: Bu açık kaynak lisans; akademik araştırmalar, kişisel projeler ve açık kaynak uyumluluğunun kabul edilebilir olduğu durumlar için uygundur. Değişikliklerin ve türev çalışmaların da AGPL-3.0 kapsamında açık kaynak olarak sunulmasını zorunlu kılar. AGPL-3.0 Lisansı ayrıntılarını incele.
    • Kurumsal Lisans: YOLOv5'i özel mülk ürünlere veya hizmetlere entegre eden işletmeler için tasarlanmış ticari bir lisanstır. Bu lisans, AGPL-3.0 kapsamındaki açık kaynak yükümlülüklerini kaldırarak kapalı kaynak dağıtıma olanak tanır. Daha fazla bilgi almak veya Kurumsal Lisans talep etmek için Lisanslama sayfamızı ziyaret et.

    Projenin gereksinimleri ve dağıtım modeliyle en iyi örtüşen lisansı seç.

Yorumlar