こんにちは。株式会社ABEJAでデータサイエンティストをしている大谷です。本記事はABEJAアドベントカレンダー2022の21日目の記事です。
去年はNormalizing Flowと呼ばれるマイナー(?)技術とそれを使ったSRFlowという超解像技術の紹介をしました。 qiita.com
今年も綺麗な画像
とは何かという、画像品質に関する少しマニアックな記事を書こうと思います。具体的にはGoogleが2022年10月に出したブログのMUSIQと呼ばれる技術を紹介します。*1
目次
なんとなく画質の良し悪しというのは定性的にわかる方が多いと思います。普段目で見えている景色がノイズのない綺麗な状態であるのに対し、画像はデータ化する過程で画像加工の過程で様々なノイズが発生します。この現実とデータの差分を画質の良し悪しの判断材料にしているため、多くの方は画質の良し悪しをなんとなく判断できるのだと思います。人間が意識することなく身につけている素晴らしい能力の一つです。ここで一つ疑問が生まれます。プロのカメラマンが撮った背景をぼけているポートレート写真は現実の見え方と違うので品質が悪いのでしょうか?シャッター速度を落として撮った星の流れが分かるような写真は画質が悪いのでしょうか?多くの人は現実の見え方とは違うけど綺麗な画像と判断すると思います。これはあくまで一例ですが、画質と一言に言っても多くの判断基準があり、非常に奥が深い世界です。ゆえに人の知覚に沿った画質定量化の研究が行われており、本記事で紹介するMUSIQもその画質評価の手法の一つになります。 定量評価には、主観評価と客観評価の2種類があります。主観評価は画像を見た人が自分の感性で綺麗さを決める手法で、客観評価は画像のノイズを正解画像との比較から評価する手法です。本記事のMUSIQは主観評価手法になります。後者の客観評価で代表的なものはPSNRやSSIMがあります。わかりやすい記事が出ているの以下をご参照ください。 紹介した記事にもあるように、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 深層学習を用いた画質評価手法として様々な手法が提案されており、CNNベースの手法が主流でした。しかし、CNNモデルだとバッチ学習時の入力サイズの要件によって、画像を固定形状にリサイズするかトリミングする必要があります。MUSIQではマルチスケールな画像表現を用いて、アスペクト比や解像度が異なるフルサイズの入力の処理を可能にしたところに新規性があります。 MUSIQでは、任意のアスペクト比と解像度を持つ入力を扱えるようにするために、入力画像のマルチスケール表現を作成します。これは マルチスケール画像から取得したパッチをencodeする 各パッチの二次元位置情報をencodeする 異なるスケールをencodeする 最終的なスコアは別途追加した標準的なCLSトークンから算出されます。
MUSIQは入力画像のencode方法を工夫しているだけなので、Transformerそのものは何を使用してもOKです。MUSIQではTransformerをImageNetで事前学習して使用しています。
それでは上記工夫点の1~3のそれぞれについて説明していきます。 そもそもなぜマルチスケールにする必要があるのか疑問に思われた方もいるかもしれません。これは画像の品質が局所的な情報と対局的な情報の両方に影響されることへの対策になります。モデルに入力するパッチは常に固定サイズです。MUSIQではピクセル四方のパッチ画像を使用します。元画像から取得したパッチ画像( リサイズ画像を2枚準備し、それぞれの最大1辺サイズを アスペクト比を維持して最大辺の長さに合わせてリサイズするので、リサイズ画像はそれぞれ 元画像とリサイズ画像を 3でできた結合画像(と表現します)を5層のResNetに入力してEncode完了です。ResNetを使用したのは単純に精度が高かったためとのことです。 各パッチ画像がどこから取得したパッチなのかをTransformerに教えてあげる必要があります。従来のCNN手法のように固定サイズでリサイズする場合、取得するパッチの数は常に一定となり空間情報(パッチの位置情報)をencodeするのは容易でした。しかし入力画像が可変サイズとなると取得できるパッチの数が毎回変わることになります。パッチ画像が入力画像の任意の場所から来るため、いままでの固定長の手法は適用できないということです。そこでMUSIQでは、異なるアスペクト比や入力解像度のもとでパッチの空間情報をEncodeでき、異なるスケールで空間的に近いパッチは近い空間埋め込みを持つことを目的に、 MUSIQではとしています。ここで可変サイズの画像をパッチした時に必ずしも MUSIQでは MUSIQは最終的に0から100の間の値を出力します。100が最高画質を意味します。 また、ベンチマークのスコアもMUSIQが コードとモデルがGoggle Researchより公開されています。 せっかくなので実際に手元の画像のスコアを算出してみます。学習済みモデルはデータセットごとに準備してあるのですが、今回は プロの素晴らしいオーロラ写真より、気づいたら片方がなかったAirPods Proの写真の方が画質が良いと判断されました。冒頭で述べた良い感じのボケ感をモデルが ABEJAでは一緒に働く仲間を募集しています。 カジュアル面談もやっておりますので、もしABEJAの興味持っていただけたら、こちらのリンクより訪ねてもらえると嬉しいです。
そもそも画質ってなに?
代定量的手法の種類
主観評価データセット
概要
Figure 1
の左絵のように元画像と元画像と同じアスペクト比のリサイズ画像で構成されます。MUSIQではマルチスケールな画像から固定サイズのパッチを取得し、それぞれのパッチがTransformerのモデルに入力されることになります。それぞれのマルチスケール画像から取得されるパッチを効率的に扱うために以下三つの工夫を実施しています。
Multi-scale Patch Embedding
Hash-based 2D Spatial Embedding
Scale Embedding
Multi-scale Patch Embedding
Figure3
の赤枠画像)は比較的局所的な情報を取得し、縮小した画像(Figure3
の緑枠や青枠画像)は元画像と比較して対局的な情報を取得します。
Multi-scale Patch Embedding
と難しそうなことを言っていますが、やっていることは非常にシンプルです。事前にハイパーパラメータとして、リサイズ後の最大の1辺 をリサイズする枚数分の 個だけ決めておきます。入力画像に対して、アスペクトが変化しないよう、かつ最大の1辺が となるようにリサイズします。元画像とリサイズした画像たちをパッチサイズ (論文では )で分割します。分割した各画像のパッチを連結することとFigure 3
のPatch Encoding Module
の入力ができあがります。シンプルと言っておきながら文字に起こすと文章が下手すぎて何もわからないので、横 × 縦 = 150 × 200
のフルカラー画像が入力だった場合の具体例を以下に示します。
224
と384
とする。パッチサイズを32とすると となる。168 × 224 × 3
と228 × 384 × 3
となる(× 3はカラーチャンネルの意味)。32 × 32
四方のパッチ画像に分割し、全てを結合。このとき32 x 32
で収まりが悪かった部分はpaddingしてあとでmaskする。Hash-based 2D Spatial Embedding
Hash-based 2D Spatial Embedding
を提案しました。これは行列のパッチがG×G
グリッドの対応する要素にハッシュ化される2次元空間埋め込みで、グリッドの各要素はD次元のEmbed空間になります。これは、切り出したパッチの位置に対応するルックアップテーブルを準備して、パッチの位置に応じてテーブルのD次元情報を取得しています。10×10
のグリッドにはなりません。例えば横 × 縦 = 150 × 200
の画像を32 x 32
のパッチに分解した場合、グリッドサイズ(パッチの数)は5 x 7
になります()。この場合は5 x 7
のグリッドをNearestNeighbor法で10×10
のグリッドにして、最も近い場所を見に行きます。Scale Embedding
Hash-based 2D Spatial Embedding
のハッシュ行列を全てのマルチスケール画像で使い回すので、パッチのスケールそのものを区別することができません。それを解決するためにScale Embedding
を追加しています。と言っても各マルチスケール画像の各パッチに対し、scale_idに応じてD次元にEmbedする操作だけです。評価結果
Figure 5
の知覚的に高画質の上段画像(正解スコアが高いもの)には、高いMUSIQスコアが計算され、美的評価が低い中段画像やノイズが載っていたりで画質が悪い下段画像には低いMUSIQスコアとなっていることがわかります。
PaQ-2-PiQ
, Kon1Q-10k
, SPAQ
のデータセットにおいて今までのSOTAを更新したと報告されています。
Kon1Q-10k
のモデルを使用します。
ノイズのある画像やボケ画像などわかりやすい学術っぽい画像ではなく、あえて日常っぽい写真を選んでみました。
良い品質
と扱ってくれなかったのであろうと推測しています。それでもAirPodsなくした絶望写真よりは高いスコアであって欲しかった。可愛い我が子の写真を高いスコアで出してくれたので個人的には大満足です。