恩蓝号

Efficientnet网络pytorch实现,Efficientnet

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

Github:https://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表示第i个stage的第F层重复L次

 

优化问题可以定义为

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

α; β; γ为常量。

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

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

 

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

实验结果:

实验感受野:

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

 

总结:

EfficientNet的B0到B7系列,是一系列快速高精度的模型。组合式的优化方法,可以应用于MobileNets和Resnet系列网络。

免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。

当前位置:首页 > 编程知识 » 2023-03-03 13:55:56

猜你喜欢


efficientnet像分类,efficientnet网络结构

作者对神经网路的扩展过程进行了研究与反思。特别的是,作者提出了一个思考:能否找到一个规范化的神经网络扩展方法可以同时提高网络的准确率和效率。...

手机改ip地址,手机网络改ip地址

换IP软件是经常使用的,手机换ip的软件有很多,当我们选择换ip软件的时候应该怎样选择。手机是我们日常生活中不可缺少的使用工具,他可以运用于...