我们要做一个视频风格转换的程序,有点类似一个视频的滤镜。比如说将一个正常的视频转化为漫画风格视频。
深度学习算法中已经有人提出了一种模型,能够做得到类似的事情,我们可以有效的加以利用。
这种算法接受两个输入图片,一张作为风格模板,一张作为原图。对原图进行修改,输出一张参照风格模板修改过后的图片。具体网络是怎么实现的,结构是怎么样的我都不清楚,没有仔细了解过,这部分需要大家自己学习一下,可以搜索关键词“深度学习”、“机器学习”、“风格转换”等等。 好像听说是运用到了一种叫做GAN(对抗生成网络)的结构,可能是GAN的一种变体吧。
拿到可以使用的模型之后,一个最直观的思路就是把视频分成一帧一帧的图片,然后分别丢到模型里面去得到转化后的图片,然后再拼起来得到修改后的视频。
但是这样显然效率太低,考虑到一个长度为5分钟的视频,以每秒20帧计算,那么就会有6000张图片需要进行处理。这类模型的运算效率现在我不清楚,但猜测不会很快,这样的话转换视频所需的时间就会长到无法接受。我目前想到了一种优化思路,那就是借鉴视频压缩的技术。因为相邻两帧视频之间会有很大的相似度,所以完全可以不把每一帧图片都扔到模型中训练,而是比如说选取1000帧(等距分布在整个视频中)扔到模型中转化,由这1000转化后的图片推测剩下的5000帧,形成连贯的视频。我记得上数字图像处理课的时候好像讲过相似的东西。实际上视频就会利用这样的手段进行压缩。可能会用到一个叫残差的概念。
主开发语言是python3
tensorflow + keras
tensorflow
是一个很出名的机器学习框架,也挺好用的,安装也还算方便。但有一点要注意的是,为了提高模型的训练速度,最好安装tensorflow
的GPU版本,GPU版本相对于CPU版本会有很大的性能提升,缩短训练模型需要的时间。安装GPU版本的时候确实很麻烦,有很多坑需要注意。大体而言我们需要准备显卡驱动、cuda
和cuDNN
三个东西。这些东西全都正确配置了之后才能让GPU版本的tensorflow
运行起来。显卡驱动是根据自己的电脑型号而定的,可以去官网搜索下载。cuda
和cudnn
是运用GPU进行高效计算的库,他们之间的版本必须正确匹配才能发挥作用。具体的安装还是参考百度上各种博客吧,有很多坑,可能要踩一阵子才能装成功。另外在ubuntu
上装应该会相对而言简单一点,出错少一点。
keras
是一个基于tensorflow
的库。本质上就是再把tensorflow
封装了一遍,各种模型实现起来和搭积木一样非常方便。在看关于这部分博客的时候也重点看利用keras
实现的。
OpenCV
这是一个开源的图像处理库,里面支持各种关于图像处理的算法、函数等等。
- 因为借鉴到了深度学习的模型,这类模型的训练需要大量的时间,在自己电脑性能不佳的情况下更是进展缓慢。
- 在算法优化部分,一定会需要对数字图像的底层有深入的掌握,也就是说一定会需要运用数字图像处理这门课讲到的知识,并且大概率会比较深入,晦涩难懂。
- 了解该机器学习模型的基本原理之后,寻找适合的模型,加以调整、训练。可以疯狂从
github
上找 - 学习数字图像处理知识,实现我所设想的算法优化。
- 进一步的优化、以及可能的模型优化,实现更加复杂的风格转换。
- 机器学习
- A Neural Algorithm of Artistic Style(2015.8.26)
- Perceptual Losses for Real-Time Style Transfer and Super-Resolution(2016.3.27)
- Instance Normalization: The Missing Ingredient for Fast Stylization(2016.7.27)
- jcjohnson/fast-neural-style(文献2作者提供的github代码仓库)
- 基于深度学习的图像风格转换(文献2的中文解读)
- wisewong/ImageStyleTransform(文献4的代码实现)
- keras官方给的风格转移示例程序(基于文献1的实现)
- 【啄米日常】5:keras示例程序解析(2):图像风格转移(文献5的代码中文解读)
- Keras Documentation
- 深度残差网络RESNET
- 图像的上采样(upsampling)与下采样(subsampled)
- 使用上采样加卷积的方法代替反卷积
- Deconvolution and Checkerboard Artifacts (cn)
- Deconvolution and Checkerboard Artifacts (en)
- VGG16学习笔记
- Total variation denoising
- Texture Networks + Instance normalization: Feed-forward Synthesis of Textures and Stylized Images
- 数字图像技术