0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

目标检测是计算机视觉领域中一个新兴的应用方向

电子设计 来源:电子设计 作者:电子设计 2022-02-12 15:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目标检测是计算机视觉领域中一个新兴的应用方向。

目标定位

图像分类是对图像进行分类,比如判断图像中是否是车。定位分类不仅要图片分类,而且需要确定目标在图像中的哪个位置。目标检测中要识别的对象不仅仅只有一个,目标检测要识别图像中多个对象。

自动驾驶需要用到目标检测技术。给出一张汽车行驶中的图片

我们需要判断图中1-是否有行人,2-是否有车,3-是否有摩托车,4-图片是否只是背景图,还需要判断图中汽车的位置。设图片左上角的坐标是(0,0),右下角坐标为(1,1)。图中汽车的中心点位置大概为(bx=0.5,by=0.7),汽车的长和高分别是bw=0.3和bh=0.4。我们训练的神经网络就要有两种类型的输出,一种是4种对象的检测,另外一种是车的位置信息。

我们定义这张图片的标签y要包含下面几个元素

pIYBAGAIhROAHr5jAAAWzheJRKQ407.png

如果图片中有任意的对象,比如上图,那么

pIYBAGAIhVaAJi6hAAAJNK6Tl-M196.png

如果图片中什么都没有,那么

pIYBAGAIhZOAB94LAAAGlFWi-pU977.png

其中第一个元素置为0,其它元素可以不用设置,因为都没有任何对象了,我们不关心其它的信息了。

目标定位的损失函数是

o4YBAGAIhdGANLk-AAASUIcYQzk617.png

这里简单地使用了平方损失函数。

特征点检测

除了可以使用矩形框标出目标在图片中的位置,还可以使用特征点来表示目标的位置。

在人脸检测中,可以使用特征点来表示人脸的位置,或者具体的部位,比如眼睛,鼻子,嘴巴。

样本的标签y是一个坐标点的集合,第1个点表示左眼左侧眼角,第2个点表示左眼右侧眼角,第3个点表示右眼左侧眼角,以此类推。

特征点检测有许多应用场景。比如说AR,在人的头上显示一个皇冠,需要得到人脸的特征点位置,然后判断人脸的倾斜度,最后把皇冠“戴”到头上。

滑动窗体检测

为了从一幅大图中找出图中汽车的位置,需要用到活动窗体检测。首先使用汽车图片训练一个卷积神经网络,用于汽车分类。接着设置一个窗体,该窗体在大图上从上往下从左往右慢慢移动,每移动一步,把窗体截取的内容使用汽车分类器进行分类,如果检测到有汽车,说明图中的汽车位置在窗体的位置上。接着使用一个更大的窗体,重复上述步骤。

滑动窗体的移动步长设置大一些,可以减少汽车分类器的分类次数,但是可能会出现这种情况,窗体中的汽车只有车身的一部分,分类器不能识别,这样导致整个系统的性能降低。

把图片分成一块块区域,然后分别使用分类器分类,这样的滑动窗体的效率非常低。我们需要一个高效率的滑动窗体的方法。

首先要介绍把全连接层转成卷积层。

把上图的第一个全连接层,改成用5×5×16的过滤器来卷积,一次卷积的操作数是所有输入值,这相当于一次全连接,然后设置过滤器的数量为400,相当于计算全连接层的400个输出值。同理,把第二个全连接层改成用400个1×1×400的过滤器来卷积,得到的1×1×400输出就是第二个全连接层的输出。如此类推,最后得到1×1×4的输出就是softmax层的输出。

高效率的滑动窗体的方法是使用卷积来实现滑动窗体。

上图第一行表示一幅14×14×3的图片使用卷积网络进行分类的过程。其中全连接层使用卷积层实现。上图的下一行表示在一幅大图中实现滑动窗体的计算。首先只观察蓝色方块,这是一个滑动窗体,这个蓝色方块的大小满足上一行卷积网络的规格,把蓝色方块带入卷积网络,注意黄色区域也代入卷积网络中。最后2×2×4的蓝色块表示蓝色方块的分类结果。然后观察绿色框的区域,这是另外一个滑动窗体,你会发现卷积网络中绿色框的值就是绿色框区域在上一行卷积网络中的结果。把大图输入到卷积网络,卷积网络会同时计算大图的所有的相同大小滑动窗体的分类结果,这就加快了滑动窗体的分类效率。

Bounding Box 预测

滑动窗体检测对象的位置不是很精确,例如

