refactor parser

This commit is contained in:
Lorenzo 2021-03-23 08:40:40 +01:00
parent 75593fe3e0
commit 3c6ebe22c9
4 changed files with 12 additions and 13 deletions

View File

@ -81,7 +81,7 @@ class ActivityEvaluator:
extension = '.predictions.json' extension = '.predictions.json'
path_pif = os.path.join(self.dir_ann, basename + extension) path_pif = os.path.join(self.dir_ann, basename + extension)
annotations = open_annotations(path_pif) annotations = open_annotations(path_pif)
kk, _ = factory_for_gt(im_size, verbose=False) kk, _ = factory_for_gt(im_size)
# Collect corresponding gt files (ys_gt: 1 or 0) # Collect corresponding gt files (ys_gt: 1 or 0)
boxes_gt, ys_gt = parse_gt_collective(self.dir_data, seq, path_pif) boxes_gt, ys_gt = parse_gt_collective(self.dir_data, seq, path_pif)

View File

@ -32,14 +32,13 @@ class GenerateKitti:
def __init__(self, args): def __init__(self, args):
# Load Network # Load Network
self.net = args.net assert args.mode in ('mono', 'stereo'), "mode not recognized"
assert args.net in ('monstereo', 'monoloco_pp'), "net not recognized" self.net = 'monstereo' if args.mode == 'mono' else 'monoloco_pp'
use_cuda = torch.cuda.is_available() use_cuda = torch.cuda.is_available()
device = torch.device("cuda" if use_cuda else "cpu") device = torch.device("cuda" if use_cuda else "cpu")
self.model = Loco( self.model = Loco(
model=args.model, model=args.model,
net=args.net, mode=args.mode,
device=device, device=device,
n_dropout=args.n_dropout, n_dropout=args.n_dropout,
p_dropout=args.dropout, p_dropout=args.dropout,
@ -60,7 +59,6 @@ class GenerateKitti:
# Add monocular and stereo baselines (they require monoloco as backbone) # Add monocular and stereo baselines (they require monoloco as backbone)
if args.baselines: if args.baselines:
# Load MonoLoco # Load MonoLoco
self.baselines['mono'] = ['monoloco', 'geometric'] self.baselines['mono'] = ['monoloco', 'geometric']
self.monoloco = Loco( self.monoloco = Loco(
@ -72,7 +70,7 @@ class GenerateKitti:
linear_size=256 linear_size=256
) )
# Stereo baselines # Stereo baselines
if args.net == 'monstereo': if args.mode == 'stereo':
self.baselines['stereo'] = ['pose', 'reid'] self.baselines['stereo'] = ['pose', 'reid']
self.cnt_disparity = defaultdict(int) self.cnt_disparity = defaultdict(int)
self.cnt_no_stereo = 0 self.cnt_no_stereo = 0

View File

@ -45,11 +45,12 @@ class PreprocessKitti:
dic_names = defaultdict(lambda: defaultdict(list)) dic_names = defaultdict(lambda: defaultdict(list))
dic_std = defaultdict(lambda: defaultdict(list)) dic_std = defaultdict(lambda: defaultdict(list))
def __init__(self, dir_ann, iou_min, monocular=False): def __init__(self, dir_ann, mode='mono', iou_min=0.3):
self.dir_ann = dir_ann self.dir_ann = dir_ann
self.iou_min = iou_min self.iou_min = iou_min
self.monocular = monocular self.mode = mode
assert self.mode in ('mono', 'stereo'), "modality not recognized"
self.names_gt = tuple(os.listdir(self.dir_gt)) self.names_gt = tuple(os.listdir(self.dir_gt))
self.dir_kk = os.path.join('data', 'kitti', 'calib') self.dir_kk = os.path.join('data', 'kitti', 'calib')
self.list_gt = glob.glob(self.dir_gt + '/*.txt') self.list_gt = glob.glob(self.dir_gt + '/*.txt')
@ -160,7 +161,7 @@ class PreprocessKitti:
lab = ys[idx_gt][:-1] lab = ys[idx_gt][:-1]
# Preprocess MonoLoco++ # Preprocess MonoLoco++
if self.monocular: if self.mode == 'mono':
inp = preprocess_monoloco(keypoint, kk).view(-1).tolist() inp = preprocess_monoloco(keypoint, kk).view(-1).tolist()
lab = normalize_hwl(lab) lab = normalize_hwl(lab)
if ys[idx_gt][10] < 0.5: if ys[idx_gt][10] < 0.5:
@ -270,7 +271,7 @@ class PreprocessKitti:
print("Ambiguous instances removed: {}".format(cnt_ambiguous)) print("Ambiguous instances removed: {}".format(cnt_ambiguous))
print("Extra pairs created with horizontal flipping: {}\n".format(cnt_extra_pair)) print("Extra pairs created with horizontal flipping: {}\n".format(cnt_extra_pair))
if not self.monocular: if self.mode == 'stereo':
print('Instances with stereo correspondence: {:.1f}% '.format(100 * cnt_pair / cnt_pair_tot)) print('Instances with stereo correspondence: {:.1f}% '.format(100 * cnt_pair / cnt_pair_tot))
for phase in ['train', 'val']: for phase in ['train', 'val']:
cnt = cnt_mono[phase] + cnt_stereo[phase] cnt = cnt_mono[phase] + cnt_stereo[phase]

View File

@ -62,6 +62,7 @@ def cli():
# Preprocess input data # Preprocess input data
prep_parser.add_argument('--dir_ann', help='directory of annotations of 2d joints', required=True) prep_parser.add_argument('--dir_ann', help='directory of annotations of 2d joints', required=True)
prep_parser.add_argument('--mode', help='mono, stereo', default='mono')
prep_parser.add_argument('--dataset', prep_parser.add_argument('--dataset',
help='datasets to preprocess: nuscenes, nuscenes_teaser, nuscenes_mini, kitti', help='datasets to preprocess: nuscenes, nuscenes_teaser, nuscenes_mini, kitti',
default='kitti') default='kitti')
@ -69,7 +70,6 @@ def cli():
prep_parser.add_argument('--iou_min', help='minimum iou to match ground truth', type=float, default=0.3) prep_parser.add_argument('--iou_min', help='minimum iou to match ground truth', type=float, default=0.3)
prep_parser.add_argument('--variance', help='new', action='store_true') prep_parser.add_argument('--variance', help='new', action='store_true')
prep_parser.add_argument('--activity', help='new', action='store_true') prep_parser.add_argument('--activity', help='new', action='store_true')
prep_parser.add_argument('--monocular', help='new', action='store_true')
# Training # Training
training_parser.add_argument('--joints', help='Json file with input joints', required=True) training_parser.add_argument('--joints', help='Json file with input joints', required=True)
@ -132,7 +132,7 @@ def main():
prep.run() prep.run()
else: else:
from .prep.prep_kitti import PreprocessKitti from .prep.prep_kitti import PreprocessKitti
prep = PreprocessKitti(args.dir_ann, args.iou_min, args.monocular) prep = PreprocessKitti(args.dir_ann, mode=args.mode, iou_min=args.iou_min)
if args.activity: if args.activity:
prep.prep_activity() prep.prep_activity()
else: else: