open-visual/face-search开源项目本地部署(非docker且不包含前端)及源码简单解读#CV#Java

1. 部署提要

        1.1 git clone

项目地址:face-search: 本项目是阿里云视觉智能开放平台的人脸搜索M:N的开源替代,项目中使用的模型均为开源模型,项目支持opensearch、milvus和proxima向量存储库,并具有较高的自定义能力。

使用git clone拉取项目文件到本地后再用intellij打开

        1.2 intellij连接数据库

推荐这位站内博主的:
如何使用IDEA连接MySQL数据库 - 一篇全面的指南-CSDN博客

在完成连接mysql后要创建一个名为“visual_face_search”的database(因为几个application.yml文件都是用的这个配置名),然后右键你的database,选择New -> Query Console打开控制台,把schema-init.sql文件中的SQL语句复制进来,再点击如下的Execute键创建表:

然后进入face-search-server里面的配置文件application-local.yml修改连接数据库的配置:

记得修改url指向本机地址

        1.3 maven配置

打开项目文件的maven配置文件pom.xml,你可以看到各个子模块之间的依赖关系:

face-search-server依赖于face-search-core和face-search-engine

face-search-test依赖于face-search-client:

主要子模块及其功能和关系:

  1. face-search-client:提供外部应用程序的接口,便于与系统交互。
  2. face-search-core:核心功能模块,包含主要算法和逻辑。
  3. face-search-engine:与向量搜索引擎(如OpenSearch)的集成。
  4. face-search-server:服务器端应用程序,处理请求和响应。
  5. face-search-test:测试模块和示例,确保系统稳定性和功能正确性。

maven这一步的操作就是在右侧的maven栏里面在Lifecycle里面执行install命令:

这个时候你就可以找到face-search-server中的bootstrap下的FaceSearchApplication.java文件,运行,若无报错,则可以打开项目里的swagger文档:

但是这时候由于还没有opensearch服务,所以你在尝试请求创建一个集合的时候,会有如下的报错响应:

        1.4 opensearch安装

opensearch站内的资源比较少,推荐直接按照官方文档步骤来安装:

Windows - OpenSearch Documentation

按照这个文档页面除步骤2中的选项2外都做一遍,并且忽略步骤3中的“如果您运行了安全演示脚本,则需要手动重新配置已修改的设置。在继续操作之前,请参阅安全配置以获取指导。”这个操作(If you ran the security demo script, then you will need to manually reconfigure settings that were modified. Refer to Security configuration for guidance before proceeding.)

(仅是个人经验)

之后再进入opensearch安装文件夹的bin目录,运行一下命令:

之后在进入“服务”窗口,如果服务启动成功,是可以看到如下效果的:

(这时可以在窗口点击按钮刷新一下,看看服务是否还开启。笔者之前没启动成功时,手动启动了服务,但是刷新后立即可以看到服务其实没有被开启)

另外,打开https://localhost:9200,你可以看到:

然后进入face-search-server里面的配置文件application-local.yml修改连接数据库的配置:

然后我们再试着在API文档里再请求一次创建集合,会有:

同时,你打开database中创建的表,也可以发现创建的新数据(这里我就放我目前创建的情况了):

那我们就可以成功调用API文档啦!

2. 源码解读

        2.1 测试示例

保持face-search-server中的启动FaceSearchApplication.java一直运行,在face-search-test文件下有测试代码文件FaceSearchExample.java,运行,可以出现项目中测试示例。这里我们可以在这段代码包含的路径中添加自己的图片数据文件夹:
String indexPath = "face-search-test/src/main/resources/image/validate/index";

然后再将同一个父级目录下的search文件里的图片替换成我们想要测试的图片,就有了鸡哥:

这里笔者是在部署成功后的第二天试的,发现opensearch虽然在“服务”里一直显示运行,但是实际上没有启动成功,笔者重新以管理员身份在bin目录里运行了一次:

opensearch-service.bat start才重新启动成功

如果opensearch没有启动成功的话,运行FaceSearchExample.java控制台不会出现:

并且出来的鸡哥图像也没有检测框标识头部

仔细阅读控制台消息:

发现有两个来自客户端中的com.visual.face.search.model 包中的Java类CollectRep和FaceRep,前者提供了提供了设置和获取命名空间及集合名称的方法,后者定义了一个用于表示人脸数据的模型,提供了适当的方法来访问和设置各种人脸数据的属性,可以看到人脸数据的组成:

  • namespace:命名空间,用于区分不同的数据范围。
  • collectionName:集合名称,指示人脸数据存储在哪个集合中。
  • sampleId:样本ID,可能是指示人脸数据在样本集中的唯一标识。
  • faceId:人脸ID,用于唯一标识一个人脸。
  • faceScore:人脸分数,可能用于表示人脸检测或者识别的置信度。
  • faceDataKeyValues 类型的对象,可能用于存储额外的人脸数据。

        2.2 数据库设计

  • id:自增主键
  • uuid:唯一标识符
  • namespace:命名空间
  • collection:集合名称
  • describe:集合描述
  • statue:集合状态
  • sample_table:样本数据表
  • face_table:人脸数据表
  • image_table:图片数据表
  • vector_table:人脸向量库
  • schema_info:集合元数据
  • create_time:创建时间
  • update_time:更新时间
  • deleted:是否删除标志

预留行

  • 32
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值