深度学习里面最重要的是数据,而有时候数据很少,又或者样本不均衡等问题,这时候就需要对图像进行一系列的数据增强,旋转就是常用的数据增强方式.至于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