PaddlePaddle / Paddle3D

A 3D computer vision development toolkit based on PaddlePaddle. It supports point-cloud object detection, segmentation, and monocular 3D object detection models.
Apache License 2.0
571 stars 141 forks source link

smoke 输出在2d图像画3d框,要怎么做呢? #91

Open Kerry678231 opened 2 years ago

Kerry678231 commented 2 years ago

您好,我想smoke 输出在2d图像画3d框,要怎么做呢?就下面这种结构体,有没有参考的代码呢?

[2.00000000e00, -3.78953695e-01, 7.03673218e02, 1.40741089e02, 8.11026794e02, 3.06342285e02, 1.86329746e00, 6.55288756e-01, 1.07974875e00, 1.68129861e00, 1.52318120e00, 8.46668434e00, -1.82925656e-01, 8.08016956e-01]

nepeplwu commented 2 years ago

@Kerry678231 目前Paddle3D中暂时没有实现这种util,下个版本会考虑加上,可以参考这里的代码自行写下,大致逻辑为:

这里各个字段含义如下:

item 1       :  class
item 2       :  observation angle α
item 3 ~ 6   :  box2d x1, y1, x2, y2
item 7 ~ 9   :  box3d h, w, l
item 10 ~ 12 :  box3d bottom center x, y, z
item 13      :  box3d yaw angle
item 14      :  score

因此想画3D框主要用到item 7 ~ 13,需要注意这里的中心是物体底部中心,不是物体中心

Kerry678231 commented 2 years ago

@nepeplwu 好的,谢谢,3d框的iou计算,也可以基于2d框来计算是吧?我看输出值也没有做置信度的过滤,感觉2d那套iou逻辑是否可行呢?

nepeplwu commented 2 years ago

@Kerry678231 3d iou的计算不能基于2d框来计算,因为需要考虑到h, w, l 三个维度的重叠度,以及偏航角的影响,投影到图像后算iou是不准确的,可以参考评估代码里这里的写法:https://github.com/PaddlePaddle/Paddle3D/blob/develop/paddle3d/thirdparty/kitti_object_eval_python/eval.py#L173

输出值虽然没有根据置信度过滤,但是在最终做预测的时候,是建议让用户根据置信度过滤掉低分结果的,但是不会使用nms,可以参考: https://github.com/PaddlePaddle/Paddle3D/blob/develop/deploy/smoke/cpp/infer.cpp#L165

Kerry678231 commented 2 years ago

好的,十分感谢。

Kerry678231 commented 2 years ago

@nepeplwu 您好,根据您说的方法由模型的推理的数值,根据偏航角、内参我已经 转换为下面的 point, box2d, box3d数值;

想问下,是不是box3d就是回归的8个顶点的坐标信息,然后我只需要把3d坐标投影到2d图像上即可? 刚才通过内参计算正常了,现在有个新问题,就是想知道连点的顺序一般要怎么来呢?谢谢

point : [535.01741167 198.68839504]

box2d : [503.37849114 178.44592672 563.21361235 221.33035697]

box3d : [[-2.09277642 -1.59224796 -1.59224796 -3.20237338 -3.20237338 -3.70290184 -3.70290184 -2.09277642] [-0.11607742 -0.11607742 1.50735998 1.50735998 -0.11607742 -0.11607742 1.50735998 1.50735998] [27.19336682 30.76671407 30.76671407 30.99224872 30.99224872 27.41890147 27.41890147 27.19336682]]

nepeplwu commented 2 years ago

@Kerry678231 按照上述代码计算的话,顶点顺序如下:

    6 -------- 3
   /|         /|
  7 -------- 2 .
  | |        | |
  . 5 -------- 4
  |/         |/
  0 -------- 1

坐标系如下:

       z front
      /
     /
    0 ------> x right
    |
    |
    v
  y down
Kerry678231 commented 2 years ago

好的,十分感谢,我是jupyter写了一个smoke-infer-vis.ipynb demo,有需要提PR吗?(^__^) @nepeplwu

nepeplwu commented 2 years ago

@Kerry678231 非常欢迎,可以在 docs目录下创建一个tutorial的目录,把相关文档加进去

Kerry678231 commented 2 years ago

好的,我整理一下就发出。。

Kerry678231 commented 2 years ago

@nepeplwu 您好,PR提了,代码改了几次,Paddle3D-CodeStyle一直不通过。。。vis.py是仿照infer.py代码风格写的,并通过black库格式化过,请帮忙看看这块要怎么处理啊。。

nepeplwu commented 2 years ago

@Kerry678231 可以本地先安装yapf和pre-commit

pip install yapf==0.26.0
pip install pre-commit

然后对增加或者修改的文件调用

yapf -i xxx.py

接下来提交即可

Kerry678231 commented 2 years ago

@nepeplwu 您好,又打扰了,yapf -i xxx.py执行后,CodeStyle其他通过了,还报以下错误; 2022-09-26 11:40:16 isort (python)...........................................................Failed 然后我用isort xxx.py,执行后提交还报这个错误,请指导以下。。。

Kerry678231 commented 2 years ago

@nepeplwu 还有个问题请教一下,比如我想在smoke后面接追踪的话,是不是直接用2D框的输出用于追踪就可以了,本来smoke output感觉是不是已经做了3d iou,我只过滤一下置信度就好了是吧。。。

nepeplwu commented 2 years ago

您好,又打扰了,yapf -i xxx.py执行后,CodeStyle其他通过了,还报以下错误; 2022-09-26 11:40:16 isort (python)...........................................................Failed 然后我用isort xxx.py,执行后提交还报这个错误,请指导以下。。。

这个应该是yapf 和 isort的格式化冲突了,用yapf格式化完之后,直接提交吧,把pre-commit去掉吧,我们处理下

还有个问题请教一下,比如我想在smoke后面接追踪的话,是不是直接用2D框的输出用于追踪就可以了,本来smoke output感觉是不是已经做了3d iou,我只过滤一下置信度就好了是吧。。。

跟踪时还是得根据3d的检测框来匹配会更准确

Kerry678231 commented 2 years ago

@nepeplwu 好的,我卸载pre-commit,直接yapf后提交了,麻烦啦。。。

Yutong-gannis commented 2 years ago

@Kerry678231 你好,可以学习一下你的可视化代码吗?

694376965 commented 2 years ago

@Yutong-gannis @Kerry678231 @nepeplwu 哈喽大家好,请问可视化成功了吗?能否参考一下代码?非常感谢!

nepeplwu commented 2 years ago

@Yutong-gannis @694376965 目前相关代码已经提交PR,可以查看下相关代码

Kerry678231 commented 2 years ago

@694376965 恩,看大佬上面的链接。。。

zhangzhongzhong1 commented 1 year ago

飞书20221110-144136 请问一下,为什么我可视化出来的结果有问题呢

nepeplwu commented 8 months ago

@zhangzhongzhong1 麻烦提供下推理命令