利用Python 脚本生成 .h5 文件 代码

利用Python 脚本生成 .h5 文件 

  1 import os, json, argparse
  2 from threading import Thread
  3 from Queue import Queue
  4
  5 import numpy as np
  6 from scipy.misc import imread, imresize
  7 import h5py
  8
  9 """
 10 Create an HDF5 file of images for training a feedforward style transfer model.
 11 """
 12
 13 parser = argparse.ArgumentParser()
 14 parser.add_argument('--train_dir', default='/media/wangxiao/WangXiao_Dataset/CoCo/train2014')
 15 parser.add_argument('--val_dir', default='/media/wangxiao/WangXiao_Dataset/CoCo/val2014')
 16 parser.add_argument('--output_file', default='/media/wangxiao/WangXiao_Dataset/CoCo/coco-256.h5')
 17 parser.add_argument('--height', type=int, default=256)
 18 parser.add_argument('--width', type=int, default=256)
 19 parser.add_argument('--max_images', type=int, default=-1)
 20 parser.add_argument('--num_workers', type=int, default=2)
 21 parser.add_argument('--include_val', type=int, default=1)
 22 parser.add_argument('--max_resize', default=16, type=int)
 23 args = parser.parse_args()
 24
 25
 26 def add_data(h5_file, image_dir, prefix, args):
 27   # Make a list of all images in the source directory
 28   image_list = []
 29   image_extensions = {'.jpg', '.jpeg', '.JPG', '.JPEG', '.png', '.PNG'}
 30   for filename in os.listdir(image_dir):
 31     ext = os.path.splitext(filename)[1]
 32     if ext in image_extensions:
 33       image_list.append(os.path.join(image_dir, filename))
 34   num_images = len(image_list)
 35
 36   # Resize all images and copy them into the hdf5 file
 37   # We'll bravely try multithreading
 38   dset_name = os.path.join(prefix, 'images')
 39   dset_size = (num_images, 3, args.height, args.width)
 40   imgs_dset = h5_file.create_dataset(dset_name, dset_size, np.uint8)
 41
 42   # input_queue stores (idx, filename) tuples,
 43   # output_queue stores (idx, resized_img) tuples
 44   input_queue = Queue()
 45   output_queue = Queue()
 46
 47   # Read workers pull images off disk and resize them
 48   def read_worker():
 49     while True:
 50       idx, filename = input_queue.get()
 51       img = imread(filename)
 52       try:
 53         # First crop the image so its size is a multiple of max_resize
 54         H, W = img.shape[0], img.shape[1]
 55         H_crop = H - H % args.max_resize
 56         W_crop = W - W % args.max_resize
 57         img = img[:H_crop, :W_crop]
 58         img = imresize(img, (args.height, args.width))
 59       except (ValueError, IndexError) as e:
 60         print filename
 61         print img.shape, img.dtype
 62         print e
 63       input_queue.task_done()
 64       output_queue.put((idx, img))
 65
 66   # Write workers write resized images to the hdf5 file
 67   def write_worker():
 68     num_written = 0
 69     while True:
 70       idx, img = output_queue.get()
 71       if img.ndim == 3:
 72         # RGB image, transpose from H x W x C to C x H x W
 73         imgs_dset[idx] = img.transpose(2, 0, 1)
 74       elif img.ndim == 2:
 75         # Grayscale image; it is H x W so broadcasting to C x H x W will just copy
 76         # grayscale values into all channels.
 77         imgs_dset[idx] = img
 78       output_queue.task_done()
 79       num_written = num_written + 1
 80       if num_written % 100 == 0:
 81         print 'Copied %d / %d images' % (num_written, num_images)
 82
 83   # Start the read workers.
 84   for i in xrange(args.num_workers):
 85     t = Thread(target=read_worker)
 86     t.daemon = True
 87     t.start()
 88
 89   # h5py locks internally, so we can only use a single write worker =(
 90   t = Thread(target=write_worker)
 91   t.daemon = True
 92   t.start()
 93
 94   for idx, filename in enumerate(image_list):
 95     if args.max_images > 0 and idx >= args.max_images: break
 96     input_queue.put((idx, filename))
 97
 98   input_queue.join()
 99   output_queue.join()
