def getBatch(batchSize, path): allPaths = image.list_pictures(path) allIms = np.zeros((batchSize, 3, sampSize, sampSize)) for i in xrange(batchSize): f1 = int(np.sign(np.random.rand() - .5)) f2 = int(np.sign(np.random.rand() - .5)) im = image.load_img(allPaths[int(np.random.rand() * len(allPaths))]).resize((newSize, newSize)) r = int(np.random.rand() * (newSize - sampSize)) c = int(np.random.rand() * (newSize - sampSize)) im = im.crop((r, c, r + sampSize, c + sampSize)) im = image.random_rotation(im, 5) allIms[i, :, :, :] = image.img_to_array(im) allIms[i, :, :, :] = allIms[i, :, ::-f1, ::-f2] return allIms/255.
default=False, action='store_true') parser.add_argument('-v', '--verbose', default=False, action='store_true') parser.add_argument('--force', default=False, action='store_true') args = parser.parse_args() if not os.path.exists(args.outdir): os.makedirs(args.outdir) if args.input.endswith('.tsv') or args.input.endswith('.txt'): allPaths = np.loadtxt(args.input, dtype=str).tolist() else: allPaths = image.list_pictures(args.input) # Generate encodings if not args.encoding: # build CAE model def get_encoding(i): paths = split_paths[i] device = devices[i] tf.keras.backend.clear_session() os.environ["CUDA_VISIBLE_DEVICES"] = device cae = modelCAE(args.filterSize, args.poolSize, args.sampSize, 1, args.weights) # build encode model
filterSize, border_mode='same', weights=cl.layers[12].get_weights())) encode.add(MaxPooling2D(pool_size=(poolSize, poolSize))) encode.add(Activation('relu')) encode.add(Flatten()) encode.add(Dense(1024, weights=cl.layers[16].get_weights())) encode.add(Activation('relu')) encode.add(Dense(100, weights=cl.layers[18].get_weights())) encode.add(Dropout(0.5)) encode.add(Activation('relu')) encode.compile(loss='mse', optimizer='adam') ############################### allPaths = image.list_pictures(imPath) repAll = np.zeros((len(allPaths), 100)) for i in xrange(len(repAll)): for co in xrange(10): repAll[i, :] += sum(encode.predict(getOne(100, allPaths[i]))) print(i) repAll /= 1000. K = 100 pca = PCA(n_components=K, whiten=True) reduced = pca.fit_transform(repAll) vari = pca.explained_variance_ratio_ nDims = np.where(np.cumsum(vari) > .98)[0][0] # repAll = reduced[:,:nDims] nDims = reduced.shape[1]
valFrac = float(sys.argv[2]) # fraction for validation trnBalance = '1' == sys.argv[3] # balance training set classes? print('-' * 50) print('Training Fraction: ' + str(trnFrac)) print('Validation Fraction: ' + str(valFrac)) print('Testing Fraction: ' + str(1 - trnFrac - valFrac)) print('-' * 50) if trnBalance: print('Balancing Training Set') else: print('Not Balancing Training Set') print('-' * 50) allPaths = np.asarray(image.list_pictures(imDir)) np.random.shuffle(allPaths) numIms = len(allPaths) trainIms = allPaths[:numIms * trnFrac] testIms = allPaths[numIms * (trnFrac + valFrac):] valIms = allPaths[numIms * trnFrac:numIms * (trnFrac + valFrac)] # pull sample classes labels = {} classNames = {} classIms = {} classCount = 0 fi = open(classFile) for lin in fi: im, cl = lin.strip('\n').split('\t') if cl in classNames: