meituan / YOLOv6

YOLOv6: a single-stage object detection framework dedicated to industrial applications.
GNU General Public License v3.0
5.72k stars 1.03k forks source link

最新0.2版本,不能 --resume last_ckpt.pt,大家有更好的解办法没啊? #450

Closed Wisdom2wisdom closed 2 years ago

Wisdom2wisdom commented 2 years ago

一直出现如下报错①: TypeError: 'NoneType' object is not subscriptable 利用yolov6m.py重新开始训练出现以下问题: RuntimeError: CUDA error: device-side assert triggered

请问大家都知道如何解决吗?谢谢

mtjhl commented 2 years ago

@Wisdom2wisdom 这个 last_ckpt.pt 是您正常训练完之后保存的模型吗? 如果是这样的话,这个 checkpoint 我们会删除 optimizer 等信息,就不能 resume 了。除非了中间过程中断训练,中间的模型会保存各种优化器参数。 第二个错误,您的启动命令是什么? 是不是训练命令忘了加 --device 0,1,2,3 这个参数?

Wisdom2wisdom commented 2 years ago

@Wisdom2wisdom 这个 last_ckpt.pt 是您正常训练完之后保存的模型吗? 如果是这样的话,这个 checkpoint 我们会删除 optimizer 等信息,就不能 resume 了。除非了中间过程中断训练,中间的模型会保存各种优化器参数。 第二个错误,您的启动命令是什么? 是不是训练命令忘了加 --device 0,1,2,3 这个参数?

last_ckpt.pt是中间过程中断的信息。一直报这错误。之后我尝试如下判断 import torch ckpt = torch.load(r'E:\executable_code\YOLO\yoloV62022\YOLOv6-main\tools\result\train\exp1\weights\last_ckpt.pt) print(ckpt['optimizer']) 打印结果:None

第二个问题,利用的 --device = '0',出现的错误。

mtjhl commented 2 years ago

@Wisdom2wisdom 第二个问题,麻烦请发一下完整的训练命令吧。

Wisdom2wisdom commented 2 years ago

@Wisdom2wisdom 第二个问题,麻烦请发一下完整的训练命令吧。

命令:python tools/train.py --data-path dataset1/mydata.yaml --conf-file configs/yolov6m.py --batch-size 6 --device 0

Training completed in 0.319 hours. Traceback (most recent call last): File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\core\engine.py", line 99, in train self.train_in_loop(self.epoch) File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\core\engine.py", line 112, in train_in_loop self.train_in_steps(epoch_num) File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\core\engine.py", line 141, in train_in_steps total_loss, loss_items = self.compute_loss(preds, targets, epoch_num) File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\models\loss.py", line 107, in call loss_iou, loss_dfl = self.bbox_loss(pred_distri, pred_bboxes, anchor_points_s, target_bboxes, File "C:\D_installation_packet\Anaconda\installion_package\envs\yolov6\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl result = self.forward(*input, **kwargs) File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\models\loss.py", line 162, in forward if num_pos > 0: RuntimeError: CUDA error: device-side assert triggered

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "tools/train.py", line 127, in main(args) File "tools/train.py", line 117, in main trainer.train() File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\core\engine.py", line 105, in train self.train_after_loop() File "E:\executable_code\YOLO\yoloV62022\YOLOv6-main\yolov6\core\engine.py", line 291, in train_after_loop torch.cuda.empty_cache() File "C:\D_installation_packet\Anaconda\installion_package\envs\yolov6\lib\site-packages\torch\cuda\memory.py", line 114, in empty_cache torch._C._cuda_emptyCache() RuntimeError: CUDA error: device-side assert triggered

mtjhl commented 2 years ago

您可以尝试一下 coco 数据训练,是否还报这个错误。检查试一下数据标签是否正确。

Wisdom2wisdom commented 2 years ago

您可以尝试一下 coco 数据训练,是否还报这个错误。检查试一下数据标签是否正确。

你好,自定义的数据集应该没问题,①按照yolo格式制作的,②自定义数据集在yolov5、yolox、yolov7上已经成功,所以想想理论不应该会出现这个问题呀,望指教。

QIANXUNZDL123 commented 2 years ago

一直出现如下报错①: TypeError: 'NoneType' object is not subscriptable 利用yolov6m.py重新开始训练出现以下问题: RuntimeError: CUDA error: device-side assert triggered

请问大家都知道如何解决吗?谢谢

用v5或者v7不好吗,,,yolov6目前项目还是存在诸多问题,,光数据集加载都是问题多多。一部yolov6,半步血泪史,不是在出问题就是在出问题的路上

mtjhl commented 2 years ago

您可以尝试一下 coco 数据训练,是否还报这个错误。检查试一下数据标签是否正确。

你好,自定义的数据集应该没问题,①按照yolo格式制作的,②自定义数据集在yolov5、yolox、yolov7上已经成功,所以想想理论不应该会出现这个问题呀,望指教。

请问您方便发32张图片和标签吗,我们来复现一下。邮箱 jianghongliang02@meituan.com 另外,关于 resume 的问题,我这里复现不了这个错误呀,中间中断的保存的模型,是含有 optimizer 参数的。

Wisdom2wisdom commented 2 years ago

您可以尝试一下 coco 数据训练,是否还报这个错误。检查试一下数据标签是否正确。

你好,自定义的数据集应该没问题,①按照yolo格式制作的,②自定义数据集在yolov5、yolox、yolov7上已经成功,所以想想理论不应该会出现这个问题呀,望指教。

请问您方便发32张图片和标签吗,我们来复现一下。邮箱 jianghongliang02@meituan.com 另外,关于 resume 的问题,我这里复现不了这个错误呀,中间中断的保存的模型,是含有 optimizer 参数的。

你好, 已经发送,请注意查收,我这边从头开始复现利用的是yolov6m.py出现的错误,另外我尝试了利用预训练权重的yolov6m.py是完全没有问题的。

其次resume问题,属于模型突然报错中断导致,最后optimizer没有参数。 望指导,谢谢

Chilicyy commented 2 years ago

hi, @Wisdom2wisdom 如果你想用m网络训练自定义数据集,我们建议采用预训练权重finetune的方式进行,同时超参配置文件采用新上传的yolov6m_finetune.py 训练会更稳定 https://github.com/meituan/YOLOv6/commit/4c947b98c3e247c4502a970f000b962ff10bc308 其次关于resume问题,之前没有考虑到这种情况,目前已修复https://github.com/meituan/YOLOv6/commit/1f74cedd1c289bd35efceff6194c49c4b76847e4 。后续如有问题,欢迎反馈,谢谢。