• このエントリーをはてなブックマークに追加

fast.ai cutting-edge-dl-for-coders-part2の Lesson9の課題で、Fast Style Transferを実装した。

スポンサードリンク

はじめに

前回の続きです。Lesson8ではStyle Transferを試した。

今回は、その続き。

Lesson9の課題は、Perceptual Losses for Real-Time Style Transferという論文を読んで理解し、Fast Style Transferを実装せよとのこと。

概要

前回のNeural Style Transferでは、学習に時間がかかることが問題だった。

この論文で書かれた手法をつかうと、学習したネットワークに画像を入力すると、順伝搬のみの計算でStyle Transferができる。GPUだと一瞬で(CPUだと一瞬じゃなかった)できる。なので、Real-Timeな画像処理=動画作成ができる。

これはすごい!

ネットワークの全体像は以下のような感じ。論文より引用。

Image Transform NetworkLoss Network の2つのネットワークを組み合わせる。

Image Transform Networkのアーキテクチャは、以下のサブドキュメントが詳しい。

Loss Networkは、VGG-16を用いる(全結合層をとったもの)。Content Loss と Style Lossを足しあわせ(これを Perceptual Lossと定義している)、損失関数とする。やっていることは、Lesson8のStyle Transferに似ている。

この損失関数を使って Image Transform Networkを 誤差逆伝播法で最適化する。Loss Networkは学習させない(公開済みの重みを使う)、Image Transform Networkのみ学習させる。

学習には、MS COCOという画像データを論文では利用していたが、Lesson9では、ImageNetからの抜粋画像(http://files.fast.ai/data/)を利用した。

ちょっと言葉足らずなので、詳しくは以下の記事を参考に。とても詳しく書いてあって参考になった。感謝。

結果

今回も、与えられたJupyter Notebookをコピペして作成。コードの意味が理解できていないという情けない状況。がんばろう

ノートPCの webcamから動画を取り込んで、fast style transfer で変換して、再度出力するということをやったが、ノートPCの非力なCPUでは、リアルタイムでは行かなかった。