画像検索を簡単に実装できる Vector Database Milvus を試してみる。
こんにちは k-jun です。今回は 画像を取り込み Vector として Database に保管し、ANN による画像検索を可能にする Milvus を試してみます。
https://github.com/milvus-io/milvus
実は学生のときにも遊びでラーメンの画像検索をやってみていたんですよね。 その際には 出来た Vector をファイルに保存していましたが、今回は保存先が データベースということでワクワクしています。
https://github.com/milvus-io/bootcamp/tree/master/solutions/reverse_image_search
ここを参照するとGUI 経由で画像の検索までできそうです。ということで ラーメン画像検索システムのサービス化をやってみようと思います。
https://github.com/milvus-io/bootcamp/tree/master/solutions/reverse_image_search/quick_deploy
まずは MySQL と Milvus の起動から。img-search-server も一緒に起動するようです。
https://milvus.io/docs/v2.0.0/install_standalone-docker.md
# milvus $ wget https://github.com/milvus-io/milvus/releases/download/v2.0.0-rc5/milvus-standalone-docker-compose.yml -O /tmp/docker-compose.yml $ docker-compose -f /tmp/docker-compose.yml up -d # mysql $ docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # img-search-server $ export Milvus_HOST='host.docker.internal' $ export Milvus_PORT='19530' $ export Mysql_HOST='host.docker.internal' $ docker run -d -v ~/Desktop/ramen_images:/tmp/ramen_images -p 5000:5000 -e "MILVUS_HOST=${Milvus_HOST}" -e "MILVUS_PORT=${Milvus_PORT}" -e "MYSQL_HOST=${Mysql_HOST}" milvusbootcamp/img-search-server:2.0
http://127.0.0.1:5000/docs を見てみると、何やら Document が生成されています。
あとはフロントを起動するだけなのでやっていきます。
$ export API_URL='http://127.0.0.1:5000' $ docker run -d -p 8001:80 -e API_URL=${API_URL} milvusbootcamp/img-search-client:1.0
localhost:8001 から見てみると以下のようなフロントが出るので、プラスボタンの左のフォームにマウントした画像のディレクトリを入力します。 入力が完了すると、"XXX images in this set" の XXX の数字が増加するのであとは検索するだけです!!
適当なラーメンの画像で検索してみます。
おおお!!結構近い!!!のり!!
ということで、画像さえあれば Docker でポチポチするだけで画像検索が行えるサービスが完成しました。最近試したものの中ではかなり面白かったです。 それではこのへんで。