goals: the task of object classification requires binary labels indication whether objects are present in an image.(对目标是否出如今图片给出判别,yes or no)python
goals:detecting an object entails both stating that an object belonging to a specified class is present, and localizing it in the image.The location of an object is typically represented by a bounding box.(对目标属于什么类别进行判断,进行目标的定位)算法
goals:the task of labeling semantic objects in a scene requires that each pixel of an image be labeled as belonging to a category, such as sky, chair, steet,etc. In contrast to the detection task, individual instances of objects do not need to be segmented.(要求对图片的像素进行分类,是属于天空、街道等等,须要进行目标检测任务,可是不须要进行分割任务)网络
实例分割是物体检测+语义分割的综合体。相对物体检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割能够标注出图上同一物体的不一样个体(羊1,羊2,羊3...)架构
R-CNN: Region Proposal + CNN + Category-specific Linears SVMsapp
RCNN算法分为4个步骤less
wraped region:包裹的区域dom
RCNN思想:输入一张图片。提取区域,建议大约2k个区域。而后依次将这些区域送入CNN,进行区域目标区域的分类,和区域框bbox的线性回归。bbox(就是每一个区域region矩形框的位置)ide
在当时,用 CNN 作 Object Detection 与 Single-label Image Classification 之间的 Gap,或者说这个问题 challenging 的地方一共有两处:性能
论文成果,在PASCAL VOC数据集上,mAP达到53.3%,相比VOC 2012的结果增长30%。主要有两个关键思想:一是能够将高性能的CNN网络应用于自底而上(从背景到前景)的region proposals,以便进行目标检测和定位;二是当有标签的数据不多时,用监督预训练(supervised pre—training)做为一个辅助任务,而后对特别区域进行微调,能够显著提升模型表现力。学习
bbox(bounding box)的定位location 是一个回归问题。
能够选择滑动窗口 to localizing objects within an image.为了保持图像高分辨率,CNN通常只有两层convolution and pooling layers. 在本文中,尝试使用sliding-window approach, 可是随着网络的加深,(5个convolution layers),会有很大的receptive fields(感觉野 195 * 195 pixels),strides(32 * 32) in the image。这使得滑动窗口的精肯定位变得很困难。
本文为了解决CNN网络的定位问题,采用了“recognition using regions”方法。we use a simple technique(affine image warping) to compute a fixed-size CNN input from each region proposal, regardless of the region's shape.
本文的第二个问题:有标签的数据不多,不足以支持CNN的训练。传统方法是使用无监督的预训练,而后接下来的使用无监督的微调(fine-tuning)。
本文的第二个贡献:在一个大的数据集上进行supervised pre-training, followed by domian special fine-tuning on a small dataset, is an effective paradigm(一个领域主流的理念、方法、行事套路) for learning high-capacity CNNs when data is scarce.
目标检测主要有三个模块组成。
第一个生成单一类的目标区域。第二是对于each region,CNN网络提取固定长度(fixed-length)特征向量.第三个是线性分类器SVM.
在测试图片上,提取大约2000 region proposals。wraps each proposal and forward propagate it through the CNN。对于每一类,咱们使用SVM进行训练,
all parameters are shared across all categories.在分类中,全部的CNN参数是共享的。也就是说分类任务使用的是同一个CNN网络。
R-CNN = Region Proposal + CNN + Category-specific Linear SVMs + Non-Maximum Suppression + Bounding Box Regression
Region Proposal 用 Selective Search 实现,选这个文章里到没有说是有什么优势采选 SS,而是为了跟其余已有的方法对比,他们用了 SS。因此彻底能够用其余 Region Proposal 方法,好比 BING 之类的。
目前我能理解的 detection 的思路其实就是 region classification,肯定了哪些 region 里面有什么类的 object 也就完成了 detection,至于怎么产生这些 region,能够用 sliding-window,也能够用 region proposal,其实我以为 sliding-window 就是一种特别简化的 region proposal 嘛。
CNN 就是用来抽取特征的,输出是 softmax,但这个只是在训练 CNN fine-tunning 的阶段用,最分类仍是用的 SVM.
CNN 对输入的要求是必须都是固定大小的,可是 Region Proposal method 产生的 region 每一个都各不相同,怎么把这不规则的 region 输入须要固定大小输入的 CNN,这是怎么解决的呢?Regardless of the size or aspect ratio of the candidate region, we warp all pixels in a tight bounding box around it to the required size.
SVM 用来分类。
Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.
去除重复的 Proposal,因此 R-CNN 这里是有大量的冗余计算的,先产生大量的 Proposal,而后最后再剔除掉绝大部分,若是一开始就能够产生少许高质量的 Proposal 就行了,这就是后面改进工做(Faster R-CNN)的 Motivation 了。
Inspired by the bounding box regression employed in DPM [15], we train a linear regression model to predict a new detection window given the pool 5 features for a selective search region proposal.
We achieved this performance through two insights. The first is to apply highh-capacity convolutional neural networks to bottom-up region proposals in order to localize and segment objects.The second is a paredigm for training large CNNs when labeled training data is scarce. We show that it is highly effective to pre-train the network with supervision——for a auxiliary task with abundant data(image classification) and then to fine-tune the network for the target task where data is scarce(detection).
使用了Selective Search1方法从一张图像生成约2000-3000个候选区域。Selective Search以下:
类似度的考虑能够结合多种策略
答:regardless of the size or aspect ratio of the candidate region, we warp(至关于python中的resize操做) all pixels in a tight bounding box around it to the required size.
答:对于 pre-training: discriminatively pre-trained the CNN on a large auxiliary dataset (ILSVRC 2012) with image-level annotations,就是 pretrained AlexNet。
构造 Batch 的时候,mini-batch size 是 128,32 个 positive window,从每类里面均匀分布随机采样;96 个 Background window。之因此背景样本比 Object 样本多不少,由于实际状况就是这样的。
对于 Classification: 对于每个 category,确定是要构建 positive 和 negative 两类啦
对于彻底是 背景 or 彻底含有目标的 Proposal,很容易判断是 positive or Negative
对于只包含部分的 Proposal,是算 IOU,阈值是 0.3,这是做者作了网格搜索验证后的结果,后面的研究彷佛也都沿用了 0.3 这个值。
答:无监督的预训练不能帮助咱们寻找到更好的初始化权重。
无监督的预训练并不能下降训练集的偏差,预先训练的模型比随机初始化的模型产生更低的测试成本。它的优势彷佛是更好的泛化,而不只仅是更好的优化过程。
无参数的预训练会带来相似于正则化的效用,是某种特殊的先验分布带来的正则化(此处甚是懵逼),这种效用会随着模型的复杂性的增大而增大。
suppliment里面提到,用softmax效果下降4个百分点。缘由有下:
目标检测中,NMS被用在后期的物体边界框去除。
NMS 对检测获得的所有boxes进行局部的最大搜索,以搜索某邻域范围内的最大值,从而滤出一部分 boxes,提高最终的检测精度。
简而言之,找出score比较region,其中须要考虑不一样region的一个重叠问题。
假设从一个图像中获得了2000 region proposals,经过在CNN以后咱们会获得2000×4096的一个特征矩阵,而后经过N的SVM来判断每个region属于N的类的scores。其中,SVM的权重矩阵大小为4096×N,最后获得2000*N的一个score矩阵(其中,N为类别的数量)。
Non-Maximum Suppression就是须要根据score矩阵和region的坐标信息,从中找到置信度比较高的bounding box。首先,NMS计算出每个bounding box的面积,而后根据score进行排序,把score最大的bounding box做为队列中。接下来,计算其他bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box。而后重复上面的过程,直至候选bounding box为空。最终,检测了bounding box的过程当中有两个阈值,一个就是IoU,另外一个是在过程以后,从候选的bounding box中剔除score小于阈值的bounding box。须要注意的是:Non-Maximum Suppression一次处理一个类别,若是有N个类别,Non-Maximum Suppression就须要执行N次。
例如:
假设某物体检测到 4 个 Boxes,每一个 Box 分别对应一个类别 Score,根据 Score 从小到大排列依次为,(B1, S1), (B2, S2), (B3, S3), (B4, S4). S4 > S3 > S2 > S1.
经过对imageNet上训练出来的模型(如CaffeNet、VGGNet、ResNet)进行微调,而后应用到咱们本身的数据集上。由于ImageNet数以百万计带标签的数据,使得VGGnet、ResNet等预训练模型具备具备很是强大的泛化能力。一般咱们只须要对预训练模型的后几层进行微调,而后应用到咱们的数据上,就能获得很好的结果。
简而言之,经过在预训练模型上进行Fine-tuning,可使得在目标任务达到很高的performance,并且使用相对少的数据量。
经验:在层数较深的状况下,因为deep learning自己的特性,在越高层造成的特征越抽象,而前面的卷积层则是颜色和边缘这些比较泛化的特征,因此在fine-tuning时,能够将前几层conv层的learning_rate设置为0,然后几层conv层不建议置为0,不然会对performance影响太大。
目前最强大的模型是ResNet,不少视觉任务经过fine-tuning ResNet能够获得很好的performance。
举个例子,假设今天老板给你一个新的数据集,让你作一下图片分类,这个数据集是关于Flowers的。问题是,数据集中flower的类别不多,数据集中的数据也很少,你发现从零训练开始训练CNN的效果不好,很容易过拟合。怎么办呢,因而你想到了使用Transfer Learning,用别人已经训练好的Imagenet的模型来作。
作的方法有不少:
综上,Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用以前获得的“知识”。这能够有不少方法和手段。而fine-tune只是其中的一种手段。
如何判断哪些region属于同一个物体?这个问题找不到一个统计的答案。
有些图片能够经过颜色来区分物体,而有些经过纹理区分,还有一些既不是颜色相近,也是不纹理类似。
因此须要结合多种策略,才有可能找打图片中的物体。
Multiscale
在上面两张图片, selective search 展现了不一样scale 的必要性。在左边的图片,咱们发现目标有不一样的scales。在右边的图片,咱们必须找到不一样的scale,由于女孩包含在tv中。
因为物体之间存在层级关系,因此Selective Search用到了Multiscale的思想。从上图看出,Select Search在不一样尺度下可以找到不一样的物体。
注意,这里说的不一样尺度,不是指经过对原图片进行缩放,或者改变窗口大小的意思,而是,经过分割的方法将图片分红不少个region,而且用合并(grouping)的方法将region聚合成大的region,重复该过程直到整张图片变成一个最大的region。这个过程就可以生成multiscale的region了,并且,也符合了上面“物体之间可能具备层级关系”的假设。
Selective Search方法简介
ps:(efficient GraphBased Image Segmentation)留着后面再看吧,须要补的知识有点多,丧脸!