提交修改

This commit is contained in:
quyixiao 2025-03-15 17:52:19 +08:00
parent 07a2e69405
commit 6a78619935
12 changed files with 356 additions and 4 deletions

View File

@ -15,7 +15,7 @@ import org.springframework.stereotype.Component;
/**
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectLivingFace
* 行人入侵检测
*
*/
@Component
@Slf4j

View File

@ -21,6 +21,9 @@ public class ACompareFaceWithMaskRequest {
*/
public String urlA;
/***
*
*/
private String base64A;
/**

View File

@ -5,10 +5,19 @@ import lombok.Data;
/**
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectBodyCount
*
* 人体计数
*
* DetectBodyCount
*
*
*/
@Data
public class ADetectBodyCountRequest extends ACommonTextRequest {
}

View File

@ -10,16 +10,13 @@ import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.face.CharacterRecognizeReq;
import com.heyu.api.request.face.CompareFaceReq;
import com.heyu.api.resp.face.CompareFaceResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.AbstractPropertyAccessor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.chrono.IsoChronology;
/****
* https://next.api.aliyun.com/api/facebody/2019-12-30/CompareFace?tab=DEMO&lang=JAVA

View File

@ -0,0 +1,102 @@
package com.heyu.api.controller.face;
import com.aliyun.facebody20191230.models.DeepfakeFaceResponse;
import com.aliyun.facebody20191230.models.DeepfakeFaceResponseBody;
import com.heyu.api.alibaba.handle.facebody.ADeepfakeFaceHandle;
import com.heyu.api.alibaba.request.facebody.ADeepfakeFaceRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.face.DeepfakeFaceReq;
import com.heyu.api.resp.face.DeepfakeFaceListResp;
import com.heyu.api.resp.face.DeepfakeFaceResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DeepfakeFace?RegionId=cn-shanghai&tab=DEMO&lang=JAVA
*
*换脸鉴别
*
* DeepfakeFace
*
*
* 换脸鉴别基于图像算法 AI 技术实现对图片人脸的真伪进行灵敏检测和深度分析能力范围支持
*
* 鉴别图片中的人脸是否为 AI 换脸算法所深度合成的假脸
* 鉴别图片中的人脸是否为 AI 人脸属性编辑生成类算法所深度合成的假脸深度伪造技术是指利用深度学习实现图片或视频换脸人脸编辑生成的技术
* 关于该接口功能的示例图如下
*
* 未经算法合成
*
*
* 应用场景
* 打击换脸视频网络传播互联网娱乐性质换脸小程序APP 应用爆火换脸鉴别技术可以识别出网络短视频中的伪造视频人脸杜绝视频换脸造假
* 打击互联网 ID 换脸诈骗深度伪造技术高频使用假视频与社交网络结合深深影响舆论走向和诱导诈骗换脸鉴别可识别网上业务办理中的人脸伪造视频减少网络诈骗
* 打击色情娱乐等黑灰产业互联网的深度伪造合成的色情视频数量巨大换脸鉴别可以识别此类伪造视频减少伪造视频人脸色情内容传播切断色情传播链路
* 人脸特征编辑鉴别真人 ID 版权核验通过换脸鉴别可以识别出版权素材库中人脸属性编辑生成算法所深度合成的假脸图片素材杜绝换脸造假杜绝人脸版权侵权行为
*
*
* 特色优势
* 反制 AI 技术滥用换脸鉴别基于达摩院人脸图像算法和 Deepfake 鉴别技术提供对图像中的人脸特征进行全方位分析利用 AI 技术反制换脸合成脸人脸特征编辑生成这类 AI 技术的滥用保护用户合法权益维护社会公共安全
* 领先鉴别技术基于图片中人像目标的高维度全量特征换脸鉴别服务涵盖依据视频图像的像素纹理级别的低阶特征到具有全局语义的高阶特征对图像进行全方位高语义多层次组合分析攻防一体式的训练极大提升合成人脸图片检出率
* 准确率高换脸鉴别结合阿里云多年人脸识别技术能力和大数据安全技术能力能对视频图像中 AI 换脸AI 人脸生成等技术进行准确识别判断 AI 换脸攻击识别准确率高
* 支持单个或多个人脸判断逻辑可直接调用的 API 接口服务简单易用易被集成兼容性强
*
*
*/
@Slf4j
@RestController
@RequestMapping("/face")
@NotIntercept
public class DeepfakeFaceController extends BaseController {
@Autowired
private ADeepfakeFaceHandle aDeepfakeFaceHandle;
@RequestMapping("/deepfake")
@CacheResult
public R deepfake(DeepfakeFaceReq req) {
ADeepfakeFaceRequest aDeepfakeFaceRequest = new ADeepfakeFaceRequest();
List<DeepfakeFaceResp> faces = new ArrayList<>();
ApiR<DeepfakeFaceResponse> aR = aDeepfakeFaceHandle.handle(aDeepfakeFaceRequest);
if(aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())){
DeepfakeFaceResponseBody responseBody = aR.getData().getBody();
DeepfakeFaceResponseBody.DeepfakeFaceResponseBodyData responseBodyData = responseBody.getData();
List<DeepfakeFaceResponseBody.DeepfakeFaceResponseBodyDataElements> elements = responseBodyData.getElements();
for (DeepfakeFaceResponseBody.DeepfakeFaceResponseBodyDataElements element : elements) {
DeepfakeFaceResp faceResp = new DeepfakeFaceResp();
faceResp.setFaceNumber(element.getFaceNumber());
faceResp.setImageUrl(element.getImageURL());
List<DeepfakeFaceListResp> faceListResps = new ArrayList<>();
List<DeepfakeFaceResponseBody.DeepfakeFaceResponseBodyDataElementsResults> results = element.getResults();
if(CollectionUtils.isNotEmpty(results)){
for (DeepfakeFaceResponseBody.DeepfakeFaceResponseBodyDataElementsResults result : results) {
DeepfakeFaceListResp resp = new DeepfakeFaceListResp();
resp.setConfidence(result.getConfidence());
resp.setLabel(result.getLabel());
faceListResps.add(resp);
}
}
faceResp.setDeepfakeFaceListResps(faceListResps);
}
return R.ok().setData(faces);
}
return R.error();
}
}

