TensorFlow Auto Neon-Glow-EffektPython

Python-Programme
Guest
 TensorFlow Auto Neon-Glow-Effekt

Post by Guest »

Ich habe einen Code geschrieben, um den Effekt von Neonlichtern zu erzielen, aber der Effekt ist nicht gut.
Hier ist Code.

Code: Select all

import os

import numpy as np
import tensorflow as tf
from tensorflow.keras.initializers import glorot_uniform
from tensorflow.keras.layers import Input, Activation, ZeroPadding2D, Conv2D
from tensorflow.keras.models import Model
from tensorflow.keras.preprocessing import image

def input_data():
path_x = "data/train/trainA/"
path_y = "data/train/trainB/"
train_num = sum([len(x) for _, _, x in os.walk(os.path.dirname(path_x))])
print(train_num)
image_train_1 = np.zeros((train_num, 1024, 1024, 3))
label_train_1 = np.zeros((train_num, 1024, 1024, 3))
count = 0
for i in range(train_num):
img = image.load_img(path_x + "test (" + str(i + 1) + ").png")
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
image_train_1[count] = x
img = image.load_img(path_y + "test (" + str(i + 1) + ").png")
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
label_train_1[count] = x
count += 1
return image_train_1, label_train_1

def test_data():
path_x = "data/train/testA/"
path_y = "data/train/testB/"
test_num = sum([len(x) for _, _, x in os.walk(os.path.dirname(path_x))])
print(test_num)
test_x = np.zeros((test_num, 1024, 1024, 3))
test_y = np.zeros((test_num, 1024, 1024, 3))
count = 0
for i in range(test_num):
img = image.load_img(path_x + "test (" + str(i + 1) + ").png")
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
test_x[count] = x
img = image.load_img(path_y + "test ("  + str(i + 1) + ").png")
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
test_y[count] = x
count += 1
return test_x, test_y

def filterModel(input_shape=(1024, 1024, 3)):
shape = Input(input_shape)
x = ZeroPadding2D((0, 0))(shape)
x = Conv2D(32, (9, 9), strides=(1, 1), padding='same', name='conv1', kernel_initializer=glorot_uniform(seed=0))(x)
x = Activation('relu')(x)
x = Conv2D(64, (3, 3), strides=(1, 1), padding='same', name='conv2', kernel_initializer=glorot_uniform(seed=0))(x)
x = Activation('relu')(x)
x = Conv2D(128, (3, 3), strides=(1, 1), padding='same', name='conv3', kernel_initializer=glorot_uniform(seed=0))(x)
x = Activation('relu')(x)
output = Conv2D(3, (5, 5), strides=(1, 1), padding='same', name='conv5', kernel_initializer=glorot_uniform(seed=0))(
x)
model1 = Model(inputs=shape, outputs=output, name='FilterModel')
return model1

# trainData
image_train, label_train = input_data()
image_train = image_train.astype('float32')
label_train = label_train.astype('float32')
image_train /= 255
label_train /= 255
# testData
test_x, test_y = test_data()
test_x = test_x.astype('float32')
test_y = test_y.astype('float32')
test_x /= 255
test_y /= 255
# training
model = filterModel((1024, 1024, 3))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.000003), loss="mean_squared_error",
metrics=["accuracy"])
model.summary()
model.fit(image_train, label_train, validation_data=(test_x, test_y), epochs=100, batch_size=2)
model.save("filterModel.h5")
print("Model save done!")
Modellzusammenfassung

Code: Select all

Model: "FilterModel"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
input_1 (InputLayer)         [(None, 1024, 1024, 3)]   0
_________________________________________________________________
zero_padding2d (ZeroPadding2 (None, 1024, 1024, 3)     0
_________________________________________________________________
conv1 (Conv2D)               (None, 1024, 1024, 32)    7808
_________________________________________________________________
activation (Activation)      (None, 1024, 1024, 32)    0
_________________________________________________________________
conv2 (Conv2D)               (None, 1024, 1024, 64)    18496
_________________________________________________________________
activation_1 (Activation)    (None, 1024, 1024, 64)    0
_________________________________________________________________
conv3 (Conv2D)               (None, 1024, 1024, 128)   73856
_________________________________________________________________
activation_2 (Activation)    (None, 1024, 1024, 128)   0
_________________________________________________________________
conv5 (Conv2D)               (None, 1024, 1024, 3)     9603
=================================================================
Total params: 109,763
Trainable params: 109,763
Non-trainable params: 0
Ich habe 100 Trainingsrunden durchgeführt, da sich die Genauigkeit und der Verlust danach kaum ändern werden.
Ergebnis:
test_x | vorhersagen | test_y
Input&Predict&Label
Input&Predict&Label
Wie optimiert man dieses Modell?
Oder gibt es noch andere Möglichkeiten, diesen Effekt zu erzielen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post