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的Django框架完成视频处理任务的教程
Apr 02 Python
Python中实现三目运算的方法
Jun 21 Python
Python的Django框架安装全攻略
Jul 15 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python手机号码归属地查询代码
May 04 Python
Python正则表达式经典入门教程
May 22 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
django自带的权限管理Permission用法说明
May 13 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
使用pytorch实现论文中的unet网络
Jun 24 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
文件上传类
2006/10/09 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
Python中return语句用法实例分析
2015/08/04 Python
python动态加载包的方法小结
2016/04/18 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python 同时读取多个文件的例子
2019/07/16 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
三下乡活动方案
2014/01/31 职场文书
思想品德自我评价
2014/02/04 职场文书
装饰活动策划方案
2014/02/11 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
给校长的建议书100字
2014/05/16 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript