机器学习去除马赛克案例(代码)
知道步兵和骑兵的区别么,步兵是没“码”的。今天就给大家介绍一种去码的方法
背景概念
废话不多说,先看下效果:
上图中的左边的图有很多干扰,右边是经过本文要介绍的方法所处理后的结果。从图片去码的原理来讲,在深度学习领域大致有两种方法:
-
学习法,就是通过大量代码的图片放入神经网络进行训练和学习,让神经网络可以学习到图片打码的一些特征,从而生成一个可以去掉码的模型。这种方法其实是深度学习领域常用的一种思路。问题是需要大量打标的图片,以及大量计算资源。
-
生成法,因为一个高像素的图片是由很多低像素元素拼接生成的,如果可以学习到图像的生成规则,找到图像的主体部分,就可以排除码的影响,也就是本文介绍的方法
方法2的论文,大家有兴趣可以去翻翻:https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf
步骤
第一步,
clone整个工程,github地址:https://github.com/DmitryUlyanov/deep-image-prior
第二步,
将代码放入有GPU的运行环境中(在无GPU环境下是无法执行的),这里博主用的是PAI-DSW:https://data.aliyun.com/product/learn
代码里有很多案例,除码的是inpainting.ipynb这个文件,
第三步,
运行整套代码,在Main Loop可以看到图片生成的整个过程,我这里截了几张过程图片大家可以看下。
总结
这个项目我觉得是一个比较有意思的小case,可以感受下机器生成图片的整个流程,希望对大家有帮助。