python多进程批量读取图片以及对图片批量旋转等数据增强

深度学习里面最重要的是数据,而有时候数据很少,又或者样本不均衡等问题,这时候就需要对图像进行一系列的数据增强,旋转就是常用的数据增强方式.至于python如何对图像旋转,在之前的文章就有所介绍,

python对图像旋转显示等

这里不详细细谈,一般直接想到的就是添加一个循环,按照循序读取图片,如果图片只有几千张,那可能值耗费几十分钟,但如果图像有上百万张,那么就需要耗费一天,甚至更多的时间,这时候就需要多进程来实现,python多进程虽然比不上c++等其他语言,但是python胜在方便,同样也能缩小很长的时间,本文的例子主要是用multiprocessing这个库.

直接看代码

[python] 
view plain
 copy

  1. #coding=utf-8  
  2. ”’ 
  3. #==================== 
  4. #测试一下进程 
  5. #==================== 
  6. ”’  
  7.   
  8. from multiprocessing import Pool  
  9. import scipy  
  10. from scipy import misc  
  11. import os  
  12. import time  
  13. import glob  
  14. from scipy import ndimage  
  15. start = time.time()  
  16. def get_image_paths(folder): #这个函数的作用的获取文件的列表,注释部分是获取  
  17.     # return (os.path.join(folder, f)  
  18.     #     for f in os.listdir(folder)  
  19.     #         if ‘png’ in f)    
  20.     return glob.glob(os.path.join(folder, ‘*.png’))  
  21.   
  22.   
  23. def create_read_img(filename):  
  24.     im = misc.imread(filename)      #读取图像  
  25.     img_rote = ndimage.rotate(im, 90#旋转90度  
  26.     #scipy.misc.imsave(‘…’,img_rote)  
  27. img_path = ‘存放图像的目录/’  
  28. imgs = get_image_paths(img_path)  
  29. print imgs  
  30.   
  31. pool = Pool()  
  32. pool.map(create_read_img,imgs)  
  33. pool.close()  
  34. pool.join()  
  35. # for i in imgs:  
  36. #     create_read_img(i)  这部分是循环,可以用来对比时间  
  37.   
  38. end = time.time()  
  39. print end – start  



from: 
http://blog.csdn.net/hjxu2016/article/details/79536129

点赞