README.md 2.4 KB
Newer Older
J
Jason 已提交
1 2
# X2Paddle
X2Paddle is a toolkit for converting trained model to PaddlePaddle from other deep learning frameworks. 支持主流深度学习框架模型转换至PaddlePaddle(飞桨)
J
Jason 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16


## 转换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 已提交
17 18
from tensorflow.python.framework import graph_util
import tensorflow as tf
J
Jason 已提交
19 20 21 22 23 24 25 26

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 已提交
27

J
Jason 已提交
28 29 30 31 32 33 34 35
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 已提交
36 37

    freeze_model(sess, ["vgg_16/fc8/squeezed"], "vgg16.pb")
J
Jason 已提交
38 39 40 41 42 43 44 45 46 47
```

### 步骤三 模型转换

```
git clone https://github.com/PaddlePaddle/X2Paddle.git
cd X2Paddle
git checkout develop
export PYTHONPATH=${PWD}
mkdir paddle_model
J
Jason 已提交
48
python x2paddle/convert.py --framework=tensorflow \
J
Jason 已提交
49
                           --model=../vgg16.pb \
J
Jason 已提交
50
                           --save_dir=paddle_model
J
Jason 已提交
51
```
S
SunAhong1993 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
## 转换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
```

### 步骤二 模型转换

```
git clone https://github.com/PaddlePaddle/X2Paddle.git
cd X2Paddle
git checkout develop
export PYTHONPATH=${PWD}:$PYTHONPATH
mkdir paddle_model
python x2paddle/convert.py --framework=caffe \
                           --weight=../squeezenet_v1.1.caffemodel \
                           --proto =../deploy.prototxt \
                           --save_dir=paddle_model