JITERA

お問い合わせ

VAE (変分オートエンコーダー)とは?Stable DiffusionのおすすめVAE12選もわかりやすく解説!

アバター画像
takakuni7777

25年間に渡ってプログラマー、システムエンジニアに携わってきました、プログラムを教える講師も経験しております。

VAEは、ディープラーニングの一分野であり、データの潜在的な特性を学習し、新たなデータを生成する技術です。

昨今ではAIの活用が普及していますが、画像生成や検知など、さまざまな用途で使用されています。

業界に携わっていれば、単語を聞いたことがある方も多いかもしれません。しかし、VAEの仕組みや実装方法、さらには具体的な使用例まで詳しく理解している人は少ないはずです。

この記事では、おすすめの画像生成AI Stable DiffusionでおすすめのVAE(変分オートエンコーダー)10選・VAEの基本から応用例、そして実装方法まで、幅広く紹介しています。ぜひ参考にしてみてください。

画像生成AI Stable DiffusionでおすすめのVAE(変分オートエンコーダー)12選

VAEという言葉は知っているが、よくわからない方は次の章で”VAEの基本について”で説明していますのでそちらを先に参照ください。簡単に言うとVAEはディープラーニングの一分野で元のデータから新たなデータを生成します。主に画像生成や画像分析などの画像処理で使われています。

「Stable Diffusion」は、Stability AI社によって2022年8月に発表された画像生成するAIです。ソースコードやモデルが無償で公開されているので誰でも自分向けにカスタマイズできるのと、操作が簡単で品質の高い画像を生成できるので多くの人が使っています。※WEB上でも使えますし、マルチプラットフォームで使えます。
※「Stable Diffusion」には実はデフォルトのVAEが組み込まれていて画像生成をおこなっています。

ここでは画像生成AI「Stable Diffusion(ステーブル・ディフュージョン)」で使用できるカスタムなVAEについて12選ほど紹介します。「Stable Diffusion」に様々なVAEを組み込んで使うことにより高品質な画像を生成することができます。
※「Stable Diffusion」にカスタムなAEを組み込むのは簡単にできます。カスタムなVAEのファイルをダウンロードしてきて設定するだけです。

以下が12選となります。

  • vae-ft-mse-840000-ema-pruned
  • kl-f8-anime2
  • Counterfeit-V2.5_VAE
  • Mangled Merge VAE
  • MasterVae/li&gt
  • Matrix-VAE
  • ClearVAE
  • Color101 VAE
  • Tone Range Compressor (VAE)
  • difConsistency RAW VAE (Pack)
  • Anything 4.0
  • blessed/blessed-fix/blessed2

以下それぞれ詳しく説明します。

vae-ft-mse-840000-ema-pruned

「vae-ft-mse-840000-ema-pruned」は、有名なVAEでかなりの人が使っています。

以下は、「vae-ft-mse-840000-ema-pruned」の詳細と使い方です:

1. vae-ft-mse-840000-ema-prunedとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • 多くのユーザーによって使われている代表的な VAE の一つです。

