一个基于可视水印检测识别的数字媒体溯源应用系统,是我的大作业项目,包含这个系统以及一个开源的大规模常见水印图像数据集(Large-scale Common Watermark Dataset, LCWD)。
输入一个带有可视水印的图片或视频,系统会检测定位到水印所在的区域,然后将其提取出来,然后借助百度AI开放平台的OCR和logo识别以及Bing搜索引擎,溯源到这个图片或视频的源头。
先安装好Python3.8
和PyTorch1.7+
。
# 要Clone到子模块!(可能会比较大,应为包含好几个yolo的模型,避免之后网络不好又要去下载)
git clone https://github.com/Kamino666/watermark-tracer.git --recurse-submodules
# 安装相应的库
pip install -r requirements.txt
接着为了使用百度开放AI平台的接口,要去申请两个API(都有免费额度):
然后在项目目录新建一个baidu_cfg.json
的文件,将key填入
{
"ak": "Your API key",
"sk": "Your Secret key",
}
python trace.py
# 一些可选参数
--no_api # 不使用百度API,不使用溯源功能
--no_tk # 不使用tkinter,使用matplotlib进行显示
-m <图片视频路径> # 在命令行指定路径,不指定也可以
本项目训练的数据集是一个新构建的大规模常见水印图像数据集(Large-scale Common Watermark Dataset, LCWD),可以从Large-scale Common Watermark Dataset | Kaggle下载。
数据集的介绍可见我的论文。
根据情况修改run_train.sh
和run_detect.sh
中的路径
cd yolov5
./run_train.sh # 训练
./run_detect.sh # 测试
更多训练参数可见ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
若要使用新的模型,可在trace.py
中搜索torch.hub.load
,更改path
参数。
假如对公布的数据集不满意,也可尝试自己调整参数,生成新的数据集,数据集的详细构建方法可见我的论文,使用以下命令生成:
cd data
python generator.py \
--images_dir <背景图片目录> \
--logo_dir <水印logo目录> \ # 可在data/logos查看目录结构
--output_dir <输出目录> \
--num_workers <使用的进程数> \
--seed <随机种子> \
-n <生成的数量> \
--test # 测试用,详情请看代码
若要调整水印生成的格式,请参考代码WatermarkedImageGenerator
类。
此外,在tools
目录下有连个jupyter notebook可以参考用来划分和可视化数据集。
@misc{Liu2022watermark,
title={Watermark-Tracer},
url={https://github.com/Kamino666/watermark-tracer},
journal={GitHub},
author={Zihao, Liu},
year={2022},
month={6}
}
中国传媒大学 信息与通信工程学院 田佳音老师、杨成老师和和于瀛老师(无顺序)
ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
Douban Movie Short Comments Dataset | Kaggle
百度AI开放平台-全球领先的人工智能服务平台 (baidu.com)
zhu733756/searchengine: 元搜索引擎 searchengine 元数据 元搜索 (github.com)
X-CCS/remove-watermarks: implementation of "On the Effectiveness of Visible Watermarks" (github.com)