本書はCore ML Toolsの実践入門書です。
KerasやTensorFlowを用いて構築した機械学習/ディープラーニングのモデルをiOSで利用するために必要な変換ツールである「Core ML Tools」(Pythonパッケージ名としては`coremltools`)の利用方法を**さまざまなモデルをつくりながら**学んでいきます。
最初はわずか2行のコードで変換することからはじめてCore ML Toolsに入門しつつ、もっと高度な変換方法や、モデルのサイズを縮小する方法、パイプラインを構築する歩法、オンデバイスで学習できるようにする方法等も解説していきます。
また巻末には「逆引きリファレンス」も収録しています。開発の現場で「どう書くんだっけ?」となったときに大いに役立つことでしょう。
サンプルコードはGitHubよりダウンロード可能です。
目次プレビュー
- はじめに
- 第1章 準備
- 第2章 Core ML Toolsはじめの一歩
-
1.1 Core ML Toolsとは
-
Core ML Tools? coremltools?
-
1.2 Core ML Toolsの環境構築
-
1.2.1 Core ML Toolsのインストール
-
1.2.2 TensorFlowのインストール
-
1.2.3 Kerasのインストール
-
1.2.4 動作確認
-
KerasとCore ML Tools
-
3.1 HDF5ファイルを読み込む
-
3.2 Core MLモデルに変換する
-
3.2.1 .mlmodelファイルとして保存する
-
3.2.2 Core MLモデルの入力の型とVisionフレームワーク
-
3.3 Core MLモデルの入力の型を変更する
-
3.3.1 Core MLモデルの入力形式を確認する
-
3.3.2 入力の型をグレースケール画像に変更する
-
Core MLモデルから自動生成されるSwiftコード
-
3.4 iOSで推論を実行
-
3.4.1 作成したCore MLモデルをプロジェクトに追加する
-
3.4.2 VNCoreMLModelの初期化
-
3.4.3 VNCoreMLRequestの作成
-
3.4.4 VNImageRequestHandlerの作成/推論処理の開始
-
3.4.5 推論結果の処理
-
Visionはどのように画像分類モデルを判定するか?
-
4.1 モデルのパーソナライゼーション
-
4.2 ベースとなるモデルの作成
-
4.3 Updatableなモデルに変換する
-
4.4 損失関数をセットする
-
4.5 最適化アルゴリズムをセットする
-
4.6 エポック数をセットする
-
4.7 モデルを保存する
-
7.1 学習済みモデルからグラフ定義を読み込む
-
7.2 変換に必要なグラフの情報を取得する
-
7.2.1 入力テンソルの名前を取得する
-
7.2.2 出力テンソルの名前を取得する
-
7.3 tfcoremlを用いて変換する
-
7.4 Core MLモデルの出力の型を変更する
-
7.5 iOSで画風変換を実行
-
7.5.1 複数の入力を持つCore MLモデルをVisionで使う
-
7.5.2 出力画像を取得する
-
9.1 本章で利用する感情認識モデルについて
-
9.2 重みを16ビット化する
-
9.2.1 16ビット化が推論結果の精度に与える影響
-
9.2.2 Core MLモデルを16ビット化する手順
-
9.3 クォンタイズ
-
9.4 iOSでの推論結果の比較
-
9.5 さらなるモデルサイズ削減
-
9.5.1 ルックアップテーブルを利用した量子化
-
9.5.2 モデルの一部を共通化
-
A.1 MLModelオブジェクトを生成する
-
.mlmodelファイルから生成する
-
spec(Model_pb2.Model)から生成する
-
A.2 モデルのspec(Model_pb2.Model)を取得する
-
.mlmodelファイルから取得する
-
MLModelオブジェクトから取得する
-
A.3 .mlmodelファイルの保存・読み込み
-
.mlmodelファイルを読み込む
-
.mlmodelファイルとして保存する
-
A.4 NeuralNetworkBuilderを生成する
-
A.5 モデルの中身を調べる
-
モデルを可視化(ビジュアライズ)する
-
モデルのバージョン(Specification Version)を確認する
-
モデルのdescriptionをログに出力する
-
ネットワークの情報をログに出力する
-
NeuralNetworkBuilderでモデルの入力・出力形式を確認する
-
モデルのレイヤー一覧を出力する
-
モデルの中間層の入出力形式を調べる
-
A.6 Core MLモデルにクラスラベルを与える
-
ラベル文字列の配列を渡す
-
クラスラベルファイルのパスを渡す
-
A.7 モデルの入力・出力をカスタマイズする
-
入力・出力名を指定する
-
変換時に入力の型を画像型にする
-
変換済みモデルの入力・出力の型を画像型にする
-
入力テンソルのshapeを指定する
-
入力画像の前処理を指定する
-
A.8 モデルサイズを圧縮する
-
重みを16ビット(半精度)化する
-
重みをクォンタイズする
-
A.9 オンデバイス学習関連
-
モデルがUpdatableかどうかを調べる
-
Updatableなレイヤー一覧を出力
-
Updatableなモデルに変換する
-
学習で使用する損失関数をセットする
-
損失関数のサマリを確認する
-
学習で使用する最適化アルゴリズム(オプティマイザ)をセットする
-
最適化アルゴリズムを確認する
-
エポック数をセットする
-
A.10 Flexible Shape関連
-
Flexible Shapeの適用可否を確認する
-
入力・出力の画像サイズを範囲で指定する
-
入力・出力に複数の画像サイズを指定する
-
A.11 misc.
-
利用中のcoremltoolsのバージョンを確認する
-
B.1 Kerasとは
-
B.1.1 tf.kerasとスタンドアロン版Keras
-
B.2 Kerasでカスタムモデル作成
-
B.2.1 モデルのネットワークを定義する
-
B.2.2 モデルのコンパイル
-
B.2.3 モデルの学習
-
B.2.4 モデルの評価
-
B.2.5 モデルの保存
★★★★★
★★★★★
5.0
ひかぞぉ
2021年7月26日