Ultralytics YOLO ile Poz Tahmini#
Poz tahmini, genellikle kilit noktalar olarak adlandırılan belirli noktaların bir görüntüdeki konumunu belirlemeyi içeren bir görevdir. Kilit noktalar; eklemler, işaret noktaları veya diğer ayırt edici özellikler gibi nesnenin çeşitli bölümlerini temsil edebilir. Kilit noktaların konumları genellikle bir dizi 2B [x, y] koordinatı ve isteğe bağlı olarak bir görünürlük bayrağı [x, y, visible] ile temsil edilir.
Bir poz tahmini modelinin çıktısı, görüntüdeki bir nesnenin kilit noktalarını temsil eden bir nokta kümesidir ve genellikle her nokta için güven skorlarını da içerir. Bir sahnedeki nesnenin belirli bölümlerini ve bunların birbirlerine göre konumlarını belirlemen gerektiğinde poz tahmini iyi bir seçimdir.
Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
YOLO26 poz modelleri -pose son ekini, yani yolo26n-pose.pt kullanır. Bu modeller COCO kilit noktaları veri kümesi üzerinde eğitilmiştir ve çeşitli poz tahmini görevleri için uygundur.
Varsayılan YOLO26 poz modelinde, her biri insan vücudunun farklı bir bölümünü temsil eden 17 kilit noktası bulunur. Her dizinin ilgili vücut eklemine eşlemesi aşağıda verilmiştir:
- Burun
- Sol Göz
- Sağ Göz
- Sol Kulak
- Sağ Kulak
- Sol Omuz
- Sağ Omuz
- Sol Dirsek
- Sağ Dirsek
- Sol Bilek
- Sağ Bilek
- Sol Kalça
- Sağ Kalça
- Sol Diz
- Sağ Diz
- Sol Ayak Bileği
- Sağ Ayak Bileği
Modeller#
Ultralytics YOLO26 önceden eğitilmiş Poz modelleri burada gösterilmektedir. Algılama, Segmentasyon ve Poz modelleri COCO veri kümesi üzerinde, Semantik modeller Cityscapes üzerinde ve Sınıflandırma modelleri ImageNet veri kümesi üzerinde önceden eğitilmiştir.
Modeller, ilk kullanımda en güncel Ultralytics sürümünden otomatik olarak indirilir.
| Model | boyut (piksel) | mAPpoz 50-95(e2e) | mAPpoz 50(e2e) | Hız CPU ONNX (ms) | Hız T4 TensorRT10 (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-pose | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.6 |
| YOLO26s-pose | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 24.1 |
| YOLO26m-pose | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.3 |
| YOLO26l-pose | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.7 |
| YOLO26x-pose | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 202.3 |
- mAPval değerleri, COCO Keypoints val2017 veri kümesinde tek model ve tek ölçek kullanılarak elde edilmiştir.
yolo val pose data=coco-pose.yaml device=0 nms=Falseile yeniden üretin - Hız, bir Amazon EC2 P4d örneği kullanılarak COCO val görüntüleri üzerinde ortalanmıştır.
yolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=Falseile yeniden üretin - Parametreler ve FLOP değerleri, Conv/BatchNorm katlama işlemi ve kullanılmayan algılama dalının kaldırılmasından sonraki birleştirilmiş modeller içindir. Önceden eğitilmiş kontrol noktaları tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
COCO anahtar nokta sonuçlarının ön bilgisi için yayınlanmamış YOLO27 önizlemesine göz at.
Eğit#
COCO8-pose veri kümesi üzerinde bir YOLO26-pose modeli eğit. COCO8-pose veri kümesi, poz tahmini modellerini test etmek ve hata ayıklamak için ideal olan küçük bir örnek veri kümesidir.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.yaml") # build a new model from YAML
model = YOLO("yolo26n-pose.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)Eğit sayfasında train modunun tüm ayrıntılarına bak. Poz modelleri Ultralytics Platform bulut eğitimi ile de eğitilebilir.
Veri kümesi biçimi#
YOLO poz veri seti formatı Dataset Guide içinde ayrıntılı olarak bulunabilir. Mevcut bir COCO keypoints JSON veri setini YOLO formatına dönüştürmek için, COCO to YOLO guide içinde açıklandığı gibi convert_coco fonksiyonunu use_keypoints=True ile birlikte kullan. Ultralytics Platform annotation, insan, el, yüz ve özel kilit nokta düzenleri için yerleşik iskelet şablonlarıyla poz etiketlerini de destekler.
Özel poz tahmini görevleri için hayvan poz tahmini amacıyla Tiger-Pose, el takibi amacıyla Hand Keypoints veya köpek poz analizi amacıyla Dog-Pose gibi özel veri kümelerini de inceleyebilirsin.
Doğrulama#
Eğitilmiş YOLO26n-pose modelinin doğruluğunu COCO8-pose veri kümesi üzerinde doğrula. model, eğitim data değerini ve bağımsız değişkenlerini model öznitelikleri olarak koruduğundan bağımsız değişken gerekmez.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list containing mAP50-95 for each category
metrics.box.image_metrics # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pose.maps # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FNTahmin#
Görüntüler üzerinde tahminler çalıştırmak için eğitilmiş bir YOLO26n-pose modeli kullan. Tahmin modu, görüntüler, videolar veya gerçek zamanlı akışlar üzerinde çıkarım yapmanı sağlar.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
xy = result.keypoints.xy # x and y coordinates
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x, y, visibility (if available)predict modunun tüm ayrıntıları için Tahmin sayfasına bak.
Sonuç çıktısı#
Poz tahmini, her görüntü için bir Results nesnesi döndürür. Birincil tahmin alanları, poz koordinatları için result.keypoints ve bu kilit noktaların ait olduğu algılanan örnekler için result.boxes alanlarıdır.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.keypoints | Keypoints | (N) | Kilit noktaları. |
result.keypoints.data | torch.float32 | (N,K,2/3) | x,y ve isteğe bağlı görünürlük/güven. |
result.keypoints.xy | torch.float32 | (N,K,2) | Piksel kilit noktaları. |
result.keypoints.xyn | torch.float32 | (N,K,2) | Normalleştirilmiş kilit noktaları. |
result.boxes | Boxes | (N) | Örnek kutuları. |
Her görevdeki göreve özgü Results alanlarının tamamı için Göreve Göre Tahmin Sonuçları bölümüne bak.
Dışa aktarma#
Bir YOLO26n Pose modelini ONNX, CoreML vb. farklı bir biçime aktar. Bu, modelini çeşitli platform ve cihazlarda gerçek zamanlı çıkarım için dağıtmanı sağlar.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Kullanılabilir YOLO26-pose dışa aktarma biçimleri aşağıdaki tabloda verilmiştir. format bağımsız değişkenini, yani format='onnx' veya format='engine' değerini kullanarak herhangi bir biçime aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsin; örneğin yolo predict model=yolo26n-pose.onnx. Modelin için kullanım örnekleri dışa aktarma tamamlandıktan sonra gösterilir.
| Biçim | format bağımsız değişkeni | Model | Meta veriler | Bağımsız değişkenler |
|---|---|---|---|---|
| PyTorch | - | yolo26n-pose.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-pose_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-pose_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, batch, quantize |
nms=None, harici NMS için varsayılan olarak ham çıktıları kullanır. Mevcut bir NMS'siz başlığı seçmek için nms=False değerini ayarla; desteklenmeyen formatlar yerel çıktı yollarına geri döner. Yukarıdaki nms girdileri, NMS'yi nms=True ile gömebilen formatları tanımlar.
Ayrıntıların tamamı için Dışa aktarma sayfasındaki export bilgilerine bak.
SSS#
Ultralytics YOLO26 ile poz tahmini, bir görüntüde anahtar noktalar olarak bilinen belirli noktaların belirlenmesini içerir. Bu anahtar noktalar genellikle nesnenin eklemlerini veya diğer önemli özelliklerini temsil eder. Çıktı, her nokta için
[x, y]koordinatlarını ve güven skorlarını içerir. YOLO26-pose modelleri bu görev için özel olarak tasarlanmıştır ve-poseson ekini kullanır; örneğinyolo26n-pose.pt. Bu modeller COCO anahtar noktaları gibi veri kümeleriyle önceden eğitilmiştir ve çeşitli poz tahmini görevlerinde kullanılabilir. Daha fazla bilgi için Poz Tahmini Sayfasını ziyaret et.Özel bir veri kümesi üzerinde YOLO26-pose modelini eğitmek; YAML dosyasıyla tanımlanan yeni bir modelin veya önceden eğitilmiş bir modelin yüklenmesini içerir. Ardından, belirttiğin veri kümesini ve parametreleri kullanarak eğitim sürecini başlatabilirsin.
from ultralytics import YOLO # Load a model model = YOLO("yolo26n-pose.yaml") # build a new model from YAML model = YOLO("yolo26n-pose.pt") # load a pretrained model (recommended for training) # Train the model results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Eğitimle ilgili kapsamlı ayrıntılar için Eğitim Bölümüne başvur. Özel poz tahmini modellerini kod yazmadan eğitmek için Ultralytics Platform bulut eğitimini de kullanabilirsin.
YOLO26-pose modelinin doğrulanması, eğitim sırasında korunan aynı veri kümesi parametreleri kullanılarak doğruluğunun değerlendirilmesini içerir. İşte bir örnek:
from ultralytics import YOLO # Load a model model = YOLO("yolo26n-pose.pt") # load an official model model = YOLO("path/to/best.pt") # load a custom model # Validate the model metrics = model.val() # no arguments needed, dataset and settings rememberedDaha fazla bilgi için Doğrulama Bölümünü ziyaret et.
Evet, bir YOLO26-pose modelini ONNX, CoreML, TensorRT ve daha fazlası gibi çeşitli biçimlere aktarabilirsin. Bu işlem Python veya Komut Satırı Arayüzü (CLI) kullanılarak gerçekleştirilebilir.
from ultralytics import YOLO # Load a model model = YOLO("yolo26n-pose.pt") # load an official model model = YOLO("path/to/best.pt") # load a custom-trained model # Export the model model.export(format="onnx")Daha fazla ayrıntı için Dışa Aktarma Bölümüne başvur. Dışa aktarılan modeller; fitness takibi, spor analizi veya robotik gibi gerçek zamanlı uygulamalar için uç cihazlarda dağıtılabilir.
Ultralytics YOLO26; YOLO26n-pose, YOLO26s-pose, YOLO26m-pose ve diğerleri gibi çeşitli önceden eğitilmiş poz modelleri sunar. Bu modeller boyut, doğruluk (mAP) ve hız bakımından farklılık gösterir. Örneğin YOLO26n-pose modeli 57,2 mAPpose50-95 ve 83,3 mAPpose50 değerine ulaşır. Tam liste ve performans ayrıntıları için Modeller Bölümünü ziyaret et.