|
| 1 | +#!/usr/bin/env python2 |
| 2 | + |
| 3 | +import sys |
| 4 | +sys.path.append("/home/bamos/repos/caffe-local/python") |
| 5 | + |
| 6 | +import argparse |
| 7 | +import numpy as np |
| 8 | +import os |
| 9 | +import time |
| 10 | + |
| 11 | +from caffe.proto import caffe_pb2 |
| 12 | +from caffe.io import array_to_blobproto |
| 13 | +from collections import defaultdict |
| 14 | +from skimage import io |
| 15 | + |
| 16 | +if __name__ == '__main__': |
| 17 | + parser = argparse.ArgumentParser() |
| 18 | + parser.add_argument('meanPrefix', type=str, help="TODO") |
| 19 | + parser.add_argument('imageDir', type=str, help="TODO") |
| 20 | + args = parser.parse_args() |
| 21 | + |
| 22 | + exts = ["jpg", "png"] |
| 23 | + |
| 24 | + mean = np.zeros((1, 3, 152, 152)) |
| 25 | + N = 0 |
| 26 | + classSizes = defaultdict(int) |
| 27 | + |
| 28 | + beginTime = time.time() |
| 29 | + for subdir, dirs, files in os.walk(args.imageDir): |
| 30 | + for fName in files: |
| 31 | + (imageClass, imageName) = (os.path.basename(subdir), fName) |
| 32 | + if any(imageName.lower().endswith("." + ext) for ext in exts): |
| 33 | + img = io.imread(os.path.join(subdir, fName)) |
| 34 | + if img.shape == (152, 152, 3): |
| 35 | + mean[0][0] += img[:,:,0] |
| 36 | + mean[0][1] += img[:,:,1] |
| 37 | + mean[0][2] += img[:,:,2] |
| 38 | + N += 1 |
| 39 | + if N % 1000 == 0: |
| 40 | + elapsed = time.time() - beginTime |
| 41 | + print("Processed {} images in {:.2f} seconds. " |
| 42 | + "{:.2f} images/second.".format(N, elapsed, |
| 43 | + N/elapsed)) |
| 44 | + mean[0] /= N |
| 45 | + |
| 46 | + blob = array_to_blobproto(mean) |
| 47 | + with open("{}.binaryproto".format(args.meanPrefix), 'wb') as f: |
| 48 | + f.write(blob.SerializeToString()) |
| 49 | + np.save("{}.npy".format(args.meanPrefix), mean[0]) |
| 50 | + |
| 51 | + meanImg = np.transpose(mean[0].astype(np.uint8), (1, 2, 0)) |
| 52 | + io.imsave("{}.png".format(args.meanPrefix), meanImg) |
0 commit comments