見出し画像

PyTorchで作るノイズ除去オートエンコーダ

この記事では、入力画像からノイズを除去するためのオートエンコーダ(Auto-Encoder)をPyTorchで実装します。

画像データセットはMNISTを使います。データセットの詳細はこちらを参照してください。ノイズを加えた画像を訓練データとして使用し、ノイズのない画像を復元することを目的としています。そのために、オートエンコーダのアーキテクチャを利用します。

上段:ノイズ有り。下段:ノイズ除去後。

また、実装では線形層を主に使ったものと畳み込み層を導入したもの両方を使って実験し、その効果を比較します。畳み込みを利用したオートエンコーダでは、以前に解説した転置畳み込み層を利用します。よって、転置畳み込みを使ったモデルの実装の参考にもなります。

では、さっそく始めましょう。


オートエンコーダの仕組み

オートエンコーダには2つの部分があります。それは、エンコーダ(Encoder)とデコーダ(デコーダ)です。

エンコーダ

エンコーダは入力データを圧縮します。つまり、次元が削減されます。こうすることによって元のデータから重要な特徴量などの情報を抽出することを目的としています。

エンコーダは画像を圧縮

デコーダ

デコーダは圧縮された情報を使って画像を復元します。

デコーダは画像を復元

そのためエンコーダが圧縮したデータには画像を復元できるだけの重要な情報が含まれている必要があります。

ここから先は

19,157字 / 7画像

キカベン・読み放題

¥1,000 / 月
初月無料
このメンバーシップの詳細

この記事が気に入ったらサポートをしてみませんか?