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

WindLine3 2024-10-18 16:33:02 阅读 89

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:

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

face-search-client:提供外部应用程序的接口,便于与系统交互。face-search-core:核心功能模块,包含主要算法和逻辑。face-search-engine:与向量搜索引擎(如OpenSearch)的集成。face-search-server:服务器端应用程序,处理请求和响应。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控制台不会出现:

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

仔细阅读控制台消息:

发现有两个来自客户端中的<code>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:是否删除标志

预留行



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。