首页 > 其他分享 >深度学习---图像目标检测网络

深度学习---图像目标检测网络

时间:2023-09-15 15:35:07浏览次数:41  
标签:arxiv 检测 图像 网络 --- https 深度 org Anchor

前面介绍了图像分类网络,并重点解析了ResNet及其应用以及MobileNet系列的轻量化分类网络,这一篇接着介绍图像目标检测网络。
目标检测具有巨大的实用价值和应用前景。
应用领域包括人脸检测行人检测车辆检测飞机航拍或卫星图像中道路的检测车载摄像机图像中的障碍物检测医学影像在的病灶检测等。
在安防领域中,可以实现比如安全帽、安全带等动态检测移动侦测、区域入侵检测、物品看护等功能。
在工业领域中,可以实现物体定位抓取电子产品缺陷检测等。
接下来主要从概念、发展流程以及常见模型三个大方面出发对其进行简单介绍。

一、基础概念

1、什么是目标检测

检测图像中某个对象的位置(Localization),并判断该物体类别(Classification)。

2、IOU

作用

用于评判两个框的相似程度,通常用于训练阶段的预测框和真实框进行比较,通过设置IOU阈值可以过滤掉很多预测框

$ Iou = \frac{|A \cap B|}{A \cup B} $

不足

  1. 如果两个框没有相交,根据定义,IoU=0,不能反映两者的距离大小(重合度)。同时因为loss=0,没有梯度回传,无法进行学习训练。

  2. IoU无法精确的反映两者的重合度大小。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。

改进

Iou_Loss(不能反应距离,无交集时没有梯度返回) ==> GIouLoss(引入两个框的最小包围框,解决距离问题,但训练存在发散情况) ==> DIouLoss(引入和GT中心点欧式距离,以及外围包围框的对角线距离) ==> CIoutLoss(加入惩罚项,彻底解决框包含的问题)

  • IOU_Loss:主要考虑检测框和目标框重叠面积。
  • GIOU_Loss:在IOU的基础上,解决边界框不重合时的问题。
  • DIOU_Loss:在IOU和GIOU的基础上,考虑边界框中心点距离的信息。
  • CIOU_Loss:在DIOU的基础上,考虑边界框宽高比的尺度信息。
  • SIoU Loss: 损失函数通过引入了所需回归之间的向量角度,重新定义了距离损失,有效降低了回归的自由度,加快网络收敛,进一步提升了回归精度

3、NMS

作用

在预测阶段对多个预测框进行去重处理。

算法流程

  • 按照预测概率(置信度)对预测框进行排序
  • 设置Iou阈值
  • 选取最大概率框记为A,其次概率记为B,计算B与A的Iou,如果超出阈值,则舍弃B,如果小于阈值,则保留下来
  • 对保留下来的框继续执行以上步骤,直到所有保留下来的框两两之间Iou都小于阈值

二、发展流程

在介绍其发展流程前,我们先思考一个问题,利用前面学习的分类网络可不可以实现目标检测呢?

当然可以:比如采用人工滑窗 + 分类,及人工选择一个区域,然后判断这个区域的类型,这是一个比较传统的检测方式。

但里面有几个问题

  • 框选多大合适
  • 前景框和背景框数量相差太多(通常背景框会比较多),训练分类网络样本不均衡
  • 耗时

经过深度学习不断的发展,这种耗时的方式已经很少用了,这里给出github上梳理的一个目标检测发展流程,还有最新的一些没有囊括进来。

参考:https://github.com/hoya012/deep_learning_object_detection

三、常见目标检测模型

一些论文中通常会提到一阶段检测、两阶段检测算法以及Anchor free和Anchor base模型等,这里从一阶段和两阶段以及Anchor free和Anchor base两大块出发,介绍一些常见的目标检测模型。

3.1 一阶段(One Stage)和两阶段(Two Stage)模型

