Commit d6c2d6b3 authored by Yuxin Wu's avatar Yuxin Wu

add CAM

parent 38d26977
...@@ -12,8 +12,8 @@ See some [examples](examples) to learn about the framework: ...@@ -12,8 +12,8 @@ See some [examples](examples) to learn about the framework:
+ [Generative Adversarial Network(GAN) variants](examples/GAN), including DCGAN, InfoGAN, Conditional GAN, WGAN, BEGAN, DiscoGAN, Image to Image, CycleGAN. + [Generative Adversarial Network(GAN) variants](examples/GAN), including DCGAN, InfoGAN, Conditional GAN, WGAN, BEGAN, DiscoGAN, Image to Image, CycleGAN.
+ [Fully-convolutional Network for Holistically-Nested Edge Detection(HED)](examples/HED) + [Fully-convolutional Network for Holistically-Nested Edge Detection(HED)](examples/HED)
+ [Spatial Transformer Networks on MNIST addition](examples/SpatialTransformer) + [Spatial Transformer Networks on MNIST addition](examples/SpatialTransformer)
+ [Visualize Saliency Maps by Guided ReLU](examples/Saliency) + [Visualize CNN saliency maps](examples/Saliency)
+ [Similarity Learning on MNIST](examples/SimilarityLearning) + [Similarity learning on MNIST](examples/SimilarityLearning)
### Reinforcement Learning: ### Reinforcement Learning:
+ [Deep Q-Network(DQN) variants on Atari games](examples/DeepQNetwork), including DQN, DoubleDQN, DuelingDQN. + [Deep Q-Network(DQN) variants on Atari games](examples/DeepQNetwork), including DQN, DoubleDQN, DuelingDQN.
......
...@@ -17,8 +17,8 @@ Training examples with __reproducible__ and meaningful performance. ...@@ -17,8 +17,8 @@ Training examples with __reproducible__ and meaningful performance.
+ [InceptionV3 with 74% accuracy (similar to the official code)](Inception/inceptionv3.py) + [InceptionV3 with 74% accuracy (similar to the official code)](Inception/inceptionv3.py)
+ [Fully-convolutional Network for Holistically-Nested Edge Detection(HED)](HED) + [Fully-convolutional Network for Holistically-Nested Edge Detection(HED)](HED)
+ [Spatial Transformer Networks on MNIST addition](SpatialTransformer) + [Spatial Transformer Networks on MNIST addition](SpatialTransformer)
+ [Visualize Saliency Maps by Guided ReLU](Saliency) + [Visualize CNN saliency maps](Saliency)
+ [Similarity Learning on MNIST](SimilarityLearning) + [Similarity learning on MNIST](SimilarityLearning)
+ Load a pre-trained [AlexNet](load-alexnet.py) or [VGG16](load-vgg16.py) model. + Load a pre-trained [AlexNet](load-alexnet.py) or [VGG16](load-vgg16.py) model.
+ Load a pre-trained [Convolutional Pose Machines](ConvolutionalPoseMachines/). + Load a pre-trained [Convolutional Pose Machines](ConvolutionalPoseMachines/).
......
This diff is collapsed.
## Visualize Saliency Maps ## Visualize Saliency Maps & Class Activation Maps
Implement the Guided-ReLU visualization used in the paper: Implement the Guided-ReLU visualization used in the paper:
* [Striving for Simplicity: The All Convolutional Net](https://arxiv.org/abs/1412.6806) * [Striving for Simplicity: The All Convolutional Net](https://arxiv.org/abs/1412.6806)
And the class activation mapping (CAM) visualization proposed in the paper:
* [Learning Deep Features for Discriminative Localization](http://cnnlocalization.csail.mit.edu/)
## Saliency Maps
`saliency-maps.py` takes an image, and produce its saliency map by running a ResNet-50 and backprop its maximum `saliency-maps.py` takes an image, and produce its saliency map by running a ResNet-50 and backprop its maximum
activations back to the input image space. activations back to the input image space.
Similar techinques can be used to visualize the concept learned by each filter in the network. Similar techinques can be used to visualize the concept learned by each filter in the network.
...@@ -23,3 +29,21 @@ Left to right: ...@@ -23,3 +29,21 @@ Left to right:
+ the magnitude blended with the original image + the magnitude blended with the original image
+ positive correlated pixels (keep original color) + positive correlated pixels (keep original color)
+ negative correlated pixels (keep original color) + negative correlated pixels (keep original color)
## CAM
`CAM-resnet.py` fine-tune a variant of ResNet to have 2x larger last-layer feature maps, then produce CAM visualizations.
Usage:
1. Fine tune or retrain the ResNet:
```bash
./CAM-resnet.py --data /path/to/imagenet [--load ImageNet-ResNet18.npy] [--gpu 0,1,2,3]
```
Pretrained and fine-tuned ResNet can be downloaded
[here](https://drive.google.com/open?id=0B9IPQTvr2BBkTXBlZmh1cmlnQ0k) and [here](https://drive.google.com/open?id=0B9IPQTvr2BBkQk9qcmtGSERlNUk).
2. Generate CAM on ImageNet validation set:
```bash
./CAM-resnet.py --data /path/to/imagenet --load ImageNet-ResNet18-2xGAP.npy --cam
```
<p align="center"> <img src="./CAM-demo.jpg" width="900"> </p>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment