基于3D点云的单目标跟踪算法P2B分析

1、P2B整体框图

在这里插入图片描述

在这里插入图片描述

2、forward函数(输入template:[batch,512,3];search:[batch,1024,3])

2.1、输入通过PointNet++得到seeds,以template为例,流程如下。同理search的输出为[batch,128,3] 、[batch,256,128],其中3(xyz)、256是通道数,128是group数。
output2经过
template: batch,512,3
Layer1:conv2d
output1: batch,256,3 output2: batch,128,256
Layer2:conv2d
output1: batch,128,3 output2: batch,256,128
Layer3:conv2d
output1: batch,64,3 output2: batch,256,64
adjust layer:conv1d
output1: batch,64,3 output2: batch,256,64
  • Layer1、Layer2、Layer3结构如下(方框代表每层的输出1和输出2):
采样256个seeds
group k=32, r=0.3
PointNet
maxpool2d->batch,128,256,1
采样128个seeds
group k=32, r=0.5
PointNet
maxpool2d->batch,256,128,1
采样64个seeds
group k=32, r=0.7
PointNet
maxpool2d->batch,256,64,1
template: batch,512,3
batch,256,3
batch,3,256,32
batch,128,256,32
batch,128,256
template: batch,256,3
batch,131,128,32
batch,128,3
batch,256,128,32
batch,256,128
template: batch,128,3
batch,259,64,32
batch,64,3
batch,256,64,32
batch,256,64
2.2、target-specific特征增强(M1=64,M2=128)
expand
融入template_xyz
expand
融入template
mlp:conv2d
maxpool2d
batch,256,M2经过调整层conv1d
search: batch,256,128
template: batch,256,64
template_xyz:batch,64,3
求余弦相似度
batch,3,64,128
batch,4,M1,M2
batch,256,M1,M2
batch,260,M1,M2
batch,64,128=batch,M1,M2
batch,256,M1,M2
batch,256,1,M2
batch,256,M2
2.3、voting:Potential target centers
3层conv1d
:,0:3,:在1,2维度互换
target-specific特征:batch,256,M2
search_xyz: batch,3,M2
batch,259,M2
batch,259,M2
求和
batch,259,M2
batch,M2,3
作为整个网络的输出2:vote_xyz
batch,256,M2
2.4、classifying:seed-wise targetness score

target-specific特征[batch,256,M2]经过3层conv1d得到(batch,1,M2)->(batch,M2)->sigmod->(batch,M2)作为整个网络的输出1:estimation_cla

2.5、cluster of potentiao target centers:vote_aggregation
参考上述Layer123
参考上述Layer123
3层conv1d
网络的输出2:batch,M2,3
voting输出的特征:batch,256,M2
classifying输出的分数:batch,M2
batch,257,M2
PoineNet
batch,64=proposal数,3,作为网络的输出4:center_xyzs
batch,256,64=proposal数
batch,5,64
2.6、Verification

estimation_boxs = torch.cat((proposal_offsets[:,0:3,:]+center_xyzs.transpose(1, 2).contiguous(),proposal_offsets[:,3:5,:]),dim=1)得(batch,5,64)作为整个网络的输出3

3、Loss分析

    #print(object_point_set.shape) #template (24,512,3)
	# print(label_point_set.shape) #search (24,1024,3)
	# print(label_cla.shape) #(24,128)
	# print(label_reg.shape) #(24,128,4)
3.1、loss_cla

loss_cla = nn.BCEWithLogitsLoss(estimation_cla,label_cla)
estimation_cla是输出1,尺寸为(batch,M2),label_cla的尺寸同样为(batch,M2)。label_cla直接取自点云数据的前M2个点云的label_cla。

3.2、loss_reg

loss_reg = nn.SmoothL1Loss(estimation_reg, label_reg[:,:,0:3]) 前3位代表是xyz,第4位是随机offset
loss_reg = (loss_reg.mean(2) * label_cla).sum()/(label_cla.sum()+1e-06) 只挑选label_cla为正样本的训练

3.3、loss_objective
    dist = torch.sum((center_xyz - label_reg[:,0:64,0:3])**2, dim=-1)
	# print(dist.shape) #(24,64)
	dist = torch.sqrt(dist+1e-6)
	B = dist.size(0) #24
	K = 64
	objectness_label = torch.zeros((B,K), dtype=torch.float).cuda() #(24,64)
	objectness_mask = torch.zeros((B,K)).cuda() #(24,64)
	objectness_label[dist<0.3] = 1 #三维马氏距离小于0.3为正样本,其他为负样本
	objectness_mask[dist<0.3] = 1
	objectness_mask[dist>0.6] = 1 #采样<0.3和>0.6的为分类分数的正样本proposal-wise targetness score
	# >0.6是希望更快速的得到一些正样本的proposal,即dist小->center_xyz与实际的位置接近->estimation_reg与实际的位置接近
	loss_objective = criterion_objective(estimation_box[:,:,4], objectness_label) #对estimation_box[:,:,4]每个数取了ln
	# print(estimation_box[:,:,4][0])
	# print(loss_objective[0])
	# print(loss_objective.shape) #(24,64)
	loss_objective = torch.sum(loss_objective * objectness_mask)/(torch.sum(objectness_mask)+1e-6)

损失输入为网络输出3estimation_box的第五位,代表proposal-wise targetness score,label根据网络输出4与真实的位置距离得到。

3.4、loss_box
    loss_box = criterion_box(estimation_box[:,:,0:4],label_reg[:,0:64,:])
	loss_box = (loss_box.mean(2) * objectness_label).sum()/(objectness_label.sum()+1e-06) #只训练正样本
3.5、loss = 0.2loss_cla + loss_reg + 1.5loss_objective + 0.2loss_box
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小超man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值