1. 简介
- DLA:Deep Layer Aggregation
- 网络结构
2. FairMOT代码
2.1 FairMOT网络结构
FairMOT:
detector: CenterNet
reid: FairMOTEmbeddingHead
loss: FairMOTLoss
tracker: JDETracker
CenterNet:
backbone: DLA
neck: CenterNetDLAFPN
head: CenterNetHead
post_process: CenterNetPostProcess
CenterNetDLAFPN:
down_ratio: 4
last_level: 5
out_channel: 0
dcn_v2: True
with_sge: False
CenterNetHead:
head_planes: 256
heatmap_weight: 1
regress_ltrb: True
size_weight: 0.1
size_loss: 'L1'
offset_weight: 1
iou_weight: 0
FairMOTEmbeddingHead:
ch_head: 256
ch_emb: 128
CenterNetPostProcess:
max_per_img: 500
down_ratio: 4
regress_ltrb: True
JDETracker:
conf_thres: 0.4
tracked_thresh: 0.4
metric_type: cosine
2.1 检测器主干网络 (DLA)
- BasicBlock:一个基本的残差单元 (2次卷积)
- Root:把输入张量列表按列拼接,行数不变,然后执行Conv和Relu
- Tree:
- DLA网络组成
conv_layers levels channels
DLA_cfg = {34: ([1, 1, 1, 2, 2, 1], [16, 32, 64, 128, 256, 512])}
层名 | 层数 | 输入通道数 | 输出通道数 | 卷积核 | |
---|---|---|---|---|---|
base | 1 | 3 | 16 | 7x7, 16, stride 1 | |
level0 | 1 | 16 | 16 | 3x3, 16, stride 1 | |
level1 | 1 | 16 | 32 | 3x3, 32, stride 2 | |
level2 | 1 | 32 | 64 | tree1: BasicBlock(ResidualBlock) : 1) 3x3, 64, stride 2 2) 3x3, 64, stride 1 tree2: BasicBlock(ResidualBlock) : 1) 3x3, 64, stride 1 2) 3x3, 64, stride 1 1) 源图x下采样 2) 把通道数提升到64作为residual 3) x1=tree1(x,residual) 4) x2=tree2(x1) 5)把x2,x1按列拼接,然后执行conv, add, relu | |
level3 | 2 | 64 | 128 | tree1: tree11: BasicBlock(ResidualBlock) : 1) 3x3, 128, stride 2 2) 3x3, 128, stride 1 tree12: BasicBlock(ResidualBlock) : 1) 3x3, 128, stride 1 2) 3x3, 128, stride 1 1) 源图x下采样 2) 把通道数提升到64作为residual 3) x1=tree11(x,residual) 4) x2=tree12(x1) 5)把x2,x1按列拼接,然后执行conv, add, relu tree2: tree21: BasicBlock(ResidualBlock) : 1) 3x3, 128, stride 2 2) 3x3, 128, stride 1 tree22: BasicBlock(ResidualBlock) : 1) 3x3, 128, stride 1 2) 3x3, 128, stride 1 1) 源图x下采样 2) 把通道数提升到64作为residual 3) x1=tree21(x,residual) 4) x2=tree22(x1) 5)把x2,x1按列拼接,然后执行conv, add, relu | |
level4 | 2 | 128 | 256 | ||
level5 | 1 | 256 | 512 |