YOLOv5'i Özel Verilerle Eğitme
📚 Bu kılavuz, kendi özel veri kümeni kullanarak YOLOv5 modelini nasıl eğiteceğini açıklar 🚀. Özel modeller eğitmek, bilgisayarlı görü çözümlerini genel nesne algılama işlemlerinin ötesinde, belirli gerçek dünya uygulamalarına göre uyarlamada temel bir adımdır.
Başlamadan Önce
Öncelikle, gerekli ortamı kurduğundan emin ol. YOLOv5 deposunu klonla ve requirements.txt dosyasındaki gerekli bağımlılıkları yükle. Python>=3.8.0 ve PyTorch>=1.8 kurulu bir ortam gereklidir. Modeller ve veri kümeleri yerel olarak bulunamazlarsa, en güncel 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
Özel bir nesne algılama modeli geliştirmek yinelemeli bir süreçtir:
- Görüntüleri Topla ve Düzenle: Belirli görevinle ilgili görüntüleri bir araya getir. Yüksek kaliteli ve çeşitli veriler çok önemlidir. Veri Toplama ve Etiketleme kılavuzumuza göz at.
- Nesneleri Etiketle: Görüntülerindeki ilgilendiğin nesneleri doğru bir şekilde işaretle.
- Modeli Eğit: Etiketli verileri kullanarak YOLOv5 modelini eğit. Önceden eğitilmiş ağırlıklarla başlayarak transfer öğreniminden yararlan.
- Dağıt ve Tahmin Et: Eğitilmiş modeli yeni, görülmemiş veriler üzerinde çıkarım yapmak için kullan.
- Uç Durumları Topla: Modelin zayıf performans gösterdiği senaryoları (uç durumlar) belirle ve sağlamlığı artırmak için benzer verileri veri kümene ekle. Döngüyü tekrarla.
Ultralytics Platform, veri kümesi yönetimi, model eğitimi ve dağıtımı dahil olmak üzere bu tüm makine öğrenimi operasyonları (MLOps) döngüsü için kod gerektirmeyen, kolaylaştırılmış bir çözüm sunar.
Ultralytics, çeşitli kullanım senaryolarına uyum sağlamak için iki lisanslama 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 tutkuyla bağlı öğrenciler, araştırmacılar ve meraklılar için idealdir. Türetilen çalışmaların aynı lisans altında paylaşılmasını gerektirir. Tüm detaylar için LICENSE dosyasına bak.
- Kurumsal Lisans: Ticari uygulamalar için tasarlanan bu lisans, Ultralytics yazılımının ve AI modellerinin, AGPL-3.0'ın açık kaynak şartları olmaksızın ticari ürünlere ve hizmetlere sorunsuz bir şekilde entegre edilmesine izin verir. Projen ticari dağıtım gerektiriyorsa, Kurumsal Lisans talebinde bulun.
Lisanslama seçeneklerimizi Ultralytics Lisanslama sayfasında daha ayrıntılı incele.
Eğitimi başlatmadan önce veri kümesi hazırlığı şarttır.
Bir Veri Kümesi Oluştur
YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketli verilere ihtiyaç duyar. Veri kümeni doğru bir şekilde düzenlemek anahtardır.
1.1 dataset.yaml Dosyasını Oluştur
Veri kümesi yapılandırma dosyası (örneğin coco128.yaml), veri kümesinin yapısını, sınıf adlarını ve görüntü dizinlerine giden yolları ana hatlarıyla belirtir. COCO128, geniş COCO veri kümesinden alınan ilk 128 görüntüden oluşan küçük bir örnek veri kümesidir. Eğitim hattını hızlı bir şekilde test etmek ve aşırı öğrenme gibi potansiyel 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ümeleri için görüntüleri veya görüntü yollarını listeleyen metin dosyalarını içeren dizinlere,pathüzerinden göreli yollar.names: Sınıf dizinlerini (0'dan başlayarak) ilgili sınıf adlarıyla eşleyen bir sözlük.
path değerini mutlak bir dizin (örneğin /home/user/datasets/coco128) veya YOLOv5 deposunun kök dizininden eğitim başlatırken ../datasets/coco128 gibi göreli bir yol olarak ayarlayabilirsin.
Aşağıda coco128.yaml için yapı bulunmaktadır (GitHub üzerinde 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: toothbrush1.2 Otomatik Etiketleme için Modellerden Yararlan
Manuel etiketleme yaygın yaklaşımdır ancak zaman alıcıdır. Temel modeller, etiketlemeyi otomatikleştirebilir veya yarı otomatikleştirebilir ve veri kümesi oluşturmayı hızlandırabilir. Etiket üretmeye 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üler içindeki nesneleri tanımlamak ve konumlandırmak için yönlendirilebilirler, YOLO formatındaki etiketlere dönüştürülebilen sınırlayıcı kutular veya açıklamalar üretebilirler. Sağlanan eğitim 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. Öncelikle bölütleme için olsa da, elde edilen maskeler genellikle nesne algılama görevlerine uygun sınırlayıcı kutu açıklamalarına dönüştürülebilir.
- YOLOWorld: Bu model, açık kelime dağarcıklı 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 onları görüntülerde bulabilir. Bu, daha sonra geliştirilebilecek ilk etiketleri oluşturmak için bir başlangıç noktası olarak kullanılabilir.
Bu modelleri kullanmak bir "ön etiketleme" adımı sağlayabilir ve gereken manuel çabayı azaltabilir. Ancak, doğruluğu ve tutarlılığı sağlamak için otomatik olarak oluşturulan etiketleri gözden geçirmek ve iyileştirmek çok önemlidir, çünkü kalite, eğitilmiş YOLOv5 modelinin performansını doğrudan etkiler. Etiketlerini oluşturduktan (ve muhtemelen iyileştirdikten) sonra, YOLO formatına uygun olduklarından emin ol: her görüntü için bir *.txt dosyası ve her satır bir nesneyi class_index x_center y_center width height (normalize edilmiş koordinatlar, sıfır tabanlı sınıf dizini) şeklinde temsil eder. Eğer bir görüntüde ilgilenilen nesne yoksa, ilgili bir *.txt dosyasına gerek yoktur.
YOLO formatındaki *.txt dosya özellikleri kesindir:
- Her nesne sınırlayıcı kutu için bir satır.
- Her satır şunları içermelidir:
class_index x_center y_center width height. - Koordinatlar 0 ile 1 aralığında normalize edilmelidir. Bunu başarmak 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 dizinleri sıfır tabanlıdır (yani ilk sınıf
0, ikincisi1ile temsil edilir ve böyle devam eder).

İ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ünecektir:

1.3 Dizinleri Düzenle
Structure your datasets directory as illustrated below. By default, YOLOv5 anticipates the dataset directory (e.g., /coco128) to reside within a /datasets folder located adjacent to the /yolov5 repository directory.
YOLOv5, görüntü yolundaki /images/ ifadesinin son ö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)
└── ...
Bir Model Seç
Choose a pretrained model to initiate the training process. Starting with pretrained weights significantly accelerates learning and improves performance compared to training from scratch. YOLOv5 offers various model sizes, each balancing speed and accuracy differently. For example, YOLOv5s is the second-smallest and fastest model, suitable for resource-constrained environments. Consult the README table for a detailed comparison of all available models.

Eğit
Begin the model training using the train.py script. Essential arguments include:
--img: Giriş görüntü boyutunu tanımlar (örneğin--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 (örneğin--batch 16). GPU'nun kaldırabileceği en büyük boyutu seç.--epochs: Toplam eğitim dönem sayısını belirtir (örneğin--epochs 100). Bir dönem, tüm eğitim veri kümesi üzerinden tam bir geçişi temsil eder.--data:dataset.yamldosyana giden yol (örneğin--data coco128.yaml).--weights: Başlangıç ağırlıkları dosyasına giden yol. Daha hızlı yakınsama ve üstün sonuçlar için önceden eğitilmiş ağırlıkların (örneğin--weights yolov5s.pt) kullanılması şiddetle tavsiye edilir. Sıfırdan eğitmek için (çok büyük bir veri kümen ve özel ihtiyaçların yoksa tavsiye edilmez),--weights '' --cfg yolov5s.yamlkullan.
Önceden eğitilmiş ağırlıklar, yerel olarak bulunamazsa en güncel 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💡 Employ --cache ram or --cache disk to cache dataset images in RAM or local disk, respectively. This dramatically accelerates training, particularly when dataset I/O (Input/Output) operations are a bottleneck. Note that this requires substantial RAM or disk space.
💡 Her zaman yerel olarak depolanan veri kümelerini kullanarak eğitim yap. Ağ sürücülerinden (Google Drive gibi) veya uzak depolamadan verilere erişmek önemli ölçüde daha yavaş olabilir ve eğitim performansını engelleyebilir. Veri kümeni 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 (örneğin runs/train/exp, runs/train/exp-2 vb.). Etkileşimli, uygulamalı bir deneyim için resmi eğitim not defterlerimizdeki eğitim bölümünü keşfet:
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ı deney takibi için tamamen entegredir. Ölçümleri canlı olarak görselleştir, hiperparametreleri kaydet, veri kümelerini ve model kontrol noktalarını yönet ve etkileşimli Comet Özel Panellerini kullanarak model tahminlerini 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 derinlemesine incele. Comet'in yetenekleri hakkında resmi belgelerinden daha fazla bilgi edin. Canlı bir demo için Comet Colab Not Defterini dene:
ClearML Günlüğü ve Otomasyonu
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'i şu basit adımlarla etkinleştir:
- Paketi yükle:
pip install clearml - Initialize ClearML: Run
clearml-initonce to connect to your ClearML server (either self-hosted or the free tier).
ClearML, deney 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. Eğitim görevlerini uzak aracılarda kolayca zamanlayabilir ve ClearML Data kullanarak veri kümesi sürümlerini yönetebilirsin. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzunu keşfet.
Yerel Günlük
Training results are automatically logged using TensorBoard and saved as CSV files within the specific experiment directory (e.g., runs/train/exp). Logged data includes:
- Eğitim ve doğrulama kaybı ile performans ölçümleri.
- Uygulanan artırmaları (mozaikler gibi) gösteren örnek görüntüler.
- Görsel inceleme için model tahminlerinin yanı sıra 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 Karmaşıklık matrisleri.
results.csv dosyası her dönemden sonra güncellenir ve eğitim sona erdiğinde results.png olarak çizilir. Ayrıca sağlanan yardımcı işlevi kullanarak herhangi bir results.csv dosyasını manuel olarak ç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
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 hale gelir. Olası sonraki adımlar şunlardır:
- Run inference on new images or videos using the trained model via the CLI or Python.
- Perform validation to evaluate the model's accuracy and generalization capabilities on different data splits (e.g., a held-out test set).
- Export the model to various deployment formats like ONNX, TensorFlow SavedModel, or TensorRT for optimized inference on diverse platforms.
- Potansiyel olarak ek performans kazanımları elde etmek için hiperparametre ayarlama tekniklerini kullan.
- En İyi Eğitim Sonuçları İçin İpuçları kılavuzumuzu takip ederek ve performans analizine dayalı olarak daha çeşitli ve zorlu verileri yinelemeli bir şekilde ekleyerek modelini geliştirmeye devam et.
Desteklenen Ortamlar
Ultralytics, sorunsuz bir başlangıcı kolaylaştıran CUDA, cuDNN, Python ve PyTorch gibi temel bağımlılıklarla donatılmış, kullanıma hazır ortamlar sağlar.
- Ü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 titiz CI testleri; eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslama dahil olmak üzere macOS, Windows ve Ubuntu işletim sistemleri genelindeki temel işlevleri kapsar. Testler her 24 saatte bir ve her kod işlemesinde otomatik olarak yürütülerek tutarlı kararlılık ve optimum performans sağlanır.
SSS
YOLOv5'i özel veri kümemde nasıl eğitirim?
YOLOv5'i özel bir veri kümesinde eğitmek birkaç temel adımı içerir:
- 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/veval/(ve isteğe bağlı olaraktest/) dizinlerinde düzenle. Etiketleme sürecine yardımcı olması veya otomatikleştirmesi için Google Gemini, SAM2 veya YOLOWorld gibi modelleri kullanmayı düşün (Bölüm 1.2'ye bak). - Ortamını Kur: YOLOv5 deposunu klonla ve
pip install -r requirements.txtkomutunu kullanarak bağımlılıkları yükle.git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt - Veri Seti Yapılandırmasını Oluştur: Bir
dataset.yamldosyasında veri seti yollarını, sınıf sayısını ve sınıf isimlerini tanımla. - Start Training: Execute the
train.pyscript, providing paths to yourdataset.yaml, desired pretrained weights (e.g.,yolov5s.pt), image size, batch size, and the number of epochs.python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
YOLO modellerimi eğitmek için neden Ultralytics Platform kullanmalıyım?
Ultralytics Platform, YOLO modeli geliştirme yaşam döngüsünün tamamını, genellikle kod yazmaya gerek kalmadan 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ü kullanarak modelleri kolayca eğit.
- Entegre Veri Yönetimi: Veri setlerini 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 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.
Pratik bir adım adım rehber için blog yazımıza göz at: Ultralytics Platform ile Özel Modellerini Nasıl Eğitirsin.
Etiketlenmiş verilerimi YOLOv5 formatına nasıl dönüştürürüm?
İster manuel olarak etiketle, ister (Bölüm 1.2'de bahsedilenler gibi) otomatik araçlar kullan, nihai etiketler YOLOv5'in gerektirdiği özel YOLO formatında olmalıdır:
- Create one
.txtfile for each image. The filename should match the image filename (e.g.,image1.jpgcorresponds toimage1.txt). Place these files in alabels/directory parallel to yourimages/directory (e.g.,../datasets/mydataset/labels/train/). - Bir
.txtdosyası içindeki 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ü boyutlarına göre normalize edilmiş (0.0 ile 1.0 arasında değerler) olmalıdır. - Sınıf indeksleri sıfır tabanlıdır (ilk sınıf
0, ikincisi1şeklindedir, vb.).
Birçok manuel etiketleme aracı, doğrudan YOLO formatında dışa aktarma seçeneği sunar. Otomatik modeller kullanıyorsan, bunların çıktılarını (örneğin, sınırlayıcı kutu koordinatları, segmentasyon maskeleri) bu özel normalize edilmiş metin formatına dönüştürmek için betiklere veya süreçlere ihtiyacın olacak. Nihai veri seti yapının kılavuzda sağlanan örneğe uyduğundan emin ol. Daha fazla detay için Veri Toplama ve Etiketleme Kılavuzumuza göz at.
Ticari uygulamalarda YOLOv5 kullanmak için lisanslama seçenekleri nelerdir?
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 çalışmaların da AGPL-3.0 altında açık kaynaklı olmasını zorunlu kılar. AGPL-3.0 Lisans detaylarını incele.
- Enterprise License: A commercial license designed for businesses integrating YOLOv5 into proprietary products or services. This license removes the open-source obligations of AGPL-3.0, allowing for closed-source distribution. Visit our Licensing page for further details or to request an Enterprise License.
Projenin gereksinimlerine ve dağıtım modeline en uygun lisansı seç.
