zoukankan      html  css  js  c++  java
  • yolov2学习笔记

    Yolov2学习笔记

    yolov2在yolov1的基础上进行一系列改进:
    1.比如Batch Normalization,High Resolution Classifier,使用Anchor Boxes,使用聚类生成anchor,使用passthrough layer进行特征融合等
    2.改进yolov1中的Darknet-19
    3.使用词树,使他能够训练更多类别物体

    paper

    总览


    • Yolov2与其检测方法的对比
    • 最靠近虚线的蓝点为下图中544×544尺度的

    Better

    Batch Normalization

    • 在Yolov2作者在每个卷积层加上了BN层
    • 使用BN层好处:1.map提高2%,2.不用使用dropout
    • 可以单独对每个特征进行normalizaiton,每个特征都有均值为0,方差为1
    • BN使得网络中每层输入数据的分布相对稳定,加速模型学习速度
    • BN使得模型对网络中的参数不那么敏感,简化调参过程,使得网络学习更加稳定
    总的来说,BN通过将每一层网络的输入进行normalization,保证输入分
    布的均值与方差固定在一定范围内,减少了网络中的Internal 
    Covariate Shift问题,并在一定程度上缓解了梯度消失,加速了模型收
    敛;并且BN使得网络对参数、激活函数更加具有鲁棒性,降低了神经网络
    模型训练和调参的复杂度;最后BN训练过程中由于使用mini-batch的
    mean/variance作为总体样本统计量估计,引入了随机噪声,在一定程度
    上对模型起到了正则化的效果。
    

    High Resolution Classifier

    • 采用更高的分辨率能够提升4%的map
    • 同时每10个epochs调整一下分辨率,能够使网络有时间来调整filiters来适应高的resolution输入

    Convolutional with anchor boxes

    • 使用anchor,虽然map降低0.3但是他的recall提升7%,使得模型有较大的提升空间

    Dimension Clusters

    • 不同于faster-rcnn使用直接定义出anchor的大小和宽高比,这里使用k-means聚类生成anchor
    • 基于训练集中的所有边界框 YOLO2尝试统计出更符合样本中对象尺寸的先验框
    • yolov2不是使用传统k-means聚类的欧几里得距离,而是使用下图的方式,因为欧几里得对于小的boxe产生更大的误差,而下面的方式对于box的尺寸使独立的
    • 这里的聚类k=5,是在模型复杂性和高的recall的一个平衡
    • 后面作者也和传统的hand-picked进行对比说明这种方式更好

    Direct location prediction

    • 这里作者使用函数对tx,ty进行限制是想要对应的点落入对应的cell中

    Fine-Grained Features

    • 这里作者将高层信息和底层信息进行了一个融合(通过passthrough layer进行实现),这样操作一下map提高1%
    右边经过convolution 64 1×1【这里的实现细节与原论文有些差异】的降维处理(将深度从512压缩到64),
    经过右边的PassThrough后宽高变为一半chanel变成4倍
    最后将其与13×13×1024的进行深度上的拼接(将底层特征与高层特征进行融合)
    
    • 实现细节
    这里是一个4×4的特征矩阵。这里有4个小方格,
    对于每一个小方格,在相同的位置用相同的颜色进行标注,然后再将每一个小方格
    的数字进行分离,得到右边4个特征图。
    经过passThrough layer后width,height变为1半,chanel变成4倍
    

    Multi-Scale Training

    • 为了提高yolov2的鲁棒性,作者将图片缩放到不同尺度来训练模型
    • 每迭代10个batch将网络的输入尺寸进行随机的选择
      疑问??输入不同的尺寸后如何改变主干网络的step,padding等
      答:we change the network every few iterations
    由于缩放因子是32
    (如上图的网络架构最开始的416除以最后的13等于32)
    所以我们输入的尺度全部是32的整数倍。
    所以最小是320,最大是608
    

    Faster部分

    • 网络详细结构图
    • Darknet-19
    • 更改后的
    移除Darknet-19最后一层卷积层,用3个3×3的卷积层(1024个filters)替代
    每个后面接一个1×1的卷积层(为了将通道数改成我们需要的)
    
    • 这里size只标了大小默认步距等于1,padding等于1
      注意:这里右边的Convolutional不包含偏振项(bias),因为加入BN层后bias不起任何作用,最后的一个卷积没有BN也没有LeakyRelu
      上图左边125个卷积核的由来:5(anchor的个数)×(5[4个坐标+1个confidence]+20个类别的概率分数)

    Stronger部分


    1. 使用检测图片做检测部分事情(坐标和类别),使用分类图片做分类部分事情(类别)
    2. 混合检测和分类的图片,当看到检测的图片方向传播整个loss(分类和检测),当看到分类图片仅仅传播分类部分的loss
    3. 检测部分有通用标签(dog/boat),分类部分有更大更详细标签(类如dog有norfolk terrier,Yorkshire terrier),Figure6展示了将这些融合起来
    4. 同时树从顶部到底部可以计算可能性,Figure5的每个颜色的softmax可以对应到树上。
    训练过程中ground truth标签要顺着向根节点的路径传播
    例如:如果一张图片被标记为“Norfolk terrier”它也被标记为“dog”和“mammal”等。为了计算条件概率,模型预测了一个包含1369个元素的向量,并基于所有“同义词集”计算softmax,其中
    “同义词集”是同一概念的下位词
    
    对于检测损失,我们会正常地反向传播loss。
    对于分类损失,我们只在标签对应级别或以上反向传播损失。
    
  • 相关阅读:
    如何测量字符串的高度宽度 and 精确取得字符串的高度宽度
    ListBox删除多项选择项
    Configuring TCP/IP settings by WMI. 用WMI对象访问.设置IP配置
    .Net Jpeg编码器bug
    foreach与for的性能比较
    Linq 处理 List数据
    JS中的拖动之—— ondragstart,ondrag,ondragend , ondragenter , ondragover , ondragleave, ondrop 的区别
    url参数中有+、空格、=、%、&、#等特殊符号的问题解决
    判断一个字符串是否在另一个字符串中
    <span>居中
  • 原文地址:https://www.cnblogs.com/zranguai/p/14490019.html
Copyright © 2011-2022 走看看