Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Focal Frequency Loss for Generative Models #114

Open
Yagami360 opened this issue Dec 26, 2020 · 0 comments
Open

Focal Frequency Loss for Generative Models #114

Yagami360 opened this issue Dec 26, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

0. 論文情報・リンク

1. どんなもの?

  • ネットワークで欠落しやすい特定の画像周波数帯を補間するように作用する Focal Frequency Loss [FFL] を提案。
    Focal Frequency Loss により、生成モデルで発生しがちな生成画像における縞模様のアーティファクトやぼやけをを軽減させることを実現している

2. 先行研究と比べてどこがすごいの?

  • 生成モデル(noize-to-image や image-to-image など)においては、生成画像において縞模様のアーティファクトやぼやけが発生し、品質が劣化することが往々にして存在した。
    本手法では、この縞模様のアーティファクトがネットワーク内で特定の画像周波数帯が欠落すること、ぼやけが高周波層が欠落することで生じていることを示し、ネットワークで欠落しやすい特定の画像周波数帯を補間するように作用する Focal Frequency Loss を提案している。
    そして、この Focal Frequency Loss により VAE や GAN を活用した生成モデルにおいて、縞模様のアーティファクトやぼやけを軽減させることを実現している。

3. 技術や手法の"キモ"はどこにある?

  • Focal Frequency Loss
    結論としては Focal Frequency Loss [FFL] は、以下の式で定義される

    この Focal Frequency Loss により、特定の周波数帯が欠落することによって生じる生成画像における縞模様のアーティファクトや、高周波帯が失われることで生じる画像のぼやけを軽減する効果がある

以下、この FFL 導入の詳細を説明

  • 【前提知識】画像の周波数表現
    離散フーリエ変換(DFT)は、離散有限信号を複数の周波数信号の重ね合わせ表現に変換する手法であり、離散有限信号を画像にした場合は、以下の式のように定式化される。

    オイラ変換の式 より、上式は以下の式に変形出来る。

    この式より、画像は互いに直交する複数の sin 波と cos 波に分解され、空間周波数 u,v ? は sin 波成分となっていることがわかる。

    そして上図のように、スペクトル座標 u,v は特定の空間周波数の角度方向を表しており、これらの分離信号を複数個重ね合わせると元の画像全体になることがわかる。

    上図は、離散フーリエ変換で得られる画像中の特定の周波数を抑制した場合の画像の影響を示した図である。
    低周波のみ(low-pass)にした場合は、画像全体がぼやけた画像となる。
    高周波のみ(high-pass)にした場合は、画像のエッジのみの画像となる。
    特定の周波帯をカットした(band-stop)場合は、画像に縞模様のアーティファクトが生じている。

    重要な知見はこの縞模様のアーティファクトは、生成モデル(image-to-image や noize-to-image モデルなど)で度々発生している縞模様のアーティファクトとよく似たものであるということである。

  • Frequency Distance
    欠落した周波数を補間するような損失関数を定義するには、周波数領域における微分可能な距離指標が必要になる。
    まず離散フーリエ変換(DFT)の式を以下の式のように置き換える。

    振幅と位相は、上図のようにそれぞれスペクトル空間における色の強さと原点からの距離で視覚化されるが、定義すべき損失関数は、振幅と位相の両方を最小化するような損失関数である必要がある。

    これは上図のように、
    振幅のみ最小化する損失関数とした場合は、色が不規則な生成画像になってしまい、
    逆に位相のみ最小化損失関数とした場合は、ノイズのような生成画像になってしまうためである。

    本手法では振幅と位相の両方を考慮して距離指標として、以下の式で定義される距離指標を定義する。

    正解画像と偽物画像(=生成画像)間の距離指標の形にした場合は、以下のように定義される。

  • 周波数帯に応じた重み付けと Focal Frequency Loss
    (8) 式の距離指標を最小化するように損失関数を定義すると、各周波数の重みが同じであるために、特定の欠落した周波数を補間するような効果は得られない。

    本手法では、Focal Loss などにインスパイアされて、特定の欠落した周波数に大きな重みをおいてその他の周波数には小さな重みをおくようなスペクトルの重み行列 w を導入する。
    ※ Focal Loss : 論文「Focal Loss for Dense Object Detection」

    このスペクトルの重み行列 w は、学習中のネットワークにおける各周波数分布 の不均一状態に応じて動的に決定される重み行列であり、以下の式のように定式化される。

    最終的に Focal Frequency Loss [FFL] は、(8) 式と (9) 式を重み付き線形結合した以下の式で定義される。

    この Focal Frequency Loss により、
    ネットワークが苦手とする周波数帯(=欠落した周波数帯)を補間するようにネットワークに働きかけるので、
    特定の周波数帯が欠落することによって生じる生成画像における縞模様のアーティファクトや、高周波帯が失われることで生じる画像のぼやけを軽減する効果がある

    実際に生成モデルにおいて Focal Frequency Loss を計算する際には、以下のような手順を行う。
    ① 正解画像と生成画像それぞれに対して、2次元離散フーリエ変換で周波数表現に変換する
    ② 各周波数値 F(u,v) に対して正規化を行い、F(u,v) が微分可能な滑らかさな勾配を持つようにする
    ③ Focal Frequency Loss の式 (10) に従って、Focal Frequency Loss を計算する

4. どうやって有効だと検証した?

  • Focal Frequency Loss 有無での生成画像の定性検証

    VAE の生成器で画像生成において、Focal Frequency Loss 有りにすると画像のぼやけが軽減していることがわかる

    pix2pix の生成器においても、Focal Frequency Loss 有りにすると、画像のぼやけや不自然なアーティファクトが軽減していることがわかる。 SPADE の生成器においても、Focal Frequency Loss 有りにすると、画像のぼやけや不自然なアーティファクトが軽減していることがわかる。
  • Focal Frequency Loss 有無での生成画像の定量検証

    VAE の生成器で画像生成において、Focal Frequency Loss 有りにすると品質スコアが向上していることがわかる

    pix2pix の生成器においても、Focal Frequency Loss 有りにすると、品質スコアが向上していることがわかる SPADE の生成器においても、Focal Frequency Loss 有りにすると、品質スコアが向上していることがわかる

5. 議論はあるか?

  • VAE での生成モデルに比べて GAN での生成モデルにおいては Focal Frequency Loss による品質向上効果がそれほど大きくない印象だが、生成モデル全般に適用できる損失関数であるので、応用範囲の広さの面で有用そう。
  • 論文中には記載がないが、Focal Frequency Loss 計算による計算コストがどの程度になるのかが気になる

6. 次に読むべき論文はあるか?

  • xxx

7. 参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant