EfficientNet

论文:EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Githubhttps://github.com/tensorflow/tpu/tree/master/models/official/efficientnet

 

论文基于深度(depth),宽度(width),输入图片分辨率(resolution)的共同调节,提出了EfficientNets。其中,EfficientNet-B7取得了Imagenet 84.4%top1准确性,97.1%top5准确性。并且比现有最好的方法GPipe小了8.4倍,快了6.1倍。

模型的尺度化方法:

 

(a)原始1.0版本的基础模型

(b)通道数扩大

(c)深度扩大

(d)输入图像分辨率扩大

(e)基于通道数,深度,输入图像的组合式扩大

 

卷积网络可以定义为N

H表示输入图像高度,

W表示输入图像宽度

C表示输入图像通道数

X表示输入的张量

FiLi表示第istage的第F层重复L

 

优化问题可以定义为

组合式尺度化方法(compound scaling method):

α; β; γ为常量。

Φ是用户指定的尺度化参数

将网络的深度加倍,将会使得计算量变为原来的2倍,将网络的通道宽度和分辨率加倍将会使得计算量变为原来的4倍。因此,设置α · β2 · γ2 2,最终的计算量FLOAPS数目为

 

EfficientNet-B0网络结构:

其中,MBConv为取反的bootlenet单元,即mobilev2的瓶颈单元。然后将shortcut部分改为se模块。

其中drop_connect个人理解类似于dropout

def drop_connect(inputs, is_training, drop_connect_rate):
  """Apply drop connect."""
  if not is_training:
    return inputs

  # Compute keep_prob
  # TODO(tanmingxing): add support for training progress.
  keep_prob = 1.0 - drop_connect_rate

  # Compute drop_connect tensor
  batch_size = tf.shape(inputs)[0]
  random_tensor = keep_prob
  random_tensor += tf.random_uniform([batch_size, 1, 1, 1], dtype=inputs.dtype)
  binary_tensor = tf.floor(random_tensor)
  output = tf.div(inputs, keep_prob) * binary_tensor
  return output

实验结果:

实验感受野:

本文的组合式尺度优化方法具体更好的感受野。

 

总结:

  1. EfficientNetB0B7系列,是一系列快速高精度的模型。
  2. 组合式的优化方法,可以应用于MobileNetsResnet系列网络。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值