In [8]:
# Read local image files, instead of reading image urls

import os
import numpy as np
import pandas as pd
import scipy
import sklearn
import keras
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Convolution2D, Flatten, MaxPooling2D, Reshape, InputLayer
import cv2
from skimage import io

%matplotlib inline

In [4]:
rose_images = os.listdir("rose_images")
sunflower_images = os.listdir("sunflower_images")
rosepath = "rose_images/"
sfpath = "sunflower_images/"

In [6]:
images=[]
label = []

for rose in rose_images:
    image = scipy.misc.imread(rosepath+rose)
    images.append(image)
    label.append(0)  #for rose images

for sunflower in sunflower_images:
    image = scipy.misc.imread(sfpath+sunflower)
    images.append(image)
    label.append(1) #for sunflower images

In [9]:
image_backup = images

In [10]:
for i in range(len(images)):
    images[i]=cv2.resize(images[i],(300,300))

In [11]:
images=np.array(images)
label=np.array(label)

In [12]:
filters=10
filtersize=(5,5)
epochs =7
batchsize=128
input_shape=(300,300,3)

In [13]:
from keras.utils.np_utils import to_categorical

label = to_categorical(label)

In [14]:
model = Sequential()

model.add(keras.layers.InputLayer(input_shape=input_shape))

model.add(keras.layers.convolutional.Conv2D(filters, filtersize, strides=(1, 1), 
                                            padding='valid', data_format="channels_last", activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(keras.layers.Flatten())

model.add(keras.layers.Dense(units=2, input_dim=50,activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(images, label, epochs=epochs, batch_size=batchsize,validation_split=0.3)

model.summary()


Train on 69 samples, validate on 30 samples
Epoch 1/7
69/69 [==============================] - 7s - loss: 5.3747 - acc: 0.6522 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 2/7
69/69 [==============================] - 6s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 3/7
69/69 [==============================] - 5s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 4/7
69/69 [==============================] - 5s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 5/7
69/69 [==============================] - 6s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 6/7
69/69 [==============================] - 5s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
Epoch 7/7
69/69 [==============================] - 5s - loss: 11.6798 - acc: 0.2754 - val_loss: 1.1921e-07 - val_acc: 1.0000
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         (None, 300, 300, 3)       0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 296, 296, 10)      760       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 148, 148, 10)      0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 219040)            0         
_________________________________________________________________
dense_1 (Dense)              (None, 2)                 438082    
=================================================================
Total params: 438,842
Trainable params: 438,842
Non-trainable params: 0
_________________________________________________________________