平成29度 卒業研究論文
画像内容を考慮した
質感表現に基づく画像変換
電気通信大学 情報理工学部
総合情報学科 メディア情報学コース
1410063 杉山 優
Date:
平成30年2月6日
Abstract:
近年、計算機の許容する計算量が増えDeep Learningによる画像の生成や変換が注目されている。中でも画像変換の技術として代表的なものにスタイル変換 [#!gatys!#]と呼ばれる技術がある。しかしこれはスタイル画像とコンテンツ画像を時間をかけて最適化しなければ変換が行えない。改良手法の高速スタイル変換 [#!johnson!#]では予め学習したスタイル画像が決まっていればどのような画像も似たような変換になってしまう。そこで、本研究では言葉による画像変換を実装すると同時に、コンテンツ画像の物体認識を行った。コンテンツがどういった画像かということに対して適切な変換を行うことによって、コンテンツ画像ごとに違った、適切な変換を言葉によって指定された方向性に画像変換することが可能となった。
Contents
1 はじめに
1 背景
近年、計算機の許容する計算量が増え Deep Learning による画像の生成や変換が注目されている。中でも画像変換の技術として代表的なものにスタイル変換 [#!gatys!#]と呼ばれる技術がある。しかしこれはスタイル画像とコンテンツ画像の二枚をネットワークに入力して時間をかけて最適化しなければ変換が行えず、手軽な手法ではない。またスタイル画像が決まって いればどのような画像も似たような変換になってしまうため、コンテンツ画像に似合わないスタイル変換を行ってしまうことも多い。
スタイル変換の改良手法は数多く存在していて、変換を高速化するもの [#!johnson!#]や、高精度に変換を行うもの [#!liao17!#]などが提案された。しかし、これらの多くは変換の前にスタイル画像単独での学習を必要とし、汎用的にスタイル画像を使用できない。そこでこの解決策として提案された手法に任意スタイル変換 [#!unseen!#]がある。この手法では事前にスタイルを学習して変換自体は高速に行う、という方針は変えずに、学習したスタイルをベクトル表記していくことによってあらゆる画像をスタイル画像のベクトルとして変換に使用することができるようになるというものである。
しかしスタイル画像が適切ではなかったときに、変換がうまく行かなくなってしまうという欠点を抱えている。そこで入力された画像によって変換を変化させ、画像に適切な画像変換を行うような手法が必要となる。
2 目的
本研究では既存のスタイル変換手法である任意スタイル変換 [#!unseen!#]を発展させ、言葉によるスタイル変換の実現と、その変換を妥当なものにするということを目的とする。
人間が画像をある方向に変換したいと思ったときには、どのように変換したいかと言うのはある程度想像ができていることが多い。例えば``犬''の画像を``ふわふわ''に変換したいと考えたときに想像するのは、犬の毛がふわふわすることを想像し、クリームが沢山の空気を含むようなふわふわを想像することは無い。湖を``きらきら''に変換したいときに期待するのは水面がきらきらしている様子であって、星がキラキラしていたり、金属光沢がキラキラしている様子ではない。
言葉による変換はWord2Vec [#!word2vec!#]によってベクトル化することで実現し、変換の妥当性は入力されたコンテンツを認識することによって変換を切り替えるようにネットワークを学習する。
Figure:
目標とするスタイル変換の様子
|
3 本論文の構成
本論文の構成は以下のようになっている。
1章 はじめに
この研究の背景、目的を記載する。
2章 関連研究
関連研究を紹介する。
3章 手法概要
この研究で使用する手法の概要について説明する。
4章 Style Selector Networkの構成
概要で説明した手法の詳細について説明する。
5章 画像変換
この研究で使用した変換手法について説明する。
6章 実験
この研究で行った実験について説明する。
7章 考察
この研究で行った実験についての考察を説明する。
8章 終わりに
この研究での結論を述べる。
2 関連研究
画像変換の手法にはいくつかあるが、その中でもコンテンツ画像に対してのスタイル変換を行っているものとして下の研究がある。
1 スタイル変換
スタイル変換の手法として代表的で最もプリミティブなものにGatysらのImagestyle transfer using convolutional neural networks [#!gatys!#]がある。この手法では、コンテンツ画像とスタイル画像の二種類を用意し、2つの画像どちらにも近づくような画像を作成するようにニューラルネットワークを学習させることで、コンテンツ画像に映っているものは維持しつつ、スタイル画像のような画像の風味に変換する。
変換の学習は、スタイル画像とコンテンツ画像それぞれのロス関数を足し合わせたものを全体のロスとして学習を行う。また、変換にはVGGネットワーク [#!sym15!#]を使用する。VGGのFC層を除いた部分のパラメータを使用する。画像識別ネットワークの深い層では画像の意味を持った部分だけが判別され、物体認識にはあまり影響しない模様等をスタイル画像に近づけることでスタイル変換を行うことができる。
コンテンツ画像のロス関数は下のようになっている。、はそれぞれオリジナルの入力されたコンテンツ画像と生成画像を、、はそれぞれの画像のレイヤにおける特徴ベクトルを示す。
|
(1) |
スタイル画像のロス関数は下のように計算する。まずはグラム行列、をスタイル画像と生成画像でそれぞれ計算し、スタイル画像のロスを計算する。ある層のみについて計算するのではなく、複数の層を加算して考える。
|
(2) |
|
(3) |
|
(4) |
これらを足し合わせ、学習で最適化していくロス関数は下のようになる。
|
(5) |
つまりスタイル画像とコンテンツ画像が互いに近づくように最適化していくため、画像の組が変わるたびに時間をかけて画像を最適化する必要がある。
これでは画像を入力するたびに長い時間をかけることになるために、変換画像を直ぐに用意したいといった要求に答えることができない。それに対応する研究に高速スタイル変換というジャンルがある。
2 高速スタイル変換
スタイル変換を高速化する手法として、Fast Neural Style Transfer [#!johnson!#]がある。事前にスタイルを学習しておくことで、新たなコンテンツ画像が入力された際に、学習済みのスタイルに変換するというネットワークを構築するものである。
学習には、スタイル変換用のNNであると、損失関数を計算するLoss Networkを使用する。
コンテンツ画像の特徴量からレイヤでのロス関数を各ロス関数のユークリッド距離の2乗から計算する。はコンテンツ画像を変換ネットワークに通したものであり、、、はそれぞれレイヤでのチャネル数、高さ、幅を示す。
|
(6) |
同様に、レイヤでのスタイル画像のロス関数は下のように計算する。入力画像からグラム行列を定義し、とスタイル画像によってロスを計算する。グラム行列はレイヤのチャネルを一列に並べたベクトルと別のチャネルの要素を並べたベクトルの内積から求める。
|
(7) |
ロス関数はグラム関数のフロベニウスノルムの2乗誤差で計算する。
|
(8) |
しかし、このジャンルの研究では事前に学習したスタイル画像しか変換に使用できず、新たなスタイルがほしいという要求にはその都度長い時間をかけてスタイル画像を学習しなければならない。
Figure:
高速スタイル変換のネットワーク図(Johnsonら [#!johnson!#]から引用)
|
3 任意スタイル変換
スタイル変換の改良手法が多く提案されている中、学習の汎用性を持たせる研究としてYanaiのUnseen Style Transfer [#!unseen!#]がある。従来のJonhsonらの高速スタイル変換[#!johnson!#]では、学習に用いた1種類のスタイル画像のみのスタイル変換しかできなかったが、この研究では、事前に学習に使っていないスタイルも含めて任意のスタイルの変換が可能となるネットワークを提案している。ネットワークは図のようになっている。
高速スタイル変換 [#!johnson!#]と同様に、変換を行う前にスタイルだけを学習しておき、実際にコンテンツ画像を入力して変換する際には高速に動作させることができる。さらに高速スタイル変換 [#!johnson!#]とは異なり、学習の際に複数画像を用いてスタイル画像からStyle Vectorを生成するStyle Condition Networkを学習することにより、任意のコンテンツ画像に対して変換を行うことができる。
事前に複数の画像に対してのスタイルを学習して、任意のスタイルに対応できるネットワークを作成しているために、変換の際にはスタイル画像とコンテンツ画像の両者はどんな画像でも対応でき、高速な変換が可能であることになる。
Figure:
任意スタイル変換のネットワーク図(Yanai [#!unseen!#]から引用)
|
3 手法概要
本研究では以下の手法で単語と画像特徴からStyle Vectorを生成するStyle Selector Network(図)を学習した。
- 適切なスタイル画像、形容詞を集めたデータセットを構築
- 各画像をVGGネットワークに通して、画像の特徴を示すベクトルを取得
- 取得したベクトルに主成分分析をかけて次元を圧縮
- 学習用の各ワードに対してword2vecをかけて特徴ベクトルを取得
- 画像特徴とワードベクトルを結合し、FC層NNに通す
- 出力されたベクトルと、unseen style transferの中間層であるStyle Condition Network(図)の出力が近づくように学習を作成したデータセットで繰り返す
学習されたモデルを使用して、以下の手法で実際のスタイル変換を行った。
- 入力された画像をVGGネットワークに通し、主成分分析してパラメータを取得
- 入力されたワードをword2vecに通してパラメータを取得
- 各パラメータを結合し、学習したFC層NNに通してstyleを表すベクトルを生成
- 生成されたベクトルをunseen style transferのstyleベクトルとして入力し、画像を生成する
Figure:
ネットワーク図
|
Figure:
学習の方法
|
4 Style Selector Networkの構成
1 Word2Vec
文字情報を変換のパラメータとして使用するためには、入力された文字列をベクトルで表現しなければならない。それを行うためにWord2Vec [#!word2vec!#]を使用する。図は``魚''という単語をベクトル表記にした動作の様子を示している。
1 MeCabによる形態素解析
Word2Vec [#!word2vec!#]で文字情報を学習するためには文書を品詞で区切った分かち書きと呼ばれる表記で表す必要がある。今回この作業を行う際には、MeCabを使用して日本語を形態素解析した。形態素解析の正確さによって学習されるWord2Vec [#!word2vec!#]の品質も変わるため、なるべく高精度に人間の感覚に近い品詞分解を行う必要がある。MeCabユーザー辞書は高精度に品詞分解を行うことができるため、今回これを使用した。
下に示す分かち書きの例は今回の実験に使用した学習用文字列の一部である。
2 Word2Vecの学習
日本語のWord2Vecモデルは公開されていないため,モデルを学習する必要がある.本研究では,容易に入手可能である日本語WikiPediaデータ(3.1GB)を利用して,日本語Word2Vecモデルの学習を行った。
学習の際、ただ品詞分解されたデータをそのまま学習してしまうと、``は''や``が''などの頻出する語句によって学習の品質が落ちてしまうことが知られている。これを防ぐために、今回使用したwikipediaデータセットの内1000回を超えて出現する単語に関しては出現数が1000回前後になるようにランダムに出現単語を削除し、他の単語との出現回数の整合性を取り、学習効率を向上させた。
また、出現回数が十分でない単語に関しても学習がうまくいかないことが知られている。これはWord2Vecの学習は各単語に関して周辺で出現する単語との共起回数によって行うために、出現回数が少ないときに学習がうまくできなくなってしまう。そこで今回収集したデータの内出現回数が5回に満たない単語に関しても学習の前準備として削除した。実際に使用した学習用データセットの一部を下に示す。
2 VGGによる画像認識
VGG16 [#!sym15!#]を使用して、画像特徴量を取得した。今回はこのネットワークのfc7層にある4096次元の全結合レイヤを使用した。この層はVGGの計算した画像の意味特徴のデータを1000次元の確率ベクトルに変換する直前のレイヤであり、簡潔に画像の特徴を示していることを期待し、本研究ではこの4096次元の全結合レイヤの中間信号を取り出して使用することにした。
取り出した中間層のベクトルはそのままでは4096次元のベクトルだが、これではWord2Vec [#!word2vec!#]の200次元というベクトルの次元数と釣り合いが取れず、実際に学習した際に画像特徴を重視しすぎてしまうという良くない傾向が出たために、VGGからのベクトルを次元圧縮した。次元圧縮にはPCAを使用し、250次元までベクトルの次元を削減した。
3 Unseen Style Transferの学習
今回行った画像変換では写真を用いた変換と、絵画スタイルを用いた変換をどちらも行ったために、Unseen Style Transfer [#!unseen!#]をコンテンツ画像データセットとしてMSCOCO(80000枚)、スタイル画像データセットとして、写真画像データセットのImageNet(50000枚)と絵画画像データセットのWikiArt(50000枚)の両者を使用して学習を行った。
4 画像変換ネットワーク
VGG画像認識によって得た画像からの中間信号と単語をWord2Vecに入力して得たワードパラメータを結合し450次元のベクトルに整形し、それを図に示すFC層が3層のStyle Selector Network(図)に通した出力がStyle Condition network(図)に近づくように収集した画像を用いて学習した。画像はワードでラベル付けしておき、学習する画像一つをワードと画像特徴から出力ベクトルを取得し、それに対応して同ワードの画像複数枚(本研究では50枚)を選出し、Unseen Style Transfer [#!unseen!#]のStyle Condition Network(図)の出力であるStyle Vectorを取得した。それぞれの出力のL2距離が小さくなるように学習を繰り返した。
学習のループではある画像に対して同カテゴリの残りの画像すべてがペアになるようにデータを整理し、すべてのペアに対して片方の画像をStyle Condition Network(図)に、もう片方の画像をStyle Selector Network(図)に入力し、その出力を比較して最適化する、という工程をすべての画像に対して完了することを1エポックとして、これを本研究では5エポック行った。
学習したモデルを使用して画像を変換する際には、Unseen Style Transfer [#!unseen!#]のStyle Condition Network(図)を通した後のネットワークを使用する。つまり、実際に画像を変換する際には、Unseen Style Transferのネットワークのうち、Style Condition Network部分をStyle Selector Network(図)に差し替えたネットワークを使用して、スタイル画像を入力する代わりに、変換したい言葉を入力することによって変換を行った。
入力された言葉とスタイル画像の画像特徴によってStyle Selector NetworkはStyle Condition Networkと同等の働きをするベクトルを生成する。これによって本手法ではUnseen Style Transfer [#!unseen!#]と同様のベクトル操作によって画像変換を行うことができる。
5 実験
1 データセット
まず画像の変換とネットワークの近似を行う元データのために、Unseen Style Transfer [#!unseen!#]の学習を行った。
このネットワークは学習にスタイルデータセットとコンテンツデータセットを必要とする。今回の実験では幅広い画像の変換に対応するために、コンテンツ画像データセットとしてMSCOCOの写真データセットを、スタイル画像データセットとしてImageNet写真データセット(50000枚)とWikiArt絵画画像データセット(50000枚)の二つを使用した。まず最初にWikiArtデータセットを使用したネットワークを学習し、その学習モデルを初期値としてImageNetを使用して学習を行った。ImageNetにある画像を全て使用して学習すると計算コストが掛かり過ぎるので、ImageNetの各カテゴリから全体の画像の合計数が50000枚になるように、先頭から画像を取り出して学習に使用した。
Style Select Network(図)にも学習データが必要で、これはUnseen Style Transfer [#!unseen!#]に使用した画像に合わせて、著名な作家の絵画データセットと、写真によるデータセットの二つを用意した。それぞれ、WikiArtとweb検索からデータセットを作成した。
まず画像をWikiArtおよびweb画像検索から各ラベルごとに500枚から1000枚程度の画像を収集し、そのうちからスタイル画像として適している、画像全体が一様なスタイルになっているような画像を選出した。画像を収集し、そのままを学習に使用したとしても、``つぶつぶ''という検索ワードから``つぶつぶみかん''を売りにしたジュースの画像が検索結果として上位に出ていたり等、質感を表さないような画像が多量に含まれているため、それらを排除する意味を込めてデータの選出を行う必要があった。収集した画像を確認し、手動でスタイル画像として適切であるものを選出し学習用データベースとしてまとめた。
この作業を完了し、最終的にデータセットは各ラベルに50枚程度の画像が含まれる状態となった。
WikiArtの画像のうち代表的で著名な作者の絵画を作者ごとに分類し、それぞれの絵画グループに適当な特徴を示す単語でラベル付けした。表に使用した画像ラベルを示す。ラベルを付ける際に画家の名前をそのままラベルにするのではなく、特徴を示す単語にするのはWord2Vecの特性上、画家の名前はどれも同じようなベクトルになってしまうために、単語のデータに幅が生まれずに学習がうまくいかないため。特徴を示すような単語に言い換えることによって単語ベクトルに幅が生まれて学習をうまく行うことができる。
質感画像のweb収集にはBing画像検索API1とYahoo画像検索2を使用した。Bing APIが有料化したために、Bing画像検索で集めた画像の補填としてYahoo画像検索を使用した。収集した際の検索ワードは表に示す。実験の際にはその単語をそのまま学習用のワードとして使用した。
Table:
データセットに使用した画像のラベル単語
写真データセット |
絵画データセット |
きらきら |
牧歌的 |
つぶつぶ |
筆 |
くしゃくしゃ |
スケッチ |
ざらざら |
奇抜 |
ふさふさ |
フラット |
ぶつぶつ |
サイケデリック |
ふわふわ |
明るい |
|
油絵 |
|
寂寥 |
データセットに使用した画像の例を図と図に示す。
Figure:
絵画画像データセットに使用した画像例
|
Figure:
質感画像データセットに使用した画像例
|
2 画像変換
実際に画像を学習したネットワークに通して変換を実験した。実験は下に示す2通り行った。各実験について、上手く変換できた例とできなかった例を示す。
- 単語を固定し画像だけを変化させた場合
- 画像を固定し単語だけを変化させた場合
1 単語を固定し画像だけを変化させた場合
まず、画像の変化によって変換が変化するかということを観察するための実験を行った。図は元画像に対して``油絵''という単語で、絵画スタイル変換を行った様子。図は元画像に対して``きらきら''という単語で質感スタイル変換を行った様子を示す。単純にスタイルが変換されているのではなく、コンテンツ画像によって異なる変換が行われたことが見て取れた。
Figure:
``油絵''で画像を変換した様子
|
Figure:
``きらきら''で画像を変換した様子
|
逆に、変換がうまくいかなかった例では、次のようなものがあった。変換がうまく学習できずに、出力画像が入力画像とほぼ変わらないという失敗であったり、出力画像が元画像の意味を保持できていないものがあった。
Figure:
``フラット''で画像を変換した様子
|
Figure:
``ぶつぶつ''で画像を変換した様子
|
2 画像を固定し単語だけを変化させた場合
次に、単語によって画像変換が変わるか、ということを観察するための実験を行った。図は絵画スタイルで学習した単語についての変換を、図は質感画像スタイルで学習した単語についての変換を行った様子を示す。入力単語を変えることで変換の方向性を制御することができたことがわかる。
Figure:
絵画スタイルで画像を変換した様子
|
Figure:
質感画像スタイルで画像を変換した様子
|
次に、上手く変換が行えなかった場合について示す。言葉毎の変換の違いがほぼ出ておらず、どの変換でも同じような画像が出力されていたり、スタイル変換を上手く学習できずにコンテンツ画像を崩壊させるような変換になってしまっている事がわかる。
Figure:
絵画スタイルでの画像変換の失敗例
|
Figure:
質感画像スタイルでの画像変換の失敗例
|
6 考察
実験の結果、入力する画像の内容によって変換の様子が変わるという目標について注目して図、図を見ると、変換の様子が画像ごとに異なることが見て取れる。しかし、図と図を見ると、建物の画像や海の画像の変換はうまく学習できていない。これはVGG画像認識によって画像の特徴を認識したからだと考える。VGG画像認識は画像に写っている物体についての認識をするものであり、風景などの``シーン''を判別することは難しい。これによって``猫''や``いちご''などの物体は認識できても``海原''や``ビル''などの背景になるような画像は認識できないという減少が起こる。これを解決するためにはVGG画像認識によって作成しているベクトルを、シーン認識のネットワークを使用して生成することによって解決することが出来ると考えられる。
入力画像によっての変換の差別化はコンテンツ画像を選ぶ必要があるが、一般的にVGG画像認識をすることが可能であるような画像に関してはコンテンツ画像の差によって画像変換の差別化を行えたといえる。コンテンツによって対応した画像変換を行うという目的も実装可能であるということが実験からわかった。
次に、単語の違いによっての変換の様子の変化に注目して図と図を見ると、``つぶつぶ''や``筆''、``明るい''などといった、見た目の特徴を示すような言葉を入力した時のほうが変換がうまく実行でき、逆に``ぶつぶつ''や``フラット''など、画像を見た後に抱く感想を示すような単語からではうまく変換ができないということが図と図の実験からわかった。また、学習画像を各カテゴリ50枚程度のデータセットと小規模なものを使用してスタイル変換を学習したために、対応できるスタイルに偏りが出てしまっているために、画像変換を行うと元画像の意味を完全に無視し、画像として成り立っていないような変換を行ってしまうことがあるということもわかった。これは更に大規模でノイズの少ないデータセットを用意することができれば解決することができると考えられる。
つまり、物体の特徴を示すような単語を入力することで画像を変換することは、条件が残るが達成できたということで、本研究の目的であった言葉とコンテンツ画像どちらも考慮した画像変換と言うものは実装可能であるということが実験からわかった。
本研究では、Unseen Style Transferを目標の学習モデルとして、入力は異なるが、出力は同等のものが得られるように学習を行ったために、本研究での画像変換の精度や解像度の限界はUnseen Style Transferの限界に基づくものになっている。Unseen Style Transferは任意スタイルを高速に変換するために、[#!liao17!#]のような他スタイル変換の高精度な手法と比較すると生成された画像は見劣りしてしまう。より良い画像を生成するためには、学習元となるモデルを改良するか、最初から言葉とコンテンツ画像によって画像を生成するネットワークとして学習するという方法を取らなければならないと考える。
7 終わりに
1 まとめ
言葉と入力画像の意味特徴からスタイル変換を行うことができた。変換された画像は言葉を変えても、入力画像を変えても変換の様子が変わっているため、目的である画像内容を考慮した、言葉による変換は達成できた。
しかし生成された画像のクオリティは最新の画像生成系研究と比較すると見劣りしてしまうものとなった。
2 今後の課題
近年画像生成系の技術的発達はめざましく、本研究と同様に言葉から画像を生成するタスクを行うとしても、より精度の高い学習を行うことが可能であると考える。有名な画像の生成手法としてはGoodfellowらのGenerative Adversarial Networks [#!goodfellow!#]がある。対立的に画像を学習し、本物の写真と見まごうような画像を生成できる手法であり、今後の研究で取り入れていきたいと考えている。
No References!
Footnotes
- ...質感画像のweb収集にはBing画像検索API1
- https://azure.microsoft.com/ja-jp/services/cognitive-services/bing-image-search-api/
- ...とYahoo画像検索2
- https://search.yahoo.co.jp/image
|