ABEJA Tech Blog

中の人の興味のある情報を発信していきます

Googleの画像品質評価MUSIQの話

こんにちは。株式会社ABEJAでデータサイエンティストをしている大谷です。本記事はABEJAアドベントカレンダー2022の21日目の記事です。

去年はNormalizing Flowと呼ばれるマイナー(?)技術とそれを使ったSRFlowという超解像技術の紹介をしました。 qiita.com

今年も綺麗な画像とは何かという、画像品質に関する少しマニアックな記事を書こうと思います。具体的にはGoogleが2022年10月に出したブログのMUSIQと呼ばれる技術を紹介します。*1

ai.googleblog.com

目次

画像品質の概要

そもそも画質ってなに?

なんとなく画質の良し悪しというのは定性的にわかる方が多いと思います。普段目で見えている景色がノイズのない綺麗な状態であるのに対し、画像はデータ化する過程で画像加工の過程で様々なノイズが発生します。この現実とデータの差分を画質の良し悪しの判断材料にしているため、多くの方は画質の良し悪しをなんとなく判断できるのだと思います。人間が意識することなく身につけている素晴らしい能力の一つです。ここで一つ疑問が生まれます。プロのカメラマンが撮った背景をぼけているポートレート写真は現実の見え方と違うので品質が悪いのでしょうか?シャッター速度を落として撮った星の流れが分かるような写真は画質が悪いのでしょうか?多くの人は現実の見え方とは違うけど綺麗な画像と判断すると思います。これはあくまで一例ですが、画質と一言に言っても多くの判断基準があり、非常に奥が深い世界です。ゆえに人の知覚に沿った画質定量化の研究が行われており、本記事で紹介するMUSIQもその画質評価の手法の一つになります。

代定量的手法の種類

定量評価には、主観評価と客観評価の2種類があります。主観評価は画像を見た人が自分の感性で綺麗さを決める手法で、客観評価は画像のノイズを正解画像との比較から評価する手法です。本記事のMUSIQは主観評価手法になります。後者の客観評価で代表的なものはPSNRやSSIMがあります。わかりやすい記事が出ているの以下をご参照ください。

qiita.com

紹介した記事にもあるように、PSNRやSSIMは人の知覚と一致しないパターンが多々発生します。また、実際のビジネス現場で正解となる綺麗な画像を準備できるパターンというのは限られてくるので、やはり画像一枚から人の知覚に沿った画質の良し悪しを判断したくなります。

主観評価データセット

MUSIQで使用された主観評価データセットを紹介します。基本的にデータセットはMOS(Mean Opinion Score)と呼ばれるスコアを使用しています。これは、被験者(ここでいうところの画質を評価する人)の評点を平均したものがベースとなっています。

  • PaQ-2-PiQ:4万枚の実世界画像と12万枚のトリミングパッチを含む最大規模の画像技術品質データセット baidut.github.io

  • SPAQ:66台のスマホで撮影された11,125枚の写真から構成されるデータセット。 github.com

  • KonIQ-10k:10,073枚から構成されるデータセット。公共データセットであるYFCC100Mから画像を選出している。 database.mmsp-kn.de

  • AVA:25万枚以上から構成される美的評価データセット。 github.com

Google発表のMUSIQについて

深層学習を用いた画質評価手法として様々な手法が提案されており、CNNベースの手法が主流でした。しかし、CNNモデルだとバッチ学習時の入力サイズの要件によって、画像を固定形状にリサイズするかトリミングする必要があります。MUSIQではマルチスケールな画像表現を用いて、アスペクト比や解像度が異なるフルサイズの入力の処理を可能にしたところに新規性があります。

Figure 1. 画像サイズを変更しないMUSIQと変更するCNN手法の比較(論文より引用)

概要

MUSIQでは、任意のアスペクト比と解像度を持つ入力を扱えるようにするために、入力画像のマルチスケール表現を作成します。これはFigure 1の左絵のように元画像と元画像と同じアスペクト比のリサイズ画像で構成されます。MUSIQではマルチスケールな画像から固定サイズのパッチを取得し、それぞれのパッチがTransformerのモデルに入力されることになります。それぞれのマルチスケール画像から取得されるパッチを効率的に扱うために以下三つの工夫を実施しています。

  1. マルチスケール画像から取得したパッチをencodeするMulti-scale Patch Embedding

  2. 各パッチの二次元位置情報をencodeするHash-based 2D Spatial Embedding

  3. 異なるスケールをencodeするScale Embedding

最終的なスコアは別途追加した標準的なCLSトークンから算出されます。

Figure2. Model全体像(論文より引用)
MUSIQは入力画像のencode方法を工夫しているだけなので、Transformerそのものは何を使用してもOKです。MUSIQではTransformerをImageNetで事前学習して使用しています。 それでは上記工夫点の1~3のそれぞれについて説明していきます。

Multi-scale Patch Embedding

そもそもなぜマルチスケールにする必要があるのか疑問に思われた方もいるかもしれません。これは画像の品質が局所的な情報と対局的な情報の両方に影響されることへの対策になります。モデルに入力するパッチは常に固定サイズです。MUSIQでは Pピクセル四方のパッチ画像を使用します。元画像から取得したパッチ画像(Figure3の赤枠画像)は比較的局所的な情報を取得し、縮小した画像(Figure3の緑枠や青枠画像)は元画像と比較して対局的な情報を取得します。

