深度学习两种图像数据预处理具体方法

vgg 预处理

输入图片 height, width

RESIZE_SIDE_MIN = 256

RESIZE_SIDE_MAX = 512

R_MEAN = 123.68G_MEAN = 116.78B_MEAN = 103.94

训练预处理

  1. scale = width < height ? small_size / width : small_size / height 其中 small_size 为 RESIZE_SIDE_MIN 到 RESIZE_SIDE_MAX 的随机数
  2. new_width = width * scale new_height = height * scale
  3. 用二分插值法将 (height, width) 转为 (new_height, new_width)
  4. 将 new_height, new_width 的图片 crop 为 crop_height(224), crop_width(224) 其中必须满足 new_height >= crop_height, new_width >= crop_width
  5. 将图片左右翻转(50% 的概率会翻转)
  6. RGB 分别减去其平均值,其中依次为 R_MEAN, G_MEAN B_MEAN

测试预处理

  1. 用二分插值法将 (height, width) 转为 (new_height, new_width) 其中 new_height = new_width = 256
  2. 从 crop 中心的 crop_height, crop_width
  3. RGB 分别减去其平均值,其中依次为 R_MEAN, G_MEAN B_MEAN

采用上述预处理方法的模型

  • resnet_v1_50
  • resnet_v1_101
  • resnet_v1_152
  • resnet_v1_200
  • resnet_v2_50
  • resnet_v2_101
  • resnet_v2_152
  • resnet_v2_200
  • vgg
  • vgg_a
  • vgg_16
  • vgg_19

inception 预处理

训练预处理

  1. 对图片进行随机 crop, 使其与 bbox 的重叠部分大于 0.1,长宽比在 (0.75, 1.33) 之间,croped 之后的图片大小为原图的(0.05, 1.0)。
  2. 将 crop 之后的图片大小 resize 为 crop_height(224), crop_width(224)
  3. 将 crop 图片左右翻转(50% 的概率会翻转)
  4. 调整 crop 图片的亮度(32. / 255.)和饱和度(0.5, 1.5)
  5. 每个元素减去 0.5,再乘以 2.0

测试预处理

  1. central crop
  2. 二分法插值,将图片变为 height, width
  3. 每个元素减去 0.5,再乘以 2.0

采用上述预处理方法的模型

  • inception
  • inception_v1
  • inception_v2
  • inception_v3
  • inception_v4
  • inception_resnet_v2
  • mobilenet_v1
  • nasnet_mobile
  • nasnet_large
  • pnasnet_large,
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
水稻分类任务是一种典型的图像分类任务,可以使用深度学习技术来解决。以下是一个基于图像数据集的水稻分类深度学习Python的示例: 1. 数据准备:收集水稻图像数据,并将其分为训练集和测试集。同时,需要对图像进行预处理,例如缩放、裁剪、归一化等处理操作。 2. 构建模型:使用Python中的深度学习框架,例如TensorFlow、Keras等,构建卷积神经网络模型。通常,模型包括输入层、卷积层、池化层、全连接层和输出层。 3. 训练模型:使用训练集对模型进行训练,并对模型进行优化,例如使用反向传播算法和梯度下降算法进行参数更新。 4. 测试模型:使用测试集对模型进行测试,评估模型的性能和准确率。 5. 模型优化:根据测试结果,对模型进行优化,例如调整模型参数、增加层数、更改激活函数等操作。 以下是一个简单的代码示例,使用Keras框架来构建、训练和测试一个卷积神经网络模型: ```python import tensorflow as tf from tensorflow.keras import layers # 构建模型 model = tf.keras.Sequential([ layers.Conv2D(64, (3,3), activation='relu', input_shape=(128, 128, 3)), layers.MaxPooling2D((2,2)), layers.Conv2D(32, (3,3), activation='relu'), layers.MaxPooling2D((2,2)), layers.Flatten(), layers.Dense(128, activation='relu'), layers.Dense(3, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 history = model.fit(train_dataset, epochs=10, validation_data=val_dataset) # 测试模型 test_loss, test_acc = model.evaluate(test_dataset) print('Test accuracy:', test_acc) ``` 在这个示例中,我们使用了两个卷积层和两个池化层来构建模型,然后使用交叉熵损失函数和Adam优化器进行编译。接下来,我们使用训练集对模型进行训练,并使用测试集对模型进行测试。最后,我们输出测试结果,评估模型的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值