Writing an Image Search Engine from Scratch [Japanese]

Yusuke Matsui


Overview

  • This page contains materials on a one-hour hands-on seminar, "Writing an Image Search Engine from Scratch".
  • A simple image-based image search engine, sis, is introduced. You can try a demo.
  • Sis is based on a Flask framework with Keras. Each image is represented by a 4096D fc6 feature using a pre-trained VGG16 network.
  • Sis has just 62 lines (python) + 24 lines (html).

Links

How to run (on your local computer)

# Make sure numpy, Pillow, h5py, tensorflow, Keras, and Flask are installed
# Clone the code
$ git clone https://github.com/matsui528/sis.git
$ cd sis

# Put your image files (*.jpg) on static/img

$ python offline.py    # python3
# Then fc6 features are extracted and saved on static/feature

$ python server.py
# Now you can do search via localhost:5000

How to run (on AWS EC2)

# Launch an instance on AWS EC2, and open the port 5000.
# A middle-level CPU instance is fine, e.g., m4.large.
# Make sure you can ssh. Then log in the instance.

# Setup python stuff
$ wget https://repo.continuum.io/archive/Anaconda3-4.3.0-Linux-x86_64.sh
$ bash Anaconda3-4.3.0-Linux-x86_64.sh
$ source ~/.bashrc  # Activate anaconda
$ pip install tensorflow keras

# Clone the code
$ git clone https://github.com/matsui528/sis.git
$ cd sis

# Put your image files (*.jpg) on static/img

$ python offline.py
# Then fc6 features are extracted and saved on static/feature

$ python server.py
# Now you can do search via http://ec2-XX-XX-XXX-XXX.us-west-2.compute.amazonaws.com:5000