Skip to content

Files

Latest commit

Apr 15, 2025
7c462f7 · Apr 15, 2025

History

History

xception

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Apr 15, 2025
Jan 17, 2024

README.md

Xception

Xception: Deep Learning with Depthwise Separable Convolutions

Introduction

Xception is another improved network of InceptionV3 in addition to inceptionV4, using a deep convolutional neural network architecture involving depthwise separable convolution, which was developed by Google researchers. Google interprets the Inception module in convolutional neural networks as an intermediate step between regular convolution and depthwise separable convolution operations. From this point of view, the depthwise separable convolution can be understood as having the largest number of Inception modules, that is, the extreme idea proposed in the paper, combined with the idea of residual network, Google proposed a new type of deep convolutional neural network inspired by Inception Network architecture where the Inception module has been replaced by a depthwise separable convolution module.[1]

Figure 1. Architecture of Xception [1]

Requirements

mindspore ascend driver firmware cann toolkit/kernel
2.5.0 24.1.0 7.5.0.3.220 8.0.0.beta1

Quick Start

Preparation

Installation

Please refer to the installation instruction in MindCV.

Dataset Preparation

Please download the ImageNet-1K dataset for model training and validation.

Training

  • Distributed Training

It is easy to reproduce the reported results with the pre-defined training recipe. For distributed training on multiple Ascend 910 devices, please run

# distributed training on multiple NPU devices
msrun --bind_core=True --worker_num 8 python train.py --config configs/xception/xception_ascend.yaml --data_dir /path/to/imagenet

For detailed illustration of all hyper-parameters, please refer to config.py.

Note: As the global batch size (batch_size x num_devices) is an important hyper-parameter, it is recommended to keep the global batch size unchanged for reproduction or adjust the learning rate linearly to a new global batch size.

  • Standalone Training

If you want to train or finetune the model on a smaller dataset without distributed training, please run:

# standalone training on single NPU device
python train.py --config configs/xception/xception_ascend.yaml --data_dir /path/to/dataset --distribute False

Validation

To validate the accuracy of the trained model, you can use validate.py and parse the checkpoint path with --ckpt_path.

python validate.py -c configs/xception/xception_ascend.yaml --data_dir /path/to/imagenet --ckpt_path /path/to/ckpt

Performance

Our reproduced model performance on ImageNet-1K is reported as follows.

Experiments are tested on Ascend Atlas 800T A2 machines with mindspore 2.5.0 graph mode.

model name params(M) cards batch size resolution jit level graph compile ms/step img/s acc@top1 acc@top5 recipe weight
xception 22.91 8 32 224x224 O2 186s 83.40 3069.54 76.31 92.80 yaml weights

Notes

  • top-1 and top-5: Accuracy reported on the validation set of ImageNet-1K.

References

[1] Chollet F. Xception: Deep learning with depthwise separable convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1251-1258.