当前位置: 首页 > news >正文

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_size0/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模型

http://www.lryc.cn/news/38854.html

相关文章:

  • JDK自带JVM分析工具
  • IO多路复用--[select | poll | epoll | Reactor]
  • pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas
  • R语言基础(六):函数
  • [C++] 简单序列化
  • Autosar Configuration(十三)SomeIP之配置TCP/IP
  • 滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现
  • IMU 积分的误差状态空间方程推导
  • VirtualBox的克隆与复制
  • 每天5分钟玩转机器学习算法:逆向概率的问题是什么?贝叶斯公式是如何解决的?
  • 游戏闲聊之游戏是怎么赚钱的
  • Redis高频面试题汇总(下)
  • Windows修改Docker安装目录修改Docker镜像目录,镜像默认存储位置存放到其它盘
  • 376. 摆动序列——【Leetcode每日刷题】
  • mgre实验
  • 一文彻底了解Zookeeper(介绍篇)
  • 1. ELK Stack 理论篇之什么是ELK Stack?
  • 两道有关链表的练习
  • Python uiautomator2安卓自动化测试
  • Leetcode. 160相交链表
  • MDPs —— 马尔可夫决策定义与算法
  • 【C++】图
  • 尾递归优化
  • P1120 小木棍(搜索+剪枝)
  • 【专项训练】动态规划-3
  • 【Linux】信号+再谈进程地址空间
  • C++回顾(二十一)—— list容器
  • 爱国者一体机电脑蓝屏怎么U盘重装系统教学?
  • Vue学习笔记(9)
  • 中值滤波+Matlab仿真+频域响应分析