[ECCV2026 paper] CMCC-ReID: Cross-modality Clothing-change Person Re-identification https://arxiv.org/abs/2604.02808
Official PyTorch implementation of "Cross-modality Clothing-change Person Re-identification" (ECCV 2026).
Person re-identification (ReID) in real-world surveillance must cope with two coupled sources of appearance variation at the same time: people change clothes, and cameras operate across different modalities (e.g., visible vs. infrared). Standard ReID models entangle identity cues with clothing and modality cues, which collapses their accuracy in this cross-modality clothing-change (CMCC) setting.
This repository provides the reference implementation of our approach, which learns modality-robust, clothing-invariant identity representations by:
- Disentangling identity and clothing features with a lightweight spatial-attention branch (DBDL);
- Enforcing feature orthogonality so that the identity embedding carries as little clothing information as possible;
- Cross-modality prototype contrastive learning (PCL), which maintains per-identity, per-modality prototypes in a momentum memory bank and pulls each sample toward its cross-modality identity prototypes.
Evaluation is reported in both Visible→Infrared (V2I) and Infrared→Visible (I2V) directions using CMC and mAP.
# 1. Clone
git clone <this-repo-url> && cd PIA
# 2. Create environment
conda create -n cmccreid python=3.8 -y
conda activate cmccreid
# 3. Install dependencies
pip install torch torchvision # match your CUDA version
pip install yacs numpy pillowRequirements: a CUDA-capable GPU is recommended. The default configuration uses feature dimension 4096 and image size 384×192.
Organize the dataset as follows. The last character of each camera folder encodes the modality/camera id: 7 = visible (gallery), 3 / 6 = infrared (query).
CMCC/
├── exp/
│ ├── train_id.txt # comma-separated training identity ids on a single line
│ └── test_id.txt # comma-separated test identity ids on a single line
├── cam7/ # visible cameras (gallery)
│ └── <person_id>/*.jpg
├── cam3/ # infrared cameras (query)
│ └── <person_id>/*.jpg
└── cam6/
└── <person_id>/*.jpg
Each identity is associated with two clothing labels (one per modality/change), which are derived automatically at loading time.
Single-line launch (see script.sh):
python -u main.py \
--dataset cmcc \
--cfg configs/res50_cels_cal.yaml \
--root /path/to/CMCC \
--output ./logs \
--gpu 0python -u main.py \
--dataset cmcc \
--cfg configs/res50_cels_cal.yaml \
--root /path/to/CMCC \
--resume /path/to/best_model.pth.tar \
--eval --gpu 0Test-time augmentation flips each image horizontally and averages the two feature vectors. Ranking uses cosine similarity, and results are reported for both V2I and I2V with top-1/5/10/20 and mAP.
If you find this work useful, please cite:
@article{xu2026cmcc,
title={CMCC-ReID: Cross-Modality Clothing-Change Person Re-Identification},
author={Xu, Haoxuan and Wang, Hanzi and Niu, Guanglin},
journal={arXiv preprint arXiv:2604.02808},
year={2026}
}Our work builds upon the PRCC and SYSU-MM01 datasets. We sincerely thank the authors for these excellent contributions, and kindly ask users of this repository to cite them as well:
@article{c1,
title={Person re-identification by contour sketch under moderate clothing change},
author={Yang, Qize and Wu, Ancong and Zheng, Wei-Shi},
journal={IEEE TPAMI},
volume={43},
number={6},
pages={2029--2046},
year={2019},
publisher={IEEE}
}
@inproceedings{c18,
title={RGB-infrared cross-modality person re-identification},
author={Wu, Ancong and Zheng, Wei-Shi and Yu, Hong-Xing and Gong, Shaogang and Lai, Jianhuang},
booktitle={ICCV},
pages={5380--5389},
year={2017}
}This codebase is built on top of the person re-identification community's open-source efforts. We thank the authors of the public clothing-change and cross-modality ReID benchmarks.
Released under the terms described in LICENSE.