liyan 3148dc8161 修改图像分类数据集训练集处理和触发集生成代码 | пре 4 месеци | |
---|---|---|
docker | пре 4 месеци | |
tests | пре 4 месеци | |
watermark_generate | пре 4 месеци | |
.gitignore | пре 6 месеци | |
MANIFEST.in | пре 5 месеци | |
README.md | пре 4 месеци | |
setup.py | пре 5 месеци |
master
分支只包含项目打包配置和密码标签获取,数据集嵌入黑盒水印源码pip install -r requirements.txt
watermark_generate_pkg
├── MANIFEST.in # 打包过滤文件
├── README.md # 描述文件
├── setup.py # 打包配置文件
├── tests # 测试目录
│ ├── test_gen_qrcodes.py # 测试密码标签二维码生成,处理训练集,生成触发集,触发集提取密码标签
│ └── test_secret_func.py # 测试密码标签生成,密码标签验证
└── watermark_generate
├── __init__.py
├── controller # 服务接口目录
│ ├── __init__.py
│ ├── log_controller.py # 日志控制接口,支持控制日志级别,控制日志输出大小
│ ├── secret_controller.py # 密码标签生成接口,包括密码标签生成、密码标签验证、密码标签功能自检
│ └── verify_model_controller.py # 模型验证接口,包括从触发集提取密码标签,验证预测结果
├── domain
│ ├── __init__.py
│ ├── dataset_domain.py # 接口格式定义
│ └── secret_domain.py # 接口格式定义
├── requirements.txt # 项目依赖文件,安装依赖使用
├── run.py # 服务运行脚本
└── tools #工具脚本目录
├── __init__.py
├── dataset_process.py # 数据集处理脚本
├── gen_qrcodes.py # 密码标签生成二维码,从图片中提取二维码
├── logger_tool.py # 日志工具脚本
└── secret_func.py # 密码标签生成与验证工具,需要根据密码机实际提供接口进行修改,目前只有模拟实现
result = generate_qrcodes(key=secret, watermarking_dir=watermarking_dir, variants=4) if not result:
print('生成失败')
else:
print('生成成功')
2. 处理训练集
```python
from watermark_generate.tools.dataset_process import process_train_dataset
src_img_path = './dataset/VOC2007/JPEGImages/'
label_path = './dataset/VOC2007/labels/'
watermark_gen_dir = './dataset/watermarking'
process_train_dataset(watermarking_dir=watermark_gen_dir, src_img_dir=src_img_path, label_file_dir=label_path)
src_img_path = './dataset/VOC2007/JPEGImages/' trigger_dataset_dir = './dataset/trigger' watermark_gen_dir = './dataset/watermarking' generate_trigger_dataset(watermarking_dir=watermark_gen_dir, src_img_dir=src_img_path,
trigger_dataset_dir=trigger_dataset_dir, percentage=1)
4. 从触发集提取密码标签
```python
from watermark_generate.tools.dataset_process import extract_crypto_label_from_trigger
trigger_upload_dir = '../watermark_generate/extracted/'
label = extract_crypto_label_from_trigger(trigger_upload_dir)
result = compare_pred_result(result_file='./upload/006643.txt',pre_result_file='./resource/results/006643.txt') if result:
print('验证成功')
else:
print('验证失败')
## http接口定义
# AI水印黑盒水印HTTP接口
## POST 日志调整接口
POST /znwr/jit/ai/v1/log_setting
> Body 请求参数
```json
{
"level": "string",
"size": 0
}
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» level | body | string | 是 | 输出日志级别 | debug、info、warning、error |
» size | body | number | 是 | 日志最大大小限制 | 单位KB |
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
POST /znwr/jit/ai/v1/crypto-label
Body 请求参数
{
"info": {
"owner": {
"name": "string",
"id": "string"
},
"model": {
"name": "string",
"id": "string",
"version": "string",
"date": "2019-08-24T14:15:22Z"
}
}
}
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | GenLabelForm | 否 | none |
返回示例
200 Response
{
"code": 0,
"msg": "string",
"label": "string",
"cert": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | GenLabelResp |
POST /znwr/jit/ai/v1/crypto-check
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
POST /znwr/jit/ai/v1/verify-label
Body 请求参数
{
"label": "string",
"info": "string",
"cert": "string"
}
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | VerifyLabelForm | 否 | none |
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
POST /znwr/jit/ai/v1/verify-sign
Body 请求参数
{
"original": "string",
"signature": "string",
"cert": "string"
}
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | VerifySignatureForm | 否 | none |
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
POST /znwr/jit/ai/v1/extract_crypto_label
Body 请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» file | body | (binary) | 否 | 触发集压缩为zip格式压缩文件 |
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
POST /znwr/jit/ai/v1/verify_precision
Body 请求参数
名称 | 位置 | 类型 | 必选 | 中文名 | 说明 |
---|---|---|---|---|---|
body | body | object | 否 | none | |
» file | body | (binary) | 否 | 模型预测结果输出文件 |
返回示例
200 Response
{
"code": 0,
"msg": "string"
}
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | VerifyLabelResp |
{
"original": "string",
"signature": "string",
"cert": "string"
}
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
original | string | true | none | 原文 | none |
signature | string | true | none | 签名 | none |
cert | string | true | none | 签名证书 | none |
{
"code": 0,
"msg": "string",
"label": "string",
"cert": "string"
}
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
code | integer | true | none | 错误码 | none |
msg | string | true | none | 错误信息 | none |
label | string | true | none | 生成标签 | base64格式 |
cert | string | true | none | 签名证书 | base64格式 |
{
"info": {
"owner": {
"name": "string",
"id": "string"
},
"model": {
"name": "string",
"id": "string",
"version": "string",
"date": "2019-08-24T14:15:22Z"
}
}
}
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
info | object | true | none | 生成标签信息 | none |
» owner | object | true | none | 模型所有者信息 | none |
»» name | string | true | none | 所有者 | none |
»» id | string | true | none | id | none |
» model | object | true | none | 模型信息 | none |
»» name | string | true | none | 模型名 | none |
»» id | string | true | none | 模型id | none |
»» version | string | true | none | 模型版本 | none |
»» date | string(date-time) | true | none | 创建日期 | none |
{
"code": 0,
"msg": "string"
}
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
code | integer | true | none | 错误码 | none |
msg | string | true | none | 错误信息 | none |
{
"label": "string",
"info": "string",
"cert": "string"
}
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
label | string | true | none | 密码标签 | none |
info | string | true | none | 模型信息 | none |
cert | string | true | none | 签名证书 | none |
python setup.py sdist
项目目录会生成dist
目录,其中watermark_generate-1.0.tar.gz
即为发布包
pip install watermark_codec-1.0.tar.gz
确保已经安装docker和docker-compose
cd docker
docker-compose up -d