You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用torch.tensor重塑二维数组 实现32*32图像降分辨率至16*16

PyTorch实现32×32张量降分辨率为16×16的可行方案

注意:直接调用reshape/view修改张量尺寸无法实现降分辨率效果,这类操作只会硬打乱像素的原有排布,输出结果完全不保留原图的视觉结构,不能用于图像分辨率调整。真正的降分辨率需要对相邻像素做下采样聚合,以下是三种可直接落地的实现方式:

  • 平均池化下采样(最通用)
    把原图按2×2大小的无重叠窗口切分,每个窗口内的像素取平均值作为输出图对应位置的像素值,降采样效果平滑自然,是最常用的图像降分辨率方案。
    单张二维图像张量的实现代码:

    import torch
    
    # 示例:生成随机32×32张量模拟输入图像
    img_32 = torch.rand(32, 32)
    # 补批量、通道维度适配池化接口要求,池化核与步长均设为2,处理后去掉多余维度
    img_16 = torch.nn.functional.avg_pool2d(
        img_32.unsqueeze(0).unsqueeze(0),
        kernel_size=2,
        stride=2
    ).squeeze()
    print(img_16.shape)  # 输出为torch.Size([16, 16])
    

    如果输入是批量多通道格式的张量(形状为[批量数, 通道数, 32, 32]),直接传入池化接口即可,不需要额外加维度。

  • 最大池化下采样
    每个2×2窗口内取最大像素值作为输出,适合需要保留高亮特征、强边缘信息的场景,代码逻辑和平均池化一致:

    img_16_max = torch.nn.functional.max_pool2d(
        img_32.unsqueeze(0).unsqueeze(0),
        kernel_size=2,
        stride=2
    ).squeeze()
    
  • 近邻下采样(速度最快)
    不需要做数值聚合计算,直接按步长2隔行隔列取像素点生成新图,运行速度最快,但降采样后可能出现明显锯齿:

    img_16_near = img_32[::2, ::2]
    print(img_16_near.shape) # 输出为torch.Size([16, 16])
    

补充:如果需要用插值类的降采样效果(比如双线性插值),可以调用torch.nn.functional.interpolate接口,设置scale_factor=0.5、mode='bilinear'即可,注意调用前同样需要补全批量、通道维度。

内容的提问来源于stack exchange,提问作者Jinsu Jang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:15:42