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代码检查工具pylint 让你的python更规范
Sep 05 Python
python之pandas用法大全
Mar 13 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
python3爬虫中异步协程的用法
Jul 10 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
详细介绍python操作RabbitMq
Apr 12 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php.ini 中文版
2006/10/28 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php函数与传递参数实例分析
2014/11/15 PHP
smarty中post用法实例
2014/11/28 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
javascript动态加载三
2012/08/22 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
python编写Logistic逻辑回归
2020/12/30 Python
Python引用计数操作示例
2018/08/23 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python3实现逐字输出的方法
2019/01/23 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
食品工程专业求职信
2014/06/15 职场文书
护理学专业求职信
2014/06/29 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
Python基于百度AI实现抓取表情包
2021/06/27 Python