Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hiwepy/baiduapi-spring-boot-starter
spring-boot-starter-baiduapi
https://github.com/hiwepy/baiduapi-spring-boot-starter
Last synced: 6 days ago
JSON representation
spring-boot-starter-baiduapi
- Host: GitHub
- URL: https://github.com/hiwepy/baiduapi-spring-boot-starter
- Owner: hiwepy
- License: apache-2.0
- Created: 2019-08-21T12:21:11.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-10T08:36:45.000Z (3 months ago)
- Last Synced: 2024-09-10T10:24:53.702Z (3 months ago)
- Language: Java
- Size: 338 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# baiduapi-spring-boot-starter
#### 组件简介
> 基于 [百度智能云 - 人脸识别](https://cloud.baidu.com/product/face) 在线API实现的人脸识别整合
> 离线SDK参考 :http://ai.baidu.com/tech/face/offline-sdk#### 使用说明
##### 1、发布百度SDK到自己的 Maven私服(`请下载新版本`)
```shell
mvn deploy:deploy-file -DgroupId=com.baidu.aip -DartifactId=java-sdk -Dversion=4.11.1 -Dpackaging=jar -Dfile=D:\aip-java-sdk-4.11.1.jar -Durl=http://127.0.0.1:8082/nexus/content/repositories/releases/ -DrepositoryId=nexus-releases
```##### 2、Spring Boot 项目添加 Maven 依赖
``` xml
com.github.hiwepy
baiduapi-spring-boot-starter
${project.version}```
##### 3、在`application.yml`文件中增加如下配置
```yaml
#################################################################################################
### 百度人脸识别 配置:
#################################################################################################
baidu:
face:
v3:
enabled: true
client-id: xxxx
client-secret: xxxx
```##### 3、使用示例
配置对象 FaceRecognitionProperties
```java
import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(FaceRecognitionProperties.PREFIX)
public class FaceRecognitionProperties {public static final String PREFIX = "face";
/**
* 人脸识别服务提供者(local: 本地实现, baidu: 百度人脸识别服务)
*/
private String provider = "local";
/**
* 人脸识别数据分组(以学校代码为分组)
*/
private String group = "14535";public String getProvider() {
return provider;
}public void setProvider(String provider) {
this.provider = provider;
}public String getGroup() {
return group;
}public void setGroup(String group) {
this.group = group;
}}
```本地使用示接口(为了方便多种识别方案对接,这里采用了提供者模式进行开发)
```java
import org.springframework.web.multipart.MultipartFile;import com.alibaba.fastjson.JSONObject;
public interface FaceRecognitionProvider {
/**
* Provider Name
* @return
*/
String getName();
/**
* 人脸检测与属性分析:
* 1、人脸检测:检测图片中的人脸并标记出位置信息;
* 2、人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
* 3、人脸属性值:展示人脸属性信息,如年龄、性别等。
* 4、人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
* @param imageBase64 人脸图片文件
* @return
*/
JSONObject detect(String imageBase64) throws Exception;
/**
* 活体检测:
* 1、人脸基础信息:包括人脸框位置,人脸空间旋转角度,人脸置信度等信息。
* 2、 人脸质量检测:判断人脸的遮挡、光照、模糊度、完整度等质量信息。可用于判断上传的人脸是否符合标准。
* 3、 基于图片的活体检测:基于单张图片,判断图片中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节)。此能力可用于H5场景下的一些人脸采集场景中,增加人脸注册的安全性和真实性。
* @param image 人脸图片文件
* @return
*/
JSONObject verify(MultipartFile image) throws Exception;
/**
* 人脸对比:
* 1、两张人脸图片相似度对比:比对两张图片中人脸的相似度,并返回相似度分值;
* 2、 多种图片类型:支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比;
* 3、活体检测控制:基于图片中的破绽分析,判断其中的人脸是否为二次翻拍(举例:如用户A用手机拍摄了一张包含人脸的图片一,用户B翻拍了图片一得到了图片二,并用图片二伪造成用户A去进行识别操作,这种情况普遍发生在金融开户、实名认证等环节。);
* 4、质量检测控制:分析图片的中人脸的模糊度、角度、光照强度等特征,判断图片质量;
* @param userId 用户ID
* @param image 人脸图片文件
* @return
*/
JSONObject match(String userId, MultipartFile image) throws Exception;
/**
* 人脸搜索:
* 1、人脸搜索:也称为1:N识别,在指定人脸集合中,找到最相似的人脸;
* 2、人脸搜索 M:N识别:也称为M:N识别,待识别图片中含有多个人脸时,在指定人脸集合中,找到这多个人脸分别最相似的人脸
* @param image 人脸图片文件
* @return
*/
JSONObject search(MultipartFile image) throws Exception;
/**
* 人脸融合:对两张人脸进行融合处理,生成的人脸同时具备两张人脸的外貌特征(并不是换脸)
*
* 1、指定人脸:当图片中有多张人脸时,可以指定某一张人脸与模板图进行融合
* 2、 图像融合:将检测到的两张人脸图片进行融合,输出一张融合后的人脸
* 3、 黄反识别:利用图像识别能力,判断图片中是否存在色情、暴恐血腥场景、政治敏感人物
* @param template 人脸融合模板图片文件
* @param target 人脸融合人脸图片文件
* @return
*/
JSONObject merge(MultipartFile template, MultipartFile target) throws Exception;
}
```基于百度人脸识别接口实现:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;import com.alibaba.fastjson.JSONObject;
import com.baidu.ai.aip.spring.boot.FaceOption;
import com.baidu.ai.aip.spring.boot.FaceRecognitionV3Template;
import com.baidu.aip.util.Base64Util;@Component
public class BaiduFaceRecognitionProvider implements FaceRecognitionProvider {@Autowired
private FaceRecognitionV3Template faceRecognitionV3Template;
@Autowired
private FaceRecognitionProperties faceRecognitionProperties;
@Autowired
private IAuthzFaceDao authzFace;@Override
public String getName() {
return "baidu";
}@Override
public JSONObject detect(String imageBase64) throws Exception {
return getFaceRecognitionV3Template().detect(imageBase64);
}@Override
public JSONObject verify(MultipartFile image) throws Exception {
// 对文件进行转码
String imageBase64 = Base64Util.encode(image.getBytes());
return getFaceRecognitionV3Template().faceVerify(imageBase64, FaceOption.COMMON);
}@Override
public JSONObject match(String userId, MultipartFile image) throws Exception {
AuthzFaceModel model = getAuthzFace().getModel(userId);
String imageBase64_2 = Base64Util.encode(image.getBytes());
return getFaceRecognitionV3Template().match(model.getFace(), imageBase64_2);
}@Override
public JSONObject search(MultipartFile image) throws Exception {
// 对文件进行转码
String imageBase64 = Base64Util.encode(image.getBytes());
return getFaceRecognitionV3Template().search(imageBase64, faceRecognitionProperties.getGroup());
}@Override
public JSONObject merge(MultipartFile template, MultipartFile target) throws Exception {
return getFaceRecognitionV3Template().merge(template.getBytes(), target.getBytes());
}public FaceRecognitionV3Template getFaceRecognitionV3Template() {
return faceRecognitionV3Template;
}
}
```## Jeebiz 技术社区
Jeebiz 技术社区 **微信公共号**、**小程序**,欢迎关注反馈意见和一起交流,关注公众号回复「Jeebiz」拉你入群。
|公共号|小程序|
|---|---|
| ![](https://raw.githubusercontent.com/hiwepy/static/main/images/qrcode_for_gh_1d965ea2dfd1_344.jpg)| ![](https://raw.githubusercontent.com/hiwepy/static/main/images/gh_09d7d00da63e_344.jpg)|