Meet YOLO26: next-gen vision AI.

Link to this sectionYOLOv5'i Özel Veriler Üzerinde Eğit#

📚 Bu kılavuz, YOLOv5 modelini kullanarak kendi özel veri setini nasıl eğiteceğini açıklar 🚀. Özel modeller eğitmek, bilgisayarlı görü çözümlerini genel nesne tespiti uygulamalarının ötesinde, belirli gerçek dünya uygulamalarına uyarlamak için temel bir adımdır.

Link to this sectionBaşlamadan Önce#

Öncelikle gerekli ortamı kurduğundan emin ol. YOLOv5 deposunu klonla ve requirements.txt dosyasından gerekli bağımlılıkları yükle. Python>=3.8.0 ve PyTorch>=1.8 kurulu bir ortam şarttır. Modeller ve veri setleri yerel olarak bulunamazsa 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

Link to this sectionÖzel Veriler Üzerinde Eğit#

Ultralytics aktif öğrenme döngüsü şeması

Özel bir nesne tespiti modeli geliştirmek yinelemeli bir süreçtir:

  1. 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 hakkındaki kılavuzumuza göz at.
  2. Nesneleri Etiketle: Görüntülerindeki ilgilendiğin nesneleri doğru bir şekilde işaretle.
  3. Model Eğit: Etiketlenmiş verileri kullanarak YOLOv5 modelini eğit. Önceden eğitilmiş ağırlıklarla başlayarak transfer öğreniminden yararlan.
  4. Dağıt ve Tahmin Et: Eğitilmiş modeli yeni, görülmemiş veriler üzerinde çıkarım yapmak için kullan.
  5. Uç Durumları Topla: Modelin zayıf performans gösterdiği senaryoları (uç durumlar) belirle ve sağlamlığını artırmak için veri setine benzer veriler ekle. Döngüyü tekrarla.

Ultralytics Platform, veri seti 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 kodsuz, akıcı bir çözüm sunar.

Lisanslama

Ultralytics, çeşitli kullanım senaryolarına uyum sağlamak için iki lisans seçeneği sunar:

  • AGPL-3.0 Lisansı: Bu OSI onaylı açık kaynak lisansı; öğrenciler, araştırmacılar ve açık iş birliği ile bilgi paylaşımına tutku duyan meraklılar için idealdir. Türetilmiş çalışmaların aynı lisans altında paylaşılmasını gerektirir. Tam ayrıntılar için LICENSE dosyasına bak.
  • Kurumsal Lisans: Geliştirme ve üretim kullanımı için bu lisans, Ultralytics yazılımının ve yapay zeka modellerinin; dahili araçlar, otomatik iş akışları ve üretim dağıtımları dahil olmak üzere ticari ürün ve hizmetlere sorunsuz entegrasyonunu sağlar ve AGPL-3.0'ın açık kaynak gereksinimlerini atlar. Başlamak için lütfen Ultralytics Licensing aracılığıyla bizimle iletişime geç.

Lisanslama seçeneklerimizi Ultralytics Licensing sayfasında daha ayrıntılı keşfet.

Eğitimi başlatmadan önce veri seti hazırlığı esastır.

Link to this sectionBir Veri Seti Oluştur#

YOLOv5 modelleri, nesne sınıflarının görsel özelliklerini öğrenmek için etiketli veriye ihtiyaç duyar. Veri setini doğru bir şekilde düzenlemek anahtardır.

Link to this section1.1 dataset.yaml Oluştur#

Veri seti yapılandırma dosyası (örneğin, coco128.yaml), veri setinin yapısını, sınıf isimlerini ve görüntü dizinlerine giden yolları ana hatlarıyla belirtir. COCO128, geniş kapsamlı COCO veri setinden alınan ilk 128 görüntüden oluşan küçük bir örnek veri seti işlevi görür. Eğitim hattını hızla test etmek ve aşırı öğrenme gibi olası sorunları teşhis etmek için kullanışlıdır.

