【tfcoreml】tensorflow向CoreML模型的轉換工具封裝

安裝tf向apple coreml模型轉換包tfcoreml
基於蘋果本身的轉換工具coremltools進行封裝python

tfcoreml

爲了將訓練的模型轉換到apple中使用,須要將模型轉換爲ios支持的mlmodel形式。目前蘋果官方的推薦使用Core ML tools來進行轉換。
它支持ios

Scikit Learn
LIBSVM
Caffe
Keras
XGBoost.
Tensorflow
MXNet

等工具包的模型轉換。
但爲了更方便的使用tensorflow的模型,在github中找到了tfcoreml的封裝,直接對tensorflow的pb模型進行轉換。git

首選須要安裝tfcoreml的依賴:github

tensorflow >= 1.5.0
coremltools >= 0.8
numpy >= 1.6.2
protobuf >= 3.1.0
six >= 1.10.0

在安裝CoreMLtools時會遇到如下問題:web

  • 1.coremltools的pip 安裝只在python2.7下work,pip
  • 2.tensorflow的win版本只支持python3.x
    直接pip install coremltools會報錯:ERROR: Could not find a version that satisfies the requirement coremltools

爲了在這臺win上安裝coremltools,只能選擇從源碼編譯安裝了,在release中找到合適的版本
cd coremltools-2.1
這裏能夠看到setup.cfg:python3.x

[bdist_wheel]
plat-name=any
python-tag=2.7   #這裏將2.7改成目前平臺的python版本3.5

隨後運行wheel安裝:
python setup.py install
便可編譯安裝coremltools。

app

隨後便可pip安裝tfcoreml
pip install -U tfcoremlpython2.7

模型轉換demo

這一封裝選擇了pb(protobuf )模型,若是輸入輸出肯定的狀況下能夠直接轉換:svg

import tfcoreml as tf_converter
tf_converter.convert(tf_model_path = 'path/to/your_tf_model.pb',
                     mlmodel_path = 'path/to/your_apple_model.mlmodel',
                     output_feature_names = ['softmax:0'])

若是須要指定輸入大小的話,能夠利用input_name_shape_dict關鍵字:工具

import tfcoreml as tf_converter
tf_converter.convert(tf_model_path = 'path/to/your_tf_model.pb',
                     mlmodel_path = 'path/to/your_apple_model.mlmodel',
                     output_feature_names = ['softmax:0'],
                     input_name_shape_dict = {'your_input:0' : [1, 227, 227, 3]})

ref:
https://stackoverflow.com/questions/44510701/no-matching-distribution-found-for-coremltools
https://stackoverflow.com/questions/44612991/error-installing-coremltools
https://github.com/apple/coremltools/issues/228
ssd_demo:https://github.com/vonholst/SSDMobileNet_CoreML/tree/master/SSDMobileNet/SSDMobileNet
coreml:https://developer.apple.com/documentation/coreml
在這裏插入圖片描述

相關文章
相關標籤/搜索