YOLOv5'i Özel Verilerle Eğit#
📚 Bu kılavuz, YOLOv5 modelini kullanarak kendi özel veri kümeni nasıl eğiteceğini açıklar 🚀. Özel modelleri eğitmek, bilgisayarlı görü çözümlerini genel nesne algılama uygulamalarının ötesinde, belirli gerçek dünya uygulamalarına uyarlamanın temel adımlarındandır.
Başlamadan Önce#
Öncelikle gerekli ortamın kurulu olduğundan emin ol. YOLOv5 deposunu klonla ve gerekli bağımlılıkları requirements.txt konumundan yükle. Python>=3.8.0 ve PyTorch>=1.8 içeren bir ortam gereklidir. Modeller ve veri kümeleri 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 Verilerle Eğitim#
Özel bir nesne algılama modeli geliştirmek yinelemeli bir süreçtir:
- Görüntüleri Topla ve Düzenle: Belirli görevine uygun görüntüleri topla. Yüksek kaliteli ve çeşitli veriler çok önemlidir. Veri Toplama ve Etiketleme kılavuzumuza bak.
- Nesneleri Etiketle: Görüntülerindeki ilgilenilen nesneleri doğru şekilde etiketle.
- Model Eğit: YOLOv5 modelini eğitmek için etiketlenmiş verileri kullan. Önceden eğitilmiş ağırlıklarla başlayarak aktarım öğrenmesinden yararlan.
- Dağıt ve Tahmin Et: Eğitilmiş modeli, yeni ve daha önce görülmemiş veriler üzerinde çıkarım yapmak için kullan.
- Uç Durumları Topla: Modelin yetersiz performans gösterdiği senaryoları (uç durumları) belirle ve sağlamlığı artırmak için veri kümesine benzer veriler ekle. Döngüyü tekrarla.
Ultralytics Platformu, veri kümesi yönetimi, model eğitimi ve dağıtımı dahil olmak üzere bu makine öğrenimi operasyonları (MLOps) döngüsünün tamamı için kolaylaştırılmış, kod gerektirmeyen bir çözüm sunar.
Ultralytics, farklı kullanım senaryolarına uygun iki lisanslama seçeneği sunar:
- AGPL-3.0 Lisansı: OSI onaylı bu 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ı lisansla 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 gerekliliklerini uygulamadan Ultralytics yazılımlarını ve AI modellerini işletme ürünlerine ve hizmetlerine; kurum içi araçlar, otomatik iş akışları ve üretim ortamlarına sorunsuzca entegre etmeyi sağlar. Başlamak için Ultralytics Licensing üzerinden bizimle iletişime geç.
Lisanslama seçeneklerimizi Ultralytics Lisanslama sayfasında daha ayrıntılı incele.
Eğitime başlamadan önce veri kümesini hazırlamak çok önemlidir.
1. Veri Kümesi Oluştur#
YOLOv5 modellerinin nesne sınıflarının görsel özelliklerini öğrenmesi için etiketlenmiş veriler gerekir. 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 işlem 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ında şunlar bulunur:
path: Veri kümesini içeren kök dizin.train,val,test: Eğitim, doğrulama ve test kümeleri için görüntüleri veya görüntü yollarını listeleyen metin dosyalarını içeren dizinlerin,pathkonumuna göreli yolları.names: Sınıf indekslerini (0'dan başlayarak) karşılık gelen 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 yapısı verilmiştir (GitHub'da görüntüle):
# Dataset root directory relative to the yolov5 directory
path: ../datasets/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: toothbrush1.2 Otomatik Etiketleme için Modellerden Yararlan#
Manuel etiketleme yaygın bir yöntemdir ancak zaman alır. Temel modeller, etiketlemeyi 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 tanımlayıp konumlarını belirlemeleri için istem verilebilir; böylece YOLO biçimindeki etiketlere dönüştürülebilecek sınırlayıcı kutular veya açıklamalar oluşturabilirler. Sağlanan öğretici not defterinde potansiyelini keşfet.
- SAM2 (Segment Anything Model 2): SAM2 gibi bölümlemeye odaklanan temel modeller, nesneleri yüksek hassasiyetle tanımlayıp sınırlarını belirleyebilir. Öncelikli olarak bölümleme için kullanılsalar da ortaya çıkan maskeler çoğu zaman nesne algılama görevlerine uygun sınırlayıcı kutu açıklamalarına dönüştürülebilir.
- YOLOWorld: Bu model, açık sözcük dağarcıklı algılama yetenekleri sunar. İlgilendiğin nesneleri metinle açıklayabilirsin; YOLOWorld, bu belirli sınıflar üzerinde önceden eğitilmeden de görüntülerdeki nesneleri bulabilir. Bu yöntem, 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 otomatik oluşturulan etiketlerin doğruluğunu ve tutarlılığını sağlamak için bunları incelemek ve iyileştirmek çok önemlidir; çünkü etiketlerin kalitesi, eğitilmiş YOLOv5 modelinin performansını doğrudan etkiler. Etiketleri oluşturduktan (ve gerekiyorsa iyileştirdikten) sonra YOLO biçimine uygun olduklarından emin ol: görüntü başına bir *.txt dosyası olmalı ve her satırda bir nesne class_index x_center y_center width height biçiminde (normalize edilmiş koordinatlar, sıfır tabanlı sınıf) gösterilmelidir. Bir görüntüde ilgilenilen nesne yoksa karşılık gelen *.txt dosyasına gerek yoktur.
YOLO biçimindeki *.txt etiket dosyası özellikleri şöyledir:
- Her sınırlayıcı kutu için bir satır.
- Her satırda şunlar bulunmalıdır:
class_index x_center y_center width height. - Koordinatlar 0 ile 1 arasındaki bir aralığa normalize edilmelidir. Bunun için
x_centervewidthpiksel değerlerini görüntünün toplam genişliğine,y_centerveheightdeğerlerini ise görüntünün toplam yüksekliğine böl. - Sınıf indeksleri sıfır tabanlıdır (yani ilk sınıf
0, ikinci sınıf1olarak gösterilir ve bu şekilde devam eder).

