1
$\begingroup$

Whenever I try to use the data augmentation ImageDataGenerator I'm getting an error like could not convert string to float. Here is my code.

import numpy as np
import os
import cv2
import matplotlib.pyplot as plt

from pathlib import Path

jpeg_images = 
list(Path(r'D:\covid_deep_learning\train\train').glob('**/*.jpg'))
np.array([np.array(cv2.imread(str(file))).flatten() for file in jpeg_images])
folder = ['COVID19_AND_PNEUMONIA','NORMAL']
Path = r'D:\covid_deep_learning\train\train'
for i in range(2):
    listing = os.listdir(Path+'/'+folder[i])
    for file in listing :
        img = cv2.imread(Path+'/'+folder[i]+'/'+file)
        resize=cv2.resize(img,(70,70))
        cv2.imwrite(Path+'/'+folder[i]+'/'+file,resize)
        cv2.imshow('resize', img)
        plt.imshow(resize)
    print(listing)
    print(len(listing))
def load_images(path, df):
    train_image = []
    for i in tqdm(range(df.shape[0])):
        try:



            train_image.append(resize)
        except OSError:
            print(df['id'][i])
    image_array = np.array(train_image)   
    return image_array


train_image_path = r'D:\covid_deep_learning\train\train/'
test_image_path  = r'D:\covid_deep_learning\test/'

X = load_images(train_image_path,train)
test_images = load_images(test_image_path, test)

 X_train, X_test, y_train, y_test_class = train_test_split(X, y, random_state=42, test_size=0.2)
 y_train = pd.get_dummies(y_train)
 y_test = pd.get_dummies(y_test_class)
 model = Sequential()


model.add(Conv2D(32, (3, 3), padding="same",  activation='relu',input_shape=(70,70,3)))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), padding="same", activation='relu' ))
model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), padding="same", activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))


model.add(Conv2D(128, (3, 3), padding="same", activation='relu' ))
model.add(BatchNormalization())
model.add(Conv2D(128, (3, 3), padding="same", activation='relu' ))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(256, activation='relu'))
model.add(Dropout(0.50))

model.add(Dense(128, activation='relu'))
model.add(Dropout(0.25))

model.add(Dense(2, activation='softmax'))
model.summary()
opt = SGD(lr=1e-3, momentum=0.9, decay=1e-3 / 25)
model.compile(loss='binary_crossentropy',optimizer=opt,metrics=['accuracy'])
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img

datagen = ImageDataGenerator(
    rotation_range=10,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest')

datagen.fit(X_train)
print('augmentation')

After data augmentation I'm getting an error like this:

ValueError                                Traceback (most recent call last)
<ipython-input-61-f6bc9e2818e8> in <module>
     11         fill_mode='nearest')
     12 
 ---> 13 datagen.fit(X_train)
     14 print('augmentation')

~\Anaconda3\lib\site-packages\keras_preprocessing\image\image_data_generator.py in fit(self, x, augment, rounds, seed)
    924             seed: Int (default: None). Random seed.
    925        """
--> 926         x = np.asarray(x, dtype=self.dtype)
    927         if x.ndim != 4:
    928             raise ValueError('Input to `.fit()` should have rank 4. '

~\Anaconda3\lib\site-packages\numpy\core\numeric.py in asarray(a, dtype, order)
    536 
    537     """
--> 538     return array(a, dtype, copy=False, order=order)
    539 
    540 

ValueError: could not convert string to float: 'NORMAL2-IM-0340-0001.jpeg'
$\endgroup$
3
  • $\begingroup$ in your first line of code you use a variable X. Can you edit your questions and show how you created X? $\endgroup$ Apr 21, 2020 at 9:19
  • $\begingroup$ yeah I've edited $\endgroup$
    – user82808
    Apr 21, 2020 at 9:53
  • $\begingroup$ still some code is missing. In X = load_images(train_image_path,train), what is the train variable? In the function load_images you start using a variable resize without defining it. $\endgroup$ Apr 21, 2020 at 12:45

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.