1.读取图片
from imageio import imread
kitten, puppy = imread(r'E:\CV_deepLearning\code\cs231n-camp-master\assignment\assignment2kitten.jpg'),\
imread(r'E:\CV_deepLearning\code\cs231n-camp-master\assignment\assignment2puppy.jpg')
输出读取的图片像素数组的结构为(H,W,C)
In [45]: kitten.shape
Out[45]: (266, 400, 3)
In [46]: puppy.shape
Out[46]: (517, 517, 3)
说明imread之后的数组结构中,通道数C是在最后一位。
2.在经过卷积处理的时候,图片的数组结构需要为(C,H,W),因此需要变换结构之后才能进行卷积操作。
puppy_new = puppy.transpose((2, 0, 1))
将图片的数组结构变成(C,H,W)
3.显示图片
1)显示原图片
import matplotlib.pyplot as plt
plt.imshow(puppy)
2)显示经过卷积层后的图片(假设已经有了API:conv_forward_naive,卷积核的效果是生成灰度图)
out, _ = conv_forward_naive(puppy, w, b, {'stride': 1, 'pad': 1})
plt.imshow(out.astype('uint8'))
也就是说,经过卷积核之后的图片数组要显示的话,不需要将数组结构进行调整。它本身是(F,H',W'),F为卷积核的数量。