slim库中的预处理方法分析

slim库中的预处理方法分析


research/slim/preprocessing/cifarnet_preprocessing.py 源码

对图片的预处理过程为:

训练数据集:

  1. 对图片进行填充。(tf.pad)
  2. 按指定大小随机裁剪图像。(tf.random_crop)
  3. 随机水平翻转。(tf.image.random_flip_left_right)
  4. 随机亮度。(tf.image.random_brightness)
  5. 随机对比度。 (tf.image.random_contrast)
  6. 图像标准化。 (tf.image.per_image_standardization)

验证数据集:

  1. 图片裁剪或填充至指定大小。(tf.image.resize_image_with_crop_or_pad)
  2. 图像标准化。 (tf.image.per_image_standardization)

research/slim/preprocessing/inception_preprocessing.py 源码

对图片的预处理过程为:

训练数据集:

  1. 添加标注框(tf.image.draw_bounding_boxes)。
  2. 随机裁剪原图像的一部分( 使用 tf.image.sample_distorted_bounding_box 为图像生成单个随机变形的边界框,并用tf.slice 进行裁剪)。
  3. 缩放图片到指定大小(tf.image.resize_images, 第3个参数method随机指定)。
  4. 随机水平翻转(tf.image.random_flip_left_right)。
  5. 随机扭曲颜色(tf.image.random_brightness 随机亮度, tf.image.random_saturation 随机饱和度, tf.image.random_hue 随机色相, tf.image.random_contrast 随机对比度, tf.clip_by_value 随机完之后重新把值限定到0和1之间)。
  6. 图片减去0.5,即 tf.subtract(image, 0.5)。
  7. 图片乘以2,即 tf.multiply(image, 2.0)。

验证数据集:

  1. 裁剪图片,只要中间87.5%区域(tf.image.central_crop)。
  2. 使用双线性插值法缩放图片到指定大小(tf.image.resize_bilinear)。
  3. 图片减去0.5,即 tf.subtract(image, 0.5)。
  4. 图片乘以2,即 tf.multiply(image, 2.0)。

research/slim/preprocessing/lenet_preprocessing.py 源码

对图片的预处理过程为:

  1. 裁剪或填充到指定大小(tf.image.resize_image_with_crop_or_pad 宽高大于指定大小,则进行裁剪,否则用0进行填充)。
  2. 图片减去128(tf.subtract(image, 128.0))。
  3. 图片除以128(tf.div(image, 128.0))。

research/slim/preprocessing/vgg_preprocessing.py 源码

对图片的预处理过程为:

训练数据集:

  1. 图片等比例缩放到随机尺寸。 (tf.random_uniform 生成随机值, tf.image.resize_bilinear 进行缩放)
  2. 图片随机指定裁剪位置,然后裁剪到指定大小。 (tf.slice 裁剪, tf.reshape 重新指定大小)
  3. 随机水平翻转。 (tf.image.random_flip_left_right)
  4. 对图片的RGB值进行变更(RGB分别减一个固定值)。

验证数据集:

  1. 图片等比例缩放到特定尺寸。 (tf.image.resize_bilinear)
  2. 图片居中裁剪到指定大小。 (tf.slice 裁剪, tf.reshape 重新指定大小)
  3. 对图片的RGB值进行变更。 (RGB分别减一个固定值)