Я применяю PCA к изображению с помощью сжатия. С помощью методов линейной алгебры этой статьи .
я пытаюсь уменьшить размерность набора данных, чтобы создать детектор объектов со сверточной нейронной сетью.
It оказывается, я немного запутался, в этом алгоритме , а в других всегда преобразуют изображение в оттенки серого. Поэтому мне интересно: нужно ли передавать изображение в градациях серого в сверточную нейронную сеть?
Или мне нужно вернуть его в его форму rgb с соответствующими цветами? Если да, как мне вернуть в изображение цвета RGB?
Это результат вывода в оттенках серого с 300 компонентами:
Это часть код, который я использовал:
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) Если это с цветами, как мне вернуть цвета?