torch--yoloV5学习
- 网络可视化工具:netron
netron官方的github链接: https://github.com/lutzroeder/netron
netron对pt格式的权重文件兼容性不好,直接使用netron工具打开,无法显示整个网络
可以使用yolo 代码中models/export.py脚本将pt权重文件转换为onnx格式,再用netron工具打开,就可以看yolo v5网络的整体架构。
导出ONNX文件
pip install onnx>=1.7.0
pip install coremltools==4.0
python models/export.py --weights weights/yolov5s.pt --img 640 --batch 1
转换后的权重onnx文件路径: weights/yolov5s.onnx
打开https://github.com/lutzroeder/netron
![](https://img2024.cnblogs.com/blog/3437857/202410/3437857-20241007121311098-414529444.png)
点击红框,打开权重文件yolov5s.onnx即可看到网络结构
- yolov5灵活配置不同复杂度的模型
![](https://img2024.cnblogs.com/blog/3437857/202410/3437857-20241011133845195-1104693097.png)
- yolov5坐标格式
3.1 xyxy2xywh格式
xy,xy 分别为左上角和右下角坐标x,y值转化为中心点格式
x = x_center/width
y = y_center/height
w = (xmax - xmin)/width
h = (ymax - ymin)/height
3.2 xywh2xyxy格式
将中心点格式数据转化为xy,xy 分别为左上角和右下角坐标x,y值
4、目录结构
----yolov5-3.1\
|----detect.py # 检测脚本
|----hubconf.py # PyTorch Hub相关代码
|----LICENSE # 版权文件
|----README.md # README markdown文件
|----requirements.txt # 项目所需的安装包列表
|----sotabench.py # COCO数据集测试脚本
|----train.py # 模型训练脚本
|----test.py # 模型测试脚本
|----tutorial.ipynb # Jupyter Notebook演示代码
|----data\
| |----coco.yaml # COCO数据集配置文件
| |----coco128.yaml # COCO128数据集配置文件
| |----hyp.finetune.yaml # 超参数微调配置文件
| |----hyp.scratch.yaml # 超参数起始配置文件
| |----voc.yaml # VOC数据集配置文件
| |----scripts\
| | |----get_coco.sh # 下载COCO数据集shell命令
| | |----get_voc.sh # 下载VOC数据集shell命令
|----inference\
| |----images # 示例图片文件夹
| | |----bus.jpg
| | |----zidane.jpg
| |----output # output输出文件
|----models\
| |----common.py # 模型组件定义代码
| |----experimental.py # 实验性质的代码
| |----export.py # 模型导出脚本
| |----yolo.py # Detect及Model构建代码
| |----yolov5l.yaml # yolov5l网络模型配置文件
| |----yolov5m.yaml # yolov5m网络模型配置文件
| |----yolov5s.yaml # yolov5s网络模型配置文件
| |----yolov5x.yaml # yolov5x网络模型配置文件
| |----hub\ #
| | |----yolov3-spp.yaml
| | |----yolov5-fpn.yaml
| | |----yolov5-panet.yaml
|----weights\ # 权重文件夹
| |----yolov5l.pt # yolov5l权重文件
| |----yolov5m.pt # yolov5m权重文件
| |----yolov5s.pt # yolov5s权重文件
| |----yolov5x.pt # yolov5x权重文件
|----utils\
| |----activations.py # 激活函数定义代码
| |----datasets.py # dataset及Dataloader定义代码
| |----evolve.sh # 超参数进化命令
| |----general.py # 项目通用函数代码
| |----google_utils.py # 谷歌云使用相关代码
| |----torch_utils.py # 辅助程序代码
| |----google_app_engine\
| | |----additional_requirements.txt
| | |----app.yaml
| | |----Dockerfile
|----VOC\ # 数据集目录
| |----images\
| | |----train\ # 训练集图片文件夹
| | |----val\ # 验证集图片文件夹
| |----labels\ # 数据集标签目录
| | |----train.cache # 训练缓存文件
| | |----val.cache # 验证缓存文件
| | |----train\ # 训练集标签
| | |----val\ # 验证集标签
断点续训