pytorch-YOLOv4
pytorch-YOLOv4 copied to clipboard
have a problem when evaluate
Epoch 1/200: 0%| | 0/660 [00:00<?, ?img/s]/home/ht/anaconda3/envs/dl/lib/python3.7/site-packages/torch/nn/_reduction.py:43: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead. warnings.warn(warning.format(ret)) Epoch 1/200: 100%|█| 660/660 [02:34<00:00, 4.38imin function convert_to_coco_api... creating index... index created!
when run the function evaluate(model, data_loader, cfg, device, logger=None, **kwargs) in train.py, my code stop at this status above.
how can i fix it?
Your message doesn't show any errors, you should post a detailed error message
程序停止在了这里,没有报错,但是就一直卡在这里无法接着执行。
在通过evaluate()进行评估的时候,根据output创建coco_dt的时候,没有对结果进行NMS,因此会将所有结果跟coco_gt进行评估。导致COCOeval在进行evaluate的时候产生大量运算。举个例子,如果输入input的尺寸大小为1×3×608×608,输出outputs中boxes的大小为1×22743×1×4,一张图片要22743次计算,其中大部分box的置信度要低于阈值的,可能只有一两个box是我们实际想要的。因此,如果你设置的input尺寸偏大,并且你的验证集数量较多的时候,会进行长时间的运算。 只是个人理解和推测,有什么不对的可以指正。
非常感谢你的回复,另外我用很小的数据量测试时(例如少于200张),opencv会报错,数据量增加后(大于600张)就没有问题
cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-nzyrw1vf/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
这个算法对训练集和测试集有最小数据量要求吗?
在train.py的418行模型加载的权重始终是cfg.pretrained,而不是最新训练的结果,此处代码是否有问题呢?
eval_model = Yolov4(cfg.pretrained, n_classes=cfg.classes, inference=True)
例如mAP始终为0的问题。
非常感谢你的回复,另外我用很小的数据量测试时(例如,至少200张),opencv会报错,数据量增加后(大于600张)就没有问题
cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-nzyrw1vf/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
这个算法对训练集和测试集有最小数据量要求吗?
你的这个错误看起来可能是图片或者路径的问题,opencv的imread如果路径错误是不会报错的只会返回一个None,建议使用dataloader加载一下测试集,检查是否有空数据。
在train.py的418行模型加载的权重始终是cfg.pretrained,而不是最新训练的结果,此处代码是否有问题呢?
eval_model = Yolov4(cfg.pretrained, n_classes=cfg.classes, inference=True)
例如mAP始终为0的问题。
这个加载的只是模型结构,下边的eval_model.load_state_dict(model.state_dict())是将正在训练中的model的参数变量加载进来,所以这段代码没问题。至于AP为0的问题,猜测可能也是因为NMS的问题,但是没有验证只是个猜测。
在通过evaluate()进行评估的时候,根据output创建coco_dt的时候,没有对结果进行NMS,因此会将所有结果跟coco_gt进行评估。导致COCOeval在进行evaluate的时候产生大量运算。举个例子,如果输入input的尺寸大小为1×3×608×608,输出outputs中boxes的大小为1×22743×1×4,一张图片要22743次计算,其中大部分box的置信度要低于阈值的,可能只有一两个box是我们实际想要的。因此,如果你设置的input尺寸偏大,并且你的验证集数量较多的时候,会进行长时间的运算。 只是个人理解和推测,有什么不对的可以指正。
你好,我想问一下这种情况怎么解决呢?在前面加一个NMS吗还是?
程序停止在了这里,没有报错,但是就一直卡在这里无法接着执行。
请问你解决了吗?我也碰到了这样的问题。
程序停止在了这里,没有报错,但是就一直卡在这里无法接着执行。
请问你解决了吗?我也碰到了这样的问题。
解决了同@onmywei所说验证的时后会花费较长时间,我在训练的时候关闭了验证的功能。
程序停止在了这里,没有报错,但是就一直卡在这里无法接着执行。
请问你解决了吗?我也碰到了这样的问题。
解决了同@onmywei所说验证的时后会花费较长时间,我在训练的时候关闭了验证的功能。
好的,谢谢你。不过我的看起来没有在计算,虽然显存还在占用,但gpu没有运算。
在train.py的418行模型加载的权重始终是cfg.pretrained,而不是最新训练的结果,此处代码是否有问题呢?
eval_model = Yolov4(cfg.pretrained, n_classes=cfg.classes, inference=True)
例如mAP始终为0的问题。
我在训练的过程中map一直是0,不知道啥问题啊
Commenting out the eval part of train.py solves the training error, is this correct?
431 ### if torch.cuda.device_count() > 1: 432 ### eval_model.load_state_dict(model.module.state_dict()) 433 ### else: 434 ### eval_model.load_state_dict(model.state_dict()) 435 436 ### eval_model.to(device) 437 ### evaluator = evaluate(eval_model, val_loader, config, device) 438 ### del eval_model 439 440 ### stats = evaluator.coco_eval['bbox'].stats 441 ### writer.add_scalar('train/AP', stats[0], global_step) 442 ### writer.add_scalar('train/AP50', stats[1], global_step) 443 ### writer.add_scalar('train/AP75', stats[2], global_step) 444 ### writer.add_scalar('train/AP_small', stats[3], global_step) 445 ### writer.add_scalar('train/AP_medium', stats[4], global_step) 446 ### writer.add_scalar('train/AP_large', stats[5], global_step) 447 ### writer.add_scalar('train/AR1', stats[6], global_step) 448 ### writer.add_scalar('train/AR10', stats[7], global_step) 449 ### writer.add_scalar('train/AR100', stats[8], global_step) 450 ### writer.add_scalar('train/AR_small', stats[9], global_step) 451 ### writer.add_scalar('train/AR_medium', stats[10], global_step) 452 ### writer.add_scalar('train/AR_large', stats[11], global_step)
I have the same problem too!
#247 Here's the solution. Thank you.
程序停止在了这里,没有报错,但是就一直卡在这里无法接着执行。
请问你解决了吗?我也碰到了这样的问题。
解决了同@onmywei所说验证的时后会花费较长时间,我在训练的时候关闭了验证的功能。
好的,谢谢你。不过我的看起来没有在计算,虽然显存还在占用,但gpu没有运算。
请问这个问题您的解决方案是什么,我也遇见了