YOLO Vision 2026:

YOLOv5'i Özel Veriler Üzerinde Eğit#

📚 Bu kılavuz, YOLOv5 modelini kullanarak kendi özel veri setini nasıl eğiteceğini açıklar 🚀. Özel modeller eğitmek, genel nesne tespiti ötesinde computer vision çözümlerini belirli gerçek dünya uygulamalarına uyarlamak için temel bir adımdır.

Başlamadan Önce#

İlk olarak, gerekli ortamın kurulduğ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 şarttır. Modeller ve veri setleri yerel olarak bulunamazsa 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 Veriler Üzerinde Eğit#

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

Özel bir nesne tespiti modeli geliştirmek yinelemeli bir süreçtir:

  1. Görüntüleri Topla ve Düzenle: Özel görevine uygun görüntüleri topla. Yüksek kaliteli, çeşitli veriler çok önemlidir. Veri Toplama ve Etiketleme kılavuzumuza göz at.
  2. Nesneleri Etiketle: Görüntülerindeki ilgilendiğin nesneleri doğru bir şekilde işaretle.
  3. Model Eğit: Etiketlenmiş verileri kullanarak YOLOv5 modelini eğit. Önceden eğitilmiş ağırlıklarla başlayarak aktarımlı öğrenmeden yararlan.
  4. Dağıt ve Tahmin Et: Eğitilen modeli yeni ve daha önce görülmemiş veriler üzerinde çıkarım yapmak için kullan.
  5. Uç Durumları Topla: Modelin zayıf performans gösterdiği senaryoları (uç durumlar) belirle ve sağlamlığı artırmak için veri setine benzer veriler ekle. Döngüyü tekrarla.

Ultralytics Platform, veri seti yönetimi, model eğitimi ve dağıtımı dahil olmak üzere bu tüm makine öğrenmesi işlemleri (MLOps) döngüsü için kod yazmayı gerektirmeyen, kolaylaştırılmış 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 kaynaklı lisans; açık iş birliği ve bilgi paylaşımına tutkuyla bağlı öğrenciler, araştırmacılar ve meraklılar için idealdir. Türev eserlerin aynı lisans altı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, AGPL-3.0'ın açık kaynak gereksinimlerini atlayarak dahili araçlar, otomatik iş akışları ve üretim dağıtımları dahil olmak üzere Ultralytics yazılımının ve yapay zeka modellerinin iş ürünlerine ve hizmetlerine sorunsuz bir şekilde entegre edilmesini sağlar. Başlamak için lütfen Ultralytics Licensing aracılığıyla bizimle iletişime geç.

Lisanslama seçeneklerimizi Ultralytics Lisanslama sayfasında daha detaylı incele.

Eğitimi başlatmadan önce veri seti hazırlığı esastır.

Bir Veri Seti Oluştur#

YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketli veriye ihtiyaç duyar. Veri setini doğru bir şekilde düzenlemek anahtardır.

1.1 dataset.yaml Oluştur#

