Ultralytics YOLO27:
Get Started

Poz Tahmini Veri Kümelerine Genel Bakış#

Desteklenen Veri Kümesi Biçimleri#

Ultralytics YOLO biçimi#

YOLO poz modellerini eğitmek için kullanılan veri kümesi etiket biçimi şöyledir:

  1. Görüntü başına bir metin dosyası: Veri kümesindeki her görüntünün, görüntü dosyasıyla aynı ada ve ".txt" uzantısına sahip bir metin dosyası vardır.
  2. Nesne başına bir satır: Metin dosyasındaki her satır, görüntüdeki bir nesne örneğine karşılık gelir.
  3. Her satırda nesne bilgileri: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
    • Nesne sınıfı indeksi: Nesnenin sınıfını belirten bir tam sayı (ör. kişi için 0, araba için 1 vb.).
    • Nesne merkezi koordinatları: Nesnenin merkezinin x ve y koordinatları, 0 ile 1 arasında olacak şekilde normalize edilir.
    • Nesne genişliği ve yüksekliği: Nesnenin genişliği ve yüksekliği, 0 ile 1 arasında olacak şekilde normalize edilir.
    • Nesne anahtar noktası koordinatları: Nesnenin anahtar noktaları 0 ile 1 arasında olacak şekilde normalize edilir.

Poz tahmin görevi için etiket biçimine ilişkin bir örnek:

2B anahtar noktalı biçim

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Anahtar nokta görünürlüğü içeren biçim (her noktanın görünürlüğünü içerir)

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> ... <pxn> <pyn> <pn-visibility>

Bu biçimde <class-index>, nesnenin sınıf indeksidir; <x> <y> <width> <height>, sınırlayıcı kutunun normalize edilmiş koordinatlarıdır ve <px1> <py1> <px2> <py2> ... <pxn> <pyn>, normalize edilmiş anahtar nokta koordinatlarıdır. Görünürlük kanalı isteğe bağlıdır ancak örtülmeyi işaretleyen veri kümeleri için kullanışlıdır.

Veri kümesi YAML biçimi#

Ultralytics çerçevesi, poz tahmini modellerini eğitmek için veri kümesini ve model yapılandırmasını tanımlamak üzere YAML dosya biçimini kullanır. Poz veri kümesini tanımlamak için kullanılan YAML biçimine ilişkin bir örnek:

ultralytics/cfg/datasets/coco8-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-pose ← downloads here (1 MB)

# 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: coco8-pose # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes
names:
  0: person

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

train, val ve test alanları eğitim, doğrulama ve test görüntülerinin konumunu belirtir. Her biri bir dizin, dizin listesi veya her satırda bir görüntü yolu bulunan bir *.txt dosyası kabul eder ( ./ ile başlayan yollar *.txt dosyasına göre çözümlenir). Bir *.txt dosyası; bir dizinin alt kümesiyle eğitim yapmak, etiketsiz görüntüleri atlamak veya birden çok kaynaktaki görüntüleri tek bir bölmede birleştirmek için kullanışlıdır.

`*.txt` dosyasında görüntü yolları
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
kpt_shape: [17, 3] # required for pose datasets
names:
  0: person

names, sınıf adlarından oluşan bir sözlüktür. Adların sırası, YOLO veri kümesi dosyalarındaki nesne sınıfı indekslerinin sırasıyla eşleşmelidir.

(İsteğe bağlı) flip_idx, her anahtar noktasını ayna görüntüsüne eşler; böylece yatay çevirme artırımı, insan vücudu veya yüzü gibi simetrik iskeletlerde sol ve sağ tarafların tutarlı kalmasını sağlar. [sol göz, sağ göz, burun, sol ağız, sağ ağız] = [0, 1, 2, 3, 4] şeklinde indekslenen beş yüz işaret noktası için flip_idx, [1, 0, 2, 4, 3] değeridir: sol-sağ çiftleri 0-1 ve 3-4 yer değiştirirken burun kendi indeksini korur.

(İsteğe bağlı) kpt_oks_sigmas, eğitim ve doğrulama sırasında kullanılan her anahtar nokta için özel OKS sigma değerlerini belirler; ör. [0.26, 0.25, 0.25, ...]. Liste uzunluğu, kpt_shape içindeki N anahtar nokta sayısına eşit olmalı ve tüm değerler pozitif olmalıdır. Bu seçenek belirtilmezse, kpt_shape: [17, 3] için COCO'nun 17 anahtar noktalı sigma değerleri, diğer durumlarda ise tekdüze bir 1/N kullanılır.

Kullanım#

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-pose.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)

# Modeli eğit
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Desteklenen Veri Kümeleri#

