Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

成功进行Mask-RT-DETR-S模型训练后,模型评估出现报错 #3544

Open
4 tasks
SXleader opened this issue Mar 6, 2025 · 4 comments
Open
4 tasks
Assignees

Comments

@SXleader
Copy link

SXleader commented Mar 6, 2025

Checklist:

描述问题

复现

  1. 您是否已经正常运行我们提供的教程
  2. 您是否在教程的基础上修改代码内容?还请您提供运行的代码
  3. 您使用的数据集是?
    自有数据集,coco格式
  4. 请提供您出现的报错信息及相关log
    (paddle) PS E:\study\PaddleX> python main.py -c E:/study/PaddleX/paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-S.yaml -o Global.mode=evaluate -o Global.dataset_dir=F:/study_datasets/Point1_dataset/datasets_coco/dataset_dir
    ['D:\anaconda3\envs\paddle\python.exe', 'tools/eval.py', '--config', 'C:\Users\admin\.paddlex\tmp4n7qt6z7\instancesegmodel_Mask-RT-DETR-S.yml']
    ��Ϣ: ���ṩ��ģʽ�޷��ҵ��ļ���
    [03/06 21:02:32] ppdet.utils.checkpoint INFO: Skipping import of the encryption module.
    Error when construct ImageFolder instance from yaml config
    Traceback (most recent call last):
    File "tools/eval.py", line 215, in
    main()
    File "tools/eval.py", line 164, in main
    cfg = load_config(FLAGS.config)
    File "E:\study\PaddleX\paddlex\repo_manager\repos\PaddleDetection\ppdet\core\workspace.py", line 124, in load_config
    cfg = _load_config_with_base(file_path)
    File "E:\study\PaddleX\paddlex\repo_manager\repos\PaddleDetection\ppdet\core\workspace.py", line 88, in load_config_with_base
    file_cfg = yaml.load(f, Loader=yaml.Loader)
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml_init
    .py", line 81, in load
    return loader.get_single_data()
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 51, in get_single_data
    return self.construct_document(node)
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 60, in construct_document
    for dummy in generator:
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 413, in construct_yaml_map
    value = self.construct_mapping(node)
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 218, in construct_mapping
    return super().construct_mapping(node, deep=deep)
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 143, in construct_mapping
    value = self.construct_object(value_node, deep=deep)
    File "D:\anaconda3\envs\paddle\lib\site-packages\yaml\constructor.py", line 100, in construct_object
    data = constructor(self, node)
    File "E:\study\PaddleX\paddlex\repo_manager\repos\PaddleDetection\ppdet\core\config\yaml_helpers.py", line 45, in python_constructor
    raise ex
    File "E:\study\PaddleX\paddlex\repo_manager\repos\PaddleDetection\ppdet\core\config\yaml_helpers.py", line 41, in python_constructor
    return cls(**kwargs)
    TypeError: new() got multiple values for argument 'cls'
    Traceback (most recent call last):
    File "E:\study\PaddleX\paddlex\utils\result_saver.py", line 29, in wrap
    result = func(self, *args, **kwargs)
    File "E:\study\PaddleX\paddlex\engine.py", line 44, in run
    return self._model.evaluate()
    File "E:\study\PaddleX\paddlex\model.py", line 105, in evaluate
    return evaluator.evaluate()
    File "E:\study\PaddleX\paddlex\modules\base\evaluator.py", line 118, in evaluate
    evaluate_result = self.pdx_model.evaluate(**self.get_eval_kwargs())
    File "E:\study\PaddleX\paddlex\repo_apis\PaddleDetection_api\instance_seg\model.py", line 190, in evaluate
    cp = self.runner.evaluate(config_path, cli_args, device, ips)
    File "E:\study\PaddleX\paddlex\repo_apis\PaddleDetection_api\instance_seg\runner.py", line 82, in evaluate
    cp = self.run_cmd(
    File "E:\study\PaddleX\paddlex\repo_apis\base\runner.py", line 356, in run_cmd
    raise CalledProcessError(
    paddlex.utils.errors.others.CalledProcessError: Command ['D:\anaconda3\envs\paddle\python.exe', 'tools/eval.py', '--config', 'C:\Users\admin\.paddlex\tmp4n7qt6z7\instancesegmodel_Mask-RT-DETR-S.yml'] returned non-zero exit status 1.

环境

  1. 请提供您使用的PaddlePaddle和PaddleX的版本号
    3.0.0b2 3.0.0rc0
  2. 请提供您使用的操作系统信息,如Linux/Windows/MacOS
    Windows
  3. 请问您使用的Python版本是?
    3.8
  4. 请问您使用的CUDA/cuDNN的版本号是?
    11.8 8.9.2.26
@SXleader
Copy link
Author

SXleader commented Mar 6, 2025

把paddlepaddle版本修改为3.0.0rc1还是有报错

@SXleader SXleader changed the title 成功进行Mask-RT-DETR-S模型训练后,模型推理出现报错 成功进行Mask-RT-DETR-S模型训练后,模型评估出现报错 Mar 6, 2025
@Bobholamovic
Copy link
Member

请问有修改过配置文件吗

@SXleader
Copy link
Author

SXleader commented Mar 7, 2025

请问有修改过配置文件吗

您好,修改配置文件也只是修改一下路径,没有在其他地方进行修改
Global:
model: Mask-RT-DETR-S
mode: check_dataset # check_dataset/train/evaluate/predict
dataset_dir: "F:/study_datasets/Point1_dataset/datasets_coco/dataset_dir"
device: gpu:0
output: "output/Mask-RT-DETR-S"

CheckDataset:
convert:
enable: False
src_dataset_type: null
split:
enable: False
train_percent: null
val_percent: null

Train:
num_classes: 1
epochs_iters: 40
batch_size: 1
learning_rate: 0.00005
pretrain_weight_path: E:/study/PaddleX/Mask-RT-DETR-S_pretrained.pdparams
warmup_steps: 100
resume_path: null
log_interval: 10
eval_interval: 1

Evaluate:
weight_path: "output/Mask-RT-DETR-S/best_model/best_model.pdparams"
log_interval: 10

Export:
weight_path: https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/Mask-RT-DETR-S_pretrained.pdparams

Predict:
batch_size: 1
model_dir: "output/best_model/inference"
input: "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_instance_segmentation_004.png"
kernel_option:
run_mode: paddle
这是我现在的配置文件

@BluebirdStory
Copy link
Collaborator

BluebirdStory commented Mar 13, 2025

看起来是ppdet相关的config出了问题。传入的config在python new的时候指定了多个类。
这个config的位置在:paddlex/repo_apis/PaddleDetection_api/configs/Mask-RT-DETR-S.yaml。但是我检查了官方的config,并没有问题。
需要你配合debug,你在这个位置:
Image
打个断点,看看kwargs到低是什么?然后我们再看下一步计划。

如果是子进程调用,断点可能无效,如果是这种情况的下,你直接把kwargs打印出来。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants