-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodel.py
91 lines (82 loc) · 3.77 KB
/
model.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from keras.models import Sequential
from keras.layers.core import Flatten, Dense, Dropout
from keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2D
from keras.optimizers import SGD
from keras.layers import Activation
from keras.layers.normalization import BatchNormalization
import cv2, numpy as np
def VGG_16(weights_path=None):
model = Sequential()
model.add(ZeroPadding2D((1,1), input_shape=(1,224,224), name='conv1_pad1_finetune'))
model.add(Convolution2D(64, 3, 3,name='conv1_act1_finetune'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv1_pad2'))
model.add(Convolution2D(64, 3, 3,name='conv1_act2'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(MaxPooling2D((2,2), strides=(2,2),name='conv1_max'))
model.add(ZeroPadding2D((1,1),name='conv2_pad1'))
model.add(Convolution2D(128, 3, 3,name='conv2_act1'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv2_pad2'))
model.add(Convolution2D(128, 3, 3,name='conv2_act2'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(MaxPooling2D((2,2), strides=(2,2),name='conv2_max'))
model.add(ZeroPadding2D((1,1),name='conv3_pad1'))
model.add(Convolution2D(256, 3, 3,name='conv3_act1'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv3_pad2'))
model.add(Convolution2D(256, 3, 3,name='conv3_act2'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv3_pad3'))
model.add(Convolution2D(256, 3, 3,name='conv3_act3'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(MaxPooling2D((2,2), strides=(2,2),name='conv3_max'))
model.add(ZeroPadding2D((1,1),name='conv4_pad1'))
model.add(Convolution2D(512, 3, 3,name='conv4_act1'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv4_pad2'))
model.add(Convolution2D(512, 3, 3,name='conv4_act2'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv4_pad3'))
model.add(Convolution2D(512, 3, 3,name='conv4_act3'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(MaxPooling2D((2,2), strides=(2,2),name='conv4_max'))
model.add(ZeroPadding2D((1,1),name='conv5_pad1'))
model.add(Convolution2D(512, 3, 3,name='conv5_act1'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv5_pad2'))
model.add(Convolution2D(512, 3, 3,name='conv5_act2'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(ZeroPadding2D((1,1),name='conv5_pad3'))
model.add(Convolution2D(512, 3, 3,name='conv5_act3'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(MaxPooling2D((2,2), strides=(2,2),name='conv5_max'))
model.add(Flatten(name='fc_flatten_finetune'))
model.add(Dense(4096,name='fc_act1_finetune'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(Dropout(0.5,name='fc_dp1_finetune'))
model.add(Dense(4096,name='fc_act2_finetune'))
model.add(BatchNormalization(axis=1))
model.add(Activation('relu'))
model.add(Dropout(0.5,name='fc_dp2_finetune'))
model.add(Dense(1,name='fc_max_finetune'))
model.add(BatchNormalization(axis=1))
model.add(Activation('sigmoid'))
model.summary()
# if weights_path:
# model.load_weights(weights_path, by_name=True)
return model