网络编程
位置:首页>> 网络编程>> 网络编程>> tensorflow图像裁剪进行数据增强操作

tensorflow图像裁剪进行数据增强操作

作者:yeler082  发布时间:2023-06-23 14:33:20 

标签:tensorflow,图像,裁剪,增强

我就废话不多说了,大家还是直接看代码吧~

#!/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)

来源:https://blog.csdn.net/yeler082/article/details/90375302

0
投稿

猜你喜欢

  • 关于CSS中的命名规则(其实我觉得是XHTML元素的命名规则更加合理些)这个问题,已经有很多人在说了,其中也不乏一些真知灼见。不过这种东西也
  • 在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范
  • 一直以来,Web 字体背着单调的恶名,因为想在网页上显示一种字体,该字体文件本身必须存在于用户的电脑中,由于这个限制,加上 Web 用户可能
  • MaxDB是MySQL AB公司通过SAP认证的数据库。MaxDB数据库服务器补充了MySQL AB产品系列。某些MaxDB特性在MySQL
  • System.Data.OleDb.OleDbDataAdapter与System.Data.OleDb.OleDbDataReader的区
  • 平时每逢alexa排名更新时,我都需要将所有相关的同类网站的排名整理一下,看一下这些对手网站的排名更新情况。做的多了,也就烦了,虽然也才30
  • 什么是CSS裸奔节?CSS裸奔节就是将这整站的css样式都去掉,这样所有的布局,颜色,背景什么的就都没有了(除非你使用table布局),只剩
  • PDOStatement::bindParamPDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 &
  • 最近心情非常差,而且还没有触底的样子,哎~~~总是会忍不住叹气~~~前些日子在Twitter上叨唠说“不在乎IE8什么时候推出,只在乎IE6
  • 由于某些原因需要把函数直接放到 img 标签上的 onload 属性执行,比如:For some reasons we have to ex
  • 如何让我的网页自动适应客户端的屏幕分辨率?然后用下列办法进行自动推送:<% @language="vbscript
  • 原文:Creating a Star Rater using CSS链接:http://komodomedia.com/blog/index
  • 学习一些你已经知道的知识也没有什么坏处,是吧?我知道这可能并不一定非常有意义,但是很多时候我们往往知其然而不知其所以然,这会使得事情出现惊人
  • 设法让用户happy吧~只要你的设计让用户乐了,产品的个性就得到了一次彰显,而用户对网站的情感就会获得一次升华,看看下面的知名网站的人性化设
  • 在产品开发中,由UED发起的项目越来越多,但是现在的问题是很难为其设定商业价值的目标。如果没有明确的商业价值目标,很多公司根本没办法花大成本
  • 上一次,我们谈到在ASP中如何利用“正则表达式”对象来实现各种数据的校验,文中描述了正则表达式对象的强大功能,接下来,我们来看看有关“正则表
  • 困扰我很久问题终于在昨天被解决了。其实问题很简单<% =now %>老是显示12小时制,总是出现上午、下午。这个问题虽然很小,但
  • 先问一个问题, 在firefox 2里,正则表达式字符"\d"全等于"[0-9]"吗?有可能你会答&
  • 不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法&ldq
  • Google中秋的logo出来了,酷似一美男站在月亮上,结果被网友弄出一撒尿版来。中国网民好智慧啊~原logo: 撒尿版logo:
手机版 网络编程 asp之家 www.aspxhome.com