首页 > 其他分享 >混合深度卷积,更少参数下的轻量级网络

混合深度卷积,更少参数下的轻量级网络

时间:2022-10-06 11:09:41浏览次数:75  
标签:论文 卷积 MixConv 准确率 参数 MixNet ImageNet 轻量级


原文链接:https://arxiv.org/pdf/1907.09595.pdf

代码链接:

​https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet/mixnet​

 1、主要思想和创新点

Depthwise卷积在现代高效convnet中越来越流行,但它的核大小常常被忽略。本文系统地研究了不同核大小的影响,并观察到结合多核大小的优点可以获得更好的精度和效率。在此基础上,提出了一种新的混合深度卷积(MixConv),它在一个卷积中自然地混合了多个核大小。作为一个简单的卷积替代结构,论文中的MixConv提高了现有的移动图像对图像分类和COCO对象检测的准确性和效率。


为了证明MixConv的有效性,将其集成到AutoML搜索空间中,并开发了一个新的模型系列,称为MixNets,它优于以前的移动模型,包括MobileNetV2(ImageNet top-1 accurity+4.2%)、ShuffleNetV2(+3.5%)、MnasNet(+1.3%)、ProxylessNAS(+2.2%)和FBNet(+2.0%)。特别是, MixNet-L在典型的移动设置下(小于600万次浮点运算),达到了最新的78.9%的ImageNet top-1精度。


2、模型结构

前期的许多论文提到尺寸较大的卷积核会提高分类模型的准确率,本文通过验证得出,并非卷积核的尺寸越大越好。

混合深度卷积,更少参数下的轻量级网络_卷积核

论文研究表明了单核尺寸的局限性:既需要大核来捕获高分辨率模式,也需要小核来捕获低分辨率模式,以获得更好的模型精度和效率。基于这一观察,文章提出了一种混合深度卷积(MixConv),它在一个卷积运算中混合不同的核大小,这样它可以很容易地捕获不同分辨率的不同模式。下图显示了MixConv的结构,它将通道划分为多个组,并对每个通道组应用不同的内核大小。我们的MixConv是一个简单的普通卷积替换,但它可以显著提高MobileNets在ImageNet分类和COCO目标检测上的准确性和效率。

混合深度卷积,更少参数下的轻量级网络_3d_02

文中还给出了MixConv的代码实现:

混合深度卷积,更少参数下的轻量级网络_3d_03


卷积核的类别和数量

论文建议可以使用3x3,5x5,7x7,9x9四种卷积核来完成MixConv。信道划分主要有两种形式:第一种针对每类卷积核,都有相同的tensor;第二种针对不同卷积核对应的tensor呈指数级递减。


论文还给出了两类基于MixConv的MixNet结构:

混合深度卷积,更少参数下的轻量级网络_卷积_04

3、实验结果

文章以MobileNetv1和v2作为目标检测网络的基准,并对比了使用Mixconv前后,网络的参数数量和mAP的变化,可以看出,在降低参数的同时,准确率没有下降,甚至有所提升。

混合深度卷积,更少参数下的轻量级网络_3d_05

混合深度卷积,更少参数下的轻量级网络_3d_06

论文基于ImageNet数据集,对比了MixNet和各分类模型的参数和准确率:

混合深度卷积,更少参数下的轻量级网络_卷积核_07

可以发现,MixNet在减少参数的同时,可以有效提升准确率!


混合深度卷积,更少参数下的轻量级网络_卷积_08


标签:论文,卷积,MixConv,准确率,参数,MixNet,ImageNet,轻量级
From: https://blog.51cto.com/u_14439393/5733426

相关文章

  • redis.conf 文件参数说明
    #不区分大小写#unitsarecaseinsensitiveso1GB1Gb1gBareallthesame.#include组合多个配置问题#include/path/to/local.conf#include/path/to/other......
  • 错误: 操作符不存在: integer = character varying 建议:没有匹配指定名称和参数类型
    postgresql对变量类型比较敏感,对相应的变量进行类型转换之后就可以了修改前:<iftest="lx!=nullandlx.size>0">ANDt.lxin<foreachcollect......
  • Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
    持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第1天,点击查看活动详情作为Java开发者,你认为反射这个知识点重要程度,在你心里是什么样的呢?以前我也只觉......
  • 为什么卷积核的大小是奇数?
    原因:1.对于卷积运算是对感知野内的信息提取到一个锚点,当卷积核是奇数的时候这个锚点是非常容易得到的,但是卷积核是偶数的时候就不太容易找的到锚点。2.当我们要输入和......
  • Java方法(可变参数)
    Jdk1.5开始,Java支持传递同类型的可变参数给一个方法在方法声明中,在指定参数类型后加一个省略号(...)一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通......
  • 推荐一款工具,辅助估算线程池参数
    前言相信接触过并发系统的小伙伴们基本都使用过线程池,或多或少调整过对应的参数。以Java中的经典模型来说,能够配置核心线程数、最大线程数、队列容量等等参数。public......
  • CAD求曲线参数所在位置的一价导数,这就是切向方向(网页版)
    主要用到函数说明:IMxDrawCurve::GetFirstDeriv求曲线参数所在位置的一价导数,这就是切向方向,具体说明如下:参数说明[in]DOUBLEdParam曲线参数[out]IMxDrawVector3d**pFir......
  • jvm 调优常用参数
    -Xms50M  最小堆内存-Xmx50M  最大堆内存-XX:+UseG1GC使用G1垃圾收集器-XX:MaxGCPauseMillis=6最大停顿时间毫秒-XX:+PrintGCDetails 打印GC日志-XX:ConcGCThrea......
  • 【笨方法学python】ex13 - 参数、解包、变量
    代码如下:点击查看代码#-*-coding:utf-8--*-#参数、解包、变量fromsysimportargv#argv是所谓的“参数变量”,是一个非常标准的编程术语。#包含了你传递给......
  • AJAX传参数
    第一种:GET传递前台 ajax  GET传递:即在请求的地址后面加上参数,URL地址长度有显示,安全性低后台接收:Request.QueryString[“参数名字”]!例如:functionLoadBar(id){......