Yukarıdaki görüntüye karşılık gelen etiket dosyasında iki 'person' nesnesi (sınıf indeksi 0) ve bir 'tie' nesnesi (sınıf indeksi 27) bulunur ve dosya şöyle görünür:

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 deposunun bulunduğu dizinin yanında yer alan bir /datasets klasöründe bulunmasını bekler.
YOLOv5, görüntü yolundaki /images/ ifadesinin son ö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)
└── ...
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ına sahiptir. Örneğin YOLOv5s, en küçük ikinci ve en hızlı ikinci modeldir; kaynakların kısıtlı olduğu ortamlar için uygundur. Mevcut tüm modellerin ayrıntılı karşılaştırması için README tablosuna bak.

3. Eğit#
train.py betiğini kullanarak model eğitimini başlat. Temel bağımsız değişkenler şunlardır:
--img: Giriş görüntüsünün 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: Yığın boyutunu belirler (ör.--batch 16). GPU'nun kaldırabileceği en büyük boyutu seç.--epochs: Toplam eğitim epoku sayısını belirtir (ör.--epochs 100). Bir epok, tüm eğitim veri kümesinin bir kez işlenmesini ifade eder.--data:dataset.yamldosyasının yolu (ör.--data coco128.yaml).--weights: Başlangıç ağırlık 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 tavsiye edilir. Sıfırdan eğitim için (çok büyük bir veri kümen ve özel gereksinimlerin yoksa önerilmez)--weights '' --cfg yolov5s.yamlkullan.
Ö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💡 Veri kümesi görüntülerini RAM veya yerel diskte önbelleğe almak için --cache ram ya da --cache disk kullan. Bu, özellikle veri kümesi G/Ç (Giriş/Çıkış) işlemleri darboğaz oluşturduğunda eğitimi önemli ölçüde hızlandırır. Bunun için yüksek miktarda RAM veya disk alanı gerektiğini unutma.
💡 Her zaman yerel olarak depolanan veri kümeleriyle eğitim yap. 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ı düşürebilir. Veri kümeni yerel bir SSD'ye kopyalamak çoğu zaman en iyi yöntemdir.
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 (ör. runs/train/exp, runs/train/exp2 vb.). Etkileşimli, uygulamalı bir deneyim için resmî öğretici not defterlerimizin eğitim bölümünü incele:
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 bir şekilde bütünleşir.
Comet Günlükleme 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, model tahminlerini etkileşimli Comet Özel Panelleri ile analiz et.
Başlamak çok kolay:
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 özellikleri hakkında resmî belgelerinden daha fazla bilgi edin. Canlı demo için Comet Colab Not Defteri'ni dene:
ClearML Günlükleme ve Otomasyon#
ClearML entegrasyonu, ayrıntılı deney takibi, veri kümesi sürüm yönetimi ve hatta eğitim çalışmaları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 barındırdığın sunucuya veya ücretsiz katmana) bağlanmak için
clearml-initkomutunu bir kez çalıştır.
ClearML; deney ayrıntılarını, model yüklemelerini, karşılaştırmaları, kaydedilmemiş kod değişikliklerini ve yüklü paketleri otomatik olarak yakalayarak tekrarlanabilirliği güvence altına alır. Eğitim görevlerini uzak aracılarda kolayca zamanlayabilir ve ClearML Data'yı kullanarak veri kümesi sürümlerini yönetebilirsin. Ayrıntılı bilgi için ClearML Entegrasyon Kılavuzunu incele.
Yerel Günlükleme#
Eğitim sonuçları TensorBoard kullanılarak otomatik olarak günlüğe kaydedilir ve belirli deney dizininde (ör. runs/train/exp) CSV dosyaları olarak saklanır. Günlüğe kaydedilen veriler şunları içerir:
- Eğitim ve doğrulama kayıpları ile performans metrikleri.
- Uygulanan artırmaları (mozaikler gibi) gösteren örnek görüntüler.
- Görsel inceleme için gerçek etiketler ve model tahminleri.
- Kesinlik-Duyarlılık (PR) eğrileri gibi temel değerlendirme metrikleri.
- Sınıf bazında ayrıntılı performans analizi için karmaşıklık matrisleri.
results.csv dosyası her epoktan sonra güncellenir ve eğitim tamamlandığında results.png olarak çizilir. Sağlanan yardımcı işlevi kullanarak herhangi bir results.csv dosyasının grafiğini elle de oluşturabilirsin:
from utils.plots import plot_results
# Belirli bir eğitim çalıştırma dizininin sonuçlarını çiz
plot_results("runs/train/exp/results.csv") # Bu işlem aynı dizinde 'results.png' dosyasını oluşturur
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 fazla iyileştirmeye hazır hâle gelir. Sonraki adımlar şunlar olabilir:
- Eğitilmiş modeli kullanarak yeni görüntüler veya videolar üzerinde CLI ya da Python aracılığıyla çıkarım yap.
- Farklı veri bölümlerinde (ör. ayrılmış bir test kümesinde) modelin doğruluğunu ve genelleme yeteneklerini değerlendirmek için
val.pykomutunu çalıştır. - Çeşitli platformlarda çıkarımı optimize etmek 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 evriminden yararlan.
- En İyi Eğitim Sonuçları için İpuçları kılavuzumuzu izleyerek ve performans analizine göre daha çeşitli, zorlu verileri yinelemeli olarak ekleyerek modelini geliştirmeye devam et.
Desteklenen Ortamlar#
Ultralytics, sorunsuz bir başlangıç yapmanı sağlayan CUDA, cuDNN, Python ve PyTorch gibi temel bağımlılıklarla donatılmış, kullanıma hazır ortamlar sunar.
- Ücretsiz GPU Not Defterleri:
- Bulut Platformları:
- Google Cloud: GCP Hızlı Başlangıç Kılavuzu
- Amazon AWS: AWS Hızlı Başlangıç Kılavuzu
- Microsoft Azure: AzureML Hızlı Başlangıç Kılavuzu
- Yerel Kurulum:
- Docker: Docker Hızlı Başlangıç Kılavuzu
- Docker: Docker Hızlı Başlangıç Kılavuzu
Proje Durumu#
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 kıyaslama testleri dahil temel işlevleri kapsar. Testler, tutarlı kararlılık ve optimum performans sağlamak için her 24 saatte bir ve her kod gönderiminde otomatik olarak yürütülür.
Sık Sorulan Sorular#
YOLOv5'i özel bir veri kümesi üzerinde eğitmek birkaç önemli adımdan oluşur:
- Veri Kümeni Hazırla: Görselleri topla ve açıklamalarını ekle. Açıklamaların gerekli YOLO formatında olduğundan emin ol. Görselleri ve etiketleri
train/veval/dizinlerinde (isteğe bağlı olaraktest/dizininde de) düzenle. Etiketleme sürecine yardımcı olması veya bu süreci otomatikleştirmesi için Google Gemini, SAM2 veya YOLOWorld gibi modelleri kullanmayı düşün (bkz. Bölüm 1.2). - Ortamını Kur: YOLOv5 deposunu klonla ve bağımlılıkları
pip install -r requirements.txtkullanarak yükle.git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt - 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.yamldosyasında tanımla. - Eğitimi Başlat:
train.pybetiğini çalıştır;dataset.yamliçin yolları, istediğin önceden eğitilmiş ağırlıkları (ör.yolov5s.pt), görsel boyutunu, yığın boyutunu ve epoch sayısını belirt.python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
- Veri Kümeni Hazırla: Görselleri topla ve açıklamalarını ekle. Açıklamaların gerekli YOLO formatında olduğundan emin ol. Görselleri ve etiketleri
Ultralytics Platform, genellikle kod yazmaya gerek kalmadan YOLO modeli geliştirme yaşam döngüsünün tamamını kolaylaştırmak için tasarlanmış kapsamlı bir platformdur. Başlıca avantajları şunlardır:
- Kolaylaştırılmış Eğitim: Önceden yapılandırılmış ortamlar ve sezgisel bir kullanıcı arayüzüyle 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: Eğitim ilerlemesini takip et ve performans metriklerini geldikçe görselleştir.
- İş Birliği Özellikleri: Paylaşılan kaynaklar, proje yönetimi araçları ve kolay model paylaşımıyla 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 Eğitme.
İster açıklamaları elle ekle ister otomatik araçları kullan (Bölüm 1.2'de belirtilenler gibi), son etiketler YOLOv5'in gerektirdiği belirli YOLO formatında olmalıdır:
- Her görsel için bir
.txtdosyası oluştur. Dosya adı görselin adıyla eşleşmelidir (ör.image1.jpg,image1.txtile eşleşir). Bu dosyaları,images/dizininle aynı düzeyde bulunan birlabels/dizinine yerleştir (ör.../datasets/mydataset/labels/train/). - Bir
.txtdosyasındaki her satır tek bir nesne 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örselin boyutlarına göre normalize edilmiş (0.0 ile 1.0 arasında) olmalıdır. - Sınıf indeksleri sıfır tabanlıdır (ilk sınıf
0, ikinci sınıf1vb.).
Elle açıklama ekleme araçlarının çoğu, doğrudan YOLO formatına aktarma seçeneği sunar. Otomatik modeller kullanıyorsan, modellerin çıktısını (ör. sınırlayıcı kutu koordinatları, segmentasyon maskeleri) bu özel normalize edilmiş metin biçimine dönüştürmek için betiklere veya süreçlere ihtiyacın olacaktır. Son veri kümesi yapının kılavuzdaki örneğe uygun olduğundan emin ol. Daha fazla bilgi için Veri Toplama ve Açıklama Kılavuzumuza bak.
- Her görsel için bir
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 lisansı koşullarına uymanın kabul edilebilir olduğu durumlar için uygundur. Değişikliklerin ve türetilmiş ç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ülkiyete tabi ürün veya hizmetlerine entegre eden işletmeler için tasarlanmış ticari bir lisanstır. Bu lisans, AGPL-3.0'ın açık kaynak yükümlülüklerini ortadan kaldırarak kaynak kodu kapalı dağıtıma olanak tanır. Daha fazla bilgi almak veya Kurumsal Lisans talep etmek için Lisanslama sayfamızı ziyaret et.
Projenin gereksinimlerine ve dağıtım modeline en uygun lisansı seç.
