Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python-kerasを使用した画像分類


画像分類は、-

のような方法を使用して、画像をそれぞれのカテゴリクラスに分類する方法です。
  • 小規模なネットワークを最初からトレーニングする
  • 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. Pythonを使用した畳み込み?

    画像認識は、線形回帰や類似性の比較など、はるかに単純な方法を使用して行われていました。手書きのアルファベットを認識するという単純な作業でさえ、結果は明らかにあまり良くありませんでした。畳み込みニューラルネットワーク(CNN)は、画像を知覚するときに人間の脳の神経活動を大まかにシミュレートする計算上安価な方法を提供することにより、従来の方法から一歩進んだものになるはずです。 畳み込みニューラルネットワークの概要 さまざまなオブジェクトを認識する方法と非常によく似ていますが、コンピュータアルゴリズムは、入力を一般化し、これまでに見たことのない画像を判断する前に、何百万もの画像を調べる必要が

  2. Pythonを使用して画像を読む?

    OpenCVを使用した画像処理 OpenCV(オープンソースコンピュータービジョン)は、基本的に機械学習とコンピュータービジョンのために開発されたオープンソースプログラミングライブラリです。コンピュータビジョンアプリケーションで動作し、商用製品での機械学習の使用を高速化するための共通のインフラストラクチャを提供します。 コンピュータービジョンと機械学習の両方に最適化された2.5千を超えるアルゴリズムは、古典的で最先端のアルゴリズムです。非常に多くのアルゴリズムを使用して、顔の検出と認識、オブジェクトの識別、ビデオ内の人間の行動の分類、カメラの動きの追跡、画像の結合によるシーン全体の高解像度