黑色框是滑动窗体分割的区域,在绿色框和黄色框中有汽车。直接把绿色框和黄色框作为图片中汽车的位置太粗略了,我们需要更加精确的汽车位置。这时可以使用到前面所说的目标定位的知识。

我们训练的分类器不仅仅要输出图片是否有汽车,还要输出汽车在图片中的位置(Bounding Box),所以可以使用目标定位使用的y,

o4YBAGAIh2uAdSdSAAAWfUIiE58249.png

把这张大图输入进卷积网络,最后得到的输出为3×3×8的矩阵,其中3×3代表滑动窗体,8表示每个滑动窗体的目标定位的8个预测结果。根据预测结果中的汽车位置信息,可以精确到汽车的具体位置。

这些方法来自YOLO算法

交并比

交并比函数用于判断算法的定位预测是否正确。

红色框是正确的汽车位置,紫色框是预测的位置,交并比函数是指两者交集和并集的比。图中黄色区域指的是二者的交集,绿色区域指的是二者的并集,交并比函数公式是

o4YBAGAIh-iAF4bAAAAP8SDb-X4441.png

然后设置一个阈值,比如说0.5,如果IoU>0.5,则算法的定位预测没有问题。如果需要算法预测效果更加精确,阈值可以设置得更高。

非极大值抑制

滑动窗体检测有一个问题,就是一个对象可能会多次被检测到。例如

滑动窗体把图片分成19×19个区域,算法检测到绿色区域和黄色区域都有汽车。这几个区域都是汽车的一部分,它们组合起来,扩充更大的区域,才是完整的汽车。

上图是一个物体被多次检测到的情况。非极大值抑制会清除多余的检测结果,比如,保留上图中pc值最高的两个(0.8和0.9)检测结果。

非极大值抑制算法的具体过程如下。

每个滑动窗体输出的预测值的形式是o4YBAGAIiLqAWxRYAAAFoBZUqHw854.png

首先设置一个IoU阈值,比如0.5和一个概率阈值(置信度),比如0.6,清除所有 pc<0.6 的窗体。

如果还有剩下的窗体,执行下面的循环:

选择pc值最大的输出作为预测结果。

清除所有剩下的与前一步选择的窗体IoU>0.5的窗体。

Anchor boxes

上述所说的都是一个窗体检测一个对象,现在了解一下一个窗体同时检测多个对象的情况。如果两个物体对象同时出现在一个窗体中,它们的中心点位置相同,需要算法能够同时识别这两个物体对象。

上图中行人和车的中心点都在同一个位置,之前所说的算法只能检测到一个对象,因此需要修改算法。

图中的行人和汽车的形状不同,行人的矩形框比较长,汽车的矩形框比较宽,定义这些矩形框叫Anchor box,如下图所示

o4YBAGAIia6AB3prAACzOj5pLhc222.png

为了能够同时检测到Anchor box1和Anchor box2,需要修改标签y。本来y只有8个元素,现在y有16个元素,前8个元素用来输出Anchor box1的位置,后8个元素用来输出Anch box2的位置。pc表示对应的对象是否存在。

上图的标签y是下图的中间向量

pIYBAGAIieyAf1nZAAEIIV-JktQ766.png

如果行人离开的图片中,那么y值变为上图的右边向量。因为行人不在图片中,Anchor box1的位置信息就没有意义了,用?表示。

YOLO算法

现在来简单介绍YOLO算法的整个过程。

有一个例子是检测图片中的行人、汽车和摩托车。我们的算法主要检测行人和汽车,因此使用两个Anchor box。每个窗体的标签值y就如同下图所示,有16个元素,一半用来记录行人的位置信息,另一半用来记录汽车的位置信息。

pIYBAGAIil-AZm4zAAPZvaiwQQU280.png

我们使用3×3的滑动窗体,不过一般使用更小的滑动窗体,比如19×19。训练出来的卷积网络最后输出的预测值大小是3×3×16。

对一张图片进行检测,每个窗体都会检测到两个位置信息,如下图。对象的边界的方框可能会超出窗体。

先把低于概率阈值的位置信息去掉

接着,对每个类别(行人和汽车),使用非极大值抑制算法来确定最终的位置。

R-CNN

R-CNN(带区域的CNN)提出了候选区域(Region proposal)的概念。R-CNN认为滑动窗体有时会检测什么对象都没有的区域,这会浪费时间,比如在下图的两个蓝色区域,是没有行人或汽车出现,对这两个区域进行卷积运算会降低系统的效率。

R-CNN对图片进行图片分割,得到一幅图片的区域图

不同的颜色块代表图片的不同区域,这些颜色块可以作为候选区域,R-CNN认为这些区域可能含有我们的目标对象,直接检测这些候选区域比检测所有的滑动窗体要快。

