在 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) 呢?

这是因为在代码中进行了以下操作:

  1. 从原图像中截取人脸区域,得到大小为 (w, h) 的人脸图像。
  2. 将人脸图像的数值类型转换为 np.float32。
  3. 对人脸图像进行缩放,将其大小调整为 (100, 100)。
  4. 将人脸图像的维度进行转换,将其变为 (batch_size, channels, height, width) 的形式,其中 batch_size=1,channels=1。
  5. 将人脸图像转换为 PyTorch 的 Tensor 类型。

因此,最终得到的 face 的形状为 (1, 1, 100, 100),其中第一个 1 表示 batch_size,第二个 1 表示 channels,后面两个 100 表示图像的高度和宽度。

PyTorch 人脸识别代码中 face.shape 为 (1, 100, 100) 的原因

原文地址: https://www.cveoy.top/t/topic/jqyY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录