一、课题背景和开发环境
📌第Y6周:模型改进📌
- 语言:Python3、Pytorch
- 📌本周任务:📌 本周任务:我修改了YOLOv5s的网络结构图,请根据网络结构图以及第Y1~Y5周的内容修改对应代码,并跑通程序。
开发环境
- 电脑系统:Windows 10
- 语言环境:Python 3.8.2
- 编译器:无(直接在cmd.exe内运行)
- 深度学习环境:Pytorch 1.8.1+cu111
- 显卡及显存:NVIDIA GeForce GTX 1660 Ti 12G
- CUDA版本:Release 10.2, V10.2.89(
cmd
输入nvcc -V
或nvcc --version
指令可查看) - YOLOv5开源地址:YOLOv5开源地址
- 数据:🔗水果检测
二、调整模型
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]], # 2
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C2, [256]], # 4-修改为C2*2
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 3, C3, [512]], # 6-修改为C3*1
# [-1, 1, Conv, [1024, 3, 2]], # 7-删除P5/32
# [-1, 3, C3, [1024]], # 8-删除
[-1, 1, SPPF, [512, 5]], # 9-修改参数;层数变为7
]
# YOLOv5 v6.0 head
head:
[[-1, 1, Conv, [512, 3, 2]], # 修改参数
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13->11
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17->15 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 12], 1, Concat, [1]], # cat head P4 修改层数-2
[-1, 3, C3, [512, False]], # 20->18 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 8], 1, Concat, [1]], # cat head P5 修改层数-2
[-1, 3, C3, [1024, False]], # 23->21 (P5/32-large)
[[15, 18, 21], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) 修改层数-2
]
三、运行&打印模型查看
python train.py --img 640 --batch 8 --epoch 1 --data data/fruits.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0
(Pytorch) E:\WorkSpace_GuanXiang\0.学习资料\365天深度学习训练营\2.YOLOv5白皮书\yolov5-master>python train.py --img 640 --batch 8 --epoch 1 --data data/fruits.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0
train: weights=weights/yolov5s.pt, cfg=models/yolov5s.yaml, data=data/fruits.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=1, batch_size=8, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, bucket=, cache=None, image_weights=False, device=0, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest
github: skipping check (not a git repository), for updates see https://github.com/ultralytics/yolov5
YOLOv5 2022-12-8 Python-3.8.12 torch-1.8.1+cu111 CUDA:0 (NVIDIA GeForce GTX 1660 Ti, 6144MiB)
hyperparameters: lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0
ClearML: run 'pip install clearml' to automatically track, visualize and remotely train YOLOv5 in ClearML
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=4
from n params module arguments
0 -1 1 3520 models.common.Conv [3, 32, 6, 2, 2]
1 -1 1 18560 models.common.Conv [32, 64, 3, 2]
2 -1 1 18816 models.common.C3 [64, 64, 1]
3 -1 1 73984 models.common.Conv [64, 128, 3, 2]
4 -1 2 115712 models.common.C2 [128, 128, 2]
5 -1 1 295424 models.common.Conv [128, 256, 3, 2]
6 -1 1 296448 models.common.C3 [256, 256, 1]
7 -1 1 164608 models.common.SPPF [256, 256, 5]
8 -1 1 590336 models.common.Conv [256, 256, 3, 2]
9 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
10 [-1, 6] 1 0 models.common.Concat [1]
11 -1 1 361984 models.common.C3 [512, 256, 1, False]
12 -1 1 33024 models.common.Conv [256, 128, 1, 1]
13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
14 [-1, 4] 1 0 models.common.Concat [1]
15 -1 1 90880 models.common.C3 [256, 128, 1, False]
16 -1 1 147712 models.common.Conv [128, 128, 3, 2]
17 [-1, 12] 1 0 models.common.Concat [1]
18 -1 1 296448 models.common.C3 [256, 256, 1, False]
19 -1 1 590336 models.common.Conv [256, 256, 3, 2]
20 [-1, 8] 1 0 models.common.Concat [1]
21 -1 1 1182720 models.common.C3 [512, 512, 1, False]
22 [15, 18, 21] 1 24273 models.yolo.Detect [4, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
YOLOv5s summary: 179 layers, 4304785 parameters, 4304785 gradients, 13.2 GFLOPs
Transferred 126/289 items from weights\yolov5s.pt
AMP: checks passed
optimizer: SGD(lr=0.01) with parameter groups 47 weight(decay=0.0), 50 weight(decay=0.0005), 50 bias
train: Scanning E:\WorkSpace_GuanXiang\0.学习资料\365天深度学习训练营\2.YOLOv5白皮书\yolov5-master\paper_data\train...
train: WARNING Cache directory E:\WorkSpace_GuanXiang\0.\365\2.YOLOv5\yolov5-master\paper_data is not writeable: [WinError 183] : 'E:\\WorkSpace_GuanXiang\\0.\\365\\2.YOLOv5\\yolov5-master\\paper_data\\train.cache.npy' -> 'E:\\WorkSpace_GuanXiang\\0.\\365\\2.YOLOv5\\yolov5-master\\paper_data\\train.cache'
val: Scanning E:\WorkSpace_GuanXiang\0.学习资料\365天深度学习训练营\2.YOLOv5白皮书\yolov5-master\paper_data\val.cache..
AutoAnchor: 5.35 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\exp4\labels.jpg...
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\train\exp4
Starting training for 1 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/0 1.71G nan nan nan 42 640: 100%|██████████| 20/20 00:13
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 00:00
all 20 60 0 0 0 0
1 epochs completed in 0.004 hours.
Optimizer stripped from runs\train\exp4\weights\last.pt, 8.9MB
Optimizer stripped from runs\train\exp4\weights\best.pt, 8.9MB
Validating runs\train\exp4\weights\best.pt...
Fusing layers...
YOLOv5s summary: 132 layers, 4298225 parameters, 0 gradients, 13.0 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 2/2 00:00
all 20 60 0 0 0 0
Results saved to runs\train\exp4