Pytorch implementation of "Wang, Y., Ji, S., Lu, M., & Zhang, Y. (2020). Attention boosted bilinear pooling for remote sensing image retrieval. International Journal of Remote Sensing, 41(7), 2704-2724." All models are trained on a single NVIDIA GeForce GTX 1060 GPU with 6 GB RAM.
We introduce a second-order pooling named compact bilinear pooling (CBP) into convolutional neural networks (CNNs) for remote sensing image retrieval.
The retrieval algorithm has three stages, pretraining, fine-tuning and retrieval.
Pretraining stage
Two classic CNN structures, VGG16 and ResNet34, are pretrained respectively with the ImageNet consisting of close-range images. A CBP layer is introduced to replace the fully connected layers in the two networks. To extract globally consistent representations, a channel and spatial integrated attention mechanism is proposed to refine features from the last convolution layer and the features are used as the input of the CBP.
Fine-tuning stage
The new network is fine-tuned on a remote sensing dataset to train discriminable features.
Retrieval stage
The network, with fully connected layers being replaced by a PCA (principal component analysis) module, is applied to new remote sensing datasets.
python cbp_vgg16.py
python cbp_resnet34.py
python ATT_CBP_resnet34.py