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 相关文章推荐
python3去掉string中的标点符号方法
Jan 22 Python
Python Gitlab Api 使用方法
Aug 28 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
Python多线程的退出控制实现
Aug 10 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
python爬虫如何解决图片验证码
Feb 14 Python
python实战之用emoji表情生成文字
May 08 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
javascript AutoScroller 函数类
2009/05/29 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
[04:29]2014DOTA2国际邀请赛 主赛事第三日TOPPLAY
2014/07/21 DOTA
Python os模块介绍
2014/11/30 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python安装twisted的问题解析
2018/08/21 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
如何基于Python按行合并两个txt
2020/11/03 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
实验教师岗位职责
2014/02/13 职场文书
期末学生评语大全
2014/04/24 职场文书
十周年庆典策划方案
2014/06/03 职场文书
文明城市创建标语
2014/06/16 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js