zhenghao977 / FCOS-PyTorch

A pure torch implement of FCOS 37.2AP
165 stars 41 forks source link

测试代码问题 #28

Closed yuxiaoz closed 2 years ago

yuxiaoz commented 2 years ago

在fcos.py中,第83行,测试进行前传的时候,为什么要把测试得到的类别结果+1,这一块不是很明白。 cls_classes=cls_classes+1#[batch_size,sum(_h*_w)]

yuxiaoz commented 2 years ago

照运行的demo来看,应该是训练的过程中没有加入background一类,但是VOC_Dataset或者COCO_Dataset中有这一类,那么应该是训练的时候去掉了背景类?请教一下训练时背景类是在什么地方去掉的?

yuxiaoz commented 2 years ago

好像找到问题根源了,在loss.py的第178行。 target_pos=(torch.arange(1,class_num+1,device=target_pos.device)[None,:]==target_pos).float()#sparse-->onehot 这样做,也就是说, 默认类别从1开始了,直接把类别0去掉了。那如果换成自己的数据集,又没有在第0类加背景类的话,就太坑了。最后通过index去计算的分类loss,这也解释了,为什么COCO_Dataset明明定义了81类,但是模型分80类,不会报错。这也太不明显了,建议在readme中说明一下,要不然容易让大家训练自己的数据集走冤枉路。