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 相关文章推荐
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
Python循环语句之break与continue的用法
Oct 14 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
Python操作Sql Server 2008数据库的方法详解
May 17 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
django 实现简单的插入视频
Apr 07 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
python基础教程之序列详解
2014/08/29 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
10张动图学会python循环与递归问题
2021/02/06 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
extern是什么意思
2016/03/10 面试题
后勤服务中心总经理工作职责
2014/03/03 职场文书
初中军训感想300字
2014/03/05 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
大学生新学期计划书
2014/04/28 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
思想政治表现评语
2015/01/04 职场文书
大学生十八大感想
2015/08/11 职场文书
给校长的建议书范文
2015/09/14 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python