目标检测教程
在正式开始教程之前,想先跟大家聊聊两个方面。
- 聊聊对于入门的一些想法和心态。 希望在学习过程中,遇到难关的时候,可以帮助大家保持好的心态度过这些难关。
- 聊聊这个教程的思路和内容安排。 希望大家能够通过这个教程,确实获得自己想要的。
关于第一个方面,入门的一些想法都写在这个 聊聊到底如何入门 文章里面了。
核心想法:在入门过程中,遇到难以理解的地方,硬着头皮看下去,不要急于去理解。等学习一段时间后,那些难点就会不攻自破。
总而言之,希望大家在学习过程中,保持一个好的心态,遇到不懂的点,直接跳过就好了。我也会尽力去将内容做得循序渐进,通俗易懂点。
讲完了如何入门之后,我们再来聊聊这个教程的思路和内容安排。
整个教程的安排思路:
- 先介绍下目标检测的概念,以及 目标检测任务可以做的事情。大家可以看看目标检测是否可以满足自己的需求。
- 介绍目标检测的常用数据集,以及如何使用这些数据集。通过对数据集的了解,大家可以对目标检测任务有个更深的认识。
- 介绍目标检测的通用思路和必备知识(评估,NMS等),以及在后面内容要使用的一些小工具。
- 介绍 YOLO家族 系列模型思路和代码实现。
- 介绍 Ultralytics 框架,以及如何使用 Ultralytics 框架来训练自己的模型。
- 介绍 RCNN 系列模型思路和代码实现。
在整个训练过程中,会介绍一些训练的技巧之类的。
个人认为,1,2,3部分是必学的,4,5,6部分大家根据自己的需求选择感兴趣的模型进行学习就行了。
但还是推荐大家按照顺序听一下,因为后面内容可能会用到前面内容的知识。比如你对YOLOv2感兴趣,但是YOLOv2可能会用到YOLOv1的知识。
通过这个教程,大家可以:
- 掌握深度学习中目标检测的理论和方法(学习目标检测)
- 训练出适用于自己场景的模型(应用目标检测)
- 可以作为 PyTorch 的实战教程(进阶学习 PyTorch)
希望大家可以通过这个教程,能够有所收获。
什么是目标检测
在开始后面内容前,我们先来了解下到底什么是目标检测。看看自己对这个领域是否感兴趣,是否满足你的应用要求。
所谓的目标检测,就是我们希望计算机在图像或者视频定位并识别我们感兴趣的目标。
这句话中,核心是 定位感兴趣的目标
和 识别感兴趣的目 标
。
我们以这个图为例,如果我们现在的任务是找到图片中的 狗
和 汽车
。
那么此时,我们 感兴趣的目标
是 狗
和 汽车
。
定位感兴趣的目标
就是在图像中找到感兴趣目标的位置。在目标检测中,我们通常会使用 边界框
来表示目标的位置。
就是用一个矩形框,框住目标的位置。
而 识别感兴趣的目标
,是在定位出来的区域,进一步看看定位区域里面是什么东西,得看看这个是狗
还是汽车
。
比如最后识别出来左下角矩阵框中的内容是狗
,右上角矩阵框中的内容是汽车
。
至此,一个目标检测任务就完成了。目标检测模型根据我们设置的感兴趣的目标,在图像中找到目标的位置,并识别出目标的类别。
定位感兴趣的目标
和 识别感兴趣的目标
是比较好理解的,也是目标检测任务的核心。
接下来,我们来聊聊 感兴趣目标
这个相对来说比较抽象的概念。
感兴趣目标
,是说我们希望目标检测模型能够 定位并识别出 我们感兴趣的目标。
比如说,我想让目标检测模型定位并识别出图片中的汽车,那汽车就是我们指定的感兴趣的目标。
但大家注意,其中的目标不仅可以是我们日常生活中常见的目标,比如汽车,行人,树木等。还可以是一些 非常规
,比较抽象的目标。比如说道路上的裂痕,它也可以看作是目标。
如果把道路上的裂痕作为目标,那么这个目标检测任务就可以用来辅助检测道路是否存在安全隐患。
如果我们把每个文字都当作一个种类的目标,那么这个目标检测任务就可以用来做文字检测,就相当于我们在某信上的对图片进行文字提取功能。
如果感兴趣的目标是人脸,那么目标检测是不是就是大家熟悉的人脸检测。
那这样,我们可以让计算机来检测道路上的裂痕。
总而言之,感兴趣目标
是根据任务需求来定义的,同时不要把目标局限于常规的事物,也可以是一些非常规的事物。
相关资源
在这个教程中,相关的资源有:
- 视频教程。
- 代码。
- 教程文档。
- 自己的数据集。