Adain : 画像のスタイルを変換する機械学習モデル
ailia SDKで使用できる機械学習モデルである「Adain」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
Adainの概要
Adainは画像のスタイルを変換する機械学習モデルです。
従来のStyle Transferではスタイル画像ごとに学習が必要でしたが、Adainを使用することで再学習不要で任意の画像のスタイル変換を行うことができます。
Adainはコンテンツ画像とスタイル画像を入力として、コンテンツ画像のスタイルを変換します。
Adainのアーキテクチャ
AdainはAdaptive Instance Normalizationの略です。Adainのアーキテクチャは下記のようになっています。
StyleTransferの研究において、VGGのFeatureMapの平均と分散を書き換えることで画像のスタイルを変換できることが知られています。
Adainでは、コンテンツ画像とスタイル画像に対してVGGを適用してFeatureMapを取得したあと、コンテンツ画像のRelu4までのFeatureMapの平均と分散を、スタイル画像の平均と分散で置き換えます。その後、デコーダに通すことで画像を生成します。
学習時のロスは、生成した画像をVGGでエンコードしてFeatureMapを比較することで画像の情報が欠落しないようにし、また、relu_1_1の平均と分散でロスを計算することでスタイルを一致させるようにします。
AdaptiveInstanceNormalizationはInstanceNormalizationの改良版であり、通常のInstanceNormalizationと同じ操作で平均と分散を計算した後、スタイルの平均と分散で置き換えます。
実際のネットワークの定義は下記のリポジトリを参照してください。
デコーダではReflectionPad2dが使用されており、出力されるONNXはやや複雑なものとなります。
学習にはMSCOCOとWikiartが使用されています。
ailia SDKでの利用
ailia SDKでは下記のサンプルで実行することができます。
#静止画に対してAdainを適用
python3 adain.py
#WEBカメラに対してAdainを適用
python3 adain.py -v 0
まとめ
Adainは高速かつ高精度にスタイル変換を行える手法であり、Style Transferの一つの完成形になっているものと考えられます。
GANへの応用
Image-to-Imageのドメイン変換において、MUNITからAdainが導入されており、CycleGANで使用されるCycle-Consistency-LossではないLossとしてStyle Lossが使用されています。こちらは、Council-GANの記事で紹介したいと思います。
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。