Home

Awesome

CACNet-Pytorch

This is an unofficial PyTorch implementation of Composing Photos Like a Photographer, in which the anchor-point regressors is based on Anchor-to-Joint Regression Network and more details about this can be found in their paper & code.

Quick Start

  1. Download code and model.

    # Clone this repository
    git clone https://github.com/bo-zhang-cs/CACNet-Pytorch.git
    cd CACNet-Pytorch && mkdir pretrained_model
    

    Download the Image Cropping Model (~75MB) from [Google Drive] to the folder pretrained_model.

  2. Inference on a single image:

    python demo.py -i ${image_path} -o ${save_folder}
    # For example
    python demo.py -i tests/raw/302166.jpg -o tests/results/
    

    Or on an image folder:

    python demo.py -i ${image_folder} -o tests/results/
    # For example
    python demo.py -i tests/raw -o tests/results/
    

    After that, you can find the cropped images in tests/results. The raw and processed images are shown below:

    <img src="tests/raw/302166.jpg" width=45%> <img src="tests/results/302166.jpg" width=45%>

    <img src="tests/raw/309808.jpg" width=45%> <img src="tests/results/309808.jpg" width=45%>

    <img src="tests/raw/342407.jpg" width=45%> <img src="tests/results/342407.jpg" width=45%>

Results

Test setFCDBFLMSKU-PCP
Original PaperIoU=0.718 BDE=0.069IoU=0.854 BDE=0.033Accuracy=88.2%
This codeIoU=0.702 BDE=0.074IoU=0.841 BDE=0.037Accuracy=88.4%

Note that the accuracy is produced training composition classification branch alone.

Datasets Preparation

  1. Download these datasets and change the default dataset folder in config_*.py.
  2. There are some images that unable to open in KU-PCP dataset, and you can fix this by calling check_jpg_file function in KUPCP_dataset.py.

Requirements

You can also install packages using pip according to requirements.txt:

pip install -r requirements.txt

Train&Eval

Evaluation

  # clone this repository
  git clone https://github.com/bo-zhang-cs/CACNet-Pytorch.git
  cd CACNet-Pytorch && mkdir pretrained_model

Download pretrained models to the folder pretrained_model.

python eval.py

This will produce a folder results where you can find the predicted best crops.

Training

Train composition classification model

python train_composition_classification.py

Train image cropping model (CACNet)

python train_image_cropping.py

Tracking training process

tensorboard --logdir=./experiments

The model performance for each epoch is also recorded in .csv file under the produced folder ./experiments.

Citation

@inproceedings{hong2021composing,
  title={Composing Photos Like a Photographer},
  author={Hong, Chaoyi and Du, Shuaiyuan and Xian, Ke and Lu, Hao and Cao, Zhiguo and Zhong, Weicai},
  booktitle={CVPR},
  year={2021}
}

More references about image cropping

Awesome Image Aesthetic Assessment and Cropping