更新於 2024/07/25閱讀時間約 4 分鐘

[深度學習]訓練VAE模型用於生成圖片_生成篇

本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。

[深度學習]訓練VAE模型用於生成圖片_訓練篇

生成的結果圖

輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片,雖然生成的效果有點差勁,但不難看出輪廓跟原先的資料也是很接近了,畢竟模型跟訓練集的資料都偏簡單,利用簡單的範例來理解,VAE的作用及功能。

fashion_mnist資料

fashion_mnist資料


隨機數據

tf.random.normal隨機產生的數據轉換成NumPy 陣列,在Show出。可以更直觀的觀察輸入這些像雜訊的東西,經過VAE訓練好的解碼器來生成圖片。


Python及套件版本

Python version: 3.11.3
NumPy version: 1.24.2
Pandas version: 1.5.3
Matplotlib version: 3.7.1
tensorflow version: 2.13.0

程式碼

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
from keras.models import load_model

# 載入模型
loaded_var_ae = load_model('模型路徑')

# 設置隨機種子
tf.random.set_seed(1)
# 產生隨機數據
random_codings = tf.random.normal(shape= [10, 10])#隨機產生5*10(Coding)
imgs = loaded_var_ae(random_codings)

plt.figure(figsize=(10, 2))

for i in range(0,10):
plt.subplot(2, 5, 1 + i)
plt. imshow (imgs [i], cmap='binary')
plt.axis('off')

plt.show()

程式碼詳細說明

# 載入模型
loaded_var_ae = load_model('模型路徑')
  • load_model('F:/python/opencv/color_anlyce/var_decoder.h5'):載入保存在 'var_decoder.h5' 文件中的解碼器模型。load_model 函數從 HDF5 文件中讀取模型結構和權重。


# 設置隨機種子
tf.random.set_seed(1)
  • tf.random.set_seed(1):設置 TensorFlow 隨機數生成的種子,以確保結果可重複。


# 產生隨機數據
random_codings = tf.random.normal(shape=[10, 10]) # 隨機產生 10*10 (Coding)
  • tf.random.normal(shape=[10, 10]):生成形狀為 [10, 10] 的隨機數據,這些數據代表潛在空間的編碼(通常在變分自編碼器中使用)。
  • 代表等會生成10張圖


imgs = loaded_var_ae(random_codings)
  • loaded_var_ae(random_codings):使用載入的解碼器模型生成圖像。這裡的 random_codings 作為模型的輸入,模型會將這些潛在編碼轉換為圖像。


plt.figure(figsize=(20, 2))
  • plt.figure(figsize=(20, 2)):創建一個新的圖形窗口,設置其大小為 10x2 英寸。


for i in range(0,10):
plt.subplot(2, 5, 1 + i)
plt. imshow (imgs [i], cmap='binary')
plt.axis('off')
  • for i in range(0,10)::循環處理 10張生成的圖像。
  • plt.subplot(2, 5, 1 + i):設置圖形的子圖位置。這裡 2, 5 指定圖形有 2 行 5 列的子圖,1 + i 設定當前子圖的位置。
  • plt.imshow(imgs[i], cmap='binary'):顯示第 i 張生成的圖像,使用 binary 顏色映射。
  • plt.axis('off'):隱藏子圖的坐標軸。


plt.show()
  • plt.show():顯示圖形窗口。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.