吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛
上图是在课程的第4周创建的,将吴恩达的脸与 Leonid Afremov 的 Rain Princess 风格结合起来。

我最近在Coursera上完成了吴恩达(Andrew Ng)的计算机视觉课程。吴恩达在解释优化计算机视觉任务所需的许多复杂方法方面做得很出色。这门课中我最喜欢的部分是神经风格迁移(第11课),利用神经风格迁移,你可以将Claud Monet的风格与任何图像的内容结合起来。下面是一个例子:

吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

在这篇文章中,我将讨论这门课的11节主要课程。需要注意的是,这是Deep Learning系列课程的第4门,由deeplearning.ai制作,可以到官网了解前三门课程。

第1课:为什么计算机视觉发展迅速?

大数据和算法的发展将会导致智能系统的测试误差收敛至贝叶斯最优误差。这将使得AI能够在所有领域超越人类水平,包括自然感知任务。TensorFlow 的开源软件允许你使用迁移学习来实现目标检测系统,可以快速检测任意目标。有了转移学习,你只需要大约100-500个样本就能使系统运行良好。手工标注100个例子的工作量并不是很大,所以你可以快速做出可行的小成果。

第2课:卷积是如何工作的?

吴恩达解释了如何实现卷积算子(convolution operator),并展示了它如何在图像中检测边缘。他还介绍了其他滤波器,例如Sobel 滤波器,它赋予边缘中心像素更大权重。根据吴恩达的解释,滤波器的权重不应该人工设计,而应该使用爬山算法(hill climbing algorithm)来学习,例如梯度下降法。

第3课:为什么使用卷积?

吴恩达提出了几个哲学原因,解释为什么卷积在图像识别任务中如此有效。他给出了两个具体的原因。第一个是参数共享(parameter sharing)。参数共享的想法是,一个特征检测器对图像的某个部分有效,那么它可能对图像的另一部分也有效。例如,一个边缘检测器可能对图像的很多部分都有用。参数的共享允许参数的数量很少,也允许强大的平移不变性。

第二个原因是“连接的稀疏性”。这是说,每个输出层只是少量输入(尤其是滤波器的大小)的函数,这大幅减少了网络的参数数量,加快了训练速度。

第4课:为什么使用Padding?

Padding通常用于保留输入大小(即输入和输出的维数相同)。Padding也被用来使靠近图像边缘的帧相对靠近图像中心的帧对输出的贡献同样大。

第5课:为什么使用最大化池?

通过实证研究,最大化池(Max Pooling)在CNN中被证明是非常有效的。通过对图像进行下采样,可以减少使特征在缩放或方向变化时保持不变的参数数量。第6课:经典网络架构

吴恩达解释了3种经典的网络架构,包括LeNet-5,AlexNet和VGG-16。他提出的主要想法是,高效网络中层的通道大小增大,高度和宽度降低。

第7课:为什么ResNets有效?

对于普通的网络来说,由于梯度消失和梯度爆炸,随着层数增加,训练的误差不会单调递减。 ResNet具有前馈的skip connection,这样,就可以训练非常庞大的网络而不会降低性能。

吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

第8课:使用迁移学习

使用一个GPU从头开始训练大型网络(例如inception)可能需要好几周的时间。你应该从预训练的网络下载权重,只需重新训练最后一个softmax层(或最后几层)。这样能够大大缩短训练时间。这一方法有效的原因在于,靠前的层倾向于与所有图像共有的一些概念相关,例如边缘和曲线。

第9课:如何赢得计算机视觉竞赛?

根据吴恩达的解释,你应该独立地训练几个网络,平均它们的输出,以获得更好的性能。数据增强技术,例如随机裁剪图像,沿水平轴和垂直轴翻转图像等,也可能对性能有帮助。最后,你应该从开源的实现和预训练的模型开始,然后针对目标应用微调参数。

第10课:如何实现目标检测?

吴恩达首先解释了图像的特征点检测(landmark detection)的概念。基本上,这些特征点是你训练输出的示例的一部分。通过一些巧妙的卷积运算,你能得到一个输出量,它告诉你目标在某一区域的概率以及目标的位置。吴恩达还解释了如何利用 intersection over union(IOU)公式评估目标检测算法的有效性。最后,吴恩达将所有这些内容整合在一起,解释了著名的YOLO算法。

第11课:如何实现人脸识别

人脸识别是一个one-shot学习问题,因为能拿来识别某个人的可能只有一个样本。解决的方法是学习一个相似性函数,它给出两个图像之间的差异程度。所以,如果图像是同一个人,你希望这个函数输出小的值,反之亦然。

吴恩达介绍的第一个解决方法是siamese network。它的想法是将两个人的图像分别输入同一个网络,然后比较它们的输出。如果输出相似,那么可能是同一个人。网络的训练目标是:如果两个输入图像是同一个人,那么它们的编码距离就相对较小。

解决方法之二是使用三元组损失(triplet loss)方法。它的想法是,图像的三个维度(Anchor(A)、Positive(P)和 Negative(N))在训练过后,A 和 P 的输出距离大大小于 A 和 N 的输出距离。

吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

第12课:如何用神经网络风格转换算法创造艺术品

吴恩达解释了如何结合内容和风格创造出一幅画,见下面的例子:

吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

神经风格转换的关键是要理解卷积网络中每一层学习的视觉表示。事实证明,早期的图层学习例如边缘等简单特征,后来的功能学习复杂的对象,如面孔,脚和汽车。

要构建一个神经风格的风格转换图像,您只需定义一个成本函数,这是一个内容和风格相似的凸组合。具体来说,成本函数可能是是:

J(G) = alpha * J_content(C,G) + beta * J_style(S,G)

G就是生成的图像,C是图像内容,S是图像的风格。学习算法仅仅使用梯度下降来根据生成的图像G来将成本函数最小化。

其步骤分解如下:

  1.  随机生成G
  2. 使用梯度下降来最下好J(G),例如,写G:= G-dG(J(G))
  3. 重复步骤二
结论

通过完成本课程,你将获得对大量计算机视觉文献的直观理解。其布置的家庭作业也让你自己实践这些想法。完成本课程后,你可能不会成为计算机视觉方面的专家,但是本课程可能会启发您在计算机视觉方面的潜在创意/职业。


原文发布时间为:2017-11-23

本文作者:马文

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:吴恩达计算机视觉课程12大要点,如何赢得计算机视觉竞赛

上一篇:美国*重金奖励!中美超级计算机竞赛再掀高潮


下一篇:lzg_ad: 基于.Net安装部署向导制作安装程序