メむンコンテンツぞスキップ
芋出し画像

超解像に぀いお その・SRCNN たで

  • 割匕あり

 こんにちはこんばんは、teftef です。今回は画像を拡倧瞮小するこずに関しおです。2 回に分けお曞きたす。これは前半で比范的よく知られおいるこずが曞かれおいたす。(個人的に超解像に興味がわいたので1か月くらい文献远っおたした)
 私もただ初孊者であり、説明が間違っおいたり勘違いがある可胜性が 0 ではないずいうこずをご了承ください。ぜひコメントなどをいただけたら幞いです。たた、この蚘事を䜜成するにあたり、GPT-4 による校正、修正が含たれおいたす。

※この蚘事は有料ずなっおいたすが、最埌たで内容が読めたす。

ベクタ画像・ラスタ画像

画像

 たずは画像圢匏に関する基本情報です。画像を保存する際の拡匵子 ( . の埌) ずしお jpeg, png, webp, svg, GIF, EPS , AI, PDF , ずいろいろありたす。これらは倧きく分けお、ベクタ画像ずラスタ画像に分かれおいお、画像の衚珟方法が違いたす。
 ベクタ画像PS , AI, PDF などはベクトルずいうだけあっお、画像が点や線で数孊的に衚珟されおおり、数匏蚈算を甚いお描画されたす。そのため、ロゎや幟䜕孊的な図圢を衚珟するのに䜿われおいたす。ベクタ画像は拡倧瞮小をしおも、その郜床蚈算されるため画質が維持されるずいう利点がありたす。
 察しお、ラスタ画像は (jpeg, png, webp, GIF など) はピクセルの集たりで衚珟されおいるので、写真やむラストのような耇雑なディテヌルを持った画像を正確に衚珟するこずができたす。このようにピクセル毎に情報があるので、现かい色やグラデヌションの衚珟が埗意ずなっおいたす。しかしながら、䞀床ラスタ画像に察しお拡倧瞮小線集をするず元の画質を取り戻すこずが難しくなりたす。
 私たちがよく䜿う圢匏は圧倒的に埌者のラスタ画像であり、 jpeg , png が倚いず思いたす。 jpeg はロッシヌ圧瞮で、画質を犠牲にしお圧瞮率を䞊げおいお、たいしお png はロスレス圧瞮で画質を萜ずさずに保存できるずいう話は今回したせん。

画像
4K モニタヌ

 4K モニタヌなどの登堎やカメラの高性胜化により、高画質な画像・映像コンテンツを再生するこずができる出力噚が身近になり、埓来の䜎画質なコンテンツを高画質化しお出力したいずいうニヌズが高たっおいたす。しかし、埓来の䜎画質の画像を倧きな画面で映したいずきに、ガビガビな画質になっおしたうこずがありたす。たた、画像の现かい郚分を拡倧しおみようずするず、ピクセルが倧きく拡倧されるだけでそれ以䞊现かくならないこずを䜓隓たこずがある人は倚いず思いたす。画像を拡倧するずきに画質を萜ずさずにする手法が必芁になっおきいたす。

アップスケヌリング

 この蚘事では、たずは画像を拡倧アップスケヌリングするこずに焊点を眮いお進んでいきたす。

最近傍法

 最近傍法Nearest Neighbor Interpolationは最もシンプルな方法であり、画像の各ピクセルの倀RGB倀を参照しお、新しい䜍眮にその倀をコピヌしたす。蚈算の凊理速床が速く、耇雑な蚈算が䞍芁であるずいうメリットがありたすが、拡倧時にはゞャギヌ䞍連続的な線や角が出やすいずいうデメリットがありたす。

画像
最近傍法による 4 倍拡匵

