跳到主要内容

目标检测教程

在正式开始教程之前,想先跟大家聊聊两个方面。

  1. 聊聊对于入门的一些想法和心态。 希望在学习过程中,遇到难关的时候,可以帮助大家保持好的心态度过这些难关。
  2. 聊聊这个教程的思路和内容安排。 希望大家能够通过这个教程,确实获得自己想要的。

关于第一个方面,入门的一些想法都写在这个 聊聊到底如何入门 文章里面了。

核心想法:在入门过程中,遇到难以理解的地方,硬着头皮看下去,不要急于去理解。等学习一段时间后,那些难点就会不攻自破。

总而言之,希望大家在学习过程中,保持一个好的心态,遇到不懂的点,直接跳过就好了。我也会尽力去将内容做得循序渐进,通俗易懂点。

讲完了如何入门之后,我们再来聊聊这个教程的思路和内容安排。

整个教程的安排思路:

  1. 先介绍下目标检测的概念,以及目标检测任务可以做的事情。大家可以看看目标检测是否可以满足自己的需求。
  2. 介绍目标检测的常用数据集,以及如何使用这些数据集。通过对数据集的了解,大家可以对目标检测任务有个更深的认识。
  3. 介绍目标检测的通用思路和必备知识(评估,NMS等),以及在后面内容要使用的一些小工具。
  4. 介绍 YOLO家族 系列模型思路和代码实现。
  5. 介绍 Ultralytics 框架,以及如何使用 Ultralytics 框架来训练自己的模型。
  6. 介绍 RCNN 系列模型思路和代码实现。

在整个训练过程中,会介绍一些训练的技巧之类的。

个人认为,1,2,3部分是必学的,4,5,6部分大家根据自己的需求选择感兴趣的模型进行学习就行了。

但还是推荐大家按照顺序听一下,因为后面内容可能会用到前面内容的知识。比如你对YOLOv2感兴趣,但是YOLOv2可能会用到YOLOv1的知识。

通过这个教程,大家可以:

  • 掌握深度学习中目标检测的理论和方法(学习目标检测)
  • 训练出适用于自己场景的模型(应用目标检测)
  • 可以作为 PyTorch 的实战教程(进阶学习 PyTorch)

希望大家可以通过这个教程,能够有所收获。


什么是目标检测

在开始后面内容前,我们先来了解下到底什么是目标检测。看看自己对这个领域是否感兴趣,是否满足你的应用要求。

所谓的目标检测,就是我们希望计算机在图像或者视频定位并识别我们感兴趣的目标。

这句话中,核心是 定位感兴趣的目标识别感兴趣的目标

我们以这个图为例,如果我们现在的任务是找到图片中的 汽车

那么此时,我们 感兴趣的目标汽车

定位感兴趣的目标 就是在图像中找到感兴趣目标的位置。在目标检测中,我们通常会使用 边界框 来表示目标的位置。

就是用一个矩形框,框住目标的位置。

识别感兴趣的目标,是在定位出来的区域,进一步看看定位区域里面是什么东西,得看看这个是还是汽车

比如最后识别出来左下角矩阵框中的内容是,右上角矩阵框中的内容是汽车

至此,一个目标检测任务就完成了。目标检测模型根据我们设置的感兴趣的目标,在图像中找到目标的位置,并识别出目标的类别。

定位感兴趣的目标识别感兴趣的目标 是比较好理解的,也是目标检测任务的核心。

接下来,我们来聊聊 感兴趣目标 这个相对来说比较抽象的概念。

感兴趣目标,是说我们希望目标检测模型能够 定位并识别出 我们感兴趣的目标。

比如说,我想让目标检测模型定位并识别出图片中的汽车,那汽车就是我们指定的感兴趣的目标。

但大家注意,其中的目标不仅可以是我们日常生活中常见的目标,比如汽车,行人,树木等。还可以是一些 非常规,比较抽象的目标。比如说道路上的裂痕,它也可以看作是目标。

如果把道路上的裂痕作为目标,那么这个目标检测任务就可以用来辅助检测道路是否存在安全隐患。

如果我们把每个文字都当作一个种类的目标,那么这个目标检测任务就可以用来做文字检测,就相当于我们在某信上的对图片进行文字提取功能。

如果感兴趣的目标是人脸,那么目标检测是不是就是大家熟悉的人脸检测。

那这样,我们可以让计算机来检测道路上的裂痕。

总而言之,感兴趣目标 是根据任务需求来定义的,同时不要把目标局限于常规的事物,也可以是一些非常规的事物。

相关资源

在这个教程中,相关的资源有:

  1. 视频教程。
  2. 代码。
  3. 教程文档。
  4. 自己的数据集。