Awesome
Inferring the Class Conditional Response Map for Weakly Supervised Semantic Segmentation
This repository contains the code for inferring better class activation maps from a classifier without re-training. With a trained classification networks, this method pushs the class activation maps to cover more object areas without any network training, which may facilitate down-stream weakly supervised semantic segmentation and object localization. For example:
<img width="591" alt="image" src="https://user-images.githubusercontent.com/13931546/141668663-0979490e-9ec9-45e2-bef6-56f6cbdc408d.png">If you use this code in an academic context, please cite the following references:
@inproceedings{sun2022inferring,
title={Inferring the Class Conditional Response Map for Weakly Supervised Semantic Segmentation},
author={Sun, Weixuan and Zhang, Jing and Barnes, Nick},
booktitle={Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision},
pages={2878--2887},
year={2022}
}
Enviroment:
install following requirements.txt
Instructions:
First, run the baseline cam inference to obtain the mass center of every activation regions, then split the image into patches according to the mass center: classification weight for Pascal voc can be obtained from:psa or https://1drv.ms/u/s!Ak3sXyXVg7818CLKis4D2CXKXV6D?e=0k9HWo
python split_img.py --weights [Your classification weights path] --voc12_root [Pascal VOC root path] --split_path [path to save the splitted image] --heatmap [If you want to visualize the baseline CAM]
We provide the splitted images for PASCAL VOC dataset(so step one could be skipped): https://1drv.ms/u/s!Ak3sXyXVg7818CSGY3V0Th4hZiak?e=bpaqkw
Second, run the inference code to generate refined class activation maps:
python infer_cam.py --weights [Your classification weights path] --split_path [The path of the splitted images] --out_cam [Path to save the output CAM] --heatmap [If you want to visualize the refined CAM]
You can replace this network with any other pre-trained networks and obtain corresponding class activation maps without re-training the network.
Pseudo label and semantic segmentation training
Refinement: We adopt the random walk method via affinity to refine the map as pixel-wise pseudo ground truths for semantic segmentation. Please refer to psa
Thanks for the code provided by psa
Note: This work is accepted to WACV 2022, and was originally proposed in November/2020.
Reference:
- Jiwoon Ahn and Suha Kwak. Learning pixel-level semantic affinity with image-level supervision for weakly supervised semantic segmentation. CVPR, 2018.