GAN はたった 1 枚の画像でトレーニングできます。 Adobe が画像生成方法を改善 | オープンソース

GAN はたった 1 枚の画像でトレーニングできます。 Adobe が画像生成方法を改善 | オープンソース

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

データセットは GAN をトレーニングするには小さすぎますか? 1 つの画像から始めてみましょう。

昨年、Googleは、GANを使用して単一の自然画像から学習する初の無条件生成モデルであるSinGANを提案しました(ICCV 2019 Best Paper)。

最近、Adobe とハンブルク大学の研究者がこの手法を改良し、GAN が単一の画像でトレーニングと生成機能を改善できるようにするいくつかのメカニズムを調査しました。

研究者たちは改良されたモデルをConSinGANと名付けた。

それではまずConSinGANの効果を見てみましょう。

上図の左側はトレーニングに使用した単一の画像であり、右側は ConSinGAN でトレーニングした後に生成された複雑なグローバル構造です。

効果がかなりリアルであることがわかります。

もちろん、ConSinGAN は、画像の超解像、画像のアニメーション、画像のかすみ除去など、他の多くのタスクの処理にも使用できます。

次の 2 つの画像は、画像の調和と画像編集への効果を示しています。

ConSinGAN はどのようにそれを実現するのでしょうか?

トレーニングアーキテクチャの最適化: 並列 SinGAN

まず、SinGANのトレーニングプロセスを見てみましょう。

SinGAN は、画像に対して複数の個別の生成ネットワークをトレーニングします。下の図は最初のジェネレーターであり、ランダム ノイズから画像を生成する唯一の無条件ジェネレーターでもあります。

SinGANで訓練された最初のジェネレータ

ここでの識別器は画像全体を見ることはなく、このようにして「実際の」画像パッチがどのように見えるかを学習します。

このようにして、ジェネレーターは、全体的には異なるがパッチの点では類似している画像を生成することで、「不正行為」の目的を達成できます。

より高い解像度で動作するジェネレーターは、前のジェネレーターによって生成された画像を入力として受け取り、現在のものよりも高い解像度の画像を生成します。

すべてのジェネレーターは個別にトレーニングされます。つまり、現在のジェネレーターをトレーニングしている間、以前のすべてのジェネレーターの重みは一定に保たれます。

このプロセスを下の図に示します。

しかし、Adobe とハンブルク大学の研究者は、一度にトレーニングできるのは 1 つのジェネレーターのみであり、画像 (特徴マップではない) を 1 つのジェネレーターから次のジェネレーターに転送できるため、ジェネレーター間の相互作用が制限されることを発見しました。

そのため、彼らはジェネレーターをエンドツーエンドでトレーニングしました。つまり、複数のジェネレーターが同時にトレーニングされ、各ジェネレーターは前のジェネレーターによって生成された特徴(画像ではなく)を入力として受け取りました。

これが ConSinGAN という名前の由来です。並列 SinGAN です。プロセスは以下の図に示されています。

しかし、そのような対策を講じると、過剰適合という問題に直面することになります。つまり、最終モデルでは「新しい」画像は生成されず、トレーニング画像のみが生成されることになります。

これを防ぐために、研究者たちは2つの対策を講じました。

  • 一度にトレーニングされるのはジェネレーターのサブセットのみです。
  • ジェネレータごとに異なる学習率を使用します。

下の図は、これら 2 つの方法を使用して実装されたモデルを示しています。デフォルトでは、最大 3 つのジェネレーターが同時にトレーニングされ、下位のジェネレーターの学習率はそれぞれ 1/10 と 1/100 に調整されます。

このプロセスには興味深い現象があります。

低いジェネレーターに高い学習率を使用すると、生成される画像の品質は高くなりますが、鮮明さは低下します。

逆に、低いジェネレーターに小さい学習率を使用すると、生成される画像はより多様になります。下の図の通りです。

コードはオープンソースです

ConSinGAN のコードは GitHub でオープンソース化されています。

いつものように、まず実行に必要な環境を紹介します: Python 3.5、Pytorch 1.1.0。

インストールも非常に簡単です:

  1. pip インストール -r 要件.txt

