纵有疾风起
人生不言弃

图像检索引擎vearch安装与测试使用

文章目录

0 概述

Vearch 对大规模深度学习向量进行高效相似搜索的弹性分布式系统。

参考文档:

  • github地址:https://github.com/vearch/vearch
  • 中文文档:https://vearch.readthedocs.io/zh_CN/latest/overview.html

参考实例:

  • 官方部署实例:https://github.com/vearch/vearch/blob/master/docs/Quickstart.md
  • 中文大佬ansj的文章:https://my.oschina.net/ansj/blog/3117596

1 安装

由于公司服务器不能上网,所有操作尽量离线安装。

参考:官方安装部署教程:https://github.com/vearch/vearch/blob/master/docs/Deploy.md

参考:官方安装部署教程:https://vearch.readthedocs.io/zh_CN/latest/quick-start-guide.html

1.1 安装anaconda

参考《linux安装jdk以及eclipse,安装Anaconda与pyChram》 https://blog.csdn.net/u012052268/article/details/77160683

安装完成后,别忘记配置环境变量:

vi ~/.bashrc

加入以下几句话:

PATH=/home/myName/anaconda3/bin:$PATH
export PATH

使配置生效:

source ~/.bashrc

1.2 安装docker

按照文章《20191120离线安装docker》的方式安装好docker。

并下哦那个docker hub离线下载镜像 vearch_env 。这个镜像是编译 vearch的基础环境,有了它就不用装哪些那七八糟的东西了。

1.3 安装vearch

1.3.1 下载vearch源码

cd /home/vearch

1.3.2 准备编译环境

docker pull ansj/vearch_env:0.3 # 或者 从离线的地方load进来,有了vearch_env 就可以编译vearch了

1.3.3 运行

cd vearch/cloud/

bash run_docker.sh

这个打包命令将进行一下所有操作(1.2.3.1-1.2.3.4),以下的都不用做了。

如果启动成功你将会看到如下信息:

2019/10/15 04:58:13 startup.go:63: [INFO] start server by version:[0.1] commitID:[3a0ed89b690ea2cf566a45fc5681b0a1ca170726]
2019/10/15 04:58:13 startup.go:72: [INFO] The Config File Is: /vearch/config.toml
2019/10/15 04:58:13 startup.go:76: [INFO] The configuration content is:

打开浏览器访问 http://127.0.0.1:8817/ (或者 服务器地址加8817)可以看到下图说明启动是ok的:
图像检索引擎vearch安装与测试使用插图

1.3.3.1 编译Vearch

docker pull ansj/vearch_env # 或者 从离线的地方load进来,有了vearch_env 就可以编译vearch了

cd vearch/cloud/
bash compile.sh

这一步将自动生成容器vearch_env,运行docker ps -a命令可以看到;

并在vearch_env的容器中编译vearch代码;

然后自动把编译后的代码拷贝出容器 到宿主机的:$vearch/build/bin$vearch/build/lib文件夹中。

1.3.3.2 创建vearch可运行镜像

# 继续在cloud文件夹中:
bash build.sh

这一步会得到一个vearch的docker镜像iamge。分为7步:

  1. 构建centos7 基础环境
  2. Step 2/7 : ADD compile/bin /vearch/bin/
  3. Step 3/7 : ADD compile/lib /vearch/lib/
  4. Step 4/7 : ENV MASTER_NAME="___MASTER_NAME___"
  5. Step 5/7 : ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/vearch/lib/"
  6. Step 6/7 : RUN yum install -y libgomp blas-devel lapack-devel
  7. ENTRYPOINT [“/vearch/bin/vearch”,”-conf” ,”/vearch/config.toml”,”-master”,”$MASTER_NAME”]

运行docker images命令可以看到,多了一个ansj/vearch:0.3 的image

1.3.3.3 copy exaple配置文件过来作为单机配置

# 继续在cloud中
cat ../config/config.toml.example > config.toml

1.3.3.4 启动Vearch

# 直接运行
docker run -it -p 8817:8817 -p 9001:9001 -p 2378:2378 -p 2390:2390 -p 2370:2370 -p 6062:6062 -p 8818:8818 -p 6061:6061 -p 8081:8081 -p 8898:8898 -p 8899:8899 -p 6060:6060  -v $PWD/config.toml:/vearch/config.toml  ansj/vearch:0.3 all

### 其实 单机模式中 只对外暴露 8817、9001 两个端口即可运行。 
### 但是为了以后分布式部署方便。 把所有使用到的端口 都暴露出来。这样,多台机器之间的数据连接端口无障碍。


1.3.4 运行图像检索插件

