PaddlePaddle / PaddleSeg

Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.
https://arxiv.org/abs/2101.06175
Apache License 2.0
8.69k stars 1.68k forks source link

动态图转静态图,效果下降很明显 #1171

Closed TinyQi closed 1 year ago

TinyQi commented 3 years ago

静态图的预测结果 image

动态图的预测结果 image

TinyQi commented 3 years ago

原图是一张名片

LutaoChu commented 3 years ago

是要分割什么名片吗?是同一个模型,动态图的预测效果和转完静态图的效果不一样是吗?

TinyQi commented 3 years ago

是要分割什么名片吗?是同一个模型,动态图的预测效果和转完静态图的效果不一样是吗?

是的,同一个模型,我直接拿训练模型(应该是动态图模型吧),使用predict.py去预测,给出的可视化结果很好。然后我把这个模型导出为静态图,再使用deploy.py去预测,效果就大打折扣,基本到了用不了的程度了。

导出命令 python export.py --config /mnt/ssd1/xcq/PaddleSeg/data/2021_7_15/BusinessCardbisenet_optic_disc_512x512_1k.yml --model_path /mnt/ssd1/xcq/PaddleSeg/data/2021_7_15/best_model/model.pdparams --save_dir /mnt/ssd1/xcq/PaddleSeg/data/2021_7_15/best_export_0715/

我训练和导出明确是使用同一个文件的,下面就是配置文件,就改了数据相关的参数值

batch_size: 24 iters: 30000

train_dataset: type: Dataset dataset_root: data/2021_7_15 train_path: data/2021_7_15/train_list.txt num_classes: 2 transforms:

val_dataset: type: Dataset dataset_root: data/2021_7_15 val_path: data/2021_7_15/val_list.txt num_classes: 2 transforms:

optimizer: type: sgd momentum: 0.9 weight_decay: 4.0e-5

lr_scheduler: type: PolynomialDecay learning_rate: 0.01 end_lr: 0 power: 0.9

loss: types:

model: type: BiSeNetV2 pretrained: Null

LutaoChu commented 3 years ago

你好,没有deploy.py。你说的是deploy/python/infer.py吗?

另外需要在yml中补充设置

export:
  transforms:
    - type: Resize
      target_size: [512, 512]
    - type: Normalize
TinyQi commented 3 years ago

你好,没有deploy.py。你说的是deploy/python/infer.py吗?

另外需要在yml中补充设置

export:
  transforms:
    - type: Resize
      target_size: [512, 512]
    - type: Normalize

您说的这个是在导出后的模型的yml文件里添加这段配置吗?

LutaoChu commented 3 years ago

不是导出后的,是导出前的。这样导出后的yml中transforms就会改为指定的transforms

TinyQi commented 3 years ago

不是导出后的,是导出前的。这样导出后的yml中transforms就会改为指定的transforms

你好,谢谢你的回复,我测试了,确实可行,问题的原因应该就是我训练的时候规定了输入的尺寸512,512,然后导出模型的时候没有相应的预处理参数也导出到配置文件里,导致最终直接使用原图尺寸预测了,最终精度下降。目前我不在训练的配置文件里加export的参数,我直接添加到导出的配置文件里也能生效.

ps:期待你们的更新嗷

Deploy: model: model.pdmodel params: model.pdiparams transforms:

LutaoChu commented 3 years ago

不客气~ 是的,直接添加到导出配置文件也是一样的效果。 ps:你说的更新是指文档吗

TinyQi commented 3 years ago

不客气~ 是的,直接添加到导出配置文件也是一样的效果。 ps:你说的更新是指文档吗

额,我自己瞎想想是认为这个训练时期的部分预处理,如果需要在预测时期同步该参数的,应该在导出时候自动带上,如果需要手动添加,那相应的文档应该也要提示一下,哈哈

LutaoChu commented 3 years ago

嗯嗯,导出的时候默认选择评估的预处理,也支持自定义export transform。谢谢你的建议哈

zhaotun commented 3 years ago

不是导出后的,是导出前的。这样导出后的yml中transforms就会改为指定的transforms

你好,谢谢你的回复,我测试了,确实可行,问题的原因应该就是我训练的时候规定了输入的尺寸512,512,然后导出模型的时候没有相应的预处理参数也导出到配置文件里,导致最终直接使用原图尺寸预测了,最终精度下降。目前我不在训练的配置文件里加export的参数,我直接添加到导出的配置文件里也能生效.

ps:期待你们的更新嗷

Deploy: model: model.pdmodel params: model.pdiparams transforms:

  • type: Resize target_size: [512, 512]
  • type: Normalize

在导出的yaml中加了resize后,输出的图片好像都会变成512*512,那怎么跟原图对应起来,原图尺寸可能是任意尺寸的

zhaotun commented 3 years ago

你好,没有deploy.py。你说的是deploy/python/infer.py吗?

另外需要在yml中补充设置

export:
  transforms:
    - type: Resize
      target_size: [512, 512]
    - type: Normalize

请问 train_dataset、val_dataset、export 三部分的 transforms 要保持一致吗,如果在 export 中设置了 target_size:[512,512]的话,是不是最后预测的结果图的尺寸会统一变成512*512,但这有可能与原图不一致,因为原图的尺寸是任意的,这样一来怎么将512大小的结果图片中的标签和原图对应起来呢,如果想让输出的结果图片尺寸始终和原图保持一致,应该怎么设置呢,谢谢!

LutaoChu commented 3 years ago

train_dataset、val_dataset、export 三部分的 transforms 不一定要保持一致。 如果想让输出的结果图片尺寸始终和原图保持一致,就不需要对图片做修改,不用设置transforms了。transforms是对图片进行变换才要用到

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. Thank you for your contributions.