体验万象优图鉴黄服务-云服务器玩法在线实验

[复制链接]
查看: 349|回复: 0

27

主题

27

帖子

93

积分

注册会员

Rank: 2

积分
93
发表于 2020-4-15 15:46:05 | 显示全部楼层 |阅读模式
实验内容
智能鉴黄(Porn Identification)是基于腾讯优图的深度学习图像识别技术,可精确高效识别色情图片和性感图片,准确率高达99.95%。本实验使用 Bash 脚本,结合图片鉴黄 API 接口,带你体验如何对网络图片和本地图片进行智能鉴黄。

免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器

软件环境:
CentOS 7.2 64 位

一、准备工作
实名认证
使用万象优图服务需要先完成实名认证。

初始化配置
使用万象优图图片鉴黄 API 接口,我们需要先完成以下步骤:

获取腾讯云账号 APP ID
配置云 API 公钥/密钥
配置优图 bucket
首先在终端执行以下命令,创建目录 /data/try-pi,然后进入到该目录:
  1. mkdir -p /data/try-pi && cd $_
复制代码
然后在目录 /data/try-pi 下创建 init.sh 文件,在文件中贴入以下脚本:

示例代码:/data/try-pi/init.sh
  1. #!/bin/bash

  2. #########################################
  3. # 基础配置
  4. #########################################

  5. # 腾讯云账号 APP ID
  6. # 在如下单引号内填入你的 APPID
  7. export APP_ID=''

  8. # 云 API 公钥
  9. # 在如单引号内填入你的 SecretID
  10. export SECRET_ID=''

  11. # 云 API 密钥
  12. # 在如下单引号内填入你的 SecretKey
  13. export SECRET_KEY=''

  14. # 优图 bucket 名称
  15. # 如果你创建的 bucket 名称不叫 trial,替换为自己创建的即可
  16. export BUCKET_NAME='trial'
复制代码
可以看到配置文件中要求我们填入以下信息:
  • 腾讯云账号 APP ID
  • 云 API 公钥/密钥
  • 优图 bucket 名称

其中,腾讯云账号 APP ID 及 云 API 公钥/密钥 可以前往腾讯云控制台 云 API 密钥 - 个人 API 密钥 页面查看。
如果你还没有创建过密钥,可以在该页面点击 +新建密钥 按钮创建一个,然后将对应信息填入到 init.sh 文件中,按键 [Ctrl + S] 进行保存。
前往腾讯云控制台 万象优图 - Bucket管理 页面创建一个名称为 trial,其他选项默认即可。
Mac 用户请按键盘 Cmd + S 进行保存

将配置项导出为环境变量
在终端中执行以下命令,将各配置项导出为 Shell 环境变量:
  1. source init.sh
复制代码
可以通过以下命令来验证各配置项是否已正常导出:
  1. echo $APP_ID
复制代码
  1. echo $SECRET_ID
复制代码
  1. echo $SECRET_KEY
复制代码
  1. echo $BUCKET_NAME
复制代码


二、生成鉴权签名
新建脚本生成签名
基础配置完成后,我们在此基础上还需生成[鉴权签名],因为调用万象优图 API 接口需要用到它。我们将创建脚本来生成有效期为 30 天的多次有效的签名。
在目录 /data/try-pi 下创建 gen-sign.sh 文件,然后在文件中贴入以下脚本:
示例代码:/data/try-pi/gen-sign.sh
  1. #!/bin/bash

  2. #########################################
  3. # 生成多次有效的鉴权签名(有效期 30 天)
  4. # @see https://cloud.tencent.com/document/product/460/6968
  5. #########################################

  6. # 当前时间戳(秒)
  7. current_time=$(date +%s)

  8. # 到期时间戳(秒)
  9. expire_time=$(($current_time + 30 * 24 * 60 * 60))

  10. # 随机串,无符号 10 进制整数(不大于 10 位)
  11. rand='4815162342'

  12. # 历史遗留字段,写死为 0
  13. user_id='0'

  14. # 拼接签名串
  15. str="a=$APP_ID&b=$BUCKET_NAME&k=$SECRET_ID&e=$expire_time&t=$current_time&r=$rand&u=$user_id";

  16. # 使用 HMAC-SHA1 算法对签名串加密
  17. sign=$(echo -n $str | openssl dgst -sha1 -hmac $SECRET_KEY -binary)

  18. # 对加密串进行 Base64 编码
  19. sign=$(echo -n $sign$str | base64)

  20. # 移除多余的空格得到最终的鉴权签名
  21. sign=$(echo -n $sign | tr -d ' ')

  22. # 导出鉴权签名
  23. export AUTH_SIGN=$sign
