YOLOv8でポーズ推定を行った


YOLOv8でポーズ推定を行いました。
YOLOの最新版であるYOLOv8には日本語のドキュメントもあります。

https://docs.ultralytics.com/ja/

https://github.com/ultralytics/ultralytics

ドキュメントと[Google Colaboratoryのノートブック](https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb)を読みながらYOLOv8を実行してみました。

# ポーズ推定
Google Colaboratoryにて実行しました。
ランタイム->ランタイムのタイプを変更->T4 GPUを選択
```Python
from google.colab import drive
drive.mount('/content/drive')
```
```Python
!mkdir "/content/drive/MyDrive/yolov8"
```
```Python
%pip install ultralytics
import ultralytics
ultralytics.checks()
```

YOLOv8には事前学習済みモデルがあります。

![スクリーンショット 2023-12-08 19.06.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/07cbe055-7d43-b522-105b-ad4017545595.png)

上記の表には6つのモデルが示されていますが、下のモデルほど精度が高いです。
6つのモデルを用いて、ポーズ推定を行います。

### YOLOv8n-pose
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8n-pose.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/4d478b3b-8b6b-1fb8-78f3-60de35e8ea68.jpeg)

2人しかいないにも関わらず、3人検出されています。
また、アンチェロッティ（右）の腕が上手くポーズ推定されていません。

### YOLOv8s-pose
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8s-pose.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/6cb27944-f891-7026-47ab-e961e8807d19.jpeg)

検出されたのが2人になりました。
しかし、アンチェロッティ（右）の腕は上手くポーズ推定されていません。

### YOLOv8m-pose
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8m-pose.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/2221ccd1-a148-9d81-0ba9-03661bde3822.jpeg)

ジダンの左目が推定されるようになりました。
しかし、ジダン（左）の右腕が上手くポーズ推定されなくなりました。

### YOLOv8l-pose
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8l-pose.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/eeb392db-2baf-b50b-75da-94244337bc4b.jpeg)

ジダン（左）の右腕が上手くポーズ推定されるようになりました。
しかし、アンチェロッティ（右）の右腕は上手くポーズ推定されなくなりました。

### YOLOv8x-pose
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8x-pose.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/1b401a4a-69f5-6496-628b-eab85727e55e.jpeg)

personのスコアが高くなりました。
また、ジダン（左）の右腕が上手くポーズ推定されるようになりました。

### YOLOv8x-pose-p6
ポーズ推定（結果はyolov8/runs/poseに保存される）
```Python
%cd "/content/drive/MyDrive/yolov8"
!yolo predict model=yolov8x-pose-p6.pt source='https://ultralytics.com/images/zidane.jpg'
```

![zidane.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/37f5d2b1-9af9-206a-70a3-ab93e8e4d7bb.jpeg)

YOLOv8x-poseとの違いはあまりありませんでした。
YOLOv8x-poseとYOLOv8x-pose-p6の精度が高いことを、6つのモデルを用いて確かめることができました。

YOLOv8で物体検出を行ってみた記事、YOLOv8でセグメンテーションを行ってみた記事、自作データセットを用いてYOLOv8で分類を行った記事も、よければご覧ください。

https://qiita.com/wawana12/items/fde830c0b04567c4d68a

https://qiita.com/wawana12/items/b8bae36500ad188ae41b

https://qiita.com/wawana12/items/7e2c4cdcf2232ceb8876

https://qiita.com/wawana12/items/595fdbb8b075d04b33ce