
摘要
在缺乏真实标注的情况下,我们能否自动将图像分组为语义上有意义的聚类?无监督图像分类仍然是计算机视觉领域的一个重要且未解决的挑战。最近的一些方法试图以端到端的方式解决这一问题。本文中,我们偏离了近期的研究方向,提出了一种两步法,其中特征学习和聚类是分离进行的。首先,利用表示学习中的自监督任务获取语义上有意义的特征。其次,我们将这些特征作为先验知识应用于一种可学习的聚类方法中。通过这种方式,我们消除了当前端到端学习方法中存在的聚类学习依赖低级特征的能力。实验评估表明,我们在分类准确性方面大幅超越了现有最先进方法,特别是在CIFAR10数据集上提高了26.6%,在CIFAR100-20数据集上提高了25.0%,在STL10数据集上提高了21.3%。此外,我们的方法首次在大规模图像分类数据集上表现出良好的性能。特别是,在ImageNet数据集上,我们在低数据量条件下无需任何真实标注的情况下超过了多种半监督学习方法,并取得了有前景的结果。代码已公开发布于https://github.com/wvangansbeke/Unsupervised-Classification。
代码仓库
wvangansbeke/Unsupervised-Classification
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| image-clustering-on-cifar-10 | SCAN (Avg) | ARI: 0.758 Accuracy: 0.876 Backbone: ResNet-18 NMI: 0.787 Train set: Train |
| image-clustering-on-cifar-10 | SCAN | ARI: 0.772 Accuracy: 0.883 Backbone: ResNet-18 NMI: 0.797 Train set: Train |
| image-clustering-on-cifar-100 | SCAN | ARI: 0.333 Accuracy: 0.507 NMI: 0.486 Train Set: Train |
| image-clustering-on-cifar-100 | SCAN (Avg) | ARI: 0.301 Accuracy: 0.459 NMI: 0.468 Train Set: Train |
| image-clustering-on-imagenet | SCAN | Accuracy: 39.9 NMI: 72.0 |
| image-clustering-on-imagenet-100 | SCAN | ACCURACY: 0.662 ARI: 0.544 NMI: 0.787 |
| image-clustering-on-imagenet-200 | SCAN | - |
| image-clustering-on-imagenet-50-1 | SCAN | ACCURACY: 0.751 ARI: 0.635 NMI: 0.805 |
| image-clustering-on-stl-10 | SCAN (Avg) | Accuracy: 0.767 Backbone: ResNet-18 NMI: 0.680 Train Split: Train |
| image-clustering-on-stl-10 | SCAN | Accuracy: 0.809 Backbone: ResNet-18 NMI: 0.698 Train Split: Train |
| semi-supervised-image-classification-on-1 | SCAN (ResNet-50|Unsupervised) | Top 1 Accuracy: 39.90% Top 5 Accuracy: 60.0% |
| unsupervised-image-classification-on-cifar-10 | SCAN | Accuracy: 88.3 |
| unsupervised-image-classification-on-cifar-20 | SCAN | Accuracy: 50.7 |
| unsupervised-image-classification-on-imagenet | SCAN (ResNet-50) | ARI: 27.5 Accuracy (%): 39.9 |
| unsupervised-image-classification-on-stl-10 | SCAN | Accuracy: 80.90 |