論文のデフォルトパラメータを使用してモデルをトレーニングするには:

  1. python main_train.py --gpu 0 --train_mode generation --input_name 画像/Generation/angkorwat.jpg

Nvidia GeForce GTX 1080Ti では、モデルのトレーニングに約 20 ~ 25 分かかります。

学習率とトレーニング段階の数が異なると、実験の結果に影響します。研究者は、2 つのデフォルト値をそれぞれ 0.1 と 6 にすることを推奨しています。

もちろん、学習率を変更することもできます。

  1. python main_train.py --gpu 0 --train_mode generation --input_name Images/Generation/colusseum.jpg --lr_scale 0.5

トレーニングエポックの数を変更します。

  1. python main_train.py --gpu 0 --train_mode generation --input_name Images/Generation/colusseum.jpg --train_stages 7

もちろん、このモデルは「画像コーディネート」や「画像編集」といったタスクにも対応可能ですので、詳細はGitHubを参照してください。

ポータル

論文の宛先:
出典: http://arxiv.org/pdf/2003.11512.pdf

GitHub プロジェクト アドレス:
https://github.com/tohinz/ConSinGAN

<<:  中国の自動運転はアメリカの自動運転と比べてどう劣っているのか?

>>:  小中学生の安全を守るためにロボットは今や欠かせない存在です!

ブログ    
ブログ    
ブログ    

推薦する

AIも催眠術をかけられるのか?

いつか、おそらく数十年以内に、人工ニューラル ネットワークを使用して、人間の脳をリアルにシミュレート...

...

NLPとナレッジグラフの統合

この記事は、中国情報処理学会の事務局長である白碩博士が杭州金融ナレッジグラフフォーラムで行った講演を...

ByteDanceは、ロボットの成功率と操作効果を高めたVi-PRoMビジュアル事前トレーニングソリューションを提案した。

近年、大規模な実世界データを使用した視覚事前トレーニングは大きな進歩を遂げており、ピクセル観察に基づ...

Appleのアプリランキングアルゴリズム調整の裏側:ランキング管理企業が一夜にして沈黙

4月1日早朝のニュース:3月初旬から、AppleはAppランキングアルゴリズムを徐々に調整し、ランキ...

ディープラーニングとマシンビジョンの重要性を分析!ロボットを自由にさせる?

ディープラーニングは産業用ロボットの中核技術であり、ロボットが制約から解放され、環境の変化に応じて自...

LLMLingua: LlamaIndex を統合してプロンプトを圧縮し、大規模な言語モデルに効率的な推論を提供します。

大規模言語モデル (LLM) の出現により、複数の分野でイノベーションが促進されました。しかし、思考...

リカレントニューラルネットワークの父:未来のロボットはアリを見るように人間を見るだろう

4月19日、ガーディアン紙は、ロボットの将来について語ったインタビューで、再帰型ニューラルネットワー...

Java プログラミング スキル - データ構造とアルゴリズム「非再帰的バイナリ検索」

[[396063]]基本的な紹介1. バイナリ検索は、順序付けられたシリーズ(数字や文字など)の検...

機械学習と古典的なアルゴリズムの概念をわかりやすい言葉で説明しました。初心者必読

データ分野では、多くの人が機械学習について語っていますが、それが何であるかを明確に説明できる人はごく...

映画の好みを予測しますか?オートエンコーダを使用して協調フィルタリングを実装する方法

推奨システムは、協調フィルタリングを使用して、ユーザーの好み情報を収集し、特定のユーザーの興味を予測...

2020年にAIがビジネスにもたらす変化

導入産業革命は一度しか起こらないが、私たちは今、人工知能 (AI) 革命という大きな革命の過程にある...

限られたデータでモデルのパフォーマンスを最大化するにはどうすればよいですか? Baidu のエンジニアがデータ拡張サービスを構築

AI モデルの開発プロセスでは、トレーニング データが不十分なためにモデルのパフォーマンス向上が妨げ...

Java プログラミング スキル - データ構造とアルゴリズム「基数ソート」

[[394975]]基数ソート基数ソートは「分散ソート」に属し、「バケット ソート」または「ビン ...

JavaScript 面接でよくあるアルゴリズムの質問の詳細な説明

[[185725]] JavaScript での変数の昇格を説明するいわゆるプロモーションは、その名...