YOLOv5的优势:
使用PyTorch进行编写。
可以轻松编译成ONNX和CoreML。
速度极快,每秒140FPS。
精度超高,可以达到0.895mAP。
体积很小:27M。
集成了YOLOv3-spp和YOLOv4部分特性。
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
git checkout -b v6.1
pip install -r requirements.txt -i https://pypi.douban.com/simple
cd weights
wget -c https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5s.pt
不同的工程版本模型版本不同
#!/bin/bash
cd yolov5
python train.py \
--device 0,1\
--epochs 10\
--cache \
--batch-size 32\
--imgsz 640\
--hyp data/hyps/hyp.scratch-high.yaml \
--data data/coco128.yaml \
--cfg models/yolov5s.yaml \
--weights ./weights/yolov5s.pt \
--project demo \
--name yolov5s
--device gpu:0,1,2...
--epochs 迭代轮数
--batch-size 批大小
--imgsz 训练验证图片大小
--hyp 图像增强配置(学习率,图片翻转)
--data 指定训练数据文件
--cfg 设置网络结构的配置文件
–weights 加载预训练模型的路径
--project:工程名称
--name:保存文件名称save to project/name
data/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
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
# └── coco128 ← downloads here
# 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
nc: 80 # number of classes 分类数量
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
'hair drier', 'toothbrush'] # class names 类别名称
# Download script/URL (optional)
download: https://ultralytics.com/assets/coco128.zip
YOLOv5x(最大的模型)
YOLOv5l
YOLOv5m
YOLOv5s(最小的模型)
Yolov5s网络最小,速度最少,AP精度也最低。但如果检测的以大目标为主,追求速度,倒也是个不错的选择。
hyp.scratch.yaml。
# Hyperparameters for VOC finetuning
# python train.py --batch 64 --weights yolov5m.pt --data voc.yaml --img 512 --epochs 50
lr0: 0.0032 #学习率
lrf: 0.12 # 余弦退火超参数
momentum: 0.843 # 学习率动量
weight_decay: 0.00036 # 权重衰减系数
warmup_epochs: 2.0 #预热学习epoch
warmup_momentum: 0.5 #预热学习率动量
warmup_bias_lr: 0.05 #预热学习率
box: 0.0296 # giou损失的系数
cls: 0.243 # 分类损失的系数
cls_pw: 0.631 #分类BCELoss中正样本的权重
obj: 0.301 # 有无物体损失的系数
obj_pw: 0.911 # 有无物体BCELoss中正样本的权重
iou_t: 0.2 # 标签与anchors的iou阈值iou training threshold
anchor_t: 2.91 # 标签的长h宽w/anchor的长h_a宽w_a阈值, 即h/h_a, w/w_a都要在(1/2.91, 2.91)之间anchor-multiple threshold
# anchors: 3.63
# 下面是一些数据增强的系数, 包括颜色空间和图片空间
fl_gamma: 0.0
hsv_h: 0.0138 # 色调
hsv_s: 0.664 # 饱和度
hsv_v: 0.464 # 明度
degrees: 0.373 #旋转角度
translate: 0.245 # 水平和垂直平移
scale: 0.898 # 缩放
shear: 0.602 # 剪切
perspective: 0.0 # 透视变换参数
flipud: 0.00856 # 上下翻转
fliplr: 0.5 # 左右翻转
mosaic: 1.0 #进行mosaic的概率
mixup: 0.243 #进行mixup的概率
images:模型评估图片总数;
labels:检测到对应类别的签数量;
Precision:准确率;
Recall:召回率;
[email protected] & [email protected]:0.95:m表示平均,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。
1.cpu环境torch安装失败.torch,torchvision版本配套使用
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html