Можно ли конвертировать 3D изображение в один вектор? - PullRequest
0 голосов
/ 02 июня 2018

В этом коде (любезно предоставлено ответом ):

from PIL import Image
import numpy as np


def load_image(infilename):
    img = Image.open(infilename)
    img.load()
    data = np.asarray(img, dtype="int32")
    return data


def save_image(npdata, outfilename):
    img = Image.fromarray(np.asarray(np.clip(npdata, 0, 255), dtype="uint8"), "L")
    img.save(outfilename)

data = load_image('cat.0.jpg')
print(data.shape)

Значение print(data.shape) - это кортеж из трех dim (374, 500, 3).Таким образом, у меня есть следующие вопросы:

  1. Что представляет этот кортеж?
  2. Для использования в целях классификации машинного обучения, имеет ли смысл преобразовывать такие данные кортежа в одномерный вектор ?Если да, то как?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018
  1. 374 строк по 500 столбцов значений RGB (3) (или пикселей) или некоторой перестановки этих измерений.

  2. Возможно.Хотя помните, что любое 1D-кодирование этого отбрасывает двумерную информацию о расстоянии между разными пикселями.Если вы работаете с нейронными сетями, посмотрите на сверточные нейронные сети, чтобы увидеть, как они справляются с этой проблемой.

0 голосов
/ 02 июня 2018

Размеры: (строка, столбец, канал) Да, часто имеет смысл подавать одномерный массив в нейронную сеть, например, если вы используете полностью подключенную сеть.Чтобы изменить форму, у вас есть несколько вариантов:

  1. Используйте функцию изменения формы

    data.reshape(-1)

  2. Используйте функцию выравнивания

    data.flatten()

...