参考:https://www.zhihu.com/question/428972054
一阶段和两阶段划分依据是是否存在显式的 候选框(ROI)提取过程,典型的两阶段算法是 Faster rcnn,其包括 RPN 和 RCNN 两个模块,RPN 模块负责提取 ROI,然后通过 Roipool 或者 Roialign 进行 ROI 特征切割提取,最后在输入到 RCNN 中进行识别和定位。如果没有显式ROI提取过程则认为是一阶段算法,例如典型的 yolo、retinanet 等等。一般而言,两阶段算法精度高但是速度慢一些,一阶段精度稍微低一点但是速度容易优化到比较快,但是随着算法的发展,两者的界限越来越模糊,两者结合的也有例如带 refine 阶段的 Reppoints,可以认为是 1.5 阶段。

3.1.1 One Stage常见模型

YoloV1: https://arxiv.org/pdf/1506.02640.pdf

将图片分成SxS个网络,如果object的中心落在网格A中,则网络A就负责预测这个object,每个网格预测B个box(x, y, w, h, confidence)和C个类别,所以输出维度为\(S∗S∗(B∗5+C)\)。

3.1.2 Two Stage常见模型

Faster rcnn: https://arxiv.org/abs/1506.01497
图片经过一个分类骨架网络和特征金字塔(FPN)进行特征提取,特征图再经过区域候选网络(RPN)得到候选区域(ROI),最后再经过RCNN模块对其进行分类并回归得到最终检测框。

3.2 Anchor free和Anchor based模型

Anchor-based、Anchor-free 是从是否需要显式定义先验 anchor 角度区分,如果需要定义 Anchor 那么就是 Anchor-base,目前主流算法大部分都是这个类型,例如 Faster rcnn、Retinanet 和 YoloV2 等等;而 Anchor-free 是从 2019 年开始慢慢流行,其最大优势是不需要设置麻烦且有重大影响的 Anchor,输出是对每个输出特征图上点进行分类和定位建模,参数稍微少一些,更加容易理解,典型算法是 FCos、ATSS 和 SABL 等等。

3.2.1 Anchor based常见模型

SSDhttps://arxiv.org/abs/1512.02325

  • 从YOLO中继承了将detection转化为regression的思路,一次完成目标定位与分类
  • 基于Faster RCNN中的Anchor,提出了相似的Prior box;
  • 加入基于特征金字塔(Pyramidal Feature Hierarchy)的检测方式,即在不同感受野的feature map上预测目标

YoloV2https://arxiv.org/pdf/1612.08242.pdf
YoloV2在V1的基础上借鉴Faster RCNN也尝试采用anchor,在每个grid预先利用聚类设定一组不同大小和宽高比的边框,来覆盖整个图像的不同位置和多种尺度,预测位置更改为预测偏移量。


Retinanethttps://arxiv.org/abs/1708.02002
RetinaNet的特征提取网络选择了残差网络ResNet,特征融合这块选择了FPN(特征金字塔网络),以特征金字塔不同的尺寸特征图作为输入,搭建三个用于分类和框回归的子网络。


3.2.2 Anchor Free常见模型

YoloV1https://arxiv.org/pdf/1506.02640.pdf
这个前面已经介绍过了


Focshttps://arxiv.org/abs/1904.01355

将点看作训练样本,而非anchor。如果点落在GT Box中则作为正样本,否则为负样本。回归时目标是点到四边的距离。如果点落在多个目标框中,则选择面积小的作为回归目标,为提高召回率,结合FPN,即利用多尺度特征图进行预测,不同层级特征图预测不同尺寸目标。


CornerNet: https://arxiv.org/abs/1808.01244

将目标检测问题当作关键点检测问题,即检测目标框左上角和右上角两个关键点。


ATSShttps://arxiv.org/abs/1912.02424

随着不断发展,融合FPN和Focal Loss后,Anchor free的方法不断接近Anchor based。2020年中科大的一篇文章ATSS《Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection》揭示了其两者的区别本质上在于正负样本分配问题训练目标检测模型时,我们首先会定义正、负样本来进行分类,然后使用正样本来进行回归,其提出了一种自适应训练样本选择算法。

