Spaces:
Sleeping
Sleeping
import numpy as np | |
from tensorflow.keras.utils import get_file | |
from config import MODEL_HDF5_PATH | |
with open("labels.txt", "r") as f: | |
LABELS = list(filter(None, f.read().split("\n"))) | |
def initialize_model(): | |
# import the necessary packages | |
from tensorflow.keras.models import Sequential | |
from tensorflow.keras.layers import BatchNormalization | |
from tensorflow.keras.layers import Conv2D, MaxPooling2D | |
from tensorflow.keras.layers import Flatten, Dropout, Dense | |
# CONV => RELU => POOL | |
cnn = Sequential() | |
inputShape = (224, 224, 3) | |
chanDim = -1 | |
classes = 101 | |
# Sequence of Convolution (scan filters), BatchNormalization (normalize numbers), | |
# MaxPooling (shrink tensor down), Dropout (prevent overfit) | |
cnn.add( | |
Conv2D(32, (3, 3), padding="same", input_shape=inputShape, activation="relu") | |
) | |
cnn.add(BatchNormalization(axis=chanDim)) | |
cnn.add(MaxPooling2D(pool_size=(3, 3))) | |
cnn.add(Dropout(rate=0.25)) | |
cnn.add(Conv2D(64, (3, 3), padding="same", activation="relu")) | |
cnn.add(BatchNormalization(axis=chanDim)) | |
cnn.add(Conv2D(64, (3, 3), padding="same", activation="relu")) | |
cnn.add(BatchNormalization(axis=chanDim)) | |
cnn.add(MaxPooling2D(pool_size=(2, 2))) | |
cnn.add(Dropout(rate=0.25)) | |
cnn.add(Conv2D(128, (3, 3), padding="same", activation="relu")) | |
cnn.add(BatchNormalization(axis=chanDim)) | |
cnn.add(Conv2D(128, (3, 3), padding="same", activation="relu")) | |
cnn.add(BatchNormalization(axis=chanDim)) | |
cnn.add(MaxPooling2D(pool_size=(2, 2))) | |
cnn.add(Dropout(rate=0.25)) | |
cnn.add(Flatten()) | |
cnn.add(Dense(1024, activation="relu")) | |
cnn.add(BatchNormalization()) | |
cnn.add(Dropout(rate=0.5)) | |
# softmax classifier | |
cnn.add(Dense(classes, activation="softmax")) | |
return cnn | |
CNN = initialize_model() | |
CNN.load_weights( | |
get_file( | |
"weights.hdf5", | |
MODEL_HDF5_PATH, | |
cache_dir="." | |
) | |
) | |