目标检测、目标检测算法

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


5.1 目标检测概述

5.1.1 什么是目标检测

  • 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置。

例子:确定某张给定图像中是否存在给定类别(比如人、车、自行车、狗和猫)的目标实例;如果存在,就返回每个目标实例的空间位置和覆盖范围。作为图像理解和计算机视觉的基石,目标检测是解决分割、场景理解、目标追踪、图像描述、事件检测和活动识别等更复杂更高层次的视觉任务的基础。

目标检测的应用场景

目标检测具有巨大的实用价值和应用前景。

  • 应用领域包括人脸检测、行人检测、车辆检测、卫星图像中道路的检测、车载摄像机图像中的障碍物检测、医学影像在的病灶检测等。

  • 应用场景包括长/视频领域、医学场景、安防领域、自动驾驶等等众多领域

行人车辆检测:

5.1.2 目标检测算法介绍

下面这张图代表了目标检测算法的发展历史(基于深度学习),其中红色部分是影响较大的算法论文。需要大家着重了解的

算法分类

  • 两步走的目标检测:先进行区域推荐,而后进行目标分类

包含一个用于区域提议的预处理步骤,使得整体流程是两级式的。代表:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等

  • 端到端的目标检测:直接在网络中提取特征来预测物体分类和位置

即无区域提议的框架,这是一种单独提出的方法,不会将检测提议分开,使得整个流程是单级式的。代表:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等

几种类别结构xmind形式如下:

算法效果对比

因为对比角度有很多,性能和准确度,性能方面不好比较,涉及到使用的CPU和GPU的区别。不同算法当时实验环境不一样。这里进行了准确度的比较

论文在常见数据集中的测试效果:

DetectorVOC07 (mAP@IoU=0.5)VOC12 (mAP@IoU=0.5)COCO (mAP@IoU=0.5:0.95)Published In
R-CNN58.5--CVPR'14
SPP-Net59.2--ECCV'14
MR-CNN78.2 (07+12)73.9 (07+12)-ICCV'15
Fast R-CNN70.0 (07+12)68.4 (07++12)19.7ICCV'15
Faster R-CNN73.2 (07+12)70.4 (07++12)21.9NIPS'15
YOLO v166.4 (07+12)57.9 (07++12)-CVPR'16
G-CNN66.866.4 (07+12)-CVPR'16
AZNet70.4-22.3CVPR'16
ION80.177.933.1CVPR'16
HyperNet76.3 (07+12)71.4 (07++12)-CVPR'16
OHEM78.9 (07+12)76.3 (07++12)22.4CVPR'16
MPN--33.2BMVC'16
SSD76.8 (07+12)74.9 (07++12)31.2ECCV'16
GBDNet77.2 (07+12)-27.0ECCV'16
CPF76.4 (07+12)72.6 (07++12)-ECCV'16
R-FCN79.5 (07+12)77.6 (07++12)29.9NIPS'16
DeepID-Net69.0--PAMI'16
NoC71.6 (07+12)68.8 (07+12)27.2TPAMI'16
DSSD81.5 (07+12)80.0 (07++12)33.2arXiv'17
TDM--37.3CVPR'17
FPN--36.2CVPR'17
YOLO v278.6 (07+12)73.4 (07++12)-CVPR'17
RON77.6 (07+12)75.4 (07++12)27.4CVPR'17
DeNet77.1 (07+12)73.9 (07++12)33.8ICCV'17
CoupleNet82.7 (07+12)80.4 (07++12)34.4ICCV'17
RetinaNet--39.1ICCV'17
DSOD77.7 (07+12)76.3 (07++12)-ICCV'17
SMN70.0--ICCV'17
Light-Head R-CNN--41.5arXiv'17
YOLO v3--33.0arXiv'18
SIN76.0 (07+12)73.1 (07++12)23.2CVPR'18
STDN80.9 (07+12)--CVPR'18
RefineDet83.8 (07+12)83.5 (07++12)41.8CVPR'18
SNIP--45.7CVPR'18
Relation-Network--32.5CVPR'18
Cascade R-CNN--42.8CVPR'18
MLKP80.6 (07+12)77.2 (07++12)28.6CVPR'18
Fitness-NMS--41.8CVPR'18
RFBNet82.2 (07+12)--ECCV'18
CornerNet--42.1ECCV'18
PFPNet84.1 (07+12)83.7 (07++12)39.4ECCV'18
Pelee70.9 (07+12)--NIPS'18
HKRM78.8 (07+12)-37.8NIPS'18
M2Det--44.2AAAI'19
R-DAD81.2 (07++12)82.0 (07++12)43.1AAAI'19

5.1.2 目标检测的任务

分类的任务回顾

  • 分类的损失与优化

在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失

对于目标检测来说不仅仅是分类这样简单的一个图片输出一个结果,而且还需要输出图片中目标的位置信息,所以从分类到检测,如下图标记了过程:

其中我们得出来的(x,y,w,h)有一个专业的名词,叫做bounding box(bbox).

  • 物体位置:
    • x, y, w,h:x,y物体的中心点位置,以及中心点距离物体两边的长宽
    • xmin, ymin, xmax, ymax:物体位置的左上角、右下角坐标

5.1.3 目标定位的简单实现思路

在分类的时候我们直接输出各个类别的概率,如果再加上定位的话,我们可以考虑在网络的最后输出加上位置信息。下面我们考虑图中只有一个物体的检测时候,我们可以有以下方法去进行训练我们的模型

5.1.3.1 回归位置

增加一个全连接层,即为FC1、FC2

  • FC1:作为类别的输出

  • FC2:作为这个物体位置数值的输出

假设有10个类别,输出[p1,p2,p3,...,p10],然后输出这一个对象的四个位置信息[x,y,w,h]。同理知道要网络输出什么,如果衡量整个网络的损失

  • 对于分类的概率,还是使用交叉熵损失
  • 位置信息具体的数值,可使用MSE均方误差损失(L2损失)

如下图所示

5.1.3.2 两种Bounding box名称

在目标检测当中,对bbox主要由两种类别。

  • Ground-truth bounding box:图片当中真实标记的框
  • Predicted bounding box:预测的时候标记的框

此外,交通标志如交通灯、行驶规则标志的识别对于自动驾驶也非常重要,我们需要根据红绿灯状态,是否允许左右转、掉头等标志确定车辆的行为。同时,医学影像图像如MRI的肿瘤等病变部位检测和识别对于诊断的自动化,提供优质的治疗具有重要的意义。还有工业中材质表面的缺陷检测,硬刷电路板表面的缺陷检测等。

5.1.4 总结

  • 掌握目标检测的算法分类
  • 掌握分类,分类与定位,目标检测的区别
  • 掌握分类与定位的简单方法、损失衡量

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值