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

『YOLO』| 断点训练、解决训练中断异常情况

文章目录

  • 方法一
  • 方法二

当yolo在训练的时候,如果训练中断或者出现异常,可通过修改代码,从上一次断掉处重新训练,实现断点续训。

方法一

第一种方法:
按照官方给出的恢复训练代码,用yolo命令格式,这种情况必须是环境以安装了yolo和ultralytics两个包:

运行命令

yolo task=detect mode=train model=runs/detect/exp/weights/last.pt data=ultralytics/datasets/test.yaml epochs=100 save=True resume=True

方法二

  1. ultralytics/yolo/engine/trainer.py中找到check_resumeresume_training

  2. 注释check_resumeresume = self.args.resume,改成需要断点恢复的last.pt

  3. resume_training里面添加一行ckpt的值:

def check_resume(self):# resume = self.args.resume # 注释掉这一行resume = 'runs/detect/exp/weights/last.pt'; # 从最后的last.pt开始继续训练if resume:try:last = Path(check_file(resume) if isinstance(resume, (str,Path)) and Path(resume).exists() else get_latest_run())self.args = get_cfg(attempt_load_weights(last).args)self.args.model, resume = str(last), True  # reinstateexcept Exception as e:raise FileNotFoundError("Resume checkpoint not found. Please pass a valid checkpoint to resume from, ""i.e. 'yolo train resume model=path/to/last.pt'") from eself.resume = resumedef resume_training(self, ckpt):ckpt = torch.load('runs/detect/exp/weights/last.pt') # 加载预训练模型if ckpt is None:returnbest_fitness = 0.0start_epoch = ckpt['epoch'] + 1if ckpt['optimizer'] is not None:self.optimizer.load_state_dict(ckpt['optimizer'])  # optimizerbest_fitness = ckpt['best_fitness']if self.ema and ckpt.get('ema'):self.ema.ema.load_state_dict(ckpt['ema'].float().state_dict())  # EMAself.ema.updates = ckpt['updates']if self.resume:assert start_epoch > 0, \f'{self.args.model} training to {self.epochs} epochs is finished, nothing to resume.\n' \f"Start a new training without --resume, i.e. 'yolo task=... mode=train model={self.args.model}'"LOGGER.info(f'Resuming training from {self.args.model} from epoch {start_epoch + 1} to {self.epochs} total epochs')if self.epochs < start_epoch:LOGGER.info(f"{self.model} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {self.epochs} more epochs.")self.epochs += ckpt['epoch']  # finetune additional epochsself.best_fitness = best_fitnessself.start_epoch = start_epoch

最后记住,断点续训结束后,将trainer.py还原,否则影响下次训练!!!!!!

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

相关文章:

  • MQTT+Disruptor 提高物联网高并发
  • SpringBoot项目集成ONLYOFFICE
  • 用于nodejs的开源违禁词检测工具 JavaScript node-word-detection
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。
  • Linux权限问题(账号切换,权限,粘滞位)
  • el-upload,上传文件,后端提示信息,前端需要再次重新上传(不用重新选择文件)
  • 数字信号处理Python示例(5)使用实指数函数仿真PN结二极管的正向特性
  • ctfshow(89,90,92,93)--PHP特性--intval函数
  • 构建ubuntu22.04.4私有源服务以及配置ubuntu私有源
  • 模块功能的描述方法
  • 【WPF】MatrixTransform类
  • 【C++】继承的理解
  • day50 图论章节刷题Part02(99.岛屿数量 深搜、99.岛屿数量 广搜、100.岛屿的最大面积)
  • 超详细从基准将VMware ESXi 升级到 vSphere 6.7U1教程
  • 华为OD机试 - 打印机队列 - 优先队列(Java 2024 E卷 200分)
  • MatrixOne 助力西安天能替换MySQL+MongoDB+ES打造一体化物联网平台
  • 正则表达式---元字符
  • 数据库Redis篇
  • 在区块链技术中,什么是权益证明(PoS)?
  • Spring Boot——日志介绍和配置
  • Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)
  • 【真题笔记】16年系统架构设计师要点总结
  • 2024 CSS保姆级教程二 - BFC详解
  • Knowledge-refined Denoising Network for Robust Recommendation
  • 轴流风机和后倾式风机的安装要求
  • 代码笔录1
  • 强网杯2024 Web WP
  • 《双指针篇》---盛最多水的容器_Java(中等但简单)
  • Linux: network: 环境:网络burst的一个原因,虚拟机感染病毒导致,外部网络设备太忙
  • idea使用Translation插件实现翻译