2026/3/28 15:05:20
网站建设
项目流程
.net个人网站开发视频,网页制作和网站建设,分销商城系统,建设摩托车是名牌吗训练完成后模型保存在哪#xff1f;workdirs目录下找
在使用OCR文字检测模型进行微调训练时#xff0c;一个最常被问到的问题就是#xff1a;训练好的模型到底保存在哪里了#xff1f; 很多人翻遍项目根目录、config文件夹、甚至output目录都找不到新生成的权重文件。其实…训练完成后模型保存在哪workdirs目录下找在使用OCR文字检测模型进行微调训练时一个最常被问到的问题就是训练好的模型到底保存在哪里了很多人翻遍项目根目录、config文件夹、甚至output目录都找不到新生成的权重文件。其实答案很简单——它就安静地躺在workdirs/这个看似普通、却承载着所有训练成果的目录里。本文将带你彻底理清 cv_resnet18_ocr-detection 模型的训练输出路径逻辑不讲抽象概念只说你打开终端就能验证的真实路径不堆砌参数说明只聚焦“我刚点完‘开始训练’现在该去哪找模型”这个最朴素的需求。无论你是第一次尝试微调的新手还是正在排查训练失败的老手这篇内容都能帮你省下至少半小时的盲目搜索时间。1. 为什么是 workdirs不是 models 或 checkpoints很多用户习惯性地去models/、checkpoints/或weights/目录下翻找结果一无所获。这背后其实有明确的设计逻辑models/目录存放的是原始预训练模型如 ResNet18 backbone 的 ImageNet 权重属于只读资源不会被训练过程修改checkpoints/并未在本镜像中创建——该 WebUI 采用的是单次完整训练 最终模型保存模式而非每轮保存 checkpointworkdirs/是本镜像专为训练任务生命周期设计的工作空间从数据加载、日志记录、中间缓存到最终模型权重和评估报告全部集中管理。你可以把workdirs/理解成一个“训练沙盒”每次点击“开始训练”系统都会新建一个带时间戳的子目录如workdirs/20260105_143022/所有产出物都严格限定在这个目录内互不干扰也便于你回溯不同实验的结果。关键提示workdirs/目录位于项目根路径下即/root/cv_resnet18_ocr-detection/workdirs/。它不会出现在 WebUI 界面的任何按钮或输入框中必须通过命令行访问。2. 训练完成后的标准输出结构当你在 WebUI 的「训练微调」Tab 中点击“开始训练”并等待进度条走完终端或日志中出现类似Training finished. Model saved to: workdirs/20260105_143022/的提示时就可以进入对应目录查看成果了。以一次典型训练为例workdirs/20260105_143022/下的标准结构如下workdirs/ └── 20260105_143022/ ├── best.pth # 最优模型权重按验证集指标自动保存 ├── last.pth # 最后一轮模型权重无论是否最优 ├── train.log # 完整训练日志含 loss、acc、时间戳 ├── eval_results.json # 验证集详细指标precision/recall/f1 ├── visualization/ # 可视化结果检测效果示例图 │ ├── val_sample_0.png │ └── val_sample_1.png └── config.yaml # 本次训练的实际配置含 batch_size、lr 等其中真正用于后续推理或导出的模型文件只有两个best.pth和last.pth。它们的区别非常实际best.pth在训练过程中系统会持续监控验证集上的 F1 分数或其他设定指标一旦发现更高值就覆盖保存此文件。这是你应优先选用的模型代表本次训练能达到的最高质量。last.pth训练结束时的最终状态快照。如果训练后期出现过拟合它的效果可能反而不如best.pth。2.1 如何快速确认模型已成功保存别急着复制文件先用一条命令验证完整性cd /root/cv_resnet18_ocr-detection ls -lh workdirs/*/best.pth正常输出应类似-rw-r--r-- 1 root root 45M Jan 5 14:32 workdirs/20260105_143022/best.pth如果看到No such file or directory说明训练未成功完成可能是数据集路径错误、标注格式异常或显存不足。此时应立即查看train.log文件定位报错位置。3. 模型文件怎么用直接替换原模型即可拿到best.pth后你可能会疑惑它和原始模型是什么关系能不能直接拿来替换 WebUI 里的默认检测器答案是可以而且只需一步操作。cv_resnet18_ocr-detection 的推理代码默认从固定路径加载权重。你只需将训练好的best.pth复制到以下位置并重命名为model.pthcp workdirs/20260105_143022/best.pth \ /root/cv_resnet18_ocr-detection/models/model.pth然后重启 WebUI 服务bash stop_app.sh bash start_app.sh再次访问http://服务器IP:7860你会发现所有检测功能单图、批量已自动切换为你微调后的新模型。无需修改任何代码也不需要重新配置路径——这就是本镜像为工程落地做的关键简化。注意models/model.pth是 WebUI 启动时唯一读取的权重文件。如果你同时有多个微调版本只需反复执行上述cp命令并重启服务即可快速切换对比效果。4. ONNX 导出前必须确认模型路径正确WebUI 的「ONNX 导出」功能并非直接转换训练日志中的模型而是读取当前生效的models/model.pth文件。这意味着如果你刚完成训练但还没执行cp ... model.pth导出的 ONNX 模型仍是原始预训练版本如果你导出后又替换了model.pth已导出的 ONNX 文件不会自动更新需重新点击「导出 ONNX」。因此标准的微调部署流程应为三步闭环训练→ 在 WebUI 中配置数据集并启动训练部署→cp workdirs/*/best.pth models/model.pth 重启服务导出→ 在 WebUI 中点击「导出 ONNX」获得可跨平台使用的轻量模型导出的 ONNX 文件默认保存在outputs/onnx/目录下文件名包含输入尺寸信息例如model_800x800.onnx。你可以用 Python 脚本直接加载它完全脱离 PyTorch 环境import onnxruntime as ort import numpy as np # 加载导出的 ONNX 模型 session ort.InferenceSession(outputs/onnx/model_800x800.onnx) # 构造模拟输入NHWC → NCHW归一化 dummy_input np.random.randn(1, 3, 800, 800).astype(np.float32) dummy_input / 255.0 # 推理 outputs session.run(None, {input: dummy_input}) print(ONNX 模型加载成功输出形状, [o.shape for o in outputs])这段代码不依赖 PyTorch仅需onnxruntime可在 CPU 服务器、边缘设备甚至手机端运行真正实现“一次训练多端部署”。5. 常见误区与避坑指南尽管路径逻辑清晰但在实际操作中仍有几个高频踩坑点值得单独强调5.1 误区一“workdirs 是空的是不是没生成”workdirs/目录本身是空的不代表没生成——它只是父目录。真正的子目录名由训练启动时间动态生成格式为YYYYMMDD_HHMMSS如20260105_143022。如果你在训练后立刻ls workdirs/却看到空白大概率是因为训练尚未完成进度条卡住或后台崩溃你误入了其他终端会话实际训练在另一个 shell 中运行系统时间被修改过导致时间戳异常极少见。正确做法训练启动后用tail -f workdirs/*/train.log实时跟踪日志看到Training finished.才算真正结束。5.2 误区二“我改了 config.yaml为什么没生效”workdirs/*/config.yaml是训练完成后的快照记录不是运行时配置文件。它只供你事后复盘使用修改它对当前或下次训练均无影响。真正的训练参数来自 WebUI 界面输入由前端传给后端脚本动态生成临时配置。正确做法所有参数调整batch size、学习率等必须在 WebUI 的「训练微调」Tab 中完成点击“开始训练”才会生效。5.3 误区三“模型文件太大是不是出错了”ResNet18 主干网络 OCR 检测头的完整权重文件通常在 40–50MB 区间。如果你看到best.pth只有几 MB或者大小与last.pth差异极大如一个 45MB一个 2MB说明best.pth可能因磁盘满、权限不足而写入不全训练中途被 killlast.pth是残缺状态。正确做法用md5sum校验两个文件是否可正常加载python -c import torch; print(torch.load(workdirs/20260105_143022/best.pth).keys())若报错EOFError或KeyError则文件损坏需重新训练。6. 总结三句话记住模型保存核心逻辑位置唯一所有训练产出物包括最优模型best.pth都严格保存在workdirs/时间戳/子目录下没有例外也不分散使用直接只需cp workdirs/*/best.pth models/model.pth一行命令即可让 WebUI 全功能切换至你的微调模型导出可靠ONNX 导出功能始终基于当前models/model.pth确保你导出的就是刚刚验证过的那个版本。至此你已经掌握了 cv_resnet18_ocr-detection 模型训练成果的“寻宝地图”。下一步不妨挑一张你业务场景中的真实图片用新模型跑一次单图检测——当那些原本漏检的模糊小字、倾斜文本、复杂背景下的文字被精准框出时你会真切感受到那几十MB的best.pth文件不只是数据更是你定制化OCR能力的实体化身。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。