Figure 3. スケールごとのパッチ情報

Multi-scale Patch Embeddingと難しそうなことを言っていますが、やっていることは非常にシンプルです。事前にハイパーパラメータとして、リサイズ後の最大の1辺  L_k をリサイズする枚数分の  k 個だけ決めておきます。入力画像に対して、アスペクトが変化しないよう、かつ最大の1辺が  L_k となるようにリサイズします。元画像とリサイズした画像たちをパッチサイズ  P (論文では  P=32)で分割します。分割した各画像のパッチを連結することとFigure 3Patch Encoding Moduleの入力ができあがります。シンプルと言っておきながら文字に起こすと文章が下手すぎて何もわからないので、横 × 縦 = 150 × 200のフルカラー画像が入力だった場合の具体例を以下に示します。

  1. リサイズ画像を2枚準備し、それぞれの最大1辺サイズを224384とする。パッチサイズを32とすると  L_1 = 224, L_2 = 384, P = 32となる。

  2. アスペクト比を維持して最大辺の長さに合わせてリサイズするので、リサイズ画像はそれぞれ168 × 224 × 3228 × 384 × 3となる(× 3はカラーチャンネルの意味)。

  3. 元画像とリサイズ画像を32 × 32四方のパッチ画像に分割し、全てを結合。このとき32 x 32で収まりが悪かった部分はpaddingしてあとでmaskする。

3でできた結合画像(と表現します)を5層のResNetに入力してEncode完了です。ResNetを使用したのは単純に精度が高かったためとのことです。

Hash-based 2D Spatial Embedding

各パッチ画像がどこから取得したパッチなのかをTransformerに教えてあげる必要があります。従来のCNN手法のように固定サイズでリサイズする場合、取得するパッチの数は常に一定となり空間情報(パッチの位置情報)をencodeするのは容易でした。しかし入力画像が可変サイズとなると取得できるパッチの数が毎回変わることになります。パッチ画像が入力画像の任意の場所から来るため、いままでの固定長の手法は適用できないということです。そこでMUSIQでは、異なるアスペクト比や入力解像度のもとでパッチの空間情報をEncodeでき、異なるスケールで空間的に近いパッチは近い空間埋め込みを持つことを目的に、Hash-based 2D Spatial Embeddingを提案しました。これは i j列のパッチがG×Gグリッドの対応する要素にハッシュ化される2次元空間埋め込みで、グリッドの各要素はD次元のEmbed空間になります。これは、切り出したパッチの位置に対応するルックアップテーブルを準備して、パッチの位置に応じてテーブルのD次元情報を取得しています。

Figure 4. Hash-based 2D Spatial Embedding

MUSIQでは G=10としています。ここで可変サイズの画像をパッチした時に必ずしも10×10のグリッドにはなりません。例えば横 × 縦 = 150 × 200の画像を32 x 32のパッチに分解した場合、グリッドサイズ(パッチの数)は5 x 7になります( round(150 / 32) = 5, round(200/32) = 7)。この場合は5 x 7のグリッドをNearestNeighbor法で10×10のグリッドにして、最も近い場所を見に行きます。

Scale Embedding

MUSIQではHash-based 2D Spatial Embeddingのハッシュ行列を全てのマルチスケール画像で使い回すので、パッチのスケールそのものを区別することができません。それを解決するためにScale Embeddingを追加しています。と言っても各マルチスケール画像の各パッチに対し、scale_idに応じてD次元にEmbedする操作だけです。

評価結果

MUSIQは最終的に0から100の間の値を出力します。100が最高画質を意味します。Figure 5の知覚的に高画質の上段画像(正解スコアが高いもの)には、高いMUSIQスコアが計算され、美的評価が低い中段画像やノイズが載っていたりで画質が悪い下段画像には低いMUSIQスコアとなっていることがわかります。

Figure 5. 予測したMUSIQのスコア(ブログより引用)[]内は正解スコアを指す。

また、ベンチマークのスコアもMUSIQがPaQ-2-PiQ, Kon1Q-10k, SPAQのデータセットにおいて今までのSOTAを更新したと報告されています。

Figure 6. ベンチマーク結果(ブログより引用

実際の推論結果と感想

コードとモデルがGoggle Researchより公開されています。

github.com

せっかくなので実際に手元の画像のスコアを算出してみます。学習済みモデルはデータセットごとに準備してあるのですが、今回はKon1Q-10kのモデルを使用します。 ノイズのある画像やボケ画像などわかりやすい学術っぽい画像ではなく、あえて日常っぽい写真を選んでみました。

手元画像のMUSIQスコア

プロの素晴らしいオーロラ写真より、気づいたら片方がなかったAirPods Proの写真の方が画質が良いと判断されました。冒頭で述べた良い感じのボケ感をモデルが良い品質と扱ってくれなかったのであろうと推測しています。それでもAirPodsなくした絶望写真よりは高いスコアであって欲しかった。可愛い我が子の写真を高いスコアで出してくれたので個人的には大満足です。

最後に

ABEJAでは一緒に働く仲間を募集しています。 カジュアル面談もやっておりますので、もしABEJAの興味持っていただけたら、こちらのリンクより訪ねてもらえると嬉しいです。

careers.abejainc.com

hrmos.co

*1:論文はICCV 2021で発表されています