in lib/models/patchnet_pct.py [0:0]
def __init__(self, cfg, num_heading_bin, num_size_cluster, mean_size_arr):
super().__init__()
self.cfg = cfg
self.num_heading_bin = num_heading_bin
self.num_size_cluster = num_size_cluster
self.mean_size_arr = mean_size_arr
# center estimation module
self.center_reg_backbone1 = PlainNet(input_channels=3, layer_cfg=[128, 128, 256], kernal_size=1,dilated=cfg['dilated'])
self.center_reg_head1 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 3))
self.center_reg_un1 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 1))
self.center_reg_backbone2 = PlainNet(input_channels=3, layer_cfg=[128, 128, 256], kernal_size=1,dilated=cfg['dilated'])
self.center_reg_head2 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 3))
self.center_reg_un2 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 1))
self.center_reg_backbone3 = PlainNet(input_channels=3, layer_cfg=[128, 128, 256], kernal_size=1,dilated=cfg['dilated'])
self.center_reg_head3 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 3))
self.center_reg_un3 = nn.Sequential(nn.Linear(259, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(256, 128), nn.BatchNorm1d(128), nn.ReLU(inplace=True),
nn.Linear(128, 1))
self.feat_reg = nn.Sequential(nn.Conv2d(64, 64, kernel_size=1, stride=4), nn.BatchNorm2d(64), nn.ReLU(inplace=True),
nn.Conv2d(64, 64, kernel_size=1, stride=4), nn.BatchNorm2d(64), nn.ReLU(inplace=True),
nn.Conv2d(64, 64, kernel_size=1))
# box estiamtion module
assert cfg['backbone'] in ['plainnet', 'resnet', 'resnext', 'senet']
if cfg['backbone'] == 'plainnet':
self.box_est_backbone = PlainNet(input_channels=3, layer_cfg=[128, 128, 256, 512], kernal_size=3, padding=1)
if cfg['backbone'] == 'resnet':
self.box_est_backbone = resnet()
if cfg['backbone'] == 'senet':
self.box_est_backbone = senet()
if cfg['backbone'] == 'resnext':
self.box_est_backbone = resnext()
self.box_est_head1 = nn.Sequential(nn.Linear(515+64, 512), nn.BatchNorm1d(512), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(512, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True),
nn.Linear(256, 3 + self.num_heading_bin*2 + self.num_size_cluster*4))
self.box_est_head2 = nn.Sequential(nn.Linear(515+64, 512), nn.BatchNorm1d(512), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(512, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True),
nn.Linear(256, 3 + self.num_heading_bin*2 + self.num_size_cluster*4))
self.box_est_head3 = nn.Sequential(nn.Linear(515+64, 512), nn.BatchNorm1d(512), nn.ReLU(inplace=True), nn.Dropout(0.5),
nn.Linear(512, 256), nn.BatchNorm1d(256), nn.ReLU(inplace=True),
nn.Linear(256, 3 + self.num_heading_bin*2 + self.num_size_cluster*4))
init_weights(self, self.cfg['init'])