A visual search engine based on Elasticsearch and Tensorflow
There are serveral python libraries you must to install before building the search engine.
elasticsearch==5.2.0Tensorflow==0.12.1Flaskopencv-pythoneasydict
- Setup Elasticsearch
The easiest way to setup is using Docker with Docker Compose. With docker-compose everything you have to do is so simple:
cd visual_search/elasticsearch docker-compose up -d- Building elasticsearch plugin
We need to build Elasticsearch plugin to compute distance between feature vectors. Make sure that you have Maven installed.
cd visual_search/es-plugin mvn install cd target/release // create simple server to serve plugin python -m 'SimpleHTTPServer' & //install plugin cd ../elasticsearch docker exec -it elasticsearch_elasticsearch_1 elasticsearch-plugin install http://localhost:8000/esplugin-0.0.1.zip docker-compose restart- Index preparation
curl -XPUT http://localhost:9200/img_data -d @schema_es.json- Setup faster r-cnn
I used earlier faster r-cnn version implemented by @Endernewton for object detection. You can fetch pre-trained model here.
export WEIGHT_PATH=... export MODEL_PATH=... export INPUT=.. cd visual_search python index_es.py --weight $WEIGHT_PATH --model_path $MODEL_PATH --input $INPUTBefore starting the server, you must to update IMGS_PATH variable in visual_search/server.py to the location of folder where images are stored.
cd visual_search python server.pyand access the link http://localhost:5000/static/index.html to test the search engine.
Have fun =))
