Чтение изображений для создания набора данных для классификации изображений - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу обучить классификатор, основанный на керасе и тензорном потоке, на данных моих изображений.

Изображения расположены в виде подпапок внутри папок:

data
    train
        terror
        no_terror
    test
        terror
        no_terror

Проблема в том, чтоУ меня есть все изображения разных размеров.

Я использую код ниже.

TERROR_TRAIN_DIR = 'C://Users/shiva/OneDrive/Desktop/Dhivy/data/train/terror/'
TERROR_TEST_DIR = 'C://Users/shiva/OneDrive/Desktop/Dhivy/data/test/terror/'

NON_TERROR_TRAIN_DIR = 'C://Users/shiva/OneDrive/Desktop/Dhivy/data/train/non-terror/'
NON_TERROR_TEST_DIR = 'C://Users/shiva/OneDrive/Desktop/Dhivy/data/test/non-terror/'

ROWS = 64
COLS = 64
CHANNELS = 3

terror_train_images = [TERROR_TRAIN_DIR+i for i in os.listdir(TERROR_TRAIN_DIR)] 
terror_test_images = [TERROR_TEST_DIR+i for i in os.listdir(TERROR_TEST_DIR)] 

non_terror_train_images = [NON_TERROR_TRAIN_DIR+i for i in os.listdir(NON_TERROR_TRAIN_DIR)] 
non_terror_test_images = [NON_TERROR_TEST_DIR+i for i in os.listdir(NON_TERROR_TEST_DIR)] 



def read_image(file_path):
    img = cv2.imread(file_path, cv2.IMREAD_COLOR) #cv2.IMREAD_GRAYSCALE
    return cv2.resize(img, (ROWS, COLS), interpolation=cv2.INTER_CUBIC)


def prep_data(images):
    count = len(images)
    data = np.ndarray((count, CHANNELS, ROWS, COLS), dtype=np.uint8)

    for i, image_file in enumerate(images):
        image = read_image(image_file)
        data[i] = image.T
        if i%250 == 0: print('Processed {} of {}'.format(i, count))

    return data

terror_train_images = prep_data(terror_train_images)
terror_test_images = prep_data(terror_test_images)

non_terror_train_images = prep_data(non_terror_train_images)
non_terror_test_images = prep_data(non_terror_test_images)

Я получаю сообщение об ошибке, показанное ниже.

<ipython-input-27-4eadf011e89d> in read_image(file_path)
      1 def read_image(file_path):
      2     img = cv2.imread(file_path, cv2.IMREAD_COLOR) #cv2.IMREAD_GRAYSCALE
----> 3     return cv2.resize(img, (ROWS, COLS), interpolation=cv2.INTER_CUBIC)
      4 
      5 

error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'

Есть ли способ, я могу также создать набор данных для обучения и тестирования с метками, из самой структуры папок и создать X_train, y_train, X_test и y_test, которые я могу передать непосредственно в VGG и Resnet, моя главная задача - проверить, как этиизображения выполняются на этих предварительно обученных моделях.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...