def main(): args = make_parser().parse_args() root = vmdata.dataset_root(args.camera, (8, 0, 0)) with vmdata.VideoDataset(root) as vdset: _analyze_flow = partial(analyze_flow, vdset) if args.debug: print(args.fids) return for fid in args.fids: print('Running on frame {}'.format(fid), file=sys.stderr) _analyze_flow(fid)
def parse_cfg(basedir: str, filename: str) -> SimpleNamespace: runid = int(re.findall(r'\b(\d+)\b', os.path.splitext( os.path.basename(filename))[0])[0]) ini = ConfigParser() ini.read(filename) ns = SimpleNamespace() camera_id = list(map(int, map(str.strip, ini['data']['camera'].split(',')))) ns.root = vmdata.dataset_root(camera_id[0], tuple(camera_id[1:4])) ns.downsample_scale = int(ini['data']['downsample_scale'].strip()) ns.model_name = ini['model']['model_name'].strip() run_name = ini['model']['run_name'].strip() ns.savedir = os.path.join(basedir, '{}.{}'.format(run_name, runid), 'save') ns.progress = tuple(map(int, map(str.strip, ini['model']['progress'].split(',')))) ns.visualize_indices = range(*tuple(map(int, map( str.strip, ini['eval']['indices'].split(','))))) try: temperature = float(ini['eval']['temperature'].strip()) except (KeyError, ValueError): temperature = 1.0 ns.temperature = temperature try: bwth = float(ini['eval']['bwth'].strip()) except (KeyError, ValueError): bwth = None ns.bwth = bwth ns.todir = os.path.join(basedir, '{}.{}.viz'.format(run_name, runid), '{}_{}'.format(*ns.progress), 't{:.2f}'.format(ns.temperature)) try: device = ini['eval']['device'].strip() except KeyError: device = 'cpu' ns.device = device try: batch_size = int(ini['eval']['batch_size'].strip()) except KeyError: batch_size = 8 ns.batch_size = batch_size return ns
import logging logging.basicConfig(level=logging.INFO, format='%(name)s %(asctime)s -- %(message)s', filename='main.{}.log'.format(_rid)) import sys import torchvision.transforms as trans import vmdata import ezfirstae.loaddata as ld import ezfirstae.train as train max_epoch = 1 root = vmdata.dataset_root(9, (8, 0, 0)) normalize = trans.Normalize(*vmdata.get_normalization_stats(root, bw=True)) transform = ld.PreProcTransform(normalize, pool_scale=8, downsample_scale=3) statdir = 'stat.{}'.format(_rid) savedir = 'save.{}'.format(_rid) device = 'cuda' if __name__ == '__main__': logger = logging.getLogger() logger.info('Begin training: model=ezfirstae.models.pred9_f1to8(no-attention)') with vmdata.VideoDataset(root, transform=transform, max_mmap=3, max_gzcache=100) as vdset: trainset, testset = ld.contiguous_partition_dataset(range(len(vdset)), (5, 1)) try: train.train_pred9_f1to8_no_attn(vdset, trainset, testset, savedir, statdir, device, max_epoch) except KeyboardInterrupt: