关于resnet网络输入图片尺寸任意大小的问题

探讨了PyTorch框架中图像分类模型如何处理非224*224尺寸的输入图片,揭示了AdaptiveAvgPool2d层在实现模型自适应输入大小中的关键作用。

最近在做图像分类时查阅了一些相关资料发现输入的图片大小并非是固定大小224*224,因此很疑惑,查阅了一些资料发现了以下解答:

版本框架:pytorch,模型加载来自torchvision

 对应链接为:https://discuss.pytorch.org/t/how-can-torchvison-models-deal-with-image-whose-size-is-not-224-224/51077

进一步的pytorch是如何做到自适应输入图片大小的?答案在AdaptiveAvgPool2d层,如下:

知乎的链接写的很全,可以详细看下:https://www.zhihu.com/question/282046628

希望对疑惑的小伙伴有所帮助

### ResNet34 输入端要求和配置 对于ResNet34模型而言,其输入端的要求主要集中在图像预处理以及初始卷积层的具体设置上。 #### 图像预处理需求 为了确保数据能够被有效利用于训练过程之中,输入ResNet34之前的图像需经过特定方式的标准化处理。具体来说,每一张输入图像应当先减去全局平均值再除以标准差,以此实现零均值单位方差的效果[(input – mean) / std][^1]。这样的操作有助于加速收敛速度并提高最终性能表现。 #### 初始卷积层设定 按照设计原则,ResNet系列模型的第一层通常是一个`Conv2D`类型的二维卷积层,它负责接收原始RGB三通道彩色图片作为输入。对于ResNet34而言也不例外,该层接受大小固定为\(H \times W \times 3\)(其中\(H\)代表高度,\(W\)表示宽度,“3”对应红绿蓝三个颜色通道)的数据矩阵,并对其进行滤波器应用从而提取特征信息。 此外,在实际部署过程中还需要注意一些细节: - **填充模式**:一般采用相同的边界扩展策略(`same`)使得输出尺寸保持不变; - **步幅(strides)**:常设为(2, 2),意味着每次移动两个像素位置; - **激活函数**:紧跟在其后的批量归一化(Batch Normalization)之后会使用ReLU作为非线性变换单元; 综上所述,当准备向ResNet34提供输入时,应确保满足上述提到的各项条件,这样才能保证整个网络正常运作并达到预期效果。 ```python from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, ReLU import numpy as np # 假定mean和std已经预先计算好 def preprocess_input(image_array, mean=np.array([0.485, 0.456, 0.406]), std=np.array([0.229, 0.224, 0.225])): processed_image = (image_array - mean) / std return processed_image input_shape = (224, 224, 3) inputs = Input(shape=input_shape) x = Conv2D(filters=64, kernel_size=(7, 7), strides=(2, 2), padding='same')(inputs) x = BatchNormalization()(x) outputs = ReLU()(x) model = tf.keras.Model(inputs=inputs, outputs=outputs) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值