Преобразование изображений PNG или JPEG в формат, принятый алгоритмом GAN - PullRequest
0 голосов
/ 13 марта 2019

Я новичок в этой области для GAN, и я попробовал несколько учебных пособий, однако в большинстве из них использовались наборы данных Cifar или mnist. Так что, в основном, они построены в таком формате (xxxx, 28, 28).

Недавно я хотел попробовать нашу другую фотографию. Например,

from scipy import misc
data = misc.imread("1.PNG") #this can be any images from JPEG or any
print(data.shape)

Мой вывод:

(842, 1116, 4) # Seriously I dont understand what does this mean. 842 means 842 files? I thought I have only 1 image loaded.

Мой ожидаемый результат:

Поскольку я новичок, я действительно хотел задать вопрос о том, должно ли это быть (1, 28, 28) или что-то еще? Чтобы я мог вписаться в GAN, так как он использовал 784 в уроке

Обычно, в наборе данных для mnist мы имеем (60000, 28, 28), что означает 60 тыс. Картинок и каждая из форм 28x28. Как насчет моего вывода выше? (842, 1116, 4) не означает 842 изображения с формой 1116 x 4, не так ли? Я загрузил только одно изображение. Может кто-нибудь помочь мне в том, как преобразовать это и также понять это. спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2019

imread использует PIL или Pillow для чтения изображений, возвращает изображения в формате: высота х ширина х каналов где каналы - это обычно 3 канала (красный, зеленый, синий [RGB] обычного цветного изображения) или иногда 4 канала (красный, зеленый, синий, альфа / прозрачность [RGBA]).

Итак, вы читаете изображение размером 842x1116 пикселей с 4 цветными каналами. Вы говорите, что используете тренировочные данные формы (xxxx, 28, 28), поэтому вы используете изображения в оттенках серого, а не цветные изображения. Первым шагом будет преобразование цветного изображения в оттенки серого. Pillow (в качестве замены для PIL) - хорошая библиотека для операций с изображениями. В качестве альтернативы вы можете просто использовать один канал

gray_data = data[:,:,0]

Чтобы использовать его в качестве обучающих данных, теперь вы можете либо изменить его размер до 28x28, либо извлечь из него небольшие участки размером 28x28.

small_data = gray_data[:28,:28]

Это приведет к (28,28). Большинство алгоритмов обучения рассчитывают не одно, а несколько изображений, в основном в формате (#images, height, width). Так что вам нужно изменить его:

final_data = small_data.reshape(1,28,28)

Это должно сделать это. Тем не менее, правильное преобразование и изменение размера RGB (A) в серый будет лучшим решением. Подробности см. В документации на подушку.

0 голосов
/ 13 марта 2019

Размер изображения x, y (842x1116) в пикселях и количестве цветовых каналов - 4 (R, G, B, Alpha)

...