YOLOv9 安全帽检测(二)

文章关注yolov9模型的训练策略(AdamW优化器替换)、推理脚本(detect.py)的应用,以及在实践中遇到的问题解决过程,包括数据集调整和参数调优。
摘要由CSDN通过智能技术生成

训练

这里重新训练了yolov9-c.pt
在这里插入图片描述
其他参数还没改动,优化器改成了AdamW,不太建议用Lion,虽然速度很快,并且loss下降很快,但是调参比较困难,

推理

推理用官方的detect.py文件,和训练相同,查看参数后编写命令脚本

def parse_opt():
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolo.pt', help='模型路径或 Triton URL')
    parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='文件/目录/URL/通配符/屏幕/0(摄像头)的输入源')
    parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(可选)数据集 YAML 文件路径')
    parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='推理尺寸 h,w')
    parser.add_argument('--conf-thres', type=float, default=0.25, help='置信度阈值')
    parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU 阈值')
    parser.add_argument('--max-det', type=int, default=1000, help='每张图像的最大检测数')
    parser.add_argument('--device', default='', help='cuda 设备,例如 0 或 0,1,2,3 或 cpu')
    parser.add_argument('--view-img', action='store_true', help='显示结果')
    parser.add_argument('--save-txt', action='store_true', help='将结果保存为 *.txt')
    parser.add_argument('--save-conf', action='store_true', help='将置信度保存在 --save-txt 标签中')
    parser.add_argument('--save-crop', action='store_true', help='保存裁剪的预测框')
    parser.add_argument('--nosave', action='store_true', help='不保存图像/视频')
    parser.add_argument('--classes', nargs='+', type=int, help='按类过滤:--classes 0,或 --classes 0 2 3')
    parser.add_argument('--agnostic-nms', action='store_true', help='类别不可知的 NMS')
    parser.add_argument('--augment', action='store_true', help='增强推理')
    parser.add_argument('--visualize', action='store_true', help='可视化特征')
    parser.add_argument('--update', action='store_true', help='更新所有模型')
    parser.add_argument('--project', default=ROOT / 'runs/detect', help='将结果保存到项目/名称')
    parser.add_argument('--name', default='exp', help='将结果保存到项目/名称')
    parser.add_argument('--exist-ok', action='store_true', help='现有项目/名称可以,不增加')
    parser.add_argument('--line-thickness', default=3, type=int, help='边界框厚度(像素)')
    parser.add_argument('--hide-labels', default=False, action='store_true', help='隐藏标签')
    parser.add_argument('--hide-conf', default=False, action='store_true', help='隐藏置信度')
    parser.add_argument('--half', action='store_true', help='使用 FP16 半精度推理')
    parser.add_argument('--dnn', action='store_true', help='使用 OpenCV DNN 进行 ONNX 推理')
    parser.add_argument('--vid-stride', type=int, default=1, help='视频帧速率跨度')
    opt = parser.parse_args()
    opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1  # 扩展
    print_args(vars(opt))
    return opt

推理报错
在这里插入图片描述
在issue里找到要修改utils/general.py的903行

在这里插入图片描述

在这里插入图片描述
然后再运行一遍,先用官方的模型跑一边

在这里插入图片描述
正常运行,修改运行命令到自己训练的模型路径

在这里插入图片描述

运行推理,查看结果
在验证集上感觉还好,在测试集完全不行
在这里插入图片描述
在这里插入图片描述
查找一下原因

更正数据集类别

重新训练了一遍结果还是会反着,没太搞懂为什么,这次训练50轮,
在这里插入图片描述
训练结果,这里val_loss是0,翻看了一下issue是需要val_dual.py来验证yolo的模型,
在这里插入图片描述
运行验证
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
训练时间应该不够久

用测试集测试数据
在这里插入图片描述
在这里插入图片描述
流程算是跑通了,下篇文章开始调参

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值