PaddleClas icon indicating copy to clipboard operation
PaddleClas copied to clipboard

图像识别class_num设置

Open lazyn1997 opened this issue 2 years ago • 4 comments

我使用ResNet50_ReID.yaml配置文件训练图像识别模型,训练数据总共有1990个类,按照[CUB_200_2011数据集划分方式随机将1990个类划分为1790(train_list)+200(test_list)的组合 image 那么我配置文件中的class_num应该如何设置,我设置成1990会报下面的错误 image 这个错误的原因是什么呢,难道计算label时是从0开始吗?

lazyn1997 avatar Mar 10 '22 15:03 lazyn1997

class_num要+1,默认类别0是保留的背景类别。

weisy11 avatar Mar 16 '22 07:03 weisy11

  1. 那这个class_num是1790(train_list)+200(test_list)的类别数1990+1,还是1790(train_list)的类别数+1呢,
  2. 还有这个数量如果设置的比类别数+1大会有影响吗,比如,类别数只有1,那class_num应该设置成2,假如我设置成10可以吗,因为我训练的时候会随机划分(train_list)+(test_list),这样的话类别号就不是连续的,如下面的文件 image

因为类别号不是连续的,数据读取的时候并不会做一个下标映射,所以我实际上只有7个类别,但是如果class_num设置为8还是会报索引超出的错误,还有实际数据类别号就不是连续的数据更会出现这样的错误,因此class_num只能设置成≥最大类别号才可以避免这样的错误,但实际类别数并没有那么多,所以后期在进行数据读取时可不可以做一个下标映射以此适用于不连续类别的数据。

lazyn1997 avatar Mar 21 '22 02:03 lazyn1997

请问一下我上述的两个问题可以解答一下吗

lazyn1997 avatar Mar 28 '22 12:03 lazyn1997

如果你的train_list里的1790类别包含test_list里的200类别,则就是1790+1。

thomas-yanxin avatar May 18 '22 13:05 thomas-yanxin