R-CNN:

2014,cnn为Alexnet

训练流程:

1)在imagenet上对cnn模型pre-train

2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度

ground-truth:标记的真正的框~lou,阈值0.5~32个正样本,96个负样本

3)在2)的F7特征上训练线性svm分类器,正样本和负样本阈值分别为所有ground truth和lou小于0.3的ss区域

注意:输入的正样本U&负样本!所有自己得有定义

4)在2)的最后一个卷加层con5特征上训练bounding box回归模型

注意:每个类别训练一个回归模型,将ss提供的bounding box做重新映射即P->G

    两种输入:原本的P和goundtruthG,

      P对应中心位置(x,y)的px。。ph,G对应宽高尺寸(w,h)的Gx。。Gh,txty对应直角坐标系,twth对应极坐标系~所以有log(Gw/Gh)

  测试阶段:校正量d帮助参数还原时在两种坐标系下用法不一

测试阶段:

1)selective search提取~2000区域/图片

2)将所有区域膨胀缩放到227*227

3)使用finetune过的alxenet计算2套特征,f7~svm~类别分值

 --》非极大值抑制,lou》0.5,获取无冗余的区域子集~迭代~获得新候选区域

 --》对新候选区域的con5特征进行bounding box回归~bbox偏差

--》bbox偏差来修正区域子集

缺点:每张图片的~2000区域都会计算cnn特征

SPP-NET:

输入整图,所有区域共享卷积计算~在conv5层输出提取所有区域的特征

SPP空间金字塔池化:

  替换con5的pooling5;一个window(即ss得到的感兴趣区域)内3个level和21个bin~21段定长特征串接后得到增强特征;bin内使用max pooling;

  不同尺寸的区域(ss得到)在conv5输出上提取特征,通过SPP后,映射到尺寸固定的全连接层上(SPP获取定长的特征)~最后一个conv和全连接层之间是全卷积,全尺寸卷积核大小和最后一个全连接层一致

训练阶段:

1)在imagenet上对cnn模型pre-train

2)计算所有ss区域的spp特征 -没有参数训练

3)使用2)特征finetune心得f6~f8层

4)计算3)的f7特征

5)使用4)特征训练svm分类器

6)使用2)特征训练boundingbox回归~boundingbox回归对应的是SPP层不是和r-cnn一样是con5的pool5

缺点:

  仍有:特征存储太大;复杂的多阶段训练  训练时间~finetune+特征提取+svm/bbox

  新问题:只能finetue全连接层,共享的图片集运算不可

fast rcnn:

实现end-to-end端对端单阶段训练,所以不需要离线存储特征文件~多任务损失函数

所以层都可以finetune

spp-net上的新技术:

  1)ROI感兴趣区域池化层,即单一的spp金字塔池化~可以梯度回传~实现end2end

    ROI池化层取代alexnet的第五个pooling,输出的特征和sppnet类似,只是更短

    ROI梯度回传:非重叠部分类似maxpooling,重叠部分是多个重合区域的偏导之和

  2)所任务损失函数

    分类器loss:交叉熵+softmax~   -logpi  

    回归:偏差要做高斯归一化;物体类别时有回归loss,背景时无回归loss

训练:因为端对端,所以不需复杂的分阶段训练

  在pre-trained模型上做finetune,初始模型性能最好为vgg

  mini-batch sampling抽样:

    hierarchical sampling分级抽样:

      batch尺寸128(是每个batch中区域的数量不是图片的数量)=每个batch的图片数量2*每个图片的ROI数量64(ss算法得到)  ~为了充分利用卷积层的共享计算,每个图片可以同时共享

      ROI分类基于与goundtruth重叠:物体lou》0.5,背景lou在【0.1,0.5)

准确性:

  端对端训练finetune的层数,fc6《conv3《conv2,finetune层数越多性能提:升越明显

  训练时多阶段/多任务训练,和测试阶段bbox回归的不同组合使用mAP有差异  

