Özel Verileri Eğitin
📚 Bu kılavuzda kendi özel veri setinizi nasıl eğiteceğiniz açıklanmaktadır YOLOv5 🚀.
Başlamadan Önce
Repoyu klonlayın ve requirements.txt dosyasını bir Python>=3.8.0 ortamı dahil olmak üzere PyTorch>=1.8. Modeller ve veri setleri en son YOLOv5 sürümünden otomatik olarak indirilir.
git clone https://github.com/ultralytics/yolov5 # clone
cd yolov5
pip install -r requirements.txt # install
Özel Veriler Üzerinde Eğitim
Nesnelerinizi tespit etmek için özel bir model oluşturmak; görüntülerin toplanması ve düzenlenmesi, ilgilenilen nesnelerin etiketlenmesi, bir modelin eğitilmesi, tahminler yapmak için bu modelin vahşi doğaya yerleştirilmesi ve ardından tekrarlamak ve iyileştirmek için uç durum örneklerini toplamak üzere bu yerleştirilmiş modelin kullanılması gibi yinelemeli bir süreçtir.
Lisanslama
Ultralytics iki lisanslama seçeneği sunar:
- AGPL-3.0 Lisansı, öğrenciler ve meraklılar için ideal olan OSI onaylı bir açık kaynak lisansıdır.
- Yapay zeka modellerimizi ürün ve hizmetlerine dahil etmek isteyen işletmeler için Kurumsal Lisans.
Daha fazla ayrıntı için bkz. Ultralytics Lisanslama.
YOLOv5 modeller, bu verilerdeki nesnelerin sınıflarını öğrenmek için etiketlenmiş veriler üzerinde eğitilmelidir. Eğitime başlamadan önce veri kümenizi oluşturmak için iki seçenek vardır:
Seçenek 1: Bir Roboflow Veri Seti
1.1 Görüntüleri Toplayın
Modeliniz örnek alarak öğrenecektir. Doğada göreceklerine benzer görüntüler üzerinde eğitim almak son derece önemlidir. İdeal olarak, projenizi nihai olarak dağıtacağınız için aynı yapılandırmadan (kamera, açı, aydınlatma vb.) çok çeşitli görüntüler toplayacaksınız.
Bu mümkün değilse, ilk modelinizi eğitmek için herkese açık bir veri kümesinden başlayabilir ve ardından veri kümenizi ve modelinizi yinelemeli olarak geliştirmek için çıkarım sırasında doğal ortamdan görüntüler örnekleyebilirsiniz.
1.2 Etiket Oluşturma
Görüntüleri topladıktan sonra, modelinizin öğrenebileceği bir temel gerçek oluşturmak için ilgili nesnelere açıklama eklemeniz gerekecektir.
Roboflow Annotate, görüntülerinizi ekibinizle birlikte yönetmek, etiketlemek ve YOLOv5'un açıklama formatında dışa aktarmak için basit bir web tabanlı araçtır.
1.3 Veri Setini Şunlar İçin Hazırlayın YOLOv5
Görüntülerinizi Roboflow ile etiketleseniz de etiketlemeseniz de, veri kümenizi YOLO biçimine dönüştürmek, bir YOLOv5 YAML yapılandırma dosyası oluşturmak ve eğitim komut dosyanıza aktarmak üzere barındırmak için kullanabilirsiniz.
Ücretsiz bir Roboflow hesabı oluşturun ve veri kümenizi bir Public
çalışma alanını açın, açıklamasız görüntüleri etiketleyin, ardından veri kümenizin bir sürümünü YOLOv5 Pytorch
format.
Not: YOLOv5 eğitim sırasında çevrimiçi artırma yapar, bu nedenle YOLOv5 ile eğitim için Roboflow 'de herhangi bir artırma adımı uygulamanızı önermiyoruz. Ancak aşağıdaki ön işleme adımlarını uygulamanızı öneririz:
- Otomatik Yönlendirme - EXIF yönlendirmesini resimlerinizden çıkarmak için.
- Yeniden Boyutlandır (Uzat) - modelinizin kare giriş boyutuna (640x640 YOLOv5 varsayılanıdır).
Bir sürüm oluşturmak size veri setinizin anlık görüntüsünü verecektir, böylece daha sonra daha fazla görüntü ekleseniz veya yapılandırmasını değiştirseniz bile her zaman geri dönebilir ve gelecekteki model eğitim çalışmalarınızı bununla karşılaştırabilirsiniz.
İhracat YOLOv5 Pytorch
biçiminde kopyalayın, ardından veri kümenizi indirmek için parçacığı eğitim komut dosyanıza veya not defterinize kopyalayın.
Seçenek 2: Manuel Veri Kümesi Oluşturma
2.1 Oluşturma dataset.yaml
COCO128 'deki ilk 128 görüntüden oluşan örnek bir küçük öğretici veri kümesidir. COCO train2017. Bu aynı 128 görüntü, eğitim hattımızın aşırı uyum sağlayabildiğini doğrulamak için hem eğitim hem de doğrulama için kullanılmıştır. data/coco128.yamlaşağıda gösterilen, 1) veri kümesi kök dizinini tanımlayan veri kümesi yapılandırma dosyasıdır path
ve göreli yolları train
/ val
/ test
görüntü dizinleri (veya *.txt
görüntü yollarını içeren dosyalar) ve 2) bir sınıf names
Sözlük:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
2.2 Etiket Oluşturma
Resimlerinizi etiketlemek için bir açıklama aracı kullandıktan sonra etiketlerinizi YOLO Biçimbir tane ile *.txt
görüntü başına dosya (görüntüde nesne yoksa *.txt
dosyası gereklidir). Bu dosya *.txt
dosya özellikleri şunlardır:
- Nesne başına bir satır
- Her satır
class x_center y_center width height
format. - Kutu koordinatları normalleştirilmiş xywh biçiminde (0'dan 1'e kadar). Kutularınız piksel cinsinden ise
x_center
vewidth
görüntü genişliğine göre vey_center
veheight
görüntü yüksekliğine göre. - Sınıf numaraları sıfır endekslidir (0'dan başlar).
Yukarıdaki resme karşılık gelen etiket dosyası 2 kişi içerir (sınıf 0
) ve bir beraberlik (sınıf 27
):
2.3 Dizinleri Düzenleme
Tren ve val resimlerinizi ve etiketlerinizi aşağıdaki örneğe göre düzenleyin. YOLOv5 varsayar /coco128
içinde bir /datasets
dizin yanında ve /yolov5
dizin. YOLOv5 her görüntü için etiketleri otomatik olarak bulur 'nin son örneğini değiştirerek /images/
ile her görüntü yolunda /labels/
. Örneğin:
3. Bir Model Seçin
Eğitime başlamak için önceden eğitilmiş bir model seçin. Burada, mevcut ikinci en küçük ve en hızlı model olan YOLOv5s'i seçiyoruz. Tüm modellerin tam bir karşılaştırması için README tablomuza bakın.
4. Tren
Veri kümesi, yığın boyutu, görüntü boyutu ve ön eğitimli modellerden birini belirterek COCO128 üzerinde bir YOLOv5s modeli eğitin --weights yolov5s.pt
(önerilir) veya rastgele başlatılmış --weights '' --cfg yolov5s.yaml
(önerilmez). Önceden eğitilmiş ağırlıklar otomatik olarak en son YOLOv5 sürümü.
İpucu
💡 Ekle --cache ram
veya --cache disk
eğitimi hızlandırmak için (önemli RAM/disk kaynakları gerektirir).
İpucu
💡 Her zaman yerel bir veri kümesinden eğitin. Google Drive gibi bağlanmış veya ağ sürücüleri çok yavaş olacaktır.
Tüm eğitim sonuçları şu adrese kaydedilir runs/train/
artan çalışma dizinleri ile, yani runs/train/exp2
, runs/train/exp3
vb. Daha fazla ayrıntı için eğitim not defterimizin Eğitim bölümüne bakın.
5. Görselleştirin
Comet Günlüğe Kaydetme ve Görselleştirme 🌟 YENİ
Comet artık YOLOv5 ile tamamen entegre. Model ölçümlerini gerçek zamanlı olarak takip edin ve görselleştirin, hiperparametrelerinizi, veri kümelerinizi ve model kontrol noktalarınızı kaydedin ve Comet Özel Paneller ile model tahminlerinizi görselleştirin! Comet çalışmanızın izini asla kaybetmemenizi sağlar ve sonuçları paylaşmayı ve her büyüklükteki ekipler arasında işbirliği yapmayı kolaylaştırır!
Başlamak çok kolay:
pip install comet_ml # 1. install
export COMET_API_KEY=<Your API Key> # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train
Bu entegrasyon için desteklenen tüm Comet özellikleri hakkında daha fazla bilgi edinmek için Comet Öğretici. Comet hakkında daha fazla bilgi edinmek isterseniz dokümantasyon. Comet Colab Notebook'u deneyerek başlayın:
ClearML Loglama ve Otomasyon 🌟 YENİ
ClearML deneylerinizi takip etmek, veri seti sürümlerini yönetmek ve hatta eğitim çalışmalarını uzaktan yürütmek için YOLOv5 adresine tamamen entegre edilmiştir. Etkinleştirmek için ClearML:
pip install clearml
- koşmak
clearml-init
ClearML sunucusuna bağlanmak için
Bir deney yöneticisinden beklenen tüm harika özellikleri elde edersiniz: canlı güncellemeler, model yükleme, deney karşılaştırma vb. ancak ClearML ayrıca taahhüt edilmemiş değişiklikleri ve örneğin yüklü paketleri de izler. Bu sayede ClearML Görevleri (deney dediğimiz şey) farklı makinelerde de tekrarlanabilir! Sadece 1 ekstra satırla, herhangi bir sayıda ClearML Aracı (işçi) tarafından yürütülecek bir kuyrukta bir YOLOv5 eğitim görevi planlayabiliriz.
Veri setinizi sürümlendirmek için ClearML Data'yı kullanabilir ve daha sonra sadece benzersiz kimliğini kullanarak YOLOv5 adresine aktarabilirsiniz. Bu, ekstra güçlük çıkarmadan verilerinizi takip etmenize yardımcı olacaktır. Ayrıntılar için ClearML Öğreticisini keşfedin!
Yerel Günlük Kaydı
Eğitim sonuçları otomatik olarak Tensorboard ve CSV kaydediciler runs/train
olarak her yeni eğitim için oluşturulan yeni bir deney dizini ile runs/train/exp2
, runs/train/exp3
vb.
Bu dizinde train ve val istatistikleri, mozaikler, etiketler, tahminler ve artırılmış mozaiklerin yanı sıra hassasiyet-geri çağırma (PR) eğrileri ve karışıklık matrisleri gibi metrikler ve grafikler yer almaktadır.
Sonuçlar dosyası results.csv
her dönemden sonra güncellenir ve ardından şu şekilde çizilir results.png
(aşağıda) eğitim tamamlandıktan sonra. Ayrıca herhangi bir results.csv
dosyasına manuel olarak erişebilirsiniz:
from utils.plots import plot_results
plot_results('path/to/results.csv') # plot 'results.csv' as 'results.png'
Sonraki Adımlar
Modeliniz eğitildikten sonra en iyi kontrol noktanızı kullanabilirsiniz best.pt
için:
- Koşmak CLI veya Python yeni görüntüler ve videolar üzerinde çıkarım
- Eğitim, val ve test bölünmelerinde doğruluğu doğrulayın
- TensorFlow, Keras, ONNX, TFlite, TF.js, CoreML ve TensorRT formatlarına aktarın
- Performansı artırmak için hiperparametreleri geliştirin
- Gerçek dünya görüntülerini örnekleyerek ve veri setinize ekleyerek modelinizi geliştirin
Desteklenen Ortamlar
Ultralytics her biri CUDA, CUDNN gibi temel bağımlılıklarla önceden yüklenmiş bir dizi kullanıma hazır ortam sağlar, Pythonve PyTorchProjelerinizi başlatmak için.
- Ücretsiz GPU Notebookları:
- Google Cloud: GCP Hızlı Başlangıç Kılavuzu
- Amazon: AWS Hızlı Başlangıç Kılavuzu
- Azure: AzureML 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 CI testleri, YOLOv5 'un işlevselliğini ve performansını çeşitli temel yönlerden titizlikle kontrol eder: eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslamalar. Her 24 saatte bir ve her yeni işlemde yapılan testlerle macOS, Windows ve Ubuntu üzerinde tutarlı ve güvenilir çalışma sağlarlar.