|
4 天之前 | |
---|---|---|
assets | 2 月之前 | |
tests | 2 月之前 | |
watermark_verify | 4 天之前 | |
.gitignore | 3 月之前 | |
MANIFEST.in | 3 月之前 | |
README.md | 4 天之前 | |
setup.py | 3 月之前 |
提供模型训练嵌入白盒水印和从已经嵌入白盒水印的模型中提取水印的功能
master
分支使用onnx权重文件进行水印提取流程om
分支使用昇腾平台专用om权重文件格式进行水印提取流程Ubuntu官方镜像(可手动下载,不使用以下命令)
可以从 Ubuntu WSL镜像 中下载适用于 WSL2 的 Ubuntu 镜像压缩包保存到本地。
wsl --import <Distribution Name> <Installation Folder> <Ubuntu WSL2 Image Tarball path>
以上命令运行成功后可以使用 wsl -l -v 查看已安装的发行版。
首先将发行版实例(第二个Ubuntu实例)运行起来:
wsl -d <Distribution Name>
这里的 很明显就是第三步中指定的名字。
Ascend-cann-toolkit_8.0.0.alpha002_linux-x86_64.run
和Ascend-cann-kernels-310b_8.0.0.alpha002_linux-x86_64.run
需要使用ATC工具进行模型转换,安装Ascend-cann-toolkit_8.0.0.alpha002_linux-x86_64.run
后即可使用
AlexNet、VGG16、GoogleNet、ResNet转换
# 修改--model参数,指定onnx文件位置,--output参数,指定输出的om文件名
atc --model="model.onnx" --framework=5 --output=googlenet --input_shape="input:-1,3,224,224" --dynamic_batch_size="1,10" --soc_version=Ascend310B4 --log=info --host_env_cpu=aarch64
SSD转换
atc --model="model.onnx" --framework=5 --output=ssd --input_shape="images:1,3,300,300" --soc_version=Ascend310B4 --log=info --host_env_cpu=aarch64
YOLOX转换
atc --model="yolox.onnx" --framework=5 --output=yolox --input_shape="images:1,3,640,640" --soc_version=Ascend310B4 --log=info --host_env_cpu=aarch64
Faster-RCNN转换
atc --model="model.onnx" --framework=5 --output=rcnn --input_shape="input_image:1,3,600,600" --soc_version=Ascend310B4 --log=info --host_env_cpu=aarch64
Next
create
,添加远程python解释器
printenv
命令,获取当前开发板所有环境变量信息ok
,apply
,重新运行程序即可验签通过,模型水印提取检测成功
白盒水印提取流程
初始化参数和参数检查(模型绝对路径、公钥文件public.key、投影矩阵导出文件key.npy、嵌入水印的卷积层位置)
获取指定卷积层,通过运算,提取密码标签
对提取的密码标签进行验签
验签通过,模型水印提取检测成功
model_watermark_detect
├── MANIFEST.in # 打包描述文件
├── README.md # 项目说明文档
├── setup.py # 打包配置文件
├── tests
│ ├── README.md
│ ├── classification_performance_loss_test.py # 图像分类模型性能测试脚本
│ ├── detection_performance_loss_test.py # 目标检测模型性能测试脚本
│ ├── inference_test.py # 模型推理模块测试脚本
│ ├── prune_tool.py # onnx文件剪枝工具
│ ├── models # 待测模型
│ ├── verify_tool_accuracy_test.py # 模型水印检测成功率测试脚本
│ └── verify_tool_test.py # 模型水印检测测试
└── watermark_verify # 模型水印提取验证工具
├── __init__.py
├── inference # 模型推理流程
│ ├── __init__.py
│ ├── classification_inference.py
│ ├── rcnn_inference.py
│ ├── ssd_inference.py
│ └── yolox_inference.py
├── process # 各种模型水印提取验证流程、每个文件代表指定类型模型提取验证流程
│ ├── __init__.py
│ ├── classification_all_whitebox_process.py
│ ├── classification_pytorch_blackbox_process.py
│ ├── classification_tensorflow_blackbox_process.py
│ ├── faster-rcnn_pytorch_blackbox_process.py
│ ├── faster-rcnn_pytorch_whitebox_process.py
│ ├── general_process_define.py
│ ├── googlenet_vgg_all_whitebox_process.py
│ ├── ssd_pytorch_blackbox_process.py
│ ├── ssd_pytorch_whitebox_process.py
│ ├── yolox_pytorch_blackbox_process.py
│ └── yolox_pytorch_whitebox_process.py
├── tools # 工具脚本目录
│ ├── __init__.py
│ ├── evaluate_tool.py
│ ├── general_tool.py
│ ├── parse_qrcode_label_file.py
│ ├── qrcode_tool.py
│ ├── secret_label_func.py
│ └── sign_verify.py
├── utils # 目标检测模型推理所需工具代码
│ ├── anchors.py
│ └── utils_bbox.py
└── verify_tool.py # 验证工具接口
inference保存各种模型onnx权重文件的推理流程,可根据模型类型选择指定文件使用onnx权重进行推理
rcnn_inference.py :Faster-RCNN模型推理流程
```python from watermark_verify.inference.rcnn_inference import FasterRCNNInference from watermark_verify.inference.ssd_inference import SSDInference from watermark_verify.inference.yolox_inference import YOLOXInference
if name == 'main':
# 模型文件位置
model_filename = "/mnt/e/DevTools/workspace/model_watermark_detect/tests/models/origin/faster-rcnn/model.onnx"
# 图片位置
image_path = 'VOC2007/JPEGImages/000001.jpg'
dets = FasterRCNNInference(model_filename).predict(image_path) # 使用Faster-RCNN进行推理,获取模型输出结果
# dets = SSDInference(model_filename).predict(image_path) # 使用SSD进行推理,获取模型输出结果
# dets = YOLOXInference(model_filename).predict(image_path) # 使用YOLOX进行推理,获取模型输出结果
print(f"dets: {dets}")
## process目录下文件说明
process保存各种模型黑盒水印或白盒水印提取验证流程,文件名定义如下:
```text
[模型名称]_[支持深度学习框架]_[模型水印类型]_process.py
python setup.py sdist
项目目录会生成dist
目录,其中watermark_detector-1.0.tar.gz
即为发布包
pip install watermark_detector-1.0.tar.gz