使用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实现全角半角转换的方法
Aug 18 Python
python比较两个列表大小的方法
Jul 11 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python selenium 三种等待方式解读
Sep 15 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
基于tensorflow加载部分层的方法
Jul 26 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
TensorFLow 变量命名空间实例
Feb 11 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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下使用SMTP发邮件的代码
2008/01/10 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
javascript 写类方式之十
2009/07/05 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
介绍一下RMI的基本概念
2016/12/17 面试题
三八妇女节趣味活动方案
2014/08/23 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
Golang的继承模拟实例
2021/06/30 Golang
如何用Python搭建gRPC服务
2021/06/30 Python
MySQL约束超详解
2021/09/04 MySQL