README.md 2.3 KB
Newer Older
J
Jason 已提交
1
# X2Paddle
J
Jason 已提交
2
X2Paddle支持将其余深度学习框架训练得到的模型,转换至PaddlePaddle模型。  
J
Jason 已提交
3
X2Paddle is a toolkit for converting trained model to PaddlePaddle from other deep learning frameworks.
J
Jason 已提交
4

J
Jason 已提交
5 6
## Requirements

J
Jason 已提交
7 8 9
python >= 3.5  
paddlepaddle >= 1.5.0  
tensorflow == 1.x  
J
Jason 已提交
10

J
Jason 已提交
11 12 13 14 15 16 17 18 19
## Installation
```
pip install git+https://github.com/PaddlePaddle/X2Paddle.git@develop
```

## How To Use
```
x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
```
J
Jason 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32

## 转换tensorflow vgg_16模型

### 步骤一 下载模型参数文件
```
wget http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
```

### 步骤二 导出vgg_16的pb模型
使用如下python脚本转换
```
import tensorflow.contrib.slim as slim
from tensorflow.contrib.slim.nets import vgg
J
Jason 已提交
33 34
from tensorflow.python.framework import graph_util
import tensorflow as tf
J
Jason 已提交
35 36 37 38 39 40 41 42

def freeze_model(sess, output_tensor_names, freeze_model_path):
    out_graph = graph_util.convert_variables_to_constants(
        sess, sess.graph.as_graph_def(), output_tensor_names)
    with tf.gfile.GFile(freeze_model_path, 'wb') as f:
        f.write(out_graph.SerializeToString())

    print("freeze model saved in {}".format(freeze_model_path))
J
Jason 已提交
43

J
Jason 已提交
44 45 46 47 48 49 50 51
with tf.Session() as sess:
    inputs = tf.placeholder(dtype=tf.float32,
                            shape=[None, 224, 224, 3],
                            name="inputs")
    logits, endpoint = vgg.vgg_16(inputs, num_classes=1000, is_training=False)
    load_model = slim.assign_from_checkpoint_fn(
        "vgg_16.ckpt", slim.get_model_variables("vgg_16"))
    load_model(sess)
J
Jason 已提交
52 53

    freeze_model(sess, ["vgg_16/fc8/squeezed"], "vgg16.pb")
J
Jason 已提交
54 55 56 57 58
```

### 步骤三 模型转换

```
J
Jason 已提交
59 60 61
x2paddle --framework=tensorflow \
         --model=../vgg16.pb \
         --save_dir=paddle_model
J
Jason 已提交
62
```
S
SunAhong1993 已提交
63 64 65 66 67 68 69 70 71 72 73
## 转换caffe SqueezeNet模型

### 步骤一 下载模型参数文件和proto文件
```
wget https://github.com/DeepScale/SqueezeNet/blob/master/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel
wget https://github.com/DeepScale/SqueezeNet/blob/master/SqueezeNet_v1.1/deploy.prototxt
```

### 步骤二 模型转换

```
J
Jason 已提交
74 75 76 77
x2paddle --framework=caffe \
         --weight=../squeezenet_v1.1.caffemodel \
         --proto =../deploy.prototxt \
         --save_dir=paddle_model