Spaces:
Build error
Build error
import tensorflow as tf | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import cv2 | |
import os | |
import numpy as np | |
#data directories | |
DATADIR = "your data dir" | |
CATEGORIES = ["sfw", "nsfw"] | |
for category in CATEGORIES: | |
path = os.path.join(DATADIR, category) #path to sfw and nfsw dir | |
for img in os.listdir(path): | |
img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE) | |
plt.imshow(img_array, cmap ="gray") | |
plt.show() | |
break | |
break | |
# In[2]: | |
print (img_array).shape | |
# In[3]: | |
IMG_SIZE = 80 | |
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) | |
plt.imshow(new_array, cmap = 'gray') | |
plt.show() | |
# In[4]: | |
training_data = [] | |
def create_training_data(): | |
for category in CATEGORIES: | |
path = os.path.join(DATADIR, category) #path to sfw and nsfw | |
class_num = CATEGORIES.index(category) | |
for img in os.listdir(path): | |
try: | |
img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE) | |
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) | |
training_data.append([new_array, class_num]) | |
except Exception as e: | |
pass | |
create_training_data() | |
# In[5]: | |
print(len(training_data)) | |
# In[6]: | |
import random | |
random.shuffle(training_data) | |
# In[7]: | |
for sample in training_data[:10]: | |
print(sample[1]) | |
# In[8]: | |
X = [] | |
y = [] | |
# In[9]: | |
for features, label in training_data: | |
X.append(features) | |
y.append(label) | |
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1) | |
# In[10]: | |
import pickle | |
pickle_out = open("X.pickle", "wb") | |
pickle.dump(X, pickle_out) | |
pickle_out.close() | |
pickle_out = open("y.pickle", "wb") | |
pickle.dump(y, pickle_out) | |
pickle_out.close() | |
# In[11]: | |
pickle_in = open("X.pickle", "rb") | |
X = pickle.load(pickle_in) | |
# In[13]: | |
X[1] | |
# In[14]: | |
import tensorflow as tf | |
from tensorflow.keras.models import Sequential | |
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D | |
import pickle | |
X = pickle.load(open("X.pickle", "rb")) | |
y = pickle.load(open("y.pickle", "rb")) | |
X = X/255.0 | |
y = np.array(y) | |
model = Sequential() | |
model.add(Conv2D(64, (3,3), input_shape = X.shape[1:])) | |
model.add(Activation("relu")) | |
model.add(MaxPooling2D(pool_size = (2, 2))) | |
model.add(Conv2D(64, (3,3))) | |
model.add(Activation("relu")) | |
model.add(MaxPooling2D(pool_size = (2, 2))) | |
model.add(Flatten()) | |
model.add(Dense(64)) | |
model.add(Dense(1)) | |
model.add(Activation('sigmoid')) | |
model.compile(loss="binary_crossentropy", | |
optimizer="adam", | |
metrics=['accuracy']) | |
model.fit(X, y, batch_size=8, epochs=8, validation_split=0.1) | |