83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
from bottleneck_residual import bottleneck_residual_block
|
|
from itertools import filterfalse
|
|
import sys
|
|
import os
|
|
|
|
#from keras.layers.pooling import AveragePooling2D, MaxPool2D
|
|
from keras.layers import AveragePooling2D, MaxPooling2D
|
|
|
|
|
|
#sys.path.append('c:/git/keras')
|
|
#sys.path.append('c:/git/absl')
|
|
|
|
# installed
|
|
# py -mpip install numpy
|
|
# py -mpip show numpy
|
|
# py -mpip install tensorflow
|
|
# py -mpip show tensorflow
|
|
# py -mpip install matplotlib
|
|
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
|
|
|
import keras
|
|
#from keras.optimizers import adam_v2
|
|
#from tensorflow.keras.optimizers import Adam
|
|
#from keras.datasets import cifar10
|
|
#from keras.preprocessing.image import ImageDataGenerator
|
|
from keras.models import Sequential
|
|
#from keras.utils import np_utils
|
|
from keras.layers import Dense
|
|
from keras.layers import Activation
|
|
from keras.layers import Flatten
|
|
#from keras.layers import Dropout
|
|
from keras.layers import BatchNormalization
|
|
from keras.layers import Conv2D
|
|
from keras.layers import MaxPooling2D
|
|
#from keras.callbacks import ModelCheckpoint
|
|
#from tensorflow.keras.callbacks import EarlyStopping
|
|
from keras import regularizers
|
|
from keras import optimizers
|
|
from matplotlib import pyplot
|
|
import numpy as np
|
|
import tensorflow
|
|
|
|
def resnet50(input_shape,classes,model_name='resnet50'):
|
|
x_input=keras.Input(input_shape)
|
|
|
|
x=Conv2D(64,(7,7),strides=(2,2),name='conv1')(x_input)
|
|
x=BatchNormalization(axis=3,name='bn_conv1')(x)
|
|
x=Activation('relu')(x)
|
|
x=MaxPooling2D((3,3),strides=(2,2))(x)
|
|
|
|
x=bottleneck_residual_block(x,3,[64,64,256],reduce=True,s=1)
|
|
x=bottleneck_residual_block(x,3,[64,64,256])
|
|
x=bottleneck_residual_block(x,3,[64,64,256])
|
|
|
|
x=bottleneck_residual_block(x,3,[128,128,512],reduce=True,s=2)
|
|
x=bottleneck_residual_block(x,3,[128,128,512])
|
|
x=bottleneck_residual_block(x,3,[128,128,512])
|
|
x=bottleneck_residual_block(x,3,[128,128,512])
|
|
|
|
|
|
x=bottleneck_residual_block(x,3,[256,256,1024],reduce=True,s=2)
|
|
x=bottleneck_residual_block(x,3,[256,256,1024])
|
|
x=bottleneck_residual_block(x,3,[256,256,1024])
|
|
x=bottleneck_residual_block(x,3,[256,256,1024])
|
|
x=bottleneck_residual_block(x,3,[256,256,1024])
|
|
x=bottleneck_residual_block(x,3,[256,256,1024])
|
|
|
|
|
|
x=bottleneck_residual_block(x,3,[512,512,2048],reduce=True,s=2)
|
|
x=bottleneck_residual_block(x,3,[512,512,2048])
|
|
x=bottleneck_residual_block(x,3,[512,512,2048])
|
|
|
|
x=AveragePooling2D((1,1))(x)
|
|
x=Flatten()(x)
|
|
if classes==1:
|
|
x=Dense(classes,activation='sigmoid',name='fc'+str(classes))(x)
|
|
else:
|
|
x=Dense(classes,activation='softmax',name='fc'+str(classes))(x)
|
|
model=keras.Model(inputs=x_input,outputs=x,name=model_name)
|
|
return model
|
|
|
|
|