Bu bölümde, Ultralytics YOLO biçimiyle uyumlu olan ve poz tahmini modellerini eğitmek için kullanılabilen veri kümeleri ele alınmaktadır. Bu veri kümelerinin çoğu, görüntülere ve açıklamalara göz atabileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulutta eğitim için klonlayabileceğin Ultralytics Platform üzerinde de barındırılır.

COCO-Pose#

  • Açıklama: COCO-Pose, anahtar nokta etiketli kişilerin yer aldığı COCO 2017 görüntülerini kapsayan, büyük ölçekli bir insan pozu tahmini veri kümesidir.
  • Etiket Biçimi: Yukarıda açıklanan Ultralytics YOLO biçimiyle aynıdır; insan pozları için anahtar noktalar içerir.
  • Sınıf Sayısı: 1 (kişi).
  • Anahtar Noktalar: Burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil olmak üzere, her birinin görünürlük boyutu bulunan 17 anahtar nokta türü.
  • Kullanım: İnsan pozu tahmini modellerini eğitmek için uygundur.
  • Ek Notlar: Veri kümesi, COCO Keypoints 2017 yarışmasını temel alır: 156.165 kişi için etiketlenmiş 58.945 görüntü içerir.
  • COCO-Pose hakkında daha fazla bilgi

COCO8-Pose#

  • Açıklama: Ultralytics COCO8-Pose, COCO train 2017 kümesindeki ilk 8 görüntüden oluşan küçük ama çok yönlü bir poz tahmini veri kümesidir; 4 görüntü eğitim, 4 görüntü doğrulama için ayrılmıştır.
  • Etiket Biçimi: Yukarıda açıklanan Ultralytics YOLO biçimiyle aynıdır; insan pozları için anahtar noktalar içerir.
  • Sınıf Sayısı: 1 (kişi).
  • Anahtar Noktalar: Burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil olmak üzere, her birinin görünürlük boyutu bulunan 17 anahtar nokta türü.
  • Kullanım: Poz tahmini modellerini test etmek ve hata ayıklamak ya da yeni anahtar nokta algılama yaklaşımlarını denemek için uygundur.
  • Ek Notlar: COCO8-Pose, mantıklılık kontrolleri ve CI kontrolleri için idealdir.
  • COCO8-Pose hakkında daha fazla bilgi

Dog-Pose#

  • Açıklama: Ultralytics Dog-Pose veri kümesi, köpeklerde anahtar nokta tahmini için 6.773 eğitim ve 1.703 doğrulama görüntüsü içerir.
  • Etiket Biçimi: Köpek anatomisine özgü birden çok anahtar noktaya yönelik açıklamalar içeren Ultralytics YOLO biçimini izler.
  • Sınıf Sayısı: 1 (köpek).
  • Anahtar Noktalar: Uzuvlar, eklemler ve baş konumları gibi köpek pozlarına uygun, her birinin görünürlük boyutu bulunan 24 anahtar nokta.
  • Kullanım: Araştırmadan gerçek dünya uygulamalarına kadar çeşitli senaryolarda köpek pozlarını tahmin eden modelleri eğitmek için idealdir.
  • Ek Notlar: Kaynak görüntüler Stanford Dogs Dataset veri kümesinden alınmıştır.
  • Dog-Pose hakkında daha fazla bilgi

El Anahtar Noktaları#

  • Açıklama: Ultralytics El Anahtar Noktaları veri kümesi, 18.776'sı eğitim ve 7.992'si doğrulama için ayrılmış toplam 26.768 görüntüden oluşur.
  • Etiket Biçimi: Yukarıda açıklanan Ultralytics YOLO biçimiyle aynıdır, ancak insan eli için 21 anahtar nokta ve bir görünürlük boyutu içerir.
  • Sınıf Sayısı: 1 (el).
  • Anahtar Noktalar: 21 anahtar nokta.
  • Kullanım: İnsan eli pozu tahmini ve hareket tanıma için oldukça uygundur.
  • Ek Notlar: Tutarlı etiketleme için anahtar nokta açıklamaları Google MediaPipe kullanılarak oluşturulur.
  • El Anahtar Noktaları hakkında daha fazla bilgi

Tiger-Pose#

  • Açıklama: Ultralytics Tiger-Pose veri kümesi, bir YouTube videosundan alınan 263 görüntüden oluşur; 210 görüntü eğitim, 53 görüntü doğrulama için ayrılmıştır.
  • Etiket Biçimi: Yukarıda açıklanan Ultralytics YOLO biçimiyle aynıdır; hayvan pozu için 12 anahtar nokta içerir ve görünürlük boyutu içermez.
  • Sınıf Sayısı: 1 (kaplan).
  • Anahtar Noktalar: 12 anahtar nokta.
  • Kullanım: Hayvan pozları veya insan temelli olmayan diğer pozlar için oldukça uygundur.
  • Ek Notlar: AGPL-3.0 Lisansı kapsamında yayımlanmıştır.
  • Tiger-Pose hakkında daha fazla bilgi

