使用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服务器与android客户端socket通信实例
Nov 12 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
python 实现屏幕录制示例
Dec 23 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
如何验证python安装成功
Jul 06 Python
python else语句在循环中的运用详解
Jul 06 Python
Python把图片转化为pdf代码实例
Jul 28 Python
jupyter notebook快速入门及使用详解
Nov 13 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高级编程实例:编写守护进程
2014/09/02 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
Python中的高级数据结构详解
2015/03/27 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
python pygame实现球球大作战
2019/11/25 Python
python selenium xpath定位操作
2020/09/01 Python
详解anaconda安装步骤
2020/11/23 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
初中生自我鉴定
2014/02/04 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
服务标兵事迹材料
2014/05/04 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
大学活动总结模板
2014/07/10 职场文书
村班子对照检查材料
2014/08/18 职场文书
党员个人整改措施
2014/10/24 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书