论文原文:
YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的情况下,解决了当时基于深度学习的检测中的痛点---速度问题。下图是各目标检测系统的检测性能对比:
如果说faster-RCNN是真正实现了完全基于深度学习的端到端的检测,那么yolo则是更进一步,将 目标区域预测 与 目标类别判断 整合到单个神经网络模型中。各检测算法结构见下图:
每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:
其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。
每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。即SxS个网格,每个网格除了要预测B个bounding box外,还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,即一个网格只预测一组类别而不管里面有多少个bounding box,而confidence信息是针对每个bounding box的。)
举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。整个网络结构如下图所示:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。
得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS(非极大值抑制non-maximum suppresssion)处理,就得到最终的检测结果。
1、每个grid因为预测两个bounding box有30维(30=2*5+20),这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。其中坐标的x,y用bounding box相对grid的offset归一化到0-1之间,w,h除以图像的width和height也归一化到0-1之间。
2、对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。其实就是让算法对小box预测的偏移更加敏感。
3、一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。
4、损失函数公式见下图:
在实现中,最主要的就是怎么设计损失函数,坐标(x,y,w,h),confidence,classification 让这个三个方面得到很好的平衡。简单的全部采用sum-squared error loss来做这件事会有以下不足:
解决方法:
只有当某个网格中有object的时候才对classification error进行惩罚。只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用网络中的前20卷积层,外加average-pooling层和全连接层。模型训练了一周,获得了top-5 accuracy为(ImageNet2012 validation set),与GoogleNet模型准确率相当。
然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。
作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5 and\lambda _{noobj}= 。
作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为,学习速率延迟为。Learning schedule为:第一轮,学习速率从缓慢增加到(因为如果初始为高学习速率,会导致模型发散);保持速率到75轮;然后在后30轮中,下降到;最后30轮,学习速率为。
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相对于之前的物体检测方法有多个优点:
1、 YOLO检测物体非常快
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
2、 YOLO可以很好的避免背景错误,产生false positives
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
3、 YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
尽管YOLO有这些优点,它也有一些缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。
运动目标检测与跟踪算法研究 视觉是人类感知自身周围复杂环境最直接有效的手段之一, 而在现实生活中 大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能 够快速的发现运动目标, 并对目标的运动轨迹进行预测和描绘。 随着计算机技术、 通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之 一。 而运动目标检测与跟踪是计算机视觉研究的核心课题之一, 融合了图像处理、 模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、 视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实 用价值和广阔的发展前景。 1、国内外研究现状 运动目标检测 运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。 根据运动目标与摄像机之间的关系, 运动目标检测分为静态背景下的运动目标检 测和动态背景下的运动目标检测。 静态背景下的运动目标检测是指摄像机在整个 监视过程中不发生移动; 动态背景下的运动目标检测是指摄像机在监视过程中发 生了移动,如平动、旋转或多自由度运动等。 静态背景 静态背景下的运动目标检测方法主要有以下几种: (1)背景差分法 背景差分法是目前最常用的一种目标检测方法, 其基本思想就是首先获得一个 背景模型,然后将当前帧与背景模型相减,如果像素差值大于某一阈值,则判断 此像素属于运动目标,否则属于背景图像。利用当前图像与背景图像的差分来检 测运动区域,一般能够提供比较完整的特征数据,但对于动态场景的变化,如光 照和外来无关事件的干扰等特别敏感。 很多研究人员目前都致力于开发不同的背 景模型,以减少动态场景变化对运动目标检测的影响。背景模型的建立与更新、 阴影的去除等对跟踪结果的好坏至关重要。 背景差分法的实现简单,在固定背景下能够完整地精确、快速地分割出运动 对象。不足之处是易受环境光线变化的影响,需要加入背景图像更新机制,且只 对背景已知的运动对象检测比较有效, 不适用于摄像头运动或者背景灰度变化很 大的情况。 (2)帧间差分法 帧间差分法是在连续的图像序列中两个或三个相邻帧间, 采用基于像素的时 间差分并阈值化来提取图像中的运动区域。 帧间差分法对动态环境具有较强的自 适应性,但一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产 生空洞现象。因此在相邻帧间差分法的基础上提出了对称差分法,它是对图像序 列中每连续三帧图像进行对称差分,检测出目标的运动范围,同时利用上一帧分 割出来的模板对检测出来的目标运动范围进行修正, 从而能较好地检测出中间帧 运动目标的形状轮廓。 帧间差分法非常适合于动态变化的环境,因为它只对运动物体敏感。实际上 它只检测相对运动的物体,而且因两幅图像的时间间隔较短,差分图像受光线 变化影响小,检测有效而稳定。该算法简单、速度快,已得到广泛应用。虽然该 方法不能够完整地分割运动对象,只能检测出物体运动变化的区域,但所检测出 的物体运动信息仍可用于进一步的目标分割。 (3)光流法 光流法就充分的利用了图像自身所携带的信息。在空间中,运动可以用运动 场描述,而在一个图像平面上,物体的运动往往是通过图像序列中图像灰度分布 的不同来体现,从而使空间中的运动场转移到图像上就表示为光流场。所谓光流 是指空间中物体被观测面上的像素点运动产生的瞬时速度场, 包含了物体表面结 构和动态行为等重要信息。 基于光流法的运动目标检测采用了运动目标随时间变 化的光流特性,由于光流不仅包含了被观测物体的运动信息,还携带了物体运动 和景物三位结构的丰富信息。 在比较理想的情况下,它能够检测独立运动的对象, 不需要预先知道场景的任何信息,可以很精确地计算出运动物体的速度,并且可 用于动态场景的情况。 但是大多数光流方法的计算相当复杂,对硬件要求比较高, 不适于实时处理,而且对噪声比较敏感,抗噪性差。并且由于遮挡、多光源、透明 性及噪声等原因,使得光流场基本方程——灰度守恒的假设条件无法满足,不能 正确求出光流场,计算方也相当复杂,计算量巨大,不能满足实时的要求。 动态背景 动态背景下的运动目标检测由于存在着目标与摄像机之间复杂的相对运动, 检测方法要比静态背景下的运动目标检测方法复杂。常用的检测方法有匹配法、 光流法以及全局运动估计法等。 2、运动目标跟踪 运动目标跟踪是确定同一物体在图像序列的不同帧中的位置的过程。 近年来 出现了大批运动目标跟踪方法,许多文献对这些方法进行了分类介绍,可将目标 跟踪方法分为四类:基于区域的跟踪、基于特征的跟踪、基于活动轮廓的跟踪、 基于模型的跟踪,这种分类方法概括了目前大多数跟踪方法,下面用这种分类方 法对目前的跟踪方法进行概括介绍。 (1)基于区域的跟踪 基于区域的跟踪方法基本思想是: 首先通过图像分割或预先人为确定提取包 含目标区域的模板,并设定一个相似性度量,然后在序列图像中搜索目标,把度 量取极值时对应的区域作为对应帧中的目标区域。 由于提取的目标模板包含了较 完整的目标信息,该方法在目标未被遮挡时,跟踪精度非常高,跟踪非常稳定, 但通常比较耗时,特别是当目标区域较大时,因此一般应用于跟踪较小的目标或 对比度较差的目标。该方法还可以和多种预测算法结合使用,如卡尔曼预测、粒 子预测等,以估计每帧图像中目标的位置。近年来,对基于区域的跟踪方法关注 较多的是如何处理运动目标姿态变化引起的模板变化时的情况以及目标被严重 遮挡时的情况。 (2)基于特征的跟踪 基于特征的跟踪方法基本思想是:首先提取目标的某个或某些局部特征,然 后利用某种匹配算法在图像序列中进行特征匹配,从而实现对目标的跟踪。该方 法的优点是即使目标部分被遮挡,只要还有一部分特征可以被看到,就可以完成 跟踪任务,另外,该方法还可与卡尔曼滤波器结合使用,实时性较好,因此常用 于复杂场景下对运动目标的实时、 鲁棒跟踪。 用于跟踪的特征很多, 如角点边缘、 形状、纹理、颜色等,如何从众多的特征中选取最具区分性、最稳定的特征是基 于特征的跟踪方法的关键和难点所在。 (3)基于活动轮廓的跟踪 基于活动轮廓的跟踪方法基本思想是:利用封闭的曲线轮廓表达运动目标, 结合图像特征、曲线轮廓构造能量函数,通过求解极小化能量实现曲线轮廓的自 动连续更新,从而实现对目标的跟踪。自Kass在1987年提出Snake模型以来,基 于活动轮廓的方法就开始广泛应用于目标跟踪领域。相对于基于区域的跟踪方 法,轮廓表达有减少复杂度的优点,而且在目标被部分遮挡的情况下也能连续的 进行跟踪,但是该方法的跟踪结果受初始化影响较大,对噪声也较为敏感。 (4)基于模型的跟踪 基于模型的跟踪方法基本思想是: 首先通过一定的先验知识对所跟踪目标建 立模型,然后通过匹配跟踪目标,并进行模型的实时更新。通常利用测量、CAD 工具和计算机视觉技术建立模型。主要有三种形式的模型,即线图模型、二维轮 廓模型和三维立体模型口61,应用较多的是运动目标的三维立体模型,尤其是对 刚体目标如汽车的跟踪。该方法的优点是可以精确分析目标的运动轨迹,即使在 目标姿态变化和部分遮挡的情况下也能够可靠的跟踪, 但跟踪精度取决于模型的 精度,而在现实生活中要获得所有运动目标的精确模型是非常困难的。 目标检测算法,至今已提出了数千种各种类型的算法,而且每年都有上百篇相 关的研究论文或报告发表。尽管人们在目标检测或图像分割等方面做了许多研 究,现己提出的分割算法大都是针对具体问题的,并没有一种适合于所有情况的 通用算法。 目前, 比较经典的运动目标检测算法有: 双帧差分法、 三帧差分法(对 称差分法)、背景差法、光流法等方法,这些方法之间并不是完全独立,而是可 以相互交融的。 目标跟踪的主要目的就是要建立目标运动的时域模型, 其算法的优劣直接影响 着运动目标跟踪的稳定性和精确度, 虽然对运动目标跟踪理论的研究已经进行了 很多年,但至今它仍然是计算机视觉等领域的研究热点问题之一。研究一种鲁棒 性好、精确、高性能的运动目标跟踪方法依然是该研究领域所面临的一个巨大挑 战。基于此目的,系统必须对每个独立的目标进行持续的跟踪。为了实现对复杂 环境中运动目标快速、稳定的跟踪,人们提出了众多算法,但先前的许多算法都 是针对刚体目标,或是将形变较小的非刚体近似为刚体目标进行跟踪,因而这些 算法难以实现对形状变化较大的非刚体目标的正确跟踪。 根据跟踪算法所用的预 测技术来划分,目前主要的跟踪算法有:基于均值漂移的方法、基于遗传算法的 方法、基于Kalman滤波器的方法、基于Monto Carlo的方法以及多假设跟踪的方 法等。 运动检测与目标跟踪算法模块 运动检测与目标跟踪算法模块 与目标跟踪 一、运动检测算法 1.算法效果 算法效果总体来说,对比度高的视频检测效果要优于对比度低的视频。 算法可以比较好地去除目标周围的浅影子,浅影的去除率在 80%以上。去影后目标的 完整性可以得到较好的保持,在 80%以上。在对比度比较高的环境中可以准确地识别较大 的滞留物或盗移物。 从对目标的检测率上来说,对小目标较难进行检测。一般目标小于 40 个像素就会被漏 掉。对于对比度不高的目标会检测不完整。总体上来说,算法在对比度较高的环境中漏检率 都较低,在 以下,在对比度不高或有小目标的场景下漏检率在 6%以下。 精细运动检测的目的是在较理想的环境下尽量精确地提取目标的轮廓和区域, 以供高层 进行应用。同时在分离距离较近目标和进行其它信息的进一步判断也具有一定的优势。 反映算法优缺点的详细效果如下所示: 去影子和完整性 效果好 公司内视频 左边的为去影前,右边的 为去影后的结果,可以看出在 完整 性和去影率上 都有所 突 出。 这两个视频的共周特点 城市交通 是,影子都是浅影子,视频噪 声不太明显。目标与背景的对 比度比较高。 效果差 这两个视频的特点是影子 都是深影子。虽然影子没有去 掉,但是物体的完整性是比较 高的。主要原因就是场景的对 路口,上午 十点 比度比较高。 滞留物检测和稳定性 效果好 会议室盗移 效果好的原因,一是盗移或 滞留目标与背景对比度较大,二 是目标本身尺寸较大。 另外盗移物或滞留物在保持 各自的状态期间不能受到光照变 化或其它明显运动目标的干扰, 要不然有可能会造成判断的不稳 定。 效果差 会议室 遗留 物 大部分时间内,滞留的判断 都是较稳定的,但是在后期出现 了不稳定。主要原因是目标太小 的原故。 因此在进行滞留物判断时, 大目标,对比度较高的环境有利 于判断的稳定性和准确性。 漏检率 效果好 城市交通 在对比度高的环境下, 目标相对都较大的情况下 (大于 40 个像素) 可以很 , 稳定的检测出目标。 在这种 条件下的漏检率通常都是 非常低的,在 以下。 效果差 行人-傍晚 和“行人”目录下 的 其 它 昏 暗 条件 下的视频 在对 比度较低的 情况 下,会造成检测结果不稳 定。漏检率较高。主要原因 是由于去影子造成的。 这种 对比度下的漏检率一般在 6%以下。 除了 对比度低是 造成 漏检的原因外, 过小的目标 也会造成漏检,一般是 40 个像素以下的目标都会被 忽略掉。 算法效率内存消耗(单位:b) .MD_ISRAM_data .MD_ISRAM_bss .MD_SDRAM_data 0x470 0x24 0x348 .MD_SDRAM_bss .MD_text 0x1a8480 0x6d40 速度 ms 运动区域占 2/3 左右时 CPU 占用率 一帧耗时 Max:57% Min: Avg: Max:23 Min: Avg:15 运动区域占 1/3 左右时 Max:45% Min: Avg:20% Max:18 Min: Avg:8 检测参数说明 检测参数说明 检测到的滞留物或盗走物的消失时间目前分别设定在 200 帧和 100 帧, 可以通过参数来 自行调整。 目前目标与背景的差异是根据局部光照强度所决定的, 范围在 4 个像素值以上。 目前参 数设置要求目标大小要在 20 个像素以上才能被检测到,可以通过参数来自行调整。 目标阴影的去除能力是可以调整的, 目前的参数设置可以去除大部分的浅影子和较小的 光照变化。 适用环境推荐光照条件较好(具有一定的对比度)的室内环境或室外环境。不易用它去检测过小的目 标,比如小于 40 个像素的目标。室外环境不易太复杂。输出目标为精细轮廓目标,可以为 后面高层应用提供良好的信息。 二、目标跟踪 稳定运行环境要求此版本跟踪算法与运动检测算法紧密结合, 对相机的架设和视频的背景环境和运动目标 数量运动方式有一定要求: 背景要求: 由于运动跟踪是基于运动检测的结果进行的, 所以对背景的要求和运动检测一样, 背景要求: 运动目标相对于背景要有一定反差。 运动目标:由于运动检测中,对较小的目标可能过滤掉。所以运动目标的大小要符合运动检 运动目标: 测的要求。运动目标的速度不能太大,要保证前后帧运动目标的重合面积大于 10 个像素。此阈值可修改(建议不要随意修改,过小,可能把碎片当成原目标分 裂出来的小目标,过大,可能失去跟踪。当然可试着调节以适应不同场景)。该 算法对由于运动检测在地面上产生的碎片抗干扰性比较差, 运动目标和碎片相遇 时,容易发生融合又分离的现象,造成轨迹混乱。消失目标和新生目标很容易当 成同一目标处理,所以可能出现一个新目标继承新生目标的轨迹。 运动方式: 运动目标的最大数量由外部设定。 但运动跟踪对运动目标比较稀疏的场景效果比 运动方式: 较好。 算法对由于运动检测在运动目标上产生的碎片有一定的抗干扰。 算法没对 物体的遮挡进行处理。对于两运动目标之间的遮挡按融合来处理。 拍摄角度: 拍摄角度:拍摄视野比较大,且最好是俯视拍摄。
论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation 提出时间:2014年 论文地址: 针对问题: 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。 创新点: RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。 参考博客: 。 论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 提出时间:2014年 论文地址: 针对问题: 该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。 创新点: 在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。 参考博客: 论文题目:Scalable Object Detection using Deep Neural Networks 提出时间:2014年 论文地址: 针对问题: 既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。 创新点: 本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。 参考博客: 论文题目:DeepBox: Learning Objectness with Convolutional Networks 提出时间:2015年ICCV 论文地址: 主要针对的问题: 本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。创新点: 本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。 参考博客: 论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection 提出时间:2015年ICCV 论文地址: 主要针对的问题: 对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢? 创新点: 通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。 参考博客: 论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 提出时间:2014年 论文地址: 针对问题: 如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。创新点: 作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。 参考博客 : 论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model 提出时间:2015年 论文地址: 针对问题: 既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。创新点: 作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。 参考博客 : 论文题目:Fast-RCNN 提出时间:2015年 论文地址: 针对问题: RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢? 创新点: 作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。 参考博客 : 论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers 提出时间:2015年 论文地址: 主要针对的问题: 本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。 创新点: 作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。 论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 提出时间:2015年NIPS 论文地址: 主要针对的问题: 由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢? 创新点: 将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。 参考博客 :
论文名称:Rich feature hierarchies for accurate object detection and semantic segmentation 提出时间:2014年 论文地址: 针对问题: 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即输入一张图,实现图上目标的定位(目标在哪)和分类(目标是什么)两个目标,并最终完成了RCNN网络模型。 创新点: RCNN提出时,检测网络的执行思路还是脱胎于分类网络。也就是深度学习部分仅完成输入图像块的分类工作。那么对检测任务来说如何完成目标的定位呢,作者采用的是Selective Search候选区域提取算法,来获得当前输入图上可能包含目标的不同图像块,再将图像块裁剪到固定的尺寸输入CNN网络来进行当前图像块类别的判断。 参考博客: 。 论文题目:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 提出时间:2014年 论文地址: 针对问题: 该论文讨论了,CNN提取到的特征能够同时用于定位和分类两个任务。也就是在CNN提取到特征以后,在网络后端组织两组卷积或全连接层,一组用于实现定位,输出当前图像上目标的最小外接矩形框坐标,一组用于分类,输出当前图像上目标的类别信息。也是以此为起点,检测网络出现基础主干网络(backbone)+分类头或回归头(定位头)的网络设计模式雏形。 创新点: 在这篇论文中还有两个比较有意思的点,一是作者认为全连接层其实质实现的操作和1x1的卷积是类似的,而且用1x1的卷积核还可以避免FC对输入特征尺寸的限制,那用1x1卷积来替换FC层,是否可行呢?作者在测试时通过将全连接层替换为1x1卷积核证明是可行的;二是提出了offset max-pooling,也就是对池化层输入特征不能整除的情况,通过进行滑动池化并将不同的池化层传递给后续网络层来提高效果。另外作者在论文里提到他的用法是先基于主干网络+分类头训练,然后切换分类头为回归头,再训练回归头的参数,最终完成整个网络的训练。图像的输入作者采用的是直接在输入图上利用卷积核划窗。然后在指定的每个网络层上回归目标的尺度和空间位置。 参考博客: 论文题目:Scalable Object Detection using Deep Neural Networks 提出时间:2014年 论文地址: 针对问题: 既然CNN网络提取的特征可以直接用于检测任务(定位+分类),作者就尝试将目标框(可能包含目标的最小外包矩形框)提取任务放到CNN中进行。也就是直接通过网络完成输入图像上目标的定位工作。 创新点: 本文作者通过将物体检测问题定义为输出多个bounding box的回归问题. 同时每个bounding box会输出关于是否包含目标物体的置信度, 使得模型更加紧凑和高效。先通过聚类获得图像中可能有目标的位置聚类中心,(800个anchor box)然后学习预测不考虑目标类别的二分类网络,背景or前景。用到了多尺度下的检测。 参考博客: 论文题目:DeepBox: Learning Objectness with Convolutional Networks 提出时间:2015年ICCV 论文地址: 主要针对的问题: 本文完成的工作与第三篇类似,都是对目标框提取算法的优化方案,区别是本文首先采用自底而上的方案来提取图像上的疑似目标框,然后再利用CNN网络提取特征对目标框进行是否为前景区域的排序;而第三篇为直接利用CNN网络来回归图像上可能的目标位置。创新点: 本文作者想通过CNN学习输入图像的特征,从而实现对输入网络目标框是否为真实目标的情况进行计算,量化每个输入框的包含目标的可能性值。 参考博客: 论文题目:AttentionNet: AggregatingWeak Directions for Accurate Object Detection 提出时间:2015年ICCV 论文地址: 主要针对的问题: 对检测网络的实现方案进行思考,之前的执行策略是,先确定输入图像中可能包含目标位置的矩形框,再对每个矩形框进行分类和回归从而确定目标的准确位置,参考RCNN。那么能否直接利用回归的思路从图像的四个角点,逐渐得到目标的最小外接矩形框和类别呢? 创新点: 通过从图像的四个角点,逐步迭代的方式,每次计算一个缩小的方向,并缩小指定的距离来使得逐渐逼近目标。作者还提出了针对多目标情况的处理方式。 参考博客: 论文题目:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 提出时间:2014年 论文地址: 针对问题: 如RCNN会将输入的目标图像块处理到同一尺寸再输入进CNN网络,在处理过程中就造成了图像块信息的损失。在实际的场景中,输入网络的目标尺寸很难统一,而网络最后的全连接层又要求输入的特征信息为统一维度的向量。作者就尝试进行不同尺寸CNN网络提取到的特征维度进行统一。创新点: 作者提出的SPPnet中,通过使用特征金字塔池化来使得最后的卷积层输出结果可以统一到全连接层需要的尺寸,在训练的时候,池化的操作还是通过滑动窗口完成的,池化的核宽高及步长通过当前层的特征图的宽高计算得到。原论文中的特征金字塔池化操作图示如下。 参考博客 : 论文题目:Object detection via a multi-region & semantic segmentation-aware CNN model 提出时间:2015年 论文地址: 针对问题: 既然第三篇论文multibox算法提出了可以用CNN来实现输入图像中待检测目标的定位,本文作者就尝试增加一些训练时的方法技巧来提高CNN网络最终的定位精度。创新点: 作者通过对输入网络的region进行一定的处理(通过数据增强,使得网络利用目标周围的上下文信息得到更精准的目标框)来增加网络对目标回归框的精度。具体的处理方式包括:扩大输入目标的标签包围框、取输入目标的标签中包围框的一部分等并对不同区域分别回归位置,使得网络对目标的边界更加敏感。这种操作丰富了输入目标的多样性,从而提高了回归框的精度。 参考博客 : 论文题目:Fast-RCNN 提出时间:2015年 论文地址: 针对问题: RCNN中的CNN每输入一个图像块就要执行一次前向计算,这显然是非常耗时的,那么如何优化这部分呢? 创新点: 作者参考了SPPNet(第六篇论文),在网络中实现了ROIpooling来使得输入的图像块不用裁剪到统一尺寸,从而避免了输入的信息丢失。其次是将整张图输入网络得到特征图,再将原图上用Selective Search算法得到的目标框映射到特征图上,避免了特征的重复提取。 参考博客 : 论文题目:DeepProposal: Hunting Objects by Cascading Deep Convolutional Layers 提出时间:2015年 论文地址: 主要针对的问题: 本文的作者观察到CNN可以提取到很棒的对输入图像进行表征的论文,作者尝试通过实验来对CNN网络不同层所产生的特征的作用和情况进行讨论和解析。 创新点: 作者在不同的激活层上以滑动窗口的方式生成了假设,并表明最终的卷积层可以以较高的查全率找到感兴趣的对象,但是由于特征图的粗糙性,定位性很差。相反,网络的第一层可以更好地定位感兴趣的对象,但召回率降低。 论文题目:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 提出时间:2015年NIPS 论文地址: 主要针对的问题: 由multibox(第三篇)和DeepBox(第四篇)等论文,我们知道,用CNN可以生成目标待检测框,并判定当前框为目标的概率,那能否将该模型整合到目标检测的模型中,从而实现真正输入端为图像,输出为最终检测结果的,全部依赖CNN完成的检测系统呢? 创新点: 将当前输入图目标框提取整合到了检测网络中,依赖一个小的目标框提取网络RPN来替代Selective Search算法,从而实现真正的端到端检测算法。 参考博客 :
论文发表流程有哪些?我看到:通知:部分论文取消、条件放宽。查阅各省最新政策可搜:全国论文办郑州郑密路20号办(简称、统称,搜索可查各省全部政策,在百度、360、搜狗58-68页,17年前是郑州郑密路18号全国论文办)、全国职称办郑州郑密路20号办、高级职称全国办郑州郑密路20号办。搜:高级经济师全国办郑州郑密路20号办、高级会计师全国办郑州郑密路20号办、高级农经师全国办郑州郑密路20号办、高级审计师全国办郑州郑密路20号办、高级统计师全国办郑州郑密路20号办、高级政工师全国办郑州郑密路20号办、高级工程师全国办郑州郑密路20号办、高级教师全国办郑州郑密路20号办、高级人力资源管理师全国办郑州郑密路20号办。在百度、360、搜狗58-68页。查阅最新政策、论文(选题、题目、范文、辅导)、报考条件、评审条件、考试科目、大纲,搜:高级经济师最新政策郑州郑密路20号办、高级经济师论文郑州郑密路20号办、高级经济师论文选题郑州郑密路20号办、高级经济师论文题目郑州郑密路20号办、高级经济师论文范文郑州郑密路20号办、高级经济师论文辅导郑州郑密路20号办、高级经济师报考条件郑州郑密路20号办、高级经济师评审条件郑州郑密路20号办、高级经济师考试科目郑州郑密路20号办、高级经济师考试大纲郑州郑密路20号办。后面把“高级经济师”依次换成“高级会计师、高级农经师、高级审计师、高级统计师、高级政工师、高级工程师、高级教师、高级人力资源管理师等”再搜索。在百度、360、搜狗58-68页。
运动目标检测与跟踪算法研究 视觉是人类感知自身周围复杂环境最直接有效的手段之一, 而在现实生活中 大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能 够快速的发现运动目标, 并对目标的运动轨迹进行预测和描绘。 随着计算机技术、 通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之 一。 而运动目标检测与跟踪是计算机视觉研究的核心课题之一, 融合了图像处理、 模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、 视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实 用价值和广阔的发展前景。 1、国内外研究现状 运动目标检测 运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。 根据运动目标与摄像机之间的关系, 运动目标检测分为静态背景下的运动目标检 测和动态背景下的运动目标检测。 静态背景下的运动目标检测是指摄像机在整个 监视过程中不发生移动; 动态背景下的运动目标检测是指摄像机在监视过程中发 生了移动,如平动、旋转或多自由度运动等。 静态背景 静态背景下的运动目标检测方法主要有以下几种: (1)背景差分法 背景差分法是目前最常用的一种目标检测方法, 其基本思想就是首先获得一个 背景模型,然后将当前帧与背景模型相减,如果像素差值大于某一阈值,则判断 此像素属于运动目标,否则属于背景图像。利用当前图像与背景图像的差分来检 测运动区域,一般能够提供比较完整的特征数据,但对于动态场景的变化,如光 照和外来无关事件的干扰等特别敏感。 很多研究人员目前都致力于开发不同的背 景模型,以减少动态场景变化对运动目标检测的影响。背景模型的建立与更新、 阴影的去除等对跟踪结果的好坏至关重要。 背景差分法的实现简单,在固定背景下能够完整地精确、快速地分割出运动 对象。不足之处是易受环境光线变化的影响,需要加入背景图像更新机制,且只 对背景已知的运动对象检测比较有效, 不适用于摄像头运动或者背景灰度变化很 大的情况。 (2)帧间差分法 帧间差分法是在连续的图像序列中两个或三个相邻帧间, 采用基于像素的时 间差分并阈值化来提取图像中的运动区域。 帧间差分法对动态环境具有较强的自 适应性,但一般不能完全提取出所有相关的特征像素点,在运动实体内部容易产 生空洞现象。因此在相邻帧间差分法的基础上提出了对称差分法,它是对图像序 列中每连续三帧图像进行对称差分,检测出目标的运动范围,同时利用上一帧分 割出来的模板对检测出来的目标运动范围进行修正, 从而能较好地检测出中间帧 运动目标的形状轮廓。 帧间差分法非常适合于动态变化的环境,因为它只对运动物体敏感。实际上 它只检测相对运动的物体,而且因两幅图像的时间间隔较短,差分图像受光线 变化影响小,检测有效而稳定。该算法简单、速度快,已得到广泛应用。虽然该 方法不能够完整地分割运动对象,只能检测出物体运动变化的区域,但所检测出 的物体运动信息仍可用于进一步的目标分割。 (3)光流法 光流法就充分的利用了图像自身所携带的信息。在空间中,运动可以用运动 场描述,而在一个图像平面上,物体的运动往往是通过图像序列中图像灰度分布 的不同来体现,从而使空间中的运动场转移到图像上就表示为光流场。所谓光流 是指空间中物体被观测面上的像素点运动产生的瞬时速度场, 包含了物体表面结 构和动态行为等重要信息。 基于光流法的运动目标检测采用了运动目标随时间变 化的光流特性,由于光流不仅包含了被观测物体的运动信息,还携带了物体运动 和景物三位结构的丰富信息。 在比较理想的情况下,它能够检测独立运动的对象, 不需要预先知道场景的任何信息,可以很精确地计算出运动物体的速度,并且可 用于动态场景的情况。 但是大多数光流方法的计算相当复杂,对硬件要求比较高, 不适于实时处理,而且对噪声比较敏感,抗噪性差。并且由于遮挡、多光源、透明 性及噪声等原因,使得光流场基本方程——灰度守恒的假设条件无法满足,不能 正确求出光流场,计算方也相当复杂,计算量巨大,不能满足实时的要求。 动态背景 动态背景下的运动目标检测由于存在着目标与摄像机之间复杂的相对运动, 检测方法要比静态背景下的运动目标检测方法复杂。常用的检测方法有匹配法、 光流法以及全局运动估计法等。 2、运动目标跟踪 运动目标跟踪是确定同一物体在图像序列的不同帧中的位置的过程。 近年来 出现了大批运动目标跟踪方法,许多文献对这些方法进行了分类介绍,可将目标 跟踪方法分为四类:基于区域的跟踪、基于特征的跟踪、基于活动轮廓的跟踪、 基于模型的跟踪,这种分类方法概括了目前大多数跟踪方法,下面用这种分类方 法对目前的跟踪方法进行概括介绍。 (1)基于区域的跟踪 基于区域的跟踪方法基本思想是: 首先通过图像分割或预先人为确定提取包 含目标区域的模板,并设定一个相似性度量,然后在序列图像中搜索目标,把度 量取极值时对应的区域作为对应帧中的目标区域。 由于提取的目标模板包含了较 完整的目标信息,该方法在目标未被遮挡时,跟踪精度非常高,跟踪非常稳定, 但通常比较耗时,特别是当目标区域较大时,因此一般应用于跟踪较小的目标或 对比度较差的目标。该方法还可以和多种预测算法结合使用,如卡尔曼预测、粒 子预测等,以估计每帧图像中目标的位置。近年来,对基于区域的跟踪方法关注 较多的是如何处理运动目标姿态变化引起的模板变化时的情况以及目标被严重 遮挡时的情况。 (2)基于特征的跟踪 基于特征的跟踪方法基本思想是:首先提取目标的某个或某些局部特征,然 后利用某种匹配算法在图像序列中进行特征匹配,从而实现对目标的跟踪。该方 法的优点是即使目标部分被遮挡,只要还有一部分特征可以被看到,就可以完成 跟踪任务,另外,该方法还可与卡尔曼滤波器结合使用,实时性较好,因此常用 于复杂场景下对运动目标的实时、 鲁棒跟踪。 用于跟踪的特征很多, 如角点边缘、 形状、纹理、颜色等,如何从众多的特征中选取最具区分性、最稳定的特征是基 于特征的跟踪方法的关键和难点所在。 (3)基于活动轮廓的跟踪 基于活动轮廓的跟踪方法基本思想是:利用封闭的曲线轮廓表达运动目标, 结合图像特征、曲线轮廓构造能量函数,通过求解极小化能量实现曲线轮廓的自 动连续更新,从而实现对目标的跟踪。自Kass在1987年提出Snake模型以来,基 于活动轮廓的方法就开始广泛应用于目标跟踪领域。相对于基于区域的跟踪方 法,轮廓表达有减少复杂度的优点,而且在目标被部分遮挡的情况下也能连续的 进行跟踪,但是该方法的跟踪结果受初始化影响较大,对噪声也较为敏感。 (4)基于模型的跟踪 基于模型的跟踪方法基本思想是: 首先通过一定的先验知识对所跟踪目标建 立模型,然后通过匹配跟踪目标,并进行模型的实时更新。通常利用测量、CAD 工具和计算机视觉技术建立模型。主要有三种形式的模型,即线图模型、二维轮 廓模型和三维立体模型口61,应用较多的是运动目标的三维立体模型,尤其是对 刚体目标如汽车的跟踪。该方法的优点是可以精确分析目标的运动轨迹,即使在 目标姿态变化和部分遮挡的情况下也能够可靠的跟踪, 但跟踪精度取决于模型的 精度,而在现实生活中要获得所有运动目标的精确模型是非常困难的。 目标检测算法,至今已提出了数千种各种类型的算法,而且每年都有上百篇相 关的研究论文或报告发表。尽管人们在目标检测或图像分割等方面做了许多研 究,现己提出的分割算法大都是针对具体问题的,并没有一种适合于所有情况的 通用算法。 目前, 比较经典的运动目标检测算法有: 双帧差分法、 三帧差分法(对 称差分法)、背景差法、光流法等方法,这些方法之间并不是完全独立,而是可 以相互交融的。 目标跟踪的主要目的就是要建立目标运动的时域模型, 其算法的优劣直接影响 着运动目标跟踪的稳定性和精确度, 虽然对运动目标跟踪理论的研究已经进行了 很多年,但至今它仍然是计算机视觉等领域的研究热点问题之一。研究一种鲁棒 性好、精确、高性能的运动目标跟踪方法依然是该研究领域所面临的一个巨大挑 战。基于此目的,系统必须对每个独立的目标进行持续的跟踪。为了实现对复杂 环境中运动目标快速、稳定的跟踪,人们提出了众多算法,但先前的许多算法都 是针对刚体目标,或是将形变较小的非刚体近似为刚体目标进行跟踪,因而这些 算法难以实现对形状变化较大的非刚体目标的正确跟踪。 根据跟踪算法所用的预 测技术来划分,目前主要的跟踪算法有:基于均值漂移的方法、基于遗传算法的 方法、基于Kalman滤波器的方法、基于Monto Carlo的方法以及多假设跟踪的方 法等。 运动检测与目标跟踪算法模块 运动检测与目标跟踪算法模块 与目标跟踪 一、运动检测算法 1.算法效果 算法效果总体来说,对比度高的视频检测效果要优于对比度低的视频。 算法可以比较好地去除目标周围的浅影子,浅影的去除率在 80%以上。去影后目标的 完整性可以得到较好的保持,在 80%以上。在对比度比较高的环境中可以准确地识别较大 的滞留物或盗移物。 从对目标的检测率上来说,对小目标较难进行检测。一般目标小于 40 个像素就会被漏 掉。对于对比度不高的目标会检测不完整。总体上来说,算法在对比度较高的环境中漏检率 都较低,在 以下,在对比度不高或有小目标的场景下漏检率在 6%以下。 精细运动检测的目的是在较理想的环境下尽量精确地提取目标的轮廓和区域, 以供高层 进行应用。同时在分离距离较近目标和进行其它信息的进一步判断也具有一定的优势。 反映算法优缺点的详细效果如下所示: 去影子和完整性 效果好 公司内视频 左边的为去影前,右边的 为去影后的结果,可以看出在 完整 性和去影率上 都有所 突 出。 这两个视频的共周特点 城市交通 是,影子都是浅影子,视频噪 声不太明显。目标与背景的对 比度比较高。 效果差 这两个视频的特点是影子 都是深影子。虽然影子没有去 掉,但是物体的完整性是比较 高的。主要原因就是场景的对 路口,上午 十点 比度比较高。 滞留物检测和稳定性 效果好 会议室盗移 效果好的原因,一是盗移或 滞留目标与背景对比度较大,二 是目标本身尺寸较大。 另外盗移物或滞留物在保持 各自的状态期间不能受到光照变 化或其它明显运动目标的干扰, 要不然有可能会造成判断的不稳 定。 效果差 会议室 遗留 物 大部分时间内,滞留的判断 都是较稳定的,但是在后期出现 了不稳定。主要原因是目标太小 的原故。 因此在进行滞留物判断时, 大目标,对比度较高的环境有利 于判断的稳定性和准确性。 漏检率 效果好 城市交通 在对比度高的环境下, 目标相对都较大的情况下 (大于 40 个像素) 可以很 , 稳定的检测出目标。 在这种 条件下的漏检率通常都是 非常低的,在 以下。 效果差 行人-傍晚 和“行人”目录下 的 其 它 昏 暗 条件 下的视频 在对 比度较低的 情况 下,会造成检测结果不稳 定。漏检率较高。主要原因 是由于去影子造成的。 这种 对比度下的漏检率一般在 6%以下。 除了 对比度低是 造成 漏检的原因外, 过小的目标 也会造成漏检,一般是 40 个像素以下的目标都会被 忽略掉。 算法效率内存消耗(单位:b) .MD_ISRAM_data .MD_ISRAM_bss .MD_SDRAM_data 0x470 0x24 0x348 .MD_SDRAM_bss .MD_text 0x1a8480 0x6d40 速度 ms 运动区域占 2/3 左右时 CPU 占用率 一帧耗时 Max:57% Min: Avg: Max:23 Min: Avg:15 运动区域占 1/3 左右时 Max:45% Min: Avg:20% Max:18 Min: Avg:8 检测参数说明 检测参数说明 检测到的滞留物或盗走物的消失时间目前分别设定在 200 帧和 100 帧, 可以通过参数来 自行调整。 目前目标与背景的差异是根据局部光照强度所决定的, 范围在 4 个像素值以上。 目前参 数设置要求目标大小要在 20 个像素以上才能被检测到,可以通过参数来自行调整。 目标阴影的去除能力是可以调整的, 目前的参数设置可以去除大部分的浅影子和较小的 光照变化。 适用环境推荐光照条件较好(具有一定的对比度)的室内环境或室外环境。不易用它去检测过小的目 标,比如小于 40 个像素的目标。室外环境不易太复杂。输出目标为精细轮廓目标,可以为 后面高层应用提供良好的信息。 二、目标跟踪 稳定运行环境要求此版本跟踪算法与运动检测算法紧密结合, 对相机的架设和视频的背景环境和运动目标 数量运动方式有一定要求: 背景要求: 由于运动跟踪是基于运动检测的结果进行的, 所以对背景的要求和运动检测一样, 背景要求: 运动目标相对于背景要有一定反差。 运动目标:由于运动检测中,对较小的目标可能过滤掉。所以运动目标的大小要符合运动检 运动目标: 测的要求。运动目标的速度不能太大,要保证前后帧运动目标的重合面积大于 10 个像素。此阈值可修改(建议不要随意修改,过小,可能把碎片当成原目标分 裂出来的小目标,过大,可能失去跟踪。当然可试着调节以适应不同场景)。该 算法对由于运动检测在地面上产生的碎片抗干扰性比较差, 运动目标和碎片相遇 时,容易发生融合又分离的现象,造成轨迹混乱。消失目标和新生目标很容易当 成同一目标处理,所以可能出现一个新目标继承新生目标的轨迹。 运动方式: 运动目标的最大数量由外部设定。 但运动跟踪对运动目标比较稀疏的场景效果比 运动方式: 较好。 算法对由于运动检测在运动目标上产生的碎片有一定的抗干扰。 算法没对 物体的遮挡进行处理。对于两运动目标之间的遮挡按融合来处理。 拍摄角度: 拍摄角度:拍摄视野比较大,且最好是俯视拍摄。
论文发表流程有哪些?完成一篇SCI论文后,下一个任务是如何准备和组织所需的文件和提交的材料。稿件提交后,总刊编辑将进行正式审稿,检查稿件在格式和内容上是否符合本刊要求。稿件通过正式评审后,即可进入实质性评审阶段。因此,应高度重视提交文件的准备工作。投稿前,在选择投稿期刊后,首先要认真阅读期刊作者主页指南上的每一个细节要求,并严格按照目标期刊投稿指南准备相关投稿材料。如果投稿指南上的描述不清楚,你可以下载最新一期的期刊供阅读和参考。许多杂志都会在提交指南页面提供免费下载的样本供作者参考。不同的杂志需要准备不同的文件,但它们也有某些共同点。例如,提交材料通常包括:正文(手稿或正文)、扉页(全称或扉页)、附件、图片(图)、表格(表)、补充资料文件(辅助资料或补充材料)及其他相关文件等。以下是提交文件的准备和注意事项的简要说明:文本(text)正文是对一篇论文的完整描述,按优先顺序,通常包括标题、摘要、导言、材料与方法、结果、讨论、致谢、参考文献、表格、图片说明(图例或图注)等主要部分。材料、方法和结果往往内容丰富。每个段落都可以设置副标题。副标题可以加粗或斜体,以便于阅读。少数杂志要求表格和图片说明不能放在全文中,而是放在单独的Word文档中。在正常情况下,提交指南将对文章的结构、格式和字数作出规定和详细介绍。整个稿件的每一部分都必须严格按照投稿指南的要求编写。标题页(完整标题或标题页)标题页包含文章的标题、所有作者信息(姓名、最高学位、单位及其通信地址)以及相应作者的联系信息(单位、地址、电话、传真和电子邮件)。大多数SCI期刊要求文章标题不得超过100个印刷体字符(包括字母、标点符号和空格),应为10-12个(不超过25个)英文单词的名词性短语或句子。作者排名的顺序应根据论文的写作贡献来决定。共同第一作者或共同通讯作者通常用“*”等符号标记,并单独解释。有些杂志需要在标题页上写基金支持,通常在标题页的下半部分。此外,大多数SCI期刊要求作者提供不超过40个印刷字符的标题(行标题、短标题)。求职信期刊编辑通常允许作者简要介绍论文的亮点和价值,作者也希望能为编辑提供一些信息,帮助他们的论文进行评审和决策。以上信息可写在提交信中,一封好的投稿信必须特别注意内容和格式。一些医学期刊在作者指南中对投稿信的内容和格式有具体要求。送审函的格式与一般公函相似,包括标题、标题、正文、背书、签名和附件等,正文是送审函的主体部分。在这一部分,你需要:完整地列出文章的标题。并简要介绍了本研究的主要意义、创新点、投稿意愿和适合期刊稿件的栏目。
这个数据其实是可以发论文的。做实验的结果数据是可以当论文发表的,实验的结果数据可以是论文写作中的结论,但是在写原理时需要有自己对于实验现象的分析,融入自己的理解和想法,这样论文重复率才不会太高,而且比较受审稿专家的认可,单纯的只有实验结果数据是不行的,没有自己创新的看法很容易被拒稿的。
论文原文:
YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的情况下,解决了当时基于深度学习的检测中的痛点---速度问题。下图是各目标检测系统的检测性能对比:
如果说faster-RCNN是真正实现了完全基于深度学习的端到端的检测,那么yolo则是更进一步,将 目标区域预测 与 目标类别判断 整合到单个神经网络模型中。各检测算法结构见下图:
每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:
其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。
每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。即SxS个网格,每个网格除了要预测B个bounding box外,还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,即一个网格只预测一组类别而不管里面有多少个bounding box,而confidence信息是针对每个bounding box的。)
举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。整个网络结构如下图所示:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。
得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS(非极大值抑制non-maximum suppresssion)处理,就得到最终的检测结果。
1、每个grid因为预测两个bounding box有30维(30=2*5+20),这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。其中坐标的x,y用bounding box相对grid的offset归一化到0-1之间,w,h除以图像的width和height也归一化到0-1之间。
2、对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。其实就是让算法对小box预测的偏移更加敏感。
3、一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。
4、损失函数公式见下图:
在实现中,最主要的就是怎么设计损失函数,坐标(x,y,w,h),confidence,classification 让这个三个方面得到很好的平衡。简单的全部采用sum-squared error loss来做这件事会有以下不足:
解决方法:
只有当某个网格中有object的时候才对classification error进行惩罚。只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用网络中的前20卷积层,外加average-pooling层和全连接层。模型训练了一周,获得了top-5 accuracy为(ImageNet2012 validation set),与GoogleNet模型准确率相当。
然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。
作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5 and\lambda _{noobj}= 。
作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为,学习速率延迟为。Learning schedule为:第一轮,学习速率从缓慢增加到(因为如果初始为高学习速率,会导致模型发散);保持速率到75轮;然后在后30轮中,下降到;最后30轮,学习速率为。
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相对于之前的物体检测方法有多个优点:
1、 YOLO检测物体非常快
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
2、 YOLO可以很好的避免背景错误,产生false positives
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
3、 YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
尽管YOLO有这些优点,它也有一些缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。
原文: Scalable Object Detection using Deep Neural Networks——学术范 最近,深度卷积神经网络在许多图像识别基准上取得了最先进的性能,包括ImageNet大规模视觉识别挑战(ILSVRC-2012)。在定位子任务中获胜的模型是一个网络,它预测了图像中每个对象类别的单个边界框和置信度得分。这样的模型捕获了围绕对象的整幅图像上下文,但如果不天真地复制每个实例的输出数量,就无法处理图像中同一对象的多个实例。在这篇论文中提出了一个显著性启发的神经网络检测模型,它预测了一组与类无关的边界框,每个框有一个分数,对应于它包含任何感兴趣的对象的可能性。该模型自然地为每个类处理数量可变的实例,并允许在网络的最高级别上进行跨类泛化。 目标检测是计算机视觉的基本任务之一。一个解决这个问题的通用范例是训练在子图像上操作的对象检测器,并在所有的场所和尺度上以详尽的方式应用这些检测器。这一范例被成功地应用于经过区别训练的可变形零件模型(DPM)中,以实现检测任务的最新结果。对所有可能位置和尺度的穷举搜索带来了计算上的挑战。随着类数量的增加,这个挑战变得更加困难,因为大多数方法都训练每个类单独的检测器。为了解决这个问题,人们提出了多种方法,从检测器级联到使用分割提出少量的对象假设。 关于对象检测的文献非常多,在本节中,我们将重点讨论利用类不可知思想和解决可伸缩性的方法。 许多提出的检测方法都是基于基于部件的模型,最近由于有区别学习和精心设计的特征,已经取得了令人印象深刻的性能。然而,这些方法依赖于在多个尺度上详尽地应用零件模板,这是非常昂贵的。此外,它们在类的数量上是可伸缩的,这对像ImageNet这样的现代数据集来说是一个挑战。 为了解决前一个问题,Lampert等人使用分支绑定策略来避免计算所有可能的对象位置。为了解决后一个问题,Song et al.使用了一个低维部件基,在所有对象类中共享。基于哈希算法的零件检测也取得了良好的结果。 另一种不同的工作,与我们的工作更接近,是基于对象可以本地化的想法,而不必知道它们的类。其中一些方法建立在自底向上无阶级分割[9]的基础上。通过这种方式得到的片段可以使用自上而下的反馈进行评分。基于同样的动机,Alexe等人使用一种廉价的分类器对对象假设是否为对象进行评分,并以这种方式减少了后续检测步骤的位置数量。这些方法可以被认为是多层模型,分割作为第一层,分割分类作为后续层。尽管它们编码了已证明的感知原理,但我们将表明,有更深入的模型,充分学习可以导致更好的结果。 最后,我们利用了DeepLearning的最新进展,最引人注目的是Krizhevsky等人的工作。我们将他们的边界盒回归检测方法扩展到以可扩展的方式处理多个对象的情况。然而,基于dnn的回归已经被Szegedy等人应用到对象掩模中。最后一种方法实现了最先进的检测性能,但由于单个掩模回归的成本,不能扩展到多个类。 我们的目标是通过预测一组表示潜在对象的边界盒来实现一种与类无关的可扩展对象检测。更准确地说,我们使用了深度神经网络(DNN),它输出固定数量的包围盒。此外,它为每个盒子输出一个分数,表示这个盒子包含一个对象的网络信任度。 为了形式化上述思想,我们将i-thobject框及其相关的置信度编码为最后一网层的节点值: Bounding box: 我们将每个框的左上角和右下角坐标编码为四个节点值,可以写成vectorli∈R4。这些坐标是归一化的w. r. t.图像尺寸,以实现图像绝对尺寸的不变性。每个归一化坐标是由最后一层的线性变换产生的。 Confidence: 置信度:包含一个对象的盒子的置信度得分被编码为单个节点valueci∈[0,1]。这个值是通过最后一个隐藏层的线性变换产生的,后面跟着一个sigmoid。 我们可以组合边界盒位置sli,i∈{1,…K}为一个线性层。同样,我们可以将所有置信区间ci,i∈{1,…K}作为一个s型层的输出。这两个输出层都连接到最后一个隐藏层 在推理时,我们的算法生成kbound盒。在我们的实验中,我们使用ek = 100和K= 200。如果需要,我们可以使用置信分数和非最大抑制在推理时获得较少数量的高置信框。这些盒子应该代表对象。因此,它们可以通过后续的分类器进行分类,实现目标检测。由于盒子的数量非常少,我们可以提供强大的分类器。在我们的实验中,我们使用另一个dnn进行分类。 我们训练一个DNN来预测每个训练图像的边界框及其置信度得分,以便得分最高的框与图像的groundtruth对象框很好地匹配。假设对于一个特定的训练例子,对象被标记为boundingboxesgj,j∈{1,…,M}。在实践中,pre- dictionary的数量远远大于groundtruthboxm的数量。因此,我们试图只优化与地面真实最匹配的预测框子集。我们优化他们的位置,以提高他们的匹配度,最大化他们的信心。与此同时,我们将剩余预测的置信度最小化,这被认为不能很好地定位真实对象。为了达到上述目的,我们为每个训练实例制定一个分配问题。Wexij∈{0,1}表示赋值:xij= 1,如果第i个预测被赋值给第j个真对象。这项任务的目标可以表示为 其中,我们使用标准化边界框坐标之间的el2距离来量化边界框之间的不同。此外,我们希望根据分配x优化盒子的可信度。最大化指定预测的置信度可以表示为 最终的损失目标结合了匹配损失和信心损失 受式1的约束。α平衡了不同损失条款的贡献。 对于每个训练例子,我们通过解决一个最佳的赋值x*的预测到真实的盒子 约束执行赋值解决方案。这是二部匹配的一种变体,是一种多项式复杂度匹配。在我们的应用程序中,匹配是非常便宜的——每幅图像中标记的对象的数量少于一打,而且在大多数情况下只有很少的对象被标记。然后,通过反向传播优化网络参数。例如,反向传播算法的一阶导数计算w、r、t、l和c 尽管上述定义的损失在原则上是足够的,但三次修改使其有可能更快地达到更好的准确性。第一个修改是对地面真实位置进行聚类,并找到这样的聚类/质心,我们可以使用这些聚类/质心作为每个预测位置的先验。因此,鼓励学习算法为每个预测位置学习一个残差到一个先验。 第二个修改涉及到在匹配过程中使用这些先验:不是将N个groundtruth位置与K个预测进行匹配,而是在K个先验和groundtruth之间找到最佳匹配。一旦匹配完成,就会像之前一样计算目标的置信度。此外,位置预测损失也不变:对于任何一对匹配的(目标,预测)位置,其损失定义为groundtruth和对应于匹配先验的坐标之间的差值。我们把使用先验匹配称为先验匹配,并假设它促进了预测的多样化。 需要注意的是,尽管我们以一种与类无关的方式定义了我们的方法,但我们可以将它应用于预测特定类的对象盒。要做到这一点,我们只需要在类的边框上训练我们的模型。此外,我们可以预测每个类的kbox。不幸的是,这个模型的参数数量会随着类的数量线性增长。此外,在一个典型的设置中,给定类的对象数量相对较少,这些参数中的大多数会看到很少有相应梯度贡献的训练示例。因此,我们认为我们的两步过程——首先本地化,然后识别——是一个更好的选择,因为它允许使用少量参数利用同一图像中多个对象类型的数据 我们使用的本地化和分类模型的网络架构与[10]使用的网络架构相同。我们使用Adagrad来控制学习速率衰减,128的小批量,以及使用多个相同的网络副本进行并行分布式训练,从而实现更快的收敛。如前所述,我们在定位损失中使用先验——这些是使用训练集上的均值来计算的。我们还使用α = 来平衡局部化和置信度损失。定位器可以输出用于推断的种植区以外的坐标。坐标被映射和截断到最后的图像区域。另外,使用非最大抑制对盒进行修剪,Jaccard相似度阈值为。然后,我们的第二个模型将每个边界框分类为感兴趣的对象或“背景”。为了训练我们的定位器网络,我们从训练集中生成了大约3000万幅图像,并对训练集中的每幅图像应用以下步骤。最后,样品被打乱。为了训练我们的本地化网络,我们通过对训练集中的每一幅图像应用以下步骤,从训练集中生成了大约3000万幅图像。对于每幅图像,我们生成相同数量的平方样本,使样本总数大约为1000万。对于每幅图像,样本被桶状填充,这样,对于0 - 5%、5 - 15%、15 - 50%、50 - 100%范围内的每个比例,都有相同数量的样本,其中被包围框覆盖的比例在给定范围内。训练集和我们大多数超参数的选择是基于过去使用非公开数据集的经验。在下面的实验中,我们没有探索任何非标准数据生成或正则化选项。在所有的实验中,所有的超参数都是通过对训练集。 Pascal Visual Object Classes (VOC)挑战是最常用的对象检测算法基准。它主要由复杂的场景图像组成,其中包含了20种不同的对象类别的边界框。在我们的评估中,我们关注的是2007版VOC,为此发布了一个测试集。我们通过培训VOC 2012展示了结果,其中包含了大约。11000张图片。我们训练了一个100框的定位器和一个基于深度网络的分类器。 我们在一个由1000万作物组成的数据集上训练分类器,该数据集重叠的对象至少为 jaccard重叠相似度。这些作物被标记为20个VOC对象类中的一个。•2000万负作物与任何物体盒最多有个Jaccard相似度。这些作物被贴上特殊的“背景”类标签。体系结构和超参数的选择遵循。 在第一轮中,定位器模型应用于图像中最大-最小中心方形作物。作物的大小调整到网络输入大小is220×220。单次通过这个网络,我们就可以得到上百个候选日期框。在对重叠阈值为的非最大抑制后,保留评分最高的前10个检测项,并通过21路分类器模型分别通过网络进行分类。最终的检测分数是给定盒子的定位分数乘以分类器在作物周围的最大方形区域上评估的分数的乘积。这些分数通过评估,并用于计算精确查全曲线。 首先,我们分析了本地化器在隔离状态下的性能。我们给出了被检测对象的数量,正如Pascal检测标准所定义的那样,与生成的包围框的数量相对比。在图1中,我们展示了使用VOC2012进行训练所获得的结果。此外,我们通过使用图像的最大中心面积(max-center square crop)作为输入以及使用两个尺度(second scale)来给出结果:最大中心面积(max-center crop)的第二个尺度(select3×3windows的大小为图像大小的60%)正如我们所看到的,当使用10个边界框的预算时,我们可以用第一个模型本地化的对象,用第二个模型本地化48%的对象。这显示出比其他报告的结果更好的性能,例如对象度算法达到42%[1]。此外,这个图表显示了在不同分辨率下观察图像的重要性。虽然我们的算法通过使用最大中心作物获得了大量的对象,但当使用更高分辨率的图像作物时,我们获得了额外的提升。进一步,我们用21-way分类器对生成的包围盒进行分类,如上所述。表1列出了VOC 2007的平均精度(APs)。达到的平均AP是,与先进水平相当。注意,我们的运行时间复杂度非常低——我们只使用top10框。示例检测和全精度召回曲线分别如图2和图3所示。值得注意的是,可视化检测是通过仅使用最大中心方形图像裁剪,即使用全图像获得的。然而,我们设法获得了相对较小的对象,例如第二行和第二列的船,以及第三行和第三列的羊。 在本工作中,我们提出了一种新的方法来定位图像中的对象,该方法可以预测多个边界框的时间。该方法使用深度卷积神经网络作为基本特征提取和学习模型。它制定了一个能够利用可变数量的groundtruth位置的多箱定位成本。在“一个类一个箱”方法的情况下,对1000个盒子进行非max-suppression,使用与给定图像中感兴趣的DeepMulti-Box方法相同的准则,并学习在未见图像中预测这些位置。 我们在VOC2007和ILSVRC-2012这两个具有挑战性的基准上给出了结果,在这两个基准上,所提出的方法具有竞争力。此外,该方法能够很好地预测后续分类器将探测到的位置。我们的结果表明,deepmultibox的方法是可扩展的,甚至可以在两个数据集之间泛化,就能够预测感兴趣的定位,甚至对于它没有训练的类别。此外,它能够捕获同一类物体的多种情况,这是旨在更好地理解图像的算法的一个重要特征。 在未来,我们希望能够将定位和识别路径折叠到一个单一的网络中,这样我们就能够在一个通过网络的一次性前馈中提取位置和类标签信息。即使在其当前状态下,双通道过程(本地化网络之后是分类网络)也会产生5-10个网络评估,每个评估的速度大约为1个CPU-sec(现代机器)。重要的是,这个数字并不与要识别的类的数量成线性关系,这使得所提出的方法与类似dpm的方法非常有竞争力。
能。目标检测能投ei的,根据个人意愿执行即可。目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。
原文: Scalable Object Detection using Deep Neural Networks——学术范 最近,深度卷积神经网络在许多图像识别基准上取得了最先进的性能,包括ImageNet大规模视觉识别挑战(ILSVRC-2012)。在定位子任务中获胜的模型是一个网络,它预测了图像中每个对象类别的单个边界框和置信度得分。这样的模型捕获了围绕对象的整幅图像上下文,但如果不天真地复制每个实例的输出数量,就无法处理图像中同一对象的多个实例。在这篇论文中提出了一个显著性启发的神经网络检测模型,它预测了一组与类无关的边界框,每个框有一个分数,对应于它包含任何感兴趣的对象的可能性。该模型自然地为每个类处理数量可变的实例,并允许在网络的最高级别上进行跨类泛化。 目标检测是计算机视觉的基本任务之一。一个解决这个问题的通用范例是训练在子图像上操作的对象检测器,并在所有的场所和尺度上以详尽的方式应用这些检测器。这一范例被成功地应用于经过区别训练的可变形零件模型(DPM)中,以实现检测任务的最新结果。对所有可能位置和尺度的穷举搜索带来了计算上的挑战。随着类数量的增加,这个挑战变得更加困难,因为大多数方法都训练每个类单独的检测器。为了解决这个问题,人们提出了多种方法,从检测器级联到使用分割提出少量的对象假设。 关于对象检测的文献非常多,在本节中,我们将重点讨论利用类不可知思想和解决可伸缩性的方法。 许多提出的检测方法都是基于基于部件的模型,最近由于有区别学习和精心设计的特征,已经取得了令人印象深刻的性能。然而,这些方法依赖于在多个尺度上详尽地应用零件模板,这是非常昂贵的。此外,它们在类的数量上是可伸缩的,这对像ImageNet这样的现代数据集来说是一个挑战。 为了解决前一个问题,Lampert等人使用分支绑定策略来避免计算所有可能的对象位置。为了解决后一个问题,Song et al.使用了一个低维部件基,在所有对象类中共享。基于哈希算法的零件检测也取得了良好的结果。 另一种不同的工作,与我们的工作更接近,是基于对象可以本地化的想法,而不必知道它们的类。其中一些方法建立在自底向上无阶级分割[9]的基础上。通过这种方式得到的片段可以使用自上而下的反馈进行评分。基于同样的动机,Alexe等人使用一种廉价的分类器对对象假设是否为对象进行评分,并以这种方式减少了后续检测步骤的位置数量。这些方法可以被认为是多层模型,分割作为第一层,分割分类作为后续层。尽管它们编码了已证明的感知原理,但我们将表明,有更深入的模型,充分学习可以导致更好的结果。 最后,我们利用了DeepLearning的最新进展,最引人注目的是Krizhevsky等人的工作。我们将他们的边界盒回归检测方法扩展到以可扩展的方式处理多个对象的情况。然而,基于dnn的回归已经被Szegedy等人应用到对象掩模中。最后一种方法实现了最先进的检测性能,但由于单个掩模回归的成本,不能扩展到多个类。 我们的目标是通过预测一组表示潜在对象的边界盒来实现一种与类无关的可扩展对象检测。更准确地说,我们使用了深度神经网络(DNN),它输出固定数量的包围盒。此外,它为每个盒子输出一个分数,表示这个盒子包含一个对象的网络信任度。 为了形式化上述思想,我们将i-thobject框及其相关的置信度编码为最后一网层的节点值: Bounding box: 我们将每个框的左上角和右下角坐标编码为四个节点值,可以写成vectorli∈R4。这些坐标是归一化的w. r. t.图像尺寸,以实现图像绝对尺寸的不变性。每个归一化坐标是由最后一层的线性变换产生的。 Confidence: 置信度:包含一个对象的盒子的置信度得分被编码为单个节点valueci∈[0,1]。这个值是通过最后一个隐藏层的线性变换产生的,后面跟着一个sigmoid。 我们可以组合边界盒位置sli,i∈{1,…K}为一个线性层。同样,我们可以将所有置信区间ci,i∈{1,…K}作为一个s型层的输出。这两个输出层都连接到最后一个隐藏层 在推理时,我们的算法生成kbound盒。在我们的实验中,我们使用ek = 100和K= 200。如果需要,我们可以使用置信分数和非最大抑制在推理时获得较少数量的高置信框。这些盒子应该代表对象。因此,它们可以通过后续的分类器进行分类,实现目标检测。由于盒子的数量非常少,我们可以提供强大的分类器。在我们的实验中,我们使用另一个dnn进行分类。 我们训练一个DNN来预测每个训练图像的边界框及其置信度得分,以便得分最高的框与图像的groundtruth对象框很好地匹配。假设对于一个特定的训练例子,对象被标记为boundingboxesgj,j∈{1,…,M}。在实践中,pre- dictionary的数量远远大于groundtruthboxm的数量。因此,我们试图只优化与地面真实最匹配的预测框子集。我们优化他们的位置,以提高他们的匹配度,最大化他们的信心。与此同时,我们将剩余预测的置信度最小化,这被认为不能很好地定位真实对象。为了达到上述目的,我们为每个训练实例制定一个分配问题。Wexij∈{0,1}表示赋值:xij= 1,如果第i个预测被赋值给第j个真对象。这项任务的目标可以表示为 其中,我们使用标准化边界框坐标之间的el2距离来量化边界框之间的不同。此外,我们希望根据分配x优化盒子的可信度。最大化指定预测的置信度可以表示为 最终的损失目标结合了匹配损失和信心损失 受式1的约束。α平衡了不同损失条款的贡献。 对于每个训练例子,我们通过解决一个最佳的赋值x*的预测到真实的盒子 约束执行赋值解决方案。这是二部匹配的一种变体,是一种多项式复杂度匹配。在我们的应用程序中,匹配是非常便宜的——每幅图像中标记的对象的数量少于一打,而且在大多数情况下只有很少的对象被标记。然后,通过反向传播优化网络参数。例如,反向传播算法的一阶导数计算w、r、t、l和c 尽管上述定义的损失在原则上是足够的,但三次修改使其有可能更快地达到更好的准确性。第一个修改是对地面真实位置进行聚类,并找到这样的聚类/质心,我们可以使用这些聚类/质心作为每个预测位置的先验。因此,鼓励学习算法为每个预测位置学习一个残差到一个先验。 第二个修改涉及到在匹配过程中使用这些先验:不是将N个groundtruth位置与K个预测进行匹配,而是在K个先验和groundtruth之间找到最佳匹配。一旦匹配完成,就会像之前一样计算目标的置信度。此外,位置预测损失也不变:对于任何一对匹配的(目标,预测)位置,其损失定义为groundtruth和对应于匹配先验的坐标之间的差值。我们把使用先验匹配称为先验匹配,并假设它促进了预测的多样化。 需要注意的是,尽管我们以一种与类无关的方式定义了我们的方法,但我们可以将它应用于预测特定类的对象盒。要做到这一点,我们只需要在类的边框上训练我们的模型。此外,我们可以预测每个类的kbox。不幸的是,这个模型的参数数量会随着类的数量线性增长。此外,在一个典型的设置中,给定类的对象数量相对较少,这些参数中的大多数会看到很少有相应梯度贡献的训练示例。因此,我们认为我们的两步过程——首先本地化,然后识别——是一个更好的选择,因为它允许使用少量参数利用同一图像中多个对象类型的数据 我们使用的本地化和分类模型的网络架构与[10]使用的网络架构相同。我们使用Adagrad来控制学习速率衰减,128的小批量,以及使用多个相同的网络副本进行并行分布式训练,从而实现更快的收敛。如前所述,我们在定位损失中使用先验——这些是使用训练集上的均值来计算的。我们还使用α = 来平衡局部化和置信度损失。定位器可以输出用于推断的种植区以外的坐标。坐标被映射和截断到最后的图像区域。另外,使用非最大抑制对盒进行修剪,Jaccard相似度阈值为。然后,我们的第二个模型将每个边界框分类为感兴趣的对象或“背景”。为了训练我们的定位器网络,我们从训练集中生成了大约3000万幅图像,并对训练集中的每幅图像应用以下步骤。最后,样品被打乱。为了训练我们的本地化网络,我们通过对训练集中的每一幅图像应用以下步骤,从训练集中生成了大约3000万幅图像。对于每幅图像,我们生成相同数量的平方样本,使样本总数大约为1000万。对于每幅图像,样本被桶状填充,这样,对于0 - 5%、5 - 15%、15 - 50%、50 - 100%范围内的每个比例,都有相同数量的样本,其中被包围框覆盖的比例在给定范围内。训练集和我们大多数超参数的选择是基于过去使用非公开数据集的经验。在下面的实验中,我们没有探索任何非标准数据生成或正则化选项。在所有的实验中,所有的超参数都是通过对训练集。 Pascal Visual Object Classes (VOC)挑战是最常用的对象检测算法基准。它主要由复杂的场景图像组成,其中包含了20种不同的对象类别的边界框。在我们的评估中,我们关注的是2007版VOC,为此发布了一个测试集。我们通过培训VOC 2012展示了结果,其中包含了大约。11000张图片。我们训练了一个100框的定位器和一个基于深度网络的分类器。 我们在一个由1000万作物组成的数据集上训练分类器,该数据集重叠的对象至少为 jaccard重叠相似度。这些作物被标记为20个VOC对象类中的一个。•2000万负作物与任何物体盒最多有个Jaccard相似度。这些作物被贴上特殊的“背景”类标签。体系结构和超参数的选择遵循。 在第一轮中,定位器模型应用于图像中最大-最小中心方形作物。作物的大小调整到网络输入大小is220×220。单次通过这个网络,我们就可以得到上百个候选日期框。在对重叠阈值为的非最大抑制后,保留评分最高的前10个检测项,并通过21路分类器模型分别通过网络进行分类。最终的检测分数是给定盒子的定位分数乘以分类器在作物周围的最大方形区域上评估的分数的乘积。这些分数通过评估,并用于计算精确查全曲线。 首先,我们分析了本地化器在隔离状态下的性能。我们给出了被检测对象的数量,正如Pascal检测标准所定义的那样,与生成的包围框的数量相对比。在图1中,我们展示了使用VOC2012进行训练所获得的结果。此外,我们通过使用图像的最大中心面积(max-center square crop)作为输入以及使用两个尺度(second scale)来给出结果:最大中心面积(max-center crop)的第二个尺度(select3×3windows的大小为图像大小的60%)正如我们所看到的,当使用10个边界框的预算时,我们可以用第一个模型本地化的对象,用第二个模型本地化48%的对象。这显示出比其他报告的结果更好的性能,例如对象度算法达到42%[1]。此外,这个图表显示了在不同分辨率下观察图像的重要性。虽然我们的算法通过使用最大中心作物获得了大量的对象,但当使用更高分辨率的图像作物时,我们获得了额外的提升。进一步,我们用21-way分类器对生成的包围盒进行分类,如上所述。表1列出了VOC 2007的平均精度(APs)。达到的平均AP是,与先进水平相当。注意,我们的运行时间复杂度非常低——我们只使用top10框。示例检测和全精度召回曲线分别如图2和图3所示。值得注意的是,可视化检测是通过仅使用最大中心方形图像裁剪,即使用全图像获得的。然而,我们设法获得了相对较小的对象,例如第二行和第二列的船,以及第三行和第三列的羊。 在本工作中,我们提出了一种新的方法来定位图像中的对象,该方法可以预测多个边界框的时间。该方法使用深度卷积神经网络作为基本特征提取和学习模型。它制定了一个能够利用可变数量的groundtruth位置的多箱定位成本。在“一个类一个箱”方法的情况下,对1000个盒子进行非max-suppression,使用与给定图像中感兴趣的DeepMulti-Box方法相同的准则,并学习在未见图像中预测这些位置。 我们在VOC2007和ILSVRC-2012这两个具有挑战性的基准上给出了结果,在这两个基准上,所提出的方法具有竞争力。此外,该方法能够很好地预测后续分类器将探测到的位置。我们的结果表明,deepmultibox的方法是可扩展的,甚至可以在两个数据集之间泛化,就能够预测感兴趣的定位,甚至对于它没有训练的类别。此外,它能够捕获同一类物体的多种情况,这是旨在更好地理解图像的算法的一个重要特征。 在未来,我们希望能够将定位和识别路径折叠到一个单一的网络中,这样我们就能够在一个通过网络的一次性前馈中提取位置和类标签信息。即使在其当前状态下,双通道过程(本地化网络之后是分类网络)也会产生5-10个网络评估,每个评估的速度大约为1个CPU-sec(现代机器)。重要的是,这个数字并不与要识别的类的数量成线性关系,这使得所提出的方法与类似dpm的方法非常有竞争力。
好发。单目标跟踪是计算机视觉中一个众所周知且具有挑战性的研究课题,在过去的二十年中,许多研究人员提出了各种算法来解决这个问题,这个方向的论文属于学术界比较稀缺的,因此比较好发。
论文原文:
YOLO(you only look once)是继RCNN、faster-RCNN之后,又一里程碑式的目标检测算法。yolo在保持不错的准确度的情况下,解决了当时基于深度学习的检测中的痛点---速度问题。下图是各目标检测系统的检测性能对比:
如果说faster-RCNN是真正实现了完全基于深度学习的端到端的检测,那么yolo则是更进一步,将 目标区域预测 与 目标类别判断 整合到单个神经网络模型中。各检测算法结构见下图:
每个网格要预测B个bounding box,每个bounding box除了要回归自身的位置之外,还要附带预测一个confidence值。这个confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息,其值是这样计算的:
其中如果有object落在一个grid cell里,第一项取1,否则取0。第二项是预测的bounding box和实际的groundtruth之间的IoU值。
每个bounding box要预测(x, y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。即SxS个网格,每个网格除了要预测B个bounding box外,还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。(注意:class信息是针对每个网格的,即一个网格只预测一组类别而不管里面有多少个bounding box,而confidence信息是针对每个bounding box的。)
举例说明: 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x30的一个tensor。整个网络结构如下图所示:
在test的时候,每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box的class-specific confidence score:
等式左边第一项就是每个网格预测的类别信息,第二三项就是每个bounding box预测的confidence。这个乘积即encode了预测的box属于某一类的概率,也有该box准确度的信息。
得到每个box的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS(非极大值抑制non-maximum suppresssion)处理,就得到最终的检测结果。
1、每个grid因为预测两个bounding box有30维(30=2*5+20),这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。其中坐标的x,y用bounding box相对grid的offset归一化到0-1之间,w,h除以图像的width和height也归一化到0-1之间。
2、对不同大小的box预测中,相比于大box预测偏一点,小box预测偏一点肯定更不能被忍受的。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。这个参考下面的图很容易理解,小box的横轴值较小,发生偏移时,反应到y轴上相比大box要大。其实就是让算法对小box预测的偏移更加敏感。
3、一个网格预测多个box,希望的是每个box predictor专门负责预测某个object。具体做法就是看当前预测的box与ground truth box中哪个IoU大,就负责哪个。这种做法称作box predictor的specialization。
4、损失函数公式见下图:
在实现中,最主要的就是怎么设计损失函数,坐标(x,y,w,h),confidence,classification 让这个三个方面得到很好的平衡。简单的全部采用sum-squared error loss来做这件事会有以下不足:
解决方法:
只有当某个网格中有object的时候才对classification error进行惩罚。只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
作者采用ImageNet 1000-class 数据集来预训练卷积层。预训练阶段,采用网络中的前20卷积层,外加average-pooling层和全连接层。模型训练了一周,获得了top-5 accuracy为(ImageNet2012 validation set),与GoogleNet模型准确率相当。
然后,将模型转换为检测模型。作者向预训练模型中加入了4个卷积层和两层全连接层,提高了模型输入分辨率(224×224->448×448)。顶层预测类别概率和bounding box协调值。bounding box的宽和高通过输入图像宽和高归一化到0-1区间。顶层采用linear activation,其它层使用 leaky rectified linear。
作者采用sum-squared error为目标函数来优化,增加bounding box loss权重,减少置信度权重,实验中,设定为\lambda _{coord} =5 and\lambda _{noobj}= 。
作者在PASCAL VOC2007和PASCAL VOC2012数据集上进行了训练和测试。训练135轮,batch size为64,动量为,学习速率延迟为。Learning schedule为:第一轮,学习速率从缓慢增加到(因为如果初始为高学习速率,会导致模型发散);保持速率到75轮;然后在后30轮中,下降到;最后30轮,学习速率为。
作者还采用了dropout和 data augmentation来预防过拟合。dropout值为;data augmentation包括:random scaling,translation,adjust exposure和saturation。
YOLO模型相对于之前的物体检测方法有多个优点:
1、 YOLO检测物体非常快
因为没有复杂的检测流程,只需要将图像输入到神经网络就可以得到检测结果,YOLO可以非常快的完成物体检测任务。标准版本的YOLO在Titan X 的 GPU 上能达到45 FPS。更快的Fast YOLO检测速度可以达到155 FPS。而且,YOLO的mAP是之前其他实时物体检测系统的两倍以上。
2、 YOLO可以很好的避免背景错误,产生false positives
不像其他物体检测系统使用了滑窗或region proposal,分类器只能得到图像的局部信息。YOLO在训练和测试时都能够看到一整张图像的信息,因此YOLO在检测物体时能很好的利用上下文信息,从而不容易在背景上预测出错误的物体信息。和Fast-R-CNN相比,YOLO的背景错误不到Fast-R-CNN的一半。
3、 YOLO可以学到物体的泛化特征
当YOLO在自然图像上做训练,在艺术作品上做测试时,YOLO表现的性能比DPM、R-CNN等之前的物体检测系统要好很多。因为YOLO可以学习到高度泛化的特征,从而迁移到其他领域。
尽管YOLO有这些优点,它也有一些缺点:
1、YOLO的物体检测精度低于其他state-of-the-art的物体检测系统。
2、YOLO容易产生物体的定位错误。
3、YOLO对小物体的检测效果不好(尤其是密集的小物体,因为一个栅格只能预测2个物体)。
YOLO v1:You Only Look Once: Unified, Real-Time Object Detection YOLO v2:YOLO9000:Better,Faster,Stronger YOLO v3:YOLOv3: An Incremental Improvement
近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。而另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个CNN网络直接预测不同目标的类别与位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。这里我们谈的是Yolo-v1版本算法,其性能是差于后来的SSD算法的,但是Yolo后来也继续进行改进,产生了Yolo9000、YOLO v3算法。
传统方法常采用滑动窗口法,滑动窗口的目标检测算法思路非常简单,它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例(宽高比)的窗口在整张图片上以一定的步长进行滑动,然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了,如 DPM 就是采用这种思路。但是这个方法有致命的缺点,就是你并不知道要检测的目标大小是什么规模,所以你要设置不同大小和比例的窗口去滑动,而且还要选取合适的步长。但是这样会产生很多的子区域,并且都要经过分类器去做预测,这需要很大的计算量,所以你的分类器不能太复杂,因为要保证速度。解决思路之一就是减少要分类的子区域,这就是R-CNN的一个改进策略,其采用了 selective search 方法来找到最有可能包含目标的子区域(Region Proposal),其实可以看成采用启发式方法过滤掉很多子区域,这会提升效率。
如果你使用的是CNN分类器,那么滑动窗口是非常耗时的。但是结合卷积运算的特点,我们可以使用CNN实现更高效的滑动窗口方法。这里要介绍的是一种全卷积的方法,简单来说就是网络中用卷积层代替了全连接层,如图所示。输入图片大小是16x16,经过一系列卷积操作,提取了2x2的特征图,但是这个2x2的图上每个元素都是和原图是一一对应的,如图上蓝色的格子对应蓝色的区域,这不就是相当于在原图上做大小为14x14的窗口滑动,且步长为2,共产生4个字区域。最终输出的通道数为4,可以看成4个类别的预测概率值,这样一次CNN计算就可以实现窗口滑动的所有子区域的分类预测。这其实是overfeat算法的思路。之所可以CNN可以实现这样的效果是因为卷积操作的特性,就是图片的空间位置信息的不变性,尽管卷积过程中图片大小减少,但是位置对应关系还是保存的。这个思路也被R-CNN借鉴,从而诞生了Fast R-cNN算法。
上面尽管可以减少滑动窗口的计算量,但是只是针对一个固定大小与步长的窗口,这是远远不够的。Yolo算法很好的解决了这个问题,它不再是窗口滑动了,而是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,基于上面的分析,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,这就是Yolo算法的朴素思想。
整体来看,Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。
具体来说,Yolo的CNN网络将输入的图片分割成 网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,如图所示,可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗。每个单元格会预测B个边界框(bounding box)以及边界框的 置信度 (confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为 ,当该边界框是背景时(即不包含目标),此时 。而当该边界框包含目标时, 。边界框的准确度可以用预测框与实际框(ground truth)的 IOU (intersection over union,交并比)来表征,记为 IOU 。因此置信度可以定义为 。
很多人可能将Yolo的置信度看成边界框是否含有目标的概率,但是其实它是两个因子的乘积,预测框的准确度也反映在里面。边界框的大小与位置可以用4个值来表征:(x,y,h,w),其中(x,y)是边界框的中心坐标,而w和h是边界框的宽与高。还有一点要注意,中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,单元格的坐标定义如图所示。而边界框的w和h预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在[0,1]范围。这样,每个边界框的预测值实际上包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置,而最后一个值是置信度。
值得注意的是,不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是Yolo算法的一个缺点,在后来的改进版本中,Yolo9000是把类别概率预测值与边界框是绑定在一起的。同时,我们可以计算出各个边界框类别置信度(class-specificconfidence scores):
边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的好坏。后面会说,一般会根据类别置信度来过滤网络的预测框。
总结一下,每个单元格需要预测 个值。如果将输入图片划分为 网格,那么最终预测值为 大小的张量。整个模型的预测值结构如下图所示。对于PASCALVOC数据,其共有20个类别,如果使用S=7,B=2,那么最终的预测结果就是 大小的张量。在下面的网络结构中我们会详细讲述每个单元格的预测值的分布位置。
Yolo采用卷积网络来提取特征,然后使用全连接层来得到预测值。网络结构参考GooLeNet模型,包含24个卷积层和2个全连接层,如图所示。对于卷积层,主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数:max(x,0)。但是最后一层却采用线性激活函数。除了上面这个结构,文章还提出了一个轻量级版本Fast Yolo,其仅使用9个卷积层,并且卷积层中使用更少的卷积核。
可以看到网络的最后输出为 大小的张量。这和前面的讨论是一致的。这个张量所代表的具体含义如图所示。对于每一个单元格,前20个元素是类别概率值,然后2个元素是边界框置信度,两者相乘可以得到类别置信度,最后8个元素是边界框的(x,y,w,h)。大家可能会感到奇怪,对于边界框为什么把置信度c和(x,y,w,h)都分开排列,而不是按照(x,y,w,h,c)这样排列,其实纯粹是为了计算方便,因为实际上这30个元素都是对应一个单元格,其排列是可以任意的。但是分离排布,可以方便地提取每一个部分。这里来解释一下,首先网络的预测值是一个二维张量P,其shape为 。
采用切片,那么 就是类别概率部分; 是置信度部分; 是边界框的预测结果。这样,提取每个部分是非常方便的,这会方面后面的训练及预测时的计算。
在训练之前,先在ImageNet上进行了预训练,其预训练的分类模型采用图中前20个卷积层,然后添加一个average-pool层和全连接层。预训练之后,在预训练得到的20层卷积层之上加上随机初始化的4个卷积层和2个全连接层。由于检测任务一般需要更高清的图片,所以将网络的输入从224x224增加到了448x448。整个网络的流程如下图所示:
损失函数计算如下:
其中第一项是边界框中心坐标的误差项, 指的是第i个单元格存在目标,且该单元格中的第j个边界框负责预测该目标。第二项是边界框的高与宽的误差项。第三项是包含目标的边界框的置信度误差项。第四项是不包含目标的边界框的置信度误差项。而最后一项是包含目标的单元格的分类误差项, 指的是第i个单元格存在目标。
在说明Yolo算法的预测过程之前,这里先介绍一下非极大值抑制算法(non maximum suppression, NMS),这个算法不单单是针对Yolo算法的,而是所有的检测算法中都会用到。NMS算法主要解决的是一个目标被多次检测的问题,如图中人脸检测,可以看到人脸被多次检测,但是其实我们希望最后仅仅输出其中一个最好的预测框,比如对于美女,只想要红色那个检测结果。那么可以采用NMS算法来实现这样的效果:首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的IOU,如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框。
下面就来分析Yolo的预测过程,这里我们不考虑batch,认为只是预测一张输入图片。根据前面的分析,最终的网络输出是 ,但是我们可以将其分割成三个部分:类别概率部分为 ,置信度部分为 ,而边界框部分为 (对于这部分不要忘记根据原始图片计算出其真实值)。然后将前两项相乘可以得到 类别置信度值为 ,这里总共预测了 边界框。
所有的准备数据已经得到了,那么先说第一种策略来得到检测框的结果。首先,对于每个预测框根据类别置信度选取置信度最大的那个类别作为其预测标签,经过这层处理我们得到各个预测框的预测类别及对应的置信度值,其大小都是[7,7,2]。一般情况下,会设置置信度阈值,就是将置信度小于该阈值的box过滤掉,所以经过这层处理,剩余的是置信度比较高的预测框。最后再对这些预测框使用NMS算法,最后留下来的就是检测结果。一个值得注意的点是NMS是对所有预测框一视同仁,还是区分每个类别,分别使用NMS。Ng在中讲应该区分每个类别分别使用NMS,但是看了很多实现,其实还是同等对待所有的框,可能是不同类别的目标出现在相同位置这种概率很低吧。
上面的预测方法应该非常简单明了,但是对于Yolo算法,其却采用了另外一个不同的处理思路(至少从C源码看是这样的),其区别就是先使用NMS,然后再确定各个box的类别。其基本过程如图所示。对于98个boxes,首先将小于置信度阈值的值归0,然后分类别地对置信度值采用NMS,这里NMS处理结果不是剔除,而是将其置信度值归为0。最后才是确定各个box的类别,当其置信度值不为0时才做出检测结果输出。这个策略不是很直接,但是貌似Yolo源码就是这样做的。Yolo论文里面说NMS算法对Yolo的性能是影响很大的,所以可能这种策略对Yolo更好。
总结一下Yolo的优缺点。首先是优点,Yolo采用一个CNN网络来实现检测,是单管道策略,其训练与预测都是end-to-end,所以Yolo算法比较简洁且速度快。第二点由于Yolo是对整张图片做卷积,所以其在检测目标有更大的视野,它不容易对背景误判。另外,Yolo的泛化能力强,在做迁移时,模型鲁棒性高。
Yolo的缺点,首先Yolo各个单元格仅仅预测两个边界框,而且属于一个类别。对于小物体,Yolo的表现会不如人意。这方面的改进可以看SSD,其采用多尺度单元格。也可以看Faster R-CNN,其采用了anchor boxes。Yolo对于在物体的宽高比方面泛化率低,就是无法定位不寻常比例的物体。当然Yolo的定位不准确也是很大的问题。
参考链接 YOLO算法的原理与实现