Özel Veriler Üzerinde YOLOv5 Eğitin
📚 Bu kılavuz, YOLOv5 modelini 🚀 kullanarak kendi özel veri kümenizi nasıl eğiteceğinizi açıklar. Özel modelleri eğitmek, bilgisayar görüşü çözümlerini genel nesne tespiti ötesinde belirli gerçek dünya uygulamalarına uyarlamanın temel bir adımıdır.
Başlamadan Önce
İlk olarak, gerekli ortamın ayarlandığından emin olun. YOLOv5 deposunu klonlayın ve gerekli bağımlılıkları şuradan yükleyin: requirements.txt
. Bir Python>=3.8.0 ortamı ile PyTorch>=1.8 esastır. Modeller ve veri kümeleri en son YOLOv5'ten otomatik olarak indirilir sürüm yerel olarak bulunmazlarsa.
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies
Özel Veri Üzerinde Eğitim
Özel bir nesne algılama modeli geliştirmek yinelemeli bir süreçtir:
- Görüntüleri Toplayın ve Düzenleyin: Belirli görevinizle ilgili görüntüleri toplayın. Yüksek kaliteli, çeşitli veriler çok önemlidir. Veri Toplama ve Açıklama kılavuzumuza bakın.
- Nesneleri Etiketleme: Görüntülerinizdeki ilgi çekici nesneleri doğru bir şekilde işaretleyin.
- Model Eğitme: Etiketlenmiş verileri kullanarak YOLOv5 modelinizi eğitin. Önceden eğitilmiş ağırlıklarla başlayarak transfer öğreniminden yararlanın.
- Dağıtın ve Tahmin Edin: Eğitilmiş modeli yeni, görülmemiş veriler üzerinde çıkarım için kullanın.
- Uç Durumları Toplayın: Modelin kötü performans gösterdiği senaryoları (uç durumlar) belirleyin ve sağlamlığı artırmak için veri kümenize benzer veriler ekleyin. Döngüyü tekrarlayın.
Ultralytics HUB, 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ış, kodsuz bir çözüm sunar.
Lisanslama
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ği ve bilgi paylaşımı konusunda tutkulu olan öğrenciler, araştırmacılar ve meraklılar için idealdir. Türetilmiş çalışmaların aynı lisans altında paylaşılmasını gerektirir. Tüm ayrıntılar için LİSANS dosyasına bakın.
- 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 koşulları olmaksızın ticari ürünlere ve hizmetlere sorunsuz bir şekilde entegre edilmesine olanak tanır. Projeniz ticari dağıtım gerektiriyorsa, bir Kurumsal Lisans talep edin.
Ultralytics Lisanslama sayfasında lisanslama seçeneklerimizi daha ayrıntılı inceleyin.
Eğitime başlamadan önce, veri kümesi hazırlığı esastır.
1. Bir Veri Kümesi Oluşturun
YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketlenmiş verilere ihtiyaç duyar. Veri kümenizi doğru bir şekilde düzenlemek çok önemlidir.
1.1 Oluştur dataset.yaml
Veri kümesi yapılandırma dosyası (örn. coco128.yaml
), veri kümesinin yapısını, sınıf adlarını ve görüntü dizinlerine giden yolları özetler. COCO128 kapsamlı olanından ilk 128 görüntüyü içeren küçük bir örnek veri kümesi olarak hizmet vermektedir COCO veri kümesi. Eğitim hattını hızlı bir şekilde test etmek ve olası sorunları teşhis etmek için kullanışlıdır, örneğin aşırı uyum (overfitting).
dataset.yaml
dosyası yapısı şunları içerir:
path
: Veri kümesini içeren kök dizin.train
,val
,test
: Şuradan göreli yollar:path
eğitim, doğrulama ve test kümeleri için görüntü yollarını listeleyen görüntüleri veya metin dosyalarını içeren dizinlere.names
: Sınıf indekslerini (0'dan başlayarak) karşılık gelen sınıf adlarına eşleyen bir sözlük.
Aşağıda şunun yapısı bulunmaktadır: coco128.yaml
(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 Yararlanma
Araçlar kullanılarak manuel etiketleme yaygın bir yaklaşım olsa da, bu işlem zaman alıcı olabilir. Temel modellerdeki son gelişmeler, açıklama sürecini otomatikleştirme veya yarı otomatikleştirme olanakları sunarak veri kümesi oluşturmayı önemli ölçüde hızlandırabilir. Etiket oluşturmaya yardımcı olabilecek modellere birkaç örnek:
- Google Gemini: Gemini gibi büyük çok modlu modeller, güçlü görüntü anlama yeteneklerine sahiptir. Görüntülerdeki nesneleri tanımlamak ve konumlandırmak için yönlendirilebilir, böylece YOLO formatı etiketlerine dönüştürülebilen sınırlayıcı kutular veya açıklamalar oluşturulabilir. Sağlanan eğitim not defterinde potansiyelini keşfedin.
- SAM2 (Segment Anything Model 2): SAM2 gibi segmentasyona odaklanan temel modeller, nesneleri yüksek hassasiyetle tanımlayabilir ve sınırlarını belirleyebilir. Öncelikli olarak segmentasyon için olsa da, elde edilen maskeler genellikle nesne algılama görevleri için uygun sınırlayıcı kutu açıklamalarına dönüştürülebilir.
- YOLOWorld: Bu model, açık kelime dağarcığı algılama yetenekleri sunar. İlgilendiğiniz nesnelerin metin açıklamalarını sağlayabilirsiniz ve YOLOWorld, bu belirli sınıflar üzerinde önceden eğitim olmaksızın görüntülerin içindeki nesneleri bulabilir. Bu, daha sonra iyileştirilebilecek ilk etiketleri oluşturmak için bir başlangıç noktası olarak kullanılabilir.
Bu modelleri kullanmak, manuel çabayı azaltarak bir "ön etiketleme" adımı sağlayabilir. Ancak, otomatik olarak oluşturulan etiketlerin doğruluğunu ve tutarlılığını sağlamak için gözden geçirilmesi ve iyileştirilmesi çok önemlidir, çünkü kalite doğrudan eğitilmiş YOLOv5 modelinizin performansını etkiler. Etiketlerinizi oluşturduktan (ve potansiyel olarak iyileştirdikten) sonra, şuna uygun olduklarından emin olun: YOLO formatı: bir *.txt
dosyası, her satır bir nesneyi şu şekilde temsil edecek şekilde resim başına: class_index x_center y_center width height
(normalize edilmiş koordinatlar, sıfır tabanlı sınıf). Bir görüntüde ilgi çekici nesne yoksa, karşılık gelen *.txt
dosyası gereklidir.
YOLO formatı *.txt
dosyası özellikleri kesindir:
- Sınırlayıcı kutu başına bir satır.
- Her satır şunları içermelidir:
class_index x_center y_center width height
. - Koordinatlar şu şekilde olmalıdır: normalize edilmiş 0 ile 1 arasında bir aralığa. Bunu başarmak için, piksel değerlerini şuna bölün:
x_center
vewidth
görüntünün toplam genişliğine göre ve bölüny_center
veheight
görüntünün toplam yüksekliğine göre. - Sınıf indeksleri sıfır tabanlıdır (yani, ilk sınıf şu şekilde temsil edilir:
0
, ikincisi ise1
, vb.).
Yukarıdaki görüntüye karşılık gelen, iki 'person' nesnesi içeren etiket dosyası (sınıf indeksi 0
) ve bir 'tie' nesnesi (sınıf indeksi 27
), şöyle görünecektir:
1.3 Dizinleri Düzenleyin
Yapılandırın veri kümeleri aşağıda gösterildiği gibi dizin. Varsayılan olarak, YOLOv5 veri kümesi dizinini bekler (örneğin, /coco128
) içinde bulunması için /datasets
klasöründe bulunur bitişik the /yolov5
depo dizini.
YOLOv5, her görüntü için etiketleri, son örneğini değiştirerek otomatik olarak bulur /images/
ile resim yolunda /labels/
. Ö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. Bir Model Seçin
Eğitim sürecini başlatmak için önceden eğitilmiş bir model seçin. Önceden eğitilmiş ağırlıklarla başlamak, öğrenmeyi önemli ölçüde hızlandırır ve sıfırdan eğitime kıyasla 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 en küçük ikinci ve en hızlı modeldir. Mevcut tüm modellerin ayrıntılı bir karşılaştırması için BENİOKU tablosuna bakın.
3. Eğitim
Şuna başlayın: model eğitimi kullanarak train.py
komut dosyası. Temel argümanlar şunları içerir:
--img
: Girişi tanımlar görüntü boyutu (örneğin,--img 640
). Daha büyük boyutlar genellikle daha iyi doğruluk sağlar ancak daha fazla GPU belleği gerektirir.--batch
: Şunu belirler: yığın boyutu (örneğin,--batch 16
). GPU'nuzun kaldırabileceği en büyük boyutu seçin.--epochs
: Toplam eğitim sayısını belirtir epok (örneğin,--epochs 100
). Bir epoch, tüm eğitim veri kümesi üzerinde tam bir geçişi temsil eder.--data
: Şunun yolu:dataset.yaml
dosyası (örneğin,--data coco128.yaml
).--weights
: Başlangıç ağırlıklar dosyasının yolu. Önceden eğitilmiş ağırlıkları kullanma (örneğin,--weights yolov5s.pt
), daha hızlı yakınsama ve üstün sonuçlar için şiddetle tavsiye edilir. Sıfırdan eğitmek için (çok büyük bir veri kümeniz ve özel ihtiyaçlarınız yoksa önerilmez), şunu kullanın:--weights '' --cfg yolov5s.yaml
.
Ö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 Etme
💡 Kullanın --cache ram
veya --cache disk
veri kümesi görüntülerini önbelleğe almak için RAM veya sırasıyla yerel disk. Bu, özellikle veri kümesi G/Ç (Giriş/Çıkış) işlemleri bir darboğaz olduğunda eğitimi önemli ölçüde hızlandırır. Bunun önemli miktarda RAM veya disk alanı gerektirdiğini unutmayın.
Yerel Veri Depolama
💡 Her zaman yerel olarak depolanan veri kümelerini kullanarak eğitim yapın. 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ı olumsuz etkileyebilir. Veri kümenizi 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ı şuraya kaydedilir: runs/train/
dizin. Her eğitim oturumu yeni bir alt dizin oluşturur (örneğin, runs/train/exp
, runs/train/exp2
, vb.). Etkileşimli, uygulamalı bir deneyim için, resmi eğitim not defterlerimizdeki eğitim bölümünü keşfedin:
4. Görselleştirme
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 Kayıt ve Görselleştirme 🌟 YENİ
Comet, kapsamlı deney takibi için tamamen entegre edilmiştir. Metrikleri canlı olarak görselleştirin, hiperparametreleri kaydedin, veri kümelerini ve model kontrol noktalarını yönetin ve etkileşimli Comet Özel Panelleri kullanarak model tahminlerini analiz edin.
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!
Şuradaki desteklenen özelliklere daha yakından bakın: Comet Entegrasyon Kılavuzu. Comet'in yetenekleri hakkında resmi web sitelerinden daha fazla bilgi edinin: belgeleme. Canlı bir demo için Comet Colab Not Defteri'ni deneyin:
ClearML Günlük Kaydı ve Otomasyon 🌟 YENİ
ClearML entegrasyonu, ayrıntılı deney takibi, veri kümesi sürüm yönetimi ve hatta eğitim çalıştırmalarının uzaktan yürütülmesini sağlar. Şu basit adımlarla ClearML'i etkinleştirin:
- Paketi kurun:
pip install clearml
- ClearML'i Başlat: Çalıştır
clearml-init
ClearML sunucunuza (ister kendiniz barındırın, ister ücretsiz katman).
ClearML, tam yeniden üretilebilirlik sağlayarak deney ayrıntılarını, model yüklemelerini, karşılaştırmaları, commit edilmemiş kod değişikliklerini ve kurulu paketleri otomatik olarak yakalar. Uzak agent'lar üzerinde eğitim görevlerini kolayca planlayabilir ve ClearML Data'yı kullanarak veri kümesi sürümlerini yönetebilirsiniz. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzu'nu inceleyin.
Yerel Kayıt
Eğitim sonuçları otomatik olarak kullanılarak kaydedilir TensorBoard ve şu şekilde kaydedilir CSV dosyaları belirli deney dizini içinde (örneğin, runs/train/exp
). Kaydedilen veriler şunları içerir:
- Eğitim ve doğrulama kaybı ve performans metrikleri.
- 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.
- Hassasiyet-Geri Çağırma (PR) eğrileri gibi temel değerlendirme metrikleri.
- Ayrıntılı sınıf bazında performans analizi için Karışıklık matrisleri.
results.csv
dosyası her epoch'tan sonra güncellenir ve şu şekilde çizilir: results.png
eğitim tamamlandıktan sonra. Ayrıca herhangi birini de çizebilirsiniz results.csv
dosyasını sağlanan yardımcı fonksiyonu kullanarak manuel olarak:
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
5. Sonraki Adımlar
Eğitim başarıyla tamamlandıktan sonra, en iyi performans gösteren model kontrol noktası (best.pt
), kaydedilir ve dağıtıma veya daha fazla iyileştirmeye hazırdır. Potansiyel sonraki adımlar şunları içerir:
- CLI veya Python aracılığıyla eğitilmiş modeli kullanarak yeni resimler veya videolar üzerinde çıkarım yapın.
- Modelin farklı veri bölmeleri (örneğin, ayrılmış bir test kümesi) üzerindeki doğruluğunu ve genelleme yeteneklerini değerlendirmek için doğrulama gerçekleştirin.
- Modeli, çeşitli platformlarda optimize edilmiş çıkarım için ONNX, TensorFlow SavedModel veya TensorRT gibi çeşitli dağıtım formatlarına aktarın.
- Ek performans kazanımları elde etmek için hiperparametre ayarlama tekniklerini kullanın.
- En İyi Eğitim Sonuçları için İpuçları bölümümüzü takip ederek ve performans analizine göre yinelemeli olarak daha çeşitli ve zorlu veriler ekleyerek modelinizi geliştirmeye devam edin.
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, macOS, Windows ve Ubuntu işletim sistemlerinde eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslamalar dahil olmak üzere temel işlevleri kapsar. Testler her 24 saatte bir ve her kod kaydında otomatik olarak yürütülerek tutarlı kararlılık ve optimum performans sağlanır.
SSS
Sıkça Sorulan Sorular
Özel veri kümemde YOLOv5'i nasıl eğitirim?
Özel bir veri kümesinde YOLOv5'i eğitmek birkaç temel adım içerir:
- Veri Kümenizi Hazırlayın: Görüntüleri toplayın ve etiketleyin. Etiketlerin gerekli olduğundan emin olun YOLO formatı. Görüntüleri ve etiketleri şu şekilde düzenleyin:
train/
veval/
(ve isteğe bağlı olaraktest/
) dizinleri. Şunun gibi modelleri kullanmayı düşünebilirsiniz: Google Gemini, SAM2, veya YOLOWorld etiketleme sürecine yardımcı olmak veya otomatikleştirmek için (Bölüm 1.2'ye bakın). - Ortamınızı Kurun: YOLOv5 deposunu klonlayın ve kullanarak bağımlılıkları yükleyin
pip install -r requirements.txt
.git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt
- Veri Kümesi Yapılandırması Oluştur: Bir içindeki veri kümesi yollarını, sınıf sayısını ve sınıf adlarını tanımlayın
dataset.yaml
dosyası. - Eğitime Başla: Şu komutu çalıştırın:
train.py
komut dosyası, şunlara giden yollar sağlayarakdataset.yaml
, istenen önceden eğitilmiş ağırlıklar (örneğin,yolov5s.pt
), görüntü boyutu, toplu iş boyutu ve epok sayısı.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 HUB kullanmalıyım?
Ultralytics HUB, genellikle herhangi bir kod yazmaya gerek kalmadan tüm YOLO model geliştirme yaşam döngüsünü kolaylaştırmak için tasarlanmış kapsamlı bir platformdur. Temel faydaları şunlardır:
- Basitleştirilmiş Eğitim: Önceden yapılandırılmış ortamları ve sezgisel bir kullanıcı arayüzünü kullanarak modelleri kolayca eğitin.
- Entegre Veri Yönetimi: Veri kümelerinizi platform içinde verimli bir şekilde yükleyin, sürüm kontrolü yapın ve yönetin.
- Gerçek Zamanlı İzleme: Comet veya TensorBoard gibi entegre araçları kullanarak eğitim ilerlemesini takip edin ve performans metriklerini görselleştirin.
- İş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.
- Kodu Olmayan Dağıtım: Eğitilmiş modelleri doğrudan çeşitli hedeflere dağıtın.
Pratik bir inceleme için şu blog yazımıza göz atın: Ultralytics HUB ile Özel Modellerinizi Nasıl Eğitirsiniz?.
Etiketlenmiş verilerimi YOLOv5 formatına nasıl dönüştürebilirim?
İster manuel olarak etiketleyin, ister otomatik araçlar kullanın (Bölüm 1.2'de belirtilenler gibi), nihai etiketler YOLOv5 tarafından gerekli olan belirli YOLO formatında olmalıdır:
- Bir tane oluşturun
.txt
her görüntü için dosya. Dosya adı, görüntü dosya adıyla eşleşmelidir (örneğin,image1.jpg
şuna karşılık gelirimage1.txt
). Bu dosyaları birlabels/
dizininizle paralel dizinimages/
dizin (örneğin,../datasets/mydataset/labels/train/
). - İçindeki her satır
.txt
dosyası bir nesne açıklamasını temsil eder ve şu formatı izler:class_index center_x center_y width height
. - Koordinatlar (
center_x
,center_y
,width
,height
) olmalıdır normalize edilmiş (0.0 ile 1.0 arasında değerler) görüntünün boyutlarına göre. - Sınıf indeksleri şunlardır: sıfır tabanlı (ilk sınıf
0
, ikincisi1
, vb.).
Birçok manuel açıklama aracı, doğrudan YOLO formatına dışa aktarma sunar. Otomatik modeller kullanılıyorsa, çıktılarını (örneğin, sınırlayıcı kutu koordinatları, segmentasyon maskeleri) bu belirli normalleştirilmiş metin biçimine dönüştürmek için komut dosyalarına veya süreçlere ihtiyacınız olacaktır. Son veri kümesi yapınızın kılavuzda sağlanan örneğe uygun olduğundan emin olun. Daha fazla ayrıntı için Veri Toplama ve Açıklama Kılavuzumuza bakın.
YOLOv5'i ticari uygulamalarda kullanmak için lisanslama seçenekleri nelerdir?
Ultralytics, farklı ihtiyaçlara göre uyarlanmış esnek lisanslama sağlar:
- AGPL-3.0 Lisansı: Bu açık kaynak lisansı, akademik araştırma, kişisel projeler ve açık kaynak uyumluluğunun kabul edilebilir olduğu durumlar için uygundur. Değişikliklerin ve türetilmiş çalışmaların da AGPL-3.0 altında açık kaynaklı olmasını zorunlu kılar. AGPL-3.0 Lisans ayrıntılarını inceleyin.
- Kurumsal Lisans: YOLOv5'i tescilli ürünlere veya hizmetlere entegre eden işletmeler için tasarlanmış ticari bir lisans. Bu lisans, AGPL-3.0'ın açık kaynak yükümlülüklerini kaldırarak kapalı kaynak dağıtımına olanak tanır. Daha fazla ayrıntı için Lisanslama sayfamızı ziyaret edin veya bir Kurumsal Lisans talep edin.
Projenizin gereksinimleri ve dağıtım modeliyle en iyi eşleşen lisansı seçin.