iOS×機械学習本の執筆ロードマップ

iOS×機械学習本を個人で書いて、2019年4月14日開催の技術書典6で出したい。細く長く売れるものにしたい。

コンセプト

仮題は「iOS×機械学習 実践入門」。機械学習とは?ディープラーニングとは?ニューラルネットワークとは?みたいな説明はしない。しないが、「使いどころ」は明確に提示する。Core ImageのCIDetectorで顔認識ができるようになったとき、果たしてどの程度の人がその中身のアルゴリズムを理解していただろうか?知っていた方がベターには違いないが、知らなくてもその技術を使ってより良いUXを実現できる可能性は大いにある。乱暴だが、これも個人出版だからこそ許されるコンセプトだろう。

どういう場面で使えるか、そういう「アプリケーションにおける使い所からの逆引き」で実装方法、ツールの使い方を解説していく。

あと、なるべくワクワクする使い方を提示する。もうMNISTは食傷気味。MNISTやるために・・・ではないことはわかっているが、入り口がMNISTなだけで、わざわざそこに入っていく(新しいことを学ぶ)気が萎える。

なんとなくの章立て

第1章 Appleの標準機能・モデルを使う

まず、標準のモデルについて紹介する。Appleが配布しているCore MLモデル、それとVisionの機能がある。

第2章 サードパーティ製のCore MLモデルを使う

画像分類だけじゃなく、画風変換や姿勢推定もある。Awesome-CoreML-modelsとかもあって紹介するものは無限にあるので、バリエーションを網羅する形で数を抑える

第2章 既存の学習済みモデルを使う

coremltoolsで変換する。カスタムレイヤーの話はかなり高度なのでここではまだしない。機械学習ツールの使い方まで説明しないといけないようなものはまだ扱わない。

第3章 モデルを自作する・・・Create ML

画像分類だけ。自然言語処理については別章で。転移学習、1つのクラスだけ認識したい場合は「それ以外」の画像も学習させることを書く

第4章 モデルを自作する・・・Turi Create

Create MLがカバーしないタイプのタスクについて。

第5章 TensorFlow

TensorFlowで作ったモデルが既にあるんですが・・・というケースは実案件でよくある。Core MLモデルに変換して使うパターン、ビルド済みtensorflowライブラリをアプリに組み込んでモデルの.pbファイルをそのままアプリで使うパターン、TF Liteで使うパターンが考えられる。(パラメータをMPSで使うパターンもあるが解説が煩雑すぎるのでカットする)

以下は要検討

・Keras
・自然言語処理
・テキスト分類
・アルゴリズムベースのモデル

要勉強

・Vision・・・まだ試したことがない機能がいろいろとある
・Turi Create・・・ひととおりのタスクを試す
・回帰やクラスタリングといったアルゴリズムベースのモデル・・・NNベース系との使いわけがまだイメージできてない
・Turi Createによるテキスト分類やNaturalLanguageフレームワークによる自然言語処理・・・別の書籍にしていい気がする
・TensorFlow Lite・・・iOSアプリで動かしてみるまでのチュートリアル的な何かを試してみる
・Keras・・・最近はよく使われてるっぽいのだが、上のメニューだけでもかなりモリモリだし、ここまでカバーしなくていいかも。(カバーしたところでフォーカスがぼやけるだけかも)

ロードマップ

1. Visionの機能を一通り試す。

2. Core MLのモデルを色々試す(まずは参考書のサンプル、そのあとOSSのYoloや姿勢推定)

3. Create MLやTuri Createのアルゴリズムベースのモデルの使い所について調べる(本に載せるのが必須かどうか判断する)

4. Turi Createの類似画像検索、物体検出、画風変換を試す(活動分類、テキスト分類、アルゴリズムベースは一旦割愛)

5. TF Liteへのモデル変換を試す(FrozenGraphDefについても理解する)

6. 一度ざっくり書いてみる(テキスト適当、サンプルコードを揃えつつ)

いったん画像処理を優先したロードマップを書いてみたが、現実的には4月までにはこれぐらいまでできたら上々、って感じがする。




最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/