face-search人臉搜索工具
人臉搜索 M:N
-
本項目是阿里云視覺智能開放平臺的人臉1:N的開源替代,項目中使用的模型均為開源模型,項目支持milvus和proxima向量存儲庫,并具有較高的自定義能力。
-
項目使用純Java開發(fā),免去使用Python帶來的服務不穩(wěn)定性。
-
1:N是通過采集某人的人像后,從海量的人像數(shù)據(jù)底庫中找到與當前使用者人臉數(shù)據(jù)相符合的圖像,通過數(shù)據(jù)庫的比對找出"你是誰",常見的辦公樓宇的人臉考勤門禁、社區(qū)門禁、工地考勤、會簽等等場景。
-
M:N 是通過計算機對場景內所有人進行面部識別并與人像數(shù)據(jù)庫進行比對的過程。M:N作為一種動態(tài)人臉比對,其使用率非常高,能充分應用于多種場景,例如公共安防,迎賓,機器人應用等。
-
歡迎大家貢獻代碼,如果你覺得項目還不錯,請給個star。
項目簡介
- 整體架構圖
- 項目使用組件
? ? 1、spring boot
? ? 2、onnx
? ? 3、milvus
? ? 4、proxima
- 深度學習模型
? ? 1、insightface
? ? 2、PCN
項目文檔
-
在線文檔:文檔-1.0.0
-
swagger文檔:啟動項目且開啟swagger,訪問:host:port/doc.html, 如 http://127.0.0.1:8080/doc.html
搜索客戶端
- Java依賴,未發(fā)布到中央倉庫,需要自行編譯發(fā)布到私有倉庫
<dependency>
<groupId>com.visual.face.search</groupId>
<artifactId>face-search-client</artifactId>
<version>1.0.0</version>
</dependency>
- 其他語言依賴
? ?使用restful接口:文檔-1.0.0
項目部署
- docker部署,腳本目錄:face-search/scripts
1、使用milvus作為向量搜索引擎
docker-compose -f docker-compose-milvus.yml --compatibility up -d
2、使用proxima作為向量搜索引擎
docker-compose -f docker-compose-proxima.yml --compatibility up -d
- 項目編譯
1、克隆項目
git clone https://gitee.com/open-visual/face-search.git
2、項目打包
cd face-search && sh scripts/docker_build.sh
- 部署參數(shù)
| 參數(shù) | 描述 | 默認值 | 可選值 |
|---|---|---|---|
| VISUAL_SWAGGER_ENABLE | 是否開啟swagger | true | |
| SPRING_DATASOURCE_URL | 數(shù)據(jù)庫地址 | ||
| SPRING_DATASOURCE_USERNAME | 數(shù)據(jù)庫用戶名 | ||
| SPRING_DATASOURCE_PASSWORD | 數(shù)據(jù)庫密碼 | ||
| VISUAL_ENGINE_SELECTED | 向量存儲引擎 | proxima | proxima,milvus |
| VISUAL_ENGINE_PROXIMA_HOST | PROXIMA地址 | VISUAL_ENGINE_SELECTED=proxima時生效 | |
| VISUAL_ENGINE_PROXIMA_PORT | PROXIMA端口 | 16000 | VISUAL_ENGINE_SELECTED=proxima時生效 |
| VISUAL_ENGINE_MILVUS_HOST | MILVUS地址 | VISUAL_ENGINE_SELECTED=milvus時生效 | |
| VISUAL_ENGINE_MILVUS_PORT | MILVUS端口 | 19530 | VISUAL_ENGINE_SELECTED=milvus時生效 |
| VISUAL_MODEL_FACEDETECTION_NAME | 人臉檢測模型名稱 | PcnNetworkFaceDetection | PcnNetworkFaceDetection,InsightScrfdFaceDetection |
| VISUAL_MODEL_FACEDETECTION_BACKUP_NAME | 備用人臉檢測模型名稱 | InsightScrfdFaceDetection | PcnNetworkFaceDetection,InsightScrfdFaceDetection |
| VISUAL_MODEL_FACEKEYPOINT_NAME | 人臉關鍵點模型名稱 | InsightCoordFaceKeyPoint | InsightCoordFaceKeyPoint |
| VISUAL_MODEL_FACEALIGNMENT_NAME | 人臉對齊模型名稱 | Simple106pFaceAlignment | Simple106pFaceAlignment,Simple005pFaceAlignment |
| VISUAL_MODEL_FACERECOGNITION_NAME | 人臉特征提取模型名稱 | InsightArcFaceRecognition | InsightArcFaceRecognition |
性能優(yōu)化
-
項目中為了提高人臉的檢出率,使用了主要和次要的人臉檢測模型,目前實現(xiàn)了兩種人臉檢測模型insightface和PCN,在docker的服務中,默認主服務為PCN,備用服務為insightface。insightface的效率高,但針對于旋轉了大角度的人臉檢出率不高,而pcn則可以識別大角度旋轉的圖片,但效率低一些。若圖像均為正臉的圖像,建議使用insightface為主模型,pcn為備用模型,如何切換,請查看部署參數(shù)。
-
在測試過程中,針對milvus和proxima,發(fā)現(xiàn)proxima的速度比milvus稍快,但穩(wěn)定性沒有milvus好,線上服務使用時,還是建議使用milvus作為向量檢索引擎。
項目演示
-
測試用例:face-search-test測試用例-FaceSearchExample
-
