Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

coremltools 3.3の環境構築(2020年3月版)

More than 1 year has passed since last update.

Kerasでつくった自作モデルを環境構築したばかりのcoremltoolsで変換しようとするとエラーに次ぐエラーで前進しているのか後退しているのかさえわからない状態になったので、まずはcoremltoolsリポジトリにあるexamplesが実行できるよう環境構築をやり直したメモ。

https://github.com/apple/coremltools

ちなみに2020.3.1現在でcoremltoolsの最新リリースは3.3

https://github.com/apple/coremltools/releases

README通りに環境構築(結果的にはNG)

(2020年3月追記:以下は3.1の頃に書いた手順)

前提:仮想環境を利用。筆者はAnacondaを利用してPython 3.7の環境を用意した。

  • coremltoolsをインストール
$ pip install -U coremltools
  • KerasとTensorFlowをインストール
$ pip install keras tensorflow
  • 確認
$ pip freeze

...
coremltools==3.1
...
h5py==2.10.0
...
Keras==2.3.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
...
tensorboard==2.0.1
tensorflow==2.0.0
tensorflow-estimator==2.0.1
...

  • jupyterもインストール
$ conda install jupyter

公式exampleを試す

Jupyter Notebookを起動して、

https://github.com/apple/coremltools/blob/master/examples/updatable_models/updatable_mnist.ipynb

を順番に実行していく。

OperatorNotAllowedInGraphError: using a tf.Tensor as a Python bool is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.

というエラーで止まるのだが、気になったのが以下のwarning。

WARNING:root:TensorFlow version 2.0.0 detected. Last version known to be fully compatible is 1.14.0 .
WARNING:root:Keras version 2.3.1 detected. Last version known to be fully compatible of Keras is 2.2.4 .

coremltools 3.1のリリースノートではTF 2.xもサポートしてそうに読めたのだが素人なので素直にメッセージに従って環境構築しなおすことにする。

環境構築やり直し(成功)

(2020年3月追記:以下は3.3でも同様の手順で確認済み)

仮想環境のPythonバージョンは先程と同様に3.7coremltoolsのインストールも同じ。

$ pip install -U coremltools

KerasとTFは、先程のwarningに書いてあったcompatibleなバージョンを指定してインストール。

$ pip install keras==2.2.4 tensorflow==1.14.0

jupyterもインストール(この手順はスキップできるかも)

$ conda install jupyter

Jupyter Notebookを起動して、先ほどと同様にUpdatableなMNISTモデルを生成する公式exampleを実行していくと・・・(FutureWarningはたくさん出るものの)最後まで実行成功!🎉Updatableな手書き数字認識の.mlmodelが生成される。

Xcode 11で.mlmodelファイルをプレビューすると、「Update」の欄が追加されていることがわかる。

Screen Shot 2019-11-04 at 13.26.33.png

shu223
フリーランスiOSエンジニア 著書:『iOS×BLE Core Bluetooth プログラミング』『Metal入門』『実践ARKit』『Depth in Depth』『iOSアプリ開発 達人のレシピ100』他 GitHubの累計スター数24,000超
http://shu223.hatenablog.com/
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。
https://community.camp-fire.jp/projects/view/280040
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away