缺点:ss还是独立的

Fater rcnn:

区域建议也应该有conv5决定,应集成~ RPN网络

faster rcnn=fast rcnn + rpn,取代离线的selective search模块

进一步共享卷积层计算~因为区域建议也是由最后卷积层得到

基于attention机制~引导fast r-cnn关注区域

region proposals量少~300质优高precision高recall

RPN:  

  一种全卷机网络:3*3,256-d卷积层+relu作为conv5下一次,输出的256维特征分别送入以下

          1*1,4k-d卷积层~输出k组proposal的offset(x,y,w,h)

          1*1,2k-d卷积层~输出k组是/否为物体object

          两者的输出共ROI池化层使用

  参考组anchor box,k=9种三种尺寸/比例;中心和卷积核中心一致(如3*3卷积核);anchor的数量w*h*k,每个像素上都有,所有w*h

  PRN需单独训练

loss:预测框、anchor框、ground truth框

  也有指示函数~背景设为0

  一个mini-batch只有一个图片,128正样本(与ground truth lou),128负样本

训练阶段:

  1)训练RPN,IMAGENET上pretrain模型参数-》卷积层初始化

  2)训练fast rcnn网络,IMAGENET上pretrain模型参数-》卷积层初始化,region proposal由1)的RPN生成

  3)调优RPN,fast rcnn的卷积层参数-》卷积层初始化,固定卷积层,finetune剩余层

  4)调优fast rcnn,固定卷积层,finetune剩余层,region proposal由3)得到

  1)2)无卷积层共享

基于旧形态的cnn结构:Alexnet、vgg
 特点L:全卷积子网络+全连接自网络,分别特征提取+特征分类
 缺点:例如ROI-wise子网络不含隐含层~检测性能和分类性能不一致~检测网络的变换敏感性和分类网络的变换不变性矛盾
       (卷积层越深,不变性越强,对变换越不敏感,因为后面的卷积层所带的位置信息越来越少)
 
R-FCN区域全卷机神经网络:
 cnn全卷机趋势:resnet、googlenet~只剩1个全连接层
resnet-101 -》 conv91+ROI池化+conv10 ,resnet-101之前三个全连接层相当于前两个是隐藏层,若完全提出全连接层,木有隐藏层~改进,将conv拆解,中间插入ROI、

rcnn在检测中出现不适应性 + 应用两难 
 --》R-FCN,适应全卷积化cnn的结构,提出全卷机化设计
 引入变换敏感性
 1)位置敏感分值图,grid位置信息+类别判别
 2)位置敏感池化,无训练参数 ~不需全连接层就可完成分类任务

实质:还是卷积层,只是通道信息发生了变化
 resnet-101卷积网,pre-trained模型(imagenet),1*1降维(2048-》1024)
 +RPN网~faster rcnn
 +position-sensitive卷积网,池化后投票

位置敏感卷积层:
 指,k平方(C+1)conv,~多个通道对位置、类别组合进行编码~不同的通道对应不同的网格位置和类别
 相对位置:k*k个Grid(k=3)~对应ROI-pooling是3*3网格
 位置敏感分值图:每个分类k*k个score map,score map=图片尺寸~score map是卷积的输出通道,3*3ROI池化指针对该通道,比如浅黄色~每一个颜色对应一个vote的一个bin,vote的通道数是C+1
   vote再做均值池化,得到1*1大小通道数为C+1的特征图 --》softmax得到概率值
 位置敏感ROI池化层:w*h的roi拆分从k*k个w/k*h/k的bin,不同颜色的bin对应不同颜色通道层(score map),bin内做均值池化-》输出k*k*(C+1)
loss:均值投票t:训练时用的anchor~xa和ground truth~x*,测试时用的anchor~xa和预测值x -》回归模型中t和t*即偏差要无限接近
      背景没有回归,标记0
      每个类别一个回归
