MCPcopy Index your code
hub / github.com/ActiveVisionLab/DFNet / create_nerf

Function create_nerf

script/models/nerfw.py:356–502  ·  view source on GitHub ↗

Instantiate NeRF's MLP model.

(args)

Source from the content-addressed store, hash-verified

354 return torch.cat([static, transient], 1) # (B, 9)
355
356def create_nerf(args):
357 """Instantiate NeRF's MLP model.
358 """
359
360 # initialize embedding functions
361 if args.reduce_embedding==2: # use DNeRF embedding
362 embed_fn, input_ch, embedder_obj = get_embedder(args.multires, args.i_embed, args.reduce_embedding, args.epochToMaxFreq) # input_ch.shape=63
363 else:
364 embed_fn, input_ch, _ = get_embedder(args.multires, args.i_embed, args.reduce_embedding) # input_ch.shape=63
365
366 input_ch_views = 0
367 embeddirs_fn = None
368 if args.use_viewdirs:
369 if args.reduce_embedding==2: # use DNeRF embedding
370 if args.no_DNeRF_viewdir: # no DNeRF embedding for viewdir
371 raise NotImplementedError
372 embeddirs_fn, input_ch_views, _ = get_embedder(args.multires_views, args.i_embed) # currently not used
373 else:
374 embeddirs_fn, input_ch_views, embedddirs_obj = get_embedder(args.multires_views, args.i_embed, args.reduce_embedding, args.epochToMaxFreq)
375 else:
376 embeddirs_fn, input_ch_views, _ = get_embedder(args.multires_views, args.i_embed, args.reduce_embedding) # input_ch_views.shape=27
377 output_ch = 5 if args.N_importance > 0 else 4
378 skips = [4]
379
380 device = torch.device("cuda")
381
382 encode_a = True # static appearance
383 encode_t = True # transient
384 if encode_a:
385 if args.encode_hist: # experiemental embedding histogram
386 embedding_a = torch.nn.Embedding(args.N_vocab, 5)
387 embedding_a = embedding_a.to(device)
388 if encode_t:
389 if args.encode_hist: # experiemental embedding histogram
390 embedding_t = torch.nn.Embedding(args.N_vocab, 2)
391 embedding_t = embedding_t.to(device)
392
393 # initialize NeRF model
394 if args.NeRFH:
395 model = NeRFW('coarse', D=args.netdepth, W=args.netwidth, skips=skips, in_channels_xyz=input_ch, in_channels_dir=input_ch_views)
396 else:
397 model = NeRF(D=args.netdepth, W=args.netwidth, input_ch=input_ch, output_ch=output_ch, skips=skips, input_ch_views=input_ch_views, use_viewdirs=args.use_viewdirs)
398
399 if args.multi_gpu:
400 model = torch.nn.DataParallel(model).to(device)
401 else:
402 model = model.to(device)
403 grad_vars = list(model.parameters())
404
405 model_fine = None
406
407 if args.N_importance > 0:
408 if args.NeRFH:
409 model_fine = NeRFW('fine', D=args.netdepth, W=args.netwidth, skips=skips,
410 in_channels_xyz=input_ch, in_channels_dir=input_ch_views,
411 encode_appearance=True, encode_transient=True,
412 in_channels_a=args.in_channels_a, in_channels_t=args.in_channels_t)
413 else:

Callers 3

train_featureFunction · 0.90
train_nerf_trackingFunction · 0.90
train_feature_matchingFunction · 0.90

Calls 5

NeRFClass · 0.90
run_networkFunction · 0.90
NeRFWClass · 0.85
run_network_NeRFWFunction · 0.85
get_embedderFunction · 0.70

Tested by

no test coverage detected