├── MobileNet_and_DenseNet ├── CA_D.py ├── CA_M.py ├── TYY_callbacks.py ├── TYY_generators.py ├── TYY_model.py ├── TYY_train_others.py ├── TYY_utils.py ├── densenet.py ├── subpixel.py └── tensorflow_backend.py ├── README.md ├── SSRNET ├── CA.py ├── SSRNET_model.py ├── SSRNET_train.py ├── TYY_callbacks.py ├── TYY_generators.py ├── TYY_utils.py ├── densenet.py ├── subpixel.py └── tensorflow_backend.py ├── TYY_Megaage_asian_create_db.py ├── data └── README.md ├── megaage_models ├── DenseNet │ └── batch_size_50 │ │ └── densenet_reg_19_64 │ │ ├── densenet_reg_19_64.h5 │ │ ├── densenet_reg_19_64.json │ │ ├── densenet_reg_19_64.png │ │ ├── history_densenet_reg_19_64.h5 │ │ ├── loss.pdf │ │ └── performance.pdf ├── MobileNet │ └── batch_size_50 │ │ └── mobilenet_reg_0.25_64 │ │ ├── history_mobilenet_reg_0.25_64.h5 │ │ ├── mobilenet_reg_0.25_64.h5 │ │ ├── mobilenet_reg_0.25_64.json │ │ └── mobilenet_reg_0.25_64.png └── batch_size_50 │ └── ssrnet_3_3_3_64_1.0_1.0 │ ├── history_ssrnet_3_3_3_64_1.0_1.0.h5 │ ├── ssrnet_3_3_3_64_1.0_1.0.h5 │ ├── ssrnet_3_3_3_64_1.0_1.0.json │ └── ssrnet_3_3_3_64_1.0_1.0.png ├── paper_images └── magaage_asian_CA.png ├── pre-trained └── wiki │ ├── densenet_reg_13_64 │ ├── densenet_reg_13_64.h5 │ ├── densenet_reg_13_64.json │ ├── densenet_reg_13_64.png │ ├── history_densenet_reg_13_64.h5 │ ├── loss.pdf │ ├── loss.png │ ├── performance.pdf │ └── performance.png │ ├── densenet_reg_19_64 │ ├── densenet_reg_19_64.h5 │ ├── densenet_reg_19_64.json │ ├── densenet_reg_19_64.png │ ├── history_densenet_reg_19_64.h5 │ ├── loss.pdf │ ├── loss.png │ ├── performance.pdf │ └── performance.png │ ├── mobilenet_reg_0.25_64 │ ├── history_mobilenet_reg_0.25_64.h5 │ ├── loss.pdf │ ├── loss.png │ ├── mobilenet_reg_0.25_64.h5 │ ├── mobilenet_reg_0.25_64.json │ ├── mobilenet_reg_0.25_64.png │ ├── performance.pdf │ └── performance.png │ ├── mobilenet_reg_0.5_64 │ ├── history_mobilenet_reg_0.5_64.h5 │ ├── loss.pdf │ ├── loss.png │ ├── mobilenet_reg_0.5_64.h5 │ ├── mobilenet_reg_0.5_64.json │ ├── mobilenet_reg_0.5_64.png │ ├── performance.pdf │ └── performance.png │ └── ssrnet_3_3_3_64_1.0_1.0 │ ├── history_ssrnet_3_3_3_64_1.0_1.0.h5 │ ├── loss.pdf │ ├── performance.pdf │ ├── ssrnet_3_3_3_64_1.0_1.0.h5 │ ├── ssrnet_3_3_3_64_1.0_1.0.json │ └── ssrnet_3_3_3_64_1.0_1.0.png ├── run_CA.sh ├── run_megaage_DenseNet.sh ├── run_megaage_MobileNet.sh └── run_ssrnet_megaage.sh /MobileNet_and_DenseNet/CA_D.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import sys 3 | import logging 4 | import csv 5 | import os 6 | os.environ['TF_CPP_MIN_LOG_LEVEL']='2' 7 | from TYY_utils import mk_dir, load_data_npz 8 | from TYY_model import TYY_DenseNet_reg 9 | 10 | def MAE(a,b): 11 | mae = np.sum(np.absolute(a-b)) 12 | mae/=len(b) 13 | return mae 14 | 15 | ''''''''''''''''''''''''''''''''''''''''''''' 16 | file name 17 | ''''''''''''''''''''''''''''''''''''''''''''' 18 | test_file = sys.argv[1] 19 | netType = int(sys.argv[2]) 20 | 21 | logging.debug("Loading testing data...") 22 | image2, age2, image_size = load_data_npz(test_file) 23 | 24 | if netType == 3: 25 | N_densenet = 3 26 | depth_densenet = 3*N_densenet+4 27 | model_file = 'megaage_models/DenseNet/batch_size_50/densenet_reg_%d_64/densenet_reg_%d_64.h5'%(depth_densenet, depth_densenet) 28 | model = TYY_DenseNet_reg(image_size,depth_densenet)() 29 | mk_dir('Results_csv') 30 | save_name = 'Results_csv/densenet_reg_%d_%d.csv' % (depth_densenet, image_size) 31 | 32 | elif netType == 4: 33 | N_densenet = 5 34 | depth_densenet = 3*N_densenet+4 35 | model_file = 'megaage_models/DenseNet/batch_size_50/densenet_reg_%d_64/densenet_reg_%d_64.h5'%(depth_densenet, depth_densenet) 36 | model = TYY_DenseNet_reg(image_size,depth_densenet)() 37 | mk_dir('Results_csv') 38 | save_name = 'Results_csv/densenet_reg_%d_%d.csv' % (depth_densenet, image_size) 39 | 40 | 41 | ''''''''''''''''''''''''''''''''''''''''''''' 42 | load data 43 | ''''''''''''''''''''''''''''''''''''''''''''' 44 | logging.debug("Loading model file...") 45 | model.load_weights(model_file) 46 | 47 | age_p=model.predict(image2) 48 | 49 | ''''''''''''''''''''''''''''''''''''''''''''' 50 | prediction 51 | ''''''''''''''''''''''''''''''''''''''''''''' 52 | pred=[['MAE'],[str(MAE(age2,age_p[:,0]))],['CA3','CA5'],['0','0'],['ID','age','age_p','error']] 53 | CA3=0 54 | CA5=0 55 | for i in range(0,len(image2)): 56 | error=np.absolute(age2[i]-age_p[i,0]) 57 | if error<=3: 58 | CA3+=1 59 | if error<=5: 60 | CA5+=1 61 | temp = [str(i), str(age2[i]), str(age_p[i,0]), str(error)] 62 | pred.append(temp) 63 | 64 | CA3/=len(image2) 65 | CA5/=len(image2) 66 | pred[3]=[str(CA3),str(CA5)] 67 | 68 | print('CA3: ',CA3,'\nCA5: ',CA5) 69 | 70 | f=open(save_name,'w') 71 | w=csv.writer(f) 72 | w.writerows(pred) 73 | f.close 74 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/CA_M.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import sys 3 | import logging 4 | import csv 5 | import os 6 | os.environ['TF_CPP_MIN_LOG_LEVEL']='2' 7 | 8 | from TYY_utils import mk_dir, load_data_npz 9 | from TYY_model import TYY_MobileNet_reg 10 | 11 | def MAE(a,b): 12 | mae = np.sum(np.absolute(a-b)) 13 | mae/=len(b) 14 | return mae 15 | 16 | ''''''''''''''''''''''''''''''''''''''''''''' 17 | file name 18 | ''''''''''''''''''''''''''''''''''''''''''''' 19 | test_file = sys.argv[1] 20 | netType = int(sys.argv[2]) 21 | 22 | logging.debug("Loading testing data...") 23 | image2, age2, image_size = load_data_npz(test_file) 24 | 25 | if netType == 1: 26 | alpha = 0.25 27 | model_file = 'megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.h5' 28 | model = TYY_MobileNet_reg(image_size,alpha)() 29 | mk_dir('Results_csv') 30 | save_name = 'Results_csv/mobilenet_reg_%s_%d.csv' % (alpha, image_size) 31 | 32 | elif netType == 2: 33 | alpha = 0.5 34 | model_file = 'megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.5_64/mobilenet_reg_0.5_64.h5' 35 | model = TYY_MobileNet_reg(image_size,alpha)() 36 | mk_dir('Results_csv') 37 | save_name = 'Results_csv/mobilenet_reg_%s_%d.csv' % (alpha, image_size) 38 | 39 | 40 | ''''''''''''''''''''''''''''''''''''''''''''' 41 | load data 42 | ''''''''''''''''''''''''''''''''''''''''''''' 43 | logging.debug("Loading model file...") 44 | model.load_weights(model_file) 45 | 46 | age_p=model.predict(image2,batch_size=len(image2)) 47 | 48 | ''''''''''''''''''''''''''''''''''''''''''''' 49 | prediction 50 | ''''''''''''''''''''''''''''''''''''''''''''' 51 | pred=[['MAE'],[str(MAE(age2,age_p[:,0]))],['ID','age','age_p','error']] 52 | pred.append(['CA3','CA5']) 53 | pred.append(['0','0']) 54 | CA3=0 55 | CA5=0 56 | for i in range(0,len(image2)): 57 | error=np.absolute(age2[i]-age_p[i,0]) 58 | if error<=3: 59 | CA3+=1 60 | if error<=5: 61 | CA5+=1 62 | temp = [str(i), str(age2[i]), str(age_p[i,0]), str(error)] 63 | pred.append(temp) 64 | 65 | CA3/=len(image2) 66 | CA5/=len(image2) 67 | pred[4]=[str(CA3),str(CA5)] 68 | 69 | print('CA3: ',CA3,'\nCA5: ',CA5) 70 | 71 | f=open(save_name,'w') 72 | w=csv.writer(f) 73 | w.writerows(pred) 74 | f.close 75 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/TYY_callbacks.py: -------------------------------------------------------------------------------- 1 | import keras 2 | from sklearn.metrics import roc_auc_score 3 | import sys 4 | import matplotlib.pyplot as plt 5 | from keras.models import Model 6 | import numpy as np 7 | from keras import backend as K 8 | 9 | 10 | class DecayLearningRate(keras.callbacks.Callback): 11 | def __init__(self, startEpoch): 12 | self.startEpoch = startEpoch 13 | 14 | def on_train_begin(self, logs={}): 15 | return 16 | def on_train_end(self, logs={}): 17 | return 18 | 19 | def on_epoch_begin(self, epoch, logs={}): 20 | if epoch in self.startEpoch: 21 | if epoch == 0: 22 | ratio = 1 23 | else: 24 | ratio = 0.1 25 | LR = K.get_value(self.model.optimizer.lr) 26 | K.set_value(self.model.optimizer.lr,LR*ratio) 27 | return 28 | 29 | def on_epoch_end(self, epoch, logs={}): 30 | return 31 | 32 | def on_batch_begin(self, batch, logs={}): 33 | return 34 | 35 | def on_batch_end(self, batch, logs={}): 36 | return 37 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/TYY_generators.py: -------------------------------------------------------------------------------- 1 | import keras 2 | import numpy as np 3 | import sys 4 | from scipy import misc 5 | import tensorflow as tf 6 | 7 | 8 | def random_crop(x,dn): 9 | dx = np.random.randint(dn,size=1)[0] 10 | dy = np.random.randint(dn,size=1)[0] 11 | w = x.shape[0] 12 | h = x.shape[1] 13 | out = x[0+dx:w-(dn-dx),0+dy:h-(dn-dy),:] 14 | out = misc.imresize(out, (w,h), interp='nearest') 15 | return out 16 | 17 | def augment_data(images): 18 | for i in range(0,images.shape[0]): 19 | 20 | if np.random.random() > 0.5: 21 | images[i] = images[i][:,::-1] 22 | """ 23 | if np.random.random() > 0.5: 24 | images[i] = random_crop(images[i],4) 25 | """ 26 | if np.random.random() > 0.75: 27 | images[i] = tf.contrib.keras.preprocessing.image.random_rotation(images[i], 20, row_axis=0, col_axis=1, channel_axis=2) 28 | if np.random.random() > 0.75: 29 | images[i] = tf.contrib.keras.preprocessing.image.random_shear(images[i], 0.2, row_axis=0, col_axis=1, channel_axis=2) 30 | if np.random.random() > 0.75: 31 | images[i] = tf.contrib.keras.preprocessing.image.random_shift(images[i], 0.2, 0.2, row_axis=0, col_axis=1, channel_axis=2) 32 | if np.random.random() > 0.75: 33 | images[i] = tf.contrib.keras.preprocessing.image.random_zoom(images[i], [0.8,1.2], row_axis=0, col_axis=1, channel_axis=2) 34 | 35 | return images 36 | 37 | 38 | def data_generator_reg(X,Y,batch_size): 39 | 40 | while True: 41 | idxs = np.random.permutation(len(X)) 42 | X = X[idxs] 43 | Y = Y[idxs] 44 | p,q = [],[] 45 | for i in range(len(X)): 46 | p.append(X[i]) 47 | q.append(Y[i]) 48 | if len(p) == batch_size: 49 | yield augment_data(np.array(p)),np.array(q) 50 | p,q = [],[] 51 | if p: 52 | yield augment_data(np.array(p)),np.array(q) 53 | p,q = [],[] 54 | 55 | def data_generator_dex(X,Y,batch_size): 56 | 57 | Y1 = Y[0] 58 | Y2 = Y[1] 59 | 60 | while True: 61 | idxs = np.random.permutation(len(X)) 62 | X = X[idxs] 63 | Y1 = Y1[idxs] 64 | Y2 = Y2[idxs] 65 | p,q1,q2 = [],[],[] 66 | for i in range(len(X)): 67 | p.append(X[i]) 68 | q1.append(Y1[i]) 69 | q2.append(Y2[i]) 70 | if len(p) == batch_size: 71 | yield augment_data(np.array(p)),[np.array(q1),np.array(q2)] 72 | p,q1,q2 = [],[],[] 73 | if p: 74 | yield augment_data(np.array(p)),[np.array(q1),np.array(q2)] 75 | p,q1,q2 = [],[],[] 76 | 77 | def data_generator_dex_centerloss(X,Y,batch_size): 78 | X1 = X[0] 79 | X2 = X[1] 80 | Y1 = Y[0] 81 | Y2 = Y[1] 82 | Y3 = Y[2] 83 | while True: 84 | idxs = np.random.permutation(len(X1)) 85 | X1 = X1[idxs] #images 86 | X2 = X2[idxs] #labels for center loss 87 | Y1 = Y1[idxs] 88 | Y2 = Y2[idxs] 89 | Y3 = Y3[idxs] 90 | p1,p2,q1,q2,q3 = [],[],[],[],[] 91 | for i in range(len(X1)): 92 | p1.append(X1[i]) 93 | p2.append(X2[i]) 94 | q1.append(Y1[i]) 95 | q2.append(Y2[i]) 96 | q3.append(Y3[i]) 97 | if len(p1) == batch_size: 98 | yield [augment_data(np.array(p1)),np.array(p2)],[np.array(q1),np.array(q2),np.array(q3)] 99 | p1,p2,q1,q2,q3 = [],[],[],[],[] 100 | if p1: 101 | yield [augment_data(np.array(p1)),np.array(p2)],[np.array(q1),np.array(q2),np.array(q3)] 102 | p1,p2,q1,q2,q3 = [],[],[],[],[] -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/TYY_model.py: -------------------------------------------------------------------------------- 1 | # This code is imported from the following project: https://github.com/asmith26/wide_resnets_keras 2 | 3 | import logging 4 | import sys 5 | import numpy as np 6 | from keras.models import Model 7 | from keras.layers import Input, Activation, add, Dense, Flatten, Dropout, Multiply, Embedding, Lambda, Add, Concatenate, Activation 8 | from keras.layers.convolutional import Conv2D, AveragePooling2D, MaxPooling2D 9 | from keras.layers.normalization import BatchNormalization 10 | from keras.regularizers import l2 11 | from keras import backend as K 12 | from keras.optimizers import SGD,Adam 13 | from keras.applications.mobilenet import MobileNet 14 | from densenet import * 15 | from keras.utils import plot_model 16 | 17 | sys.setrecursionlimit(2 ** 20) 18 | np.random.seed(2 ** 10) 19 | 20 | 21 | class TYY_MobileNet_reg: 22 | def __init__(self, image_size, alpha): 23 | 24 | 25 | if K.image_dim_ordering() == "th": 26 | logging.debug("image_dim_ordering = 'th'") 27 | self._channel_axis = 1 28 | self._input_shape = (3, image_size, image_size) 29 | else: 30 | logging.debug("image_dim_ordering = 'tf'") 31 | self._channel_axis = -1 32 | self._input_shape = (image_size, image_size, 3) 33 | self.alpha = alpha 34 | 35 | # def create_model(self): 36 | def __call__(self): 37 | logging.debug("Creating model...") 38 | 39 | inputs = Input(shape=self._input_shape) 40 | model_mobilenet = MobileNet(input_shape=self._input_shape, alpha=self.alpha, depth_multiplier=1, dropout=1e-3, include_top=False, weights=None, input_tensor=None, pooling=None) 41 | x = model_mobilenet(inputs) 42 | #flatten = Flatten()(x) 43 | 44 | feat_a = Conv2D(20,(1,1),activation='relu')(x) 45 | feat_a = Flatten()(feat_a) 46 | feat_a = Dropout(0.2)(feat_a) 47 | feat_a = Dense(32,activation='relu',name='feat_a')(feat_a) 48 | 49 | pred_a = Dense(1,name='pred_a')(feat_a) 50 | model = Model(inputs=inputs, outputs=[pred_a]) 51 | 52 | 53 | return model 54 | 55 | 56 | class TYY_DenseNet_reg: 57 | def __init__(self, image_size, depth): 58 | 59 | if K.image_dim_ordering() == "th": 60 | logging.debug("image_dim_ordering = 'th'") 61 | self._channel_axis = 1 62 | self._input_shape = (3, image_size, image_size) 63 | else: 64 | logging.debug("image_dim_ordering = 'tf'") 65 | self._channel_axis = -1 66 | self._input_shape = (image_size, image_size, 3) 67 | self.depth = depth 68 | 69 | # def create_model(self): 70 | def __call__(self): 71 | logging.debug("Creating model...") 72 | 73 | inputs = Input(shape=self._input_shape) 74 | model_densenet = DenseNet(input_shape=self._input_shape, depth=self.depth, include_top=False, weights=None, input_tensor=None) 75 | flatten = model_densenet(inputs) 76 | 77 | feat_a = Dense(128,activation='relu')(flatten) 78 | feat_a = Dropout(0.2)(feat_a) 79 | feat_a = Dense(32,activation='relu',name='feat_a')(feat_a) 80 | 81 | pred_a = Dense(1,name='pred_a')(feat_a) 82 | model = Model(inputs=inputs, outputs=[pred_a]) 83 | 84 | return model 85 | 86 | 87 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/TYY_train_others.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import logging 3 | import argparse 4 | import os 5 | from keras.callbacks import ModelCheckpoint 6 | from keras.optimizers import Adam 7 | from TYY_model import TYY_MobileNet_reg, TYY_DenseNet_reg 8 | from TYY_utils import mk_dir, load_data_npz 9 | import sys 10 | import numpy as np 11 | from keras.preprocessing.image import ImageDataGenerator 12 | from keras.applications.mobilenet import MobileNet 13 | import TYY_callbacks 14 | from keras.preprocessing.image import ImageDataGenerator 15 | '''from mixup_generator import MixupGenerator''' 16 | '''from random_eraser import get_random_eraser''' 17 | from TYY_generators import * 18 | from keras.utils import plot_model 19 | from moviepy.editor import * 20 | 21 | logging.basicConfig(level=logging.DEBUG) 22 | 23 | 24 | 25 | def get_args(): 26 | parser = argparse.ArgumentParser(description="This script trains the CNN model for age and gender estimation.", 27 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) 28 | parser.add_argument("--input1", "-i1", type=str, required=True, 29 | help="path to input database npz file") 30 | parser.add_argument("--input2", "-i2", type=str, required=True, 31 | help="path to input database npz file") 32 | parser.add_argument("--db", type=str, required=True, 33 | help="database name") 34 | parser.add_argument("--netType", type=int, required=True, 35 | help="network type") 36 | parser.add_argument("--batch_size", type=int, default=128, 37 | help="batch size") 38 | parser.add_argument("--nb_epochs", type=int, default=90, 39 | help="number of epochs") 40 | 41 | args = parser.parse_args() 42 | return args 43 | 44 | 45 | 46 | def main(): 47 | args = get_args() 48 | input_path1 = args.input1 49 | input_path2 = args.input2 50 | db_name = args.db 51 | batch_size = args.batch_size 52 | nb_epochs = args.nb_epochs 53 | netType = args.netType 54 | 55 | logging.debug("Loading training data...") 56 | image1, age1, image_size = load_data_npz(input_path1) 57 | logging.debug("Loading testing data...") 58 | image2, age2, image_size = load_data_npz(input_path2) 59 | 60 | 61 | start_decay_epoch = [30,60] 62 | 63 | optMethod = Adam() 64 | 65 | if netType == 1: 66 | model_type = 'MobileNet' 67 | alpha = 0.25 68 | model = TYY_MobileNet_reg(image_size,alpha)() 69 | save_name = 'mobilenet_reg_%s_%d' % (alpha, image_size) 70 | model.compile(optimizer=optMethod, loss=["mae"], metrics={'pred_a':'mae'}) 71 | 72 | elif netType == 2: 73 | model_type = 'MobileNet' 74 | alpha = 0.5 75 | model = TYY_MobileNet_reg(image_size,alpha)() 76 | save_name = 'mobilenet_reg_%s_%d' % (alpha, image_size) 77 | model.compile(optimizer=optMethod, loss=["mae"], metrics={'pred_a':'mae'}) 78 | 79 | elif netType == 3: 80 | model_type = 'DenseNet' 81 | N_densenet = 3 82 | depth_densenet = 3*N_densenet+4 83 | model = TYY_DenseNet_reg(image_size,depth_densenet)() 84 | save_name = 'densenet_reg_%d_%d' % (depth_densenet, image_size) 85 | model.compile(optimizer=optMethod, loss=["mae"], metrics={'pred_a':'mae'}) 86 | 87 | elif netType == 4: 88 | model_type = 'DenseNet' 89 | N_densenet = 5 90 | depth_densenet = 3*N_densenet+4 91 | model = TYY_DenseNet_reg(image_size,depth_densenet)() 92 | save_name = 'densenet_reg_%d_%d' % (depth_densenet, image_size) 93 | model.compile(optimizer=optMethod, loss=["mae"], metrics={'pred_a':'mae'}) 94 | 95 | 96 | 97 | if db_name == "meagaage": 98 | weight_file = "../pre-trained/wiki/"+save_name+"/"+save_name+".h5" 99 | model.load_weights(weight_file) 100 | 101 | 102 | logging.debug("Model summary...") 103 | model.count_params() 104 | model.summary() 105 | 106 | logging.debug("Saving model...") 107 | 108 | mk_dir(db_name+"_models") 109 | mk_dir(db_name+"_models/"+model_type+"/") 110 | mk_dir(db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)) 111 | mk_dir(db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)+save_name) 112 | mk_dir(db_name+"_checkpoints") 113 | mk_dir(db_name+"_checkpoints/"+model_type) 114 | mk_dir(db_name+"_checkpoints/"+model_type+"/batch_size_%d/"%(batch_size)) 115 | plot_model(model, to_file=db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)+save_name+"/"+save_name+".png") 116 | 117 | with open(os.path.join(db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)+save_name, save_name+'.json'), "w") as f: 118 | f.write(model.to_json()) 119 | 120 | decaylearningrate = TYY_callbacks.DecayLearningRate(start_decay_epoch) 121 | 122 | callbacks = [ModelCheckpoint(db_name+"_checkpoints/"+model_type+"/batch_size_%d/"%(batch_size)+"weights.{epoch:02d}-{val_loss:.2f}.hdf5", 123 | monitor="val_loss", 124 | verbose=1, 125 | save_best_only=True, 126 | mode="auto"), decaylearningrate 127 | ] 128 | 129 | logging.debug("Running training...") 130 | 131 | 132 | data_num = len(image1)+len(image2) 133 | indexes1 = np.arange(len(image1)) 134 | indexes2 = np.arange(len(image2)) 135 | np.random.shuffle(indexes1) 136 | np.random.shuffle(indexes2) 137 | x_train = image1[indexes1] 138 | x_test = image2[indexes2] 139 | y_train_a = age1[indexes1] 140 | y_test_a = age2[indexes2] 141 | train_num = len(image1) 142 | 143 | 144 | hist = model.fit_generator(generator=data_generator_reg(X=x_train, Y=y_train_a, batch_size=batch_size), 145 | steps_per_epoch=train_num // batch_size, 146 | validation_data=(x_test, [y_test_a]), 147 | epochs=nb_epochs, verbose=1, 148 | callbacks=callbacks) 149 | 150 | logging.debug("Saving weights...") 151 | model.save_weights(os.path.join(db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)+save_name, save_name+'.h5'), overwrite=True) 152 | pd.DataFrame(hist.history).to_hdf(os.path.join(db_name+"_models/"+model_type+"/batch_size_%d/"%(batch_size)+save_name, 'history_'+save_name+'.h5'), "history") 153 | 154 | 155 | if __name__ == '__main__': 156 | main() 157 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/TYY_utils.py: -------------------------------------------------------------------------------- 1 | # modifided from https://github.com/yu4u/age-gender-estimation 2 | 3 | from scipy.io import loadmat 4 | from datetime import datetime 5 | import os 6 | import numpy as np 7 | 8 | def calc_age(taken, dob): 9 | birth = datetime.fromordinal(max(int(dob) - 366, 1)) 10 | 11 | # assume the photo was taken in the middle of the year 12 | if birth.month < 7: 13 | return taken - birth.year 14 | else: 15 | return taken - birth.year - 1 16 | 17 | 18 | def get_meta(mat_path, db): 19 | meta = loadmat(mat_path) 20 | full_path = meta[db][0, 0]["full_path"][0] 21 | dob = meta[db][0, 0]["dob"][0] # Matlab serial date number 22 | gender = meta[db][0, 0]["gender"][0] 23 | photo_taken = meta[db][0, 0]["photo_taken"][0] # year 24 | face_score = meta[db][0, 0]["face_score"][0] 25 | second_face_score = meta[db][0, 0]["second_face_score"][0] 26 | age = [calc_age(photo_taken[i], dob[i]) for i in range(len(dob))] 27 | 28 | return full_path, dob, gender, photo_taken, face_score, second_face_score, age 29 | 30 | 31 | def load_data(mat_path): 32 | d = loadmat(mat_path) 33 | 34 | return d["image"], d["gender"][0], d["age"][0], d["db"][0], d["img_size"][0, 0], d["min_score"][0, 0] 35 | 36 | ''' 37 | def load_MORPH_data_npz(npz_path): 38 | d = np.load(npz_path) 39 | 40 | return d["image"], d["gender"], d["age"], d["img_size"] 41 | ''' 42 | def load_data_npz(npz_path): 43 | d = np.load(npz_path) 44 | 45 | return d["image"], d["age"], d["img_size"] 46 | 47 | def mk_dir(dir): 48 | try: 49 | os.mkdir( dir ) 50 | except OSError: 51 | pass 52 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/subpixel.py: -------------------------------------------------------------------------------- 1 | #https://github.com/titu1994/DenseNet 2 | from __future__ import absolute_import 3 | 4 | from keras import backend as K 5 | from keras.engine import Layer 6 | from keras.utils.generic_utils import get_custom_objects 7 | from keras.utils.conv_utils import normalize_data_format 8 | 9 | if K.backend() == 'theano': 10 | import theano_backend as K_BACKEND 11 | else: 12 | import tensorflow_backend as K_BACKEND 13 | 14 | class SubPixelUpscaling(Layer): 15 | """ Sub-pixel convolutional upscaling layer based on the paper "Real-Time Single Image 16 | and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network" 17 | (https://arxiv.org/abs/1609.05158). 18 | This layer requires a Convolution2D prior to it, having output filters computed according to 19 | the formula : 20 | filters = k * (scale_factor * scale_factor) 21 | where k = a user defined number of filters (generally larger than 32) 22 | scale_factor = the upscaling factor (generally 2) 23 | This layer performs the depth to space operation on the convolution filters, and returns a 24 | tensor with the size as defined below. 25 | # Example : 26 | ```python 27 | # A standard subpixel upscaling block 28 | x = Convolution2D(256, 3, 3, padding='same', activation='relu')(...) 29 | u = SubPixelUpscaling(scale_factor=2)(x) 30 | [Optional] 31 | x = Convolution2D(256, 3, 3, padding='same', activation='relu')(u) 32 | ``` 33 | In practice, it is useful to have a second convolution layer after the 34 | SubPixelUpscaling layer to speed up the learning process. 35 | However, if you are stacking multiple SubPixelUpscaling blocks, it may increase 36 | the number of parameters greatly, so the Convolution layer after SubPixelUpscaling 37 | layer can be removed. 38 | # Arguments 39 | scale_factor: Upscaling factor. 40 | data_format: Can be None, 'channels_first' or 'channels_last'. 41 | # Input shape 42 | 4D tensor with shape: 43 | `(samples, k * (scale_factor * scale_factor) channels, rows, cols)` if data_format='channels_first' 44 | or 4D tensor with shape: 45 | `(samples, rows, cols, k * (scale_factor * scale_factor) channels)` if data_format='channels_last'. 46 | # Output shape 47 | 4D tensor with shape: 48 | `(samples, k channels, rows * scale_factor, cols * scale_factor))` if data_format='channels_first' 49 | or 4D tensor with shape: 50 | `(samples, rows * scale_factor, cols * scale_factor, k channels)` if data_format='channels_last'. 51 | """ 52 | 53 | def __init__(self, scale_factor=2, data_format=None, **kwargs): 54 | super(SubPixelUpscaling, self).__init__(**kwargs) 55 | 56 | self.scale_factor = scale_factor 57 | self.data_format = normalize_data_format(data_format) 58 | 59 | def build(self, input_shape): 60 | pass 61 | 62 | def call(self, x, mask=None): 63 | y = K_BACKEND.depth_to_space(x, self.scale_factor, self.data_format) 64 | return y 65 | 66 | def compute_output_shape(self, input_shape): 67 | if self.data_format == 'channels_first': 68 | b, k, r, c = input_shape 69 | return (b, k // (self.scale_factor ** 2), r * self.scale_factor, c * self.scale_factor) 70 | else: 71 | b, r, c, k = input_shape 72 | return (b, r * self.scale_factor, c * self.scale_factor, k // (self.scale_factor ** 2)) 73 | 74 | def get_config(self): 75 | config = {'scale_factor': self.scale_factor, 76 | 'data_format': self.data_format} 77 | base_config = super(SubPixelUpscaling, self).get_config() 78 | return dict(list(base_config.items()) + list(config.items())) 79 | 80 | 81 | get_custom_objects().update({'SubPixelUpscaling': SubPixelUpscaling}) 82 | -------------------------------------------------------------------------------- /MobileNet_and_DenseNet/tensorflow_backend.py: -------------------------------------------------------------------------------- 1 | #https://github.com/titu1994/DenseNet 2 | import tensorflow as tf 3 | 4 | from keras.backend import tensorflow_backend as KTF 5 | from keras.backend.common import image_data_format 6 | 7 | py_all = all 8 | 9 | 10 | def _preprocess_conv2d_input(x, data_format): 11 | """Transpose and cast the input before the conv2d. 12 | # Arguments 13 | x: input tensor. 14 | data_format: string, `"channels_last"` or `"channels_first"`. 15 | # Returns 16 | A tensor. 17 | """ 18 | if dtype(x) == 'float64': 19 | x = tf.cast(x, 'float32') 20 | if data_format == 'channels_first': 21 | # TF uses the last dimension as channel dimension, 22 | # instead of the 2nd one. 23 | # TH input shape: (samples, input_depth, rows, cols) 24 | # TF input shape: (samples, rows, cols, input_depth) 25 | x = tf.transpose(x, (0, 2, 3, 1)) 26 | return x 27 | 28 | 29 | def _postprocess_conv2d_output(x, data_format): 30 | """Transpose and cast the output from conv2d if needed. 31 | # Arguments 32 | x: A tensor. 33 | data_format: string, `"channels_last"` or `"channels_first"`. 34 | # Returns 35 | A tensor. 36 | """ 37 | 38 | if data_format == 'channels_first': 39 | x = tf.transpose(x, (0, 3, 1, 2)) 40 | 41 | if floatx() == 'float64': 42 | x = tf.cast(x, 'float64') 43 | return x 44 | 45 | 46 | def depth_to_space(input, scale, data_format=None): 47 | ''' Uses phase shift algorithm to convert channels/depth for spatial resolution ''' 48 | if data_format is None: 49 | data_format = image_data_format() 50 | data_format = data_format.lower() 51 | input = _preprocess_conv2d_input(input, data_format) 52 | out = tf.depth_to_space(input, scale) 53 | out = _postprocess_conv2d_output(out, data_format) 54 | return out 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SSR-Net_megaage-asian 2 | [IJCAI18] SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation 3 | * A real time age estimation model with 0.32MB 4 | * This repository is for *MegaAge-Asian datasets* 5 | * See also https://github.com/shamangary/SSR-Net for more datasets and video demo 6 | 7 | **Last update: 2018/08/06 (Adding MegaAge-Asian dataset.)** 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ## Paper 18 | ### PDF 19 | https://github.com/shamangary/SSR-Net/blob/master/ijcai18_ssrnet_pdfa_2b.pdf 20 | ### Authors 21 | **[Tsun-Yi Yang](http://shamangary.logdown.com/), [Yi-Husan Huang](https://github.com/b02901145), [Yen-Yu Lin](https://www.citi.sinica.edu.tw/pages/yylin/index_zh.html), [Pi-Cheng Hsiu](https://www.citi.sinica.edu.tw/pages/pchsiu/index_en.html), and [Yung-Yu Chuang](https://www.csie.ntu.edu.tw/~cyy/)** 22 | 23 | ## Abstract 24 | This paper presents a novel CNN model called Soft Stagewise Regression Network (SSR-Net) for age estimation from a single image with a compact model size. Inspired by DEX, we address age estimation by performing multi-class classification and then turning classification results into regression by calculating the expected values. SSR-Net takes a coarse-to-fine strategy and performs multi-class classification with multiple stages. Each stage is only responsible for refining the decision of the previous stage. Thus, each stage performs a task with few classes and requires few neurons, greatly reducing the model size. For addressing the quantization issue introduced by grouping ages into classes, SSR-Net assigns a dynamic range to each age class by allowing it to be shifted and scaled according to the input face image. Both the multi-stage strategy and the dynamic range are incorporated into the formulation of soft stagewise regression. A novel network architecture is proposed for carrying out soft stagewise regression. The resultant SSR-Net model is very compact and takes only **0.32 MB**. Despite of its compact size, SSR-Net’s performance approaches those of the state-of-the-art methods whose model sizes are more than 1500x larger. 25 | 26 | ## Platform 27 | + Keras 28 | + Tensorflow 29 | + GTX-1080Ti and GTX-1080 30 | + Ubuntu 31 | 32 | ## Codes 33 | **This repository is for MegaAge-Asian datasets.** 34 | There are three different section of this project. 35 | + Data pre-processing 36 | + Training 37 | + Testing 38 | 39 | We will go through the details in the following sections. 40 | 41 | 42 | ### Data pre-processing 43 | + Download MegaAge-Asian dataset from http://mmlab.ie.cuhk.edu.hk/projects/MegaAge/ 44 | + Extract under this folder 45 | + Run the following codes for dataset pre-processing 46 | 47 | or 48 | 49 | + Download from https://drive.google.com/open?id=1CismL8x4gi3sAfTi3qpxedWSStTPsrcp 50 | ``` 51 | python TYY_Megaage_asian_create_db.py 52 | ``` 53 | 54 | ### Training 55 | + For SSR-Net 56 | ``` 57 | bash run_ssrnet_megaage.sh 58 | ``` 59 | + For MobileNet 60 | ``` 61 | bash run_megaage_MobileNet.sh 62 | ``` 63 | + For DenseNet 64 | ``` 65 | bash run_megaage_DenseNet.sh 66 | ``` 67 | 68 | ### Testing 69 | Create predicted results and calculate CA (cumulative accuracy) 70 | + For SSR-Net, MobileNet and DenseNet 71 | ``` 72 | bash run_CA.sh 73 | ``` 74 | -------------------------------------------------------------------------------- /SSRNET/CA.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import sys 3 | import logging 4 | import csv 5 | import os 6 | os.environ['TF_CPP_MIN_LOG_LEVEL']='2' 7 | 8 | from SSRNET_model import SSR_net 9 | from TYY_utils import mk_dir, load_data_npz 10 | 11 | def MAE(a,b): 12 | mae = np.sum(np.absolute(a-b)) 13 | mae/=len(a) 14 | return mae 15 | 16 | ''''''''''''''''''''''''''''''''''''''''''''' 17 | file name 18 | ''''''''''''''''''''''''''''''''''''''''''''' 19 | test_file = sys.argv[1] 20 | netType1 = int(sys.argv[2]) 21 | netType2 = int(sys.argv[3]) 22 | stage_num = [3,3,3] 23 | 24 | lambda_local = 0.25*(netType1%5) 25 | lambda_d = 0.25*(netType2%5) 26 | 27 | 28 | logging.debug("Loading testing data...") 29 | image2, age2, image_size = load_data_npz(test_file) 30 | 31 | mk_dir('Results_csv') 32 | 33 | model_file = 'megaage_models/batch_size_50/ssrnet_%d_%d_%d_%d_%s_%s/ssrnet_%d_%d_%d_%d_%s_%s.h5' % (stage_num[0],stage_num[1],stage_num[2], image_size, lambda_local, lambda_d, stage_num[0],stage_num[1],stage_num[2], image_size, lambda_local, lambda_d) 34 | save_name = 'Results_csv/ssrnet_%d_%d_%d_%d_%s_%s_age.csv' % (stage_num[0],stage_num[1],stage_num[2], image_size, lambda_local, lambda_d) 35 | 36 | ''''''''''''''''''''''''''''''''''''''''''''' 37 | load data 38 | ''''''''''''''''''''''''''''''''''''''''''''' 39 | model = SSR_net(image_size,stage_num, lambda_local, lambda_d)() 40 | 41 | logging.debug("Loading model file...") 42 | model.load_weights(model_file) 43 | 44 | age_p=model.predict(image2) 45 | 46 | ''''''''''''''''''''''''''''''''''''''''''''' 47 | prediction 48 | ''''''''''''''''''''''''''''''''''''''''''''' 49 | age_p2=age_p 50 | 51 | pred=[['MAE'],[str(MAE(age2[age2>=-1],age_p2[age2>=-1]))],['CA3','CA5'],['0','0'],['ID','age','age_p','error']] 52 | CA3=0 53 | CA5=0 54 | for i in range(0,len(image2)): 55 | error=np.absolute(age2[i]-age_p2[i]) 56 | if age2[i]>=-1: 57 | if error<=3: 58 | CA3+=1 59 | if error<=5: 60 | CA5+=1 61 | temp = [str(i), str(age2[i]), str(age_p2[i]), str(error)] 62 | pred.append(temp) 63 | 64 | CA3/=len(age2[age2>=-1]) 65 | CA5/=len(age2[age2>=-1]) 66 | pred[3]=[str(CA3),str(CA5)] 67 | 68 | print('CA3: ',CA3,'\nCA5: ',CA5) 69 | 70 | f=open(save_name,'w') 71 | w=csv.writer(f) 72 | w.writerows(pred) 73 | f.close 74 | -------------------------------------------------------------------------------- /SSRNET/SSRNET_model.py: -------------------------------------------------------------------------------- 1 | # This code is imported from the following project: https://github.com/asmith26/wide_resnets_keras 2 | 3 | import logging 4 | import sys 5 | import numpy as np 6 | from keras.models import Model 7 | from keras.layers import Input, Activation, add, Dense, Flatten, Dropout, Multiply, Embedding, Lambda, Add, Concatenate, Activation 8 | from keras.layers.convolutional import Conv2D, AveragePooling2D, MaxPooling2D 9 | from keras.layers.normalization import BatchNormalization 10 | from keras.regularizers import l2 11 | from keras import backend as K 12 | from keras.optimizers import SGD,Adam 13 | from keras.applications.mobilenet import MobileNet 14 | from densenet import * 15 | from keras.utils import plot_model 16 | 17 | sys.setrecursionlimit(2 ** 20) 18 | np.random.seed(2 ** 10) 19 | 20 | 21 | class SSR_net: 22 | def __init__(self, image_size,stage_num,lambda_local,lambda_d): 23 | 24 | if K.image_dim_ordering() == "th": 25 | logging.debug("image_dim_ordering = 'th'") 26 | self._channel_axis = 1 27 | self._input_shape = (3, image_size, image_size) 28 | else: 29 | logging.debug("image_dim_ordering = 'tf'") 30 | self._channel_axis = -1 31 | self._input_shape = (image_size, image_size, 3) 32 | 33 | 34 | self.stage_num = stage_num 35 | self.lambda_local = lambda_local 36 | self.lambda_d = lambda_d 37 | 38 | # def create_model(self): 39 | def __call__(self): 40 | logging.debug("Creating model...") 41 | 42 | 43 | inputs = Input(shape=self._input_shape) 44 | 45 | #------------------------------------------------------------------------------------------------------------------------- 46 | x = Conv2D(32,(3,3))(inputs) 47 | x = BatchNormalization(axis=self._channel_axis)(x) 48 | x = Activation('relu')(x) 49 | x_layer1 = AveragePooling2D(2,2)(x) 50 | x = Conv2D(32,(3,3))(x_layer1) 51 | x = BatchNormalization(axis=self._channel_axis)(x) 52 | x = Activation('relu')(x) 53 | x_layer2 = AveragePooling2D(2,2)(x) 54 | x = Conv2D(32,(3,3))(x_layer2) 55 | x = BatchNormalization(axis=self._channel_axis)(x) 56 | x = Activation('relu')(x) 57 | x_layer3 = AveragePooling2D(2,2)(x) 58 | x = Conv2D(32,(3,3))(x_layer3) 59 | x = BatchNormalization(axis=self._channel_axis)(x) 60 | x = Activation('relu')(x) 61 | #------------------------------------------------------------------------------------------------------------------------- 62 | s = Conv2D(16,(3,3))(inputs) 63 | s = BatchNormalization(axis=self._channel_axis)(s) 64 | s = Activation('tanh')(s) 65 | s_layer1 = MaxPooling2D(2,2)(s) 66 | s = Conv2D(16,(3,3))(s_layer1) 67 | s = BatchNormalization(axis=self._channel_axis)(s) 68 | s = Activation('tanh')(s) 69 | s_layer2 = MaxPooling2D(2,2)(s) 70 | s = Conv2D(16,(3,3))(s_layer2) 71 | s = BatchNormalization(axis=self._channel_axis)(s) 72 | s = Activation('tanh')(s) 73 | s_layer3 = MaxPooling2D(2,2)(s) 74 | s = Conv2D(16,(3,3))(s_layer3) 75 | s = BatchNormalization(axis=self._channel_axis)(s) 76 | s = Activation('tanh')(s) 77 | 78 | 79 | #------------------------------------------------------------------------------------------------------------------------- 80 | # Classifier block 81 | s_layer4 = Conv2D(10,(1,1),activation='relu')(s) 82 | s_layer4 = Flatten()(s_layer4) 83 | s_layer4_mix = Dropout(0.2)(s_layer4) 84 | s_layer4_mix = Dense(units=self.stage_num[0], activation="relu")(s_layer4_mix) 85 | 86 | x_layer4 = Conv2D(10,(1,1),activation='relu')(x) 87 | x_layer4 = Flatten()(x_layer4) 88 | x_layer4_mix = Dropout(0.2)(x_layer4) 89 | x_layer4_mix = Dense(units=self.stage_num[0], activation="relu")(x_layer4_mix) 90 | 91 | feat_a_s1_pre = Multiply()([s_layer4,x_layer4]) 92 | delta_s1 = Dense(1,activation='tanh',name='delta_s1')(feat_a_s1_pre) 93 | 94 | feat_a_s1 = Multiply()([s_layer4_mix,x_layer4_mix]) 95 | feat_a_s1 = Dense(2*self.stage_num[0],activation='relu')(feat_a_s1) 96 | pred_a_s1 = Dense(units=self.stage_num[0], activation="relu",name='pred_age_stage1')(feat_a_s1) 97 | #feat_local_s1 = Lambda(lambda x: x/10)(feat_a_s1) 98 | #feat_a_s1_local = Dropout(0.2)(pred_a_s1) 99 | local_s1 = Dense(units=self.stage_num[0], activation='tanh', name='local_delta_stage1')(feat_a_s1) 100 | #------------------------------------------------------------------------------------------------------------------------- 101 | s_layer2 = Conv2D(10,(1,1),activation='relu')(s_layer2) 102 | s_layer2 = MaxPooling2D(4,4)(s_layer2) 103 | s_layer2 = Flatten()(s_layer2) 104 | s_layer2_mix = Dropout(0.2)(s_layer2) 105 | s_layer2_mix = Dense(self.stage_num[1],activation='relu')(s_layer2_mix) 106 | 107 | x_layer2 = Conv2D(10,(1,1),activation='relu')(x_layer2) 108 | x_layer2 = AveragePooling2D(4,4)(x_layer2) 109 | x_layer2 = Flatten()(x_layer2) 110 | x_layer2_mix = Dropout(0.2)(x_layer2) 111 | x_layer2_mix = Dense(self.stage_num[1],activation='relu')(x_layer2_mix) 112 | 113 | feat_a_s2_pre = Multiply()([s_layer2,x_layer2]) 114 | delta_s2 = Dense(1,activation='tanh',name='delta_s2')(feat_a_s2_pre) 115 | 116 | feat_a_s2 = Multiply()([s_layer2_mix,x_layer2_mix]) 117 | feat_a_s2 = Dense(2*self.stage_num[1],activation='relu')(feat_a_s2) 118 | pred_a_s2 = Dense(units=self.stage_num[1], activation="relu",name='pred_age_stage2')(feat_a_s2) 119 | #feat_local_s2 = Lambda(lambda x: x/10)(feat_a_s2) 120 | #feat_a_s2_local = Dropout(0.2)(pred_a_s2) 121 | local_s2 = Dense(units=self.stage_num[1], activation='tanh', name='local_delta_stage2')(feat_a_s2) 122 | #------------------------------------------------------------------------------------------------------------------------- 123 | s_layer1 = Conv2D(10,(1,1),activation='relu')(s_layer1) 124 | s_layer1 = MaxPooling2D(8,8)(s_layer1) 125 | s_layer1 = Flatten()(s_layer1) 126 | s_layer1_mix = Dropout(0.2)(s_layer1) 127 | s_layer1_mix = Dense(self.stage_num[2],activation='relu')(s_layer1_mix) 128 | 129 | x_layer1 = Conv2D(10,(1,1),activation='relu')(x_layer1) 130 | x_layer1 = AveragePooling2D(8,8)(x_layer1) 131 | x_layer1 = Flatten()(x_layer1) 132 | x_layer1_mix = Dropout(0.2)(x_layer1) 133 | x_layer1_mix = Dense(self.stage_num[2],activation='relu')(x_layer1_mix) 134 | 135 | feat_a_s3_pre = Multiply()([s_layer1,x_layer1]) 136 | delta_s3 = Dense(1,activation='tanh',name='delta_s3')(feat_a_s3_pre) 137 | 138 | feat_a_s3 = Multiply()([s_layer1_mix,x_layer1_mix]) 139 | feat_a_s3 = Dense(2*self.stage_num[2],activation='relu')(feat_a_s3) 140 | pred_a_s3 = Dense(units=self.stage_num[2], activation="relu",name='pred_age_stage3')(feat_a_s3) 141 | #feat_local_s3 = Lambda(lambda x: x/10)(feat_a_s3) 142 | #feat_a_s3_local = Dropout(0.2)(pred_a_s3) 143 | local_s3 = Dense(units=self.stage_num[2], activation='tanh', name='local_delta_stage3')(feat_a_s3) 144 | #------------------------------------------------------------------------------------------------------------------------- 145 | 146 | def merge_age(x,s1,s2,s3,lambda_local,lambda_d): 147 | a = x[0][:,0]*0 148 | b = x[0][:,0]*0 149 | c = x[0][:,0]*0 150 | A = s1*s2*s3 151 | V = 101 152 | 153 | for i in range(0,s1): 154 | a = a+(i+lambda_local*x[6][:,i])*x[0][:,i] 155 | a = K.expand_dims(a,-1) 156 | a = a/(s1*(1+lambda_d*x[3])) 157 | 158 | for j in range(0,s2): 159 | b = b+(j+lambda_local*x[7][:,j])*x[1][:,j] 160 | b = K.expand_dims(b,-1) 161 | b = b/(s1*(1+lambda_d*x[3]))/(s2*(1+lambda_d*x[4])) 162 | 163 | for k in range(0,s3): 164 | c = c+(k+lambda_local*x[8][:,k])*x[2][:,k] 165 | c = K.expand_dims(c,-1) 166 | c = c/(s1*(1+lambda_d*x[3]))/(s2*(1+lambda_d*x[4]))/(s3*(1+lambda_d*x[5])) 167 | 168 | 169 | age = (a+b+c)*V 170 | return age 171 | 172 | pred_a = Lambda(merge_age,arguments={'s1':self.stage_num[0],'s2':self.stage_num[1],'s3':self.stage_num[2],'lambda_local':self.lambda_local,'lambda_d':self.lambda_d},output_shape=(1,),name='pred_a')([pred_a_s1,pred_a_s2,pred_a_s3,delta_s1,delta_s2,delta_s3, local_s1, local_s2, local_s3]) 173 | 174 | model = Model(inputs=inputs, outputs=pred_a) 175 | return model 176 | 177 | 178 | -------------------------------------------------------------------------------- /SSRNET/SSRNET_train.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import logging 3 | import argparse 4 | import os 5 | os.environ['TF_CPP_MIN_LOG_LEVEL']='2' 6 | import tensorflow as tf 7 | 8 | from keras.callbacks import ModelCheckpoint 9 | from keras.optimizers import Adam 10 | from SSRNET_model import SSR_net 11 | from TYY_utils import mk_dir, load_data_npz 12 | import numpy as np 13 | import TYY_callbacks 14 | from TYY_generators import * 15 | from keras.utils import plot_model 16 | from moviepy.editor import * 17 | logging.basicConfig(level=logging.DEBUG) 18 | 19 | 20 | 21 | 22 | def get_args(): 23 | parser = argparse.ArgumentParser(description="This script trains the CNN model for age and gender estimation.", 24 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) 25 | parser.add_argument("--input1", "-i1", type=str, required=True, 26 | help="path to input1 database npz file") 27 | parser.add_argument("--input2", "-i2", type=str, required=True, 28 | help="path to input2 database npz file") 29 | parser.add_argument("--db", type=str, required=True, 30 | help="database name") 31 | parser.add_argument("--batch_size", type=int, default=128, 32 | help="batch size") 33 | parser.add_argument("--nb_epochs", type=int, default=90, 34 | help="number of epochs") 35 | parser.add_argument("--netType1", type=int, required=True, 36 | help="network type 1") 37 | parser.add_argument("--netType2", type=int, required=True, 38 | help="network type 2") 39 | 40 | args = parser.parse_args() 41 | return args 42 | 43 | 44 | 45 | def main(): 46 | args = get_args() 47 | input_path1 = args.input1 48 | input_path2 = args.input2 49 | db_name = args.db 50 | batch_size = args.batch_size 51 | nb_epochs = args.nb_epochs 52 | netType1 = args.netType1 53 | netType2 = args.netType2 54 | 55 | logging.debug("Loading training data...") 56 | image1, age1, image_size = load_data_npz(input_path1) 57 | logging.debug("Loading testing data...") 58 | image2, age2, image_size = load_data_npz(input_path2) 59 | 60 | 61 | start_decay_epoch = [30,60] 62 | 63 | optMethod = Adam() 64 | 65 | stage_num = [3,3,3] 66 | lambda_local = 0.25*(netType1%5) 67 | lambda_d = 0.25*(netType2%5) 68 | 69 | model = SSR_net(image_size,stage_num, lambda_local, lambda_d)() 70 | save_name = 'ssrnet_%d_%d_%d_%d_%s_%s' % (stage_num[0],stage_num[1],stage_num[2], image_size, lambda_local, lambda_d) 71 | model.compile(optimizer=optMethod, loss=["mae"], metrics={'pred_a':'mae'}) 72 | 73 | if db_name == "megaage": 74 | weight_file = "./pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.h5" 75 | model.load_weights(weight_file) 76 | 77 | logging.debug("Model summary...") 78 | model.count_params() 79 | model.summary() 80 | 81 | logging.debug("Saving model...") 82 | mk_dir(db_name+"_models") 83 | mk_dir(db_name+"_models/batch_size_%d/"%(batch_size)) 84 | mk_dir(db_name+"_models/batch_size_%d/"%(batch_size)+save_name) 85 | mk_dir(db_name+"_checkpoints") 86 | mk_dir(db_name+"_checkpoints/batch_size_%d/"%(batch_size)) 87 | plot_model(model, to_file=db_name+"_models/batch_size_%d/"%(batch_size)+save_name+"/"+save_name+".png") 88 | 89 | with open(os.path.join(db_name+"_models/batch_size_%d/"%(batch_size)+save_name, save_name+'.json'), "w") as f: 90 | f.write(model.to_json()) 91 | 92 | decaylearningrate = TYY_callbacks.DecayLearningRate(start_decay_epoch) 93 | 94 | callbacks = [ModelCheckpoint(db_name+"_checkpoints/batch_size_%d/"%(batch_size)+"weights.{epoch:02d}-{val_loss:.2f}.hdf5", 95 | monitor="val_loss", 96 | verbose=1, 97 | save_best_only=True, 98 | mode="auto"), decaylearningrate 99 | ] 100 | logging.debug("Running training...") 101 | 102 | data_num = len(image1)+len(image2) 103 | indexes1 = np.arange(len(image1)) 104 | indexes2 = np.arange(len(image2)) 105 | np.random.shuffle(indexes1) 106 | np.random.shuffle(indexes2) 107 | x_train = image1[indexes1] 108 | x_test = image2[indexes2] 109 | y_train_a = age1[indexes1] 110 | y_test_a = age2[indexes2] 111 | train_num = len(image1) 112 | 113 | hist = model.fit_generator(generator=data_generator_reg(X=x_train, Y=y_train_a, batch_size=batch_size), 114 | steps_per_epoch=train_num // batch_size, 115 | validation_data=(x_test, [y_test_a]), 116 | epochs=nb_epochs, verbose=1, 117 | callbacks=callbacks) 118 | 119 | logging.debug("Saving weights...") 120 | model.save_weights(os.path.join(db_name+"_models/batch_size_%d/"%(batch_size)+save_name, save_name+'.h5'), overwrite=True) 121 | pd.DataFrame(hist.history).to_hdf(os.path.join(db_name+"_models/batch_size_%d/"%(batch_size)+save_name, 'history_'+save_name+'.h5'), "history") 122 | 123 | 124 | if __name__ == '__main__': 125 | main() 126 | 127 | -------------------------------------------------------------------------------- /SSRNET/TYY_callbacks.py: -------------------------------------------------------------------------------- 1 | import keras 2 | from sklearn.metrics import roc_auc_score 3 | import sys 4 | import matplotlib.pyplot as plt 5 | from keras.models import Model 6 | import numpy as np 7 | from keras import backend as K 8 | 9 | 10 | class DecayLearningRate(keras.callbacks.Callback): 11 | def __init__(self, startEpoch): 12 | self.startEpoch = startEpoch 13 | 14 | def on_train_begin(self, logs={}): 15 | return 16 | def on_train_end(self, logs={}): 17 | return 18 | 19 | def on_epoch_begin(self, epoch, logs={}): 20 | if epoch in self.startEpoch: 21 | if epoch == 0: 22 | ratio = 1 23 | else: 24 | ratio = 0.1 25 | LR = K.get_value(self.model.optimizer.lr) 26 | K.set_value(self.model.optimizer.lr,LR*ratio) 27 | return 28 | 29 | def on_epoch_end(self, epoch, logs={}): 30 | return 31 | 32 | def on_batch_begin(self, batch, logs={}): 33 | return 34 | 35 | def on_batch_end(self, batch, logs={}): 36 | return 37 | -------------------------------------------------------------------------------- /SSRNET/TYY_generators.py: -------------------------------------------------------------------------------- 1 | import keras 2 | import numpy as np 3 | import sys 4 | from scipy import misc 5 | import tensorflow as tf 6 | 7 | 8 | def random_crop(x,dn): 9 | dx = np.random.randint(dn,size=1)[0] 10 | dy = np.random.randint(dn,size=1)[0] 11 | w = x.shape[0] 12 | h = x.shape[1] 13 | out = x[0+dx:w-(dn-dx),0+dy:h-(dn-dy),:] 14 | out = misc.imresize(out, (w,h), interp='nearest') 15 | return out 16 | 17 | def augment_data(images): 18 | for i in range(0,images.shape[0]): 19 | 20 | if np.random.random() > 0.5: 21 | images[i] = images[i][:,::-1] 22 | """ 23 | if np.random.random() > 0.5: 24 | images[i] = random_crop(images[i],4) 25 | """ 26 | if np.random.random() > 0.75: 27 | images[i] = tf.contrib.keras.preprocessing.image.random_rotation(images[i], 20, row_axis=0, col_axis=1, channel_axis=2) 28 | if np.random.random() > 0.75: 29 | images[i] = tf.contrib.keras.preprocessing.image.random_shear(images[i], 0.2, row_axis=0, col_axis=1, channel_axis=2) 30 | if np.random.random() > 0.75: 31 | images[i] = tf.contrib.keras.preprocessing.image.random_shift(images[i], 0.2, 0.2, row_axis=0, col_axis=1, channel_axis=2) 32 | if np.random.random() > 0.75: 33 | images[i] = tf.contrib.keras.preprocessing.image.random_zoom(images[i], [0.8,1.2], row_axis=0, col_axis=1, channel_axis=2) 34 | 35 | return images 36 | 37 | 38 | def data_generator_reg(X,Y,batch_size): 39 | 40 | while True: 41 | idxs = np.random.permutation(len(X)) 42 | X = X[idxs] 43 | Y = Y[idxs] 44 | p,q = [],[] 45 | for i in range(len(X)): 46 | p.append(X[i]) 47 | q.append(Y[i]) 48 | if len(p) == batch_size: 49 | yield augment_data(np.array(p)),np.array(q) 50 | p,q = [],[] 51 | if p: 52 | yield augment_data(np.array(p)),np.array(q) 53 | p,q = [],[] 54 | 55 | def data_generator_dex(X,Y,batch_size): 56 | 57 | Y1 = Y[0] 58 | Y2 = Y[1] 59 | 60 | while True: 61 | idxs = np.random.permutation(len(X)) 62 | X = X[idxs] 63 | Y1 = Y1[idxs] 64 | Y2 = Y2[idxs] 65 | p,q1,q2 = [],[],[] 66 | for i in range(len(X)): 67 | p.append(X[i]) 68 | q1.append(Y1[i]) 69 | q2.append(Y2[i]) 70 | if len(p) == batch_size: 71 | yield augment_data(np.array(p)),[np.array(q1),np.array(q2)] 72 | p,q1,q2 = [],[],[] 73 | if p: 74 | yield augment_data(np.array(p)),[np.array(q1),np.array(q2)] 75 | p,q1,q2 = [],[],[] 76 | 77 | def data_generator_dex_centerloss(X,Y,batch_size): 78 | X1 = X[0] 79 | X2 = X[1] 80 | Y1 = Y[0] 81 | Y2 = Y[1] 82 | Y3 = Y[2] 83 | while True: 84 | idxs = np.random.permutation(len(X1)) 85 | X1 = X1[idxs] #images 86 | X2 = X2[idxs] #labels for center loss 87 | Y1 = Y1[idxs] 88 | Y2 = Y2[idxs] 89 | Y3 = Y3[idxs] 90 | p1,p2,q1,q2,q3 = [],[],[],[],[] 91 | for i in range(len(X1)): 92 | p1.append(X1[i]) 93 | p2.append(X2[i]) 94 | q1.append(Y1[i]) 95 | q2.append(Y2[i]) 96 | q3.append(Y3[i]) 97 | if len(p1) == batch_size: 98 | yield [augment_data(np.array(p1)),np.array(p2)],[np.array(q1),np.array(q2),np.array(q3)] 99 | p1,p2,q1,q2,q3 = [],[],[],[],[] 100 | if p1: 101 | yield [augment_data(np.array(p1)),np.array(p2)],[np.array(q1),np.array(q2),np.array(q3)] 102 | p1,p2,q1,q2,q3 = [],[],[],[],[] -------------------------------------------------------------------------------- /SSRNET/TYY_utils.py: -------------------------------------------------------------------------------- 1 | # modifided from https://github.com/yu4u/age-gender-estimation 2 | 3 | from scipy.io import loadmat 4 | from datetime import datetime 5 | import os 6 | import numpy as np 7 | 8 | def calc_age(taken, dob): 9 | birth = datetime.fromordinal(max(int(dob) - 366, 1)) 10 | 11 | # assume the photo was taken in the middle of the year 12 | if birth.month < 7: 13 | return taken - birth.year 14 | else: 15 | return taken - birth.year - 1 16 | 17 | 18 | def get_meta(mat_path, db): 19 | meta = loadmat(mat_path) 20 | full_path = meta[db][0, 0]["full_path"][0] 21 | dob = meta[db][0, 0]["dob"][0] # Matlab serial date number 22 | gender = meta[db][0, 0]["gender"][0] 23 | photo_taken = meta[db][0, 0]["photo_taken"][0] # year 24 | face_score = meta[db][0, 0]["face_score"][0] 25 | second_face_score = meta[db][0, 0]["second_face_score"][0] 26 | age = [calc_age(photo_taken[i], dob[i]) for i in range(len(dob))] 27 | 28 | return full_path, dob, gender, photo_taken, face_score, second_face_score, age 29 | 30 | 31 | def load_data(mat_path): 32 | d = loadmat(mat_path) 33 | 34 | return d["image"], d["gender"][0], d["age"][0], d["db"][0], d["img_size"][0, 0], d["min_score"][0, 0] 35 | 36 | ''' 37 | def load_MORPH_data_npz(npz_path): 38 | d = np.load(npz_path) 39 | 40 | return d["image"], d["gender"], d["age"], d["img_size"] 41 | ''' 42 | def load_data_npz(npz_path): 43 | d = np.load(npz_path) 44 | 45 | return d["image"], d["age"], d["img_size"] 46 | 47 | def mk_dir(dir): 48 | try: 49 | os.mkdir( dir ) 50 | except OSError: 51 | pass 52 | -------------------------------------------------------------------------------- /SSRNET/subpixel.py: -------------------------------------------------------------------------------- 1 | #https://github.com/titu1994/DenseNet 2 | from __future__ import absolute_import 3 | 4 | from keras import backend as K 5 | from keras.engine import Layer 6 | from keras.utils.generic_utils import get_custom_objects 7 | from keras.utils.conv_utils import normalize_data_format 8 | 9 | if K.backend() == 'theano': 10 | import theano_backend as K_BACKEND 11 | else: 12 | import tensorflow_backend as K_BACKEND 13 | 14 | class SubPixelUpscaling(Layer): 15 | """ Sub-pixel convolutional upscaling layer based on the paper "Real-Time Single Image 16 | and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network" 17 | (https://arxiv.org/abs/1609.05158). 18 | This layer requires a Convolution2D prior to it, having output filters computed according to 19 | the formula : 20 | filters = k * (scale_factor * scale_factor) 21 | where k = a user defined number of filters (generally larger than 32) 22 | scale_factor = the upscaling factor (generally 2) 23 | This layer performs the depth to space operation on the convolution filters, and returns a 24 | tensor with the size as defined below. 25 | # Example : 26 | ```python 27 | # A standard subpixel upscaling block 28 | x = Convolution2D(256, 3, 3, padding='same', activation='relu')(...) 29 | u = SubPixelUpscaling(scale_factor=2)(x) 30 | [Optional] 31 | x = Convolution2D(256, 3, 3, padding='same', activation='relu')(u) 32 | ``` 33 | In practice, it is useful to have a second convolution layer after the 34 | SubPixelUpscaling layer to speed up the learning process. 35 | However, if you are stacking multiple SubPixelUpscaling blocks, it may increase 36 | the number of parameters greatly, so the Convolution layer after SubPixelUpscaling 37 | layer can be removed. 38 | # Arguments 39 | scale_factor: Upscaling factor. 40 | data_format: Can be None, 'channels_first' or 'channels_last'. 41 | # Input shape 42 | 4D tensor with shape: 43 | `(samples, k * (scale_factor * scale_factor) channels, rows, cols)` if data_format='channels_first' 44 | or 4D tensor with shape: 45 | `(samples, rows, cols, k * (scale_factor * scale_factor) channels)` if data_format='channels_last'. 46 | # Output shape 47 | 4D tensor with shape: 48 | `(samples, k channels, rows * scale_factor, cols * scale_factor))` if data_format='channels_first' 49 | or 4D tensor with shape: 50 | `(samples, rows * scale_factor, cols * scale_factor, k channels)` if data_format='channels_last'. 51 | """ 52 | 53 | def __init__(self, scale_factor=2, data_format=None, **kwargs): 54 | super(SubPixelUpscaling, self).__init__(**kwargs) 55 | 56 | self.scale_factor = scale_factor 57 | self.data_format = normalize_data_format(data_format) 58 | 59 | def build(self, input_shape): 60 | pass 61 | 62 | def call(self, x, mask=None): 63 | y = K_BACKEND.depth_to_space(x, self.scale_factor, self.data_format) 64 | return y 65 | 66 | def compute_output_shape(self, input_shape): 67 | if self.data_format == 'channels_first': 68 | b, k, r, c = input_shape 69 | return (b, k // (self.scale_factor ** 2), r * self.scale_factor, c * self.scale_factor) 70 | else: 71 | b, r, c, k = input_shape 72 | return (b, r * self.scale_factor, c * self.scale_factor, k // (self.scale_factor ** 2)) 73 | 74 | def get_config(self): 75 | config = {'scale_factor': self.scale_factor, 76 | 'data_format': self.data_format} 77 | base_config = super(SubPixelUpscaling, self).get_config() 78 | return dict(list(base_config.items()) + list(config.items())) 79 | 80 | 81 | get_custom_objects().update({'SubPixelUpscaling': SubPixelUpscaling}) 82 | -------------------------------------------------------------------------------- /SSRNET/tensorflow_backend.py: -------------------------------------------------------------------------------- 1 | #https://github.com/titu1994/DenseNet 2 | import tensorflow as tf 3 | 4 | from keras.backend import tensorflow_backend as KTF 5 | from keras.backend.common import image_data_format 6 | 7 | py_all = all 8 | 9 | 10 | def _preprocess_conv2d_input(x, data_format): 11 | """Transpose and cast the input before the conv2d. 12 | # Arguments 13 | x: input tensor. 14 | data_format: string, `"channels_last"` or `"channels_first"`. 15 | # Returns 16 | A tensor. 17 | """ 18 | if dtype(x) == 'float64': 19 | x = tf.cast(x, 'float32') 20 | if data_format == 'channels_first': 21 | # TF uses the last dimension as channel dimension, 22 | # instead of the 2nd one. 23 | # TH input shape: (samples, input_depth, rows, cols) 24 | # TF input shape: (samples, rows, cols, input_depth) 25 | x = tf.transpose(x, (0, 2, 3, 1)) 26 | return x 27 | 28 | 29 | def _postprocess_conv2d_output(x, data_format): 30 | """Transpose and cast the output from conv2d if needed. 31 | # Arguments 32 | x: A tensor. 33 | data_format: string, `"channels_last"` or `"channels_first"`. 34 | # Returns 35 | A tensor. 36 | """ 37 | 38 | if data_format == 'channels_first': 39 | x = tf.transpose(x, (0, 3, 1, 2)) 40 | 41 | if floatx() == 'float64': 42 | x = tf.cast(x, 'float64') 43 | return x 44 | 45 | 46 | def depth_to_space(input, scale, data_format=None): 47 | ''' Uses phase shift algorithm to convert channels/depth for spatial resolution ''' 48 | if data_format is None: 49 | data_format = image_data_format() 50 | data_format = data_format.lower() 51 | input = _preprocess_conv2d_input(input, data_format) 52 | out = tf.depth_to_space(input, scale) 53 | out = _postprocess_conv2d_output(out, data_format) 54 | return out 55 | -------------------------------------------------------------------------------- /TYY_Megaage_asian_create_db.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | import scipy.io 4 | import argparse 5 | from tqdm import tqdm 6 | from os import listdir 7 | from os.path import isfile, join 8 | import sys 9 | import dlib 10 | from moviepy.editor import * 11 | 12 | 13 | def get_args(): 14 | parser = argparse.ArgumentParser(description="This script cleans-up noisy labels " 15 | "and creates database for training.", 16 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) 17 | parser.add_argument("--output", "-o", type=str, 18 | help="path to output database mat file") 19 | parser.add_argument("--img_size", type=int, default=64, 20 | help="output image size") 21 | 22 | args = parser.parse_args() 23 | return args 24 | 25 | 26 | def main(): 27 | args = get_args() 28 | output_path = './data/megaage_test' 29 | #output_path = './data/megaage_train' 30 | img_size = args.img_size 31 | 32 | mypath = './megaage_asian/test' 33 | #mypath = './megaage_asian/train' 34 | isPlot = False 35 | 36 | age_file = np.loadtxt('./megaage_asian/list/test_age.txt') 37 | #age_file = np.loadtxt('./megaage_asian/list/train_age.txt') 38 | img_name_file = np.genfromtxt('./megaage_asian/list/test_name.txt',dtype='str') 39 | #img_name_file = np.genfromtxt('./megaage_asian/list/train_name.txt',dtype='str') 40 | out_ages = [] 41 | out_imgs = [] 42 | 43 | for i in tqdm(range(len(img_name_file))): 44 | 45 | input_img = cv2.imread(mypath+'/'+img_name_file[i]) 46 | input_img = input_img[20:-20,:,:] 47 | img_h, img_w, _ = np.shape(input_img) 48 | age = int(float(age_file[i])) 49 | if age >= -1: 50 | if isPlot: 51 | img_clip = ImageClip(input_img) 52 | img_clip.show() 53 | key = cv2.waitKey(1000) 54 | 55 | input_img = cv2.resize(input_img,(img_size,img_size)) 56 | #only add to the list when faces is detected 57 | out_imgs.append(input_img) 58 | out_ages.append(int(age)) 59 | 60 | np.savez(output_path,image=np.array(out_imgs), age=np.array(out_ages), img_size=img_size) 61 | 62 | if __name__ == '__main__': 63 | main() 64 | -------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | Create megaage_train.npz and megaage_test.npz by running 2 | 3 | ``` 4 | python TYY_Megaage_asian_create_db.py 5 | ``` 6 | or 7 | 8 | Download from https://drive.google.com/open?id=1CismL8x4gi3sAfTi3qpxedWSStTPsrcp 9 | -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/densenet_reg_19_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/densenet_reg_19_64.h5 -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/densenet_reg_19_64.json: -------------------------------------------------------------------------------- 1 | {"backend": "tensorflow", "class_name": "Model", "config": {"name": "model_1", "input_layers": [["input_1", 0, 0]], "output_layers": [["pred_a", 0, 0]], "layers": [{"name": "input_1", "class_name": "InputLayer", "inbound_nodes": [], "config": {"batch_input_shape": [null, 64, 64, 3], "dtype": "float32", "sparse": false, "name": "input_1"}}, {"name": "densenet", "class_name": "Model", "inbound_nodes": [[["input_1", 0, 0, {}]]], "config": {"name": "densenet", "input_layers": [["input_2", 0, 0]], "output_layers": [["global_average_pooling2d_1", 0, 0]], "layers": [{"name": "input_2", "inbound_nodes": [], "class_name": "InputLayer", "config": {"batch_input_shape": [null, 64, 64, 3], "dtype": "float32", "sparse": false, "name": "input_2"}}, {"name": "conv2d_1", "inbound_nodes": [[["input_2", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_1", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 24, "kernel_constraint": null}}, {"name": "batch_normalization_1", "inbound_nodes": [[["conv2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_1", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_1", "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_1", "activation": "relu", "trainable": true}}, {"name": "conv2d_2", "inbound_nodes": [[["activation_1", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_2", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_1", "inbound_nodes": [[["conv2d_1", 0, 0, {}], ["conv2d_2", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_1", "axis": -1, "trainable": true}}, {"name": "batch_normalization_2", "inbound_nodes": [[["concatenate_1", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_2", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_2", "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_2", "activation": "relu", "trainable": true}}, {"name": "conv2d_3", "inbound_nodes": [[["activation_2", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_3", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_2", "inbound_nodes": [[["concatenate_1", 0, 0, {}], ["conv2d_3", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_2", "axis": -1, "trainable": true}}, {"name": "batch_normalization_3", "inbound_nodes": [[["concatenate_2", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_3", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_3", "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_3", "activation": "relu", "trainable": true}}, {"name": "conv2d_4", "inbound_nodes": [[["activation_3", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_4", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_3", "inbound_nodes": [[["concatenate_2", 0, 0, {}], ["conv2d_4", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_3", "axis": -1, "trainable": true}}, {"name": "batch_normalization_4", "inbound_nodes": [[["concatenate_3", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_4", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_4", "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_4", "activation": "relu", "trainable": true}}, {"name": "conv2d_5", "inbound_nodes": [[["activation_4", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_5", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_4", "inbound_nodes": [[["concatenate_3", 0, 0, {}], ["conv2d_5", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_4", "axis": -1, "trainable": true}}, {"name": "batch_normalization_5", "inbound_nodes": [[["concatenate_4", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_5", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_5", "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_5", "activation": "relu", "trainable": true}}, {"name": "conv2d_6", "inbound_nodes": [[["activation_5", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_6", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_5", "inbound_nodes": [[["concatenate_4", 0, 0, {}], ["conv2d_6", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_5", "axis": -1, "trainable": true}}, {"name": "batch_normalization_6", "inbound_nodes": [[["concatenate_5", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_6", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_6", "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_6", "activation": "relu", "trainable": true}}, {"name": "conv2d_7", "inbound_nodes": [[["activation_6", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [1, 1], "name": "conv2d_7", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 84, "kernel_constraint": null}}, {"name": "average_pooling2d_1", "inbound_nodes": [[["conv2d_7", 0, 0, {}]]], "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_1", "padding": "valid", "strides": [2, 2], "trainable": true, "data_format": "channels_last", "pool_size": [2, 2]}}, {"name": "batch_normalization_7", "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_7", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_7", "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_7", "activation": "relu", "trainable": true}}, {"name": "conv2d_8", "inbound_nodes": [[["activation_7", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_8", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_6", "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}], ["conv2d_8", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_6", "axis": -1, "trainable": true}}, {"name": "batch_normalization_8", "inbound_nodes": [[["concatenate_6", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_8", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_8", "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_8", "activation": "relu", "trainable": true}}, {"name": "conv2d_9", "inbound_nodes": [[["activation_8", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_9", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_7", "inbound_nodes": [[["concatenate_6", 0, 0, {}], ["conv2d_9", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_7", "axis": -1, "trainable": true}}, {"name": "batch_normalization_9", "inbound_nodes": [[["concatenate_7", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_9", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_9", "inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_9", "activation": "relu", "trainable": true}}, {"name": "conv2d_10", "inbound_nodes": [[["activation_9", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_10", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_8", "inbound_nodes": [[["concatenate_7", 0, 0, {}], ["conv2d_10", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_8", "axis": -1, "trainable": true}}, {"name": "batch_normalization_10", "inbound_nodes": [[["concatenate_8", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_10", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_10", "inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_10", "activation": "relu", "trainable": true}}, {"name": "conv2d_11", "inbound_nodes": [[["activation_10", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_11", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_9", "inbound_nodes": [[["concatenate_8", 0, 0, {}], ["conv2d_11", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_9", "axis": -1, "trainable": true}}, {"name": "batch_normalization_11", "inbound_nodes": [[["concatenate_9", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_11", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_11", "inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_11", "activation": "relu", "trainable": true}}, {"name": "conv2d_12", "inbound_nodes": [[["activation_11", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_12", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_10", "inbound_nodes": [[["concatenate_9", 0, 0, {}], ["conv2d_12", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_10", "axis": -1, "trainable": true}}, {"name": "batch_normalization_12", "inbound_nodes": [[["concatenate_10", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_12", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_12", "inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_12", "activation": "relu", "trainable": true}}, {"name": "conv2d_13", "inbound_nodes": [[["activation_12", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [1, 1], "name": "conv2d_13", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 144, "kernel_constraint": null}}, {"name": "average_pooling2d_2", "inbound_nodes": [[["conv2d_13", 0, 0, {}]]], "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_2", "padding": "valid", "strides": [2, 2], "trainable": true, "data_format": "channels_last", "pool_size": [2, 2]}}, {"name": "batch_normalization_13", "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_13", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_13", "inbound_nodes": [[["batch_normalization_13", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_13", "activation": "relu", "trainable": true}}, {"name": "conv2d_14", "inbound_nodes": [[["activation_13", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_14", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_11", "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}], ["conv2d_14", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_11", "axis": -1, "trainable": true}}, {"name": "batch_normalization_14", "inbound_nodes": [[["concatenate_11", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_14", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_14", "inbound_nodes": [[["batch_normalization_14", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_14", "activation": "relu", "trainable": true}}, {"name": "conv2d_15", "inbound_nodes": [[["activation_14", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_15", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_12", "inbound_nodes": [[["concatenate_11", 0, 0, {}], ["conv2d_15", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_12", "axis": -1, "trainable": true}}, {"name": "batch_normalization_15", "inbound_nodes": [[["concatenate_12", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_15", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_15", "inbound_nodes": [[["batch_normalization_15", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_15", "activation": "relu", "trainable": true}}, {"name": "conv2d_16", "inbound_nodes": [[["activation_15", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_16", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_13", "inbound_nodes": [[["concatenate_12", 0, 0, {}], ["conv2d_16", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_13", "axis": -1, "trainable": true}}, {"name": "batch_normalization_16", "inbound_nodes": [[["concatenate_13", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_16", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_16", "inbound_nodes": [[["batch_normalization_16", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_16", "activation": "relu", "trainable": true}}, {"name": "conv2d_17", "inbound_nodes": [[["activation_16", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_17", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_14", "inbound_nodes": [[["concatenate_13", 0, 0, {}], ["conv2d_17", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_14", "axis": -1, "trainable": true}}, {"name": "batch_normalization_17", "inbound_nodes": [[["concatenate_14", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_17", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_17", "inbound_nodes": [[["batch_normalization_17", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_17", "activation": "relu", "trainable": true}}, {"name": "conv2d_18", "inbound_nodes": [[["activation_17", 0, 0, {}]]], "class_name": "Conv2D", "config": {"activation": "linear", "kernel_size": [3, 3], "name": "conv2d_18", "strides": [1, 1], "activity_regularizer": null, "data_format": "channels_last", "bias_constraint": null, "bias_regularizer": null, "kernel_regularizer": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "mode": "fan_in", "scale": 2.0, "seed": null}}, "padding": "same", "bias_initializer": {"class_name": "Zeros", "config": {}}, "trainable": true, "use_bias": false, "dilation_rate": [1, 1], "filters": 12, "kernel_constraint": null}}, {"name": "concatenate_15", "inbound_nodes": [[["concatenate_14", 0, 0, {}], ["conv2d_18", 0, 0, {}]]], "class_name": "Concatenate", "config": {"name": "concatenate_15", "axis": -1, "trainable": true}}, {"name": "batch_normalization_18", "inbound_nodes": [[["concatenate_15", 0, 0, {}]]], "class_name": "BatchNormalization", "config": {"epsilon": 1.1e-05, "gamma_initializer": {"class_name": "Ones", "config": {}}, "axis": -1, "gamma_constraint": null, "beta_regularizer": null, "center": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "name": "batch_normalization_18", "beta_constraint": null, "gamma_regularizer": null, "trainable": true, "momentum": 0.99, "scale": true, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}}}, {"name": "activation_18", "inbound_nodes": [[["batch_normalization_18", 0, 0, {}]]], "class_name": "Activation", "config": {"name": "activation_18", "activation": "relu", "trainable": true}}, {"name": "global_average_pooling2d_1", "inbound_nodes": [[["activation_18", 0, 0, {}]]], "class_name": "GlobalAveragePooling2D", "config": {"name": "global_average_pooling2d_1", "data_format": "channels_last", "trainable": true}}]}}, {"name": "dense_1", "class_name": "Dense", "inbound_nodes": [[["densenet", 1, 0, {}]]], "config": {"bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "activation": "relu", "trainable": true, "bias_regularizer": null, "activity_regularizer": null, "units": 128, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "mode": "fan_avg", "scale": 1.0, "seed": null}}, "bias_constraint": null, "name": "dense_1", "use_bias": true, "kernel_constraint": null}}, {"name": "dropout_1", "class_name": "Dropout", "inbound_nodes": [[["dense_1", 0, 0, {}]]], "config": {"name": "dropout_1", "rate": 0.2, "trainable": true}}, {"name": "feat_a", "class_name": "Dense", "inbound_nodes": [[["dropout_1", 0, 0, {}]]], "config": {"bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "activation": "relu", "trainable": true, "bias_regularizer": null, "activity_regularizer": null, "units": 32, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "mode": "fan_avg", "scale": 1.0, "seed": null}}, "bias_constraint": null, "name": "feat_a", "use_bias": true, "kernel_constraint": null}}, {"name": "pred_a", "class_name": "Dense", "inbound_nodes": [[["feat_a", 0, 0, {}]]], "config": {"bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "activation": "linear", "trainable": true, "bias_regularizer": null, "activity_regularizer": null, "units": 1, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "mode": "fan_avg", "scale": 1.0, "seed": null}}, "bias_constraint": null, "name": "pred_a", "use_bias": true, "kernel_constraint": null}}]}, "keras_version": "2.0.6"} -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/densenet_reg_19_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/densenet_reg_19_64.png -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/history_densenet_reg_19_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/history_densenet_reg_19_64.h5 -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/loss.pdf -------------------------------------------------------------------------------- /megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/DenseNet/batch_size_50/densenet_reg_19_64/performance.pdf -------------------------------------------------------------------------------- /megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/history_mobilenet_reg_0.25_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/history_mobilenet_reg_0.25_64.h5 -------------------------------------------------------------------------------- /megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.h5 -------------------------------------------------------------------------------- /megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/MobileNet/batch_size_50/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.png -------------------------------------------------------------------------------- /megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/history_ssrnet_3_3_3_64_1.0_1.0.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/history_ssrnet_3_3_3_64_1.0_1.0.h5 -------------------------------------------------------------------------------- /megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.h5 -------------------------------------------------------------------------------- /megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.json: -------------------------------------------------------------------------------- 1 | {"class_name": "Model", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 64, 64, 3], "dtype": "float32", "sparse": false, "name": "input_1"}, "inbound_nodes": []}, {"name": "conv2d_5", "class_name": "Conv2D", "config": {"name": "conv2d_5", "trainable": true, "filters": 16, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "conv2d_1", "class_name": "Conv2D", "config": {"name": "conv2d_1", "trainable": true, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "batch_normalization_5", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_5", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_5", 0, 0, {}]]]}, {"name": "batch_normalization_1", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]]}, {"name": "activation_5", "class_name": "Activation", "config": {"name": "activation_5", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]]}, {"name": "activation_1", "class_name": "Activation", "config": {"name": "activation_1", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]]}, {"name": "max_pooling2d_1", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_1", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_5", 0, 0, {}]]]}, {"name": "average_pooling2d_1", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_1", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_1", 0, 0, {}]]]}, {"name": "conv2d_6", "class_name": "Conv2D", "config": {"name": "conv2d_6", "trainable": true, "filters": 16, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_2", "class_name": "Conv2D", "config": {"name": "conv2d_2", "trainable": true, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_6", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_6", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_2", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_2", 0, 0, {}]]]}, {"name": "activation_6", "class_name": "Activation", "config": {"name": "activation_6", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]]}, {"name": "activation_2", "class_name": "Activation", "config": {"name": "activation_2", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]]}, {"name": "max_pooling2d_2", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_2", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_6", 0, 0, {}]]]}, {"name": "average_pooling2d_2", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_2", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_2", 0, 0, {}]]]}, {"name": "conv2d_7", "class_name": "Conv2D", "config": {"name": "conv2d_7", "trainable": true, "filters": 16, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_3", "class_name": "Conv2D", "config": {"name": "conv2d_3", "trainable": true, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_7", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_7", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_3", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_3", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_3", 0, 0, {}]]]}, {"name": "activation_7", "class_name": "Activation", "config": {"name": "activation_7", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]]}, {"name": "activation_3", "class_name": "Activation", "config": {"name": "activation_3", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]]}, {"name": "max_pooling2d_3", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_3", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_7", 0, 0, {}]]]}, {"name": "average_pooling2d_3", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_3", "trainable": true, "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_3", 0, 0, {}]]]}, {"name": "conv2d_8", "class_name": "Conv2D", "config": {"name": "conv2d_8", "trainable": true, "filters": 16, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_3", 0, 0, {}]]]}, {"name": "conv2d_4", "class_name": "Conv2D", "config": {"name": "conv2d_4", "trainable": true, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_3", 0, 0, {}]]]}, {"name": "batch_normalization_8", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_8", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_4", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_4", "trainable": true, "axis": -1, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_4", 0, 0, {}]]]}, {"name": "activation_8", "class_name": "Activation", "config": {"name": "activation_8", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]]}, {"name": "activation_4", "class_name": "Activation", "config": {"name": "activation_4", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]]}, {"name": "conv2d_11", "class_name": "Conv2D", "config": {"name": "conv2d_11", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_12", "class_name": "Conv2D", "config": {"name": "conv2d_12", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_13", "class_name": "Conv2D", "config": {"name": "conv2d_13", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_14", "class_name": "Conv2D", "config": {"name": "conv2d_14", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_9", "class_name": "Conv2D", "config": {"name": "conv2d_9", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_8", 0, 0, {}]]]}, {"name": "conv2d_10", "class_name": "Conv2D", "config": {"name": "conv2d_10", "trainable": true, "filters": 10, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_4", 0, 0, {}]]]}, {"name": "max_pooling2d_4", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_4", "trainable": true, "pool_size": [4, 4], "padding": "valid", "strides": [4, 4], "data_format": "channels_last"}, "inbound_nodes": [[["conv2d_11", 0, 0, {}]]]}, {"name": "average_pooling2d_4", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_4", "trainable": true, "pool_size": [4, 4], "padding": "valid", "strides": [4, 4], "data_format": "channels_last"}, "inbound_nodes": [[["conv2d_12", 0, 0, {}]]]}, {"name": "max_pooling2d_5", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_5", "trainable": true, "pool_size": [8, 8], "padding": "valid", "strides": [8, 8], "data_format": "channels_last"}, "inbound_nodes": [[["conv2d_13", 0, 0, {}]]]}, {"name": "average_pooling2d_5", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_5", "trainable": true, "pool_size": [8, 8], "padding": "valid", "strides": [8, 8], "data_format": "channels_last"}, "inbound_nodes": [[["conv2d_14", 0, 0, {}]]]}, {"name": "flatten_1", "class_name": "Flatten", "config": {"name": "flatten_1", "trainable": true}, "inbound_nodes": [[["conv2d_9", 0, 0, {}]]]}, {"name": "flatten_2", "class_name": "Flatten", "config": {"name": "flatten_2", "trainable": true}, "inbound_nodes": [[["conv2d_10", 0, 0, {}]]]}, {"name": "flatten_3", "class_name": "Flatten", "config": {"name": "flatten_3", "trainable": true}, "inbound_nodes": [[["max_pooling2d_4", 0, 0, {}]]]}, {"name": "flatten_4", "class_name": "Flatten", "config": {"name": "flatten_4", "trainable": true}, "inbound_nodes": [[["average_pooling2d_4", 0, 0, {}]]]}, {"name": "flatten_5", "class_name": "Flatten", "config": {"name": "flatten_5", "trainable": true}, "inbound_nodes": [[["max_pooling2d_5", 0, 0, {}]]]}, {"name": "flatten_6", "class_name": "Flatten", "config": {"name": "flatten_6", "trainable": true}, "inbound_nodes": [[["average_pooling2d_5", 0, 0, {}]]]}, {"name": "dropout_1", "class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_1", 0, 0, {}]]]}, {"name": "dropout_2", "class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_2", 0, 0, {}]]]}, {"name": "dropout_3", "class_name": "Dropout", "config": {"name": "dropout_3", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_3", 0, 0, {}]]]}, {"name": "dropout_4", "class_name": "Dropout", "config": {"name": "dropout_4", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_4", 0, 0, {}]]]}, {"name": "dropout_5", "class_name": "Dropout", "config": {"name": "dropout_5", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_5", 0, 0, {}]]]}, {"name": "dropout_6", "class_name": "Dropout", "config": {"name": "dropout_6", "trainable": true, "rate": 0.2, "noise_shape": null, "seed": null}, "inbound_nodes": [[["flatten_6", 0, 0, {}]]]}, {"name": "dense_1", "class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_1", 0, 0, {}]]]}, {"name": "dense_2", "class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_2", 0, 0, {}]]]}, {"name": "dense_4", "class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_3", 0, 0, {}]]]}, {"name": "dense_5", "class_name": "Dense", "config": {"name": "dense_5", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_4", 0, 0, {}]]]}, {"name": "dense_7", "class_name": "Dense", "config": {"name": "dense_7", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_5", 0, 0, {}]]]}, {"name": "dense_8", "class_name": "Dense", "config": {"name": "dense_8", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_6", 0, 0, {}]]]}, {"name": "multiply_2", "class_name": "Multiply", "config": {"name": "multiply_2", "trainable": true}, "inbound_nodes": [[["dense_1", 0, 0, {}], ["dense_2", 0, 0, {}]]]}, {"name": "multiply_4", "class_name": "Multiply", "config": {"name": "multiply_4", "trainable": true}, "inbound_nodes": [[["dense_4", 0, 0, {}], ["dense_5", 0, 0, {}]]]}, {"name": "multiply_6", "class_name": "Multiply", "config": {"name": "multiply_6", "trainable": true}, "inbound_nodes": [[["dense_7", 0, 0, {}], ["dense_8", 0, 0, {}]]]}, {"name": "dense_3", "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "units": 6, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_2", 0, 0, {}]]]}, {"name": "dense_6", "class_name": "Dense", "config": {"name": "dense_6", "trainable": true, "units": 6, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_4", 0, 0, {}]]]}, {"name": "dense_9", "class_name": "Dense", "config": {"name": "dense_9", "trainable": true, "units": 6, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_6", 0, 0, {}]]]}, {"name": "multiply_1", "class_name": "Multiply", "config": {"name": "multiply_1", "trainable": true}, "inbound_nodes": [[["flatten_1", 0, 0, {}], ["flatten_2", 0, 0, {}]]]}, {"name": "multiply_3", "class_name": "Multiply", "config": {"name": "multiply_3", "trainable": true}, "inbound_nodes": [[["flatten_3", 0, 0, {}], ["flatten_4", 0, 0, {}]]]}, {"name": "multiply_5", "class_name": "Multiply", "config": {"name": "multiply_5", "trainable": true}, "inbound_nodes": [[["flatten_5", 0, 0, {}], ["flatten_6", 0, 0, {}]]]}, {"name": "pred_age_stage1", "class_name": "Dense", "config": {"name": "pred_age_stage1", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "pred_age_stage2", "class_name": "Dense", "config": {"name": "pred_age_stage2", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_6", 0, 0, {}]]]}, {"name": "pred_age_stage3", "class_name": "Dense", "config": {"name": "pred_age_stage3", "trainable": true, "units": 3, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_9", 0, 0, {}]]]}, {"name": "delta_s1", "class_name": "Dense", "config": {"name": "delta_s1", "trainable": true, "units": 1, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_1", 0, 0, {}]]]}, {"name": "delta_s2", "class_name": "Dense", "config": {"name": "delta_s2", "trainable": true, "units": 1, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_3", 0, 0, {}]]]}, {"name": "delta_s3", "class_name": "Dense", "config": {"name": "delta_s3", "trainable": true, "units": 1, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_5", 0, 0, {}]]]}, {"name": "local_delta_stage1", "class_name": "Dense", "config": {"name": "local_delta_stage1", "trainable": true, "units": 3, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "local_delta_stage2", "class_name": "Dense", "config": {"name": "local_delta_stage2", "trainable": true, "units": 3, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_6", 0, 0, {}]]]}, {"name": "local_delta_stage3", "class_name": "Dense", "config": {"name": "local_delta_stage3", "trainable": true, "units": 3, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dense_9", 0, 0, {}]]]}, {"name": "pred_a", "class_name": "Lambda", "config": {"name": "pred_a", "trainable": true, "function": ["4wYAAAAAAAAADwAAAAcAAABTAAAAc+4BAAB8AGQBGQBkAGQAhQJkAWYCGQBkARQAfQZ8AGQBGQBk\nAGQAhQJkAWYCGQBkARQAfQd8AGQBGQBkAGQAhQJkAWYCGQBkARQAfQh8AXwCFAB8AxQAfQlkAn0K\neEZ0AGQBfAGDAkQAXTh9C3wGfAt8BHwAZAMZAGQAZACFAnwLZgIZABQAFwB8AGQBGQBkAGQAhQJ8\nC2YCGQAUABcAfQZxZFcAdAFqAnwGZAuDAn0GfAZ8AWQEfAV8AGQFGQAUABcAFAAbAH0GeEZ0AGQB\nfAKDAkQAXTh9DHwHfAx8BHwAZAYZAGQAZACFAnwMZgIZABQAFwB8AGQEGQBkAGQAhQJ8DGYCGQAU\nABcAfQdx0FcAdAFqAnwHZAyDAn0HfAd8AWQEfAV8AGQFGQAUABcAFAAbAHwCZAR8BXwAZAcZABQA\nFwAUABsAfQd4SHQAZAF8A4MCRABdOn0NfAh8DXwEfABkCBkAZABkAIUCfA1mAhkAFAAXAHwAZAkZ\nAGQAZACFAnwNZgIZABQAFwB9CJABcVBXAHQBagJ8CGQNgwJ9CHwIfAFkBHwFfABkBRkAFAAXABQA\nGwB8AmQEfAV8AGQHGQAUABcAFAAbAHwDZAR8BXwAZAoZABQAFwAUABsAfQh8BnwHFwB8CBcAfAoU\nAH0OfA5TACkOTukAAAAA6WUAAADpBgAAAOkBAAAA6QMAAADpBwAAAOkEAAAA6QgAAADpAgAAAOkF\nAAAA6f////9yCwAAAHILAAAAKQPaBXJhbmdl2gFL2gtleHBhbmRfZGltcykP2gF42gJzMdoCczLa\nAnMz2gxsYW1iZGFfbG9jYWzaCGxhbWJkYV9k2gFh2gFi2gFj2gFB2gFW2gFp2gFq2gFr2gNhZ2Wp\nAHIeAAAA+kMvaG9tZS95aWhzdWFuL0RvY3VtZW50cy9TaW5pY2EvU1NSTkVUX21lZ2FhZ2VfYXNp\nYW4vU1NSTkVUX21vZGVsLnB52gltZXJnZV9hZ2UgBAAAcyYAAAAAARgBGAEYAQwBBAIQATgBDAEY\nAhABOAEMASwCEAE6AQwBQAMQAQ==\n", null, null], "function_type": "lambda", "output_shape": [1], "output_shape_type": "raw", "arguments": {"s1": 3, "s2": 3, "s3": 3, "lambda_local": 1.0, "lambda_d": 1.0}}, "inbound_nodes": [[["pred_age_stage1", 0, 0, {}], ["pred_age_stage2", 0, 0, {}], ["pred_age_stage3", 0, 0, {}], ["delta_s1", 0, 0, {}], ["delta_s2", 0, 0, {}], ["delta_s3", 0, 0, {}], ["local_delta_stage1", 0, 0, {}], ["local_delta_stage2", 0, 0, {}], ["local_delta_stage3", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["pred_a", 0, 0]]}, "keras_version": "2.1.5", "backend": "tensorflow"} -------------------------------------------------------------------------------- /megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/megaage_models/batch_size_50/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.png -------------------------------------------------------------------------------- /paper_images/magaage_asian_CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/paper_images/magaage_asian_CA.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/densenet_reg_13_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/densenet_reg_13_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/densenet_reg_13_64.json: -------------------------------------------------------------------------------- 1 | {"keras_version": "2.0.6", "backend": "tensorflow", "class_name": "Model", "config": {"layers": [{"config": {"dtype": "float32", "batch_input_shape": [null, 64, 64, 3], "sparse": false, "name": "input_1"}, "class_name": "InputLayer", "name": "input_1", "inbound_nodes": []}, {"config": {"layers": [{"inbound_nodes": [], "class_name": "InputLayer", "name": "input_2", "config": {"dtype": "float32", "batch_input_shape": [null, 64, 64, 3], "sparse": false, "name": "input_2"}}, {"inbound_nodes": [[["input_2", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_1", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 9.999999747378752e-05}}, "activity_regularizer": null, "filters": 24, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_1"}}, {"inbound_nodes": [[["conv2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_1", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_1"}}, {"inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]], "class_name": "Activation", "name": "activation_1", "config": {"activation": "relu", "name": "activation_1", "trainable": true}}, {"inbound_nodes": [[["activation_1", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_2", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_2"}}, {"inbound_nodes": [[["conv2d_1", 0, 0, {}], ["conv2d_2", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_1", "config": {"axis": -1, "name": "concatenate_1", "trainable": true}}, {"inbound_nodes": [[["concatenate_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_2", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_2"}}, {"inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]], "class_name": "Activation", "name": "activation_2", "config": {"activation": "relu", "name": "activation_2", "trainable": true}}, {"inbound_nodes": [[["activation_2", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_3", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_3"}}, {"inbound_nodes": [[["concatenate_1", 0, 0, {}], ["conv2d_3", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_2", "config": {"axis": -1, "name": "concatenate_2", "trainable": true}}, {"inbound_nodes": [[["concatenate_2", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_3", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_3"}}, {"inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]], "class_name": "Activation", "name": "activation_3", "config": {"activation": "relu", "name": "activation_3", "trainable": true}}, {"inbound_nodes": [[["activation_3", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_4", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_4"}}, {"inbound_nodes": [[["concatenate_2", 0, 0, {}], ["conv2d_4", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_3", "config": {"axis": -1, "name": "concatenate_3", "trainable": true}}, {"inbound_nodes": [[["concatenate_3", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_4", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_4"}}, {"inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]], "class_name": "Activation", "name": "activation_4", "config": {"activation": "relu", "name": "activation_4", "trainable": true}}, {"inbound_nodes": [[["activation_4", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_5", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 9.999999747378752e-05}}, "activity_regularizer": null, "filters": 60, "kernel_constraint": null, "kernel_size": [1, 1], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_5"}}, {"inbound_nodes": [[["conv2d_5", 0, 0, {}]]], "class_name": "AveragePooling2D", "name": "average_pooling2d_1", "config": {"data_format": "channels_last", "trainable": true, "pool_size": [2, 2], "strides": [2, 2], "padding": "valid", "name": "average_pooling2d_1"}}, {"inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_5", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_5"}}, {"inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]], "class_name": "Activation", "name": "activation_5", "config": {"activation": "relu", "name": "activation_5", "trainable": true}}, {"inbound_nodes": [[["activation_5", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_6", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_6"}}, {"inbound_nodes": [[["average_pooling2d_1", 0, 0, {}], ["conv2d_6", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_4", "config": {"axis": -1, "name": "concatenate_4", "trainable": true}}, {"inbound_nodes": [[["concatenate_4", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_6", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_6"}}, {"inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]], "class_name": "Activation", "name": "activation_6", "config": {"activation": "relu", "name": "activation_6", "trainable": true}}, {"inbound_nodes": [[["activation_6", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_7", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_7"}}, {"inbound_nodes": [[["concatenate_4", 0, 0, {}], ["conv2d_7", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_5", "config": {"axis": -1, "name": "concatenate_5", "trainable": true}}, {"inbound_nodes": [[["concatenate_5", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_7", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_7"}}, {"inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]], "class_name": "Activation", "name": "activation_7", "config": {"activation": "relu", "name": "activation_7", "trainable": true}}, {"inbound_nodes": [[["activation_7", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_8", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_8"}}, {"inbound_nodes": [[["concatenate_5", 0, 0, {}], ["conv2d_8", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_6", "config": {"axis": -1, "name": "concatenate_6", "trainable": true}}, {"inbound_nodes": [[["concatenate_6", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_8", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_8"}}, {"inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]], "class_name": "Activation", "name": "activation_8", "config": {"activation": "relu", "name": "activation_8", "trainable": true}}, {"inbound_nodes": [[["activation_8", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_9", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 9.999999747378752e-05}}, "activity_regularizer": null, "filters": 96, "kernel_constraint": null, "kernel_size": [1, 1], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_9"}}, {"inbound_nodes": [[["conv2d_9", 0, 0, {}]]], "class_name": "AveragePooling2D", "name": "average_pooling2d_2", "config": {"data_format": "channels_last", "trainable": true, "pool_size": [2, 2], "strides": [2, 2], "padding": "valid", "name": "average_pooling2d_2"}}, {"inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_9", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_9"}}, {"inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]], "class_name": "Activation", "name": "activation_9", "config": {"activation": "relu", "name": "activation_9", "trainable": true}}, {"inbound_nodes": [[["activation_9", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_10", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_10"}}, {"inbound_nodes": [[["average_pooling2d_2", 0, 0, {}], ["conv2d_10", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_7", "config": {"axis": -1, "name": "concatenate_7", "trainable": true}}, {"inbound_nodes": [[["concatenate_7", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_10", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_10"}}, {"inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]], "class_name": "Activation", "name": "activation_10", "config": {"activation": "relu", "name": "activation_10", "trainable": true}}, {"inbound_nodes": [[["activation_10", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_11", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_11"}}, {"inbound_nodes": [[["concatenate_7", 0, 0, {}], ["conv2d_11", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_8", "config": {"axis": -1, "name": "concatenate_8", "trainable": true}}, {"inbound_nodes": [[["concatenate_8", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_11", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_11"}}, {"inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]], "class_name": "Activation", "name": "activation_11", "config": {"activation": "relu", "name": "activation_11", "trainable": true}}, {"inbound_nodes": [[["activation_11", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_12", "config": {"data_format": "channels_last", "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "distribution": "normal", "seed": null, "mode": "fan_in"}}, "activation": "linear", "trainable": true, "strides": [1, 1], "bias_regularizer": null, "padding": "same", "kernel_regularizer": null, "activity_regularizer": null, "filters": 12, "kernel_constraint": null, "kernel_size": [3, 3], "bias_initializer": {"class_name": "Zeros", "config": {}}, "dilation_rate": [1, 1], "bias_constraint": null, "use_bias": false, "name": "conv2d_12"}}, {"inbound_nodes": [[["concatenate_8", 0, 0, {}], ["conv2d_12", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_9", "config": {"axis": -1, "name": "concatenate_9", "trainable": true}}, {"inbound_nodes": [[["concatenate_9", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_12", "config": {"center": true, "momentum": 0.99, "trainable": true, "axis": -1, "gamma_regularizer": null, "beta_regularizer": null, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "gamma_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "epsilon": 1.1e-05, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "name": "batch_normalization_12"}}, {"inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]], "class_name": "Activation", "name": "activation_12", "config": {"activation": "relu", "name": "activation_12", "trainable": true}}, {"inbound_nodes": [[["activation_12", 0, 0, {}]]], "class_name": "GlobalAveragePooling2D", "name": "global_average_pooling2d_1", "config": {"data_format": "channels_last", "name": "global_average_pooling2d_1", "trainable": true}}], "output_layers": [["global_average_pooling2d_1", 0, 0]], "input_layers": [["input_2", 0, 0]], "name": "densenet"}, "class_name": "Model", "name": "densenet", "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "distribution": "uniform", "seed": null, "mode": "fan_avg"}}, "activation": "relu", "trainable": true, "bias_regularizer": null, "kernel_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "units": 128, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_constraint": null, "use_bias": true, "name": "dense_1"}, "class_name": "Dense", "name": "dense_1", "inbound_nodes": [[["densenet", 1, 0, {}]]]}, {"config": {"rate": 0.2, "trainable": true, "name": "dropout_1"}, "class_name": "Dropout", "name": "dropout_1", "inbound_nodes": [[["dense_1", 0, 0, {}]]]}, {"config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "distribution": "uniform", "seed": null, "mode": "fan_avg"}}, "activation": "relu", "trainable": true, "bias_regularizer": null, "kernel_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "units": 32, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_constraint": null, "use_bias": true, "name": "feat_a"}, "class_name": "Dense", "name": "feat_a", "inbound_nodes": [[["dropout_1", 0, 0, {}]]]}, {"config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "distribution": "uniform", "seed": null, "mode": "fan_avg"}}, "activation": "linear", "trainable": true, "bias_regularizer": null, "kernel_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "units": 1, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_constraint": null, "use_bias": true, "name": "pred_a"}, "class_name": "Dense", "name": "pred_a", "inbound_nodes": [[["feat_a", 0, 0, {}]]]}], "output_layers": [["pred_a", 0, 0]], "name": "model_1", "input_layers": [["input_1", 0, 0]]}} -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/densenet_reg_13_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/densenet_reg_13_64.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/history_densenet_reg_13_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/history_densenet_reg_13_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/loss.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/loss.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/performance.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_13_64/performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_13_64/performance.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/densenet_reg_19_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/densenet_reg_19_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/densenet_reg_19_64.json: -------------------------------------------------------------------------------- 1 | {"config": {"input_layers": [["input_1", 0, 0]], "output_layers": [["pred_a", 0, 0]], "name": "model_1", "layers": [{"config": {"dtype": "float32", "sparse": false, "name": "input_1", "batch_input_shape": [null, 64, 64, 3]}, "inbound_nodes": [], "class_name": "InputLayer", "name": "input_1"}, {"config": {"input_layers": [["input_2", 0, 0]], "output_layers": [["global_average_pooling2d_1", 0, 0]], "name": "densenet", "layers": [{"config": {"dtype": "float32", "sparse": false, "name": "input_2", "batch_input_shape": [null, 64, 64, 3]}, "inbound_nodes": [], "class_name": "InputLayer", "name": "input_2"}, {"config": {"kernel_regularizer": {"config": {"l2": 9.999999747378752e-05, "l1": 0.0}, "class_name": "L1L2"}, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 24, "name": "conv2d_1", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["input_2", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_1"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_1", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_1"}, {"config": {"trainable": true, "name": "activation_1", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]], "class_name": "Activation", "name": "activation_1"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_2", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_1", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_2"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_1"}, "inbound_nodes": [[["conv2d_1", 0, 0, {}], ["conv2d_2", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_1"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_2", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_2"}, {"config": {"trainable": true, "name": "activation_2", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]], "class_name": "Activation", "name": "activation_2"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_3", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_2", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_3"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_2"}, "inbound_nodes": [[["concatenate_1", 0, 0, {}], ["conv2d_3", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_2"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_3", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_2", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_3"}, {"config": {"trainable": true, "name": "activation_3", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]], "class_name": "Activation", "name": "activation_3"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_4", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_3", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_4"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_3"}, "inbound_nodes": [[["concatenate_2", 0, 0, {}], ["conv2d_4", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_3"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_4", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_3", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_4"}, {"config": {"trainable": true, "name": "activation_4", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]], "class_name": "Activation", "name": "activation_4"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_5", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_4", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_5"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_4"}, "inbound_nodes": [[["concatenate_3", 0, 0, {}], ["conv2d_5", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_4"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_5", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_4", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_5"}, {"config": {"trainable": true, "name": "activation_5", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]], "class_name": "Activation", "name": "activation_5"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_6", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_5", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_6"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_5"}, "inbound_nodes": [[["concatenate_4", 0, 0, {}], ["conv2d_6", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_5"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_6", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_5", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_6"}, {"config": {"trainable": true, "name": "activation_6", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]], "class_name": "Activation", "name": "activation_6"}, {"config": {"kernel_regularizer": {"config": {"l2": 9.999999747378752e-05, "l1": 0.0}, "class_name": "L1L2"}, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 84, "name": "conv2d_7", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [1, 1], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_6", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_7"}, {"config": {"trainable": true, "strides": [2, 2], "name": "average_pooling2d_1", "pool_size": [2, 2], "data_format": "channels_last", "padding": "valid"}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]], "class_name": "AveragePooling2D", "name": "average_pooling2d_1"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_7", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_7"}, {"config": {"trainable": true, "name": "activation_7", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]], "class_name": "Activation", "name": "activation_7"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_8", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_7", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_8"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_6"}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}], ["conv2d_8", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_6"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_8", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_6", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_8"}, {"config": {"trainable": true, "name": "activation_8", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]], "class_name": "Activation", "name": "activation_8"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_9", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_8", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_9"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_7"}, "inbound_nodes": [[["concatenate_6", 0, 0, {}], ["conv2d_9", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_7"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_9", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_7", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_9"}, {"config": {"trainable": true, "name": "activation_9", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]], "class_name": "Activation", "name": "activation_9"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_10", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_9", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_10"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_8"}, "inbound_nodes": [[["concatenate_7", 0, 0, {}], ["conv2d_10", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_8"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_10", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_8", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_10"}, {"config": {"trainable": true, "name": "activation_10", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]], "class_name": "Activation", "name": "activation_10"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_11", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_10", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_11"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_9"}, "inbound_nodes": [[["concatenate_8", 0, 0, {}], ["conv2d_11", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_9"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_11", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_9", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_11"}, {"config": {"trainable": true, "name": "activation_11", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]], "class_name": "Activation", "name": "activation_11"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_12", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_11", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_12"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_10"}, "inbound_nodes": [[["concatenate_9", 0, 0, {}], ["conv2d_12", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_10"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_12", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_10", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_12"}, {"config": {"trainable": true, "name": "activation_12", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]], "class_name": "Activation", "name": "activation_12"}, {"config": {"kernel_regularizer": {"config": {"l2": 9.999999747378752e-05, "l1": 0.0}, "class_name": "L1L2"}, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 144, "name": "conv2d_13", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [1, 1], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_12", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_13"}, {"config": {"trainable": true, "strides": [2, 2], "name": "average_pooling2d_2", "pool_size": [2, 2], "data_format": "channels_last", "padding": "valid"}, "inbound_nodes": [[["conv2d_13", 0, 0, {}]]], "class_name": "AveragePooling2D", "name": "average_pooling2d_2"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_13", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_13"}, {"config": {"trainable": true, "name": "activation_13", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_13", 0, 0, {}]]], "class_name": "Activation", "name": "activation_13"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_14", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_13", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_14"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_11"}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}], ["conv2d_14", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_11"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_14", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_11", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_14"}, {"config": {"trainable": true, "name": "activation_14", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_14", 0, 0, {}]]], "class_name": "Activation", "name": "activation_14"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_15", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_14", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_15"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_12"}, "inbound_nodes": [[["concatenate_11", 0, 0, {}], ["conv2d_15", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_12"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_15", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_12", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_15"}, {"config": {"trainable": true, "name": "activation_15", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_15", 0, 0, {}]]], "class_name": "Activation", "name": "activation_15"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_16", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_15", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_16"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_13"}, "inbound_nodes": [[["concatenate_12", 0, 0, {}], ["conv2d_16", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_13"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_16", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_13", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_16"}, {"config": {"trainable": true, "name": "activation_16", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_16", 0, 0, {}]]], "class_name": "Activation", "name": "activation_16"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_17", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_16", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_17"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_14"}, "inbound_nodes": [[["concatenate_13", 0, 0, {}], ["conv2d_17", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_14"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_17", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_14", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_17"}, {"config": {"trainable": true, "name": "activation_17", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_17", 0, 0, {}]]], "class_name": "Activation", "name": "activation_17"}, {"config": {"kernel_regularizer": null, "trainable": true, "bias_constraint": null, "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": false, "activity_regularizer": null, "padding": "same", "filters": 12, "name": "conv2d_18", "kernel_initializer": {"config": {"scale": 2.0, "distribution": "normal", "mode": "fan_in", "seed": null}, "class_name": "VarianceScaling"}, "kernel_size": [3, 3], "bias_regularizer": null, "activation": "linear", "data_format": "channels_last", "dilation_rate": [1, 1], "strides": [1, 1]}, "inbound_nodes": [[["activation_17", 0, 0, {}]]], "class_name": "Conv2D", "name": "conv2d_18"}, {"config": {"axis": -1, "trainable": true, "name": "concatenate_15"}, "inbound_nodes": [[["concatenate_14", 0, 0, {}], ["conv2d_18", 0, 0, {}]]], "class_name": "Concatenate", "name": "concatenate_15"}, {"config": {"scale": true, "trainable": true, "beta_constraint": null, "gamma_constraint": null, "beta_regularizer": null, "beta_initializer": {"config": {}, "class_name": "Zeros"}, "moving_mean_initializer": {"config": {}, "class_name": "Zeros"}, "center": true, "gamma_regularizer": null, "moving_variance_initializer": {"config": {}, "class_name": "Ones"}, "name": "batch_normalization_18", "axis": -1, "epsilon": 1.1e-05, "momentum": 0.99, "gamma_initializer": {"config": {}, "class_name": "Ones"}}, "inbound_nodes": [[["concatenate_15", 0, 0, {}]]], "class_name": "BatchNormalization", "name": "batch_normalization_18"}, {"config": {"trainable": true, "name": "activation_18", "activation": "relu"}, "inbound_nodes": [[["batch_normalization_18", 0, 0, {}]]], "class_name": "Activation", "name": "activation_18"}, {"config": {"trainable": true, "data_format": "channels_last", "name": "global_average_pooling2d_1"}, "inbound_nodes": [[["activation_18", 0, 0, {}]]], "class_name": "GlobalAveragePooling2D", "name": "global_average_pooling2d_1"}]}, "inbound_nodes": [[["input_1", 0, 0, {}]]], "class_name": "Model", "name": "densenet"}, {"config": {"kernel_regularizer": null, "trainable": true, "name": "dense_1", "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": true, "bias_constraint": null, "activity_regularizer": null, "units": 128, "kernel_initializer": {"config": {"scale": 1.0, "distribution": "uniform", "mode": "fan_avg", "seed": null}, "class_name": "VarianceScaling"}, "bias_regularizer": null, "activation": "relu"}, "inbound_nodes": [[["densenet", 1, 0, {}]]], "class_name": "Dense", "name": "dense_1"}, {"config": {"trainable": true, "rate": 0.2, "name": "dropout_1"}, "inbound_nodes": [[["dense_1", 0, 0, {}]]], "class_name": "Dropout", "name": "dropout_1"}, {"config": {"kernel_regularizer": null, "trainable": true, "name": "feat_a", "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": true, "bias_constraint": null, "activity_regularizer": null, "units": 32, "kernel_initializer": {"config": {"scale": 1.0, "distribution": "uniform", "mode": "fan_avg", "seed": null}, "class_name": "VarianceScaling"}, "bias_regularizer": null, "activation": "relu"}, "inbound_nodes": [[["dropout_1", 0, 0, {}]]], "class_name": "Dense", "name": "feat_a"}, {"config": {"kernel_regularizer": null, "trainable": true, "name": "pred_a", "bias_initializer": {"config": {}, "class_name": "Zeros"}, "kernel_constraint": null, "use_bias": true, "bias_constraint": null, "activity_regularizer": null, "units": 1, "kernel_initializer": {"config": {"scale": 1.0, "distribution": "uniform", "mode": "fan_avg", "seed": null}, "class_name": "VarianceScaling"}, "bias_regularizer": null, "activation": "linear"}, "inbound_nodes": [[["feat_a", 0, 0, {}]]], "class_name": "Dense", "name": "pred_a"}]}, "backend": "tensorflow", "keras_version": "2.0.6", "class_name": "Model"} -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/densenet_reg_19_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/densenet_reg_19_64.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/history_densenet_reg_19_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/history_densenet_reg_19_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/loss.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/loss.png -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/performance.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/densenet_reg_19_64/performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/densenet_reg_19_64/performance.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/history_mobilenet_reg_0.25_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/history_mobilenet_reg_0.25_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/loss.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/loss.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/mobilenet_reg_0.25_64.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/performance.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.25_64/performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.25_64/performance.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/history_mobilenet_reg_0.5_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/history_mobilenet_reg_0.5_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/loss.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/loss.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/mobilenet_reg_0.5_64.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/mobilenet_reg_0.5_64.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/mobilenet_reg_0.5_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/mobilenet_reg_0.5_64.png -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/performance.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/mobilenet_reg_0.5_64/performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/mobilenet_reg_0.5_64/performance.png -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/history_ssrnet_3_3_3_64_1.0_1.0.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/history_ssrnet_3_3_3_64_1.0_1.0.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/loss.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/loss.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/performance.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/performance.pdf -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.h5 -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.json: -------------------------------------------------------------------------------- 1 | {"class_name": "Model", "keras_version": "2.0.6", "backend": "tensorflow", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer", "config": {"name": "input_1", "sparse": false, "batch_input_shape": [null, 64, 64, 3], "dtype": "float32"}, "inbound_nodes": []}, {"name": "conv2d_5", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_5", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 16, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "conv2d_1", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_1", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 32, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "batch_normalization_5", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_5", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_5", 0, 0, {}]]]}, {"name": "batch_normalization_1", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_1", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]]}, {"name": "activation_5", "class_name": "Activation", "config": {"name": "activation_5", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]]}, {"name": "activation_1", "class_name": "Activation", "config": {"name": "activation_1", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]]}, {"name": "max_pooling2d_1", "class_name": "MaxPooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "max_pooling2d_1", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_5", 0, 0, {}]]]}, {"name": "average_pooling2d_1", "class_name": "AveragePooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "average_pooling2d_1", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_1", 0, 0, {}]]]}, {"name": "conv2d_6", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_6", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 16, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_2", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_2", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 32, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_6", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_6", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_2", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_2", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_2", 0, 0, {}]]]}, {"name": "activation_6", "class_name": "Activation", "config": {"name": "activation_6", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]]}, {"name": "activation_2", "class_name": "Activation", "config": {"name": "activation_2", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]]}, {"name": "max_pooling2d_2", "class_name": "MaxPooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "max_pooling2d_2", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_6", 0, 0, {}]]]}, {"name": "average_pooling2d_2", "class_name": "AveragePooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "average_pooling2d_2", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_2", 0, 0, {}]]]}, {"name": "conv2d_7", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_7", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 16, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_3", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_3", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 32, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_7", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_7", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_3", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_3", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_3", 0, 0, {}]]]}, {"name": "activation_7", "class_name": "Activation", "config": {"name": "activation_7", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]]}, {"name": "activation_3", "class_name": "Activation", "config": {"name": "activation_3", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]]}, {"name": "max_pooling2d_3", "class_name": "MaxPooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "max_pooling2d_3", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_7", 0, 0, {}]]]}, {"name": "average_pooling2d_3", "class_name": "AveragePooling2D", "config": {"pool_size": [2, 2], "padding": "valid", "data_format": "channels_last", "name": "average_pooling2d_3", "trainable": true, "strides": [2, 2]}, "inbound_nodes": [[["activation_3", 0, 0, {}]]]}, {"name": "conv2d_8", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_8", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 16, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["max_pooling2d_3", 0, 0, {}]]]}, {"name": "conv2d_4", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_4", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [3, 3], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "filters": 32, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["average_pooling2d_3", 0, 0, {}]]]}, {"name": "batch_normalization_8", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_8", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_4", "class_name": "BatchNormalization", "config": {"gamma_regularizer": null, "gamma_constraint": null, "center": true, "scale": true, "name": "batch_normalization_4", "axis": -1, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "beta_regularizer": null, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_constraint": null, "momentum": 0.99, "trainable": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "epsilon": 0.001, "gamma_initializer": {"class_name": "Ones", "config": {}}}, "inbound_nodes": [[["conv2d_4", 0, 0, {}]]]}, {"name": "activation_8", "class_name": "Activation", "config": {"name": "activation_8", "trainable": true, "activation": "tanh"}, "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]]}, {"name": "activation_4", "class_name": "Activation", "config": {"name": "activation_4", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]]}, {"name": "conv2d_11", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_11", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_12", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_12", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_13", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_13", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_14", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_14", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "conv2d_9", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_9", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["activation_8", 0, 0, {}]]]}, {"name": "conv2d_10", "class_name": "Conv2D", "config": {"kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_10", "data_format": "channels_last", "activity_regularizer": null, "kernel_size": [1, 1], "dilation_rate": [1, 1], "use_bias": true, "strides": [1, 1], "trainable": true, "padding": "valid", "bias_regularizer": null, "bias_constraint": null, "activation": "relu", "filters": 10, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["activation_4", 0, 0, {}]]]}, {"name": "max_pooling2d_4", "class_name": "MaxPooling2D", "config": {"pool_size": [4, 4], "padding": "valid", "data_format": "channels_last", "name": "max_pooling2d_4", "trainable": true, "strides": [4, 4]}, "inbound_nodes": [[["conv2d_11", 0, 0, {}]]]}, {"name": "average_pooling2d_4", "class_name": "AveragePooling2D", "config": {"pool_size": [4, 4], "padding": "valid", "data_format": "channels_last", "name": "average_pooling2d_4", "trainable": true, "strides": [4, 4]}, "inbound_nodes": [[["conv2d_12", 0, 0, {}]]]}, {"name": "max_pooling2d_5", "class_name": "MaxPooling2D", "config": {"pool_size": [8, 8], "padding": "valid", "data_format": "channels_last", "name": "max_pooling2d_5", "trainable": true, "strides": [8, 8]}, "inbound_nodes": [[["conv2d_13", 0, 0, {}]]]}, {"name": "average_pooling2d_5", "class_name": "AveragePooling2D", "config": {"pool_size": [8, 8], "padding": "valid", "data_format": "channels_last", "name": "average_pooling2d_5", "trainable": true, "strides": [8, 8]}, "inbound_nodes": [[["conv2d_14", 0, 0, {}]]]}, {"name": "flatten_1", "class_name": "Flatten", "config": {"name": "flatten_1", "trainable": true}, "inbound_nodes": [[["conv2d_9", 0, 0, {}]]]}, {"name": "flatten_2", "class_name": "Flatten", "config": {"name": "flatten_2", "trainable": true}, "inbound_nodes": [[["conv2d_10", 0, 0, {}]]]}, {"name": "flatten_3", "class_name": "Flatten", "config": {"name": "flatten_3", "trainable": true}, "inbound_nodes": [[["max_pooling2d_4", 0, 0, {}]]]}, {"name": "flatten_4", "class_name": "Flatten", "config": {"name": "flatten_4", "trainable": true}, "inbound_nodes": [[["average_pooling2d_4", 0, 0, {}]]]}, {"name": "flatten_5", "class_name": "Flatten", "config": {"name": "flatten_5", "trainable": true}, "inbound_nodes": [[["max_pooling2d_5", 0, 0, {}]]]}, {"name": "flatten_6", "class_name": "Flatten", "config": {"name": "flatten_6", "trainable": true}, "inbound_nodes": [[["average_pooling2d_5", 0, 0, {}]]]}, {"name": "dropout_1", "class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_1", 0, 0, {}]]]}, {"name": "dropout_2", "class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_2", 0, 0, {}]]]}, {"name": "dropout_3", "class_name": "Dropout", "config": {"name": "dropout_3", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_3", 0, 0, {}]]]}, {"name": "dropout_4", "class_name": "Dropout", "config": {"name": "dropout_4", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_4", 0, 0, {}]]]}, {"name": "dropout_5", "class_name": "Dropout", "config": {"name": "dropout_5", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_5", 0, 0, {}]]]}, {"name": "dropout_6", "class_name": "Dropout", "config": {"name": "dropout_6", "trainable": true, "rate": 0.2}, "inbound_nodes": [[["flatten_6", 0, 0, {}]]]}, {"name": "dense_1", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_1", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_1", 0, 0, {}]]]}, {"name": "dense_2", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_2", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_2", 0, 0, {}]]]}, {"name": "dense_4", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_4", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_3", 0, 0, {}]]]}, {"name": "dense_5", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_5", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_4", 0, 0, {}]]]}, {"name": "dense_7", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_7", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_5", 0, 0, {}]]]}, {"name": "dense_8", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_8", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dropout_6", 0, 0, {}]]]}, {"name": "multiply_2", "class_name": "Multiply", "config": {"name": "multiply_2", "trainable": true}, "inbound_nodes": [[["dense_1", 0, 0, {}], ["dense_2", 0, 0, {}]]]}, {"name": "multiply_4", "class_name": "Multiply", "config": {"name": "multiply_4", "trainable": true}, "inbound_nodes": [[["dense_4", 0, 0, {}], ["dense_5", 0, 0, {}]]]}, {"name": "multiply_6", "class_name": "Multiply", "config": {"name": "multiply_6", "trainable": true}, "inbound_nodes": [[["dense_7", 0, 0, {}], ["dense_8", 0, 0, {}]]]}, {"name": "dense_3", "class_name": "Dense", "config": {"units": 6, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_3", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_2", 0, 0, {}]]]}, {"name": "dense_6", "class_name": "Dense", "config": {"units": 6, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_6", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_4", 0, 0, {}]]]}, {"name": "dense_9", "class_name": "Dense", "config": {"units": 6, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "dense_9", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_6", 0, 0, {}]]]}, {"name": "multiply_1", "class_name": "Multiply", "config": {"name": "multiply_1", "trainable": true}, "inbound_nodes": [[["flatten_1", 0, 0, {}], ["flatten_2", 0, 0, {}]]]}, {"name": "multiply_3", "class_name": "Multiply", "config": {"name": "multiply_3", "trainable": true}, "inbound_nodes": [[["flatten_3", 0, 0, {}], ["flatten_4", 0, 0, {}]]]}, {"name": "multiply_5", "class_name": "Multiply", "config": {"name": "multiply_5", "trainable": true}, "inbound_nodes": [[["flatten_5", 0, 0, {}], ["flatten_6", 0, 0, {}]]]}, {"name": "pred_age_stage1", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "pred_age_stage1", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "pred_age_stage2", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "pred_age_stage2", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_6", 0, 0, {}]]]}, {"name": "pred_age_stage3", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "pred_age_stage3", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "relu", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_9", 0, 0, {}]]]}, {"name": "delta_s1", "class_name": "Dense", "config": {"units": 1, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "delta_s1", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_1", 0, 0, {}]]]}, {"name": "delta_s2", "class_name": "Dense", "config": {"units": 1, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "delta_s2", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_3", 0, 0, {}]]]}, {"name": "delta_s3", "class_name": "Dense", "config": {"units": 1, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "delta_s3", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["multiply_5", 0, 0, {}]]]}, {"name": "local_delta_stage1", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "local_delta_stage1", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "local_delta_stage2", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "local_delta_stage2", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_6", 0, 0, {}]]]}, {"name": "local_delta_stage3", "class_name": "Dense", "config": {"units": 3, "bias_initializer": {"class_name": "Zeros", "config": {}}, "name": "local_delta_stage3", "bias_constraint": null, "activity_regularizer": null, "use_bias": true, "bias_regularizer": null, "activation": "tanh", "trainable": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "seed": null, "scale": 1.0, "mode": "fan_avg"}}, "kernel_constraint": null, "kernel_regularizer": null}, "inbound_nodes": [[["dense_9", 0, 0, {}]]]}, {"name": "pred_a", "class_name": "Lambda", "config": {"output_shape": [1], "function": ["\u00e3\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e\u0000\u0000\u0000\u0007\u0000\u0000\u0000S\u0000\u0000\u0000s\u0016\u0002\u0000\u0000|\u0000\u0000d\u0001\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000d\u0001\u0000f\u0002\u0000\u0019d\u0001\u0000\u0014}\u0006\u0000|\u0000\u0000d\u0001\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000d\u0001\u0000f\u0002\u0000\u0019d\u0001\u0000\u0014}\u0007\u0000|\u0000\u0000d\u0001\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000d\u0001\u0000f\u0002\u0000\u0019d\u0001\u0000\u0014}\b\u0000|\u0001\u0000|\u0002\u0000\u0014|\u0003\u0000\u0014}\t\u0000d\u0002\u0000}\n\u0000xU\u0000t\u0000\u0000d\u0001\u0000|\u0001\u0000\u0083\u0002\u0000D]D\u0000}\u000b\u0000|\u0006\u0000|\u000b\u0000|\u0004\u0000|\u0000\u0000d\u0003\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\u000b\u0000f\u0002\u0000\u0019\u0014\u0017|\u0000\u0000d\u0001\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\u000b\u0000f\u0002\u0000\u0019\u0014\u0017}\u0006\u0000q~\u0000W|\u0006\u0000|\u0001\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\u0005\u0000\u0019\u0014\u0017\u0014\u001b}\u0006\u0000xU\u0000t\u0000\u0000d\u0001\u0000|\u0002\u0000\u0083\u0002\u0000D]D\u0000}\f\u0000|\u0007\u0000|\f\u0000|\u0004\u0000|\u0000\u0000d\u0006\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\f\u0000f\u0002\u0000\u0019\u0014\u0017|\u0000\u0000d\u0004\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\f\u0000f\u0002\u0000\u0019\u0014\u0017}\u0007\u0000q\u00f0\u0000W|\u0007\u0000|\u0001\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\u0005\u0000\u0019\u0014\u0017\u0014\u001b|\u0002\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\u0007\u0000\u0019\u0014\u0017\u0014\u001b}\u0007\u0000xU\u0000t\u0000\u0000d\u0001\u0000|\u0003\u0000\u0083\u0002\u0000D]D\u0000}\r\u0000|\b\u0000|\r\u0000|\u0004\u0000|\u0000\u0000d\b\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\r\u0000f\u0002\u0000\u0019\u0014\u0017|\u0000\u0000d\t\u0000\u0019d\u0000\u0000d\u0000\u0000\u0085\u0002\u0000|\r\u0000f\u0002\u0000\u0019\u0014\u0017}\b\u0000qv\u0001W|\b\u0000|\u0001\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\u0005\u0000\u0019\u0014\u0017\u0014\u001b|\u0002\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\u0007\u0000\u0019\u0014\u0017\u0014\u001b|\u0003\u0000d\u0004\u0000|\u0005\u0000|\u0000\u0000d\n\u0000\u0019\u0014\u0017\u0014\u001b}\b\u0000|\u0006\u0000|\u0007\u0000\u0017|\b\u0000\u0017|\n\u0000\u0014}\u0006\u0000|\u0006\u0000S)\u000bN\u00e9\u0000\u0000\u0000\u0000\u00e9e\u0000\u0000\u0000\u00e9\u0006\u0000\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u00e9\u0003\u0000\u0000\u0000\u00e9\u0007\u0000\u0000\u0000\u00e9\u0004\u0000\u0000\u0000\u00e9\b\u0000\u0000\u0000\u00e9\u0002\u0000\u0000\u0000\u00e9\u0005\u0000\u0000\u0000)\u0001\u00da\u0005range)\u000e\u00da\u0001x\u00da\u0002s1\u00da\u0002s2\u00da\u0002s3\u00da\flambda_local\u00da\blambda_d\u00da\u0001a\u00da\u0001b\u00da\u0001c\u00da\u0001A\u00da\u0001V\u00da\u0001i\u00da\u0001j\u00da\u0001k\u00a9\u0000r\u001a\u0000\u0000\u0000\u00faE/home/shamangary/Desktop/codeDemo/age-gender/training/SSRNET_model.py\u00da\tmerge_age\u00fd\u0003\u0000\u0000s \u0000\u0000\u0000\u0000\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u000e\u0001\u0006\u0003\u0016\u0001B\u0001\u001a\u0002\u0016\u0001B\u0001.\u0002\u0016\u0001B\u0001B\u0003\u0012\u0001", null, null], "arguments": {"s3": 3, "s1": 3, "lambda_d": 1.0, "s2": 3, "lambda_local": 1.0}, "output_shape_type": "raw", "function_type": "lambda", "name": "pred_a", "trainable": true}, "inbound_nodes": [[["pred_age_stage1", 0, 0, {}], ["pred_age_stage2", 0, 0, {}], ["pred_age_stage3", 0, 0, {}], ["delta_s1", 0, 0, {}], ["delta_s2", 0, 0, {}], ["delta_s3", 0, 0, {}], ["local_delta_stage1", 0, 0, {}], ["local_delta_stage2", 0, 0, {}], ["local_delta_stage3", 0, 0, {}]]]}], "output_layers": [["pred_a", 0, 0]], "input_layers": [["input_1", 0, 0]]}} -------------------------------------------------------------------------------- /pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b02901145/SSR-Net_megaage-asian/0708992cb1cd0cf4b9090c235a7c38d0b57936f5/pre-trained/wiki/ssrnet_3_3_3_64_1.0_1.0/ssrnet_3_3_3_64_1.0_1.0.png -------------------------------------------------------------------------------- /run_CA.sh: -------------------------------------------------------------------------------- 1 | python ./SSRNET/CA.py './data/megaage_test.npz' 4 4 2 | python ./MobileNet_and_DenseNet/CA_M.py './data/megaage_test.npz' 1 3 | python ./MobileNet_and_DenseNet/CA_D.py './data/megaage_test.npz' 4 4 | 5 | -------------------------------------------------------------------------------- /run_megaage_DenseNet.sh: -------------------------------------------------------------------------------- 1 | KERAS_BACKEND=tensorflow python ./MobileNet_and_DenseNet/TYY_train_others.py --input1 ./data/megaage_train.npz --input2 ./data/megaage_test.npz --netType 4 --db megaage --batch_size 50 2 | 3 | -------------------------------------------------------------------------------- /run_megaage_MobileNet.sh: -------------------------------------------------------------------------------- 1 | KERAS_BACKEND=tensorflow python ./MobileNet_and_DenseNet/TYY_train_others.py --input1 ./data/megaage_train.npz --input2 ./data/megaage_test.npz --netType 1 --db megaage --batch_size 50 2 | 3 | -------------------------------------------------------------------------------- /run_ssrnet_megaage.sh: -------------------------------------------------------------------------------- 1 | max1=4 2 | max2=4 3 | for i in `seq 4 $max1` 4 | do 5 | #echo "$i" 6 | for j in `seq 4 $max2` 7 | do 8 | #echo "$j" 50 9 | KERAS_BACKEND=tensorflow python ./SSRNET/SSRNET_train.py --input1 ./data/megaage_train.npz --input2 ./data/megaage_test.npz --db megaage --netType1 $i --netType2 $j --batch_size 50 10 | done 11 | done 12 | --------------------------------------------------------------------------------