def _single_gpu_build_func(model): """Builds the model on a single GPU. Can be called in a loop over GPUs with name and device scoping to create a data parallel model.""" blob, dim, spatial_scale = add_conv_body_func(model) if not model.train: model.conv_body_net = model.net.Clone('conv_body_net') rfcn_heads.add_rfcn_outputs(model, blob, dim, dim_reduce, spatial_scale) if model.train: loss_gradients = fast_rcnn_heads.add_fast_rcnn_losses(model) return loss_gradients if model.train else None
def _add_rfcn_head( model, add_roi_box_head_func, blob_in, dim_in, spatial_scale_in, dim_reduce ): """Add a Fast R-CNN head to the model.""" blob_rfcn, dim_rfcn = add_roi_box_head_func( model, blob_in, dim_in, spatial_scale_in, dim_reduce ) rfcn_heads.add_rfcn_outputs(model) if model.train: loss_gradients = rfcn_heads.add_rfcn_losses(model) else: loss_gradients = None return loss_gradients