
このコースの概要を簡単に説明していきます。
受講対象者について解説します。人工知能、機械学習に興味のあるほとんどの方が受講できます。
また、専門用語もでてきますので、ディープラーニングに関するコースや、GAN(敵対的生成ネットワーク)についての知識があれば、更に理解が深まることと思います。とりあえず、AI分野で何が起こっているのかしりたいという方にもおすすめです。
このコースを受講するにあたって必要なものについて解説していきます。インターネットにつながるパソコンであれば大丈夫です。
現在、Google Colabの仕様変更により、動画レクチャーのコードが使えなくなっております。代替コードとして、StyleGAN2を改良したStyleGAN2-ADA という nVidia社の公式コードを教材としてご用意させていただいておりましたが、現在学習プロセスを実行できなくなっております。たいへんご迷惑をおかけしておりますが、すでに学習済みのモデルを教材として用意させていただいておりますので、そちらをご利用ください。よろしくお願いいたします。
また、コーディングがレクチャー動画と異なりますので、不明な部分がございましたら、該当するレクチャーのQ&Aより質問をお願いいたします。
なお、nVidiaのGPUマシンをお持ちであれば、教材をPython形式に変換して動かすことも可能です。
教材の不具合や、ビデオ解説についてよくわからない所があれば、該当するレクチャーのQ&Aにて投稿してみてください。初歩的な質問でも大丈夫です。
nVidia社のライセンスの制限がありますので、StyleGANのアルゴリズムで生成した画像そのものを販売することはできませんが、肖像権がありませんので、教育目的や会社の広告、資料など2次的な利用ができると思います。
一時教材を用意しました。
このセクションの概要を解説します。
Google Colab のインストールについて解説します。すでにインストールされている方は次に進みましょう。
nVidia社から公開されているソースコードを Google Drive にダウンロードします。
教材を使いながら進めていきますので、特に難しいコマンドを打つ必要はありません。
画像を生成するためには大量の画像データと学習が必要です。ネットに公開されている事前学習モデルを利用することで、すぐにでも画像を生成することができます。
このセクションの概要について解説します。
事前学習モデルを利用できる状態なら、すぐにでも教材を使って画像を生成できます。案ずるよりも生むが易しということで、とりあえずプログラムを走らせて、自分の目で確かめてみましょう。
StyleGANにたどり着くまで、生成モデルには歴史的な変革がありました。その一つであるProgressive Growing GAN というものをを簡単に見ていきましょう。
StyleGANの特殊な構造の一つがMapping networkです。これによって生成モデルの本質的な部分が形作られます。
Progressive growing network を引きついだ Synthesis network について解説していきます。視覚的に分かりやすい構造ですので、まずはここから入っていくのもよいでしょう。
Mapping network と、Synthesis network の橋渡しをする部分の要となるのが、スタイル変換です。Adaptove Instance Normalization について解説します。
スタイル変換について、ニューラルネットワークでおなじみの計算グラフの視点からみていきましょう。この部分を知っているのと知らないのとでは、後の改造作業で大きな差が出ます。
このセクションの概要を解説します。
「習うより慣れろ」まずは、このセクションに関するコードを一気に走らせて、画像を生成してみましょう。
最初のものは無作為に生成される画像の一覧です。これだけでも目を見張るものがあります。
StyleGANは、ただ画像を生成するものではありません。画像同士を混ぜ合わせて別の画像を作り出すことができます。
教材のパラメータを変更して、いろいろ試してみましょう。StyleGANの醍醐味を味わえます。
高画質で生成した結果を動画に編集してみました。何度見ても不思議な動画です。
GANの卵ともいえるノイズについてStyleGANの観点から解説します。論文を基に、生成結果にどのような影響を及ぼしているのか確認していきます。
ノイズがあるのとないのとでは、何が違うのでしょうか?論文を基に、確認していきます。
学習用データにはいろいろなデータが含まれています。そのため、生成される画像にも平均的でないものが含まれますが、それらを確率密度との関係から調節することができます。数式と一緒に確認してみましょう。
コードを動かしてTruncation trick を行っていきます。パラメータを変更することで、いろいろな結果を確認できます。ぜひ試してみてください。
Truncation trick で生成した画像をQ&Aに張り付けて、提出してみましょう。
このセクションの概要を解説します。
StyleGANは素晴らしい技術ですが、いくつか欠点があります。改良版の論文を基に、それらがどのようなものなのか確認していきましょう。
オリジナルのStyleGANの欠点を克服したものがstyleGAN2です。どこがどのように改良されたのか、その構造を見ていきます。
改良された部分を解体新書さながら数式レベルで読み解いていきます。これを知っているのと知っていないのとでは、次のセクションでの作業の理解が異なってきます。
改良版のStyleGANにも大きな欠点があります。簡単なことですが大抵の方はここを乗り越えることはできません。
このセクションの概要を解説します。これまで学んできたことを基に、StyleGANで独自に証明写真を作ってみましょう。
Googleが頻繁に仕様変更を行っており、現在学習ができない状態となっております。申し訳ございません。
すでに学習済みモデル(network-snapshot-latest-256x256.pkl)を用意させていただいきましたので、そちらをご利用いただきますよう、よろしくお願いいたします。
GANに学習させるためには大量の画像データが必要です。手動で集めていくのは大変ですので、便利なツールを利用して画像を集めていきましょう。
集めた画像を機械学習に適した状態にトリミングします。ツールを利用して一気に変換していきます。
適切な画像かどうか、プログラムで判定できなかった画像を手作業で仕訳をしていきます。
StyleGAN2-ADAバージョンでのデータセットの作成方法を解説いたします。
TensorFlowフレームワークで学習できるようにデータセットを作ります。コマンド一つで完了します。
オリジナルのStyleGANと改良版のStyleGANを融合させて、新しいStyleGANを作っていきます。複雑なコードの組み合わせは、教材として用意していますので、その差分について概要を見ていきます。改造の際の参考にしてください。
改良版のStyleGANの構造を確認していきます。ここでも計算グラフを利用してすべて図解で解説していきます。
改造したStyleGANを実行のためのコードの差し替えなどの作業を行います。
複雑な部分は教材コードとして用意していますので、オリジナルコードをまるでブロックを差し替えるように改造していきます。
いざ実行してみます。config値をブラウザ上で設定しますので、何度でも簡単に実行のパラメータを変更できます。
生成過程をみてみます。
解像度と学習データの数について解説します。
良質な画像に厳選して、小さめの128x128サイズで生成してみた結果を動画に編集しました。これも不思議な動画となっています。ご覧下さい。
このレクチャーの概要を解説しています。
学習させた証明写真のネットワークモデルを読み込み画像を生成させてみましょう。以降、このモデルを使って潜在空間を操作していきます。
画面上のスラーダーを動かすことで、潜在空間を直接操作してみます。線形部分空間とよばれるベクトル空間内で、どのように画像が変化していくのか確認していきましょう。
各次元に絞って、変化をみていきます。
潜在空間を調節して年齢・性別を変化してみることにします。
線形部分空間について、潜在空間との関係をグラフでみてみます。定義よりも実際の動きをみた方が分かりやすいでしょう。
独自画像の潜在空間を移動させて、頭髪の増毛に挑戦します。
このセクションの概要を解説します。写真だけでなくアニメ画像も生成できます。事前学習モデルで試してみましょう。
こちらから事前学習モデルのダウンロードを行ってください。
ダウンロードした学習モデルを読み込む手順を解説します。これまでの手順を踏襲していますので、分かる方は自力で進めてみましょう。
これまで学んできたことのおさらいとして、Style mixing , Truncation trick を実行していきましょう。
最後に総集編として、アニメ画像を無限増殖させ見ましょう。
高解像度で生成した結果を動画にしました。ご覧下さい。
このセクションでは、より専門的にStyleGANの成り立ちを考察していきます。興味のある方はみてください。
従来の損失関数からの変更点をみていきます。
Wasserstein loss の1リプシッツ制約について解説します
Wasserstein distance の元となる手法について簡単に概要をみていきます
StyleGANでは、動画を生成した時に、髪の毛や服の模様などが固定されたように見えます。新しいバージョンのStyleGAN3では、この違和感を改善し、fine style がうまくモーフィングされるようになっています。
サンプルプログラムを用意いたしましたので、確認してみてください。
この講座では、敵対的生成ネットワークをベースとしたStyleGANという技術について学んでいきます。
・StyleGANとは何か?
・仕組みはどうなっているのか?
・どのようなことに応用できるのか?
ということについて、詳しく解説していきます。
パソコンで実際に生成してみたり、学習させてみたりして、人工知能の凄さを体験してみることにしましょう。
イラストと数学、データサイエンス、そしてPythonコードの教材を使って解説していきます。