recipedia / src /args.py
johnsonhung
init
2a3a041
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
import argparse
import os
def get_parser():
parser = argparse.ArgumentParser()
parser.add_argument('--save_dir', type=str, default='path/to/save/models',
help='path where checkpoints will be saved')
parser.add_argument('--project_name', type=str, default='inversecooking',
help='name of the directory where models will be saved within save_dir')
parser.add_argument('--model_name', type=str, default='model',
help='save_dir/project_name/model_name will be the path where logs and checkpoints are stored')
parser.add_argument('--transfer_from', type=str, default='',
help='specify model name to transfer from')
parser.add_argument('--suff', type=str, default='',
help='the id of the dictionary to load for training')
parser.add_argument('--image_model', type=str, default='resnet50', choices=['resnet18', 'resnet50', 'resnet101',
'resnet152', 'inception_v3'])
parser.add_argument('--recipe1m_dir', type=str, default='path/to/recipe1m',
help='directory where recipe1m dataset is extracted')
parser.add_argument('--aux_data_dir', type=str, default='../data',
help='path to other necessary data files (eg. vocabularies)')
parser.add_argument('--crop_size', type=int, default=224, help='size for randomly or center cropping images')
parser.add_argument('--image_size', type=int, default=256, help='size to rescale images')
parser.add_argument('--log_step', type=int , default=10, help='step size for printing log info')
parser.add_argument('--learning_rate', type=float, default=0.001,
help='base learning rate')
parser.add_argument('--scale_learning_rate_cnn', type=float, default=0.01,
help='lr multiplier for cnn weights')
parser.add_argument('--lr_decay_rate', type=float, default=0.99,
help='learning rate decay factor')
parser.add_argument('--lr_decay_every', type=int, default=1,
help='frequency of learning rate decay (default is every epoch)')
parser.add_argument('--weight_decay', type=float, default=0.)
parser.add_argument('--embed_size', type=int, default=512,
help='hidden size for all projections')
parser.add_argument('--n_att', type=int, default=8,
help='number of attention heads in the instruction decoder')
parser.add_argument('--n_att_ingrs', type=int, default=4,
help='number of attention heads in the ingredient decoder')
parser.add_argument('--transf_layers', type=int, default=16,
help='number of transformer layers in the instruction decoder')
parser.add_argument('--transf_layers_ingrs', type=int, default=4,
help='number of transformer layers in the ingredient decoder')
parser.add_argument('--num_epochs', type=int, default=400,
help='maximum number of epochs')
parser.add_argument('--batch_size', type=int, default=128)
parser.add_argument('--num_workers', type=int, default=8)
parser.add_argument('--dropout_encoder', type=float, default=0.3,
help='dropout ratio for the image and ingredient encoders')
parser.add_argument('--dropout_decoder_r', type=float, default=0.3,
help='dropout ratio in the instruction decoder')
parser.add_argument('--dropout_decoder_i', type=float, default=0.3,
help='dropout ratio in the ingredient decoder')
parser.add_argument('--finetune_after', type=int, default=-1,
help='epoch to start training cnn. -1 is never, 0 is from the beginning')
parser.add_argument('--loss_weight', nargs='+', type=float, default=[1.0, 0.0, 0.0, 0.0],
help='training loss weights. 1) instruction, 2) ingredient, 3) eos 4) cardinality')
parser.add_argument('--max_eval', type=int, default=4096,
help='number of validation samples to evaluate during training')
parser.add_argument('--label_smoothing_ingr', type=float, default=0.1,
help='label smoothing for bce loss for ingredients')
parser.add_argument('--patience', type=int, default=50,
help='maximum number of epochs to allow before early stopping')
parser.add_argument('--maxseqlen', type=int, default=15,
help='maximum length of each instruction')
parser.add_argument('--maxnuminstrs', type=int, default=10,
help='maximum number of instructions')
parser.add_argument('--maxnumims', type=int, default=5,
help='maximum number of images per sample')
parser.add_argument('--maxnumlabels', type=int, default=20,
help='maximum number of ingredients per sample')
parser.add_argument('--es_metric', type=str, default='loss', choices=['loss', 'iou_sample'],
help='early stopping metric to track')
parser.add_argument('--eval_split', type=str, default='val')
parser.add_argument('--numgens', type=int, default=3)
parser.add_argument('--greedy', dest='greedy', action='store_true',
help='enables greedy sampling (inference only)')
parser.set_defaults(greedy=False)
parser.add_argument('--temperature', type=float, default=1.0,
help='sampling temperature (when greedy is False)')
parser.add_argument('--beam', type=int, default=-1,
help='beam size. -1 means no beam search (either greedy or sampling)')
parser.add_argument('--ingrs_only', dest='ingrs_only', action='store_true',
help='train or evaluate the model only for ingredient prediction')
parser.set_defaults(ingrs_only=False)
parser.add_argument('--recipe_only', dest='recipe_only', action='store_true',
help='train or evaluate the model only for instruction generation')
parser.set_defaults(recipe_only=False)
parser.add_argument('--log_term', dest='log_term', action='store_true',
help='if used, shows training log in stdout instead of saving it to a file.')
parser.set_defaults(log_term=False)
parser.add_argument('--notensorboard', dest='tensorboard', action='store_false',
help='if used, tensorboard logs will not be saved')
parser.set_defaults(tensorboard=True)
parser.add_argument('--resume', dest='resume', action='store_true',
help='resume training from the checkpoint in model_name')
parser.set_defaults(resume=False)
parser.add_argument('--nodecay_lr', dest='decay_lr', action='store_false',
help='disables learning rate decay')
parser.set_defaults(decay_lr=True)
parser.add_argument('--load_jpeg', dest='use_lmdb', action='store_false',
help='if used, images are loaded from jpg files instead of lmdb')
parser.set_defaults(use_lmdb=True)
parser.add_argument('--get_perplexity', dest='get_perplexity', action='store_true',
help='used to get perplexity in evaluation')
parser.set_defaults(get_perplexity=False)
parser.add_argument('--use_true_ingrs', dest='use_true_ingrs', action='store_true',
help='if used, true ingredients will be used as input to obtain the recipe in evaluation')
parser.set_defaults(use_true_ingrs=False)
args = parser.parse_args()
return args