复制代码
关于签名鉴权的详细介绍和生成方法可移步这里

将签名导出为环境变量
在终端中[执行以下命令],生成签名并将签名导出为环境变量:
  1. source gen-sign.sh
复制代码
可以通过以下命令来验证签名是否已正常导出
  1. echo $AUTH_SIGN
复制代码
该命令可多次执行,每次执行都会生成新的签名并将签名导出为环境变量
签名应该是一串经过 Base64 的字符串

三、体验智能鉴黄
准备鉴黄脚本
仍旧在目录 /data/try-pi 下创建 detect-porn.sh 文件,然后在文件中贴入以下脚本:

示例代码:/data/try-pi/detect-porn.sh
  1. #!/bin/bash

  2. #########################################
  3. # 鉴黄脚本
  4. # @see https://cloud.tencent.com/document/product/460/6900
  5. #########################################

  6. # 图片鉴黄 API 地址
  7. END_POINT='https://service.image.myqcloud.com/detection/porn_detect'

  8. # 使用帮助
  9. function usage() {
  10.   echo ""
  11.   echo "-h --help"
  12.   echo "-r --remote-image=网络图片地址"
  13.   echo "-l --local-image=本地图片地址"
  14.   echo ""
  15. }

  16. # 对网络图片进行鉴黄
  17. function detect_remote() {
  18.   remote_image=$1

  19.   curl -X POST \
  20.        -H "Content-Type: application/json" \
  21.        -H "Authorization: $AUTH_SIGN" \
  22.        -d '{"appid":'$APP_ID',"bucket":"'$BUCKET_NAME'","url_list":["'$remote_image'"]}' \
  23.        --silent \
  24.        $END_POINT
  25. }

  26. # 对本地图片进行鉴黄
  27. function detect_local() {
  28.   local_image=$1

  29.   curl -X POST \
  30.        -H "Content-Type: multipart/form-data" \
  31.        -H "Authorization: $AUTH_SIGN" \
  32.        -F "appid=$APP_ID" \
  33.        -F "bucket=$BUCKET_NAME" \
  34.        -F "image[0]=@$local_image" \
  35.        --silent \
  36.        $END_POINT
  37. }

  38. # 解析命令入参
  39. while [ "$1" != "" ]; do
  40.   PARAM=`echo $1 | awk -F= '{print $1}'`
  41.   VALUE=`echo $1 | awk -F= '{print $2}'`

  42.   case $PARAM in
  43.     -h | --help)
  44.       usage
  45.       exit
  46.       ;;

  47.     -r | --remote-image)
  48.       detect_remote $VALUE
  49.       ;;

  50.     -l | --local-image)
  51.       detect_local $VALUE
  52.       ;;

  53.     *)
  54.       echo "ERROR: 未知参数 "$PARAM""
  55.       exit 1
  56.       ;;
  57.   esac
  58.   shift
  59. done
复制代码
在终端中敲入以下命令查看鉴黄脚本使用说明:
  1. bash detect-porn.sh -h
复制代码
鉴黄脚本是对万象优图图片鉴黄 API 接口的实践。可以看到,我们的脚本支持对 网络图片 和 本地图片 进行鉴黄。

对网络图片进行鉴黄
在终端执行以下命令,可以看到对网络图片的鉴黄结果:
  1. bash detect-porn.sh --remote-image='https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/event/pc/ci-identify/css/img/demo/demo_8.jpg'
复制代码
输出结果应该是一段 JSON 字符串。

对本地图片进行鉴黄
在终端执行执行以下命令,将网络图片下载到云主机 /data/try-pi 目录下:
  1. wget https://imgcache.qq.com/open_proj/proj_qcloud_v2/gateway/event/pc/ci-identify/css/img/demo/demo_10.jpg -O /data/try-pi/demo.jpg
复制代码
下载完成后,右键刷新 /data/try-pi 目录,可以看到在该目录下新增了一个名为 demo.jpg 的图片,点击可预览该图片。

接下来,在终端执行以下命令,可以看到对该图片的鉴黄结果:
  1. bash detect-porn.sh --local-image='/data/try-pi/demo.jpg'
复制代码
输出结果应该是一段 JSON 字符串,点击这里可以查看输出结果各字段的含义。

当然,你也可以根据上述步骤,替换为自己准备的图片进行鉴黄体验。

完成实验
Well done!通过本实验,我们了解了如何使用图片鉴黄 API 接口(包括生成 API 密钥、创建优图 bucket、生成鉴权签名),以及如何使用接口对网络图片和本地图片进行鉴黄。
腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )