img_list = os.listdir(이미지가 담긴 폴더 위치)
from tensorflow.keras.preprocessing.image import img_to_array, load_img
img = load_img('이미지파일의 경로', target_size=(이미지의 대상 크기), color_mode='컬러 모드')
img_array = img_to_array(img)
def img_transfer(img_list, img_path):
arr = []
for f in img_list:
img = load_img(img_path + f, target_size = (img_size, img_size), color_mode = 'rgb')
arr.append(img_to_array(img))
return arr
from PIL import Image
img = Image.open('이미지파일의 경로')
img.save('새로운이미지파일의 경로')
new_img = img.resize((width, height))
cropped_img = img.crop((left, upper, right, lower)) # 이미지 일부 영역 잘라내기
rotated_img = img.rotate(45)
converted_img = img.convert('L')
def img_transfer(img_list, img_path):
arr = []
for f in img_list:
img = Image.open(img_path + f)
img_resized = img.resize((img_size, img_size))
arr.append(img_to_array(img_resized))
return arr
x_train = np.array(x_train)
def make_label(img_list):
arr = []
for val in img_list:
if val.startswith('ab_'):
arr.append(1)
else:
arr.append(0)
return arr
keras.backend.clear_session()
il = Input(shape=(img_size, img_size, 3))
def conv1_layer(x):
x = ZeroPadding2D(padding=(3, 3))(x)
x = Conv2D(64, (7, 7), strides=(2, 2))(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = ZeroPadding2D(padding=(1,1))(x)
return x
# 중략 #
x = conv1_layer(il)
x = conv2_layer(x)
x = conv3_layer(x)
x = conv4_layer(x)
x = conv5_layer(x)
x = Flatten()(x)
x = Dense(256, activation = 'relu')(x)
x = Dropout(0.5)(x)
x = Dense(128, activation = 'relu')(x)
x = Dense(18,activation = 'relu')(x)
ol = Dense(1, activation='sigmoid')(x)
model1 = Model(il, ol)
model1.compile(loss = 'binary_crossentropy',
metrics = ['accuracy'] ,
optimizer = keras.optimizers.Adam(learning_rate = 0.0001))
history1 = model1.fit(x_train, y_train,
validation_data=(x_valid, y_valid),
callbacks=[es, mcp, lr],
epochs=10000,
verbose=1)
keras.backend.clear_session()
model3 = keras.models.Sequential([
Input(shape=(img_size, img_size, 3)),
Conv2D(filters = 64, kernel_size = (5,5),padding = 'same', activation= 'relu'),
MaxPooling2D(pool_size = (2,2), strides = (2,2)),
Conv2D(128, (5,5), padding = 'same', activation='relu'),
MaxPooling2D(pool_size=(2,2)),
Conv2D(256,(5,5), padding = 'same', activation = 'relu'),
MaxPooling2D(pool_size = (2,2), strides=(2,2)),
Flatten(),
Dense(256,activation = 'relu'),
Dropout(0.5),
Dense(128,activation = 'relu'),
Dense(1,activation = 'sigmoid')])
model3.compile(loss='binary_crossentropy',
optimizer = keras.optimizers.Adam(learning_rate = 1e-4),
metrics=['accuracy'])
history1 = model1.fit(x_train, y_train,
validation_data=(x_valid, y_valid),
callbacks=[es, mcp, lr],
epochs=10000,
verbose=1)