/aesthetics

Image Aesthetics Toolkit - includes Fisher Vector implementation, AVA (Image Aesthetic Visual Analysis) dataset and fast multi-threaded downloader

Primary LanguagePythonApache License 2.0Apache-2.0

Aesthetics

Image Aesthetics Definition

Image aesthetic evaluation aims to classify photos into high quality or low quality from the perspective of human.

High Quality Image Low Quality Image
Good Image Bad Image

Image Aesthetics drills down to a classification problem:

  • Low Quality Image Bad Image
  • High Quality Image Good Image

A commonly used dataset for image aesthetics is AVA (Image Aesthetic Visual Analysis) dataset

This repo provides following tools to help in image aesthetics problem:

Fisher Vector

Fisher Vector is a technique for generating features for images, which can be used by discriminative models like SVM. You can use fisher vectors for usecases like image classification (ImageNet), image aesthetics.

Flow

  • We create local descriptors using SIFT for each image in the training set
  • We fit a Gausian Mixture Model (GMM) on descriptors for all images in training set.
  • Using this global GMM we generate features for each image

Fisher Vector flow

Spatial Pooling

Spatial pooling is a technique to save the spatial information of the image while generating features. This is very important in image aesthetics because the look and feel of the image are highly dependent on the aspect ratio, placement of the objects in the image.

Following image should clarify the importance of spatial pooling:

Importance of spatial pooling

For spatial pooling, the fisher vector paper recommends splitting the image into 4 patches:

  • Full image patch
  • 3 horizontal sliced patches of the image

To generate the fisher vector of the image, as shown in the flowchart above, we concat the fisher vectors of the 4 individual patches of the image.

AVA Downloader

./download.py --help
./download.py ava

This is a WIP