PyTorchで作るノイズ除去オートエンコーダ
この記事では、入力画像からノイズを除去するためのオートエンコーダ(Auto-Encoder)をPyTorchで実装します。
画像データセットはMNISTを使います。データセットの詳細はこちらを参照してください。ノイズを加えた画像を訓練データとして使用し、ノイズのない画像を復元することを目的としています。そのために、オートエンコーダのアーキテクチャを利用します。
また、実装では線形層を主に使ったものと畳み込み層を導入したもの両方を使って実験し、その効果を比較します。畳み込みを利用したオートエンコーダでは、以前に解説した転置畳み込み層を利用します。よって、転置畳み込みを使ったモデルの実装の参考にもなります。
では、さっそく始めましょう。
オートエンコーダの仕組み
オートエンコーダには2つの部分があります。それは、エンコーダ(Encoder)とデコーダ(デコーダ)です。
エンコーダ
エンコーダは入力データを圧縮します。つまり、次元が削減されます。こうすることによって元のデータから重要な特徴量などの情報を抽出することを目的としています。
デコーダ
デコーダは圧縮された情報を使って画像を復元します。
そのためエンコーダが圧縮したデータには画像を復元できるだけの重要な情報が含まれている必要があります。
この記事が気に入ったらチップで応援してみませんか?