前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows 版的3D目标检测框架 smoke PyTorch 实现

Windows 版的3D目标检测框架 smoke PyTorch 实现

作者头像
BBuf
发布2022-12-29 14:29:38
5300
发布2022-12-29 14:29:38
举报
文章被收录于专栏:GiantPandaCVGiantPandaCV

【GiantPandaCV导语】修改开源的 3D 检测算法,使用了 pytorch 自带的 DConv,省去 linux 下编译 DConv 的 cuda 代码,可以直接在 window 下训练和测试。在源码基础上增加了 finetune 和 resume 等功能,并提供了重新训练的模型。

代码:https://github.com/Huangdebo/SMOKE-window

  • [x] 模型效果

1 网络结构

smoke 的网络机构比较简单粗暴,一个 DLA 直接出 w/4, h/4 的特征图,然后分成两路:(1) 关键点检测,用以得出每个类别的目标的 3D 中心点在 2D 图像中的投影 (2) 3D 信息的回归, depth_offset(1), keypoint_offset(2), dimension_offset(3), orientation(2),共 8 个channel。

2 3D 检测

2.1 关键点分支

类似 centernet,把目标看成点来检测,但不同的是,smoke 利用的是 3D box 的中心投影点,而不是 2D box 的中心点。

2.2 回归分支

首先是 location,网络回归的都是偏差,对于 Z 方向的值,通过预设的偏移量和尺度因子来计算:

对于 x,y,则是通过关键点分支得到的投影中心点和回归的偏移量计算得出,然后在通过反投影计算出 location:

dimension 也是通过统计预设值和回归值来计算:

对于航向角的计算比较绕,smoke 并不是直接回归航向角,而是通过间接计算:

在下图中将小车沿着y轴顺时针旋转,待小车和camera连线与相机坐标系的z轴重合时停止,那么紫色的角是没有发生变化的。于是有

r_y 和 alpha 就是 KITTI label 中的 rotation_y 和 alpha,β 就是论文中的 αz。但 smoke 也不是直接回归 αz,而且转化成另外一个变量 αx,αx 也是编码成 [sin(α), cos(α)],进行归一化处理

基于上面的计算值,就可以 3D box 的8个顶点坐标了

3 loss 计算

3.1 关键点分类 loss

与 centernet 类似,在 focal loss 的基础上加权,对中心点附近的位置降低loss权重,并通过巧妙的设计来抑制中心附近的回归值,让只有中心一个尖峰:

3.2 回归 loss

smoke 使用了 disentangling loss 形式来计算回归分支的 loss,计算 3D box 需要 rotation_y,dimension 和 location 三个变量,disentangling 则是用一个预测值 + 两个 groundtruth 值来计算,从而得到三个 3D box,在进行 L1 loss 计算。

所以总的 loss 就是 分类 loss 和 3 个不同的 L1 回归 loss

结论:

SMOKE 的backbone 使用了 DLA,而且依赖 Dcnv,所以模型比较大,对落地部署不是很友好。而且是依赖镜头的内参的,不清楚多种数据训和训练效果如何。3D框的回归比较稳定,但存在漏检,尤其是小目标和只出现一部分的目标。如果能参考主流 2D 检测的多层检测,和优化关键点分支的策略,也许能缓解这些问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 网络结构
  • 2 3D 检测
    • 2.1 关键点分支
      • 2.2 回归分支
      • 3 loss 计算
        • 3.1 关键点分类 loss
          • 3.2 回归 loss
          • 结论:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档