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 相关文章推荐
python3 读写文件换行符的方法
Apr 09 Python
PyQt实现界面翻转切换效果
Apr 20 Python
PyCharm代码格式调整方法
May 23 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Python 变量的创建过程详解
Sep 02 Python
Python shutil模块用法实例分析
Oct 02 Python
python SVD压缩图像的实现代码
Nov 05 Python
详解python itertools功能
Feb 07 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python 实现定时任务的四种方式
Apr 01 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 HtmlReplace输入过滤安全函数
2010/07/03 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
Laravel中如何增加自定义全局函数详解
2017/05/09 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
初探nodeJS
2017/01/24 NodeJs
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
Python获取邮件地址的方法
2015/07/10 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
python实现随机漫步方法和原理
2019/06/10 Python
python binascii 进制转换实例
2019/06/12 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
python sleep和wait对比总结
2021/02/03 Python
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
DELPHI中如何调用API,可举例说明
2014/01/16 面试题
抵押贷款承诺书
2014/05/30 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
一篇文章学会Vue中间件管道
2021/06/20 Vue.js