Pytorch入门之前——写给计算机视觉小白

 

1.什么是计算机视觉?

通常来讲,计算机视觉是以图像为主题的多种任务的总称,计算机视觉是个很宽泛的概念。目标检测、语义分割、图像分类等等都属于计算机视觉领域。

  • 目标检测

给定一张输入图像,检测出图像中特定目标的位置和具体类别,我们将这种任务称为目标检测任务,如下图所示。图中左侧的图片为输入图片,右侧的图片为算法输出的目标位置和类别。

Pytorch入门之前——写给计算机视觉小白_第1张图片

 

  • 语义分割

给定一张图片,输出某个像素所属的类别分布,我们将这种任务称为语义分割任务,如下图所示。左侧一栏为输入图像,右侧一栏为语义分割算法的输出图像。

Pytorch入门之前——写给计算机视觉小白_第2张图片

  • 图像分类

输入一张图片,输出图片的类别标签,这种任务称作图像分类任务。如下图所示,针对每个输入图片,图像分类算法输出该图片对应的标签,“cat”或者“dog”。

Pytorch入门之前——写给计算机视觉小白_第3张图片

 

以上只是给出一小部分例子,计算机视觉任务还包括目标跟踪、超分辨率重建、图像检索、动作识别等。计算机视觉包含的任务很多,没有必要精通计算机视觉的各种领域,根据科研、工作需要,结合自己的兴趣爱好,选择相关的2-3种领域深入研究即可。

2.深度学习与卷积神经网络

在计算机视觉任务中,“算法”承担了从输入到输出的转换:

  • 在目标检测任务中,算法读取输入图片,并给出各个目标的位置和类别;
  • 在语义分割任务中,算法读取输入图片,输出图片中每个像素所属的类别;
  • 在图像分类任务中,算法读取输入图片,输出类别标签。

可见,“算法”在计算机视觉任务中承担了很重要的角色。深度学习则是上文中提到的“算法”中的一种,相对于其他方法,深度学习在计算机视觉的众多领域中都有着更好的表现,因此得到了众多科研工作者的青睐。

而深度学习也是一类算法的统称,深度学习包括多层感知机(MLP,Multilayer Perceptron)、卷积神经网络(CNN,Convolutional Neural Network)、循环神经网络(RNN,Recurrent Neural Network)等。在计算机视觉领域中,最常用到的深度学习方法为卷积神经网络。

3.使用卷积神经网络(CNN)解决图像分类问题

3.1 任务描述

给定25000张图片,这些图片均包含“猫”或者“狗”,并且每张图片中都有一个标签,用来指示这张图片中包含的动物类别。我们的任务是根据这25000张图片和它们的标签,设计并优化一个卷积神经网络分类器。

另外还有12500张图片,同样,这些图片中也包含“猫”或者“狗”,但是这些图片没有标签,我们需要让优化好的神经网络分类器“识别”这些图片中动物的类别。

3.2 任务分解

从上文的描述中可知,该任务分为2个阶段:

  • 阶段一:利用带有标签的25000张图片,设计并优化一个卷积神经网络分类器。将这一阶段称作“训练”一个卷积神经网络,训练的目的是得到一个好的、可以使用的模型。
  • 阶段二:将12500张不带标签的图片输入到已经设计好的分类器中,得到这些图片的标签。将这一阶段称作利用训练好的神经网络做“推理”​,推理是将已经做好的模型应用到实际任务中。

如下图所示:

Pytorch入门之前——写给计算机视觉小白_第4张图片

显然,训练过程是我们作为开发人员应该重点做的事情,目的就是通过探索数据间的规律,得到训练好的模型;训练好的模型作为我们的“产出物”,交付给行业相关的人员,让他们利用我们训练好的模型去做推理过程,通过图片得到它们的类别。只要我们训练的模型足够好,在推理过程中模型输出的标签也就越准,这个模型的使用体验也就越好。

在我们训练好模型并且把模型交付给行业人员之前,为了保证模型质量,我们应该充分测试这个模型是否好用。也就是说,我们在完成训练过程后,也要进行推理过程,并对比推理过程中模型得到的预测标签和真实标签的差异,从而评判模型的质量好坏。如下图所示:

Pytorch入门之前——写给计算机视觉小白_第5张图片

我们将数据集中25000张用于训练的数据称作“训练集”,将12500张用于推理的数据称作“测试集”。

4.深度学习框架

深度学习框架可以帮助开发者完成计算机视觉任务。近几年涌现出了很多优秀的深度学习框架,比如Caffe、Pytorch、Tensorflow、PaddlePaddle等。这些深度学习框架能够帮助我们便捷地完成数据集读取、模型结构描述、模型训练、推理等过程,对推进计算机视觉的发展起到了重要作用。

 

如果你对计算机视觉中的目标检测、分割、跟踪、轻量化网络感兴趣,欢迎关注公众号一起交流~

Pytorch入门之前——写给计算机视觉小白_第6张图片

你可能感兴趣的:(深度学习入门,神经网络,机器学习,深度学习,pytorch)