二十二、Ubuntu22.04 + Yolov8 简单使用
1. 环境配置
- Ubuntu 22.04
- CUDA 11.7
- Pytorch 1.13(必须 ≥ 1.8 )
- Python 3.8 (必须 ≥ 3.8,但最好使用 3.8)
- RTX 2080
# 创建虚拟环境
conda create --name myYolov8 python=3.8
# 激活环境
conda activate myYolov8
# CUDA 11.7:安装 Pytorch 1.13
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
# 安装 ultralytics 包:yolov8仅需要安装这一个库就ok了
pip install ultralytics
具体配置方法,可以看我前面的博客
Ubuntu22.04 配置 Anaconda + Pycharm + Pytorch
Ubuntu22.04 + RTX2080 配置显卡驱动 + CUDA + cuDNN
2. 通过命令行简单使用 Yolov8
Yolov8 命令行界面 (CLI) 允许执行简单的命令,不需要自定义或 Python 代码
语法:
yolo task=detect mode=train model=yolov8n.yaml args...
segment val yolov8n-cls.yaml
classify predict yolov8n-seg.yaml
pose export yolov8n.pt
track
benchmark
task(可选)
mode(必须)
args(可选)自定义参数比较多,去看文档
2.1 目标检测 detect
最好新建一个文件夹
因为第一次使用的时候,当前目录下没有模型权重文件 yolov8n.pt
,该命令会自动从 GitHub 下载
输入可以是视频、也可以是图片
cd myYolo_test
yolo task=detect mode=predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
检测结果也会保存到当前目录下的 runs/detect/predict
2.2 语义分割 segment
cd myYolo_test
# 需要用 yt-dlp 这个工具去下载网络视频(蛮好用的)
pip install yt-dlp
yolo task=segment mode=predict model=yolov8n-seg.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320
2.3 目标分类
cd myYolo_test
yolo task=classify mode=predict model=yolov8x-cls.pt source=bus.jpg
2.4 姿态估计 pose
cd myYolo_test
yolo task=pose mode=predict model=yolov8n-pose.pt source=human.mp4
2.5 在 COCO128 上验证 YOLOv8n
会自动下载 coco128 数据集到 家目录下的 datasets
coco128.yaml 是数据加载配置文件,这个文件被放在虚拟环境中,不在数据集里
/home/yao/anaconda3/envs/myYolov8/lib/python3.8/site-packages/ultralytics/cfg/datasets/coco128.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128 ← downloads here (7 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: ../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
cd myYolo_test
yolo val model = yolov8n.pt data = coco128.yaml
验证结果保存在 runs/detect/valXXX
里面
2.6 在 COCO128 上训练 YOLOv8n
cd myYolo_test
yolo train model = yolov8n.pt data = coco128.yaml epochs = 10 imgsz = 640
训练结果保存在 runs/detect/valXXX
里面
3. 模型改进与训练
3.1 源码下载
cd /home/yao/PycharmProjects
git clone https://github.com/ultralytics/ultralytics.git
用 Pycharm 打开
选择一下虚拟环境
3.2 数据集准备
COCO 数据集通常被分为几个子集,包括 “train”, “val”, “test” 等
“train” 子集用于训练模型,“val” 子集用于验证模型的性能,“test” 子集用于最终的模型测试
cd datasets
wget https://ultralytics.com/assets/coco2017val.zip
unzip coco2017val.zip
coco2017val 数据集的目录结构
.
├── annotations # 包含标注信息
│ └── instances_val2017.json
├── images
│ └── val2017 # 图像
│ ├── 000000000139.jpg
│ ├── 000000000285.jpg
│ ├── ...
│ └── 000000581781.jpg
└── labels # 标签文件(图像中目标的类别,及其边界框的四个角坐标)
│ └── val2017
│ ├── 000000000139.txt
│ ├── 000000000285.txt
│ ├── ...
│ └── 000000581781.txt
├── LICENSE
├── README.txt
└── val2017.txt # 图像文件路径列表