远程监考智能防作弊SDK
通过阅读本文,您可以了解远程监考场景下智能防作弊SDK详细信息。
SDK介绍
远程监考智能防作弊SDK是阿里云针对远程监考场景研发的一款智能监考SDK,可对考试场景中的各种可疑作弊行为通过AI进行智能检测。目前支持的检测行为有:
考场人员检测:人数检测、人员进入/离开
考生物品检测:打电话、戴帽子、戴手表、戴头式耳机、入耳式耳机
考生行为检测:低头/抬头、转头/摇头、起立/坐下、举手
人声检测:说话声音检测
环境要求
开发环境
开发环境 | 说明 |
VSCode | 建议使用VSCode 1.60或以上版本。下载地址,请参见Visual Studio Code。 |
Chrome | 建议使用Chrome 94或以上版本。下载地址,请参见Chrome。 |
运行环境
运行时各平台浏览器版本要求如下:
平台 | Chrome | Edge | Safari |
Windows | 69+ | 16+ | - |
macOS | 69+ | 16+ | 16+ |
Android | 58+ | all | - |
iOS | 69+ | 16+ | 16+ |
购买License
使用之前,您需要购买License。
SDK使用示例
导入SDK
在页面中引入JS文件:
<script src="https://g.alicdn.com/apsara-media-box/imp-cheat-detection-wasm/1.0.1/aliyun-detect-engine.js"></script>
SDK初始化
const cheatEngine = new AliyunDetectEngine();
const config = {
objectDetect: true, //电子设备检测
scenePersonEnter: true, //人物进入
scenePersonExit: true, //离开
scenePersonInRectRatio: true, //画面占比
actionHeadUpDown: true, //低/抬头
actionHeadLeftRight: true, //转头
actionHeadShaking: true, //摇头
actionPoseStandup: true, //起立
actionPoseSitting: true, //坐下
actionPoseHandup: true, //举手
actionPersonSpeech: true, //声音
licenseKey: '',//sdk license
licenseDomain: '' //sdk根域名
}
await cheatEngine.init(config);
基于摄像头流作弊检测
// 获取video元素
const video = document.querySelector('video');
// 获取摄像头
const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
video.srcObject = stream;
video.play();
cheatEngine.startDetect(video);
cheatEngine.on('detectResult', (jsonResult) => {
console.info(jsonResult);
});
结果输出:
{
"actionPersonSpeech": 1.0,
"actionPoseHandup": 0,
"actionPoseSitting": 0,
"actionPoseStandup": 0,
"faceCount": 1,
"scenePersonInRectRatio": 0.13
}
参数 | 类型 | 说明 |
objectHeadPhone | number | 戴头式耳机检测分值。 |
objectEarPhone | number | 戴入耳式耳机检测分值。 |
objectDetectCellPhone | number | 打电话检测分值。 |
objectDetectWatch | number | 戴手表检测分值。 |
objectDetectHat | number | 戴帽子检测分值。 |
scenePersonEnter | number | 人物进入检测分值。 |
scenePersonExit | number | 人物离开检测分值。 |
scenePersonInRectRatio | number | 画面占比检测分值。 |
actionHeadUpDown | number | 低/抬头检测分值。 |
actionHeadLeftRight | number | 转头检测分值。 |
actionHeadShaking | number | 摇头检测分值。 |
actionPoseStandup | number | 起立检测分值。 |
actionPoseSitting | number | 坐下检测分值。 |
actionPoseHandup | number | 举手检测分值。 |
actionPersonSpeech | number | 人声检测分值。 |
factCount | number | 检测到的人数。 |
检测引擎注销
cheatEngine.destroy();
API说明
SDK初始化
/**
* SDK初始化
* @param options 检测参数配置
* @param renderCanvas 用于渲染输出检测点位的Canvas,可为空
* @returns
*/
public async init(options: DetectInitOptions, renderCanvas?: HTMLCanvasElement)
DetectInitOptions 类型
interface DetectInitOptions {
fps?: number; //检测帧率,默认为5。
detectTimeout?: number; //单次检测超时时间,默认为5秒。
objectDetect?: boolean; //是否启用电子设备检测。
scenePersonEnter?: boolean; //是否启用人物进入检测。
scenePersonExit?: boolean; //是否启用人物离开检测。
scenePersonInRectRatio?: boolean; //是否启用画面占比检测。
actionHeadUpDown?: boolean; //是否启用低/抬头检测。
actionHeadLeftRight?: boolean; //是否启用转头检测。
actionHeadShaking?: boolean; //是否启用摇头检测。
actionPoseStandup?: boolean; //是否启用起立检测。
actionPoseSitting?: boolean; //是否启用坐下检测。
actionPoseHandup?: boolean; //是否启用举手检测。
actionPersonSpeech?: boolean; //是否启用人声检测。
detectSkipFrame?: number; //每隔多少帧检测一次。
enableRender: boolean; //是否启用渲染支持。
licenseKey?: string; //授权LcenseKey。
licenseDomain?: string; //授权根域名。
}
作弊检测
/**
* 作弊行为动作检测
* @param mediaElement 媒体对象
* @returns 检测提交引擎是否成功,提交成功返回 true;当前正在检测或者被 fps 限制,则返回 false
*/
public startDetect(mediaElement: HTMLVideoElement)
引擎注销
/**
* 检测引擎注销
*/
destroy()
更新检测FPS帧率
/**
* 用于设置每秒检测的帧率,即每秒检测多少次,默认为5fps
* @param fps 检测限制 FPS
*/
public updateFpsLimit(fps: number): void
更新检测超时时间
/**
* 用于配置每次检测的超时时间(毫秒),超时后直接返回检测失败
* @param timeout 检测任务超时时间 毫秒
*/
public updateDetectTimeout(timeout: number): void
Demo体验
远程监考智能防作弊SDK Demo源码:ActionDetectionDemos_Web。
在线体验:请提交工单获取在线体验地址。