Yolov8 の使い方

物体検出の新しいモデル。
より簡単に使えるようになった。

https://github.com/ultralytics/ultralytics

![Jan-11-2023 20-13-47.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/d3812ccf-d8e5-80c7-c1aa-29acf5d418c9.gif)

# 使い方

### Install

```shell
pip install ultralytics
```

## Predict

### Object Detection

```shell
yolo task=detect mode=predict model=yolov8s.pt source="https://ultralytics.com/images/bus.jpg"
```

![00096fcb-23f8-41ee-88a9-2d8a2758eb23.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/dbbf4b0f-4b8d-bdbb-9c3c-e879a17871d8.jpeg)

### Semantic Segmentation

```shell
yolo task=segment mode=predict　model=yolov8s-seg.pt source="image.jpg"
```

![pexels-asad-photo-maldives-1268874 (3).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/8a1427dc-e99c-f941-b36f-95356ba3e348.jpeg)

### Classification

```shell
yolo task=classify mode=predict model=yolov8s-cls.pt source="bird.jpg"
```

![4a3bd7b7-d9e8-46ab-baca-aed901f76cf4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/48310846-fde6-5704-ad79-b3c4f4bbe8ae.jpeg)


これだけ。

sourceは画像URLでもローカルパスでも動画でもいい。

modelは以下から選択可能。

![スクリーンショット 2023-01-11 17.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/8492785f-d336-e396-ad4b-c2abf6f97ab2.png)

サイズの大きいモデルほど遅いが精度は良い。

**yolov8s**

![pexels-photo-3677175.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/32da3770-55d6-83a1-6eac-8795821bb4bb.jpeg)

**yolov8x**

![bd164edc-8899-4ce5-9d9f-2497f2a0dcc7.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/f83ae19f-470f-f87c-0a6f-86111befe188.jpeg)


# トレーニング

```shell
yolo task=detect mode=train model=yolov8n.pt data=coco128.yaml epochs=3 imgsz=640
```

coco128.yamlの中身を自前のデータに置き換えると自前のデータで学習できる。

```coco128.yaml
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics

# 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: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush


# Download script/URL (optional)
download: https://ultralytics.com/assets/coco128.zip
```

# 各種フォーマットへの変換

```shell
yolo mode=export model=yolov8s.pt format=onnx
```

![スクリーンショット 2023-01-11 19.48.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/8e446115-4aa4-2067-87cd-000478a9e75f.png)