使用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 相关文章推荐
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python实现多线程抓取妹子图
Aug 08 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Python 画出来六维图
Jul 26 Python
Python 转换RGB颜色值的示例代码
Oct 13 Python
python实现银行管理系统
Oct 25 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
新手必备Python开发环境搭建教程
May 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使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
javascript中的有名函数和无名函数
2007/10/17 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
js阻止默认右键的下拉菜单方法
2018/01/02 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
采购类个人求职的自我评价
2014/02/18 职场文书
博士生导师推荐信
2014/07/08 职场文书
承诺函格式模板
2015/01/21 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL