目标检测算法 2020_One-stage目标检测算法综述
yolo-v1:
YOLO 就是使用回归这种做法的典型算法。
首先将图片 Resize 到固定尺寸,然后通过一套卷积神经网络,最后接上 FC 直接输出结果,这就他们整个网络的基本结构。
更具体地做法,是将输入图片划分成一个 SxS 的网格,每个网格负责检测网格里面的物体是啥,并输出 Bbox Info 和 置信度。这里的置信度指的是 该网格内含有什么物体 和 预测这个物体的准确度。
更具体的是如下定义:
我们可以从这个定义得知,当框中没有物体的时候,整个置信度都会变为 0 。
这个想法其实就是一个简单的分而治之想法,将图片卷积后提取的特征图分为 SxS 块,然后利用优秀的分类模型对每一块进行分类,将每个网格处理完使用 NMS (非极大值抑制)的算法去除重叠的框,最后得到我们的结果。
SSD:
YOLO 这样做的确非常快,但是问题就在于这个框有点大,就会变得粗糙——小物体就容易从这个大网中漏出去,因此对小物体的检测效果不好。
所以 SSD 就在 YOLO 的主意上添加了 Faster R-CNN 的 Anchor 概念,并融合不同卷积层的特征做出预测。
我们从上图就可以很明显的看出这是 YOLO 分治网络 和 Faster R-CNN Anchor 的融合,这就大大提高了对小物体的检测。这里作者做实验也提到和 Faster R-CNN 一样的结果,这个 Anchor的数量和形状会对性能造成较大的影响。
除此之外,由于这个 Anchor 是规整形状的,但是有些物体的摆放位置是千奇百怪的,所以没有 数据增强 前的效果比增强后的效果差 7 个百分点。直观点理解,做轻微地角度扭曲让 Anchor背后的神经元“看到”更多的信息。
还有一个重大的进步是结合了不同尺寸大小 Feature Maps 所提取的特征,然后进行预测。这是 FPN 网络提出前的第一次做 Feature Pyramid 的尝试,这个特征图金字塔结合了不同层的信息,从而结合了不同 尺寸 和 大小 的特征信息。
这个尝试就大大地提高了识别的精度,且高分辨率(尺寸大)的 Feature Map 中含有更多小物体的信息,也是因为这个原因 SSD 能够较好的识别小物体。
除此之外,和 YOLO 最大的区别是,SSD 没有接 FC 减少了大量的参数量、提高了速度。
DSSD:
DSSD检测算法的网络结构如下图所示,DSSD也是使用不同阶段不同分辨率的feature maps进行预测,在不考虑Backbone网络结构差别的情况下,可以发现DSSD相比于SSD多了一系列的后续上采样操作,SSD是使用下采样过程中的feature maps进行预测,而DSSD是使用上采样过程中的feature maps进行预测。显而易见的是,SSD用于检测的feature maps位于网络的较低层,表征能力较弱,而DSSD用于检测的feature maps位于网络的较高层,表征能力较强,同时DSSD在反卷积的过程中通过Skip-Connection引入了较低层的feature maps,实现了一定程度的特征融合。所以DSSD的效果要优于SSD检测算法。
FSSD:
FSSD检测算法的网络结构如下图所示,同样,FSSD也是使用不同阶段不同分辨率的feature maps进行预测,相比于SSD,FSSD多了一个特征融合处理,将网络较低层的特征引入到网络的较高层,在检测的时候能够同时考虑不同尺度的信息,使得检测更加准确。
YOLO9000:
到了 SSD ,回归方法的目标检测应该一统天下了,但是 YOLO 的作者不服气,升级做了一个 YOLO9000 ——号称可以同时识别 9000 类物体的实时监测算法。
讲道理,YOLO9000 更像是 SSD 加了一些 Trick ,而并没有什么本质上的进步:
- Batch Normalization
- High resolution classifier 448*448 pretrain
- Convolution with anchor boxes
- Dimension clusters
- Multi-Scale Training every 10 batch {320,…..608}
- Direct location prediction
- Fine-Grained Features
加了 BN 层,扩大输入维度,使用了 Anchor,训练的时候数据增强…
所以强是强,但没啥新意,SSD 和 YOLO9000 可以归为一类。
yolo-v3:
yolo-v3主要的改进有:调整了网络结构;利用多尺度特征进行对象检测;对象分类用Logistic取代了softmax。
Yolo_v3使用了darknet-53的前面的52层(没有全连接层),yolo_v3这个网络是一个全卷积网络,大量使用残差的跳层连接,并且为了降低池化带来的梯度负面效果,作者直接摒弃了POOLing,用conv的stride来实现降采样。在这个网络结构中,使用的是步长为2的卷积来进行降采样。
为了加强算法对小目标检测的精确度,YOLO v3中采用类似FPN的upsample和融合做法(最后融合了3个scale,其他两个scale的大小分别是26×26和52×52),在多个scale的feature map上做检测。
作者在3条预测支路采用的也是全卷积的结构,其中最后一个卷积层的卷积核个数是255,是针对COCO数据集的80类:3*(80+4+1)=255,3表示一个grid cell包含3个bounding box,4表示框的4个坐标信息,1表示objectness score。
先验眶在特征图尺寸上的分配:
// 填坑中。。。
参考文献
- SIGAI:目标检测最新进展总结与展望(https://zhuanlan.zhihu.com/p/46595846)
- 小绿叶:一文看懂YOLO v3(https://zhuanlan.zhihu.com/p/60944510)
- Dave:基于深度学习的「目标检测」算法综述(https://zhuanlan.zhihu.com/p/33981103)
目标检测算法 2020_One-stage目标检测算法综述相关推荐
- 目标检测中的Two-stage的检测算法
比较详细,作个备份 什么是目标检测(object detection): 目标检测(object detection),就是在给定的一张图片中精确找到物体所在的位置,并标注出物体的类别.所以,目标检测 ...
- CV之IS:计算机视觉之图像分割(Image Segmentation)算法的挑战任务、算法演化、目标检测和图像分割(语义分割/实例分割/全景分割)的对比
CV之IS:计算机视觉之图像分割(Image Segmentation)算法的挑战任务.算法演化.目标检测和图像分割(语义分割/实例分割/全景分割)的对比 相关文章 CV之IS:计算机视觉之图像分割( ...
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测
DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《俄罗斯总统普京对沙特王储摊的“友好摊手”瞬间—东道主俄罗斯5-0完胜沙特》视频段实时检测
DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<俄罗斯总统普京对沙特王储摊的"友好摊手"瞬间-东道主俄罗斯5-0完胜沙特>视频段实时检测 导读 ...
- 摄像头图像分析目标物体大小位置_小目标检测的增强算法
版权声明:本文来源 程序媛的小世界https://zhuanlan.zhihu.com/p/135397874 Augmentation for small object detection 摘要 近 ...
- 基于改进SSD算法的小目标检测与应用
人工智能技术与咨询 点击蓝字 · 关注我们 来源:< 计算机科学与应用> ,作者刘洋等 关键词: SSD:深度学习:小目标检测 摘要: 摘要: 针对通用目标检测方法在复杂环境下检测小目标时 ...
- 开源目标检测算法用于交通标志检测全方位评估
(欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 交通标志检测在自动驾驶.汽车主动安全中应用非常重要,通用的目标检测算法可以通过微调网络的方式直接用于交通标志检测. ...
- 车流量检测实现:多目标追踪、卡尔曼滤波器、匈牙利算法、SORT/DeepSORT、yoloV3、虚拟线圈法、交并比IOU计算
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) CNN:RCNN.SPPNet.Fast RCNN.Faste ...
- 深度学习之目标检测(一)—— 目标检测算法介绍
目标检测问题 目标检测是在图片中对可变数量的目标进行查找和分类 查找就是定位到它在图片中的位置,通常表示为一个矩形框 对于这样的问题,主要存在三个主要难点 ①目标种类与数量问题 ②目标尺度问题 ③外在 ...
- 基于光电检测图像处理目标检测算法相较传统检测技术的优势
光电检测图像处理目标检测算法相较传统检测技术有以下几个优势: 速度更快:光电检测图像处理算法可以在较短的时间内处理大量的图像数据,而传统检测技术需要更长的时间来进行目标检测. 精度更高:光电检测图像处 ...
最新文章
- Html5 Canvas 扫雷 (IE9测试通过)
- opencv mat用数组初始化_10、OpenCV中图像和Mat类型(一)
- JVM 优点与缺点的深入分析
- 符号常量和变量有什么区别_“变量”和“常量”,计算机程序中的那个“量”是什么“量”...
- 三年经验前端社招——有赞
- cookie无法读取bdstoken_第二章(第12节):cookie操作
- 06-CABasicAnimation基础核心动画
- e-mobile帐号状态存在异常_Java 常见异常种类
- gcn语义分割_另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题...
- ScreenPad 是什么
- sql还原数据库备份数据库_如何获取SQL数据库还原历史记录
- python 无法调用turtle_新人求助,关于python 调用turtle《python简单turtle教程》
- FFMPEG geq与比较函数
- 动画算计算机专业吗,能够定义角色功能的计算机动画系统属于。 (1.0分)
- “我男友是程序员,修BUG比我重要,服了!”
- JDK正式免费、Log4j2爆核弹级漏洞、LayUI下线,2021的10 件大事
- PHP在线pdf电子合同生成,pdf添加水印
- Visual Studio无法定位于动态链接库
- Android版疯狂填字第三关,iOS/安卓版《疯狂填字3》答案攻略第140关
- hw叠加层开还是不开_停用hw叠加层有什么用