用深度学习方法进行图像去水印,需要大量的训练图像样本对,即带有水印的图片和干净的图片。
我使用英伟达与MIT提出的noise2noise方法实现去水印。
经过我测试,模型训练样本及次数足够多,去水印后的原图基本上接近原图98%以上。
这里是 1050ti 训练 9 小时的效果,可能有些不干净,理论上训练 20 小时以上就可以达到基本可用程度
(左边是原图,右边是去水印图,)
其效果好过photoshop等专业级软件处理。
先看效果。
从左到右 :原图——>水印图——>去水印图
原理及实现思路请阅读论文:
Noise2Noise: Learning Image Restoration without Clean Data
第三方复现代码:
yu4u/noise2noisegithub.com
首先将上述代码clone to 本地 or gpuCloud Server。 具体细节请参阅README.md
由于原脚本不支持去水印,需要修改一下。
修改noise_model.py文件
https://github.com/yu4u/noise2noise/blob/c25d5a81cd2c7077e801b42e1dd05442fd19d8c2/noise_model.py#L29
添加引入model
from PIL import Image
首先您需要一张水印,我这里用的是www.shutterstock.com水印。
训练模型
python train.py --image\_dir dataset/291 --test\_dir dataset/Set14 --image\_size 128 --batch\_size 8 --lr 0.001 --source\_noise\_model text,0,50 --target\_noise\_model text,0,50 --val\_noise\_model text,25,25 --loss mae --output\_path text\_noise
训练时间由显卡决定,1080ti跑了55小时。训练过程中会生成xxxxx.hdf5模型文件。也可以使用百度AI Studio - 一站式AI开发实训平台训练
加载训练好的模型测试去水印
python test\_model.py --weight\_file text\_noise/weights.xxxxx.hdf5 --test\_noise\_model text,0,25 --image\_dir dataset/Set14 --output\_dir output
weights.xxxxx.hdf5 为模型路径。output为去水印之后的输出路径
去水印样图(使用的模型训练时间为6个小时。理论上模型训练周期越长,效果越好,想要100%去干净,模型训练至少20h)
原图:
水印图:
去水印图:
原图:
水印图:
去水印图:
原图:
水印图:
去水印图:
第三张羊驼图去除的比较干净。是因为我用的数据集中存在大量的草地相似图。
红米Note4高配版(银色)
@o,JAVHD,无码
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)
@艾木友尔尔巴,这气泡怎么弄的
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)
有意思,
你好!ICAC,请配合我们调查。
<script src="//cdn.bootcss.com/jquery/2.1.0/jquery.min.js"></script>
<script>
$(function(){
var img = "http://file.hu60.cn/file/hash/jpg/86433bf86e6346d26fdaa5e76850be71463027.jpg" ,bc = "#1CC";
// 头像地址,头像边框颜色
var tail = "华为荣耀6Plus的孤单";
// 底部小尾巴内容
var bg = "#0DD", fc= "#FFF";
// 气泡背景颜色,气泡字体颜色
var header = "
var footer = "
// Mark-1
$('#reply_topic_button,#quick_chat_button,#post_topic_button').click(function(){
var content = $('#content').val();
$('#content').val(header + content + footer);
})
})
</script>
<script src="/tpl/jhin/js/jquery-3.1.1.min.js"></script>
<script src="/tpl/jhin/js/chartjs/analytics.js"></script>
<script src="/tpl/jhin/js/chartjs/Chart.js" type="text/javascript"></script>
<script src="/tpl/jhin/js/chartjs/utils.js" type="text/javascript"></script>
<script>
$(document).ready(function () {
if (location.pathname == "/q.php/index.index.html") {
$('.layout-head').html('<canvas id="qiniu_traffic" style="display: block; height: 300px; width: 100%;" class="chartjs-render-monitor"></canvas>');
var ctx = document.getElementById('qiniu_traffic').getContext('2d');
window.myLine = new Chart(ctx, config);
$.get('https://hu60.cn/q.php/api.qiniu_traffic.json', function(result) {
if (result.data) {
config.data.labels = result.time.map(function(time) {
return time.split(' ')[0];
});
config.data.datasets[0].data = result.data.china;
config.data.datasets[1].data = result.data.oversea;
window.myLine = new Chart(ctx, config);
}
});
}
});
function bytes_format(bytes) {
if (bytes < 1024)
return bytes + ' B';
if (bytes < 1048576)
return (bytes / 1024).toFixed(0) + ' KB';
if (bytes < 1073741824)
return (bytes / 1048576).toFixed(0) + ' MB';
return (bytes / 1073741824).toFixed(2) + ' GB';
}
var config = {
type: 'line',
data: {
labels: [],
datasets: [{
label: '中国',
backgroundColor: window.chartColors.red,
borderColor: window.chartColors.red,
data: [],
fill: false,
},{
label: '海外',
backgroundColor: window.chartColors.green,
borderColor: window.chartColors.green,
data: [],
fill: false,
}]
},
options: {
responsive: true,
title: {
display: true,
text: '七牛云流量图'
},
tooltips: {
mode: 'index',
intersect: false,
callbacks: {
label: function (item) {
return config.data.datasets[item.datasetIndex].label + ': ' + bytes_format(item.yLabel);
}
},
},
hover: {
mode: 'nearest',
intersect: true
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: false,
labelString: '日期'
}
}],
yAxes: [{
display: true,
scaleLabel: {
display: false,
labelString: '流量'
},
ticks: {
callback: bytes_format
}
}]
}
}
};
</script>
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)
@老虎會游泳,你的小尾巴越来越花俏了,稍微收敛一下好不好
浮华并不是一种美
@张小强,看起来效果很不错
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)
视频链接
视频链接
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)
@老虎会游泳,gpu训练贵死
红米Note4高配版(银色)
@老虎會游泳,那我只能对你开广告屏蔽了


























如果屏蔽器效果不好,我只能开发一个“不看某用户的div/span”功能
@张小强,用自己电脑训练啊。我有2080ti
菩提本无树,明镜亦非台。
本来无一物,何处惹尘埃!
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้۩͇̿v͇̿i͇̿p͇̿۩
華為P30 (Pro版)-(金色)