Torchのリアルタイム画風変換を試す(iOS組込)

リアルタイム画風(スタイル)変換といわれる、ディープラーニングを使って画像の画風(雰囲気)を変換する技術を実際に試すまでの手順のメモ

前回の実行編でオリジナルのモデルを作ったので、今回はそれを実際にiOSに組み込むまでの手順

利用するアルゴリズムの元の論文はこちら
Github上での実装:fast-neural-style

変換ツールを用意する

iOSのCoreMLで機械学習を行うには、CoreML形式(.mlmodel)にしたモデルデータが必要

kerasなどはApple公式のcoremltoolsという変換ツールが公開されているが、今回はTorchで学習したモデルなので、torch2coremlという変換ツールを利用する

なお、この作業は前回までと違ってmac上で行なっている。 macには事前に

の環境があるものとする

  1. PyTorchをインストールする

    1. 公式Get Started.で環境を選択してインストール方法を確認する
      今回は「OSX」-「pip」-「2.7」-「none」と選択
    2. 表示されたコマンドを順に実行する

      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は環境によって変わる場合あり

  2. torch2coremlをインストールする

    pip install torch2coreml
    

モデルの変換

前回学習した時のモデルには、CoreMLでは対応していないレイヤーや処理が含まれているので、そのままではコンバータにかけても変換できない。参考リンクにある通り、事前にコンバータに対応したモデル形式に変換しておく必要がある

  1. リポジトリを取得
    適当な場所で以下のコマンドを実行する

    git clone https://github.com/prisma-ai/torch2coreml.git
    cd torch2coreml/example/fast-neural-style/
    
  2. モデルの事前変換処理

    th prepare_model.lua -input (トレーニング結果のモデルへのパス) -output (変換後モデルのパス)
    
    • input: 前回学習した結果のモデル(t7形式)へのパス
      何もしていなければcheckpoint.t7
    • output: 結果として出力するモデル名。拡張子はt7にしておく
  3. CoreMLモデルへ変換

    python convert-fast-neural-style.py -input (変換前のモデルへのパス) -output (変換後のモデルのパス)
    
    • input: 2でoutputに指定したモデル(t7形式)
    • output: 結果として出力するCoreMLモデル。拡張子はmlmodelにしておく

これで公式で作成したモデルと同じ形式のモデルが出力される。あとは、通常通りXcodeから組み込みをすればOK

参考リンク

関連記事一覧