Skip to content

Keras/Elasticsearch based visual similarity search service

License

Notifications You must be signed in to change notification settings

jamesbeedy/visimil

 
 

Repository files navigation

visimil

Keras/Elasticsearch based visual similarity search (tested keras model using Tensorflow backend).

Visimil uses Keras VGG16 model with Imagenet pre-trained weights. It use last conv layer feature vector values to compare visual similarity on images. There is one endpoint to add new computed image features into elasticsearch and another for image lookup.

Install Dependencies

python3 -m venv .venv

source .venv/bin/activate

pip install -r requirements.txt

Setup

We need to create Elasticsearch mappings first. Run visimil_setup.py in order to setup mappings. Edit visimil_setup.py and update Elasticsearch server and port values if needed on line #4

Usage

run visimil.py and it will create a web server on port 5000

Adding new entries to database.

HTTP POST to /api/v1/add

body payload

{
  "id": "Unique string",
  "url": "image url"
}

searching for visually similar.

HTTP POST to /api/v1/search

body payload

{
  "url": "source image url",
  "accuracy": 0.2,
  "threshold": 100
}

Optional values

Accuracy: offset values included as a hit for each dimension. (Values from 0.0 > x <=2000.0) Threshold: minimun number of dimiension that need to match to score in result. (Values from 1 to 512)

About

Keras/Elasticsearch based visual similarity search service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 93.2%
  • Shell 6.6%
  • Makefile 0.2%