Я занимаюсь проектом Steganalysis и использую CNN для классификации изображений. Выбранный набор данных - iStego100K. Он имеет 100 000 изображений в формате ST go, 100 000 изображений обложек и 8104 тестовых изображения. В настоящее время я запускаю его на Google Colab. Я хотел бы получить обратную связь по коду, который я использую, и если будут какие-либо улучшения. Моя точность в настоящее время составляет 60. Я также хотел бы знать, как улучшить это значение.
from __future__ import absolute_import, division, print_function, unicode_literals
%tensorflow_version 2.x
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import keras
from keras.layers import Input, Lambda, Dense, Flatten
from keras.models import Model
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
train_path = "/content/drive/My Drive/train"
vaild_path = "/content/drive/My Drive/test"
stego_path = '/content/drive/My Drive/train/stego'
cover_path = '/content/drive/My Drive/train/cover'
IMAGE_SIZE = [512,512]
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(512,512, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(2, activation='softmax'))
model.compile(
loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy']
)
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('/content/drive/My Drive/train',
target_size = (512, 512),
color_mode = 'grayscale',
batch_size = 32,
class_mode = 'categorical')
test_set = test_datagen.flow_from_directory('/content/drive/My Drive/test',
target_size = (512, 512),
color_mode = 'grayscale',
batch_size = 32,
class_mode = 'categorical')
r = model.fit_generator(
training_set,
validation_data=test_set,
epochs=5,
steps_per_epoch=len(training_set),
validation_steps=len(test_set)
)
plt.plot(r.history['acc'], label='train acc')vc
plt.plot(r.history['val_acc'], label='val acc')
plt.legend()
plt.show()
plt.savefig('AccVal_acc')