Torchのリアルタイム画風変換を試す(iOS組込)
Nov 13, 2017 · ios · othersMachineLearning
リアルタイム画風(スタイル)変換といわれる、ディープラーニングを使って画像の画風(雰囲気)を変換する技術を実際に試すまでの手順のメモ
前回の実行編でオリジナルのモデルを作ったので、今回はそれを実際にiOSに組み込むまでの手順
利用するアルゴリズムの元の論文はこちら
Github上での実装:fast-neural-style
変換ツールを用意する
iOSのCoreML
で機械学習を行うには、CoreML形式(.mlmodel
)にしたモデルデータが必要
keras
などはApple公式のcoremltoolsという変換ツールが公開されているが、今回はTorch
で学習したモデルなので、torch2coremlという変換ツールを利用する
なお、この作業は前回までと違ってmac上で行なっている。 macには事前に
- Python2.7
- pip
の環境があるものとする
PyTorch
をインストールする- 公式の
Get Started.
で環境を選択してインストール方法を確認する
今回は「OSX」-「pip」-「2.7」-「none」と選択 表示されたコマンドを順に実行する
pip install http://download.pytorch.org/whl/torch-0.2.0.post3-cp27-none-macosx_10_7_x86_64.whl pip install torchvision
1行目のURLは環境によって変わる場合あり
- 公式の
torch2coreml
をインストールするpip install torch2coreml
モデルの変換
前回学習した時のモデルには、CoreMLでは対応していないレイヤーや処理が含まれているので、そのままではコンバータにかけても変換できない。参考リンクにある通り、事前にコンバータに対応したモデル形式に変換しておく必要がある
リポジトリを取得
適当な場所で以下のコマンドを実行するgit clone https://github.com/prisma-ai/torch2coreml.git cd torch2coreml/example/fast-neural-style/
モデルの事前変換処理
th prepare_model.lua -input (トレーニング結果のモデルへのパス) -output (変換後モデルのパス)
input
: 前回学習した結果のモデル(t7
形式)へのパス
何もしていなければcheckpoint.t7
output
: 結果として出力するモデル名。拡張子はt7
にしておく
CoreMLモデルへ変換
python convert-fast-neural-style.py -input (変換前のモデルへのパス) -output (変換後のモデルのパス)
input
: 2でoutput
に指定したモデル(t7
形式)output
: 結果として出力するCoreMLモデル。拡張子はmlmodel
にしておく
これで公式で作成したモデルと同じ形式のモデルが出力される。あとは、通常通りXcodeから組み込みをすればOK