Official PyTorch Implementation of SCPNet, from the following paper:
Exploring Structured Semantic Prior for Multi Label Recognition with Incomplete Labels. CVPR 2023.
Zixuan Ding*, Ao Wang*, Hui Chen†, Qiang Zhang, Pengzhang Liu, Yongjun Bao, Weipeng Yan, Jungong Han,
Xidian University, Tsinghua University, JD.com
Abstract
Multi-label recognition (MLR) with incomplete labels is very challenging. Recent works strive to explore the imageto-label correspondence in the vision-language model, i.e., CLIP, to compensate for insufficient annotations. In spite of promising performance, they generally overlook the valuable prior about the label-to-label correspondence. In this paper, we advocate remedying the deficiency of label supervision for the MLR with incomplete labels by deriving a structured semantic prior about the label-to-label correspondence via a semantic prior prompter. We then present a novel Semantic Correspondence Prompt Network (SCPNet), which can thoroughly explore the structured semantic prior. A Prior-Enhanced Self-Supervised Learning method is further introduced to enhance the use of the prior. Comprehensive experiments and analyses on several widely used benchmark datasets show that our method significantly outperforms existing methods on all datasets, well demonstrating the effectiveness and the superiority of our method.
This repository is built upon the code base of ASL and SPLC, thanks very much!
Dataset | mAP | Ckpt | Log |
---|---|---|---|
COCO | 76.4 | scpnet+coco.ckpt | scpnet+coco.txt |
VOC | 91.2 | scpnet+voc.ckpt | scpnet+voc.txt |
NUSWIDE | 62.0 | scpnet+nuswide.ckpt | scpnet+nuswide.txt |
CUB | 25.7 | scpnet+cub.ckpt | scpnet+cub.txt |
python train.py -c configs/scpnet+coco.yaml
python train.py -c configs/scpnet+voc.yaml
python train.py -c configs/scpnet+nuswide.yaml
python train.py -c configs/scpnet+cub.yaml
Note: Please place the pretrained checkpoint to checkpoints/scpnet+coco/round1/model-highest.ckpt
python train.py -c configs/scpnet+coco.yaml -t -r 1
python train.py -c configs/scpnet+voc.yaml -t -r 1
python train.py -c configs/scpnet+nuswide.yaml -t -r 1
python train.py -c configs/scpnet+cub.yaml -t -r 1
@inproceedings{ding2023exploring,
title={Exploring Structured Semantic Prior for Multi Label Recognition with Incomplete Labels},
author={Ding, Zixuan and Wang, Ao and Chen, Hui and Zhang, Qiang and Liu, Pengzhang and Bao, Yongjun and Yan, Weipeng and Han, Jungong},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={3398--3407},
year={2023}
}