实际上R-CNN比YOLO要慢一些,但是R-CNN的思想值得借鉴。R-CNN自发表出来,已经有速度更快的版本。

R-CNN:最初的R-CNN算法,一次只对一个候选区域进行分类,输出的是label和bounding box(是否有对象和对象的位置)。

Fast R-CNN:使用滑动窗体的卷积实现来对所有的候选区域进行分类。

Faster R-CNN:使用卷积网络来获取候选区域。

版权声明:本文转自CSDN(叫什么就是什么),遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24548569/article/details/81177007

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 目标检测
    +关注

    关注

    0

    文章

    234

    浏览量

    16544
  • 计算机视觉
    +关注

    关注

    9

    文章

    1715

    浏览量

    47722
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    计算机专业408考研科目

    408 跨考零基础:三月入门到精通路线 站在2026年的节点回望,计算机考研408(计算机学科专业基础综合)早已超越了单纯的知识点考核,它更像是场对逻辑思维与系统观的深度洗礼。对于
    发表于 04-11 16:44

    传音相关研究成果入选计算机视觉顶会CVPR 2026

    (Mohamed bin Zayed University of Artificial Intelligence,简称MBZUAI)联合开展的“拍照解题”项目研究取得重要进展,相关成果论文已被计算机视觉领域的国际顶级学术会议CV
    的头像 发表于 04-03 17:45 2935次阅读
    传音相关研究成果入选<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>顶会CVPR 2026

    【上海晶珩睿莓 1 单板计算机】人脸识别

    计算机视觉库,广泛应用于图像处理、视频分析和机器学习等领域。 为了避免影响系统 Python,采用虚拟环境的方案。 创建并激活虚拟环境 mkdir ~/cv && cd
    发表于 01-04 20:22

    上海计算机视觉企业行学术沙龙走进西井科技

    12月5日,由中国图象图形学学会青年工作委员会(下简称“青工委”)、上海市计算机学会计算机视觉专委会(下简称“专委会”)联合主办,上海西井科技股份有限公司、江苏路街道商会承办的“上海计算机
    的头像 发表于 12-16 15:39 738次阅读

    使用代理式AI激活传统计算机视觉系统的三种方法

    当前的计算机视觉系统擅长于识别物理空间与流程中的事件,却难以诠释场景细节及其意义,也无法推理后续可能发生的情况。
    的头像 发表于 12-01 09:44 783次阅读

    工控机与普通计算机的核心差异解析

    在工业自动化和智能制造领域计算机设备作为核心控制单元,其选择直接影响整个系统的稳定性与可靠性。工控机与普通计算机虽同属计算设备,但其设计目标
    的头像 发表于 11-25 14:45 1999次阅读
    工控机与普通<b class='flag-5'>计算机</b>的核心差异解析

    量子竞赛进入深水区:IBM加速2029年容错量子计算机目标实现

    里程碑式进展不仅彰显了IBM在量子计算领域的技术实力,更为全球量子计算产业注入了强劲动力。 QBI计划:打造工业级容错量子计算机的“验证引擎” QBI全称为Quantum Benchm
    的头像 发表于 11-16 00:28 7602次阅读

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    VisionFive 2 上为目标检测准备软件环境并运行 MobileNet-SSD 模型【VisionFive 2单板计算机试用体验】VisionFive 2复古游戏机改造 作者:TLLED【VisionFive 2
    发表于 09-04 09:08

    易控智驾荣获计算机视觉顶会CVPR 2025认可

    近日,2025年国际计算机视觉与模式识别顶级会议(IEEE/CVF Conference on Computer Vision and Pattern Recognition,CVPR 2025)在美国田纳西州纳什维尔召开。
    的头像 发表于 07-29 16:54 1377次阅读

    自动化计算机经过加固后有什么好处?

    让我们讨论下部署坚固的自动化计算机些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够
    的头像 发表于 07-21 16:44 754次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 897次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 916次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    基于LockAI视觉识别模块:C++目标检测

    检测计算机视觉领域中关键任务,它不仅需要识别图像中存在哪些对象,还需要定位这些对象的位置
    发表于 06-06 14:43

    # 基于LockAI视觉识别模块:C++寻找色块

    在传统计算机视觉场景中,颜色识别是目标检测和分割的重要手段之。通过识别特定颜色的色块,可以在相对纯净的背景下快速定位
    的头像 发表于 05-12 14:27 914次阅读
    # 基于LockAI<b class='flag-5'>视觉</b>识别模块:C++寻找色块