slim库中的预处理方法分析
slim库中的预处理方法分析
research/slim/preprocessing/cifarnet_preprocessing.py 源码
对图片的预处理过程为:
训练数据集:
- 对图片进行填充。(tf.pad)
- 按指定大小随机裁剪图像。(tf.random_crop)
- 随机水平翻转。(tf.image.random_flip_left_right)
- 随机亮度。(tf.image.random_brightness)
- 随机对比度。 (tf.image.random_contrast)
- 图像标准化。 (tf.image.per_image_standardization)
验证数据集:
- 图片裁剪或填充至指定大小。(tf.image.resize_image_with_crop_or_pad)
- 图像标准化。 (tf.image.per_image_standardization)
research/slim/preprocessing/inception_preprocessing.py 源码
对图片的预处理过程为:
训练数据集:
- 添加标注框(tf.image.draw_bounding_boxes)。
- 随机裁剪原图像的一部分( 使用 tf.image.sample_distorted_bounding_box 为图像生成单个随机变形的边界框,并用tf.slice 进行裁剪)。
- 缩放图片到指定大小(tf.image.resize_images, 第3个参数method随机指定)。
- 随机水平翻转(tf.image.random_flip_left_right)。
- 随机扭曲颜色(tf.image.random_brightness 随机亮度, tf.image.random_saturation 随机饱和度, tf.image.random_hue 随机色相, tf.image.random_contrast 随机对比度, tf.clip_by_value 随机完之后重新把值限定到0和1之间)。
- 图片减去0.5,即 tf.subtract(image, 0.5)。
- 图片乘以2,即 tf.multiply(image, 2.0)。
验证数据集:
- 裁剪图片,只要中间87.5%区域(tf.image.central_crop)。
- 使用双线性插值法缩放图片到指定大小(tf.image.resize_bilinear)。
- 图片减去0.5,即 tf.subtract(image, 0.5)。
- 图片乘以2,即 tf.multiply(image, 2.0)。
research/slim/preprocessing/lenet_preprocessing.py 源码
对图片的预处理过程为:
- 裁剪或填充到指定大小(tf.image.resize_image_with_crop_or_pad 宽高大于指定大小,则进行裁剪,否则用0进行填充)。
- 图片减去128(tf.subtract(image, 128.0))。
- 图片除以128(tf.div(image, 128.0))。
research/slim/preprocessing/vgg_preprocessing.py 源码
对图片的预处理过程为:
训练数据集:
- 图片等比例缩放到随机尺寸。 (tf.random_uniform 生成随机值, tf.image.resize_bilinear 进行缩放)
- 图片随机指定裁剪位置,然后裁剪到指定大小。 (tf.slice 裁剪, tf.reshape 重新指定大小)
- 随机水平翻转。 (tf.image.random_flip_left_right)
- 对图片的RGB值进行变更(RGB分别减一个固定值)。
验证数据集:
- 图片等比例缩放到特定尺寸。 (tf.image.resize_bilinear)
- 图片居中裁剪到指定大小。 (tf.slice 裁剪, tf.reshape 重新指定大小)
- 对图片的RGB值进行变更。 (RGB分别减一个固定值)