搭积木般构建深度学习网络——Xception完整代码解析

在了解什么是Xception以前,我们首先要了解Inception。Inception结构,由Szegedy等在2014年引入,被称为GoogLeNet(Inception V1),之后被优化为Inception V2, Inception V3以及最新的Inception-ResNet。Inception自身受早期的网络-网络结构启发。自从首次推出,Inception无论是对于ImageNet的数据集,还是Google内部的数据集,特别是JFT,都是表现最好的模型之一。Inception风格模型最重要的内容是Inception模块,该模块有不同版本存在。

上图是Inception V3结构中传统Inception模块。一个Inception模型是该模块的堆叠。这与早期的VGG风格简单卷积层堆叠的网络不同。

而Xception是指卷积神经网络的特征图中的跨通道相关性和空间相关性的映射可以完全脱钩。由于这种假设是Inception结构中极端化的假设,我们将它称作Xception,意指极端Inception。

Xception在ImageNet上top-1的验证准确度达0.790,top-5的验证准确度达0.945。需要注意的是输入图片的模式不同于VGG16和ResNet的224×224,是299×299,并且输入预处理函数也有不同。另外需要指出的是目前该模型只支持TensorFlow作为后端。

详细介绍请见 深度可分卷积 点击打开链接

首先我们载入一些依赖库文件

from __future__ import print_function
from __future__ import absolute_import

import warnings
import numpy as np

from keras.preprocessing import image

from keras.models import Model
from keras import layers
from keras.layers import Dense
from keras.layers import Input
from keras.layers import BatchNormalization
from keras.layers import Activation
from keras.layers import Conv2D
from keras.layers import SeparableConv2D
from keras.layers import MaxPooling2D
from keras.layers import GlobalAveragePooling2D
from keras.layers import GlobalMaxPooling2D
from keras.engine.topology import get_source_inputs
from keras.utils.data_utils import get_file
from keras import backend as K
from keras.applications.imagenet_utils import decode_predictions
from keras.applications.imagenet_utils import _obtain_input_shape

然后我们指定预训练模型的权重路径。权重可以从网上下载也可以是你自己此前训练并保存的权重,如何保存训练好的模型和权重可以参阅keras常见问题汇总 点击打开链接

这里提供网上预训练的Xception参数下载。再次提醒模型目前只支持TensorFlow作为后端,因此仅提供TensorFlow的模型训练参数。

TF_WEIGHTS_PATH = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.4/xception_weights_tf_dim_ordering_tf_kernels.h5'
TF_WEIGHTS_PATH_NO_TOP = 'https://github.com/fchollet/deep-learning-models/releases/download/v0.4/xception_weights_tf_dim_ordering_tf_kernels_notop.h5'

如果你没有阅读本文此前关于深度可分卷积的链接文章,那么我们简单回顾一下它的模型结构

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值