This repository contains the keras implementation of Compact Bilinear CNN. Compact bilinear pooling was first introduced in paper Compact biinear pooling and gives significant performance on fine-grained image classification tasks such as bird species classification and aeroplane type categorization.
- Download CUB_200_2011 dataset from here.
Extract the contents in folder
data/CUB_200_2011
- Download the VGG16 weights file from here in the working directory
- For training only the last fully connected layer of the network, use
python train_cbcnn_last.py 0 # If training without GPU
python train_cbcnn_last.py 1 # If training with GPU
- For training the complete net after the last layer has been tuned, use:
python train_cbcnn_all.py 0 # If training without GPU
python train_cbcnn_all.py 0 # If training with GPU
- For testing the trained model, run
python test_model.py
At Squad, we further utilized Compact bilinear CNN for solving complex use cases like apparel items classification, and retrieval of similar item from in-shop and street-to-shop domain. The proposed pipeline and results are presented in the research paper [Fine-grained Apparel Classification and Retrieval without rich annotations] (https://arxiv.org/abs/1811.02385)
If you utilize Compact bilinear CNN for your research then pls refer
Gao, Y., Beijbom, O., Zhang, N., & Darrell, T. (2016). Compact bilinear pooling. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 317-326).
Additionally if you utilize Compact bilinear CNN for solving Apparel items categorization or related use case, pls refer
Bhatnagar, A., & Aggarwal, S. (2018). Fine-grained Apparel Classification and Retrieval without rich annotations. arXiv preprint arXiv:1811.02385.
I have referred Compact bilinear pooling implementation in Caffe by the authors here and tensorflow implementation here