100
101
102
103 if __name__ == '__main__':
104
105   with h5py.File(args.output_file, 'w') as f:
106     add_data(f, args.train_dir, 'train2014', args)
107
108     if args.include_val != 0:
109       add_data(f, args.val_dir, 'val2014', args)

 

时间: 2024-10-23 19:56:42

利用Python 脚本生成 .h5 文件 代码的相关文章

利用Python批量生成任意尺寸的图片_python

实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- import threading from PIL import Image image_size = range(1, 1001) def start(): for size in image_size: t = threading.Thread(target=create_image, args=(s

Python脚本实时处理log文件的方法_python

这个Python脚本是用来对实时文件的内容监控,比如 Error 或者 time out 字段都可以进行自定义:算是我的第一个真正的Python脚本,自己感觉还是比较臃肿,不过打算放到blog上记录一下(还是初学者,大神们勿喷哈),真心希望博友们能够再指点一下(现在记录每次的文件大小值是输出到了一个文件中,并且里面还嵌套了有shell命令,这些我认为都是可以优化掉的吧,只是现在我还不知道怎么做):告警是基于zabbix,自定义的模板是120s执行一次 #!/usr/local/bin/pytho

php生成pdf文件代码(1/12)

<? //php教程生成pdf文件代码 /* 生成pdf文件如果真的生成很好,是很复杂的,下面我们来看看一款完整理的php生成pdf文件代码吧,他可以把文本文件生成pdf文件也可以利用图片文件生成pdf文件哦. 这款生成pdf文件用到文件有 fpdf.php chinese.php picpdf.php */ //fpdf.php代码 define('fpdf_version','1.6'); class fpdf { var $page;               //current pag

Linux下用Python脚本监控目录变化代码分享

  这篇文章主要介绍了Linux下用Python脚本监控目录变化代码分享,本文直接给出实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python #coding=utf-8   import os from pyinotify import WatchManager, Notifier, ProcessEven

利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程

  这篇文章主要介绍了利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程,示例基于CentOS操作系统,需要的朋友可以参考下 在 CentOS 下使用 apache+mod_wsgi 部署了 MoinMoin,但是编辑和保存页面很慢,于是准备使用 nginx+uwsgi 重新部署 本文假定已经按照官方指引 Quick MoinMoin on CentOS 完成了 apache 和 mod_wsgi 之外的基础安装 安装 Nginx 默认情况下,CentOS 下没有 ngin

shell-linux sh脚本生成txt文件

问题描述 linux sh脚本生成txt文件 执行sh生成数据文件,然后后面要求在执行成功后生产一个日志文件,日志文件中并不需要什么内容. 解决方案 Linux下通过sh脚本执行jar文件简单的Linux sh脚本文件linux下sh脚本定时删除文件 解决方案二: #!/bin/sh DE1="_" DE2="." for fl in `ls * | grep data` do part1=`echo $fl | cut -d$DE1 -f 1` part2=`ec

5种php生成swf 文件代码

/* 下面这几款php生成flash文件代码,是从简单的生成swf文件到生成 flash动画文件等,每个实例都是经典的. */ //首先开启php扩展php_ming $f = new swffont( '_sans' ); $t = new swftextfield(); $t->setfont( $f ); $t->setcolor( 0, 0, 0 ); $t->setheight( 400 ); $t->addstring( 'hello world' ); $m = ne

利用Python读取外部数据文件的例子

不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可视化.数据挖掘等.   在本期的Python学习中,我们将针对Python如何获取外部数据做一个详细的介绍,从中我们将会学习以下4个方面的数据获取:   1.读取文本文件的数据,如txt文件和csv文件   2.读取电子表格文件,如Excel文件   3.读取统计软件生成的数据文件,如SAS数据集.

java利用Ant脚本生成war包全过程_java

使用ant脚本前的准备 1.下载一个ant安装包.如:apache-ant-1.8.4-bin.zip.解压到E盘. 2.配置环境变量.新增ANT_HOME:E:\apache-ant-1.8.4:PATH增加:E:\apache-ant-1.8.4\bin. 3.检查ant是否配置完成.运行->cmd输入:ant -version.查看是否打印ant的版本号. 打包的实质生成jar包的实质 1.编译工程src文件夹下的java文件,生成相应的class文件. 2.将所有的class文件集合成j