Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन - केरस का उपयोग करके छवि वर्गीकरण

छवि वर्गीकरण कुछ विधि का उपयोग करके छवियों को उनके संबंधित श्रेणी वर्गों में वर्गीकृत करने की एक विधि है जैसे -

  • छोटे नेटवर्क को शुरुआत से प्रशिक्षण देना
  • VGG16 का उपयोग करके मॉडल की शीर्ष परतों को ठीक करना

उदाहरण

#First, include following libraries:
# Importing all necessary libraries
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
#Here, the train_data_dir is the train dataset directory. validation_data_dir is the
#directory for validation data. nb_train_samples is the total number train #samples. nb_validation_samples is the total number of validation samples.
img_width, img_height = 224, 224
train_data_dir = 'v_data/train'
validation_data_dir = 'v_data/test'
nb_train_samples =400
nb_validation_samples = 100
epochs = 10
batch_size = 16
#checking the format of the image
if K.image_data_format() == 'channels_first':
   input_shape = (3, img_width, img_height)
else:
   input_shape = (img_width, img_height, 3)
model = Sequential()
#Conv2D is the layer to convolve the image into multiple images
model.add(Conv2D(32, (2, 2), input_shape=input_shape))
#Activation is the activation function.
model.add(Activation('relu'))
#MaxPooling2D is used to max pool the value from the given size #matrix and same is used for the next 2 layers.
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
#MaxPooling2D is used to max pool the value from the given size
#matrix and same is used for the next 2 layers.
model.add(Flatten())
#Dense is used to make this a fully connected model and is the
#hidden layer.
model.add(Dense(64))
model.add(Activation('relu'))
#Dropout is used to avoid overfitting on the dataset.
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
#Compile function is used here that involve use of loss, optimizers
#and metrics.here loss function used is binary_crossentropy,
#optimizer used is rmsprop.
model.compile(loss='binary_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
#ImageDataGenerator that rescales the image, applies shear in some
#range, zooms the image #and does horizontal flipping with the
#image. This ImageDataGenerator includes all possible
#orientation
#of the image.
train_datagen = ImageDataGenerator(rescale=1. / 255,shear_range=0.2, zoom_range=0.2,horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
#train_datagen.flow_from_directory is the function that is used to
#prepare data from the train_dataset directory Target_size specifies
#the target size of the image.
train_generator = train_datagen.flow_from_directory( train_data_dir,
target_size=(img_width, img_height),batch_size=batch_size,class_mode='binary')
validation_generator = test_datagen.flow_from_directory( validation_data_dir, target_size=(img_width, img_height),
batch_size=batch_size, class_mode='binary')
#fit_generator is used to fit the data into the model made above,
#other factors used are steps_per_epochs tells us about the number
#of times the model will execute for the training data.
#epochs tells us the number of times model will be trained in forward
#and backward pass.
#validation_data is used to feed the validation/test data into the #model.
#validation_steps denotes the number of validation/test samples.
model.fit_generator(train_generator,steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs, validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size)
#Save the model
model.save_weights('ImgmodelKeras_saved.h5')
सेव करें
  1. छवि आधारित स्टेग्नोग्राफ़ी अजगर का उपयोग कर?

    स्टेग्नोग्राफ़ी परदे के पीछे की जानकारी छिपाने की एक तकनीक है। यह क्रिप्टोग्राफी की तरह नहीं है जो डेटा को एन्क्रिप्ट करने पर केंद्रित है (विभिन्न एल्गोरिदम जैसे SHA1, MD5 आदि के माध्यम से), स्टेग्नोग्राफ़ी डेटा को छिपाने पर अधिक ध्यान केंद्रित करती है (डेटा एक फ़ाइल, छवि, संदेश या वीडियो हो सकता है

  1. पायथन का उपयोग कर संकल्प?

    रेखीय प्रतिगमन और समानता की तुलना जैसे बहुत सरल तरीकों का उपयोग करके छवि पहचान का उपयोग किया जाता था। परिणाम स्पष्ट रूप से बहुत अच्छे नहीं थे, यहाँ तक कि हस्तलिखित अक्षरों को पहचानने का सरल कार्य भी कठिन सिद्ध हुआ। कनवल्शन न्यूरल नेटवर्क (सीएनएन) को मानव मस्तिष्क की तंत्रिका संबंधी गतिविधियों को शिथ

  1. पायथन का उपयोग कर छवियों को पढ़ना?

    OpenCV का उपयोग करके इमेज प्रोसेसिंग OpenCV (ओपन सोर्स कंप्यूटर विज़न) एक ओपन सोर्स प्रोग्रामिंग लाइब्रेरी है जिसे मूल रूप से मशीन लर्निंग और कंप्यूटर विज़न के लिए विकसित किया गया है। यह कंप्यूटर विज़न अनुप्रयोगों पर काम करने और व्यावसायिक उत्पादों में मशीन लर्निंग के उपयोग को तेज़ करने के लिए सामा