dataset.yaml dosya yapısı şunları içerir:

  • path: Veri setini içeren kök dizin.
  • train, val, test: path dizininden; 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 göreceli yollar.
  • names: Sınıf indekslerini (0'dan başlayarak) karşılık gelen sınıf isimleriyle eşleştiren bir sözlük.

path değerini, YOLOv5 deposunun kök dizininden eğitim başlatırken mutlak bir dizin (örneğin, /home/user/datasets/coco128) veya ../datasets/coco128 gibi göreceli bir yol olarak ayarlayabilirsin.

Aşağıda coco128.yaml için yapı bulunmaktadır (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

Link to this section1.2 Otomatik Etiketleme için Modellerden Yararlan#

Manuel etiketleme yaygın bir yaklaşımdır ancak zaman alıcıdır. Temel modeller, etiketlemeyi otomatikleştirebilir veya yarı otomatikleştirebilir ve veri seti oluşturma sürecini 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ımlamak ve konumlandırmak için yönlendirilebilirler; bu da YOLO formatındaki etiketlere dönüştürülebilen sınırlayıcı kutular veya açıklamalar oluşturmalarını sağlar. Sağlanan eğitim not defterinde potansiyelini keşfet.
  • SAM2 (Segment Anything Model 2): SAM2 gibi segmentasyona odaklanan temel modeller, nesneleri yüksek hassasiyetle tanımlayabilir ve çizebilir. Öncelikle segmentasyon için olsa da, ortaya çıkan maskeler genellikle nesne tespiti görevleri için uygun olan sınırlayıcı kutu açıklamalarına dönüştürülebilir.
  • YOLOWorld: Bu model, açık kelime dağarcığıyla tespit yetenekleri sunar. İlgilendiğin nesnelerin metin açıklamalarını sağlayabilirsin; YOLOWorld, bu sınıflar üzerinde önceden eğitim almadan görüntülerin içinde onları bulabilir. Bu, daha sonra iyileştirilebilecek başlangıç etiketlerini oluşturmak için bir çıkış noktası olarak kullanılabilir.

Bu modelleri kullanmak, manuel çabayı azaltan bir "ön etiketleme" adımı sağlayabilir. Ancak, doğruluğu ve tutarlılığı sağlamak için otomatik 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 indeksi) olarak temsil eder. Bir görüntüde ilgilenilen nesne yoksa, karşılık gelen bir *.txt dosyasına gerek yoktur.

YOLO formatındaki *.txt dosyası özellikleri kesindir:

  • Her 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 arasındaki bir aralığa normalize edilmelidir. Bunu başarmak için x_center ve width değerlerini görüntünün toplam genişliğine, y_center ve height değ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 ile, ikincisi 1 ile temsil edilir ve bu şekilde devam eder).

Example image with two persons and a tie annotated

İki 'person' nesnesi (sınıf indeksi 0) ve bir 'tie' nesnesi (sınıf indeksi 27) içeren yukarıdaki görüntüye karşılık gelen etiket dosyası şu şekilde görünecektir:

YOLO format label file content example

Link to this section1.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)
            └── ...

YOLOv5 recommended dataset directory structure

Link to this sectionBir 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.

Comparison chart of YOLOv5 models showing size, speed, and accuracy

Link to this sectionEğ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: Yığın boyutunu belirler (örneğin, --batch 16). GPU'nun işleyebileceği en büyük boyutu seç.
  • --epochs: Toplam eğitim dönem (epoch) sayısını belirtir (örneğin, --epochs 100). Bir dönem, tüm eğitim veri seti üzerinde tam bir geçişi temsil eder.
  • --data: dataset.yaml dosyanın yolu (örneğin, --data coco128.yaml).
  • --weights: Başlangıç ağırlıkları dosyasının yolu. Daha hızlı yakınsama ve üstün sonuçlar için önceden eğitilmiş ağırlıkları (örneğin, --weights yolov5s.pt) kullanman şiddetle önerilir. Sıfırdan eğitmek için (çok büyük bir veri setin ve özel ihtiyaçların yoksa önerilmez), --weights '' --cfg yolov5s.yaml kullan.

Ö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
Eğitim Hızını Optimize Et

💡 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.

Yerel Veri Depolama

💡 Her zaman yerel olarak depolanan veri setlerini kullanarak eğit. 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 setini 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/exp2, vb.). Etkileşimli, uygulamalı bir deneyim için resmi eğitim not defterlerimizdeki eğitim bölümünü keşfet: Open In Colab Open In Kaggle

Link to this sectionGö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.

Link to this sectionComet Günlüğü ve Görselleştirme#

Comet, kapsamlı deney takibi için tamamen entegre edilmiştir. Metrikleri canlı olarak görselleştir, hiperparametreleri kaydet, veri setlerini ve model kontrol noktalarını yönet ve etkileşimli Comet Özel Panellerini kullanarak model tahminlerini analiz et.

Başlamak oldukça kolaydır:

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 özelliklerin derinliklerine Comet Entegrasyon Kılavuzumuzda in. Comet'in yetenekleri hakkında daha fazla bilgiyi resmi dokümantasyonlarından öğren. Canlı bir demo için Comet Colab Not Defterini dene: Open In Colab

Comet UI showing YOLOv5 training metrics and visualizations

Link to this sectionClearML Günlüğü ve Otomasyonu#

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'i şu basit adımlarla etkinleştir:

  • Paketi yükle: pip install clearml
  • Initialize ClearML: Run clearml-init once 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ı, işlenmemiş kod değişikliklerini ve yüklü paketleri otomatik olarak yakalar, böylece tam tekrarlanabilirlik sağlar. Eğitim görevlerini uzak aracı bilgisayarlarda kolayca zamanlayabilir ve ClearML Data kullanarak veri seti sürümlerini yönetebilirsin. Kapsamlı ayrıntılar için ClearML Entegrasyon Kılavuzunu keşfet.

