YOLO Vision 2026:

Poz Tahmini Veri Kümelerine Genel Bakış#

Desteklenen Veri Kümesi Formatları#

Ultralytics YOLO formatı#

YOLO poz modellerini eğitmek için kullanılan veri kümesi etiket formatı şu şekildedir:

  1. Görsel başına bir metin dosyası: Veri kümesindeki her görselin, görsel dosyasıyla aynı ada sahip ve ".txt" uzantılı karşılık gelen bir metin dosyası bulunur.
  2. Nesne başına bir satır: Metin dosyasındaki her satır, görseldeki bir nesne örneğine karşılık gelir.
  3. Satır başına nesne bilgisi: Her satır, nesne örneği hakkında şu bilgileri içerir:
    • Nesne sınıfı indeksi: Nesnenin sınıfını temsil eden bir tam sayı (örneğin, kişi için 0, araba için 1 vb.).
    • Nesne merkez koordinatları: 0 ile 1 arasında normalize edilmiş, nesnenin merkezinin x ve y koordinatları.
    • Nesne genişliği ve yüksekliği: 0 ile 1 arasında normalize edilmiş, nesnenin genişliği ve yüksekliği.
    • Nesne anahtar nokta koordinatları: 0 ile 1 arasında normalize edilmiş, nesnenin anahtar noktaları.

İşte bir poz tahmini görevi için etiket formatı örneği:

2D anahtar noktalı format

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

Anahtar nokta görünürlüğü içeren format (nokta başına görünürlüğü içerir)

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

Bu formatta, <class-index> nesnenin sınıf indeksidir, <x> <y> <width> <height> sınır kutusunun normalleştirilmiş koordinatlarıdır ve <px1> <py1> <px2> <py2> ... <pxn> <pyn> ise normalleştirilmiş eklem noktası (keypoint) koordinatlarıdır. Görünürlük kanalı isteğe bağlıdır ancak oklüzyonu (kapanmayı) etiketleyen veri kümeleri için yararlıdır.

Veri kümesi YAML formatı#

Ultralytics çerçevesi, poz tahmini modellerini eğitmek için veri kümesini ve model yapılandırmasını tanımlamak amacıyla bir YAML dosya formatı kullanır. İşte bir poz veri kümesini tanımlamak için kullanılan YAML formatı örneği:

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 resimlerini gösterir. Her biri bir dizini, bir dizin listesini veya satır başına bir resim yolu listeleyen bir *.txt dosyasını kabul eder (./ ile başlayan yollar *.txt dosyasına göre çözümlenir). Bir *.txt dosyası, bir dizinin alt kümesi üzerinde eğitmek, etiketlenmemiş resimleri atlamak veya birden fazla kaynaktan gelen resimleri tek bir bölüme birleştirmek için yararlıdır.

`*.txt` dosyası olarak 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
names:
  0: person

names sınıf adlarının bir sözlüğüdü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 bir eklem noktasını kendi ayna görüntüsüyle eşleştirir; böylece yatay çevirme (horizontal-flip) 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] olarak indekslenen beş yüz simgesi için flip_idx, [1, 0, 2, 4, 3]'tür: sol-sağ çiftleri 0-1 ve 3-4 yer değiştirir ve burun kendi indeksini korur.

(İsteğe bağlı) kpt_oks_sigmas, doğrulama sırasında kullanılan anahtar nokta başına özel OKS sigmalarını belirler (örn. [0.26, 0.25, 0.25, ...]). Liste uzunluğu, kpt_shape içindeki N anahtar nokta sayısı ile eşit olmalı ve her değer pozitif olmalıdır. Atlandığında, COCO 17 anahtar nokta sigmaları kpt_shape: [17, 3] için kullanılır ve diğer durumlar için tekdüze bir 1/N kullanılır.

Kullanım#

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Desteklenen Veri Kümeleri#

Bu bölüm, Ultralytics YOLO formatıyla uyumlu olan ve poz tahmini modellerini eğitmek için kullanılabilen veri kümelerini özetlemektedir:

COCO-Pose#

  • Açıklama: COCO-Pose, anahtar nokta etiketli insanları içeren COCO 2017 görüntülerini kapsayan geniş ölçekli bir insan pozu kestirim veri kümesidir.
  • Etiket Formatı: Yukarıda açıklandığı gibi, insan pozları için anahtar noktalarla birlikte Ultralytics YOLO formatıyla aynıdır.
  • Sınıf Sayısı: 1 (insan).
  • Anahtar Noktalar: Burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil olmak üzere her biri görünürlük boyutuna sahip 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şiyle etiketlenmiş 58.945 görsel.
  • COCO-Pose hakkında daha fazla bilgi edinin

COCO8-Pose#

  • Açıklama: Ultralytics COCO8-Pose, COCO train 2017 setinin ilk 8 görselinden oluşan (4'ü eğitim ve 4'ü doğrulama için), küçük ama çok yönlü bir poz tahmini veri kümesidir.
  • Etiket Formatı: Yukarıda açıklandığı gibi, insan pozları için anahtar noktalarla birlikte Ultralytics YOLO formatıyla aynıdır.
  • Sınıf Sayısı: 1 (insan).
  • Anahtar Noktalar: Burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil olmak üzere her biri görünürlük boyutuna sahip 17 anahtar nokta türü.
  • Kullanım: Poz kestirim modellerini test etmek ve hata ayıklamak veya yeni anahtar nokta algılama yaklaşımlarıyla denemeler yapmak için uygundur.
  • Ek Notlar: COCO8-Pose, akıl yürütme kontrolleri ve CI kontrolleri için idealdir.
  • COCO8-Pose hakkında daha fazla bilgi edinin

