使用TensorFlow对图像进行随机旋转的实现示例


Posted in Python onJanuary 20, 2020

在使用深度学习对图像进行训练时,对图像进行随机旋转有助于提升模型泛化能力。然而之前在做旋转等预处理工作时,都是先对图像进行旋转后保存到本地,然后再输入模型进行训练,这样的过程会增加工作量,如果图片数量较多,生成旋转的图像会占用更多的空间。直接在训练过程中便对图像进行随机旋转,可有效提升工作效率节省硬盘空间。

使用TensorFlow对图像进行随机旋转如下:

TensorFlow版本为1.13.1

#-*- coding:utf-8 -*-
'''
  使用TensorFlow进行图像的随机旋转示例
'''
 
import tensorflow as tf
import numpy as np
import cv2
import matplotlib.pyplot as plt
 
 
img = cv2.imread('tf.jpg')
img = cv2.resize(img,(220,220))
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
 
def tf_rotate(input_image, min_angle = -np.pi/2, max_angle = np.pi/2):
  '''
  TensorFlow对图像进行随机旋转
  :param input_image: 图像输入
  :param min_angle: 最小旋转角度
  :param max_angle: 最大旋转角度
  :return: 旋转后的图像
  '''
  distorted_image = tf.expand_dims(input_image, 0)
  random_angles = tf.random.uniform(shape=(tf.shape(distorted_image)[0],), minval = min_angle , maxval = max_angle)
  distorted_image = tf.contrib.image.transform(
    distorted_image,
    tf.contrib.image.angles_to_projective_transforms(
      random_angles, tf.cast(tf.shape(distorted_image)[1], tf.float32), tf.cast(tf.shape(distorted_image)[2], tf.float32)
    ))
  rotate_image = tf.squeeze(distorted_image, [0])
  return rotate_image
 
global_init = tf.global_variables_initializer()
with tf.Session() as sess:
  init = tf.initialize_local_variables()
  sess.run([init, global_init])
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)
  image = tf.placeholder(shape=(220, 220, 3), dtype=tf.float32)
 
  rotate_image = tf_rotate(image, -np.pi/2, np.pi/2)
  output = sess.run(rotate_image, feed_dict={image:img})
  # print('output:',output)
  plt.imshow(output.astype('uint8'))
  plt.title('rotate image')
  plt.show()

结果如下:

原图:

使用TensorFlow对图像进行随机旋转的实现示例

随机旋转后的图:

使用TensorFlow对图像进行随机旋转的实现示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
为Python程序添加图形化界面的教程
Apr 29 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
python实现雨滴下落到地面效果
Jun 21 Python
Linux下python制作名片示例
Jul 20 Python
Python命名空间的本质和加载顺序
Dec 17 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python实现字符串加密成纯数字
Mar 19 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
为什么python比较流行
Jun 19 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 #Python
python各层级目录下import方法代码实例
Jan 20 #Python
Python 识别12306图片验证码物品的实现示例
Jan 20 #Python
如何基于python实现归一化处理
Jan 20 #Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
Jan 20 #Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 #Python
python如何通过pyqt5实现进度条
Jan 20 #Python
You might like
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP扩展开发入门教程
2015/02/26 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
使用python 3实现发送邮件功能
2018/06/15 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
大学生党课思想汇报
2013/12/29 职场文书
五一手机促销方案
2014/03/08 职场文书
干部下基层实施方案
2014/03/14 职场文书
市场调查策划方案
2014/06/10 职场文书
毕业生对母校寄语
2015/02/26 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
Selenium浏览器自动化如何上传文件
2022/04/06 Python