# 图片鉴黄服务(异步)
# 服务说明
基于瀑布型深度卷积神经网络技术和CascadeNet识别技术,通过学习和分析图片影像的肤色、姿态和场景等,让机器替代人工进行图像审核。支持提供图片文件或者下载地址,自动获取图片进行智能识别,并返回图片的色情分值,可高效识别色情图片和性感图片,有效降低业务风险,减少人力成本。
说明
当前接口为异步接口,先添加任务,需要通过任务编号查询扫描结果。
# 应用场景
对文章配图、图片相册等UGC内容、用户的头像、用户上传的图片进行实时自动审核,迅速准确定位不良内容,告别传统人工审核时代,提高效率。
# 接口说明
鉴定图片包含色情信息,文件存储依赖云存储服务https://scs.sinacloud.com (opens new window),图片原文件需要存储到云存储的bucket,任务完成后文件也会写到云存储中;此接口为异步完成,添加任务后会马上返回任务ID,通过任务状态接口可以查询任务的状态。
# 接口地址
http://g.sae.sina.com.cn/pictureidentificate/task/add (opens new window)
# 签名规则
新增任务时需要签名,签名规则请参考签名规则章节。
# 请求方式
POST
# 请求参数列表
参数 | 说明 | 是否必选 | 样例 |
---|---|---|---|
task_type | 任务类型 | 是 | 必须填写pron/detect |
bucket | 视频源文件的bucket名称 | 是 | opensource |
accesskey | SCS Bucket的accesskey | 是 | 无 |
secretkey | SCS Bucket的secretkey | 是 | 无 |
source_video_path | 待处理文件在SCS中的路径 | 是 | 2018apple/1.jpg |
success_callback | 成功后的回调地址 | 否 | http://2.robotsae.sinaapp.com/3.php,调用接口后接口应该返回1表示通知成功,最多会回调5次,全部失败后不再回调。回调时携带的参数(POST请求)请参考以下表格。 |
# 执行完成时回调
如果在添加任务时添加了success_callback
参数,则在任务执行成功时会回调您设置的通知地址,并以POST的方式带上以下参数:
array(3) {
["code"]=>
int(0)
["desc"]=>
string(0) ""
["result"]=>
array(1) {
["rows"]=>
array(1) {
[0]=>
array(2) {
["data"]=>
array(4) {
["result"]=>
int(1)
["score"]=>
float(0.92569363117218)
["label"]=>
int(2)
["name"]=>
string(4) "porn"
}
["type"]=>
string(5) "porn4"
}
}
}
}
回调的参数 | 说明 | 样例 |
---|---|---|
code | 返回值 | 0为成功, 其他为错误 |
desc | 错误描述 | - |
result | 执行结果 | - |
result中包含多个数组,表示检测结果数据集,每种检测结果一行,其中type表示检测类型,data为检测结果详情,字段意义如下:
字段 | 说明 |
---|---|
result | 是否坚定为色情图片,1表示是,0表示否 |
score | 检测值,值越大概率越大 |
label | 类型,当前分为低速类和色情类 |
name | 类型名称(avanime, avposter, nakedbody, normal, oralcoitus, porn, sexy) |
name中字段的含义如下:
名称 | 说明 |
---|---|
Avanime | 动漫 |
Avposter | 色情海报 |
Nakedbody | 裸体 |
Normal | 正常 |
Oralcoitus | 性交色情 |
Porn | 混杂色情 |
Sexy | 性感 |
# 回调接口输出格式
回调接口的输出:
- 你的程序收到调用时,如果处理成功,则输出1,表示执行成功
- 回调的接口返回非1均认为回调失败
# 添加任务的输出示例
{
"code": 0,
"message": "success",
"data": 7475878
}
data字段是异步任务的ID。
# 查询任务结果
从任务状态接口返回中Result
字段可以获取执行状态:
{
"code": 0,
"message": "success",
"data": {
"Id": 14067333,
"RunAt": "2018-12-12T14:42:23+08:00",
"UpdateAt": "2018-12-12T14:42:34+08:00",
"ErrorCount": 0,
"MaxRetry": 2,
"LastError": "",
"Result": "{\"code\":0,\"message\":\"success\",\"data\":{\"code\":0,\"desc\":\"\",\"result\":{\"rows\":[{\"data\":{\"result\":1,\"score\":0.92569363117218,\"label\":2,\"name\":\"porn\"},\"type\":\"porn4\"}]}}}",
"Status": "DONE"
}
}
Result中字段的含义同执行完成时回调处的说明。
# PHP调用示例
# 添加检测任务
<?php
require('gapi.php');
use sinacloud\sae\Gapi;
// SAE_ACCESSKEY和SAE_SECRETKEY需要改为你的应用的accesskey和secretkey
$i = new Gapi(SAE_ACCESSKEY, SAE_SECRETKEY);
$post_data = array();
$post_data['task_type'] = 'pron/detect';
$post_data['accesskey'] = '云存储的accesskey';
$post_data['secretkey'] = '云存储的secretkey';
$post_data['bucket'] = '云存储的bucket';
// 图片在云存储下的路径
$post_data['source_file_path'] = '2018apple/1.jpg';
$ret = $i->post('/pictureidentificate/task/add', $post_data);
var_dump($ret);
调用完成后,接口会返回:
{"code":0,"message":"success","data":14096057}
其中data字段为异步任务的id。
# 查询任务状态
通过以上获取的异步任务id,通过任务查询接口可以查询当前任务的执行状态:
<?php
// 换成你的任务id
$id = 14096057;
require('gapi.php');
use sinacloud\sae\Gapi;
// SAE_ACCESSKEY和SAE_SECRETKEY需要改为你的应用的accesskey和secretkey
$i = new Gapi(SAE_ACCESSKEY, SAE_SECRETKEY);
$post_data = array();
$post_data['task_id'] = $id;
$ret = $i->post('/pictureidentificate/task/status', $post_data);
echo($ret);
接口会返回异步任务的状态:
{
"code": 0,
"message": "success",
"data": {
"Id": 14096057,
"RunAt": "2018-12-13T16:29:38+08:00",
"UpdateAt": "2018-12-13T16:29:50+08:00",
"ErrorCount": 0,
"MaxRetry": 2,
"LastError": "",
"Result": "{\"code\":0,\"message\":\"success\",\"data\":{\"code\":0,\"desc\":\"\",\"result\":{\"rows\":[{\"data\":{\"result\":1,\"score\":0.92569363117218,\"label\":2,\"name\":\"porn\"},\"type\":\"porn4\"}]}}}",
"Status": "DONE"
}
}
# 下载代码
以上demo代码可以从这里点击下载。