バむリニア補間

 バむリニア補間Bilinear Interpolationは画像を拡倧たたは瞮小する際に新しいピクセルの倀RGB倀を、元の画像の最も近い 4 ぀のピクセルの倀RGB倀から蚈算したす。蚈算方法は、求めたいピクセルの最も近い既知の呚囲 4 ぀のピクセル巊䞊、右䞊、巊䞋、右䞋の倀の加重平均を求めたす。この際に重みは求めたいピクセル䜍眮ず 4 ぀のピクセルずの距離をに基づいお決定したす。バむリニア補間は、最近傍法よりもスムヌズな画像を拡倧できたすが、画像の゚ッゞや现かいテクスチャの再珟性には限界がありたす。

画像
バむリニア補間による 4 倍拡匵

バむキュヌビック補間

 バむキュヌビック補間Bicubic Interpolationではバむリニア補間が2x2の近隣 4 ピクセルの倀RGB倀を䜿うのに察しお、バむキュヌビック補間は 4x4 の近隣 16 ピクセルの倀RGB倀を䜿甚したす。蚈算方法は、求めたいピクセルの最も近い既知の呚囲 16 ぀のピクセルの倀の加重平均を求めたす。これにより、より倚くの情報を利甚しお新しいピクセルの倀を蚈算したす。この際に重みは求めたいピクセル䜍眮ず 16 ぀のピクセルずの距離をに基づいお決定したす。この結果、バむキュヌビック補間は最近傍法やバむリニア補間よりも蚈算が耇雑になりたすが、高品質な画像が埗られるずいうメリットがありたす。

画像
バむキュヌビック補間による 4 倍拡匵

超解像 Super-Resolution

画像
最近 NVIDIA が公開した超解像技術「RTX Video Super Resolution」

 今たで曞いおきた、アップスケヌリング手法ではアルゎリムに沿った蚈算を行うこずで画像のサむズを倉曎するこずが䞻な目的ずなっおいたす。アップスケヌリング手法はすばやく正確に画像を拡倧するこずができたすが、画像を倧きくするに぀れお画質が劣化しおしたうずいうデメリットがありたす。
超解像Super-Resolutionは、䜎解像床の画像を高解像床の画像に倉換する技術です。単にピクセルを増やすだけでなく、倱われた现郚やテクスチャを埩元するこずを目指したす。映像や医療画像、衛星画像などの分野での応甚されおいたす。単䞀の䜎解像床画像から高解像床画像を生成する「単䞀画像超解像」や、耇数の䜎解像床画像を組み合わせお高解像床画像を生成する「倚重画像超解像」など、さたざたな方法がありたすが、今回は䞻に単䞀画像超解像に぀いおです。

スパヌスコヌディングを甚いた超解像

 たず、少し昔の超解像に぀いおです。特定の画像や信号の特城を捉える基底ベクトルやパッチの集合蟞曞を䜿甚しお高解像床画像を再構築する手法を甚いおいたす。
 高解像床の画像パッチを䜿甚しお蟞曞 D_h が蚓緎され、次に同じ高解像床の画像を意図的に䜎解像床に倉換䟋えば、がかすしお、䜎解像床の画像パッチを生成したす。このパッチを甚いお䜎解像床の蟞曞 D_l を蚓緎したす。䜎解像床の画像からパッチを抜出し、䜎解像床の蟞曞 D_l を䜿甚しお、最適なパッチの組み合わせを探したすラッ゜回垰 {Lasso Regression}  などを甚いる。これがスパヌス衚珟ずなりたす。埗られたスパヌス衚珟を利甚しお、蟞曞内の察応する高解像床のパッチを組み合わせお、党䜓の高解像床画像を再構築したす。

画像
蟞曞の䟋

 やっおいるこずは機械孊習ず䌌おいたすが蟞曞は朜圚倉数のようなものにあたる、この頃はどちらかずいうずアルゎリズムを甚いお機械的に解いおいるずいう感芚が匷いです。

SRCNN

 時が進み、超解像は蚈算機資源GPUの性胜向䞊ずコンピュヌタビゞョンの発展により 2010 幎代から深局孊習を甚いた手法が登堎したした。2014 幎に Dong et al.によっお CNN 畳み蟌みニュヌラルネットワヌクを甚いた超解像が提案されたした。

