End-to-end deep learning image-similarity search engine.
TiefVision is an integrated end-to-end image-based search engine based on deep learning. It covers image classification, image location ( OverFeat ) and image similarity ( Deep Ranking).
TiefVision is implemented in Torch and Play Framework (Scala version). It currently only supports Linux with CUDA-enabled GPU.
Here are some of the (best) results for a dataset of dresses:
The project is divided into two module groups: Deep Learning Modules and Tooling Modules
The deep learning modules included in TiefVision are the following:
TiefVision transfers a simplified (without grouping) AlexNet network that is used for encoding purposes. The steps involved in the transfer learning phase are the following:
The image classification module performs the following steps:
It encodes all the crops from the target image (e.g. dresses) and its background using the encoder neural network:
It trains a fully connected neural network to classify the target image crops (e.g. dresses) and its background crops (e.g. photo studio background).
The image location module perform the following steps:
The similarity is based on the distance between two image encodings. TiefVision trains a neural network to map encoded images into a space in which the dot product acts as a similarity distance between images. As the encodings are normalized, the dot product computes the cosine of the angle between the encodings.
Given the following triplets of images:
It trains a neural network to make H+ closer to H than H- using the Hinge loss: l(H, H+, H-) = max(0, margin + D(H, H+) - D(H, H-)) where D is the dot product of the two images mapped into the neural network’s output space: D(H1, H2) = NN(H1) · NN(H2)
TiefVision includes a set of web tools to ease the generation of datasets and thus increase productivity.
The current tools are the following:
Please refer to the Developer Guide for details.
Copyright (C) 2016 Pau Carré Cardona - All Rights Reserved You may use, distribute and modify this code under the terms of the Apache License v2.