mirror of
https://github.com/serengil/deepface.git
synced 2025-06-12 22:37:09 +00:00
57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
import os
|
|
from pathlib import Path
|
|
import gdown
|
|
import zipfile
|
|
|
|
from tensorflow import keras
|
|
from tensorflow.keras.models import Model
|
|
from tensorflow.keras.layers import Conv2D, Activation, Input, Add, MaxPooling2D, Flatten, Dense, Dropout
|
|
|
|
from deepface.commons import functions
|
|
|
|
#-------------------------------------
|
|
|
|
#url = 'https://drive.google.com/uc?id=1uRLtBCTQQAvHJ_KVrdbRJiCKxU8m5q2J'
|
|
|
|
def loadModel(url = 'https://github.com/serengil/deepface_models/releases/download/v1.0/deepid_keras_weights.h5'):
|
|
|
|
myInput = Input(shape=(55, 47, 3))
|
|
|
|
x = Conv2D(20, (4, 4), name='Conv1', activation='relu', input_shape=(55, 47, 3))(myInput)
|
|
x = MaxPooling2D(pool_size=2, strides=2, name='Pool1')(x)
|
|
x = Dropout(rate=0.99, name='D1')(x)
|
|
|
|
x = Conv2D(40, (3, 3), name='Conv2', activation='relu')(x)
|
|
x = MaxPooling2D(pool_size=2, strides=2, name='Pool2')(x)
|
|
x = Dropout(rate=0.99, name='D2')(x)
|
|
|
|
x = Conv2D(60, (3, 3), name='Conv3', activation='relu')(x)
|
|
x = MaxPooling2D(pool_size=2, strides=2, name='Pool3')(x)
|
|
x = Dropout(rate=0.99, name='D3')(x)
|
|
|
|
x1 = Flatten()(x)
|
|
fc11 = Dense(160, name = 'fc11')(x1)
|
|
|
|
x2 = Conv2D(80, (2, 2), name='Conv4', activation='relu')(x)
|
|
x2 = Flatten()(x2)
|
|
fc12 = Dense(160, name = 'fc12')(x2)
|
|
|
|
y = Add()([fc11, fc12])
|
|
y = Activation('relu', name = 'deepid')(y)
|
|
|
|
model = Model(inputs=[myInput], outputs=y)
|
|
|
|
#---------------------------------
|
|
|
|
home = functions.get_deepface_home()
|
|
|
|
if os.path.isfile(home+'/.deepface/weights/deepid_keras_weights.h5') != True:
|
|
print("deepid_keras_weights.h5 will be downloaded...")
|
|
|
|
output = home+'/.deepface/weights/deepid_keras_weights.h5'
|
|
gdown.download(url, output, quiet=False)
|
|
|
|
model.load_weights(home+'/.deepface/weights/deepid_keras_weights.h5')
|
|
|
|
return model
|