1、下载安装

下载安装yolov7的命令如下所示,如果电脑没有装git可以直接到https://github.com/WongKinYiu/yolov7下,解压后在装有pytorch的cmd环境下进入目录执行pip install -qr requirements.txt 也行

git clone https://github.com/WongKinYiu/yolov7  # clone
cd yolov7
pip install -qr requirements.txt  # install

2、数据集处理

如果已经有处理好的数据集,就比如yolov7中默认的coco数据配置,可以不用进行一下操作。

2.1 准备自己的数据集

从labelme标注数据,到转换为json格式可以参考一下链接实现:
https://hpg123.blog.csdn.net/article/details/127250372。为了方便大家,博主也将自己转换好的yolo数据上传到了gitcode,(只标注了60个图片,60个标签训练出来效果可能不是很好)。数据下载链接:https://gitcode.net/a486259/data/-/blob/master/shipdata_yolo.zip

2.2 创建数据集的yaml文件

这里train就是设置训练集的路径,val是设置验证集的路径,test是设置测试集的路径。博主这里由于标注的数据有限,因此train与test都设置成了一个路径。nc是设置类别数,names是类别名称。

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: D:\\Img_data\\shipdata_yolo\\images\\train
val: D:\\Img_data\\shipdata_yolo\\images\\val
test: D:\\Img_data\\shipdata_yolo\\images\\train  # number of classes
nc: 1# class names
names: [ 'ship' ]

将上述代码保存到yolov7项目中data目录下,文件名为myship.yaml。后续在使用中myship就是数据集的名称。

3、训练模型

使用以下命令即可训练yolov7模型,训练模型时需要注意修改data/hyp.scratch.p5.yaml里面的学习率参数。针对不同的训练环境(显存),要调整batch-size,因此附带了调整学习率。训练前必须先将yolov7.pt存储到yolov7的根目录下,下载链接:https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt

python train.py --workers 0 --device 0 --batch-size 8 --data data/myship.yaml --img 320 320 --cfg cfg/training/yolov7.yaml --weights 'yolov7.pt' --name yolov7 --hyp data/hyp.scratch.p5.yaml


除了train.py可以训练模型外,train_aux.py也可以训练模型(带辅助头的训练)。训练后保存的结果如下所示:

3.1 关键配置

–workers 0 用于设置dataloader的数量,在内存不够的电脑上通常设置为0
–device 0 用于设置gpu设备
–batch-size 用于设置batchsize
–data data/myship.yaml 用于设置数据集
–cfg cfg/training/yolov7.yaml 用于设置模型
–weights ‘yolov7.pt’ 用于设置预训练权重
–hyp data/hyp.scratch.p5.yaml 训练任务的超参数

需要进行更多的超参数设置请参考3.2

3.2 完整的训练参数

yolov7中完整的训练参数如下所示,

 parser.add_argument('--weights', type=str, default='yolov7.pt', help='initial weights path')parser.add_argument('--cfg', type=str, default='', help='model.yaml path')parser.add_argument('--data', type=str, default='data/coco.yaml', help='data.yaml path')parser.add_argument('--hyp', type=str, default='data/hyp.scratch.p5.yaml', help='hyperparameters path')parser.add_argument('--epochs', type=int, default=300)parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')parser.add_argument('--rect', action='store_true', help='rectangular training')parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')parser.add_argument('--notest', action='store_true', help='only test final epoch')parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers')parser.add_argument('--project', default='runs/train', help='save to project/name')parser.add_argument('--entity', default=None, help='W&B entity')parser.add_argument('--name', default='exp', help='save to project/name')parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')parser.add_argument('--quad', action='store_true', help='quad dataloader')parser.add_argument('--linear-lr', action='store_true', help='linear LR')parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone of yolov7=50, first3=0 1 2')parser.add_argument('--v5-metric', action='store_true', help='assume maximum recall as 1.0 in AP calculation')

3、评估模型

