PaddlePaddle / PaddleClas

A treasure chest for visual classification and recognition powered by PaddlePaddle
Apache License 2.0
5.41k stars 1.16k forks source link

如何使用一个模型,分类多个任务呢,我目前使用PPLCNet_x1_0,分类四个方向,我除了想要分开四个方向,我还想分类,是类型的图片,我想要有两个输出头,第一个输出口输出4,代表4个方向,第二个输出口位图片类型,例如10中类型,我该怎么做呢 #2909

Open God-song opened 1 year ago

God-song commented 1 year ago

欢迎您使用PaddleClas并反馈相关问题,非常感谢您对PaddleClas的贡献! 提出issue时,辛苦您提供以下信息,方便我们快速定位问题并及时有效地解决您的问题:

  1. PaddleClas版本以及PaddlePaddle版本:请您提供您使用的版本号或分支信息,如PaddleClas release/2.2和PaddlePaddle 2.1.0
  2. 涉及的其他产品使用的版本号:如您在使用PaddleClas的同时还在使用其他产品,如PaddleServing、PaddleInference等,请您提供其版本号
  3. 训练环境信息: a. 具体操作系统,如Linux/Windows/MacOS b. Python版本号,如Python3.6/7/8 c. CUDA/cuDNN版本, 如CUDA10.2/cuDNN 7.6.5等
  4. 完整的代码(相比于repo中代码,有改动的地方)、详细的错误信息及相关log 如何使用一个模型,分类多个任务呢,我目前使用PPLCNet_x1_0,分类四个方向,我除了想要分开四个方向,我还想分类,是类型的图片,我想要有两个输出头,第一个输出口输出4,代表4个方向,第二个输出口位图片类型,例如10中类型,我该怎么做呢
God-song commented 1 year ago

如何使用一个模型,分类多个任务呢,我目前使用PPLCNet_x1_0,分类四个方向,我除了想要分开四个方向,我还想分类,是类型的图片,我想要有两个输出头,第一个输出口输出4,代表4个方向,第二个输出口位图片类型,例如10中类型,我该怎么做呢

TingquanGao commented 1 year ago

最简单的做法,就是把两个任务合并,改成4*10=40分类。 比较好的做法,就是需要改一下模型组网代码,将最后的一个fc,https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/ppcls/arch/backbone/legendary_models/pp_lcnet.py#L303 ,改成两个fc,分别输出4和10类,两个fc的结果可以concat到一起再return,然后loss需要重写,dataset也需要重写,支持多个label。

God-song commented 1 year ago

最简单的做法,就是把两个任务合并,改成4*10=40分类。 比较好的做法,就是需要改一下模型组网代码,将最后的一个fc, https: //github.com/PaddlePaddle /PaddleClas/blob/release/2.5/ppcls/arch/backbone/legendary_models/pp_lcnet.py#L303,改成两个fc,分别输出4和10类,两个fc的结果可以concat到一起再return,然后loss需要重写,数据集也需要重写,支持多个标签。 paddleclas不支持多任务吗

TingquanGao commented 1 year ago

目前不支持多任务。