YOLOv7 pytorch
Posted 爱吃肉的鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLOv7 pytorch相关的知识,希望对你有一定的参考价值。
yolov7主干部分结构图:yolov7主干
yolov7数据集处理代码:yolov7数据集处理代码
yolov7训练参数解释:yolov7训练参数【与本文代码有区别】
yolov7训练代码详解:yolov7训练代码详解
目录
训练自己的训练集
此处的数据集是采用VOC的格式。
数据集存放格式:
─dataset
│ ├─Annotations # 存放xml标签文件
│ ├─images # 存放图片
│ ├─ImageSets # 存放图片名称的txt文件
│ └─labels # 存放标签txt文件
先运行项目代码makeTXT:
python makeTXT.py
此时会在ImageSets下生成4个txt文件(这四个txt中仅包含每个图像的名称)
ImageSets/
|-- test.txt
|-- train.txt
|-- trainval.txt
`-- val.txt
打开voc_label.py.修改classes为自己的类。
然后运行该代码。
python voc_label.py
将会在dataset文件下生成test.txt、train.txt、val.txt【这些txt仅包含图像路径】。然后在dataset/labels下会生成每个图像的txt【这些txt格式内容表示为类别索引+(center_x,center_y,w,h)】
接下来是配置文件的修改。
打开cfg/training/yolov7.yaml。将nc修改为自己的类别数量。
接下来在data/文件下新建一个yaml文件【我这里写的是mydata.yaml】,内容如下,需要修改两个地方:
train: ./dataset/train.txt val: ./dataset/val.txt test: ./dataset/test.txt # number of classes nc: 1 # 修改处1 修改为自己的类 # class names names: [ 'target' ] # 修改处2 类的名称
有关训练中的超参数设置【比如初始学习率,动量,权重衰减等,可自行在data/hyp.scratch.p5.yaml中修改】。
训练:
python train.py --weights yolov7.pt --batch-size 2 --device 0
正常的训练将会看到以下信息。
2023-03-11 11:50:48.658 | INFO | __main__:train:316 -
Epoch gpu_mem box obj cls total labels img_size
0/299 2.58G 0.04649 0.4474 0 0.4939 5 640: 100%|██████████████████████████████████████████████████████████████| 359/359 [02:39<00:00, 2.25it/s]
Class Images Labels P R mAP@.5 mAP@.5:.95: 100%|████████████████████████████████████████████████████| 20/20 [00:07<00:00, 2.78it/s]
all 80 147 0.2 0.204 0.102 0.0191
生成推理阶段的模型
由于yolov7中训练与推理并不是一个模型,是将训练后的模型进行重参数生成新模型。
因此需要运行tools/Reparameterization.py文件。【运行前注意修改文件中的权重路径以及类的数量】
代码:GitHub - YINYIPENG-EN/yolov7_torch: yolov7 pytorch
torch转onnx
修改tools/pytorch2onnx.py中的权重路径
运行该代码即可得到onnx模型
以上是关于YOLOv7 pytorch的主要内容,如果未能解决你的问题,请参考以下文章
YoloV7实战:手把手教你使用Yolov7进行物体检测(附数据集)