这里会调用 python环境 以及训练好的VGG16模型。 所以需要安装一些python包,提前安装好的可以忽略:

  1. shortuuid
  2. opencv-python-4.1.1.26
  3. opencv-python_headless (一定要装,否则会报ImportError: libSM.so.6错误)
  4. msgpack
  5. torch1.2 (一定要在官网 安装cpu版本啊 血的教训)
  6. torchvision 0.4 (一定要在官网 安装cpu版本啊 血的教训)
  7. pytorch官网上下载的 vgg16.pth 放到 ~/.cache/torch/checkpoints/里面
  8. 下载yolov3.weights 放入 /home/CVpy36/xuqingtang/vearch/plugin/model/

以上环境准备好了,启动图片插件

cd /home/vearch/vearch/plugin
nohup ./bin/run.sh image &

看到 ↓ 信息就成功了:

load model success

或者进入src直接运行python文件

cd /home/vearch/vearch/plugin/src
nohup python main.py --model_name=image_retrieval &

这个插件写好了flask接口,所有的请求通过4101访问,不用8817了。

2 测试使用

参考:

  • https://github.com/vearch/vearch/blob/master/docs/Quickstart.md
  • https://github.com/vearch/vearch/blob/master/docs/APIVisualSearch.md
  • https://vearch.readthedocs.io/zh_CN/latest/use_op/op_db.html

2.1 建库建表:

建立一个名为testDb 的库,其中有名为 testSpace的表;

并且使用 vgg16 建模。

curl -XPOST -H "content-type:application/json" -d '{ "db": true, "method": 0, "columns": { "imageurl": { "type": "keyword" }, "boundingbox": { "type": "keyword" }, "label": { "type": "keyword" } }, "feature": { "type": "vector", "filed": "imageurl", "model_id": "vgg16", "dimension": 512 } }' http://127.0.0.1:4101/testDb/testSpace/_create

如果成功之后,会返回:

{ "code": 200, "db_msg": "success", "space_msg": "success"}

2.2 删除表格

curl -XPOST -H "content-type:application/json" -d '{ "db": false, "space": true }' http://127.0.0.1:4101/test/test/_delete

成功的响应如下所示:

{ "code": 200, "db_msg": null, "space_msg": "success"}

2.3 数据插入

  • 单条数据插入:
# single insert
curl -XPOST -H "content-type:application/json" -d '{ "imageurl": "../images/image_retrieval/test/COCO_val2014_000000123599.jpg", "detection": false, "boundingbox": "10,10,290,290", "label": "coat" }' http://127.0.0.1:4101/test/test/_insert

返回值为:

{ "db": "testDb", "space": "testSpace", "ids": [{ "AW3tYgdsAkKsEQACQOnu": "successful"}], "successful": 1}

  • csv批量导入演示的方法:
# bulk insert
curl -XPOST -H "content-type:application/json" -d '{ "method": "bulk", "imageurl": "../images/image_retrieval/test.csv", "detection": true }' http://127.0.0.1:4101/test/test/_insert

imageurl 字段可以直接输入base64字符串

2.4 尝试图片搜索

curl -XPOST -H "content-type:application/json" -d '{ "imageurl": "http://www.gming.org/uploadfile/2015/0914/20150914104444833.jpg", "size": 5 }' http://127.0.0.1:4101/testDb/testSpace/_search

size为你想获取的几个返回值。

插件内部编写了多种图像输入格式,所以可以

  • 使用base64编码的本地图像进行搜索;
  • 也可以使用图像URI搜索可公开访问的在线图像
  • 或存储在本地图像文件夹中的图像。

搜索结果看起来像这样:

图像检索引擎vearch安装与测试使用插图1

图像检索引擎vearch安装与测试使用插图2

2.5 删除数据

使用以下curl命令按ID删除记录

# request
curl -XDELETE http://127.0.0.1:4101/test/test/AWz2IFBSJG6WicwQVTog

# response
{
    "code": 200,
    "msg": "success"
}

2.6 Update record by ID

# request
curl -XPOST -H "content-type:application/json" -d '{
    "imageurl": "../images/image_retrieval/test/COCO_val2014_000000123599.jpg",
    "detection": true
}' http://127.0.0.1:4101/test/test/_update?id=AWz2IFBSJG6WicwQVTog

# response
{
    "db": "test",
    "space": "test",
    "ids": [
        {
            "AWz2IFBSJG6WicwQVTog": "successful"
        }
    ],
    "successful": 1
}

原文链接:https://lookme.blog.csdn.net/article/details/103264626

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

未经允许不得转载:起风网 » 图像检索引擎vearch安装与测试使用
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录