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实现数通设备tftp备份配置文件示例
Apr 02 Python
Python中操作符重载用法分析
Apr 29 Python
Python日期的加减等操作的示例
Aug 15 Python
windows10下python3.5 pip3安装图文教程
Apr 02 Python
Windows下python3.7安装教程
Jul 31 Python
python实现将汉字保存成文本的方法
Nov 16 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
Python使用lambda抛出异常实现方法解析
Aug 20 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
摩卡咖啡
2021/03/03 咖啡文化
php后门URL的防范
2013/11/12 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
微信access_token的获取开发示例
2015/04/16 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
python中__call__内置函数用法实例
2015/06/04 Python
python实现京东秒杀功能
2018/07/30 Python
python的常用模块之collections模块详解
2018/12/06 Python
django-filter和普通查询的例子
2019/08/12 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
十佳教师事迹材料
2014/01/11 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
教师简历自我评价
2014/02/03 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
介绍信格式
2015/01/30 职场文书
刑事申诉状范文
2015/05/20 职场文书
如何写观后感
2015/06/19 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python