PyTorch 人脸识别代码中 face.shape 为 (1, 100, 100) 的原因
在 PyTorch 人脸识别代码中,经常会遇到将人脸图像转换为 Tensor 类型,并得到 shape 为 (1, 100, 100) 的结果。
for (x, y, w, h) in rect:
face = gray[y:y + w, x:x + h].astype(np.float32) # 数值转换
face = cv2.resize(face, (100, 100))
face = face.transpose().astype(np.float32) / 255.
face = np.expand_dims(face, axis=0) # 扩展维度,变成(batch_size, channels, height, width)
face = Tensor(face)
print(face.shape)
为什么 face.shape 是 (1, 100, 100) 呢?
这是因为在代码中进行了以下操作:
- 从原图像中截取人脸区域,得到大小为 (w, h) 的人脸图像。
- 将人脸图像的数值类型转换为 np.float32。
- 对人脸图像进行缩放,将其大小调整为 (100, 100)。
- 将人脸图像的维度进行转换,将其变为 (batch_size, channels, height, width) 的形式,其中 batch_size=1,channels=1。
- 将人脸图像转换为 PyTorch 的 Tensor 类型。
因此,最终得到的 face 的形状为 (1, 1, 100, 100),其中第一个 1 表示 batch_size,第二个 1 表示 channels,后面两个 100 表示图像的高度和宽度。
原文地址: https://www.cveoy.top/t/topic/jqyY 著作权归作者所有。请勿转载和采集!