MendelXu / SAN

Open-vocabulary Semantic Segmentation
https://mendelxu.github.io/SAN/
MIT License
295 stars 27 forks source link

自己数据集上的训练和预测问题 #46

Closed snailsvincent closed 4 months ago

snailsvincent commented 7 months ago

非常感谢您的工作!我的数据集有3类分别用1,2,3表示再加上背景类0,我在自己数据集上遇到一些问题: 1、基于您的方法我进行了训练,在0,1,2三类上还是很有效果的,但是3的话就是0,后来发现在semantic_inference函数中,您通过mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]这个操作去除了最后一个通道导致预测的时候就少了一类。请问这是为什么?您这个是把最后一类当做背景去掉了吗? 2、我把mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]用mask_cls = F.softmax(mask_cls, dim=-1)替换,保留了所有通道,直接再进行预测,结果0,1,2的效果比之前差了很多,3这类也没啥效果,请问我改了这句话之后是否需要重新训练?但是这句话好像是在inference中才用到。对此挺疑惑的,希望您能给我一些帮助,谢谢!

MendelXu commented 7 months ago
  1. 是的,之前是把最后一类当成了背景类去掉了。
  2. 可能有些问题,计算损失的时候默认会调低最后一类(背景类)的权重,这样会导致网络倾向于将物体判别为前面三类,对于0,1,2会增加很多false positive,precision降低,对于3 recall会降低。可以试试empty weight设置成1
GOZIHUATANEJO commented 5 months ago

非常感谢您的工作!我的数据集有3类分别用1,2,3表示再加上背景类0,我在自己数据集上遇到一些问题: 1、基于您的方法我进行了训练,在0,1,2三类上还是很有效果的,但是3的话就是0,后来发现在semantic_inference函数中,您通过mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]这个操作去除了最后一个通道导致预测的时候就少了一类。请问这是为什么?您这个是把最后一类当做背景去掉了吗? 2、我把mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]用mask_cls = F.softmax(mask_cls, dim=-1)替换,保留了所有通道,直接再进行预测,结果0,1,2的效果比之前差了很多,3这类也没啥效果,请问我改了这句话之后是否需要重新训练?但是这句话好像是在inference中才用到。对此挺疑惑的,希望您能给我一些帮助,谢谢!

请问您现在这个问题得到解决了吗?我在自己数据集上进行训练也出现了这个问题

snailsvincent commented 5 months ago

解决了,把背景也当做一类就可以了。

在 2024-03-25 10:40:26,"GOZIHUATANEJO" @.***> 写道:

非常感谢您的工作!我的数据集有3类分别用1,2,3表示再加上背景类0,我在自己数据集上遇到一些问题: 1、基于您的方法我进行了训练,在0,1,2三类上还是很有效果的,但是3的话就是0,后来发现在semantic_inference函数中,您通过mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]这个操作去除了最后一个通道导致预测的时候就少了一类。请问这是为什么?您这个是把最后一类当做背景去掉了吗? 2、我把mask_cls = F.softmax(mask_cls, dim=-1)[..., :-1]用mask_cls = F.softmax(mask_cls, dim=-1)替换,保留了所有通道,直接再进行预测,结果0,1,2的效果比之前差了很多,3这类也没啥效果,请问我改了这句话之后是否需要重新训练?但是这句话好像是在inference中才用到。对此挺疑惑的,希望您能给我一些帮助,谢谢!

请问您现在这个问题得到解决了吗?我在自己数据集上进行训练也出现了这个问题

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

GOZIHUATANEJO commented 5 months ago

解决了,把背景也当做一类就可以了。

十分感谢您的回复,问题已解决