View File

@ -0,0 +1,63 @@
package com.heyu.api.controller.face;
import com.aliyun.facebody20191230.models.DetectBodyCountResponse;
import com.aliyun.facebody20191230.models.DetectBodyCountResponseBody;
import com.heyu.api.alibaba.handle.facebody.ADetectBodyCountHandle;
import com.heyu.api.alibaba.request.facebody.ADetectBodyCountRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.face.CompareFaceReq;
import com.heyu.api.request.face.DetectBodyCountReq;
import com.heyu.api.resp.face.DetectBodyCountResp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectBodyCount?RegionId=cn-shanghai
*
* 人体计数
*
* DetectBodyCount
*
* 功能描述
* 人体计数能力可以检测输入图片中人体的个数
*
*
*/
@Slf4j
@RestController
@RequestMapping("/face")
@NotIntercept
public class DetectBodyCountController extends BaseController {
@Autowired
private ADetectBodyCountHandle aDetectBodyCountHandle;
@RequestMapping("/count")
@CacheResult
public R count(DetectBodyCountReq req) {
DetectBodyCountResp detectBodyCountResp = new DetectBodyCountResp();
ADetectBodyCountRequest aDetectBodyCountRequest = new ADetectBodyCountRequest();
aDetectBodyCountRequest.setImageBase64(req.getImageBase64());
aDetectBodyCountRequest.setImageUrl(req.getImageUrl());
ApiR<DetectBodyCountResponse> aR = aDetectBodyCountHandle.handle(aDetectBodyCountRequest);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectBodyCountResponseBody responseBody = aR.getData().getBody();
DetectBodyCountResponseBody.DetectBodyCountResponseBodyData responseBodyData = responseBody.getData();
detectBodyCountResp.setPersonNumber(responseBodyData.getPersonNumber());
return R.ok().setData(detectBodyCountResp);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,21 @@
package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectPedestrianIntrusion
*
* 行人入侵检测
*
* DetectPedestrianIntrusion
*
*
*/
@Data
public class CompareFaceWithMaskReq extends BaseRequest {
}

View File

@ -0,0 +1,26 @@
package com.heyu.api.request.face;
import com.heyu.api.controller.BaseController;
import com.heyu.api.request.CommonReq;
import lombok.Data;
import java.util.List;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DeepfakeFace?RegionId=cn-shanghai&tab=DOC&lang=JAVA
*换脸鉴别
*
* DeepfakeFace
*
*/
@Data
public class DeepfakeFaceReq extends BaseController {
/***
* 所有的图片
*/
private List<CommonReq> images;
}

View File

@ -0,0 +1,20 @@
package com.heyu.api.request.face;
import com.heyu.api.data.dto.BaseRequest;
import com.heyu.api.request.CommonReq;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectBodyCount?RegionId=cn-shanghai
*/
@Data
public class DetectBodyCountReq extends CommonReq {
}

View File

@ -0,0 +1,51 @@
package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DeepfakeFace?RegionId=cn-shanghai&tab=DOC&lang=JAVA
*
*换脸鉴别
*
* DeepfakeFace
*
*/
@Data
public class DeepfakeFaceListResp extends BaseResp {
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DeepfakeFace?RegionId=cn-shanghai&tab=DOC&lang=JAVA
*
*
* 检测结果的分类取值包括
*
* normalface真脸照片
*
* deepfakeface换脸照片
*
* 如果未检测到人脸则Label 返回为 deepfake
*
* 示例值
*
* normalface
*/
private String label;
/***
*
* 取值范围为[0.00,100.00]数值越低表示属于真脸的概率越大
*
* 示例值:
* 36.6455
*
*
*/
private Float confidence;
}

View File

@ -0,0 +1,35 @@
package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
import java.util.List;
@Data
public class DeepfakeFaceResp extends BaseResp {
/**
* 对应请求中的图像 URL 地址
*
* 示例值:
* http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/facebody/DeepfakeFace/DeepfakeFace1.jpg
*/
private String imageUrl;
/***
*单张图片检测到的人脸数量展开详情
*
* 注意 请注意该值为 Long 类型在某些语言中可能存在精度丢失的风险请小心使用
* 示例值:
* 1
*/
private Long faceNumber;
/***
*/
private List<DeepfakeFaceListResp> deepfakeFaceListResps;
}

View File

@ -0,0 +1,25 @@
package com.heyu.api.resp.face;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
/***
* https://next.api.aliyun.com/api/facebody/2019-12-30/DetectBodyCount?RegionId=cn-shanghai
*人体计数
*
* DetectBodyCount
*
*/
@Data
public class DetectBodyCountResp extends BaseResp {
/***
* 人体的个数
*
* 示例值:
* 6
*/
private Integer personNumber;
}