训练:
      OHEM(online hard example mining):
 一个图片~1个batch~1个gpu ;一个图片~N个proposal~所有区域loss~loss排序~选前B个,包含正/负样本
       fater rcnn的4步训练法:rpn和r-fcn交替训练,r-fcn把fast rcnn升级了
性能:r-fcn中卷积核k*k,1*1《3*3《5*5,因为提取的位置信息越精确

人脸数据集:
 FDDB、IJB-A~指出难检测位置
行人检测数据集:Caltech

  

  

lesson5-图像检测-小象cv的更多相关文章

  1. OpenCV探索之路(二十五):制作简易的图像标注小工具

    搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...

  2. 『科学计算』图像检测微型demo

    这里是课上老师给出的一个示例程序,演示图像检测的过程,本来以为是传统的滑窗检测,但实际上引入了selectivesearch来选择候选窗,所以看思路应该是RCNN的范畴,蛮有意思的,由于老师的注释写的 ...

  3. 使用YOLOv2进行图像检测

    基本配置信息 tensorflow (1.4.0) tensorflow-tensorboard (0.4.0) Keras (2.1.5) Python (3.6.0) Anaconda 4.3.1 ...

  4. 第五讲_图像识别之图像检测Image Detection

    第五讲_图像识别之图像检测Image Detection 目录 物体检测 ILSVRC竞赛200类(每个图片多个标签):输出类别+Bounding Box(x,y,w,h) PASCAL VOC 20 ...

  5. 基于opencv和qt的人脸检测小系统

    摘要:利用opencv读取视频.图片并检测人脸,利用QT显示窗口,功能选择等 环境:Ubuntu18.04.OpenCV3.4.0.QT5.10.1 效果图: 代码如下(比较简单没什么注释): mai ...

  6. 发现PDF Transformer+转换的图像字体小了如何处理

    ABBYY PDF Transformer+转换的原始图像字体太小怎么办?为了获得最佳文本识别效果,请用较高的分辨率扫描用极小字体打印的文档,否则很容易在转换识别时出错.下面小编就给大家讲讲该怎么解决 ...

  7. C#图像检测开源项目

    AForge.NET AForge.NET is an open source C# framework designed for developers and researchers in the ...

  8. lesson4-图像分类-小象cv

    CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...

  9. 图像检测之sift and surf---sift中的DOG图 surf hessian

    http://www.cnblogs.com/tornadomeet/archive/2012/08/17/2644903.html http://www.cnblogs.com/slysky/arc ...

随机推荐

  1. Web应用的统一异常处理(二十四)

    我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...

  2. ie edge 自动给数字加下划线

    <meta name="format-detection" content="telephone=no,email=no,address=no">

  3. Linux 硬件信息命令

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数cat /proc/cpuinfo| g ...

  4. linux下如何添加一个用户并且让用户获得root权限 备用

    (2010-12-02 09:58:30) 转载▼ 标签: 帐号 权限 杂谈 分类: Linux 测试环境:CentOS 5.5 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: # ...

  5. linux用户管理 用户和用户组信息

    用户管理配置文件 用户信息文件  /etc/passwd 密码文件 /etc/shadow 用户配置文件 /etc/login.defs /etc/default/useradd 新用户信息文件 /e ...

  6. QuickStart系列:docker部署之MariaDB

    Centos7里面没有Mysql 取而代之的是MariaDB,MariaDB是完全开源的.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的 ...

  7. day06字典类型

    基本使用: 1.用途:用来存多个(不同种类的)值 2定义方式:在{}内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以key通 ...

  8. UVA 11990 `Dynamic'' Inversion CDQ分治, 归并排序, 树状数组, 尺取法, 三偏序统计 难度: 2

    题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...

  9. 设计一个高质量的API接口

    参考网址:http://url.cn/5UaTeyv 前言 在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则. ...

  10. 【转】caffe数据层及参数

    原文: 要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个层(layer)构成,每一层又由许多参数组成.所有的参数都定义在caffe.proto ...