Kendi veri kümeni ekleme#

Kendi veri kümen varsa ve bunu Ultralytics YOLO biçimiyle poz tahmini modellerini eğitmek için kullanmak istiyorsan, yukarıda "Ultralytics YOLO biçimi" altında belirtilen biçime uyduğundan emin ol. Açıklamalarını gerekli biçime dönüştür ve YAML yapılandırma dosyasında yolları, sınıf sayısını ve sınıf adlarını belirt.

Dönüştürme adımını tamamen atlamak için Ultralytics Platform, ham görüntüleri yüklemene, tarayıcıda anahtar noktaları etiketlemene ve ortaya çıkan veri kümesiyle doğrudan eğitim yapmana olanak tanır.

Dönüştürme Aracı#

Ultralytics, popüler COCO veri kümesi biçimindeki etiketleri YOLO biçimine dönüştürmek için kullanışlı bir dönüştürme aracı sağlar:

Örnek
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

Bu dönüştürme aracı, COCO veri kümesini veya COCO biçimindeki herhangi bir veri kümesini Ultralytics YOLO biçimine dönüştürmek için kullanılabilir. use_keypoints parametresi, dönüştürülen etiketlere anahtar noktaların (poz tahmini için) dahil edilip edilmeyeceğini belirtir.

Sık Sorulan Sorular#

  • Poz tahmini veri kümeleri için Ultralytics YOLO biçiminde, her görüntüye karşılık gelen bir metin dosyası bulunur. Metin dosyasındaki her satır bir nesne örneğine ilişkin bilgileri içerir:

    • Nesne sınıfı indeksi
    • Nesne merkez koordinatları (normalize edilmiş x ve y)
    • Nesne genişliği ve yüksekliği (normalize edilmiş)
    • Nesne anahtar noktası koordinatları (normalize edilmiş pxn ve pyn)

    2B pozlarda anahtar noktalar, normalize edilmiş x ve y koordinatlarını içerir. Görünürlük boyutu varsa her anahtar noktanın bir görünürlük bayrağı da bulunur. Daha fazla bilgi için Ultralytics YOLO biçimine bak.

  • coco-pose.yaml, pakete dahildir ve ilk kullanımda görüntüleri ve etiketleri indirir; bu nedenle elle hazırlık yapman gerekmez:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # önceden eğitilmiş modeli yükle
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    Veri kümesi ayrıntıları için COCO-Pose sayfasına, tüm argüman listesini görmek için Eğitim sayfasına bak.

  • Veri kümeni eklemek için:

    1. Açıklamalarını Ultralytics YOLO biçimine dönüştür.

    2. Veri kümesi yollarını, sınıf sayısını ve sınıf adlarını belirten bir YAML yapılandırma dosyası oluştur.

    3. Modelini eğitmek için yapılandırma dosyasını kullan:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n-pose.pt")
      results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

      Adımların tamamı için Kendi veri kümeni ekleme bölümüne bak.

  • Ultralytics YOLO'daki veri kümesi YAML dosyası, eğitim için veri kümesini ve model yapılandırmasını tanımlar. Eğitim, doğrulama ve test görüntülerinin yollarını, anahtar nokta şekillerini, sınıf adlarını ve diğer yapılandırma seçeneklerini belirtir. Bu yapılandırılmış biçim, veri kümesi yönetimini ve model eğitimini kolaylaştırır. YAML biçimine ilişkin bir örnek:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
    # Example usage: yolo train data=coco8-pose.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-pose ← downloads here (1 MB)
    
    # 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: coco8-pose # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Keypoints
    kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
    flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
    
    # Classes
    names:
      0: person
    
    # Keypoint names per class
    kpt_names:
      0:
        - nose
        - left_eye
        - right_eye
        - left_ear
        - right_ear
        - left_shoulder
        - right_shoulder
        - left_elbow
        - right_elbow
        - left_wrist
        - right_wrist
        - left_hip
        - right_hip
        - left_knee
        - right_knee
        - left_ankle
        - right_ankle
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

    YAML yapılandırma dosyaları oluşturma hakkında Veri kümesi YAML biçimi bölümünde daha fazla bilgi edin.

  • Ultralytics, anahtar nokta bilgileri de dahil olmak üzere COCO veri kümesi etiketlerini YOLO biçimine dönüştürmek için bir araç sağlar:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

    Bu araç, COCO veri kümelerini YOLO projelerine sorunsuzca entegre etmeye yardımcı olur. Ayrıntılar için Dönüştürme Aracı bölümüne ve veri ön işleme kılavuzuna bak.

Yorumlar