# Attention boosted bilinear pooling

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.

## Introduction

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.

## Dependencies

• Python2.7
• Pytorch1.0.1
• Torchvison0.2.2

## Run

python cbp_vgg16.py
python cbp_resnet34.py
python ATT_CBP_resnet34.py