Last active
October 8, 2023 17:54
-
-
Save purva91/b89d9fdd136135beb0f2843580f38d01 to your computer and use it in GitHub Desktop.
Pretrained_Image.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Add our data-augmentation parameters to ImageDataGenerator | |
train_datagen = ImageDataGenerator(rescale = 1./255., rotation_range = 40, width_shift_range = 0.2, height_shift_range = 0.2, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) | |
test_datagen = ImageDataGenerator(rescale = 1.0/255.) | |
train_generator = train_datagen.flow_from_directory(train_dir, batch_size = 20, class_mode = 'binary', target_size = (224, 224)) | |
validation_generator = test_datagen.flow_from_directory( validation_dir, batch_size = 20, class_mode = 'binary', target_size = (224, 224)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
x = base_model.output | |
x = Flatten()(x) | |
x = Dense(1024, activation="relu")(x) | |
x = Dropout(0.5)(x) | |
# Add a final sigmoid layer with 1 node for classification output | |
predictions = Dense(1, activation="sigmoid")(x) | |
model_final = Model(input = base_model.input, output = predictions) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Set up matplotlib fig, and size it to fit 4x4 pics | |
import matplotlib.image as mpimg | |
nrows = 4 | |
ncols = 4 | |
fig = plt.gcf() | |
fig.set_size_inches(ncols*4, nrows*4) | |
pic_index = 100 | |
train_cat_fnames = os.listdir( train_cats_dir ) | |
train_dog_fnames = os.listdir( train_dogs_dir ) | |
next_cat_pix = [os.path.join(train_cats_dir, fname) | |
for fname in train_cat_fnames[ pic_index-8:pic_index] | |
] | |
next_dog_pix = [os.path.join(train_dogs_dir, fname) | |
for fname in train_dog_fnames[ pic_index-8:pic_index] | |
] | |
for i, img_path in enumerate(next_cat_pix+next_dog_pix): | |
# Set up subplot; subplot indices start at 1 | |
sp = plt.subplot(nrows, ncols, i + 1) | |
sp.axis('Off') # Don't show axes (or gridlines) | |
img = mpimg.imread(img_path) | |
plt.imshow(img) | |
plt.show() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tensorflow.keras.applications import ResNet50 | |
from tensorflow.python.keras.models import Sequential | |
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D | |
base_model = Sequential() | |
base_model.add(ResNet50(include_top=False, weights='imagenet', pooling='max')) | |
base_model.add(Dense(1, activation='sigmoid')) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
base_model.compile(optimizer = tf.keras.optimizers.SGD(lr=0.0001), loss = 'binary_crossentropy', metrics = ['acc']) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
model_final.compile(optimizers.rmsprop(lr=0.0001, decay=1e-6),loss='binary_crossentropy',metrics=['accuracy']) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tensorflow.keras.optimizers import RMSprop | |
x = layers.Flatten()(base_model.output) | |
x = layers.Dense(1024, activation='relu')(x) | |
x = layers.Dropout(0.2)(x) | |
# Add a final sigmoid layer with 1 node for classification output | |
x = layers.Dense(1, activation='sigmoid')(x) | |
model = tf.keras.models.Model(base_model.input, x) | |
model.compile(optimizer = RMSprop(lr=0.0001), loss = 'binary_crossentropy', metrics = ['acc']) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Flatten the output layer to 1 dimension | |
x = layers.Flatten()(base_model.output) | |
# Add a fully connected layer with 512 hidden units and ReLU activation | |
x = layers.Dense(512, activation='relu')(x) | |
# Add a dropout rate of 0.5 | |
x = layers.Dropout(0.5)(x) | |
# Add a final sigmoid layer with 1 node for classification output | |
x = layers.Dense(1, activation='sigmoid')(x) | |
model = tf.keras.models.Model(base_model.input, x) | |
model.compile(optimizer = tf.keras.optimizers.RMSprop(lr=0.0001), loss = 'binary_crossentropy',metrics = ['acc']) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local_zip = '/tmp/cats_and_dogs_filtered.zip' | |
zip_ref = zipfile.ZipFile(local_zip, 'r') | |
zip_ref.extractall('/tmp') | |
zip_ref.close() | |
base_dir = '/tmp/cats_and_dogs_filtered' | |
train_dir = os.path.join(base_dir, 'train') | |
validation_dir = os.path.join(base_dir, 'validation') | |
# Directory with our training cat pictures | |
train_cats_dir = os.path.join(train_dir, 'cats') | |
# Directory with our training dog pictures | |
train_dogs_dir = os.path.join(train_dir, 'dogs') | |
# Directory with our validation cat pictures | |
validation_cats_dir = os.path.join(validation_dir, 'cats') | |
# Directory with our validation dog pictures | |
validation_dogs_dir = os.path.join(validation_dir, 'dogs') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
for layer in base_model.layers: | |
layer.trainable = False |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
eff_history = model_final.fit_generator(train_generator, validation_data = validation_generator, steps_per_epoch = 100, epochs = 10) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
inc_history = model.fit_generator(train_generator, validation_data = validation_generator, steps_per_epoch = 100, epochs = 10) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
resnet_history = base_model.fit(train_generator, validation_data = validation_generator, steps_per_epoch = 100, epochs = 10) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
vgghist = model.fit(train_generator, validation_data = validation_generator, steps_per_epoch = 100, epochs = 10) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!wget --no-check-certificate \ | |
https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \ | |
-O /tmp/cats_and_dogs_filtered.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Add our data-augmentation parameters to ImageDataGenerator | |
train_datagen = ImageDataGenerator(rescale = 1./255., rotation_range = 40, width_shift_range = 0.2, height_shift_range = 0.2,shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) | |
test_datagen = ImageDataGenerator( rescale = 1.0/255. ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Add our data-augmentation parameters to ImageDataGenerator | |
train_datagen = ImageDataGenerator(rescale = 1./255.,rotation_range = 40, width_shift_range = 0.2, height_shift_range = 0.2, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) | |
# Note that the validation data should not be augmented! | |
test_datagen = ImageDataGenerator( rescale = 1.0/255. ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import zipfile | |
import tensorflow as tf | |
from tensorflow.keras.preprocessing.image import ImageDataGenerator | |
from tensorflow.keras import layers | |
from tensorflow.keras import Model | |
import matplotlib.pyplot as plt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import efficientnet.keras as efn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
base_model = efn.EfficientNetB0(input_shape = (224, 224, 3), include_top = False, weights = 'imagenet') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tensorflow.keras.applications import ResNet50 | |
base_model = ResNet50(input_shape=(224, 224,3), include_top=False, weights="imagenet") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tensorflow.keras.applications.vgg16 import VGG16 | |
base_model = VGG16(input_shape = (224, 224, 3), # Shape of our images | |
include_top = False, # Leave out the last fully connected layer | |
weights = 'imagenet') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from tensorflow.keras.applications.inception_v3 import InceptionV3 | |
base_model = InceptionV3(input_shape = (150, 150, 3), include_top = False, weights = 'imagenet') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Flow training images in batches of 20 using train_datagen generator | |
train_generator = train_datagen.flow_from_directory(train_dir, batch_size = 20, class_mode = 'binary', target_size = (224, 224)) | |
# Flow validation images in batches of 20 using test_datagen generator | |
validation_generator = test_datagen.flow_from_directory( validation_dir, batch_size = 20, class_mode = 'binary', target_size = (224, 224)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
train_generator = train_datagen.flow_from_directory(train_dir, batch_size = 20, class_mode = 'binary', target_size = (150, 150)) | |
validation_generator = test_datagen.flow_from_directory(validation_dir, batch_size = 20, class_mode = 'binary', target_size = (150, 150)) |
hi ..... can you please help me out ..... I was trying to practise your this code for image classification but now i m get stuck at one point ..... so if possible could you please help me
Hi, This code snippet is a larger part of this work: https://www.analyticsvidhya.com/blog/2020/08/top-4-pre-trained-models-for-image-classification-with-python-code/
You can follow along the steps mentioned there and I'd be happy to clarify doubts on it!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hi ..... can you please help me out ..... I was trying to practise your this code for image classification but now i m get stuck at one point ..... so if possible could you please help me