При применении PCA к изображениям для CNN, нужно ли использовать изображение в оттенках серого? - PullRequest
1 голос
/ 08 мая 2020

Я применяю PCA к изображению с помощью сжатия. С помощью методов линейной алгебры этой статьи .

я пытаюсь уменьшить размерность набора данных, чтобы создать детектор объектов со сверточной нейронной сетью.

It оказывается, я немного запутался, в этом алгоритме , а в других всегда преобразуют изображение в оттенки серого. Поэтому мне интересно: нужно ли передавать изображение в градациях серого в сверточную нейронную сеть?

Или мне нужно вернуть его в его форму rgb с соответствующими цветами? Если да, как мне вернуть в изображение цвета RGB?

Это результат вывода в оттенках серого с 300 компонентами: enter image description here

Это часть код, который я использовал:

X = arr

# if RGB, convert to grayscale
if len(X.shape) > 2:
    X = np.mean(X,2)

# number of columns
n_components = np.size(X,axis=1)

dist = []
max_components = 350
step = 50
i = 1
n_columns = 3
n_images = max_components/step/n_columns + 1
fig = plt.figure(figsize=(15, 10))

for n in range(0,max_components+step,step):
    e_vecs,proj,e_vals = principal_components(X, n)

    # Reconstructing original image from the projection
    Xr = np.dot(e_vecs,proj).T + np.mean(X,axis=0)

    # Distance between original and reconstruction
    dist.append(np.linalg.norm(X-Xr))

    #Download Image at n components
    if n==300:
      cv2.imwrite('gray.jpg', Xr)
      #break

    fig.add_subplot(n_images, n_columns, i)
    plt.imshow(Xr, cmap='Greys_r')
    #plt.axis('off')
    plt.title("n = %d" % n)

    i += 1

Резюмируя вопросы:

1) При применении PCA в изображениях, должен ли я передавать сети изображение в оттенках серого или в цвете?

2) Если это с цветами, как мне вернуть цвета?

...