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ı aşağıdaki gibidir:
- 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 karşılık gelen bir metin dosyası vardır.
- Nesne başına bir satır: Metin dosyasındaki her satır, görüntüdeki bir nesne örneğine karşılık gelir.
- Satır başına nesne bilgileri: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
- Nesne sınıfı dizini: Nesnenin sınıfını temsil eden bir tam sayıdır (ör. kişi için 0, araba için 1 vb.).
- Nesne merkez 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 kilit noktası koordinatları: Nesnenin kilit noktaları, 0 ile 1 arasında olacak şekilde normalize edilir.
Poz tahmini görevi için etiket formatına bir örnek:
2B kilit noktaları formatı
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>Kilit noktası görünürlüğü formatı (nokta başına görünürlük 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ının indeksidir; <x> <y> <width> <height>, sınırlayıcı kutunun normalize edilmiş koordinatlarıdır ve <px1> <py1> <px2> <py2> ... <pxn> <pyn>, normalize edilmiş kilit noktası koordinatlarıdır. Görünürlük kanalı isteğe bağlıdır ancak örtülmeyi belirten veri kümeleri için kullanışlıdır.
Veri Kümesi YAML Biçimi#
Ultralytics framework'ü, poz tahmini modellerini eğitmek için veri kümesi ve model yapılandırmasını tanımlamak üzere YAML dosya formatını kullanır. Poz veri kümesini tanımlamak için kullanılan YAML formatına 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.ziptrain, val ve test alanları eğitim, doğrulama ve test görüntülerinin yollarını belirtir. Her biri bir dizini, dizinler listesini veya satır başına bir görüntü 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ümesiyle eğitim yapmak, etiketsiz görüntüleri atlamak veya birden çok kaynaktaki görüntüleri tek bir bölüme birleştirmek için kullanışlıdır.
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: personnames, 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ı dizinlerinin sırasıyla eşleşmelidir.
(İsteğe bağlı) flip_idx, yatay çevirme artırmasının insan vücudu veya yüzü gibi simetrik iskeletlerde solu ve sağı tutarlı tutması için her kilit noktasını ayna görüntüsüne eşler. [sol göz, sağ göz, burun, sol ağız kenarı, sağ ağız kenarı] = [0, 1, 2, 3, 4] olarak indekslenen beş yüz işareti için flip_idx, [1, 0, 2, 4, 3] değeridir: 0-1 ve 3-4 sol-sağ çiftleri yer değiştirir, burun ise kendi indeksini korur.
(İsteğe bağlı) kpt_oks_sigmas, eğitim ve doğrulama sırasında kullanılan özel kilit noktası başına [OKS](https://ultralytics-translation-1.invalid sigma değerlerini belirler; ör. [0.26, 0.25, 0.25, ...]. Liste uzunluğu, kpt_shape içindeki N kilit noktası sayısına eşit olmalı ve her değer pozitif olmalıdır. Belirtilmediğinde, kpt_shape: [17, 3] için COCO 17 kilit noktası sigma değerleri, diğer durumlarda ise tek tip 1/N kullanılır.
Kullanım#
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 açıklamaktadır. Bu veri kümelerinin çoğu, görselleri ve etiketleri inceleyebileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulut tabanlı eğitim için bunları klonlayabileceğin Ultralytics Platform üzerinde de barındırılmaktadır.
COCO-Pose#
- Açıklama: COCO-Pose, anahtar noktaları etiketlenmiş kişileri içeren COCO 2017 görüntülerini kapsayan, büyük ölçekli bir insan pozu tahmini veri kümesidir.
- Etiket Formatı: Yukarıda açıklanan Ultralytics YOLO formatıyla aynıdır ve insan pozları için kilit noktaları içerir.
- Sınıf Sayısı: 1 (kişi).
- Kilit Noktalar: Her biri bir görünürlük boyutuna sahip burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil 17 kilit noktası 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ü.
- 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; 4'ü eğitim, 4'ü doğrulama için kullanılan küçük ancak çok yönlü bir poz tahmini veri kümesidir.
- Etiket Formatı: Yukarıda açıklanan Ultralytics YOLO formatıyla aynıdır ve insan pozları için kilit noktaları içerir.
- Sınıf Sayısı: 1 (kişi).
- Kilit Noktalar: Her biri bir görünürlük boyutuna sahip burun, gözler, kulaklar, omuzlar, dirsekler, bilekler, kalçalar, dizler ve ayak bilekleri dahil 17 kilit noktası türü.
- Kullanım: Poz tahmini modellerini test etmek ve hatalarını ayıklamak veya yeni kilit noktası algılama yaklaşımlarını denemek için uygundur.
- Ek Notlar: COCO8-Pose, sağ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öpek kilit noktası tahmini için 6.773 eğitim ve 1.703 doğrulama görüntüsü içerir.
- Etiket Formatı: Köpek anatomisine özgü birden fazla kilit noktaya ilişkin açıklamalarla birlikte Ultralytics YOLO formatını izler.
- Sınıf Sayısı: 1 (köpek).
- Kilit Noktalar: Her biri görünürlük boyutuna sahip, uzuvlar, eklemler ve baş konumları gibi köpek pozlarına uyarlanmış 24 kilit noktası.
- 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 Kilit Noktaları#
- Açıklama: Ultralytics El Kilit 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 Formatı: Yukarıda açıklanan Ultralytics YOLO formatıyla aynıdır; ancak insan eli için 21 kilit noktası ve bir görünürlük boyutu içerir.
- Sınıf Sayısı: 1 (el).
- Kilit Noktalar: 21 kilit noktası.
- Kullanım: İnsan eli pozu tahmini ve hareket tanıma için uygundur.
- Ek Notlar: Tutarlı etiketleme için kilit noktası açıklamaları Google MediaPipe kullanılarak oluşturulmuştur.
- El Kilit 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 Formatı: Yukarıda açıklanan Ultralytics YOLO formatıyla aynıdır; hayvan pozu için 12 kilit noktası içerir ve görünürlük boyutu içermez.
- Sınıf Sayısı: 1 (kaplan).
- Kilit Noktalar: 12 kilit noktası.
- Kullanım: Hayvan pozu veya insan temelli olmayan diğer pozlar için 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 formatıyla poz tahmini modellerini eğitmek için kullanmak istiyorsan, "Ultralytics YOLO formatı" başlığı altında yukarıda belirtilen formata uyduğundan 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 Platformu ham görüntüleri yüklemene, tarayıcıda kilit noktalarına açıklama eklemene 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 formatındaki etiketleri YOLO formatına dönüştürmek için kullanışlı bir dönüştürme aracı sunar:
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 kilit noktalarının (poz tahmini için) dahil edilip edilmeyeceğini belirtir.
SSS#
Poz tahmini veri kümeleri için Ultralytics YOLO formatı, her görüntünün karşılık gelen bir metin dosyasıyla etiketlenmesini gerektirir. Metin dosyasının her satırı bir nesne örneğine ilişkin bilgileri depolar:
- Nesne sınıfı indeksi
- Nesne merkez koordinatları (normalize edilmiş x ve y)
- Nesne genişliği ve yüksekliği (normalize edilmiş)
- Nesne kilit noktası koordinatları (normalize edilmiş pxn ve pyn)
2B pozlarda kilit noktaları, normalize edilmiş x ve y koordinatlarını içerir. Bir görünürlük boyutuyla birlikte her kilit noktası ayrıca bir görünürlük bayrağına sahip olur. Daha fazla bilgi için Ultralytics YOLO formatına bakabilirsin.
coco-pose.yamlpaketle birlikte gelir ve ilk kullanımda görüntüleri ve etiketleri indirir; bu nedenle manuel 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, tüm bağımsız değişken listesini görmek için Train sayfasına bakabilirsin.
Veri kümeni eklemek için:
-
Açıklamalarını Ultralytics YOLO formatına dönüştür.
-
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.
-
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)Eksiksiz adımlar 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ı, kilit noktası ş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ırır. YAML formatına 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.zipYAML yapılandırma dosyaları oluşturma hakkında Veri Kümesi YAML formatı bölümünden daha fazla bilgi edinebilirsin.
Ultralytics, kilit noktası bilgileri de dahil olmak üzere COCO veri kümesi etiketlerini YOLO formatına dönüştürmek için bir dönüştürme aracı sunar:
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 ş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 başvurabilirsin.