2. ダウンロードの方法

  • 「vae-ft-mse-840000-ema-pruned」は、「Hugging Face」(画像生成AIに関するものがダウンロードできるサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「vae-ft-mse-840000-ema-pruned」を使用すると、以下のような効果があります

  • モデルによってはなんの変化もない場合もあります。
  • 目の白い光(ハイライト)が追加されていたり、全体的に色が明るくなったりしてクオリティーが向上する
  • モデルの違いで明るくなったりするので適したVAEを使うことは必要です。

4. 注意点

  • vae-ft-mse-840000-ema-prunedの導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「vae-ft-mse-840000-ema-pruned」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストなどの好みによって使い分けることは必要です。

参照:vae-ft-mse-840000-ema-pruned

kl-f8-anime2

kl-f8-anime2は、vae-ft-mse-840000-ema-prunedの次に有名なVAEとなります。

以下は、「kl-f8-anime2」の詳細と使い方です:
※どのVAEを使用しても、画像がくすんだりぼやけたている場合に効果的なのですがモデルとの組み合わせによって微妙に違いがあります。

1. kl-f8-anime2とは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 全体的にかなり明るくなる。
  • 多くのユーザーによって使われている代表的な VAE の一つです。

2. ダウンロードの方法

  • 「kl-f8-anime2」は、「Hugging Face」(画像生成AIに関するものがダウンロードできるサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「kl-f8-anime2」を使用すると、以下のような効果があります

  • 元の画像より、肌の白さが増す。全体的に明るくなる。
  • 元の画像より、目の白い光(ハイライト)が綺麗に入る。
  • 背景がぼやけず、はっきりとする。※逆に被写体を目立たせるには使用しない方がよいかもしれない。

4. 注意点

  • 「kl-f8-anime2」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「kl-f8-anime2」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストなどの好みによって使い分けることは必要です。

参照:kl-f8-anime2

Counterfeit-V2.5_VAE

Counterfeit-V2.5_VAEは、Counterfeit-V2.5というモデルに推奨されているVAEとなりますが、他のモデルでも効果がある場合があります。
※Counterfeit-V2.5モデルは、アニメでも高品質なものや、背景を綺麗に描きたい時に使うのがよいです。

以下は、「Counterfeit-V2.5_VAE」の詳細と使い方です:

1. Counterfeit-V2.5_VAEとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • Counterfeit-V2.5というモデルに推奨されているVAEです。

2. ダウンロードの方法

  • 「Counterfeit-V2.5_VAE」は、「Hugging Face」(画像生成AIに関するものがダウンロードできるサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「Counterfeit-V2.5_VAE」を使用すると、以下のような効果があります

  • 全体的に彩度(色のあざやかさ・強さ)が落ちるが、肌の白さは増す。
  • 目の光(ハイライト)が自然な感じになる。
  • Counterfeitというモデルを使うとある色が目だたなくなる。

4. 注意点

  • 「Counterfeit-V2.5_VAE」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「Counterfeit-V2.5_VAE」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストなどの好みによって使い分けることは必要です。

参照:Counterfeit-V2.5_VAE

Mangled Merge VAE

Mangled Merge VAEは、リアル風(写真風)やアニメ風どちらの生成でもよい効果があるVAEです。

以下は、「Mangled Merge VAE」の詳細と使い方です:

1. Mangled Merge VAEとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • リアル風(写真風)やアニメ風どちらの生成でもよい効果があります。

2. ダウンロードの方法

  • 「Mangled Merge VAE」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「Mangled Merge VAE」を使用すると、以下のような効果があります

  • 全体的に落ち着いた感じになります。
  • 背景などが自然な感じになる。
  • 人物の肌の感じがリアルな感じになる。

4. 注意点

  • 「Mangled Merge VAE」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「Mangled Merge VAE」を使用することで、画像生成のクオリティを向上させることはできます。ただし、写真やイラストなどの好みによって使い分けることは必要です。

参照:Mangled Merge VAE

MasterVae

MasterVaeも、リアル風(写真風)やアニメ風どちらの生成でも綺麗なものができるVAEです。

以下は、「MasterVae」の詳細と使い方です:

1. MasterVaeとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • リアル風(写真風)やアニメ風どちらの生成でもよい効果があります。

2. ダウンロードの方法

  • 「MasterVae」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「MasterVae」を使用すると、以下のような効果があります

  • このVAEは全体的に落ち着いた感じになります。

4. 注意点

  • 「MasterVae」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「MasterVae」を使用することで、画像生成のクオリティを向上させることはできます。ただし、写真やイラストなどの好みによって使い分けることは必要です。

参照:MasterVae

Matrix-VAE

Matrix-VAEも、リアル風(写真風)やアニメ風どちらの生成でも綺麗なものができるVAEです。

以下は、「Matrix-VAE」の詳細と使い方です:

1. Matrix-VAEとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • リアル風(写真風)やアニメ風どちらの生成でもよい効果があります。

2. ダウンロードの方法

  • 「Matrix-VAE」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「Matrix-VAE」を使用すると、以下のような効果があります

  • このVAEも全体的に落ち着いた感じになります。

4. 注意点

  • 「Matrix-VAE」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「Matrix-VAE」を使用することで、画像生成のクオリティを向上させることはできます。ただし、写真やイラストなどの好みによって使い分けることは必要です。

参照:Matrix-VAE

ClearVAE

ClearVAEは、アニメ系のモデルに特化しており、描画やイラストによく使われるVAEです。

以下は、「ClearVAE」の詳細と使い方です:

1. ClearVAEとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • アニメ系の生成によい効果があります。

2. ダウンロードの方法

  • 「ClearVAE」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「ClearVAE」を使用すると、以下のような効果があります

  • 実物のイラストにようなタッチの絵になります。

4. 注意点

  • 「ClearVAE」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。特にリアル系には向いてません。

「ClearVAE」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストや描画などの好みによって使い分けることは必要です。

参照:ClearVAE

Color101 VAE

Color101 VAEは、アニメ系の画像を中心に、リアル系の画像において綺麗に画像を生成できるVAEです。

以下は、「Color101 VAE」の詳細と使い方です:

1. Color101 VAEとは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • アニメ系の生成を中心ですが、リアル系にもよい効果があります。

2. ダウンロードの方法

  • 「Color101 VAE」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「Color101 VAE」を使用すると、以下のような効果があります

  • 全体的に明るく、鮮やかな感じになります。

4. 注意点

  • 「Color101 VAE」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「Color101 VAE」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストや写真風などの好みによって使い分けることは必要です。

参照:color101 vae

Tone Range Compressor (VAE)

Tone Range Compressor (VAE)は、リアル系の画像を中心に、アニメ系の画像を中心において綺麗に画像を生成できるVAEです。

以下は、「Tone Range Compressor (VAE)」の詳細と使い方です:

1. Tone Range Compressor (VAE)とは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • リアル系の生成を中心ですが、アニメ系にもよい効果があります。

2. ダウンロードの方法

  • 「Tone Range Compressor (VAE)」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「Tone Range Compressor (VAE)」を使用すると、以下のような効果があります

  • 被写体を浮かび上がらせて、はっきりさせます。

4. 注意点

  • 「Tone Range Compressor (VAE)」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「Tone Range Compressor (VAE)」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストや写真風などの好みによって使い分けることは必要です。

参照:Tone Range Compressor (VAE)

difConsistency RAW VAE (Pack)

difConsistency RAW VAE (Pack)は、クオリティの高い画像を、リアル系・アニメ系両方において生成できるVAEです。

以下は、「difConsistency RAW VAE (Pack)」の詳細と使い方です:

1. difConsistency RAW VAE (Pack)とは?

  • 画像のクオリティを向上させるためのツールとなります。
  • 画像がくすんだり、ぼやけたている場合に効果的です。
  • リアル系・アニメ系どちらにもよい効果があります。

2. ダウンロードの方法

  • 「difConsistency RAW VAE (Pack)」は、「Civitai」(Stable Diffusionで使用できるAIモデルを多数共有しているプラットフォームサイト) からダウンロードすることができます。
  • ダウンロードが終わったファイルは、「Stable Diffusion WebUI」 がすでにインストールされているフォルダ内の 「stable-diffusion-webui > models > VAE」 に置いてください。(配置する。)

3. 効果:「difConsistency RAW VAE (Pack)」を使用すると、以下のような効果があります

  • 明るさを抑えて、自然な感じにします。

4. 注意点

  • 「difConsistency RAW VAE (Pack)」の導入は必ず必要ではありません。しかし、多くのモデルで使っても問題はありませんが望んだ効果がモデルによっては得られない場合があります。

「difConsistency RAW VAE (Pack)」を使用することで、画像生成のクオリティを向上させることはできます。ただし、イラストや写真風などの好みによって使い分けることは必要です。

参照:difConsistency RAW VAE (Pack)

他にもVAEは以下のものがあります。名前とダウンロード先だけ紹介します。

Anything 4.0

    • 短いプロンプトで、高精細で高品質なアニメ系画像を生成できます。

参照:Anything 4.0

blessed/blessed-fix/blessed2

    • 明暗のコンストラクトが強調されやすいVAE

参照:blessed/blessed-fix/blessed

    ※VAEのファイルを置くフォルダはバージョンによって違うことがあります。ファイルをフォルダに保存した後にStable Diffusion UIで使用できるように設定する必要がありますがここでは説明しません。
関連記事
画像生成AI「Midjourney」とは?使い方や料金、最新モデルV6の機能やV5との違いまで紹介
画像生成AI「Midjourney」とは?使い方や料金、最新モデルV6の機能やV5との違いまで紹介

VAEの基本

VAEの基本

VAE(変分オートエンコーダー)は、データの潜在的な特性を学習し、新たなデータを生成する能力を持つ技術です。画像生成やセンサーによる正常判別など幅広い分野で利用されています。

業界にいると、VAE(変分オートエンコーダー)という単語をよく聞くと思いますが、どの様な技術なのか、その仕組みまで理解している方は少ないのではないでしょうか。

ここでは、VAE(変分オートエンコーダー)の基本事項として、VAE(変分オートエンコーダー)の概要や学習方法について詳しく紹介します。

VAE(変分オートエンコーダー)とは何か

VAE(Variational Auto encoder)は日本語で「変分自己符号化器」と呼ばれます。ディープラーニングにおける「変分ベイズ推定法」の手法の1つです。

VAE(変分オートエンコーダー)は、AE(Auto encoder)のアルゴリズムで用いられている「潜在変数」の部分に「確率分布」を追加したものです。潜在変数を確立分布に変化させることによって、数値で分析が行えるようになり、正確な状態、もしくはデータに適合しているかを見抜きやすくなっているのです。

たとえば、VAE(変分オートエンコーダー)は人間の顔認証などに使われます。たとえば、情報処理学会第85回全国大会で行われた研究「VAEを用いた笑顔認識が困難な顔画像の検出にむけて」では、画像認識の精度を高めるために、それぞれの画像がどのような特徴を持つのかをマッピングします。

そして、新たに認識された顔画像が、学習済みのデータとどの程度近いかを計算し、それによってその顔画像が特定の人物のものであるかどうかを判別します。

この研究では「笑顔かどうか」を判別することに絞って取り組んでいますが、この技術は画像認証においてさまざまな業界で活躍しています。私たちの生活に身近な部分でいえば、証明書類を提出する際に必要な顔認証が挙げられるでしょう。

参照:VAEを用いた笑顔認識が困難な顔画像の検出にむけて

VAE(変分オートエンコーダー)の損失関数と学習方法

VAE(変分オートエンコーダー)の学習においては、再構築損失とKLダイバージェンスの2つの損失関数を最小化することが重要視されます。

まず、再構築損失は元のデータと再構築されたデータとの間の違いを計測する技術のことです。これは通常、入力データと出力データの差(二乗誤差やクロスエントロピーなど)を用いて計算します。

また、KLダイバージェンスは、学習した潜在変数の分布と事前分布(通常はガウス分布)との間の違いを計測します。この学習過程で潜在変数がどれほど事前分布に近づいているかを判断することが可能です。

これらの損失関数を最小化することで、データを適切に判別でき、さまざまな分野で活用できます。

そして、バックプロパゲーションと呼ばれる学習手法を用いて、各パラメータ(重みとバイアス)を更新し、繰り返すことにより、VAE(変分オートエンコーダー)はデータの潜在的な特性を効果的に学習します。

ちなみに、VAE(変分オートエンコーダー)の学習方法をもとに、新たな画像を生成するのが私たちに身近な「画像生成AI」です。画像生成AIの仕組みや生成手法についてはこちらの記事で紹介しているので、ぜひ参考にしてみてください。

関連記事
画像生成AIの仕組みや技術、おすすめのツールや注意点まで解説
画像生成AIの仕組みや技術、おすすめのツールや注意点まで解説
業務効率化システムを開発したいなら「ジテラ」へ!他社より1.4倍速い開発、お返事は3日以内、開発知識ゼロでもOK!、お見積りは無料。お見積りは無料!

VAE(変分オートエンコーダー)の実装と導入

VAE(変分オートエンコーダー)の実装と導入には、適切なPythonライブラリとフレームワークの選択と、具体的な実装手順の理解が必要です。

ここでは、VAE(変分オートエンコーダー)のフレームワークと実装手順をみていきましょう。

VAE(変分オートエンコーダー)のPythonライブラリとフレームワーク

Pythonでは、VAE(変分オートエンコーダー)の実装に役立つ多くのライブラリとフレームワークが提供されています。

具体的には、KerasやPyTorchといったディープラーニングフレームワークが、VAE(変分オートエンコーダー)の実装によく用いられます。これらのフレームワークは、ニューラルネットワークの設計と学習を容易にするための多くの便利な機能を提供しています。

VAE(変分オートエンコーダー)の実装手順とサンプルコード

VAE(変分オートエンコーダー)の実装方法にはさまざまなものがありますが、主に以下のような手順で実装を行うことがおすすめです。

手順1:必要なパッケージを実装する

まず、実装に必要なパッケージをインポートします。以下は、必要なパッケージの一例です。

import torch
from torch import nn, optim
from torch.autograd import Variable
import torchvision
from torchvision import transforms
from torchvision.utils import save_image
from torchvision import datasets

手順2:VAEモデルの定義づけを行う

続いて、定義づけを行います。

以下が実装時のサンプルになります。


# VAEクラスを定義
  class VAE(nn.Module):
# コンストラクタでネットワークの構造を定義
  def __init__(self):
  super(VAE, self).__init__()
# 全結合層を定義
  self.fc1 = nn.Linear(784, 400)
  self.fc21 = nn.Linear(400, 20)
  self.fc22 = nn.Linear(400, 20)
  self.fc3 = nn.Linear(20, 400)
  self.fc4 = nn.Linear(400, 784)
# エンコーダ部分の定義
  def encode(self, x):
  h1 = F.relu(self.fc1(x))
  return self.fc21(h1), self.fc22(h1)
# レパラメータ化トリックを使用したサンプリング処理
  def reparameterize(self, mu, logvar):
  std = torch.exp(0.5*logvar)
  eps = torch.randn_like(std)
  return mu + eps*std
# デコーダ部分の定義
  def decode(self, z):
  h3 = F.relu(self.fc3(z))
  return torch.sigmoid(self.fc4(h3))
# ネットワーク全体の順伝播を定義
  def forward(self, x):
  mu, logvar = self.encode(x.view(-1, 784))
  z = self.reparameterize(mu, logvar)
  return self.decode(z), mu, logvar

手順3:損失関数を定義する

VAE(変分オートエンコーダー)ではデータの正確性を担保するために、損失関数を定義する必要があります。以下は定義づけのサンプルです。


# 損失関数を定義
def loss_function(recon_x, x, mu, logvar):
BCE = F.binary_cross_entropy(recon_x, x.view(-1, 784), reduction='sum')
# KLダイバージェンスを計算
KLD = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
# 二つの損失を合計
 return BCE + KLD

 

手順4:モデルを学習させる

モデルの学習を行うためのコードは以下のようになります。

 


# オプティマイザを定義
optimizer = optim.Adam(model.parameters(), lr=1e-3)
# データローダを定義
data_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,
transform=transforms.ToTensor()), batch_size=batch_size, shuffle=True)
# 学習ループ
for epoch in range(epochs):
model.train()
train_loss = 0
for batch_idx, (data, _) in enumerate(data_loader):
data = Variable(data)
optimizer.zero_grad()
# 順伝播
recon_batch, mu, logvar = model(data)
# 損失関数の計算とバックプロパゲーション
loss = loss_function(recon_batch, data, mu, logvar)
loss.backward()
# オプティマイザの更新
optimizer.step()
train_loss += loss.data[0]
print('====> Epoch: {} Average loss: {:.4f}'.format(epoch, train_loss / len(data_loader.dataset)))

上記でご紹介したコードを参考に、実装を進めてみてください。

関連記事
【入門者必見】AIを使った画像解析とは?仕組みや事例、おすすめのソフトなどをわかりやすく解説!
【入門者必見】AIを使った画像解析とは?仕組みや事例、おすすめのソフトなどをわかりやすく解説!

VAE(変分オートエンコーダー)の画像生成と応用

VAE(変分オートエンコーダー)は画像生成の分野で非常に有効であり、手書きの文字や人間の顔といった複雑な画像を生成するのに長けています。

さらに、異常検知を行う工場などさまざまな分野でも活用されています。ここでは、VAE(変分オートエンコーダー)の画像生成技術が用いられている、例について詳しく見ていきましょう。

VAE(変分オートエンコーダー)を用いた画像生成の仕組みと手法

まず大量の画像データから学習データを生み出し、そこから学習データに似たデータを生成します。

具体的には、VAE(変分オートエンコーダー)は画像データを入力として受け取り、それを低次元の潜在空間に圧縮します。次に、この潜在空間からランダムに点をサンプリングし、それをデコーダー部分で元の画像データに戻すことで新たな画像を生成します

たとえば、アニメに出てくる様なキャラクターを自動生成する場合を考えてみましょう。まず、システムが大量のアニメキャラクターの画像データをAIに学習させます。

次に、AIは各画像の特徴(目の距離や顔の色みなど)を抽出し、データを蓄積していきます。

そして、新たな点をランダムにサンプリングし、それを元の画像データの次元に戻すことで、新たなキャラクターの顔を生成することが可能です。

VAE(変分オートエンコーダー)の異常検知への応用と効果

VAE(変分オートエンコーダー)は、異常検知の分野でも活用されています。VAE(変分オートエンコーダー)は、正常なデータの潜在空間を学習し、新たに与えられたデータがその潜在空間から大きく逸脱していれば、異常と判断することができます。

また、潜在空間にはさまざまな種類のデータを蓄積できるので、画像の異常検知だけでなく、音声やテキストなど、さまざまなデータに対する異常検知にも応用することが可能です。

事実、日刊工業新聞の以下記事には生産現場でリアルタイムに製品を検査するディープラーニングを使った異常検知システム「AISI∀ Anomaly Detection」の事例が紹介されています。

参照:「AISI∀ Anomaly Detection」を発表

ちなみに、同記事では、以下のような分野でVAE技術を活用できると紹介されています。

  • 医療現場
  • 農業分野
  • インフラ保全

VAE(変分オートエンコーダー)の異常検知


凄く簡単に言うと、VAE(変分オートエンコーダー)の異常検知おいては、ニューラルネットワークの仕組みが元のデータと異常があるデータの識別がやりやすいというか見分けやすいことにあります。元のデータを学習させていてノイズの発見ができるからです。

VAE(変分オートエンコーダー)が異常検知に役立つ理由

非常に簡単に説明しますとMNISTというものを例に異常検知を説明してみます。MNISTは画像認識AIでよく使われる手書きの数値の画像データです。実際は画像ではなく画像を表す数値データなのですが、それはここでは置いておいて、まず、仮に手書きの数字0の画像が正常で、他の手書きの数字1から9の画像を異常と決めます。

数値0の画像データのみでVAEを学習させます、数字0の画像を入力させてエンコードで変換して、デコーダーで再構成させて出力を出します。学習が成功すれば、入力した数地0の画像とVAEによって出力された数値0の画像の誤差は小さくなるはずです。次に、手書きの数値1から9の画像をVAEに入力します。数値の0以外の画像は再構成されないはずなので、数値0以外の画像とVAEによって再構成された画像の誤差は大きくなって、異常だと見抜くことが出来きます。あとは、適当に誤差をどれだけ許すかを決め、異常かどうか決めます。

もっと簡単に言うと、異常がある画像を入力して出力すると元画像のように再構築できないということです。これをもっと詳しく説明すると数学の知識が必要となりますので、ここではやめておきます。

VAE(変分オートエンコーダー)を異常検知に活用した事例

VAEは、工場で使われる装置や機械などの異常検知に使われます。例えば以下のようなことです。
工場で幅広く使用されている回転機器【モータ・ポンプ・ファンなど】の異常予測ソリューションにおいての新しい手法として、にVAE(変分オートエンコーダー)よる異常検知判定を搭載した超低消費電力のワイヤレス振動センサモジュールシステムが開発されています。VAEによる監視(異常スコアによる)は、振動特性評価指標値による従来の監視よりも早く設備の異常を検知できることが確認されました。

参照;変分自動エンコーダ(VAE)による異常判断機能を搭載した無線振動センサモジュールの開発

他には、人口知能学会ぶにより、「深層生成モデルによる非正則化異常度を用いた工業製品の異常検知」という論文が発表されています。これはねじ山などの凄く複雑な工業製品の画像を使って異常検知する検知器の提案です。

参照:・深層生成モデルによる非正則化異常度を用いた工業製品の異常検知

VAEのまとめ

この記事では、VAE(変分オートエンコーダー)について、その実装方法から画像生成や異常検知への応用、さらにはさまざまなVAEのバリエーションについて紹介しました。

VAE(変分オートエンコーダー)はデータの潜在的な特性を学習し、新たなデータを生成する能力を持つ深層学習の手法で、活用される範囲は多岐にわたります。

中でも、画像生成の分野でVAE(変分オートエンコーダー)が活用されており、手書きの文字や人間の顔といった複雑な画像を生成する能力に長けています。

今回ご紹介した内容も参考に、VAE(変分オートエンコーダー)についての理解を深めてみてください。

また、今回ご紹介した内容について疑問や質問、VAE(変分オートエンコーダー)にまつわる業務の依頼などがございましたら、経験豊富な株式会社Jiteraにご相談ください。貴社の業務内容をしっかりと理解し、最適な手法を提案させていただきます。

お問い合わせ先→こちら

アバター画像
takakuni7777

25年間に渡ってプログラマー、システムエンジニアに携わってきました、プログラムを教える講師も経験しております。

コスト削減も課題解決も同時に実現

「JITERA」で迅速
ソフトウェア開発

開発を相談する
Recommended articles for you

Discover more of
what matters to you

email-img
メルマガ登録
JITERA社内で話題になった生成AIトレンドをいち早くお届けします。
Thank you!

Jiteraのメールマガジン登録が完了しました。