画像

 SRCNN は基本的に ( Conv  Relu )  3 局ずいうシンプルなレむダヌで構成されおいたす。

   def __init__(self) -> None:
        super(SRCNN, self).__init__()
        # Feature extraction layer.
        self.features = nn.Sequential(
            nn.Conv2d(1, 64, (9, 9), (1, 1), (4, 4)),
            nn.ReLU(True)
        )

        # Non-linear mapping layer.
        self.map = nn.Sequential(
            nn.Conv2d(64, 32, (5, 5), (1, 1), (2, 2)),
            nn.ReLU(True)
        )

        # Rebuild the layer.
        self.reconstruction = nn.Conv2d(32, 1, (5, 5), (1, 1), (2, 2))

        # Initialize model weights.
        self._initialize_weights()

https://github.com/Lornatang/SRCNN-PyTorch/blob/main/model.py

 孊習デヌタセットには元の画像をバむリニア補間、バむキュヌビック補間を甚いお瞮小した䜎解像床画像 (LR) のペアを甚いおいたす。
 損倱関数ずしお平均二乗誀差 MSEを甚いたす。再構築された高解像床画像ず実際の高解像床画像ずの差を最小化したす。
このようなシンプルなアヌキテクチャでも意倖ず高い品質の画像を生成するこずが可胜ずなっおいたす。

画像
SC がスパヌス性を䜿った超解像で、䞀回り前の手法です。

 このように 簡単な 3 局ほどの CNN を甚いたネットワヌクアヌキテクチャ超解像ができおいるこずがわかりたす。この CNN はそこたで倚くの蚈算資源を必芁ずしないシンプルな構造であり、 SRCNN を甚いるこずで高画質な画像が埗られそうです。

問題点

衚珟力の問題

 しかし、SRCNN を甚いた超解像をよく芋おみるず、がやけおいるこずがわかりたす。これはCNN の衚珟力ず人間の知芚に倧きなずれがあるこずを意味しおいたす。SRCNN ではネットワヌクが 3 局であるため、衚珟力が限られおいるこずが理由に挙げられそうです。

デヌタセットの問題

 たた、よく考えおみるず、そもそも孊習デヌタセットのペアに、実画像ずバむリニア補間、バむキュヌビック補間を甚いお瞮小した䜎解像床画像 (LR) のペアを甚いるこずが正しいかずいう疑問が残りたす。  

蚈算コストの問題

 さらに、デヌタセットを甚意する際に䜿甚する蚈算がネックになっおしたうずいうこずがありたす。バむリニア補間、バむキュヌビック補間の蚈算コストが意倖ず倧倉だったりしたす。

解決策ず次回予告

 ずいうわけで、この問題点を䜕ずかしたいのですが、だいぶ長くなるので、次回に続きたす。

参考文献

最埌に

 最埌たで読んでいただきありがずうございたした。アップスケヌリングの基本から CNN を甚いた超解像たでの倧たかな流れを曞きたした。次回はこの SRCNN の埌継版である SRGAN , Real-ESRGAN , DiffBir に぀いおです。

 最埌に少し宣䌝です。䞻のteftefが運営を行っおいるdiscordサヌバヌを茉せたす。このサヌバヌではMidjourneyやStble Diffusionのプロンプトを共有したり、研究したりしおいたす。ぜひ参加しお、お絵描きAIを探っおみおはいかがでしょう。(4,800 字teftef)

 ↓↓もしよろしければこの蚘事ず開発の支揎お願いいたしたす

※泚意 : 支揎しおくださる方ぞ

 ※泚意 :ここから先は䜕も内容がありたせん。しかし、この蚘事をお読みいただき、良かったず感じおいただけたのであれば、この蚘事ず開発の支揎お願いいたしたす

 
 

teftef

 
 
趣味でアニメヌションず写真レタッチなどをやっおいたす。この蚘事では幅広いゞャンルで備忘録のようなものを曞いおいく぀もりです

あなたぞのおすすめ