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.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
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
run visimil.py and it will create a web server on port 5000
HTTP POST to /api/v1/add
body payload
{
"id": "Unique string",
"url": "image url"
}
HTTP POST to /api/v1/search
body payload
{
"url": "source image url",
"accuracy": 0.2,
"threshold": 100
}
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)