目标提取深度神经网络分析权衡 trade offs
- RCNN: 直接使用object proposal 方法得到image crops 送入神经网络中,但是crops 的大小不一样,因此使用 ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,这个ROI pooling 类似普通的pooling, 但是图像大小不固定。比如某个ROI区域坐标为 (x1,y1,x2,y2) ,那么输入size为 (y2−y1)∗(x2−x1) ,如果pooling的输出size为 pooled_height∗pooled_width ,那么每个网格的size为 (y2−y1)pooled_height∗(x2−x1)/pooled_width. 但是这些 crops 之间要重复计算特征。 (代码见roi_pooling_layer.cpp中的Forward_cpu,对于backward 见下图)
- Fast RCNN: 解决RCNN中重复计算的问题,将整幅图像(push the entire image once through a feature extractor) 送入一个特征提取器中,对object proposals 在得到的feature上进行crop。 因此share the feature extraction.
但是RCNN 和 Fast RCNN都依赖于 额外的object proposal 方法。接下来,就有各种大牛提出的使用神经网络进行object proposal 的方法,然后对这些proposals(论文中叫anchors)进行分类和回归shift to fit the GT(通常通过最小化分类和回归结合的损失函数),对于一个anchor a, 首先找最好匹配的ground truth box, 如果找到了,则为‘positive anchor’,我们赋予对应的class label, encode 这个box。如果没有找到匹配的,这个anchor的label set to 0.
if an anchor is encoding as , the loss of the anchor is:
第一部分loss 是 regression of localization 的 loss, 第二部分loss 是 classification 的loss。
通俗地讲,SSD,YOLO,Faster RCNN等都是在原图上预先画了很多个框框,然后判断这些框框是不是前景.这和传统的滑窗有点像,anchor代表了不同size和比例的滑窗.但feature map的感受野更大一点,特征提取的也更好.
- SSD:这个方法中使用了multibox 和 RPN(faster rcnn)进行 box proposal。faster R-CNN是通过改变Anchor的大小来实现scalable的,SSD是改变Feature map大小来实现的。 将输出一系列 或者 4×4 之后的一个个 格子;而 default box 就是每一个格子上,一系列固定大小的 box,即图中虚线所形成的一系列 boxes。产生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一个 box 中包含物体实例的可能性。
损失函数:这个与Faster R-CNN中的RPN是一样的,不过RPN是预测box里面有object或者没有,所以,没有分类,SSD直接用的softmax分类。location的损失,还是一样,都是用predict box和default box/Anchor的差 与 ground truth box和default box/Anchor的差 进行对比,求损失。
YOLO 和 SSD
- Faster RCNN: detection happens in two stages. the first one is region proposal network(RPN). the second stage, the box proposals are used to crop features from the conv5 to feed to the remainder nets(fc6 and fc7) in order to predict the class and box refinement. (each anchors obtained by RPN, would be duplicated computated. so the running time depends on the number of regions proposed by RPN).
RPN 详解:
论文中将 conv5 得到的feature map手动划分为n*n的矩形框(从SSD 学习得到)(论文中设为n=3,3虽然很小,但是在高层feature map的size也很小,因此矩形框可以感知很大范围)。 准备后续选取proposals,对每个矩形窗口的中心点当做一个基准点, 然后绕着这个基准点选取k(k=9)个不同scale , aspect ratio 的anchor(论文中3个scale,3个aspect ratio)对于每个anchor在后面使用softmax进行二分类, 有两个score输出用来表示是一个物体的概率和不是一个物体的概率, 然后再接上一个bounding box 的regressor。
但是RPN也有缺点,最大的问题就是对小物体检测效果很差,假设输入为512*512,经过网络后得到的feature map是32*32,那么feature map上的一个点就要负责周围至少是16*16的一个区域的特征表达,那对于在原图上很小的物体它的特征就难以得到充分的表示,因此检测效果比较差。但是 SSD相当好一些,因为它可以理解有multi-scale 的RPN。而最后一层的feature map往往都比较抽象,对于小物体不能很好地表达特征,而SSD允许从CNN各个level的feature map预测检测结果,这样就能很好地适应不同scale的物体,对于小物体可以由更底层的feature map做预测。这就是SSD和RPN最大的不同,其他地方几乎一样。
rpn二分类,是在conv4 这一层feature map上再进行1x1的卷积生成512-d或256-d的向量判断当前9个anchor是不是有Object.
SSD细分类,然后会在多层feature map上面预测,预测预先确定好了'anchor'是什么Object.弥补了yolo只在最后一层分成7x7的框,捡了许多漏检的.
RPN的loss函数可以表示为:
在训练时,要选择正负样本,不然负样本过多,对正样本的预测准确率很低。多任务训练,提出来不同的方法:
1)alternating training训练时,先独立训练RPN,然后用RPN的网络权重对Fast RCNN网络进行初始化,并用RPN输出的proposal作为Fast RCNN的输入,不断迭代这个过程。
2) approximate joint training: 将RPN与 Fast RCNN 融入一起训练。 ignore the derivative of the proposal boxes
3) Non- approximate training: 对立与上一种方法。不ignore。
- YOLO: Faster RCNN需要对anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。
YOLO(You Only Look Once)则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。 加快速度的YOLO带来了一定的局限性,由于出事图片需要被缩放到固定大小,可能对不同缩放比例的物体覆盖不全,每一个单元格只能用来选择一个物体框,并只预测一个类别,所以当多个物体中心落入一个单元格使,YOLO无法识别到小物体。 - 把缩放成统一大小的图片分割成S×S的单元格
- 每一个单元格负责输出B个矩形框,每一个框带四个位置信息(x, y, w, h),与一个该框是物体的概率,用Pr(Object)或者C(Confidence)表示
- 每一个单元格再负责输出C个类别的概率,用Pr(Class∣Object)表示
- 最终输出层应有S×S×(B∗5+C)个单元
- R-FCN
Faster RCNN 中最后fc6 和 fc7 的特征计算是重复计算,在R-FCN提出了一种提高的方法。将Crop放在网络的最后相当于网络中没有fully connect layer,所有都是用convolutional layer 实现。
目标提取深度神经网络分析权衡 trade offs的更多相关文章
- (转载)微软数据挖掘算法:Microsoft 神经网络分析算法(10)
前言 有段时间没有进行我们的微软数据挖掘算法系列了,最近手头有点忙,鉴于上一篇的神经网络分析算法原理篇后,本篇将是一个实操篇,当然前面我们总结了其它的微软一系列算法,为了方便大家阅读,我特地整理了一篇 ...
- (转载)微软数据挖掘算法:Microsoft 神经网络分析算法原理篇(9)
前言 本篇文章继续我们的微软挖掘系列算法总结,前几篇文章已经将相关的主要算法做了详细的介绍,我为了展示方便,特地的整理了一个目录提纲篇:大数据时代:深入浅出微软数据挖掘算法总结连载,有兴趣的童鞋可以点 ...
- 深度神经网络结构以及Pre-Training的理解
Logistic回归.传统多层神经网络 1.1 线性回归.线性神经网络.Logistic/Softmax回归 线性回归是用于数据拟合的常规手段,其任务是优化目标函数:$h(\theta )=\thet ...
- 目标检测——深度学习下的小目标检测(检测难的原因和Tricks)
小目标难检测原因 主要原因 (1)小目标在原图中尺寸比较小,通用目标检测模型中,一般的基础骨干神经网络(VGG系列和Resnet系列)都有几次下采样处理,导致小目标在特征图的尺寸基本上只有个位数的像素 ...
- 以resnet作为前置网络的ssd目标提取检测
http://blog.csdn.net/zhangjunbob/article/details/53119959
- 转pytorch中训练深度神经网络模型的关键知识点
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_42279044/articl ...
- Scriptable Render Pipeline
Scriptable Render Pipeline SRP的核心是一堆API集合,使得整个渲染过程及相关配置暴露给用户,使得用户可以精确地控制项目的渲染流程. SRP API为原有的Unity构件提 ...
- 深度学习 + OpenCV,Python实现实时视频目标检测
使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能. 在本文中我们将学习如何扩展原有的目标检测项 ...
- Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用
摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...
随机推荐
- gitbook 简单使用
gitbook 简单使用 之前由于公司培训过使用 gitbook,当时也没有进行安装使用.当时就感觉就是 markdown 语法,加上我本来就是使用 markdown 进行写博客之类.再加上这个东西本 ...
- 如何禁止复制电脑文件到U盘、禁止U盘拷贝文件
在公司局域网中,有时候我们处于保护电脑文件安全和商业机密的需要,会禁止局域网电脑使用U盘.禁用USB存储设备:或者禁止通过U盘复制电脑文件.禁止U盘拷贝公司电脑文件.那么,怎样实现呢?本文提供两种方法 ...
- maven依赖有一个步长原则 如果a 对 b和c都有依赖 如果b的步长近则使用b的
maven依赖有一个步长原则 如果a 对 b和c都有依赖 如果b的步长近则使用b的
- Ubuntu16.04 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 解决流程
mysql版本 5.7.22 安装完成后出现问题 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 可能是因为初始密码为空:按 ...
- ceph S3测试--cosbench
COSBench安装 Cosbench是Intel的开源云存储性能测试软件,COSBench目前已经广泛使用与云存储测试,并作为云存储的基准测试工具使用 1 环境 1.1 操作系统 COSBench可 ...
- BZOJ3160 万径人踪灭(FFT+manacher)
容易想到先统计回文串数量,这样就去掉了不连续的限制,变为统计回文序列数量. 显然以某个位置为对称轴的回文序列数量就是2其两边(包括自身)对称相等的位置数量-1.对称有啥性质?位置和相等.这不就是卷积嘛 ...
- 2017ACM/ICPC广西邀请赛-重现赛
HDU 6188 Duizi and Shunzi 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6188 思路: 签到题,以前写的. 实现代码: #inc ...
- 【BZOJ2228】[ZJOI2011]礼物(单调栈)
[BZOJ2228][ZJOI2011]礼物(单调栈) 题面 BZOJ 洛谷 题解 如果这个玩意不是一个三维立方体,而是一个二维的矩形,让你在里面找一个最大正方形,那么全世界都会做. 丢到三维上?似乎 ...
- get skill
Get Skill 2018-01-16 > 001 防止数组越界的一种方法 ]; array[n%] = value; > 002 超时机制 在等待某个事件或标志时,设定一定时限,时限到 ...
- csp20151203画图 解题报告和易错地方
Solution: dfs 对于dfs: //遇到map[u][v]==c,则不用再搜 //因为通过(u,v)到达的其它点(p,q), //之前从(u,v)开始肯定能到达(p,q),(p, ...