挑选\(K*L\)个候选正样本,计算其与GT Box的Iou值,最后阈值由Iou值得平均值加方差得到,大于阈值得作为正样本,其他作为负样本。


标签:arxiv,检测,图像,网络,---,https,深度,org,Anchor
From: https://www.cnblogs.com/xiaxuexiaoab/p/17704866.html

相关文章

  • 添加课程到课表-思路分析
         ......
  • css-面试题
    1-css中隐藏元素的方法有哪些?display:none;不显示对应的元素,文档布局中不占控件visibility:hidden;隐藏元素,但仍占空间2-display的值有哪些?分别是什么作用?inline默认,将元素设为行内元素block将元素设为块元素inline-block将元素设为行内块元素none隐......
  • CTF题目-must use [ctf-Web-Broswer]
    一道CTF题目,请求后页面如下: 这里根据提示需要我们使用ctf-Web-Broswer,这个很明显是更改User-Agent的一个套路python简单写下importrequestsurl='http://1.1.20.100:8001/'headers={"User-Agent":"ctf-Web-Broswer",}res=requests.get(url,headers=headers)print(......
  • 解决uni-app 输入框,键盘弹起时页面整体上移问题
    解决uni-app输入框,键盘弹起时页面整体上移问题我们每次在做UNIAPP小程序和H5遇到输入框时,总会在测试的时候点击输入框弹出软键盘把页面往上移动,仔细翻读uniapp文档的时候发现了一个属性adjust-position:Boolean类型,作用是键盘弹起时,是否自动上推页面1.发现将adjust-position属......
  • CTF题目-message board
    遇到了一道CTF题目,页面如下通过目录扫描可以发现www.tar,一看就知道是网站备份文件,接下来套路估计就是代码审计 打开可以看到2个php文件 看过一遍代码,再结合题目的web页面,就会大概清楚这是一个提交留言的系统,会涉及到数据库的更新和查询操作,数据库查询的语句已经写死......
  • JavaSE(6) - 面向对象-1
    JavaSE(6)-面向对象-1p82类和对象类(***设计图***):是对象共同特征的描述;对象:是真实存在的具体东西.在java中,必须先设计类,才能获得对象.如何得到对象publicclass类名{1.成员变量(代表属性的,一般是名词)2.成员方法(代表行为的,一般是动词)......
  • git log 显示 commit-ID 提交日期 提交说明
    一、显示8位commit-ID提交日期提交说明gitlog--pretty=format:'%C(auto)%h%C(blue)%<|(19)%as%C(auto)%d%s'%C(auto)设置%h显示内容颜色(auto意思是默认颜色)%C(blue)设置%as显示内容颜色%<|(19)which指示下一个格式运算符(%as代表YYYY-MM-DD)占据终端中直到第19......
  • less-面试题
    Less是什么?less:(LeanerStyleSheets的缩写)是一门向后兼容的CSS预处理扩展语言。less可以定义变量@width:100px;可以使用嵌套样式语法less可以封装样式函数,甚至"重载"函数.(匹配模式)还可以用mixin,在一个规则集中直接引用另一组样式规则.代码重用less还有许多内......
  • JavaSE(05) -方法
    JavaSE(05)-方法p63什么是方法什么是方法:方法是程序当中最小的执行单元.应用场景:重复的代码,具有独立功能的代码可以抽取的方法中.他的好处:提高代码的复用性和可维护性.p64简单的方法定义和调用方法的命名规则:见名之意,驼峰命名.方法的运行:看到方法......
  • docker清理不用的桥接网卡br-xxx
    docker清理不用的桥接网卡br-xxx场景在Linux机器中,发现了很多br-开头的网卡信息,一看就是docker创建的,但是有些已经不再使用了,因此想清理一下清理查看信息dockernetworkls每一个NETWORKID应该都会对应上一个网卡信息,例如删除没被使用的桥接网卡dockernetworkpru......