深度学习里面最重要的是数据,而有时候数据很少,又或者样本不均衡等问题,这时候就需要对图像进行一系列的数据增强,旋转就是常用的数据增强方式.至于python如何对图像旋转,在之前的文章就有所介绍,
python对图像旋转显示等
这里不详细细谈,一般直接想到的就是添加一个循环,按照循序读取图片,如果图片只有几千张,那可能值耗费几十分钟,但如果图像有上百万张,那么就需要耗费一天,甚至更多的时间,这时候就需要多进程来实现,python多进程虽然比不上c++等其他语言,但是python胜在方便,同样也能缩小很长的时间,本文的例子主要是用multiprocessing这个库.
直接看代码
- #coding=utf-8
- '''''
- #====================
- #测试一下进程
- #====================
- '''
- from multiprocessing import Pool
- import scipy
- from scipy import misc
- import os
- import time
- import glob
- from scipy import ndimage
- start = time.time()
- def get_image_paths(folder): #这个函数的作用的获取文件的列表,注释部分是获取
- # return (os.path.join(folder, f)
- # for f in os.listdir(folder)
- # if 'png' in f)
- return glob.glob(os.path.join(folder, '*.png'))
- def create_read_img(filename):
- im = misc.imread(filename) #读取图像
- img_rote = ndimage.rotate(im, 90) #旋转90度
- #scipy.misc.imsave('...',img_rote)
- img_path = '存放图像的目录/'
- imgs = get_image_paths(img_path)
- print imgs
- pool = Pool()
- pool.map(create_read_img,imgs)
- pool.close()
- pool.join()
- # for i in imgs:
- # create_read_img(i) 这部分是循环,可以用来对比时间
- end = time.time()
- print end - start
from:
http://blog.csdn.net/hjxu2016/article/details/79536129