zoukankan      html  css  js  c++  java
  • 卷积深层网络+图像定位

    卷积:

    前层先识别线条等低级单位, 后层从卷积核抽象出形状等高级单位, 前层每一块卷积, 映射后层一个特征点。

    input:   7*7*3        filter(kernel):  3*3*3    stride:  2         padding:  1

    输出为:    (7-3+2*1)  / 2   +  1  =   4*4 

    如果有3个kernel,   4*4*3

    minibatch思想:     

    每次批处理n个数据, [n,:,:,:], 将数据集全部数据total, 设置迭代次数epoch,  m = total / epoch, 遍历m,   每次在m个数据集上更新参数。 

    池化层:

    缩减模型规模, 提取最大特征值。

    定义与概念:

        定位问题与单纯的分类问题的区别,实际上是在softmax时多输出表示坐标的四个参数: (中心点bx by , 高和宽 bh bw )。

        ->比较早期的做法是使用滑动窗口, 先定义窗口尺寸, 依次识别窗口是否出现目标物体, 采用01分类。

        ->现在一般使用Bounding box + Anchor box,  以每个格子建立坐标系,左上角为0,0 取物体中心点 确定落在哪个格子。

            anchor box:  如果一个格子出现多种对象,首先根据这两个对象特征构建两个格子,每个格子还是8个特征, e.g. (Pc, bx, by, bw, bh, c1, c2, c3), 最终是3*3*2*8个特征值。 这样做的好处是,两个对象中点很难在一个格子里,而且更有针对性。

            e.g. 输入图片416*416, 经过23层卷积,最终映射到13*13 的特征图上,  同时定义Bounding box的大小为13*13,  那么图像就被分割为32*32个小grid, 在每个grid中进行预测, 找到目标物体的中心点坐标。 对于这种思想, 应在项目中详细理解, 等我完成重新源码后,会上传代码, 待完成....

         ->交并比iou:  边框交集面积/并集面积 阈值0.5, 主要用于非极大值抑制, 去掉同一分类中最大重复的边框。

         ->非极大值抑制: 求出预测参数(pc*c1*c2...)  去掉pc小于0.6以下的值, 如果找出最大值,则找出其他与最大值边框严重重合iou的边框,使这些其他边框变暗。

    目标检测算法的发展:

    YOLO1

    卷积层:  用来提取特征值, 全连接层:  用来预测。

    全连接输出: 7*7*30    7:  将输入图片拆分为7个网格,30:   2*5 +20   其中2个bounding box, 每个box5个坐标参数, confidence=pred*iou。

    iou: 总分数一共有 20*(7*7*2) 个:
    20个分类, 遍历每个分类,先将得分少于阈值的设置为0, 再用NMS去掉重复率最大的bounding box(针对每个类,先找出评分最高的,计算每个box与它的iou,如果交并比大于0.5,认为重复,过滤。)

    损失函数: 对分类与坐标采用不同权重, 增大分类结果的惩罚效果,  降低坐标预测结果的惩罚效力, 因为非目标点数目众多。

    grid cell 如何预测object: 找到object的中心点,看它落在哪个grid cell,就由那个grid cell预测。

    YOLO2

    1. 提升泛化能力: 在每次卷积后添加batch_normal, 使每批数据分布在激活之前相同。

    2. 在卷积时使用anchor boxes: yolo1在最后一层全连接1470*1后reshape为7*7*30使用bounding box预测, Bounding box 实际上只能画出两类边框 2*[pc,bx, by, bw, bh], 而采用Anchor box后, 将会对每类预测边框, 5*[pc, bx, by, bw, bh, c1, c2, ...c20] 。

    yolo2使用卷积降采样,等比例缩小32倍,在卷积中每个特征点 与原图中 每个cell一一对应,使用相对偏移,取代直接坐标。

    使用416奇数输入产生一个center cell。

    yolo1通过每个cell进行预测, 首先在每个cell 预测 2个bounding box坐标与置信度,再预测分类,7*7*(2*5+20)。

    yolo2将cell与bounding box解藕,直接在每个cell预测anchor box的坐标、置信度与分类,13*13*(2*(5+20))。

    3.细粒度特征
    将高低分辨率的特征图连接, 获得更高分辨率, 将26*26*512 reshape为 13*13*2048 连接到最后一层13*13

    4.多尺寸训练
    每经过10批训练,就会使用新的尺寸,降采样参数为32,最小320*320, 最大608*608,满足不同尺寸图片要求。

    5.将分类网络转为检测网络,去掉原网络最后一个卷积层增加三个3*3*1024卷积层,并在每一个卷积后跟一个1*1卷积。

    YOLO3

    1. 增加检测级数, 在yolo2细粒度的基础上, 使用两个上采样提取更细粒度的图像特征:

    在13*13的基础上,增加两个上采样26*26, 52*52, 从每个cell预测5个bounding box变为3个, 但是数目却增加很多 3*(13*13+26*26+52*52)。

    多级检测:
    当strides为32时,特征图为13,此时进行上采样,上采样因子为2,连接上一卷积层,依次...

    在每一种尺寸,每个cell预测3个bounding box 即anchor box, 对于每个尺寸,anchor box也不相同。

    2.使用logistic loss代替softmax, 每个bounding 与 ground trurh一一匹配。


    3.加深网络,使用残差网络,增加层数是为了上采样。

        

    技术激情,追求极致! 技术交流: rli07@foxmail.com
  • 相关阅读:
    Unknown custom element: <el-container1>
    jQuery手机对话框插件
    告别2013,迎接2014
    淘宝开放平台主动通知的实现
    搭建JavaWeb服务器
    深入理解JavaScript执行上下文和执行栈
    为什么要选择学习Java?适合零基础的初学者的文章
    成为一名优秀的Java程序员9+难以置信的公式
    深入理解JavaScript作用域和作用域链
    JavaScript数据类型转换
  • 原文地址:https://www.cnblogs.com/ruili07/p/9650249.html
Copyright © 2011-2022 走看看