Spaces:
Sleeping
Sleeping
File size: 3,635 Bytes
7652cfe c495e22 ff8836b c495e22 b326687 c495e22 07d6fbd c495e22 b326687 c495e22 b326687 c495e22 b326687 b66536f c495e22 b326687 c495e22 b326687 c495e22 4a762d5 ff8836b a2d41fa ff8836b a2d41fa b326687 a2d41fa 0f027da ff8836b 7652cfe |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
from huggingface_hub import push_to_hub_keras
import numpy as np
import pandas as pd
import os
from sklearn.metrics import classification_report
import seaborn as sn
from sklearn.utils import shuffle
import matplotlib.pyplot as plt
import cv2
import tensorflow as tf
from tqdm import tqdm
sac = os.getenv('accesstoken')
sn.set(font_scale=1.4)
class_names = ['buildings', 'forest', 'glacier']
class_names_label = {class_name: i for i, class_name in enumerate(class_names)}
nb_classes = len(class_names)
print(class_names_label)
IMAGE_SIZE = (150, 150)
def load_data():
DIRECTORY = "imgdataset"
CATEGORY = ["seg_train", "seg_test"]
output = []
for category in CATEGORY:
path = os.path.join(DIRECTORY, category)
images = []
labels = []
print("Loading {}".format(category))
for folder in os.listdir(path):
label = class_names_label[folder]
# Iterate through each image in our folder
for file in os.listdir(os.path.join(path, folder)):
# Get the path name of the image
img_path = os.path.join(os.path.join(path, folder), file)
# Open and resize the ing
image = cv2.imread(img_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = cv2.resize(image, IMAGE_SIZE)
# Append the image and its corresponding Label to the output
images.append(image)
labels.append(label)
# Convert both the images and labels to a numpy array
images = np.array(images, dtype='float32')
labels = np.array(labels, dtype='int32')
output.append((images, labels))
return output
(train_images, train_labels), (test_images, test_labels) = load_data()
train_images, train_labels = shuffle(train_images, train_labels, random_state=25)
print("Train: ", train_images.shape, train_labels.shape)
print("Test: ", test_images.shape, test_labels.shape)
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D(2, 2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(3, activation='softmax')
])
# model = tf.keras.Sequential([
# tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
# tf.keras.layers.MaxPooling2D(2, 2),
# tf.keras.layers.Conv2D(32, (3, 3), activation='relu'),
# tf.keras.layers.MaxPooling2D(2, 2),
# tf.keras.layers.Flatten(),
# tf.keras.layers.Dense(128, activation=tf.nn.relu),
# tf.keras.layers.Dense(6, activation=tf.nn.softmax)
# ])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10, validation_split=0.2)
# Evaluate the model
model.evaluate(test_images, test_labels)
# save the model
model.save("model.keras")
# from transformers import push_to_hub_keras
# Save the model
# model.save("model.keras")
# Upload the model to your Hugging Face space repository
push_to_hub_keras(
model,
repo_id="okeowo1014/imgclassifiera",
commit_message="Optional commit message",
tags=["image-classifier", "some_other_tag"],
include_optimizer=True, token=sac
)
|