目标检测基础知识(1)–目标检测任务描述
本文是目标检测基础知识相关的第1次学习记录,主要包括目标检测的任务描述,目标检测的常用算法。
0.参考博客
1.目标检测项目结构
在目标检测工程中,主要的项目结构包括三层,分别是数据采集层、深度模型层、用户层,这三个层次的相关功能分别为:
- 数据采集层:数据收集、标注数据;
- 深度模型层:YOLO、SSD模型、模型导出、Serving部署;
- 用户层:前端交互、(Web后台)对接部署的模型。
2.目标检测算法分类
目前常用的目标检测算法分成两大类:2-stage和1-stage。
- 两步走(2-stage)的目标检测:
(1) 先找出候选的一些区域;
(2) 对候选区进行调整、分类;
(3) 代表算法:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN; - 端到端(1-stage)的目标检测:
(1)采用一个网络,一步到位;
(2)输入待检测图片,输出有哪些物体,以及物体在什么位置;
(3)代表算法:YOLO、SSD;
目标检测不仅仅是分类这样简单的从一个图片输出一个结果,而且还需要输出图片中目标的具体位置信息。
3.目标检测的任务
目标检测的具体任务:
- 类别:N个类别
- 输入:图片
- 输出:物体的类别、物体的位置坐标
- 主要评估指标:IOU
通过目标检测算法最终得出来的物体位置信息(x,y,w,h)有一个专业的名词,叫做 bounding box(bbox) 。两种类型的bounding box需要进行区分,分别如下:
- ground-truth bounding box(GT):图片中真实的目标位置(真实结果);
- Predicted bounding box:预测的标记框。
物体位置的表示一般有两种方式:
- (x,y,w,h):其中x、y表示物体的中心点的位置,w、h表示中心点举例物体两边的长和宽。
- (xmin,ymin,xmax,ymax):表示物体的左上角和右下角的位置,其中xmin,ymin表示左上角的位置,xmax,ymax表示右下角的位置。
4.目标定位的简单实现思路
增加一段全连接层网络输出目标的4个位置,并进行相应的损失计算。FC1用于类别的输出,FC2用于这个物体具体位置数值的输出。假设有10个类别,输出的概率值分别为:[p1,p2,…p10],然后输出这一个对象的四个位置信息[x,y,w,h],同时也要知道网络需要输出什么内容,并且如何来衡量网络的损失值:
- 对于分类的概率,使用交叉熵损失;
- 对于位置信息的具体数值,可以使用MSE均方误差损失(L2损失)。
5.分类与目标检测的区别
分类与定位:图片中只有一个物体需要检测;
目标检测:图片中有多个物体需要检测。