Efficient_Net算法
论文原文 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
github 代码
pytorch 代码
CSDN 下载link
Efficient_Net是目前世界上最先进的神经网络算法之一,该算法具有复杂网络的量化调整能力,通过对网络深度(depth),宽度(width)和输入图片分辨率(resolution)的综合调整,获得对特定需求的最优网络参数,使网络同时具备了网络大小与识别准确率的双重优势。
Efficient Net工作流程
Efficient Net的工作流程如图所示。
- 将图片经过第一个Conv3x3层转化为MBConv模块需要的输入维度;
- 图片经过一系列的MBConv模块提取出特征图(feature map);各个MBConv模块的参数进行了精细化调整以适应当前使用环境;组合式的尺度优化方法可以使网络获得更好的感受野;
- 利用基于Fully-Convlutional-Neural-Network的特征图自适应连接方式。使用Conv1x1网络将能适应各种不同尺寸的特征图,并将其统一为我们需要的维度;
最后通过输出的特征图完成图片的分类识别检测。
Efficient Net的复杂网络量化调整
在Efficient Net中一个卷积网络层i可以定义为 Y i = F i ( X i ) Y_i=F_i (X_i) Yi=Fi(Xi) 其中 F F F是运算, Y Y Y是输出张量, X X X是输入张量,其维度为 < H i , W i , C i > <H_i,W_i,C_i> <Hi,Wi,Ci>,其中 H i H_i Hi和 W i W_i Wi是空间维度, C i C_i Ci是通道维度。
卷积神经网络可以定义网络中各个卷积计算的同或值为:
N
=
F
k
⊙
…
⊙
F
2
⊙
F
1
(
X
1
)
=
⊙
i
F
i
d
L
i
(
X
(
r
H
i
,
r
W
i
,
w
C
i
)
)
N=F_k⊙…⊙F_2⊙F_1 (X_1)=⊙_i F_i^ {dL_i } (X_{(rH_i,rW_i,wC_i)})
N=Fk⊙…⊙F2⊙F1(X1)=⊙iFidLi(X(rHi,rWi,wCi))
其中
F
i
L
i
F_i^{L_i }
FiLi表示在stage i中
F
i
F_i
Fi被重复
L
i
L_i
Li次,
<
H
i
,
W
i
,
C
i
>
<H_i,W_i,C_i>
<Hi,Wi,Ci>表示第i层输入tensor的类型,w、d、r是缩放网络宽度、深度和分辨率的系数,
F
i
F_i
Fi,
L
i
L_i
Li,
C
i
C_i
Ci,
H
i
H_i
Hi,
W
i
W_i
Wi是基线网络中预先确定的参数。该方法通过控制主要网络参数,只调整网络系数的方式,简化了网络的总体参数调整复杂度。