#!/usr/bin/env python if __name__ != '__main__': raise Exception("Do not import me!") import sys sys.path.insert(0, "..") try: from yaml import CLoader as Loader, CDumper as Dumper except ImportError: from yaml import Loader, Dumper import yaml import logging from argparse import ArgumentParser from nabirds import CUB_Annotations, Dataset def init_logger(args): fmt = "%(levelname)s - [%(asctime)s] %(filename)s:%(lineno)d [%(funcName)s]: %(message)s" logging.basicConfig( format=fmt, level=getattr(logging, args.loglevel.upper(), logging.DEBUG), filename=args.logfile or None, filemode="w") def main(args): init_logger(args) annot = CUB_Annotations.from_info_file( args.info, args.parts, args.feature_model) logging.info("Loaded data from \"{}\"".format(annot.root)) uuids = getattr(annot, "{}_uuids".format(args.subset)) data = Dataset( uuids=uuids, annotations=annot, seed=args.seed ) logging.info("Loaded {} {} images".format(len(data), args.subset)) parser = ArgumentParser() parser.add_argument("info") parser.add_argument("--parts", "-p", choices=["GT", "GT2", "NAC", "L1_pred", "L1_full"] ) parser.add_argument("--feature_model", choices=["inception", "inception_tf", "resnet"] ) parser.add_argument("--subset", "-s", help="Possible subsets: train, test", choices=["train", "test"], default="train", type=str) parser.add_argument( '--logfile', type=str, default='', help='File for logging output') parser.add_argument( '--loglevel', type=str, default='INFO', help='logging level. see logging module for more information') parser.add_argument( '--seed', type=int, default=12311123, help='random seed') main(parser.parse_args())