Haochen-Wang409 / U2PL

[CVPR'22] Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
Apache License 2.0
426 stars 59 forks source link

如何绘制t-SNE可视化图 #148

Closed wade0604 closed 1 year ago

wade0604 commented 1 year ago

您好,请问您是否能够提供论文中的t-SNE的可视化代码,我在我的数据集上使用了U2PL,但是效果和全监督的性能相比只提升了一点,因此我尝试用t-SNE可视化全监督与U2PL的特征(正如您论文中提到的),理论上来说U2PL的特征各个类别之间应该更加分散,决策边界会更加清晰,但是我绘制出来的U2PL可视化特征图与全监督的并没有明显的差别。 下面是我的t-SNE绘制伪代码,请您帮我看下是否有问题 from sklearn.manifold import TSNE from einops import rearrange tsne =TSEN(n_components=2) pred,rep = model(test_image) pred = F.interpolate(pred,size=test_label.shape[1:],mode='bilinear‘) features =rearrange(pred,'b c h w -> b (h w) c',b=1,h=pred.shape[2],w=pred.shape[3],c=pred.shape[1]).squeeze() tsne_results = tsne.fit_transform(features.cpu().numpy()) plot_tsne(tsne_results ,y.view(-1).cpu().numpy())

Haochen-Wang409 commented 1 year ago

可视化的应当是 rep 的特征,而非 pred 的特征。pred 都已经是每个类别的 logits 了,本身维度就很低 (例如 VOC 数据集 21 类,则 pred 就是 21 维),不太适合 TSNE 降维。

我们论文中对比的是 U2PL 的 rep 的特征和全监督模型的 encoder 输出的特征。

wade0604 commented 1 year ago

@Haochen-Wang409 好的非常感谢您提供的信息,还有一个问题请问您使用的是sklearn里面的t-SNE模型吗

Haochen-Wang409 commented 1 year ago

是的