• 文章阅读:SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving


    SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving

    摘要

    自动驾驶仪中,为了保证安全,除了要求精度足够外,还需要实时的推理速度以保证车辆的控制时间。同时,需要晓得模型尺寸和高能效以保证嵌入式系统的开发。

    1.引入

    安全和稳定的自动驾驶系统依赖于对环境的精确感知。
    对于自动驾驶,对于图像目标检测有一些基础要求,包括:a)精度,b)速度,c)小的模型尺寸:小的模型尺寸带来的优势包括高效的分布式训练、通过无线传输给客户端少的交互量、低能量消耗和更灵活的嵌入式开发,d)高能效
    SqueezeDet的检测流程受启发于:首选,我们使用堆叠卷积滤波器以获取高维度、低分辨率的特征图;然后,使用ConvDet(一个卷积层)以特征图做输入来计算大量的目标bbox并预测类别;最后,对这些bbox做过滤以获得最终检测结果。
    SqueezeDet
    我们的主神经网络结构是SqueezeDet,它可以获得AlexNet级别的imageNet精度,但是模型尺寸小于5MB,推理速度可达到57.2FPS。

    2.相关工作

    2.1 CNN做目标检测

    几乎所有公开的排名最前的KITTI检测方法都基于Faster R-CNN。

    2.2 小CNN模型

    AlexNet模型包括240MB参数,获得了大概80%精度在ImageNet上。VGG-19模型包含575MB参数,获得87%精度。SqueezeDet模型只有4.8MB参数(比AlexNet小50倍),它的检测精度和AlexNet相当甚至超过。GoogLeNet-v1模型仅含53MB参数,检测精度与VGG-19相当。

    2.3 全卷积网络

    全卷积网络(FCN)定义了一大类CNNs,它的最终输出参数是一个网格grid而不是向量vector。
    通常,为了解决图像分类问题,需要使用一个或者多个全连接层,然后输出一个一维向量。一个新的方法是通过卷积层得到一个网格,然后通过平均池化降采样网格到一个描述类别概率的向量。

    3 方法描述

    3.1 检测流程

    3.2 ConvDet

    SqueezeDet检测流程受YOLO启发
    ConvDet本质上是一个输出bbox坐标和类别概率的卷积层,它以滑动窗的形式在特征图上工作。在每个位置,计算出K(4+1+c)个值。K是推理中预选择的bbox个数。
    ConvDet类似于Faster R-CNN中RPN的最后一层。主要的区别是,RPN相当于一个弱分类器只用来检测是否存在目标并产生目标提名,而分类通过全连接层完成(强分类器)。但是实际上,卷积层是足够强的,可以同时完成定位和目标分类。

    3.3 训练方法

    SqueezeDet检测网络可以进行端到端训练,类似于YOLO。
    为了训练ConvDet层学习到检测、定位和分类,我们定义了一个多任务损失函数:第一部分是bbox回归损失函数;第二部分是置信值回归损失函数;最后部分是分类交叉熵。函数中的超参数系数是通过经验进行选择的。

    3.4 神经网络设计

    ** 模型尺寸 ** SqueezeDet是通过Fire Module 构建的,包含压缩层(squeeze)做输入,两个并行扩展层做输出。压缩层和扩展层有效的在不损失太多精度的情况下减少了参数尺寸。
    高能效 能量消耗最大的是DRAM访问,它的消耗是SRAM访问和浮点操作的100倍以上。减少DRAM访问的最直接办法是减少参数的内存访问。减少参数尺寸的有效办法是尽可能使用卷积层而不是全连接层。卷积层的参数可以获取一次,然后再所有数据中重复使用。除了模型尺寸,另一个重要的方面是控制中间操作的尺寸。
    文中使用了两个版本的SqueezeNet结构:第一个是SqueezeNet v1.1模型,模型尺寸4.72MB,大雨80.3%的ImageNet检测精度;第二个是一个更强大的SqueezeNet变体,压缩率0.75,86%精度和19MB模型尺寸。我们使用ImageNet分类预训练这两个模型,然后增加两个随机初始化的fire modules到预训练后的模型顶端,然后连接到ConvDet层。
    SqueezeDet accuracy

    4 实验

    Recall 召回率是自动驾驶安全的很重要指标,所以我们分析了我们模型的召回率。我们只保留最高概率的64个预测bbox参与非极大值抑制。那么保留的bbox数量如何影响召回率?我们设计实验将bbox保留数量N(_box)从8到15048进行实验分析,发现保留前64个时,召回率已经高于80%了。如果使用所有的15048个bbox,本模型可以达到91%召回率。

    4.2 设计空间阐释

    该部分用来验证一个关键的超参数对检测精度的影响。
    图像分辨率 增加图像分辨率通常是提高检测精度的有效手段。但是大图像会导致大的中间操作和运算,长的运算时间。在实验中我们缩放图像到1.5x和0.75x。通过图表发现,方法图像实际造成检测精度下降了。(特列?)
    ** anchors数量** 图表显示,使用ConvDet模型时,增加anchors数量到16个时,只是增加了模型大小,运算和中间内存。
    SqueezeDet exploration

  • 相关阅读:
    maven项目添加Gson的依赖后无法启动,报错BeanCreationException:Error creating bean with name 'gsonBuilder'
    'bool' object is not callable
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence
    django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEWARE in order to use the admin application.
    ForeignKey(unique=True) is usually better served by a OneToOneField.
    NameError: name 'reload' is not defined
    No module named 'django.core.urlresolvers'
    No module named 'ckeditor'
    [Docker] Leverage a Docker Maven plugin
    [Docker] Separate application image from database migration
  • 原文地址:https://www.cnblogs.com/Osler/p/7746147.html
Copyright © 2020-2023  润新知