使用以下测试命令,需要注意的是部分参数格式与yolov5有所不同,比如没有了workers的设置,大部分参数与yolov5都是一样的。–task用于设置数据集中的train、test、val。

python test.py --device 0 --batch-size 2 --data data/myship.yaml --img-size 320 --weights 'runs/train/yolov7/weights/best.pt' --conf-thres 0.1 --iou-thres 0.7 --task train

输出结果如下图所示

评估后保存的结果信息如下所示:

3.1 关键配置说明

–device 0 用于设置推理设备
–batch-size 2 用于设置batchsize
–data data/myship.yaml 用于设置数据集
–task train 用于设置数据集中的 train、test、val
–img-size 320 用于设置图像大小
–weights ‘runs/train/yolov7/weights/best.pt’ 用于设置模型路径
–conf-thres 0.1 用于设置置信度阈值
–iou-thres 0.7 用于设置nms的iou阈值

3.2 完整的评估参数

完整的评估参数,支持结果保存为txt

 parser = argparse.ArgumentParser(prog='test.py')parser.add_argument('--weights', nargs='+', type=str, default='yolov7.pt', help='model.pt path(s)')parser.add_argument('--data', type=str, default='data/coco.yaml', help='*.data path')parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch')parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold')parser.add_argument('--iou-thres', type=float, default=0.65, help='IOU threshold for NMS')parser.add_argument('--task', default='val', help='train, val, test, speed or study')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset')parser.add_argument('--augment', action='store_true', help='augmented inference')parser.add_argument('--verbose', action='store_true', help='report mAP by class')parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')parser.add_argument('--save-hybrid', action='store_true', help='save label+prediction hybrid results to *.txt')parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file')parser.add_argument('--project', default='runs/test', help='save to project/name')parser.add_argument('--name', default='exp', help='save to project/name')parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')parser.add_argument('--no-trace', action='store_true', help='don`t trace model')parser.add_argument('--v5-metric', action='store_true', help='assume maximum recall as 1.0 in AP calculation')

4、 测试数据

测试数据前要先准备好预训练模型(或者由代码自动下载相应的预训练模型),模型存储在项目的根目录下。

4.1 测试图片

这里的source是文件路径,支持测试文件、文件夹、http文件、glob通配符。

python detect.py --weights 'runs/train/yolov7/weights/best.pt' --source D:/Img_data/shipdata_yolo/images/val/13.jpeg  --conf-thres 0.25 --iou-thres 0.45

执行输出信息如下所示

4.2 完整测试参数

parser.add_argument('--weights', nargs='+', type=str, default='yolov7.pt', help='model.pt path(s)')
parser.add_argument('--source', type=str, default='inference/images', help='source')  # file/folder, 0 for webcam
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')
parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--view-img', action='store_true', help='display results')
parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')
parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')
parser.add_argument('--nosave', action='store_true', help='do not save images/videos')
parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')
parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
parser.add_argument('--augment', action='store_true', help='augmented inference')
parser.add_argument('--update', action='store_true', help='update all models')
parser.add_argument('--project', default='runs/detect', help='save results to project/name')
parser.add_argument('--name', default='exp', help='save results to project/name')
parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
parser.add_argument('--no-trace', action='store_true', help='don`t trace model')

