Как я могу тренировать модель с различными формами изображения в партии - PullRequest
0 голосов
/ 27 января 2020

Я пытался обучить модель с динамическим c входным размером изображений. он отлично работает для batch_size = 1, но выдает ошибку, если размер партии больше 1 введите описание изображения здесь

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

код выглядит следующим образом

enter code here
def sample_images(data_dir, batch_size):
    # Make a list of all images inside the data directory
    all_images = glob.glob(data_dir)
    # print(all_images)


   images_batch = np.random.choice(all_images, size=batch_size)

   #creating empty arrays for sets of given batch size
   low_resolution_images_set = []
   high_resolution_images_set = []

   for x in range(int(len(all_images)/batch_size)):
       # Choose a random batch of images
       images_batch = np.random.choice(all_images, size=batch_size)
       low_resolution_images = []
       high_resolution_images = []
       for img in images_batch:

           # Get an ndarray of the current image
           img1 = imread(img, mode='RGB')
           frame = cv2.imread(img)
           height, width, channels = frame.shape
           img1 = img1.astype(np.float32)

           low_resolution_shape = (int(height/4), int(width/4), channels)
           high_resolution_shape = (low_resolution_shape[0]*4, low_resolution_shape[1]*4, channels)

           img1_high_resolution = imresize(img1, high_resolution_shape)
           img1_low_resolution = imresize(img1, low_resolution_shape)

           # Do a random flip
           if np.random.random() < 0.5:
               img1_high_resolution = np.fliplr(img1_high_resolution)
               img1_low_resolution = np.fliplr(img1_low_resolution)


           high_resolution_images.append(img1_high_resolution)
           low_resolution_images.append(img1_low_resolution)

       high_resolution_images_set.append(high_resolution_images)
       low_resolution_images_set.append(low_resolution_images)
   return np.array(high_resolution_images_set), np.array(low_resolution_images_set)
enter code here

как обучить мою архитектуру размеру пакета?

1 Ответ

0 голосов
/ 07 марта 2020

Как вы ответили в моем комментарии, сказав, что у вас есть множество изображений с разным разрешением, поэтому вот решение для вас. Просто выберите желаемое разрешение для предварительной обработки изображения тренировки. Следующий код изменит размер всех изображений, увеличив или уменьшив их при необходимости. Просто выберите папку с исходным изображением и папку с целевым изображением. После изменения размера всех изображений до одинакового размера вы можете использовать go для дальнейших операций.

# -*- coding: utf-8 -*-
"""
Created on Sat Mar  7 18:54:24 2020

@author: Hafiz
"""

import cv2
import glob
import os
import numpy as np

# choose where you want to save the resized images (here the destination folder will be created in the same place where the code resides).
destination = r'.\destination\/'  

try:                                        # making the destination folder
    if not os.path.exists(destination):
        os.makedirs(destination)
except OSError:
    print ('Error while creating directory')


image_no = 0
resolution = (512, 512) # use your desired resolution

for img_path in glob.glob(r'C:\Users\source/*.jpg'): # insert your input image folder directory here
                                                     # if the folder contains various types of images rather than only .jpg therefore use *.* instead of *.jpg (but make sure the folder contains only images)

    img = cv2.imread(img_path)


    if img is None:  # checking if the read image is not a NoneType
        continue

    img = cv2.resize(img, resolution) # the image will be zoomed in or out depending on the resolution

    cv2.imwrite(destination + 'image_' + str(image_no) + '.jpg', img)

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