Files
CNN/Models/resnet50.py
2024-10-26 12:20:02 -04:00

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