|
@@ -2,9 +2,9 @@ import torch
|
|
|
import torch.nn as nn
|
|
import torch.nn as nn
|
|
|
|
|
|
|
|
try:
|
|
try:
|
|
|
- from .yolov2_basic import BasicConv
|
|
|
|
|
|
|
+ from .modules import ConvModule
|
|
|
except:
|
|
except:
|
|
|
- from yolov2_basic import BasicConv
|
|
|
|
|
|
|
+ from modules import ConvModule
|
|
|
|
|
|
|
|
|
|
|
|
|
class Yolov2DetHead(nn.Module):
|
|
class Yolov2DetHead(nn.Module):
|
|
@@ -16,49 +16,22 @@ class Yolov2DetHead(nn.Module):
|
|
|
self.reg_head_dim = cfg.head_dim
|
|
self.reg_head_dim = cfg.head_dim
|
|
|
self.num_cls_head = cfg.num_cls_head
|
|
self.num_cls_head = cfg.num_cls_head
|
|
|
self.num_reg_head = cfg.num_reg_head
|
|
self.num_reg_head = cfg.num_reg_head
|
|
|
- self.act_type = cfg.head_act
|
|
|
|
|
- self.norm_type = cfg.head_norm
|
|
|
|
|
- self.depthwise = cfg.head_depthwise
|
|
|
|
|
|
|
|
|
|
# --------- Network Parameters ----------
|
|
# --------- Network Parameters ----------
|
|
|
## cls head
|
|
## cls head
|
|
|
cls_feats = []
|
|
cls_feats = []
|
|
|
for i in range(self.num_cls_head):
|
|
for i in range(self.num_cls_head):
|
|
|
if i == 0:
|
|
if i == 0:
|
|
|
- cls_feats.append(
|
|
|
|
|
- BasicConv(in_dim, self.cls_head_dim,
|
|
|
|
|
- kernel_size=3, padding=1, stride=1,
|
|
|
|
|
- act_type = self.act_type,
|
|
|
|
|
- norm_type = self.norm_type,
|
|
|
|
|
- depthwise = self.depthwise)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ cls_feats.append(ConvModule(in_dim, self.cls_head_dim, kernel_size=3, padding=1, stride=1))
|
|
|
else:
|
|
else:
|
|
|
- cls_feats.append(
|
|
|
|
|
- BasicConv(self.cls_head_dim, self.cls_head_dim,
|
|
|
|
|
- kernel_size=3, padding=1, stride=1,
|
|
|
|
|
- act_type = self.act_type,
|
|
|
|
|
- norm_type = self.norm_type,
|
|
|
|
|
- depthwise = self.depthwise)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ cls_feats.append(ConvModule(self.cls_head_dim, self.cls_head_dim, kernel_size=3, padding=1, stride=1))
|
|
|
## reg head
|
|
## reg head
|
|
|
reg_feats = []
|
|
reg_feats = []
|
|
|
for i in range(self.num_reg_head):
|
|
for i in range(self.num_reg_head):
|
|
|
if i == 0:
|
|
if i == 0:
|
|
|
- reg_feats.append(
|
|
|
|
|
- BasicConv(in_dim, self.reg_head_dim,
|
|
|
|
|
- kernel_size=3, padding=1, stride=1,
|
|
|
|
|
- act_type = self.act_type,
|
|
|
|
|
- norm_type = self.norm_type,
|
|
|
|
|
- depthwise = self.depthwise)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ reg_feats.append(ConvModule(in_dim, self.reg_head_dim, kernel_size=3, padding=1, stride=1))
|
|
|
else:
|
|
else:
|
|
|
- reg_feats.append(
|
|
|
|
|
- BasicConv(self.reg_head_dim, self.reg_head_dim,
|
|
|
|
|
- kernel_size=3, padding=1, stride=1,
|
|
|
|
|
- act_type = self.act_type,
|
|
|
|
|
- norm_type = self.norm_type,
|
|
|
|
|
- depthwise = self.depthwise)
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ reg_feats.append(ConvModule(self.reg_head_dim, self.reg_head_dim, kernel_size=3, padding=1, stride=1))
|
|
|
self.cls_feats = nn.Sequential(*cls_feats)
|
|
self.cls_feats = nn.Sequential(*cls_feats)
|
|
|
self.reg_feats = nn.Sequential(*reg_feats)
|
|
self.reg_feats = nn.Sequential(*reg_feats)
|
|
|
|
|
|
|
@@ -68,8 +41,6 @@ class Yolov2DetHead(nn.Module):
|
|
|
"""Initialize the parameters."""
|
|
"""Initialize the parameters."""
|
|
|
for m in self.modules():
|
|
for m in self.modules():
|
|
|
if isinstance(m, torch.nn.Conv2d):
|
|
if isinstance(m, torch.nn.Conv2d):
|
|
|
- # In order to be consistent with the source code,
|
|
|
|
|
- # reset the Conv2d initialization parameters
|
|
|
|
|
m.reset_parameters()
|
|
m.reset_parameters()
|
|
|
|
|
|
|
|
def forward(self, x):
|
|
def forward(self, x):
|