Open Kerry678231 opened 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,需要注意这里的中心是物体底部中心,不是物体中心
@nepeplwu 好的,谢谢,3d框的iou计算,也可以基于2d框来计算是吧?我看输出值也没有做置信度的过滤,感觉2d那套iou逻辑是否可行呢?
@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
好的,十分感谢。
@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]]
@Kerry678231 按照上述代码计算的话,顶点顺序如下:
6 -------- 3
/| /|
7 -------- 2 .
| | | |
. 5 -------- 4
|/ |/
0 -------- 1
坐标系如下:
z front
/
/
0 ------> x right
|
|
v
y down
好的,十分感谢,我是jupyter写了一个smoke-infer-vis.ipynb demo,有需要提PR吗?(^__^) @nepeplwu
@Kerry678231 非常欢迎,可以在 docs目录下创建一个tutorial的目录,把相关文档加进去
好的,我整理一下就发出。。
@nepeplwu 您好,PR提了,代码改了几次,Paddle3D-CodeStyle一直不通过。。。vis.py是仿照infer.py代码风格写的,并通过black库格式化过,请帮忙看看这块要怎么处理啊。。
@Kerry678231 可以本地先安装yapf和pre-commit
pip install yapf==0.26.0
pip install pre-commit
然后对增加或者修改的文件调用
yapf -i xxx.py
接下来提交即可
@nepeplwu 您好,又打扰了,yapf -i xxx.py执行后,CodeStyle其他通过了,还报以下错误; 2022-09-26 11:40:16 isort (python)...........................................................Failed 然后我用isort xxx.py,执行后提交还报这个错误,请指导以下。。。
@nepeplwu 还有个问题请教一下,比如我想在smoke后面接追踪的话,是不是直接用2D框的输出用于追踪就可以了,本来smoke output感觉是不是已经做了3d iou,我只过滤一下置信度就好了是吧。。。
您好,又打扰了,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的检测框来匹配会更准确
@nepeplwu 好的,我卸载pre-commit,直接yapf后提交了,麻烦啦。。。
@Kerry678231 你好,可以学习一下你的可视化代码吗?
@Yutong-gannis @Kerry678231 @nepeplwu 哈喽大家好,请问可视化成功了吗?能否参考一下代码?非常感谢!
@694376965 恩,看大佬上面的链接。。。
请问一下,为什么我可视化出来的结果有问题呢
@zhangzhongzhong1 麻烦提供下推理命令
您好,我想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]