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的自定义过滤器
Oct 17 Python
python写入并获取剪切板内容的实例
May 31 Python
python递归实现快速排序
Aug 18 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 Python
关于Python字符编码与二进制不得不说的一些事
Oct 04 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
python 提取html文本的方法
May 20 Python
python实现学生信息管理系统(面向对象)
Jun 05 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将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP发送短信代码分享
2015/08/11 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
JavaScript Prototype对象
2009/01/07 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
js中document.write的那点事
2014/12/12 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
vue实现全选和反选功能
2017/08/31 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python 读取.nii格式图像实例
2020/07/01 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
走群众路线学习心得体会
2014/10/31 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis