Download classifiers.py from 22GC22/deepsaif: direct link, hf CLI and curl.
- Browser
- Download file 5.03 kB
-
https://huggingface.co/spaces/22GC22/deepsaif/resolve/main/classifiers.py
- Command line
-
hf download hf://spaces/22GC22/deepsaif/classifiers.py
-
curl -L -o classifiers.py https://huggingface.co/spaces/22GC22/deepsaif/resolve/main/classifiers.py
5.03 kB
| # -*- coding:utf-8 -*- | |
| from tensorflow.keras.models import Model as KerasModel | |
| from tensorflow.keras.layers import Input, Dense, Flatten, Conv2D, MaxPooling2D, BatchNormalization, Dropout, Reshape, Concatenate, LeakyReLU | |
| from tensorflow.keras.optimizers import Adam | |
| IMGWIDTH = 256 | |
| class Classifier: | |
| def __init__(): | |
| self.model = 0 | |
| def predict(self, x): | |
| if x.size == 0: | |
| return [] | |
| return self.model.predict(x) | |
| def fit(self, x, y): | |
| return self.model.train_on_batch(x, y) | |
| def get_accuracy(self, x, y): | |
| return self.model.test_on_batch(x, y) | |
| def load(self, path): | |
| self.model.load_weights(path) | |
| class Meso1(Classifier): | |
| """ | |
| Feature extraction + Classification | |
| """ | |
| def __init__(self, learning_rate = 0.001, dl_rate = 1): | |
| self.model = self.init_model(dl_rate) | |
| optimizer = Adam(lr = learning_rate) | |
| self.model.compile(optimizer = optimizer, loss = 'mean_squared_error', metrics = ['accuracy']) | |
| def init_model(self, dl_rate): | |
| x = Input(shape = (IMGWIDTH, IMGWIDTH, 3)) | |
| x1 = Conv2D(16, (3, 3), dilation_rate = dl_rate, strides = 1, padding='same', activation = 'relu')(x) | |
| x1 = Conv2D(4, (1, 1), padding='same', activation = 'relu')(x1) | |
| x1 = BatchNormalization()(x1) | |
| x1 = MaxPooling2D(pool_size=(8, 8), padding='same')(x1) | |
| y = Flatten()(x1) | |
| y = Dropout(0.5)(y) | |
| y = Dense(1, activation = 'sigmoid')(y) | |
| return KerasModel(inputs = x, outputs = y) | |
| class Meso4(Classifier): | |
| def __init__(self, learning_rate = 0.001): | |
| self.model = self.init_model() | |
| optimizer = Adam(learning_rate = learning_rate) | |
| self.model.compile(optimizer = optimizer, loss = 'mean_squared_error', metrics = ['accuracy']) | |
| def init_model(self): | |
| x = Input(shape = (IMGWIDTH, IMGWIDTH, 3)) | |
| x1 = Conv2D(8, (3, 3), padding='same', activation = 'relu')(x) | |
| x1 = BatchNormalization()(x1) | |
| x1 = MaxPooling2D(pool_size=(2, 2), padding='same')(x1) | |
| x2 = Conv2D(8, (5, 5), padding='same', activation = 'relu')(x1) | |
| x2 = BatchNormalization()(x2) | |
| x2 = MaxPooling2D(pool_size=(2, 2), padding='same')(x2) | |
| x3 = Conv2D(16, (5, 5), padding='same', activation = 'relu')(x2) | |
| x3 = BatchNormalization()(x3) | |
| x3 = MaxPooling2D(pool_size=(2, 2), padding='same')(x3) | |
| x4 = Conv2D(16, (5, 5), padding='same', activation = 'relu')(x3) | |
| x4 = BatchNormalization()(x4) | |
| x4 = MaxPooling2D(pool_size=(4, 4), padding='same')(x4) | |
| y = Flatten()(x4) | |
| y = Dropout(0.5)(y) | |
| y = Dense(16)(y) | |
| y = LeakyReLU(negative_slope=0.1)(y) | |
| y = Dropout(0.5)(y) | |
| y = Dense(1, activation = 'sigmoid')(y) | |
| return KerasModel(inputs = x, outputs = y) | |
| class MesoInception4(Classifier): | |
| def __init__(self, learning_rate = 0.001): | |
| self.model = self.init_model() | |
| optimizer = Adam(learning_rate = learning_rate) | |
| self.model.compile(optimizer = optimizer, loss = 'mean_squared_error', metrics = ['accuracy']) | |
| def InceptionLayer(self, a, b, c, d): | |
| def func(x): | |
| x1 = Conv2D(a, (1, 1), padding='same', activation='relu')(x) | |
| x2 = Conv2D(b, (1, 1), padding='same', activation='relu')(x) | |
| x2 = Conv2D(b, (3, 3), padding='same', activation='relu')(x2) | |
| x3 = Conv2D(c, (1, 1), padding='same', activation='relu')(x) | |
| x3 = Conv2D(c, (3, 3), dilation_rate = 2, strides = 1, padding='same', activation='relu')(x3) | |
| x4 = Conv2D(d, (1, 1), padding='same', activation='relu')(x) | |
| x4 = Conv2D(d, (3, 3), dilation_rate = 3, strides = 1, padding='same', activation='relu')(x4) | |
| y = Concatenate(axis = -1)([x1, x2, x3, x4]) | |
| return y | |
| return func | |
| def init_model(self): | |
| x = Input(shape = (IMGWIDTH, IMGWIDTH, 3)) | |
| x1 = self.InceptionLayer(1, 4, 4, 2)(x) | |
| x1 = BatchNormalization()(x1) | |
| x1 = MaxPooling2D(pool_size=(2, 2), padding='same')(x1) | |
| x2 = self.InceptionLayer(2, 4, 4, 2)(x1) | |
| x2 = BatchNormalization()(x2) | |
| x2 = MaxPooling2D(pool_size=(2, 2), padding='same')(x2) | |
| x3 = Conv2D(16, (5, 5), padding='same', activation = 'relu')(x2) | |
| x3 = BatchNormalization()(x3) | |
| x3 = MaxPooling2D(pool_size=(2, 2), padding='same')(x3) | |
| x4 = Conv2D(16, (5, 5), padding='same', activation = 'relu')(x3) | |
| x4 = BatchNormalization()(x4) | |
| x4 = MaxPooling2D(pool_size=(4, 4), padding='same')(x4) | |
| y = Flatten()(x4) | |
| y = Dropout(0.5)(y) | |
| y = Dense(16)(y) | |
| y = LeakyReLU(negative_slope=0.1)(y) | |
| y = Dropout(0.5)(y) | |
| y = Dense(1, activation = 'sigmoid')(y) | |
| return KerasModel(inputs = x, outputs = y) |