训练
这里重新训练了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的模型,
运行验证
训练时间应该不够久
用测试集测试数据
流程算是跑通了,下篇文章开始调参