Я хочу обучить классификатор, основанный на керасе и тензорном потоке, на данных моих изображений.
Изображения расположены в виде подпапок внутри папок:
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, моя главная задача - проверить, как этиизображения выполняются на этих предварительно обученных моделях.
Заранее спасибо