YOLOv5 ' YOLOv5 Özel Veriler Üzerinde Eğitin
📚 Bu kılavuz, kendi özel veri kümenizi kullanarak nasıl eğiteceğinizi açıklamaktadır. YOLOv5 model 🚀. Özel modellerin eğitilmesi, bilgisayarla görme çözümlerinin genel nesne algılamanın ötesinde belirli gerçek dünya uygulamalarına uyarlanmasında temel bir adımdır.
Başlamadan Önce
İlk olarak, gerekli ortamı kurduğunuzdan emin olun. YOLOv5 deposunu klonlayın ve gerekli bağımlılıkları şuradan yükleyin requirements.txt
. A Python.8.0 ile çevre PyTorch.8 çok önemlidir. Modeller ve veri setleri en son YOLOv5'ten otomatik olarak indirilir serbest bırakma yerel olarak bulunamazlarsa.
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependencies
Özel Veriler Ü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: Özel görevinizle ilgili görselleri toplayın. Yüksek kaliteli, çeşitli veriler çok önemlidir. Veri Toplama ve Ek Açıklama kılavuzumuza bakın.
- Nesneleri Etiketleyin: Görüntülerinizdeki ilgi çekici nesnelere doğru bir şekilde açıklama ekleyin.
- Bir Model Eğitin: YOLOv5 modelinizi eğitmek için etiketli verileri kullanın. Önceden eğitilmiş ağırlıklarla başlayarak transfer öğrenmeden yararlanın.
- Dağıtın ve Tahmin Edin: Yeni, görülmemiş veriler üzerinde çıkarım yapmak için eğitilmiş modeli 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 setinize 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 tüm bu makine öğrenimi operasyonları (MLOps) döngüsü 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ı: OSI onaylı bu açık kaynak lisansı, açık işbirliği ve bilgi paylaşımı konusunda tutkulu öğ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 LICENSE 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ı olmadan ticari ürün ve hizmetlere sorunsuz entegrasyonuna izin verir. Projeniz ticari dağıtım gerektiriyorsa, bir Kurumsal Lisans talep edin.
Ultralytics Lisanslama sayfasında lisanslama seçeneklerimizi daha fazla keşfedin.
Eğitime başlamadan önce veri kümesinin hazırlanması çok önemlidir.
1. Bir Veri Kümesi Oluşturun
YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketli verilere ihtiyaç duyar. Veri setinizi doğru şekilde düzenlemek çok önemlidir.
1.1 Oluşturma 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ı ana hatlarıyla belirtir. COCO128 kapsamlı veri setinden ilk 128 görüntüyü içeren küçük bir örnek veri seti olarak hizmet vermektedir. COCO veri kümesi. Eğitim hattını hızlı bir şekilde test etmek ve aşağıdaki gibi olası sorunları teşhis etmek için kullanışlıdır aşırı uyum.
Bu dataset.yaml
dosya yapısı şunları içerir:
path
: Veri kümesini içeren kök dizin.train
,val
,test
: Göreceli yollarpath
Eğitim, doğrulama ve test setleri 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ıyla eşleyen bir sözlük.
Aşağıdakiler için yapı coco128.yaml
(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: toothbrush
1.2 Otomatik Etiketleme için Modellerden Yararlanma
Araçları kullanarak manuel etiketleme yaygın bir yaklaşım olsa da, süreç zaman alıcı olabilir. Temel modellerdeki son gelişmeler, ek açıklama sürecini otomatikleştirmek veya yarı otomatikleştirmek için olanaklar sunmakta ve potansiyel olarak veri kümesi oluşturmayı önemli ölçüde hızlandırmaktadır. Etiket oluşturmaya yardımcı olabilecek birkaç model örneğini aşağıda bulabilirsiniz:
- Google Gemini: Gemini gibi büyük multimodal modeller güçlü görüntü anlama yeteneklerine sahiptir. YOLO formatındaki etiketlere dönüştürülebilen sınırlayıcı kutular veya açıklamalar oluşturarak görüntülerdeki nesneleri tanımlamaları ve bulmaları istenebilir. 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 tasvir edebilir. Öncelikle segmentasyon için olsa da, ortaya çıkan maskeler genellikle nesne algılama görevleri için uygun sınırlayıcı kutu ek 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 almadan bunları görüntülerde bulabilir. Bu, ilk etiketleri oluşturmak için bir başlangıç noktası olarak kullanılabilir ve daha sonra rafine edilebilir.
Bu modellerin kullanılması bir "ön etiketleme" adımı sağlayarak gereken manuel çabayı azaltabilir. Ancak, kalite eğitimli YOLOv5 modelinizin performansını doğrudan 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. Etiketlerinizi oluşturduktan (ve potansiyel olarak düzelttikten) sonra YOLO Biçim: bir *.txt
olarak bir nesneyi temsil eden her bir satır ile görüntü başına dosya class_index x_center y_center width height
(normalleştirilmiş koordinatlar, sıfır endeksli sınıf). Bir görüntüde ilgilenilen nesne yoksa, buna karşılık gelen *.txt
dosyasına ihtiyaç vardır.
YOLO formatı *.txt
dosya ö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 şu şekilde olmalıdır normalleştirilmiş piksel değerlerini 0 ile 1 arasında bir aralığa bölün.
x_center
vewidth
görüntünün toplam genişliğine bölün vey_center
veheight
görüntünün toplam yüksekliği ile çarpılır. - Sınıf indeksleri sıfır indekslidir (yani, ilk sınıf şu şekilde temsil edilir
0
ikincisi ise1
ve benzeri).
Yukarıdaki resme karşılık gelen ve iki 'kişi' nesnesi içeren etiket dosyası (sınıf indeksi 0
) ve bir 'bağ' nesnesi (sınıf indeksi 27
), şu şekilde görünecektir:
1.3 Dizinleri Düzenleme
Kendinizi yapılandırın veri kümeleri dizinini aşağıda gösterildiği gibi ayarlar. Varsayılan olarak, YOLOv5 veri kümesi dizinini öngörür (örn, /coco128
) içinde bulunması için /datasets
bulunan klasör bitişiğinde ve /yolov5
depo dizini.
YOLOv5 , her bir görüntü için etiketleri otomatik olarak bulur. /images/
ile görüntü 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, sıfırdan eğitime kıyasla öğrenmeyi önemli ö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 ikinci en küçük ve en hızlı modeldir ve kaynakların kısıtlı olduğu ortamlar için uygundur. Mevcut tüm modellerin ayrıntılı bir karşılaştırması için README tablosuna bakın.
3. Tren
Başlayın model eği̇ti̇mi̇ kullanarak train.py
senaryo. Temel argümanlar şunları içerir:
--img
: Girişi tanımlar görüntü boyutu (örn,--img 640
). Daha büyük boyutlar genellikle daha iyi doğruluk sağlar ancak daha fazla GPU belleği gerektirir.--batch
: Şunları belirler parti büyüklüğü (örn,--batch 16
). GPU 'nuzun kaldırabileceği en büyük boyutu seçin.--epochs
: Toplam eğitim sayısını belirtir çağlar (örn,--epochs 100
). Bir epok, tüm eğitim veri kümesi üzerinden tam bir geçişi temsil eder.--data
: Size giden yoldataset.yaml
dosyası (örn,--data coco128.yaml
).--weights
: Başlangıç ağırlıkları dosyasının yolu. Önceden eğitilmiş ağırlıkları kullanarak (örn,--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 tavsiye edilmez)--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
Antrenman Hızını Optimize Edin
💡 Çalışan --cache ram
veya --cache disk
veri kümesi görüntülerini önbelleğe almak için RAM veya yerel diske aktarır. Bu, özellikle veri kümesi I/O (Giriş/Çıkış) işlemleri darboğaz oluşturduğ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ı engelleyebilir. Veri setinizi yerel bir SSD'ye kopyalamak genellikle en iyi uygulamadır.
Ağırlıklar ve günlükler de dahil olmak üzere tüm eğitim çıktıları runs/train/
dizinini oluşturur. Her eğitim oturumu yeni bir alt dizin oluşturur (örn, 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ştirin
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üğe Kaydetme 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 Panellerini 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!
Desteklenen özellikleri daha derinlemesine incelemek için Comet Entegrasyon Kılavuzu. Comet'in yetenekleri hakkında daha fazla bilgiyi resmi dokümantasyon. Canlı bir demo için Comet Colab Notebook'u deneyin:
ClearML Loglama ve Otomasyon 🌟 YENİ
ClearML entegrasyonu, ayrıntılı deney takibi, veri seti sürüm yönetimi ve hatta eğitim çalışmalarının uzaktan yürütülmesini sağlar. ClearML 'yi bu basit adımlarla etkinleştirin:
- Paketi yükleyin:
pip install clearml
- ClearML'yi başlatın: Çalıştır
clearml-init
ClearML sunucunuza bağlanmak için bir kez (kendi barındırdığınız veya ücretsiz katman).
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. ClearML Data'yı kullanarak uzak aracılarda eğitim görevlerini kolayca planlayabilir ve veri kümesi sürümlerini yönetebilirsiniz. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzu 'nu inceleyin.
Yerel Günlük Kaydı
Eğitim sonuçları otomatik olarak TensorBoard ve şu şekilde kaydedilir CSV belirli bir deney dizini içindeki dosyalar (örn, runs/train/exp
). Kaydedilen veriler şunları içerir:
- Eğitim ve doğrulama kaybı ve performans ölçümleri.
- Uygulanmış büyütmeleri gösteren örnek görüntüler (mozaikler gibi).
- Görsel inceleme için model tahminlerinin yanı sıra temel gerçek etiketleri.
- Hassasiyet-Tekrar Arama(PR) eğrileri gibi temel değerlendirme metrikleri.
- Ayrıntılı sınıf bazlı performans analizi için karışıklık matrisleri.
Bu results.csv
dosyası her dönemden sonra güncellenir ve şu şekilde çizilir results.png
eğitim sona erdiğinde. Ayrıca herhangi bir results.csv
dosyasını sağlanan yardımcı program işlevini kullanarak manuel olarak açın:
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ğitimin başarıyla tamamlanmasının ardından, en iyi performans gösteren model kontrol noktası (best.pt
) kaydedilir ve dağıtım veya daha fazla iyileştirme için hazırdır. Potansiyel sonraki adımlar şunları içerir:
- aracılığıyla eğitilmiş modeli kullanarak yeni görüntüler veya videolar üzerinde çıkarım çalıştırın. CLI veya Python.
- Modelin doğruluğunu ve genelleme yeteneklerini farklı veri bölümleri üzerinde değerlendirmek için doğrulama gerçekleştirin (örn. bir test seti).
- Modeli aşağıdaki gibi çeşitli dağıtım formatlarına aktarın ONNX, TensorFlow SavedModelveya TensorRT farklı platformlarda optimize edilmiş çıkarım için.
- Potansiyel olarak ek performans kazanımları elde etmek için hiperparametre ayarlama tekniklerini kullanın.
- En İyi Eğitim Sonuçları için İpuçlarımızı takip ederek ve performans analizine dayalı olarak yinelemeli bir şekilde daha çeşitli ve zorlu veriler ekleyerek modelinizi geliştirmeye devam edin.
Desteklenen Ortamlar
Ultralytics , aşağıdaki gibi temel bağımlılıklarla donatılmış kullanıma hazır ortamlar sağlar CUDA, cuDNN, Pythonve PyTorchBu da sorunsuz bir başlangıcı kolaylaştırır.
- Ücretsiz GPU Not Defterleri:
- Bulut Platformları:
- Google Bulut: 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 işlendiğinde otomatik olarak yürütülür, böylece tutarlı kararlılık ve optimum performans sağlanır.
SSS
Sıkça Sorulan Sorular
YOLOv5 adresini özel veri kümem üzerinde nasıl eğitebilirim?
YOLOv5 'i özel bir veri kümesi üzerinde eğitmek birkaç önemli adım içerir:
- Veri Setinizi Hazırlayın: Görüntüleri toplayın ve bunlara açıklama ekleyin. Ek açıklamaların gereken şekilde olduğundan emin olun YOLO Biçim. Görüntüleri ve etiketleri şu şekilde düzenleyin
train/
veval/
(ve isteğe bağlı olaraktest/
) dizinleri. Aşağıdaki gibi modelleri kullanmayı düşünün Google Gemini, SAM2veya YOLOWorld etiketleme sürecine yardımcı olmak veya bu süreci otomatikleştirmek için (bkz. Bölüm 1.2). - Ortamınızı Kurun: YOLOv5 deposunu klonlayın ve aşağıdakileri 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şturma: Veri kümesi yollarını, sınıf sayısını ve sınıf adlarını bir
dataset.yaml
Dosya. - Eğitime Başlayın: Yürütmek
train.py
komut dosyasına yol sağlayarakdataset.yaml
, istenen önceden eğitilmiş ağırlıklar (örn,yolov5s.pt
), görüntü boyutu, yığın 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 modeli 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 yükleyin, sürüm kontrolü yapın ve verimli bir şekilde yönetin.
- Gerçek Zamanlı İzleme: Eğitim ilerlemesini takip edin ve aşağıdaki gibi entegre araçları kullanarak performans ölçümlerini görselleştirin Comet veya TensorBoard.
- İşbirliği Özellikleri: Paylaşılan kaynaklar, proje yönetim araçları ve kolay model paylaşımı sayesinde ekip çalışmasını kolaylaştırır.
- Kodsuz Dağıtım: Eğitimli modelleri doğrudan çeşitli hedeflere dağıtın.
Pratik bir adım için blog yazımıza göz atın: Ultralytics HUB ile Özel Modellerinizi Nasıl Eğitirsiniz?
Açıklamalı verilerimi YOLOv5 formatına nasıl dönüştürebilirim?
İster manuel olarak açıklama ekleyin ister otomatik araçlar kullanın (Bölüm 1.2'de bahsedilenler gibi), nihai etiketler YOLOv5'in gerektirdiği özel YOLOv5 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 (örn,image1.jpg
karşılık gelirimage1.txt
). Bu dosyaları birlabels/
dizinine paralel olarakimages/
dizini (örn,../datasets/mydataset/labels/train/
). - İçindeki her satır
.txt
dosyası bir nesne ek açıklamasını temsil eder ve formatı izler:class_index center_x center_y width height
. - Koordinatlar (
center_x
,center_y
,width
,height
) olmalıdır normalleştirilmiş (0,0 ile 1,0 arasındaki değerler) görüntünün boyutlarına göre. - Sınıf endeksleri şunlardır sıfır tabanlı (birinci sınıf
0
ikincisi ise1
vb.).
Birçok manuel açıklama aracı YOLO formatına doğrudan dışa aktarma imkanı sunar. Otomatik modeller kullanıyorsanız, çıktılarını (örneğin, sınırlayıcı kutu koordinatları, segmentasyon maskeleri) bu özel normalleştirilmiş metin formatına dönüştürmek için komut dosyalarına veya işlemlere ihtiyacınız olacaktır. Nihai veri kümesi yapınızın kılavuzda verilen örneğe uygun olduğundan emin olun. Daha fazla ayrıntı için Veri Toplama ve Açıklama Kılavuzumuza bakın.
Ticari uygulamalarda YOLOv5 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ı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 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 ortadan kaldırarak kapalı kaynak dağıtımına izin verir. Daha fazla bilgi almak veya Kurumsal Lisans talep etmek için Lisanslama sayfamızı ziyaret edin.
Projenizin gereksinimlerine ve dağıtım modeline en uygun lisansı seçin.