Dog-Pose#

  • Açıklama: Ultralytics Dog-Pose veri kümesi, köpek eklem noktası tahmini için 6.773 eğitim ve 1.703 doğrulama görseli içerir.
  • Etiket Formatı: Köpek anatomisine özgü çoklu anahtar noktalar için açıklamalarla birlikte Ultralytics YOLO formatını izler.
  • Sınıf Sayısı: 1 (köpek).
  • Anahtar Noktalar: Her biri görünürlük boyutuna sahip, uzuvlar, eklemler ve baş pozisyonları gibi köpek pozlarına göre uyarlanmış 24 anahtar nokta.
  • Kullanım: Araştırmadan gerçek dünya uygulamalarına kadar çeşitli senaryolarda köpek pozlarını tahmin etmek üzere modeller eğitmek için idealdir.
  • Ek Notlar: Kaynak görseller Stanford Dogs Veri Kümesinden alınmıştır.
  • Dog-Pose hakkında daha fazla bilgi edinin

El Anahtar Noktaları#

  • Açıklama: Ultralytics Hand Keypoints veri kümesi 26.768 görselden oluşur; bunların 18.776'sı eğitim ve 7.992'si doğrulama için ayrılmıştır.
  • Etiket Formatı: Yukarıda açıklanan Ultralytics YOLO formatıyla 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 el pozu tahmini ve jest tanıma için harikadır.
  • Ek Notlar: Eklem noktası etiketleri, tutarlı etiketleme için Google MediaPipe kullanılarak oluşturulur.
  • Hand Keypoints hakkında daha fazla bilgi edinin

Tiger-Pose#

  • Açıklama: Ultralytics Tiger-Pose veri kümesi, bir YouTube videosundan elde edilen 263 görselden oluşur; bunlardan 210 görsel eğitim, 53 görsel ise doğrulama için ayrılmıştır.
  • Etiket Formatı: Yukarıda açıklandığı gibi Ultralytics YOLO formatı ile aynıdır, hayvan pozu için 12 anahtar nokta içerir ve görünürlük boyutu yoktur.
  • Sınıf Sayısı: 1 (kaplan).
  • Anahtar Noktalar: 12 anahtar nokta.
  • Kullanım: Hayvan pozu veya insan bazlı olmayan diğer pozlar için harikadır.
  • Ek Notlar: AGPL-3.0 Lisansı altında yayınlanmıştır.
  • Tiger-Pose hakkında daha fazla bilgi edinin

Kendi veri kümeni ekleme#

Kendi veri kümen varsa ve onu Ultralytics YOLO formatıyla poz tahmini modellerini eğitmek için kullanmak istiyorsan, "Ultralytics YOLO formatı" altında belirtilen formatı izlediğinden emin ol. Açıklamalarını gerekli formata 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örselleri yüklemenize, tarayıcıda eklem noktalarını etiketlemenize ve doğrudan elde edilen veri kümesi üzerinde eğitmenize olanak tanır.

Dönüştürme Aracı#

Ultralytics, popüler COCO veri kümesi formatındaki etiketleri YOLO formatına 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 formatındaki herhangi bir veri kümesini Ultralytics YOLO formatına dönüştürmek için kullanılabilir. use_keypoints parametresi, dönüştürülen etiketlere eklem noktalarının (poz tahmini için) dahil edilip edilmeyeceğini belirtir.

SSS#

Poz tahmini için Ultralytics YOLO formatı nedir?#

Poz tahmini veri kümeleri için Ultralytics YOLO formatı, her görselin karşılık gelen bir metin dosyasıyla etiketlenmesini içerir. Metin dosyasının her satırı bir nesne örneği hakkında bilgi saklar:

  • 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 nokta koordinatları (normalize edilmiş pxn ve pyn)

2B pozlar için eklem noktaları normalleştirilmiş x ve y koordinatlarını içerir. Bir görünürlük boyutu ile her eklem noktasının ayrıca bir görünürlük bayrağı bulunur. Daha fazla ayrıntı için Ultralytics YOLO formatı bölümüne bakın.

COCO-Pose veri kümesini Ultralytics YOLO ile nasıl kullanırım?#

coco-pose.yaml, paketle birlikte gelir ve ilk kullanımda görselleri ve etiketleri indirir, böylece manuel bir hazırlık gerekmez:

from ultralytics import YOLO

model = YOLO("yolo26n-pose.pt")  # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

Veri kümesi ayrıntıları için COCO-Pose sayfasına ve tüm argüman listesi için Train sayfasına bakın.

Ultralytics YOLO'da poz tahmini için kendi veri kümemi nasıl ekleyebilirim?#

Veri kümeni eklemek için:

  1. Açıklamalarını Ultralytics YOLO formatına 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)

    Tam adımlar için Kendi veri kümenizi ekleme bölümünü inceleyin.

Ultralytics YOLO'daki veri kümesi YAML dosyasının amacı nedir?#

Ultralytics YOLO'daki veri kümesi YAML dosyası, eğitim için veri kümesi ve model yapılandırmasını tanımlar. Eğitim, doğrulama ve test görsellerinin yollarını, anahtar nokta şekillerini, sınıf adlarını ve diğer yapılandırma seçeneklerini belirtir. Bu yapılandırılmış format, veri kümesi yönetimini ve model eğitimini kolaylaştırmaya yardımcı olur. İşte bir YAML formatı örneği:

# 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 daha fazla bilgi için Dataset YAML format bölümünü okuyun.

COCO veri kümesi etiketlerini poz tahmini için Ultralytics YOLO formatına nasıl dönüştürebilirim?#

Ultralytics, anahtar nokta bilgileri dahil olmak üzere COCO veri kümesi etiketlerini YOLO formatına dönüştürmek için bir dönüştürme aracı 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 sorunsuz bir şekilde 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ın.

Yorumlar