def main(): parser = argparse.ArgumentParser(description="PyTorch FCN Training") parser.add_argument( "--config_file", default="", help="path to config file", type=str ) parser.add_argument("opts", help="Modify config options using the command-line", default=None, nargs=argparse.REMAINDER) args = parser.parse_args() num_gpus = int(os.environ["WORLD_SIZE"]) if "WORLD_SIZE" in os.environ else 1 if args.config_file != "": cfg.merge_from_file(args.config_file) cfg.merge_from_list(args.opts) cfg.freeze() output_dir = cfg.OUTPUT_DIR if output_dir and not os.path.exists(output_dir): mkdir(output_dir) logger = setup_logger("FCN_Model", output_dir, 0) logger.info("Using {} GPUS".format(num_gpus)) logger.info(args) if args.config_file != "": logger.info("Loaded configuration file {}".format(args.config_file)) with open(args.config_file, 'r') as cf: config_str = "\n" + cf.read() logger.info(config_str) logger.info("Running with config:\n{}".format(cfg)) train(cfg)
def main(): parser = argparse.ArgumentParser(description="BtrflyNet training with PyTorch") parser.add_argument( "--config_file", default="config/btrfly.yaml", metavar="FILE", help="path to config file", type=str ) parser.add_argument("--log_step", default=1, type=int, help="print logs every log_step") parser.add_argument("--save_step", default=5, type=int, help="save checkpoint every save_step") parser.add_argument("--eval_step", default=5, type=int, help="evaluate dataset every eval_step, disabled if eval_step <= 0") parser.add_argument("--use_tensorboard", default=1, type=int, help="use visdom to illustrate training process, unless use_visdom == 0") parser.add_argument("--train_from_no_checkpoint", default=1, type=int, help="train_from_no_checkpoint") args = parser.parse_args() # if torch.cuda.is_available(): # torch.backends.cudnn.benchmark = True cfg.merge_from_file(args.config_file) cfg.freeze() # make output directory designated by OUTPUT_DIR if necessary if cfg.OUTPUT_PATH: pathlib.Path(cfg.OUTPUT_PATH).mkdir(exist_ok=True) # logger_message help print message # it will also print info to stdout and to OUTPUT_DIR/log.txt (way: append) logger_message = setup_colorful_logger( "main_message", save_dir=os.path.join(cfg.OUTPUT_PATH, 'log.txt'), format="only_message") # print config info (cfg and args) # args are obtained by command line # cfg is obtained by yaml file and defaults.py in configs/ separator(logger_message) logger_message.warning(" ---------------------------------------") logger_message.warning("| Your config: |") logger_message.warning(" ---------------------------------------") logger_message.info(args) logger_message.warning(" ---------------------------------------") logger_message.warning("| Running with entire config: |") logger_message.warning(" ---------------------------------------") logger_message.info(cfg) separator(logger_message) train(cfg, args)
help="Directory to dataset") parser.add_argument('--experiment_dir', default='experiments/base_model', help="Directory to experiment") parser.add_argument( '--checkpoint_dir', help="Reload weights from .pth.tar file ('best' or 'last')") args = parser.parse_args() # Set the logger, import Tensorboard (fixes conflict with the logger) set_logger(os.path.join(args.experiment_dir, 'train.log')) from torch.utils.tensorboard import SummaryWriter # Import configs config_dir = args.experiment_dir + '/config.yaml' cfg.merge_from_file(config_dir) cfg.freeze() # Check GPU cuda = torch.cuda.is_available() # Fix seed torch.manual_seed(0) if cuda: torch.cuda.manual_seed(0) # Fetch dataloaders logging.info("Loading datasets...\n") dl = dataloaders.fetch_dataloaders(args.data_dir) train_dl, valid_dl, test_dl = dl['train'], dl['valid'], dl['test']
else: print("[INFO] opening video file...") # vs = cv2.VideoCapture(RTSP_URL) vs = cv2.VideoCapture(cfg.DATA.INPUT) print(cfg.DATA.INPUT) return vs # 越线值 total_down = 0 # 出现人数 total_up = 0 # 过线人数 # 加载配置信息,如果FRAME.CATE=0代表通道,1表示闸机 if cfg.FRAME.CATE == 0: cfg.merge_from_file('./config/asile.yaml') else: cfg.merge_from_file('./config/gate.yaml') cfg.freeze() def main_func(args, vs, yolo): scheduler = BackgroundScheduler() # 初始化任务函数 # 添加调度任务 # 调度方法为 timedTask,触发器选择 interval(间隔性),间隔时长为 1 秒 scheduler.add_job(timedTask, 'interval', seconds=cfg.KAFKA.PUSHINTER) # 间隔为1秒 # 启动调度任务 scheduler.start() writer = None # 写入对象,如果要写入视频,将实例化该对象 W = None