DL for objection detection
在计算机视觉领域,“目标检测”主要解决两个问题:图像上多个目标物在哪里(位置),是什么(类别)。
围绕这个问题,人们一般把其发展历程分为3个阶段:
1. 传统的目标检测方法
2. 以R-CNN为代表的结合region proposal和CNN分类的目标检测框架(R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN, R-FCN)
3. 以YOLO为代表的将目标检测转换为回归问题的端到端(End-to-End)的目标检测框架(YOLO, SSD)
传统的目标检测方法
传统目标检测的方法一般分为三个阶段:
1) 区域选择:利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域。
2) 特征提取:提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测和普通目标检测常用的HOG特征等。
3) 分类器:利用分类器进行识别,比如常用的SVM模型。
总结:传统目标检测存在的两个主要问题:一个是基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余;二是手工设计的特征对于多样性的变化并没有很好的鲁棒性。
基于Region Proposal的目标检测算法
为了解决上述提到的滑动窗口的问题,我们采用region proposal(候选区域)方法,也就是找出可能的感兴趣区域(Region Of Interest, ROI)。该方法类似于光学字符识别(OCR)领域的切分,OCR切分常用过切分方法,简单说就是尽量切碎到小的连通域(比如小的笔画之类),然后再根据相邻块的一些形态学特征进行合并。但目标检测的对象相比OCR领域千差万别,而且图形不规则,大小不一,所以一定程度上可以说region proposal是比OCR切分更难的一个问题。
region proposal可能的方法有:
一、滑动窗口。滑动窗口本质上就是穷举法,利用不同的尺度和长宽比把所有可能的大大小小的块都穷举出来,然后送去识别,识别出来概率大的就留下来。很明显,这样的方法复杂度太高,产生了很多的冗余候选区域,在现实当中不可行。
二、规则块。在穷举法的基础上进行了一些剪枝,只选用固定的大小和长宽比。这在一些特定的应用场景是很有效的,比如拍照搜题APP小猿搜题中的汉字检测,因为汉字方方正正,长宽比大多比较一致,因此用规则块做区域提名是一种比较合适的选择。但是对于普通的目标检测来说,规则块依然需要访问很多的位置,复杂度高。
三、选择性搜索。从机器学习的角度来说,前面的方法召回是不错了,但是精度差强人意,所以问题的核心在于如何有效地去除冗余候选区域。其实冗余候选区域大多是发生了重叠,选择性搜索利用这一点,自底向上合并相邻的重叠区域,从而减少冗余。
区域提名并不只有以上所说的三种方法,实际上这块是非常灵活的,因此变种也很多,有兴趣的读者不妨参考一下文献:《What makes for effective detection proposals?》
选择性搜索的具体算法细节如下所示《Selective search for object recognition》。总体上选择性搜索是自底向上不断合并候选区域的迭代过程。
输入: 一张图片
输出:候选的目标位置集合L
算法:
1: 利用过切分方法得到候选的区域集合R = {r1,r2,…,rn}
2: 初始化相似集合S =
3: foreach 邻居区域对(ri,rj) do
4: 计算相似度s(ri,rj)
5: S = S s(ri,rj)
6: while S do
7: 得到最大的相似度s(ri,rj)=max(S)
8: 合并对应的区域rt = ri rj
9: 移除ri对应的所有相似度:S = S\s(ri,r*)
10: 移除rj对应的所有相似度:S = S\s(r*,rj)
11: 计算rt对应的相似度集合St
12: S = S St
13: R = R rt
14: L = R中所有区域对应的边框
从算法不难看出,R中的区域都是合并后的,因此减少了不少冗余,相当于准确率提升了,但是别忘了我们还需要继续保证召回率,因此算法1中的相似度计算策略就显得非常关键了。如果简单采用一种策略很容易错误合并不相似的区域,比如只考虑轮廓时,不同颜色的区域很容易被误合并。选择性搜索采用多样性策略来增加候选区域以保证召回,比如颜色空间考虑RGB、灰度、HSV及其变种等,相似度计算时既考虑颜色相似度,又考虑纹理、大小、重叠情况等。
region proposal利用了图像中的纹理、边缘、颜色等信息预先找出图中目标可能出现的位置,可以保证在选取较少窗口(几千个甚至几百个)的情况下保持较高的召回率。这大大降低了后续操作的时间复杂度,并且获取的候选窗口要比滑动窗口的质量更高。
总体上,选择性搜索是一种比较朴素的区域提名方法,被早期的基于深度学习的目标检测方法(包括Overfeat和R-CNN等)广泛利用,但被当前的新方法弃用了。
OverFeat
OverFeat是用CNN统一来做分类、定位和检测的经典之作,作者是深度学习大神之一————Yann Lecun在纽约大学的团队。OverFeat也是ILSVRC 2013任务3(分类+定位)的冠军得主。(http://www.image-net.org/challenges/LSVRC/2013/results.php)(《Integrated recognition, localization and detection using convolutional networks》)
OverFeat的核心思想有三点:
- 区域提名(region proposal):结合滑动窗口和规则块,即多尺度(multi-scale)的滑动窗口;
- 分类和定位:统一用CNN来做分类和预测边框位置,模型与AlexNet类似,其中1-5层为特征抽取层,即将图片转换为固定维度的特征向量,6-9层为分类层(分类任务专用),不同的任务(分类、定位、检测)公用特征抽取层(1-5层),只替换6-9层;
- 累积:因为用了滑动窗口,同一个目标对象会有多个位置,也就是多个视角;因为用了多尺度,同一个目标对象又会有多个大小不一的块。这些不同位置和不同大小块上的分类置信度会进行累加,从而使得判定更为准确。
OverFeat的关键步骤有四步:
- 利用滑动窗口进行不同尺度的区域提名,然后使用CNN模型对每个区域进行分类,得到类别和置信度。从图2中可以看出,不同缩放比例时,检测出来的目标对象数量和种类存在较大差异;
- 利用多尺度滑动窗口来增加检测数量,提升分类效果,如图3所示;
- 用回归模型预测每个对象的位置,从图4中来看,放大比例较大的图片,边框数量也较多;
- 边框合并。
Overfeat是CNN用来做目标检测的早期工作,主要思想是采用了多尺度滑动窗口来做分类、定位和检测,虽然是多个任务但重用了模型前面几层,这种模型重用的思路也是后来R-CNN系列不断沿用和改进的经典做法。
当然Overfeat也是有不少缺点的,至少速度和效果都有很大改进空间,后面的R-CNN系列在这两方面做了很多提升。
R-CNN
如前面所述,早期的目标检测,大都使用滑动窗口的方式进行窗口提名,这种方式本质是穷举法,R-CNN采用的是Selective Search。
以下是R-CNN的主要步骤:
- 区域提名:通过Selective Search从原始图片提取2000个左右区域候选框;
- 区域大小归一化:把所有侯选框缩放成固定大小(原文采用227×227);
- 特征提取:通过CNN网络,提取特征;
- 分类与回归:在特征层的基础上添加两个全连接层,再用SVM分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归器。
注意,图6中的第2步对应步骤中的1、2步,即包括区域提名和区域大小归一化。
Overfeat可以看做是R-CNN的一个特殊情况,只需要把Selective Search换成多尺度的滑动窗口,每个类别的边框回归器换成统一的边框回归器,SVM换为多层网络即可。但是Overfeat实际比R-CNN快9倍,这主要得益于卷积相关的共享计算。
实上,R-CNN有很多缺点:
- 重复计算:R-CNN虽然不再是穷举,但依然有两千个左右的候选框,这些候选框都需要进行CNN操作,计算量依然很大,其中有不少其实是重复计算;
- SVM模型:而且还是线性模型,在标注数据不缺的时候显然不是最好的选择;
- 训练测试分为多步:区域提名、特征提取、分类、回归都是断开的训练的过程,中间数据还需要单独保存;
- 训练的空间和时间代价很高:卷积出来的特征需要先存在硬盘上,这些特征需要几百G的存储空间;
- 慢:前面的缺点最终导致R-CNN出奇的慢,GPU上处理一张图片需要13秒,CPU上则需要53秒。
当然,R-CNN这次是冲着效果来的,其中ILSVRC 2013数据集上的mAP由Overfeat的24.3%提升到了31.4%,第一次有了质的改变。
SPP-net
SPP-net的主要思想是去掉了原始图像上的crop/warp等操作,换成了在卷积特征上的空间金字塔池化层(Spatial Pyramid Pooling,SPP)。
为何要引入SPP层 ?一部分原因是fast R-CNN里对图像进行不同程度的crop/warp会导致一些问题,比如上图中的crop会导致物体不全,warp导致物体被拉伸后形变严重。但更更更重要的原因是:fast R-CNN里我们对每一个region proposal都要进行一次CNN提取特征操作,这样带来了很多重复计算。试想假如我们只对整幅图像做一次CNN特征提取,那么原图一个region proposal可以对应到feature map(特征图)一个window区域,只需要将这些不同大小window的特征映射到同样的维度,将其作为全连接的输入,就能保证只对图像提取一次卷积层特征。
SPP就是为了解决这种问题的。SPP使用空间金字塔采样(spatial pyramid pooling)将每个window划分为4*4, 2*2, 1*1的块,然后每个块使用max-pooling下采样,这样对于每个window经过SPP层之后都得到了一个长度为(4*4+2*2+1)*256维度的特征向量,将这个作为全连接层的输入进行后续操作。
总结:使用SPP-NET大大加快了目标检测的速度,但是依然存在着很多问题:
a) 训练分为多个阶段,依然步骤繁琐
b) SPP-NET在微调网络时固定了卷积层,只对全连接层进行微调,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)(这一点其实不是很懂啊)
Fast R-CNN
Fast R-CNN是要解决R-CNN和SPP-net两千个左右候选框带来的重复计算问题,其主要思想为:
- 使用一个简化的SPP层 —— RoI(Region of Interesting) Pooling层,操作与SPP类似;
- 训练和测试是不再分多步:不再需要额外的硬盘来存储中间层的特征,梯度能够通过RoI Pooling层直接传播;此外,分类和回归用Multi-task的方式一起进行;
- SVD:使用SVD分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层。
Fast R-CNN的主要步骤如下:
- 特征提取:以整张图片为输入利用CNN得到图片的特征层;
- 区域提名:通过Selective Search等方法从原始图片提取区域候选框,并把这些候选框一一投影到最后的特征层;
- 区域归一化:针对特征层上的每个区域候选框进行RoI Pooling操作,得到固定大小的特征表示;
- 分类与回归:然后再通过两个全连接层,分别用softmax多分类做目标识别,用回归模型进行边框位置与大小微调。
Fast R-CNN在R-CNN的基础上又做了一些改进:
1)与SPP类似,它只对整幅图像做一次CNN特征提取,在后面加了一个类似于SPP的ROI pooling layer,其实就是下采样。不过因为不是固定尺寸输入,因此每次的pooling网格大小需要动态调整。比如某个ROI区域坐标为(x1,y1,x2,y2),即输入size为 (y2−y1)∗(x2−x1)(y2−y1)∗(x2−x1),如果要求pooling的输出size统一为pooledheight*pooledwideth,那么每个网格的size为(y2-y1)/pooledheight*(x2-x1)/pooledwidth
2)整个的训练过程是端到端的(除去region proposal提取阶段),梯度能够通过RoI Pooling层直接传播,直接使用softmax替代SVM分类,同时利用Multi-task Loss(多任务损失函数)将边框回归和分类一起进行。这里着重说一下Multi-task Loss函数:
总结:Fast R-CNN确实做得很棒,其缺点在于:region proposal的提取使用selective search,目标检测时间大多消耗在这上面(提region proposal 2~3s,而提特征分类只需0.32s),无法满足实时应用。
Faster R-CNN
Faster R-CNN最大的贡献就是RPN(Region Proposal Networks)网络。RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上是滑动窗口。假设我们得到的conv feature map维度是13∗13∗256,sliding window的大小是3∗3,即我们需要用一个3∗3∗256∗256的卷积核从而对每个位置得到一个256-d的向量;然后就是k=9,对每一个anchor box输出是物体和是背景的概率,所以cls layer就是18个输出节点了,那么在256-d和cls layer之间使用一个1∗1∗256∗18的卷积核,就可以得到cls layer;同理,reg layer的输出是36个,所以对应的卷积核是1∗1∗256∗36,这样就可以得到reg layer。
这里有一点我刚开始没想通:怎么体现论文中所说的3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)这个先验知识?其实这个通过loss founction可以看出来。说白了,我们相当于是以anchor box为锚点来对其附近的ground-truth box做一个bounding-box回归,好饶,,,
RPN的loss founcton:
这里x,xa和x∗分别代表于此窗口、anchor box窗口和ground-truth窗口的值。
在训练过程中,我们给每一个anchor对应的区域标注label。正标签:那些和任意一个ground truth box的重叠区域IOU最大的,对于那些和指定的ground truth的IOU超过0.7的。负标签:与所有的ground truth的IOU都小于0.3的。剩下的既不是正样本也不是负样本,不用于最终训练。
Faster R-CNN的主要步骤如下:
a) 特征提取:同Fast R-CNN;
b) region proposal:在最终的卷积特征层上利用k个不同的矩形框(Anchor Box)进行region proposal;即对每个Anchor Box对应的区域进行object/non-object二分类,并用k个回归模型(各自对应不同的Anchor Box)微调候选框位置与大小
c) 区域归一化:同fast R-CNN;
d) 分类与回归:进行目标分类,并做边框回归(感觉这一块再做一次边框回归是不是有点重复)。
Faster R-CNN的训练:为了让RPN的网络和Fast R-CNN网络实现卷积层的权值共享,其训练方法比较复杂,简而言之就是迭代的Alternating training。具体可参考下面给出的链接。
这篇论文非常优秀,其中介绍到的一些解决multiple scale或带有权值共享的联合训练的方式都很值得学习借鉴。
R-FCN
前面的目标检测方法都可以细分为两个子网络:
- 共享的全卷积网络;
- 不共享计算的ROI相关的子网络(比如全连接网络)。
R-FCN则将最后的全连接层之类换为了一个位置敏感的的卷积网络,从而让所有计算都可以共享。具体来说,先把每个提名区域划分为k×k个网格,比如R-FCN原文中k的取值为3,则对应的九个网格分别表示:左上top-left,上中top-center,……,右下bottom-right,对应图12中的九宫格及图13中的不同颜色的块,每个Grid都有对应的编码,但预测时候会有C+1个输出,C表示类别数目,+1是因为有背景类别,全部的输出通道数量为k2×(C+1)。
需要注意的是,上面两张图中不同位置都存在一个九宫格,但是Pooling时候只有一个起作用,比如bottom-right层只有右下角的小块起作用。那么问题来了,这一层其他的8个框有什么作用呢?答案是它们可以作为其他ROI(偏左或偏上一些的ROI)的右下角。
R-FCN的步骤为:
- 区域提名:使用RPN(Region Proposal Network,区域提名网络),RPN本身是全卷积网络结构;
- 分类与回归:利用和RPN共享的特征进行分类。当做bbox回归时,则将C设置为4。
RCNN学习笔记(11):R-FCN: Object Detection via Region-based Fully Convolutional Networks
深度学习论文笔记:R-FCN
论文笔记 | R-FCN: Object Detection via Region-based Fully Convolutional Networks
基于回归方法的端到端(End-to-End)的深度学习目标检测算法
本节介绍的为彻底端到端(End-to-End)的目标检测方法,这些方法无需region proposal。
YOLO
从网路结构可以看出整个过程非常简单,不需要中间的region proposal在找目标,直接回归便完成了位置和类别的判定。
那么如何才能做到直接在不同位置的网格上回归出目标的位置和类别信息呢?上面是YOLO的网络结构图,主要是最后两层的结构,卷积层之后接了一个4096维的全连接层,然后后边又全连接到一个7*7*30维的张量上。实际上这7*7就是划分的网格数,现在要在每个网格上预测目标两个可能的位置以及这个位置的目标置信度和类别,也就是每个网格预测两个目标,每个目标的信息有4维坐标信息(中心点坐标+长宽),1个是目标的置信度,还有类别数20(VOC上20个类别),总共就是(4+1)*2+20 = 30维的向量。这样可以利用前边4096维的全图特征直接在每个网格上回归出目标检测需要的信息(边框+类别信息)。
下面说一下loss函数:
YOLO使用均方误差(mean squared error,均方误差是各数据偏离真实值的距离平方和的平均数)作为loss函数来优化模型参数,即网络输出的S∗S∗(B∗5+C)维向量与真实图像的对应S∗S∗(B∗5+C)维向量的均方误差。
如下式所示。其中,coordError、iouError和classError分别代表预测数据与标定数据之间的坐标误差、IOU误差和分类误差。
YOLO对上式loss的计算进行了如下修正。
a) 位置相关误差(坐标、IOU)与分类误差对网络loss的贡献值是不同的,因此YOLO在计算loss时,使用λcoord=5修正coordError。
b) 在计算IOU误差时,包含物体的格子与不包含物体的格子,二者的IOU误差对网络loss的贡献值是不同的。若采用相同的权值,由于一幅图片中不包含物体的格子更多,自然他们对loss函数在计算网络参数梯度时的影响更大。为解决这个问题,YOLO 使用λnoobj=0.5修正iouError。(注此处的‘包含’是指存在一个物体,它的中心坐标落入到格子内)。
c) 对于相等的误差值,大物体误差对检测的影响应小于小物体误差对检测的影响。这是因为,相同的位置偏差占大物体的比例远小于同等偏差占小物体的比例。YOLO将物体大小的信息项(w和h)进行求平方根来改进这个问题。(注:这个方法并不能完全解决这个问题)。
综上,YOLO在训练过程中Loss计算如下式所示:
总结:YOLO简化了整个目标检测流程,速度的提升也很大,但是YOLO还是有不少可以改进的地方,比如S×S的网格就是一个比较启发式的策略,如果两个小目标同时落入一个格子中,模型也只能预测一个。另一个问题是YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题);因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性。并且,YOLO采用了多个下采样层,网络学到的物体特征并不精细,因此也会影响检测效果。
与faster rcnn相比,YOLO有更加明显的优势,首先faster rcnn需要一个rpn网络代替selective search来找出候选区域,而yolo则直接将7x7这49个区域作为候选区域。
SSD
SSD和YOLO的网络结构对比
对于SSD说两点:
a) 上面分析了YOLO存在的问题,使用整图特征在7*7的粗糙网格内回归对目标的定位并不是很精准。那是不是可以结合region proposal的思想实现精准一些的定位?YOLO预测某个位置使用的是全图的特征,SSD预测某个位置使用的是这个位置周围的特征(感觉更合理一些)。那么如何建立某个位置和其特征的对应关系呢?可能你已经想到了,使用Faster R-CNN的anchor机制。如SSD的框架图所示,假如某一层特征图(图b)大小是8*8,那么就使用3*3的滑窗提取每个位置的特征,然后这个特征回归得到目标的坐标信息和类别信息(图c)。
b) 不同于Faster R-CNN,这个anchor是在多个feature map上,这样可以利用多层的特征并且自然的达到多尺度(不同层的feature map 3*3滑窗感受野不同)。
具体还没有搞清楚,参考:
论文阅读:SSD: Single Shot MultiBox Detector
目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)
YOLO v2
精度的改进(Better)
a) Batch Normalization(批规范化)
使用Batch Normalization对网络进行优化,让网络提高了收敛性,同时还消除了对其他形式的正则化(regularization)的依赖。
b) High Resolution Classifier
在YOLOv2中,作者首先采用448×448分辨率的ImageNet数据finetune使网络适应高分辨率输入;然后将该网络用于目标检测任务finetune。
c) Convolutional With Anchor Boxes
之前的YOLO利用全连接层的数据完成边框的预测,导致丢失较多的空间信息,定位不准。作者在这一版本中借鉴了Faster R-CNN中的Anchor思想,回顾一下,anchor是RNP网络中的一个关键步骤。
d) Dimension Clusters(维度聚类)
之前Anchor Box的尺寸是手动选择的,所以尺寸还有优化的余地。 为了优化,在训练集(training set)Bounding Boxes上跑了一下k-means聚类,来找到一个比较好的值。
如果我们用标准的欧式距离的k-means,尺寸大的框比小框产生更多的错误。因为我们的目的是提高IOU分数,这依赖于Box的大小,所以距离度量的使用:
e) Direct location prediction
在YOLO模型上采用anchor boxes的第二个关键是模型不稳定性,特别是在前面几轮训练。大部分不稳定因素来源于预测boxes位置(x,y)。作者就没有采用预测直接的offset的方法,而使用了预测相对于grid cell的坐标位置的办法。
f) Fine-Grained Features(细粒度特征)
有别于faster rcnn和SSD采用多尺度的特征图进行预测,yolov2提出了一个全新的思路,作者引入了passthrough layer,这个层的作用就是将上一层特征图的相邻像素都切除一部分组成了另外一个通道。例如,将26*26*512的特征图变为13*13*2048的特征图(这里具体的实现过程需要看作者的源码,但是,为了解释这个变化过程,可以做这样的解释,就是将一个26*26的图的像素放到4个13*13的图中,水平每2个像素取1个,垂直也是每2个像素取一个,一共就可以得到2*2=4个,512*4=2048),使得特征图的数目提高了4倍,同时,相比于26*26的特征图,13*13的特征图更有利用小目标物的检测。
g) Multi-Scale Training
最初的YOLO输入尺寸为448×448,加入anchor boxes后,输入尺寸为416×416。模型只包含卷积层和pooling 层,因此可以随时改变输入尺寸。作者在训练时,每隔几轮便改变模型输入尺寸,以使模型对不同尺寸图像具有鲁棒性。
更加快速(faster)
a) Darknet-19
b) Training for classification
网络训练在 ImageNet 1000类分类数据集,训练了160epochs。
c) Training for detection
网络去掉了最后一个卷积层,而加上了三个3*3卷积层,每个卷积层有1024个Filters,每个卷积层紧接着一个1*1卷积层, with the number of outputs we need for detection。
多分类的改进(Stronger)
使用联合训练方法时,中间会出现一些问题:但是检测数据集只有粗粒度的标记信息,像“猫“、“ 狗”之类,而分类数据集的标签信息则更细粒度,更丰富。比如狗这一类就包括”哈士奇“”牛头梗“”金毛狗“等等。所以如果想同时在监测数据集与分类数据集上进行训练,那么就要用一种一致性的方法融合这些标签信息。
作者结合词向量树(wordtree)等方法,使YOLOv2的检测种类扩充到了上千种。
作者大概说的是,之前的技术改进对检测任务很有帮助,在未来的工作中,可能会涉足弱监督方法用于图像分割。监督学习对于标记数据的要求很高,未来要考虑弱标记的技术,这将会极大扩充数据集,提升训练量。
后一半写的凌乱了,有时间再整理一下。
参考资料:
每个方法的论文。
基于深度学习的目标检测研究进展
YOLO详解
R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
【Deep Learning回顾】之基于深度学习的目标检测
原始图片中的ROI如何映射到到feature map?
RCNN, Fast-RCNN, Faster-RCNN的一些事
目标检测——从RCNN到Faster RCNN 串烧
Object Detection
参考文献:
https://www.52ml.net/20287.html
https://blog.csdn.net/NNNNNNNNNNNNY/article/details/68483053
https://zhuanlan.zhihu.com/p/21412911?refer=dlclass
DL for objection detection的更多相关文章
- [YOLO]《You Only Look Once: Unified, Real-Time Object Detection》笔记
一.简单介绍 目标检测(Objection Detection)算是计算机视觉任务中比较常见的一个任务,该任务主要是对图像中特定的目标进行定位,通常是由一个矩形框来框出目标. 在深度学习CNN之前,传 ...
- YOLO (You Only Look Once)
YOLO (You Only Look Once) dl cnn object detection 一.YOLO YOLO是一个实时的目标检测系统.最新的V2版本在Titan X 上可以每秒处理 ...
- MLPerf Inference 0.7应用
MLPerf Inference 0.7应用 三个趋势继续推动着人工智能推理市场的训练和推理:不断增长的数据集,日益复杂和多样化的网络,以及实时人工智能服务. MLPerf 推断 0 . 7 是行业标 ...
- 使用Harr特征的级联分类器实现目标检测
前言 最近在学习人脸的目标检测任务时,用了Haar人脸检测算法,这个算法实现起来太简洁了,读入个.xml,调用函数就能用.但是深入了解我发现这个算法原理很复杂,也很优秀.究其根源,于是我找了好些篇相 ...
- [OpenCV] Face Detection
即将进入涉及大量数学知识的阶段,先读下“别人家”的博文放松一下. 读罢该文,基本能了解面部识别领域的整体状况. 后生可畏. 结尾的Google Facenet中的2亿数据集,仿佛隐约听到:“你们都玩儿 ...
- ### Paper about Event Detection
Paper about Event Detection. #@author: gr #@date: 2014-03-15 #@email: forgerui@gmail.com 看一些相关的论文. 1 ...
- object detection[content]
近些年,随着DL的不断兴起,计算机视觉中的对象检测领域也随着CNN的广泛使用而大放异彩,其中Girshick等人的<R-CNN>是第一篇基于CNN进行对象检测的文献.本文欲通过自己的理解来 ...
- face detection[Multi-view face detection&& MTCNN]
因为这两篇论文感觉内容较短,故而合并到一个博文中. Multi-view face detection 本文来自<Multi-view Face Detection Using Deep Con ...
- 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection
论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...
随机推荐
- vue render函数 函数组件化
之前创建的锚点标题组件是比较简单,没有管理或者监听任何传递给他的状态,也没有生命周期方法,它只是一个接受参数的函数 在这个例子中,我们标记组件为functional,这意味它是无状态(没有data), ...
- php的颜色定义表
http://outofmemory.cn/code-snippet/1960/php-color-define-table <? /////////////////////////////// ...
- C#调用C++dll文件 运行提示找不到函数的入口点
1.首先用DllAnalyzer查看dll的输出函数名,发现输出的函数名有所变化,多了@xxx和一些别的奇怪的字符,实际上是因为C++重载机制造成的,使用使用extern "C"关 ...
- Solr学习02:搭建Solr环境
一.安装虚拟机 Solr 必须运行在Java1.6 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可,但如果需要扩展功能或编译源码则需要下载JDK 来完成.可以通过下面的地 ...
- Oracle(2)数据库
1.使用"||"连接多个字段,合并成一列 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFudGluZ21laQ==/font/5a ...
- 小程序组件与api
通过组合基础组件进行快速开发. 组件是视图层的基本组成单元. 所有组件都有的属性: 属性名 描述 注解 id 组件的唯一标示 保持整个页面唯一 class 组件的样式类 在对应的 WXSS 中定义的样 ...
- 拉格朗日乘子法(Lagrange multiplier)和KKT条件
拉格朗日乘子法: KKT条件:
- Java并发框架——AQS之怎样使用AQS构建同步器
AQS的设计思想是通过继承的方式提供一个模板让大家能够非常easy依据不同场景实现一个富有个性化的同步器.同步器的核心是要管理一个共享状态,通过对状态的控制即能够实现不同的锁机制. AQS的设计必须考 ...
- Codeforces 448 C. Painting Fence
递归.分治. . . C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input ...
- iOS-.pch如何使用
今天我们要说的是.pch这个文件 我相信大家并不陌生,因为如果是新手开发工程师 总会被它搞得总报错误. 那么我们要知道.pch到底是干什么的,说白了就是一个预编译文件,在运行程序之前,要对头文件等一些 ...