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打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
python使用pymysql实现操作mysql
Sep 13 Python
Atom的python插件和常用插件说明
Jul 08 Python
Python骚操作之动态定义函数
Mar 26 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
Python制作词云图代码实例
Sep 09 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
python框架flask入门之路由及简单实现方法
Jun 07 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
可以在线执行PHP代码包装修正版
2008/03/15 PHP
Destoon实现多表查询示例
2014/08/21 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
页面中iframe相互传值传参
2009/12/13 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
全面了解js中的script标签
2016/07/04 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python中pip的安装与使用教程
2018/08/10 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python 代码调试技巧示例代码
2020/08/11 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
Android面试题及答案
2015/09/04 面试题
毕业生自我鉴定
2013/11/05 职场文书
先进事迹演讲稿
2014/09/01 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
mysql序号rownum行号实现方式
2022/12/24 MySQL