ClearML experiment management UI for YOLOv5

Link to this sectionYerel Günlük Tutma#

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 metrikleri.
  • Uygulanan artırmaları (mozaikler gibi) gösteren örnek görüntüler.
  • Görsel inceleme için model tahminlerinin yanındaki temel doğruluk etiketleri.
  • Kesinlik-Duyarlılık (PR) eğrileri gibi ana değerlendirme metrikleri.
  • Ayrıntılı sınıf bazlı performans analizi için karmaşıklık matrisleri.
YOLOv5 local logging results with charts and mosaics

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

YOLOv5 results.png training metrics plot

Link to this sectionSonraki Adımlar#

Eğitim başarıyla tamamlandığında, 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. Olası sonraki adımlar şunlardır:

Link to this sectionDesteklenen Ortamlar#

Ultralytics; CUDA, cuDNN, Python ve PyTorch gibi temel bağımlılıklarla donatılmış, kullanıma hazır ortamlar sağlayarak sorunsuz bir başlangıcı kolaylaştırır.

Link to this sectionProje Durumu#

YOLOv5 Sürekli Entegrasyon Durum Rozeti

Bu rozet, tüm YOLOv5 GitHub Actions Continuous Integration (CI) testlerinin başarıyla geçtiğini gösterir. Bu titiz CI testleri; macOS, Windows ve Ubuntu işletim sistemleri genelinde eğitim, doğrulama, çıkarım, dışa aktarma ve kıyaslama dahil olmak üzere temel işlevleri kapsar. Testler her 24 saatte bir ve her kod gönderiminde otomatik olarak yürütülerek tutarlı kararlılık ve optimum performans sağlanır.

Link to this sectionSSS#

Link to this sectionYOLOv5'i özel veri kümemde nasıl eğitebilirim?#

YOLOv5'i özel bir veri kümesinde eğitmek birkaç temel adımı içerir:

  1. Veri Kümeni Hazırla: Görselleri topla ve etiketle. Etiketlerin gerekli YOLO formatında olduğundan emin ol. Görselleri ve etiketleri train/ ve val/ (ve isteğe bağlı olarak test/) dizinlerine göre düzenle. Etiketleme sürecine yardımcı olmak veya otomatikleştirmek için Google Gemini, SAM2 veya YOLOWorld gibi modelleri kullanmayı düşün (Bölüm 1.2'ye bak).
  2. Ortamını Kur: YOLOv5 deposunu klonla ve pip install -r requirements.txt kullanarak bağımlılıkları yükle.
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
  3. Veri Kümesi Yapılandırmasını Oluştur: Bir dataset.yaml dosyasında veri kümesi yollarını, sınıf sayısını ve sınıf adlarını tanımla.
  4. Start Training: Execute the train.py script, providing paths to your dataset.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

Link to this sectionYOLO modellerimi eğitmek için neden Ultralytics Platform kullanmalıyım?#

Ultralytics Platform, genellikle 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ğ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: Comet veya TensorBoard gibi entegre araçları kullanarak eğitim ilerlemesini takip et ve performans metriklerini görselleştir.
  • İş 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.
  • Kodsuz Dağıtım: Eğitilmiş modelleri doğrudan çeşitli hedeflere dağıt.

Pratik bir adım adım kılavuz için blog yazımıza göz at: Ultralytics Platform ile Özel Modellerini Nasıl Eğitirsin.

Link to this sectionEtiketlenmiş verilerimi YOLOv5 formatına nasıl dönüştürürüm?#

İster manuel olarak etiketle ister otomatik araçlar (Bölüm 1.2'de bahsedilenler gibi) kullan, nihai etiketler YOLOv5'in gerektirdiği özel YOLO formatında olmalıdır:

  • Create one .txt file for each image. The filename should match the image filename (e.g., image1.jpg corresponds to image1.txt). Place these files in a labels/ directory parallel to your images/ directory (e.g., ../datasets/mydataset/labels/train/).
  • Bir .txt dosyası 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örselin 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, ikincisi 1 şeklindedir).

Birçok manuel etiketleme aracı, doğrudan YOLO formatında dışa aktarma seçeneği sunar. Otomatik modeller kullanıyorsan, çı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 olacaktır. Nihai veri kümesi yapının kılavuzda sağlanan örneğe uygun olduğundan emin ol. Daha fazla ayrıntı için Veri Toplama ve Etiketleme Kılavuzumuza bak.

Link to this sectionYOLOv5'i ticari uygulamalarda 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üretilmiş ç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 gereksinimleri ve dağıtım modeliyle en iyi eşleşen lisansı seç.

Yorumlar