卷积神经网络可以算是深度神经网络中很流行的网络了。本文从基础入手,介绍了卷积网络的基本原理以及相关的其它技术,并利用卷积网络做了一个简单项目作为示例参考。想入手 CNN 的朋友不可错过~
首先,我们先看看下面这张照片:
图源:Pix2PixHD
这不是一张真实的照片,你可以新建一个窗口来打开它,放大看看,可以看到马赛克。
实际上,这张照片是由 AI 生成的,是不是看起来很真实?
这项技术就是卷积神经网络。它是深度神经网络的一个分支,处理图像的效果格外好。
图源:ImageNet
上图是几年来赢得 ImageNet 挑战赛的软件产生的误差率。可以发现,2016 年误差率降到了 5%,已经超越人类水平。
深度学习的引入与其说是改变规则,不如说是在打破规则。
卷积神经网络架构
那么问题来了,卷积神经网络到底是怎么运作的呢?
卷积神经网络之所以优于其它深度神经网络是由于它特殊的操作。相比一次只计算图像中的单个像素,CNN 将多个像素的信息组合在一起(比如上图中计算了 3*3 的像素),因此能够理解时间模式。
另外,CNN 可以「看到」一组像素组合成一条直线或者曲线。由于深度神经网络通常都是多层卷积的堆叠,通过上一层得到了直线或者曲线后,下一层不再组合像素,而是将线组合成形状,一层一层进行下去,直到形成完整的图片。
来自 Mynepalli 的深度卷积神经网络图
要想深入理解 CNN,你需要学习很多基础知识,比如什么是核,什么是池化层。但是现在有很多优秀的开源项目,你可以直接在他们的基础上进行研究并加以利用。
这就引入了另一门技术——迁移学习。
迁移学习
迁移学习使用训练好的深度学习模型来学习特定的任务。
举个栗子,比如你在火车调度公司工作,你们想在不增加劳动力的情况下,预测火车是否晚点。
你完全可以利用 ImageNet 上的卷积神经网络模型,比如说 2015 年的冠军 ResNet。用火车图片重新训练网络,相信我,结果不会让你失望的。
迁移学习主要有两大优势:
相比于从头开始训练,只需要少量图片就可以得到很好的效果。ImageNet 竞赛提供了一百万张图片用于训练。使用迁移学习,你只需要 1000 甚至 100 张图片就可以训练出一个很好的模型,因为你的预训练模型已经在一百万张图片上训练过了。
较少的训练时间就能实现良好的性能。为了得到和 ImageNet 模型同样好的效果,你可能需要训练数天,这还不包括模型效果不好时对其进行调整所需的时间。然而使用迁移学习,你可能只需要几个小时甚至几分钟就可以完成特定任务的训练,大大节省了时间。
图像分类到图像生成
有了迁移学习之后大家产生了许多有趣的想法。既然我们可以处理图像、识别图像中的信息,那我们为什么不自己生成图像呢?
因吹斯汀!
生成对抗网络由此应运而生。