# IntelligentRecognitionPlatform **Repository Path**: thubier/irp-parent ## Basic Information - **Project Name**: IntelligentRecognitionPlatform - **Description**: 本项目基于 Java 语言开发,结合 OpenCV 视觉库与 ONNX 模型,实现了人脸对比、人脸识别,以及机动车和非机动车车牌识别等核心功能。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2026-03-28 - **Last Updated**: 2026-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IRP 智能识别平台 ## 项目概述 IRP(Intelligent Recognition Platform)是一个基于AI的智能识别平台,提供多种识别功能,包括人脸识别、车辆识别等。该平台采用前后端分离架构(前端和后端包打一起,也可以分开部署),后端基于Java Spring Boot,前端基于Vue.js,集成了多种AI模型,支持实时识别和批量处理。 ## 在线体验 - 🌐 体验地址:[http://47.102.136.138:2020/irp/web/index.html](http://47.102.136.138:2020/irp/web/index.html) - 📱 H5 体验地址:[http://47.102.136.138:2020/irp/web/index.html#h5](http://47.102.136.138:2020/irp/web/index.html#h5) - 📌 状态:正常运行(更新时间:2026-03-06) - ⚠️ 注意: 1. 体验环境带宽有限服务器资源,请勿压测。 2. 每人一天最多访问100次。 ## 项目结构 ``` irp-parent/ ├── irp-app/ # 应用层模块 │ ├── irp-app-controller/ # 控制器层 │ ├── irp-app-main/ # 主应用模块 │ ├── irp-app-model/ # 数据模型层 │ ├── irp-app-repository/ # 数据访问层 │ ├── irp-app-service/ # 业务逻辑层 │ └── pom.xml # 应用模块父依赖 ├── irp-common/ # 公共模块 │ └── pom.xml ├── irp-module/ # 功能模块 │ ├── irp-module-base/ # 基础工具模块 │ ├── irp-module-face/ # 人脸识别模块 │ ├── irp-module-vehicle/ # 车辆识别模块 │ └── pom.xml ├── irp-web/ # 前端Vue项目 │ ├── src/ # 前端源码 │ └── package.json # 前端依赖配置 ├── sh/ # 脚本文件 ├── .gitignore # Git忽略配置 ├── Dockerfile # Docker构建配置 ├── initTable.sql # 初始化数据库脚本 └── pom.xml # 项目父依赖 ``` ## 功能模块 ### 人脸相关功能 - **人脸分析**:识别面部特征、年龄、性别、遮挡、表情等 - **人脸比对**:比较两张人脸的相似度 - **人脸检索**:从人脸库中检索相似人脸 - **人脸检测**:检测图像中的人脸位置 - **人脸关键点定位**:定位人脸上的关键点 ### 车辆相关功能 - **车牌识别**:识别车辆牌照信息 - **非机动车车牌识别**:识别电动车等非机动车牌照 - **车辆检测**:检测图像中的车辆 ### 图片文字识别 - **文字识别**:识别图片中的文字(比如驾驶证、身份证等) ## 演示页面 以下是平台各功能模块的演示页面截图: ### 人员管理 **功能描述**:管理系统中的人员信息,包括新增、编辑、删除和查询。 **页面截图**: ![人员管理页面](docs/screenshots/person-management.png) ``` 项目人员信息从明星网爬取(http://star.iecity.com/China/0/p)用来测试,具体实现com.warrior.irp.app.service.face.StarJsoupService ``` ### 人员图搜 **功能描述**:上传一张人脸图片,从人脸库中检索出相似的人脸记录。 **页面截图**: ![人员图搜页面](docs/screenshots/face-recognition-query.png) ### 人脸1:1比对 **功能描述**:上传两张人脸图片,系统计算并展示两张人脸的相似度。 **页面截图**: ![人脸1:1比对页面](docs/screenshots/face-comparison.png) ### 车牌识别 **功能描述**:上传一张车辆图片,系统自动识别车牌信息。 **页面截图**: ![车牌识别页面](docs/screenshots/license-plate-recognition.png) ### 非机动车车牌识别 **功能描述**:上传一张非机动车图片,系统自动识别非机动车牌照信息。 **页面截图**: ![非机动车车牌识别页面](docs/screenshots/no-vehicle-license-plate-recognition.png) ### 面部分析 **功能描述**:上传一张人脸图片,系统自动识别面部特征、是否正脸、是否遮挡、年龄、性别、情绪等信息。 **页面截图**: ![面部分析页面](docs/screenshots/face-analysis.png) ### 文字识别 **功能描述**:上传一张图片,系统自动识图片中的文字。 **页面截图**: ![文字识别页面](docs/screenshots/pic-ocr.png) ## 技术栈 ### 后端 - Java Spring Boot - Maven 多模块架构 - ONNX Runtime 用于AI模型推理 - MyBatis 用于数据库访问 ### 前端 - Vue.js 2.x - Element UI(推测,基于常见Vue项目架构) ### AI模型 - 人脸检测:PCN、SCRFD - 人脸识别:ArcFace、CosFace - 人脸关键点:106点坐标、Seeta Mask - 性别年龄识别:Insight - 车牌检测与识别:自定义模型 ## 快速开始 ### 环境要求 - JDK 17 或 OpenJDK 17 - Maven 3.6+ - Node.js 12+ (用于前端开发) - PostgreSQL 16+ (推测,基于常见Java项目架构) ### 后端部署 1. 克隆项目 ```bash git clone https://gitee.com/warrior-james/irp-parent.git cd irp-parent ``` 2. 数据库安装 - 如果需要使用人脸1:N功能需要安装PostGresql数据库和vector插件,windows版本安装vector插件如下:https://blog.csdn.net/kijmij/article/details/151179904 - linux系统PostGresql安装vector插件如下:https://blog.csdn.net/2509_93971775/article/details/154606716 - 若没有安装PostGresql数据库建议docker安装pgvector/pgvector:pg16,包含插件,不需要额外安装 ``` # 拉取 PostgreSQL 16 + pgvector 镜像 docker pull pgvector/pgvector:pg16 # 启动容器(设置密码、端口、数据卷) docker run -d \ --name pg16-vector \ -p 5432:5432 \ -e POSTGRES_PASSWORD=your_password \ -e POSTGRES_DB=vector_db \ -v pg16_vector_data:/var/lib/postgresql/data \ pgvector/pgvector:pg16 ``` - 若不需要人脸1:N跳过该步骤 3. 配置数据库 - 创建数据库 - 执行 `initTable.sql` 初始化表结构 - 修改 `irp-app/irp-app-main/src/main/resources/application.yml` 中的数据库配置 4. 人脸算法高准确方案 - 基于现在人脸识别开源的算法达不到商用标准,java结合opencv的准确性太高,专门写了一个python的算法服务(准确性达到90以上), 目前有人脸特征值计算接口 - gitee地址:https://gitee.com/warrior-james/vision-algo.git 如果没有python环境直接docker运行即可,镜像文件可以和作者私要 - 若使用该算法需要application.yml文件中visual.faceModel.faceRecognition.name配置成PythonVisionAlgoService,server.pythonVisionAlgo.url 配置部署的python服务地址 5. 构建项目 ```bash mvn clean package -DskipTests ``` 6. 运行项目 ```bash java -jar irp-app/irp-app-main/target/irp-app-main-1.0.0.jar ``` 7. 打开项目页面 ``` 项目启动成功会有以下日志: ********************************************当前服务相关地址******************************************** 服务启动成功,irp已内置启动! Access URLs: 接口本地地址: http://localhost:2020/ 接口外部访问地址: http://192.168.53.11:2020/ 接口配置平台: http://192.168.53.11:2020/irp/web/index.html 可通过配置关闭输出: irp.show-url=false ********************************************当前服务相关地址******************************************** 直接打开http://192.168.53.11:2020/irp/web/index.html地址即可 ``` ### 前端部署 (若分开部署,默认前后端一起) 1. 进入前端目录 ```bash cd irp-web ``` 2. 安装依赖 ```bash npm install ``` 3. 开发模式运行 ```bash npm run serve ``` 4. 生产构建 ```bash npm run build ``` 5. 将构建产物部署到Nginx等Web服务器 ## 开发说明 ### 后端开发 1. 模块划分遵循MVC架构 2. 新增功能时,建议按照以下流程: - 在 `irp-app-model` 中定义数据模型 - 在 `irp-app-repository` 中实现数据访问 - 在 `irp-app-service` 中实现业务逻辑 - 在 `irp-app-controller` 中暴露API接口 ### 前端开发 1. 页面组件位于 `irp-web/src/views/` 目录 2. 路由配置位于 `irp-web/src/router/index.js` 3. 工具函数位于 `irp-web/src/utils/` 目录 ### AI模型管理 - 模型文件位于 `irp-app/irp-app-main/src/main/resources/` 目录下的对应功能子目录 ``` 支持模型切换,重启生效,模型在irp-app/irp-app-main/src/main/resources/face和vehicle下 visual: provider: CUDAExecutionProvider # 执行ONNX模型 CPUExecutionProvider: CPU执行 CUDAExecutionProvider: NVIDIA GPU上运行 DNNL: 深度神经网络库执行 OPEN_VINO: OpenVINO执行 ARM_NN ROCM CORE_ML AZURE faceModel: faceDetection: name: InsightScrfdFaceDetection #IRPFaceDetection InsightScrfdFaceDetection thread: 1 backup: name: PcnNetworkFaceDetection thread: 1 faceKeyPoint: name: InsightCoordFaceKeyPoint thread: 1 faceAlignment: name: Simple106pFaceAlignment thread: 1 faceRecognition: name: PythonVisionAlgoService #IRPFaceRecognition SeetaFaceOpenRecognition PythonVisionAlgoService thread: 1 faceAttribute: name: InsightAttributeDetection thread: 1 faceMask: name: SeetaMaskFaceKeyPoint thread: 1 face-mask: face-search: false face-compare: false vehicleModel: plateRecognition: name: PlateDetect thread: 1 plateNumberRecognition: name: PlateRecColor thread: 1 nonVehicleModel: plateDetect: name: EbikePlateDetect thread: 1 ``` - 目前支持ONNX格式的模型 - 新增模型时,需在对应模块中添加模型加载和推理逻辑 ## 部署说明 ### Docker部署 1. 构建Docker镜像 ```bash docker build -t irp-main . ``` 2. 运行Docker容器 ```bash docker run -d -p 2020:2020 -e SPRING_PROFILES_ACTIVE=prod --restart=always -v /home/warrior/hims/config:/home/app/config --name irp-main irp-main:1.0.0 ``` ### 脚本部署 使用 `sh/` 目录下的脚本进行部署和重启: ```bash # 容器重启 ./sh/containerRestart.sh # Docker运行 ./sh/dockerRun.sh # 服务重启 ./sh/restart.sh ``` ## 目录说明 - `irp-app/`:应用层模块,包含业务逻辑和API接口 - `irp-common/`:公共工具类和常量定义 - `irp-module/`:功能模块,包含各识别功能的核心实现 - `irp-web/`:前端Vue项目,提供用户界面 - `sh/`:部署和管理脚本 ## 许可证 ## 贡献 欢迎提交Issue和Pull Request! ## 📞 联系与支持 - 如有疑问,欢迎加入群聊或者作者好友(请备注irp) - QQ群号:1076633485 - ![qq.png](docs/screenshots/QQ.png) - WX:V_a_e_000 - QQ:83503821 - 邮箱:83503821@qq.com ## Acknowledgements 致谢 感谢 [diven](https://gitee.com/open-visual/face-search.git) 提供的代码思路,为本项目的开发带来了重要参考与启发!