Veri seti yapılandırma dosyası (örn. coco128.yaml), veri setinin yapısını, sınıf adlarını ve görüntü dizinlerine giden yolları özetler. COCO128, kapsamlı COCO veri setinin ilk 128 görüntüsünü içeren küçük bir örnek veri seti olarak hizmet eder. Eğitim hattını hızlı bir şekilde 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 setini içeren kök dizin.
  • train, val, test: path dizininden, eğitim, doğrulama ve test setleri için görüntü yollarını listeleyen görüntülere veya metin dosyalarına giden göreli yollar.
  • names: Sınıf dizinlerini (0'dan başlayarak) karşılık gelen sınıf adlarıyla eşleyen bir sözlük.

YOLOv5 deposu kök dizininden eğitimi başlatırken path değerini mutlak bir dizine (örn. /home/user/datasets/coco128) veya ../datasets/coco128 gibi göreli bir yola ayarlayabilirsin.

Aşağıda coco128.yaml için yapı yer almaktadır (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ıcıdır. Temel modeller, etiketlemeyi otomatikleştirebilir veya yarı otomatikleştirebilir ve veri seti oluşturma sürecini hızlandırabilir. Etiket oluşturmaya yardımcı olabilecek model örnekleri:

  • Google Gemini: Gemini gibi büyük çok modüllü modeller, güçlü görüntü anlama yeteneklerine sahiptir. Görüntüler içindeki nesneleri belirlemek ve konumlandırmak, YOLO formatındaki etiketlere dönüştürülebilecek sınırlayıcı kutular veya açıklamalar oluşturmak için yönlendirilebilirler. Sağlanan öğretici not defterinde potansiyelini keşfet.
  • SAM2 (Segment Anything Model 2): SAM2 gibi bölütlemeye odaklanan temel modeller, nesneleri yüksek hassasiyetle tanımlayabilir ve çizebilir. Öncelikli olarak bölütleme için olsalar da, elde edilen maskeler genellikle nesne tespiti görevleri için uygun sınırlayıcı kutu etiketlerine dönüştürülebilir.
  • YOLOWorld: Bu model açık kelime dağarcığı algılama yetenekleri sunar. İlgilendiğin nesnelerin metin açıklamalarını sağlayabilirsin ve YOLOWorld, bu belirli sınıflar üzerinde önceden eğitim almadan bunları görüntülerde bulabilir. Bu, daha sonra iyileştirilebilecek ilk etiketleri oluşturmak için bir başlangıç noktası olarak kullanılabilir.

Bu modelleri kullanmak, gereken manuel çabayı azaltan bir "ön etiketleme" adımı sağlayabilir. Ancak, kalite doğrudan eğitilmiş YOLOv5 modelinin performansını etkilediğinden, doğruluk ve tutarlılığı sağlamak için otomatik olarak oluşturulan etiketleri gözden geçirmek ve iyileştirmek çok önemlidir. Etiketlerini oluşturduktan (ve muhtemelen iyileştirdikten) sonra, YOLO formatına uygun olduklarından emin ol: görüntü başına bir *.txt dosyası ve her satır bir nesneyi class_index x_center y_center width height (normalleştirilmiş koordinatlar, sıfır tabanlı sınıf) olarak temsil eder. Bir görüntüde ilgi çekici nesne yoksa, karşılık gelen bir *.txt dosyasına gerek yoktur.

YOLO formatındaki *.txt dosyası özellikleri kesindir:

  • Nesne sınırlayıcı kutusu başına bir satır.
  • Her satır şunları içermelidir: class_index x_center y_center width height.
  • Koordinatlar 0 ile 1 arasındaki bir aralığa normalleştirilmelidir. Bunu başarmak için, x_center ve width piksel değerlerini görüntünün toplam genişliğine böl ve y_center ile height değerlerini 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 ile, ikincisi 1 ile temsil edilir ve bu şekilde devam eder).

Example image with two persons and a tie annotated

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

YOLO format label file content example

1.3 Dizinleri Düzenle#

datasets dizinini aşağıda gösterildiği gibi yapılandır. Varsayılan olarak YOLOv5, veri seti dizininin (ör. /coco128), /yolov5 depo dizininin bitişiğinde 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ü için etiketleri 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

Bir Model Seç#

Eğitim sürecini başlatmak için bir pretrained model seç. Önceden eğitilmiş ağırlıklarla başlamak, sıfırdan eğitime kıyasla öğrenmeyi büyük ölçüde hızlandırır ve performansı artırır. YOLOv5, her biri hız ve doğruluğu farklı şekilde dengeleyen çeşitli model boyutları sunar. Örneğin YOLOv5s, kaynak kısıtlı ortamlar için uygun olan, ikinci en küçük ve en hızlı modeldir. Tüm mevcut models karşılaştırmasının ayrıntılı bir dökümü için README table kısmına göz at.

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

Eğit#

train.py betiğini kullanarak model training sürecini başlat. Gerekli argümanlar şunları içerir:

  • --img: Girdi görüntü boyutunu tanımlar (örn. --img 640). Daha büyük boyutlar genellikle daha iyi doğruluk sağlar ancak daha fazla GPU belleği gerektirir.
  • --batch: Yığın boyutunu belirler (örn. --batch 16). GPU'nun kaldırabileceği en büyük boyutu seç.
  • --epochs: Toplam eğitim dönemi sayısını belirtir (örn. --epochs 100). Bir dönem, tüm eğitim veri seti üzerinden tam bir geçişi temsil eder.
  • --data: dataset.yaml dosyanın yolu (örn. --data coco128.yaml).
  • --weights: İlk ağırlık dosyasının yolu. Daha hızlı yakınsama ve üstün sonuçlar için önceden eğitilmiş ağırlıkların (örn. --weights yolov5s.pt) kullanılması şiddetle tavsiye edilir. Sıfırdan eğitmek için (çok büyük bir veri setine ve özel ihtiyaçlara sahip olmadığın sürece önerilmez) --weights '' --cfg yolov5s.yaml kullan.

Önceden eğitilmiş ağırlıklar yerel olarak bulunamazsa 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 seti görüntülerini sırasıyla RAM veya yerel diske önbelleğe almak için --cache ram veya --cache disk kullan. Bu, özellikle veri seti G/Ç (Girdi/Çıktı) işlemleri bir dar boğaz olduğunda eğitimi büyük ölçüde hızlandırır. Bunun hatırı sayılır miktarda RAM veya disk alanı gerektirdiğini unutma.

Yerel Veri Depolama

💡 Her zaman yerel olarak depolanan veri setlerini kullanarak eğit. Ağ sürücülerinden (Google Drive gibi) veya uzak depolama alanından verilere erişmek önemli ölçüde daha yavaş olabilir ve eğitim performansını engelleyebilir. Veri setini yerel bir SSD'ye kopyalamak genellikle en iyi uygulamadır.

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

Görselleştir#

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

Comet Günlüğü ve Görselleştirme#

Comet, kapsamlı deneme takibi için tamamen entegre edilmiştir. Metrikleri canlı olarak görselleştir, hiperparametreleri kaydet, veri setlerini ve model kontrol noktalarını yönet ve etkileşimli Comet Özel Panellerini kullanarak 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 özelliklerin derinliklerine Comet Entegrasyon Kılavuzumuzdan ulaş. Comet'in yetenekleri hakkında daha fazla bilgiyi resmi belgelerinden öğren. Canlı bir demo için Comet Colab Not Defteri'ni dene: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

ClearML Günlüğü ve Otomasyonu#

ClearML entegrasyonu; ayrıntılı deneme takibi, veri seti sürüm yönetimi ve hatta eğitim çalıştırmalarının uzaktan yürütülmesini sağlar. ClearML'i şu basit adımlarla etkinleştir:

  • Paketi yükle: pip install clearml
  • ClearML'i başlat: ClearML sunucusuna (ister kendi barındırdığın ister free tier) bağlanmak için clearml-init komutunu bir kez çalıştır.

ClearML, deneme ayrıntılarını, model yüklemelerini, karşılaştırmaları, taahhüt edilmemiş kod değişikliklerini ve yüklü paketleri otomatik olarak yakalayarak tam tekrarlanabilirlik sağlar. ClearML Data kullanarak uzak aracılarda eğitim görevlerini kolayca planlayabilir ve veri seti 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 Tutma#

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

  • Eğitim ve doğrulama kaybı ile performans metrikleri.
  • Uygulanan artırmaları (mozaikler gibi) gösteren örnek görüntüler.
  • Görsel inceleme için model tahminlerinin yanındaki temel doğruluk etiketleri.
  • Kesinlik-Duyarlılık (PR) eğrileri gibi temel değerlendirme metrikleri.
  • Ayrıntılı sınıf bazlı performans analizi için Karışıklık matrisleri.
YOLOv5 local logging results with charts and mosaics

results.csv dosyası her dönemden sonra güncellenir ve eğitim sona erdiğinde results.png olarak çizilir. 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

Sonraki Adımlar#

Eğitimin başarıyla tamamlanmasının ardından, en iyi performans gösteren model kontrol noktası (best.pt) kaydedilir ve dağıtıma veya daha fazla iyileştirmeye hazırdır. Olası sonraki adımlar şunları içerir:

  • CLI veya Python aracılığıyla eğitilmiş model vasıtasıyla yeni görüntü veya videolar üzerinde inference çalıştır.
  • Modelin accuracy ve genelleştirme yeteneklerini farklı veri bölmelerinde (ör. ayrılmış bir test seti) değerlendirmek için validation gerçekleştir.
  • Farklı platformlarda optimize edilmiş çıkarım için modeli ONNX, TensorFlow SavedModel veya TensorRT gibi çeşitli dağıtım formatlarına Export et.
  • Potansiyel olarak ek performans kazanımları elde etmek için hiperparametre ayarı tekniklerini kullan.
  • En İyi Eğitim Sonuçları için İpuçları kılavuzumuzu takip ederek ve performans analizine dayanarak daha çeşitli ve zorlu verileri yinelemeli olarak 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 Sürekli Entegrasyon Durum Rozeti

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

SSS#

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

    1. Veri Setini Hazırla: Görüntüleri topla ve bunları etiketle. Etiketlerin gerekli YOLO formatında olduğundan emin ol. Görüntüleri ve etiketleri train/ ve val/ (ve isteğe bağlı olarak test/) dizinlerinde düzenle. Etiketleme sürecine yardımcı olmak veya bunu otomatikleştirmek için Google Gemini, SAM2 veya YOLOWorld gibi modelleri kullanmayı düşün (Bölüm 1.2'ye bak).
    2. Ortamını Kur: YOLOv5 deposunu klonla ve pip install -r requirements.txt kullanarak bağımlılıkları yükle.
      git clone https://github.com/ultralytics/yolov5
      cd yolov5
      pip install -r requirements.txt
    3. Veri Seti Yapılandırması Oluştur: Bir dataset.yaml dosyasında veri seti yollarını, sınıf sayısını ve sınıf adlarını tanımla.
    4. Eğitimi Başlat: dataset.yaml yollarını, istenen önceden eğitilmiş ağırlıkları (ör. yolov5s.pt), görüntü boyutunu, grup boyutunu (batch size) ve dönem sayısını (epoch) sağlayarak train.py betiğini yürüt.
      python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
  • Ultralytics Platform, genellikle kod yazma gereksinimi duymadan tüm YOLO model geliştirme yaşam döngüsünü kolaylaştırmak için tasarlanmış kapsamlı bir platformdur. Temel avantajlar şunlardır:

    • Basitleştirilmiş Eğitim: Önceden yapılandırılmış ortamları ve sezgisel bir 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 kontrolünü yap ve yönet.
    • Gerçek Zamanlı İzleme: Comet veya TensorBoard gibi entegre araçları kullanarak eğitim ilerlemesini takip et ve performans metriklerini görselleştir.
    • İş Birliği Özellikleri: Paylaşılan kaynaklar, proje yönetimi araçları ve kolay model paylaşımı yoluyla ekip çalışmasını kolaylaştırır.
    • Kodsuz Dağıtım: Eğitilmiş modelleri doğrudan çeşitli hedeflere dağıt.

    Pratik bir adım adım kılavuz için blog yazımıza göz at: Ultralytics Platform ile Özel Modelleriniz Nasıl Eğitilir.

  • İster manuel olarak etiketle ister otomatik araçlar (Bölüm 1.2'de bahsedilenler gibi) kullan, nihai etiketler YOLOv5'in gerektirdiği özel YOLO formatında olmalıdır:

    • Her görüntü için bir .txt dosyası oluştur. Dosya adı, görüntü dosya adıyla eşleşmelidir (ör. image1.jpg, image1.txt ile karşılık gelir). Bu dosyaları images/ dizininize paralel bir labels/ dizinine yerleştirin (ör. ../datasets/mydataset/labels/train/).
    • Bir .txt dosyasındaki her satır bir nesne etiketini temsil eder ve şu formatı 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 normalleştirilmelidir (0,0 ile 1,0 arasındaki değerler).
    • Sınıf dizinleri sıfır tabanlıdır (ilk sınıf 0, ikincisi 1'dir vb.).

    Birçok manuel etiketleme aracı, doğrudan YOLO formatına dışa aktarma olanağı sunar. Otomatik modeller kullanıyorsan, bunların çıktısını (örn. sınırlayıcı kutu koordinatları, bölütleme maskeleri) bu belirli normalleştirilmiş metin formatına dönüştürmek için betiklere veya sürece ihtiyacın olacaktır. Son veri seti yapının kılavuzda sağlanan örneğe uyduğundan emin ol. Daha fazla ayrıntı için Veri Toplama ve Etiketleme Kılavuzumuza göz at.

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

    • AGPL-3.0 Lisansı: Bu açık kaynaklı 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 eserlerin de AGPL-3.0 altında açık kaynaklı olmasını zorunlu kılar. AGPL-3.0 Lisans detaylarını incele.
    • Kurumsal Lisans: YOLOv5'i tescilli ürün veya hizmetlere entegre eden işletmeler için tasarlanmış ticari bir lisans. Bu lisans, AGPL-3.0 açık kaynak yükümlülüklerini ortadan kaldırarak kapalı kaynaklı dağıtıma izin verir. Daha fazla ayrıntı için veya bir Enterprise License talebinde bulunmak üzere Licensing page sayfamızı ziyaret et.

    Projenin gereksinimleri ve dağıtım modeliyle en iyi eşleşen lisansı seç.

Katkıda Bulunanlar

Yorumlar