使用yolov7训练用labelme标注的数据集相关推荐

  1. python脚本对labelme标注的数据集进行镜面旋转扩充数据集

    使用labelme做数据集标注效率不得不说非常感人,由此开始思考如何利用已经标注的数据集 参考如下脚本 编写python脚本对labelme标注的数据集进行左右/上下镜面翻转扩充数据集_Alex-Le ...

  2. YOLOv7训练自己的数据集(超详细)

       目录 一.准备深度学习环境 二. 准备自己的数据集 1.创建数据集 2.转换数据格式 3.配置文件 三.模型训练 1.下载预训练模型 2.训练 四.模型测试 五.模型推理 YOLOv7训练自己的 ...

  3. 利用yolov7训练自己的数据集; yolov7的安装与使用 ; yolov7源码解读

    *免责声明: 1\此方法仅提供参考 2\搬了其他博主的操作方法,以贴上路径. 3* 场景一:Anconda环境基本操作 场景二:yolov7的使用 场景三:yolov7训练自己的数据集 场景四:实用工 ...

  4. 使用YOLOV7训练BDD100K数据集(数据格式转化+训练全流程)

    目录 1. 前言 1.1 BDD100K数据集详细介绍(此节可跳过) 1.2 BDD100K数据集简要介绍 1.3 下载必要文件 2. bdd100k转yolo数据集格式 2.1 为什么要转格式 2. ...

  5. 目标检测算法——YOLOv7训练自己的数据集(保姆级教程)

    >>>深度学习Tricks,第一时间送达<<< 目录 YOLOv7训练自己的数据集(保姆级教程): 一.YOLOv7源代码下载 二.安装深度学习环境 三.准备自己的 ...

  6. YOLOv7训练自己的数据集(口罩检测)

    YOLOv7训练自己的数据集(口罩检测) 前言 前提条件 实验环境 项目结构 制作自己的数据集 数据集目录结构 训练自己的数据集 VOC格式数据集转换成YOLO格式数据集 修改cfg配置 新建一个my ...

  7. YOLOV7训练TT100K交通标识符数据集

       <临江仙>                                                         作者:缠中说禅                 浊水倾波三 ...

  8. 用Python对我们自己标注的数据集转化为YOLO训练需要的txt文件

    用Python对我们自己标注的数据集转化为YOLO训练需要的txt文件 一. 数据分类 在项目的根目录下新建一个maketxt.py文件. 该脚本会在straw/ImageSets文件夹下生成:tra ...

  9. YOLOv7训练自己的VOC数据集

    YOLOv7源码:https://github.com/WongKinYiu/yolov7 本文是对YOLOV7训练自己的yolo数据集的扩展,具体训练等步骤不再详细赘述,遇到看不懂的请移步YOLOV ...

最新文章

  1. java 0x转中文_Java:转换汉字为unicode形式的字符串和转换unicode形式字符串转换成汉字...
  2. python判断值是否在excel中_python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功...
  3. Qt4.7.0添加自定义键盘(转载+部分自己的实际工程实验)
  4. 在struts2中push方法的使用_电脑使用中怎么截屏的几种方法
  5. android x86 oreo,Android-x86 8.1 RC1发布:PC上运行Android Oreo
  6. android 串口调试数据手机收不到,记录一次安卓串口一次接收全部数据时,发生的错误...
  7. WINDOWS 98 启动盘(加强版)
  8. SAP从入门到精通 知识体系
  9. mysql增加约束sql语句_sql语句添加约束
  10. 浅析免费加密软件应该如何选择性下载
  11. 蚂蚁森林自动收能量之AutoJs实现
  12. 深度学习平台——Paddle核心框架介绍
  13. 解决ECharts中使用tooltip时鼠标移入抖动问题
  14. Android在线购物商城 app端+后台
  15. Aspose for Java 去除水印和数量限制
  16. 解决树莓派鼠标延迟/迟滞问题-转CSDN博主“Deiki”-sunziren
  17. Fabric架构及基本原理
  18. TCP/IP(十一)TCP滑动窗口和拥塞控制
  19. 微信公众号开发----测试号的使用
  20. 切断ADG的关联,划分为两个独立的数据库

热门文章

  1. 蓝牙广播数据包_Android 蓝牙广播数据包分析
  2. 为什么天气越热,孩子体内越虚寒?
  3. 安装驱动的inf文件资料,通过inf文件改变硬盘外观
  4. 成功解决在word文件的表格中当输文字时自动出现加红色和下划线
  5. html,css,js实现星座,属相测算小程序
  6. Java数据结构——平衡二叉树(AVL树)
  7. vue中用openlayers实现移动点动画
  8. 如何理解极大似然估计?
  9. Stalled:一次请求超时异常处理
  10. linux新建用户只能查看自己的目录,Linux创建用户只能访问某个目录