tensorflow图像裁剪进行数据增强操作


Posted in Python onJune 30, 2020

我就废话不多说了,大家还是直接看代码吧~

#!/usr/bin/env python
# encoding: utf-8
'''
@author: lele Ye
@contact: 1750112338@qq.com
@software: pycharm 2018.2
@file: 13mnist.py
@time: 2018/12/17 10:23
@desc:
'''
import tensorflow as tf
import scipy.misc
import matplotlib.pyplot as plt
import random
 
# 读取图像可任意大小
filenames = ['./tianchi.jpg']
# 创建文件读取队列
filename_queue = tf.train.string_input_producer(filenames)
# 一个阅读器,读取整个文件,返回文件名称key,以及文件中所有的内容value
reader = tf.WholeFileReader()
# Returns the next record (key, value) pair produced by a reader
key, value = reader.read(filename_queue)
images = tf.image.decode_jpeg(value) # tf.image.decode_png(value)
target_width = target_height = 224
 
# 裁切图片
with tf.Session() as sess:
  # Coordinator的使用,用于多线程的协调
  coord = tf.train.Coordinator()
  # 启动所有graph收集到的队列运行器(queuerunners)
  threads = tf.train.start_queue_runners(coord=coord)
  height,width,channels = sess.run(tf.shape(images))
  offset_height = random.randint(0,height-target_height)
  offset_width = random.randint(0,width-target_width)
  reshapeimg = tf.image.crop_to_bounding_box(images, offset_height=offset_height, offset_width=offset_width,
                        target_height=target_height,target_width=target_width)
  print(type(reshapeimg)) # <class 'tensorflow.python.framework.ops.Tensor'>
  reimg1 = reshapeimg.eval() # reimg1的类型是<class 'numpy.ndarray'>
  scipy.misc.imsave('./crop.jpg', reimg1)
  plt.imshow(reimg1)
  plt.axis("off")
  plt.show()
  # 请求线程结束
  coord.request_stop()
  # 等待线程终止
  coord.join(threads)

原始图像480x320x3:

tensorflow图像裁剪进行数据增强操作

裁剪后224x224x3:

tensorflow图像裁剪进行数据增强操作

补充知识:Tensorflow 图像增强(ImageDataGenerator)

当我们训练一个较为复杂的网络,并且我们的训练数据集有限时,网络十分容易陷入过拟合的状态。

解决这个问题的一个可能的有效方法是:进行数据增强,即通过已有的有限的数据集,通过图像处理等方法(旋转,剪切,缩放…),获得更多的,类似的,多样化的数据。

数据增强处理,不会占用更多的存储空间,即在数据增强过程中,原始的数据不会被修改,所有的处理过程都是在内存中 即时(on-the-fly) 的处理。

注意:

数据增强不一定是万能药(虽然数据多了),数据增强提高了原始数据的随机性,但是若 测试集或应用场景 并不具有这样的随机性,那么它将不会起到作用,还会增加训练所需的时间。

使用方法:

train_datagen = ImageDataGenerator(
    rescale=1./255, #数据值除以255,[0-255] ->[0,1]
    shear_range=0.2, #剪切强度(逆时针方向的剪切角度,以度为单位)
    zoom_range=0.2, #随机缩放范围
    horizontal_flip=True) #水平翻转

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
    'data/train',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
    'data/validation',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary')

model.fit_generator(
    train_generator,
    steps_per_epoch=2000,
    epochs=50,
    validation_data=validation_generator,
    validation_steps=800)

以上这篇tensorflow图像裁剪进行数据增强操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python文件处理
Feb 29 Python
python数据结构之链表详解
Sep 12 Python
Python实现按逗号分隔列表的方法
Oct 23 Python
基于Python2、Python3中reload()的不同用法介绍
Aug 12 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
Python接口测试get请求过程详解
Feb 28 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
详解python metaclass(元类)
Aug 13 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 #Python
Python openpyxl模块实现excel读写操作
Jun 30 #Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 #Python
Python的控制结构之For、While、If循环问题
Jun 30 #Python
关于tensorflow softmax函数用法解析
Jun 30 #Python
基于tensorflow for循环 while循环案例
Jun 30 #Python
解析Tensorflow之MNIST的使用
Jun 30 #Python
You might like
PHP生成静态页
2006/11/25 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python pdb调试方法分享
2014/01/21 Python
python实现识别相似图片小结
2016/02/22 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Python 实现数组相减示例
2019/12/27 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
网络编辑职责
2014/03/01 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
文员求职信
2014/07/15 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python