V2AI / Det3D

World's first general purpose 3D object detection codebse.
https://arxiv.org/abs/1908.09492
Apache License 2.0
1.48k stars 299 forks source link

NumbaWarning #83

Closed Chi-Zaozao closed 4 years ago

Chi-Zaozao commented 4 years ago

Does it normal that several numbawarning happens when I train PointPillars on the nuscenes mini? whereas it produce the final result. what I observed:

2020-02-26 18:17:27,109 - INFO - Start running, host: root@d4488fc27a4d, work_dir: /workspace/det3d_requirement/Det3D/data/Outputs/Det3D_Outputs/PointPillars_lucky_jupyter_20200226-181359
2020-02-26 18:17:27,110 - INFO - workflow: [('train', 1), ('val', 1)], max: 20 epochs
/workspace/det3d_requirement/Det3D/det3d/core/sampler/preprocess.py:464: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  points[i : i + 1, :3] = points[i : i + 1, :3] @ rot_mat_T[j]
/workspace/det3d_requirement/Det3D/det3d/core/sampler/preprocess.py:464: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  points[i : i + 1, :3] = points[i : i + 1, :3] @ rot_mat_T[j]
/workspace/det3d_requirement/Det3D/det3d/core/sampler/preprocess.py:464: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  points[i : i + 1, :3] = points[i : i + 1, :3] @ rot_mat_T[j]
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/npydecl.py:958: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  warnings.warn(NumbaPerformanceWarning(msg))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/npydecl.py:958: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  warnings.warn(NumbaPerformanceWarning(msg))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/npydecl.py:958: NumbaPerformanceWarning: '@' is faster on contiguous arrays, called on (array(float32, 2d, A), array(float32, 2d, C))
  warnings.warn(NumbaPerformanceWarning(msg))
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITH looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: Invalid use of Function(<built-in function getitem>) with argument(s) of type(s): (array(float32, 3d, C), Tuple(slice<a:b>, list(int64), slice<a:b>))
 * parameterized
In definition 0:
    All templates rejected with literals.
In definition 1:
    All templates rejected without literals.
In definition 2:
    All templates rejected with literals.
In definition 3:
    All templates rejected without literals.
In definition 4:
    All templates rejected with literals.
In definition 5:
    All templates rejected without literals.
In definition 6:
    All templates rejected with literals.
In definition 7:
    All templates rejected without literals.
In definition 8:
    All templates rejected with literals.
In definition 9:
    All templates rejected without literals.
In definition 10:
    All templates rejected with literals.
In definition 11:
    All templates rejected without literals.
In definition 12:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
In definition 13:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
This error is usually caused by passing an argument of a type that is unsupported by the named function.
[1] During: typing of intrinsic-call at /workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py (298)

File "det3d/core/bbox/geometry.py", line 298:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
                :,
                [num_points_of_polygon - 1] + list(range(num_points_of_polygon - 1)),
                ^

  @numba.jit
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITH looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: Invalid use of Function(<built-in function getitem>) with argument(s) of type(s): (array(float32, 3d, C), Tuple(slice<a:b>, list(int64), slice<a:b>))
 * parameterized
In definition 0:
    All templates rejected with literals.
In definition 1:
    All templates rejected without literals.
In definition 2:
    All templates rejected with literals.
In definition 3:
    All templates rejected without literals.
In definition 4:
    All templates rejected with literals.
In definition 5:
    All templates rejected without literals.
In definition 6:
    All templates rejected with literals.
In definition 7:
    All templates rejected without literals.
In definition 8:
    All templates rejected with literals.
In definition 9:
    All templates rejected without literals.
In definition 10:
    All templates rejected with literals.
In definition 11:
    All templates rejected without literals.
In definition 12:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
In definition 13:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
This error is usually caused by passing an argument of a type that is unsupported by the named function.
[1] During: typing of intrinsic-call at /workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py (298)

File "det3d/core/bbox/geometry.py", line 298:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
                :,
                [num_points_of_polygon - 1] + list(range(num_points_of_polygon - 1)),
                ^

  @numba.jit
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITH looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: Invalid use of Function(<built-in function getitem>) with argument(s) of type(s): (array(float32, 3d, C), Tuple(slice<a:b>, list(int64), slice<a:b>))
 * parameterized
In definition 0:
    All templates rejected with literals.
In definition 1:
    All templates rejected without literals.
In definition 2:
    All templates rejected with literals.
In definition 3:
    All templates rejected without literals.
In definition 4:
    All templates rejected with literals.
In definition 5:
    All templates rejected without literals.
In definition 6:
    All templates rejected with literals.
In definition 7:
    All templates rejected without literals.
In definition 8:
    All templates rejected with literals.
In definition 9:
    All templates rejected without literals.
In definition 10:
    All templates rejected with literals.
In definition 11:
    All templates rejected without literals.
In definition 12:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
In definition 13:
    TypeError: unsupported array index type list(int64) in Tuple(slice<a:b>, list(int64), slice<a:b>)
    raised from /opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/typing/arraydecl.py:71
This error is usually caused by passing an argument of a type that is unsupported by the named function.
[1] During: typing of intrinsic-call at /workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py (298)

File "det3d/core/bbox/geometry.py", line 298:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
                :,
                [num_points_of_polygon - 1] + list(range(num_points_of_polygon - 1)),
                ^

  @numba.jit
2020-02-26 18:17:36,478 - INFO - finding looplift candidates
2020-02-26 18:17:36,478 - INFO - finding looplift candidates
2020-02-26 18:17:36,478 - INFO - finding looplift candidates
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITHOUT looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: cannot determine Numba type of <class 'numba.dispatcher.LiftedLoop'>

File "det3d/core/bbox/geometry.py", line 315:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    cross = 0.0
    for i in range(num_points):
    ^

  @numba.jit
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITHOUT looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: cannot determine Numba type of <class 'numba.dispatcher.LiftedLoop'>

File "det3d/core/bbox/geometry.py", line 315:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    cross = 0.0
    for i in range(num_points):
    ^

  @numba.jit
/workspace/det3d_requirement/Det3D/det3d/core/bbox/geometry.py:279: NumbaWarning: 
Compilation is falling back to object mode WITHOUT looplifting enabled because Function "points_in_convex_polygon_jit" failed type inference due to: cannot determine Numba type of <class 'numba.dispatcher.LiftedLoop'>

File "det3d/core/bbox/geometry.py", line 315:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    cross = 0.0
    for i in range(num_points):
    ^

  @numba.jit
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:178: NumbaWarning: Function "points_in_convex_polygon_jit" was compiled in object mode without forceobj=True, but has lifted loops.

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:178: NumbaWarning: Function "points_in_convex_polygon_jit" was compiled in object mode without forceobj=True, but has lifted loops.

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:178: NumbaWarning: Function "points_in_convex_polygon_jit" was compiled in object mode without forceobj=True, but has lifted loops.

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:188: NumbaDeprecationWarning: 
Fall-back from the nopython compilation path to the object mode compilation path has been detected, this is deprecated behaviour.

For more information visit http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:188: NumbaDeprecationWarning: 
Fall-back from the nopython compilation path to the object mode compilation path has been detected, this is deprecated behaviour.

For more information visit http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
/opt/conda/lib/python3.6/site-packages/numba-0.48.0-py3.6-linux-x86_64.egg/numba/object_mode_passes.py:188: NumbaDeprecationWarning: 
Fall-back from the nopython compilation path to the object mode compilation path has been detected, this is deprecated behaviour.

For more information visit http://numba.pydata.org/numba-doc/latest/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit

File "det3d/core/bbox/geometry.py", line 290:
def points_in_convex_polygon_jit(points, polygon, clockwise=True):
    <source elided>
    # first convert polygon to directed lines
    num_points_of_polygon = polygon.shape[1]
    ^

  state.func_ir.loc))
2020-02-26 18:17:43,102 - INFO - Epoch [1/20][5/318]    lr: 0.00010, eta: 5:38:43, time: 3.198, data_time: 2.711, transfer_time: 0.027, forward_time: 0.171, loss_parse_time: 0.001 memory: 2501, 
2020-02-26 18:17:43,102 - INFO - task : ['car'], loss: 485.3806, cls_pos_loss: 0.0385, cls_neg_loss: 240.4097, dir_loss_reduced: 0.8125, cls_loss_reduced: 480.8579, loc_loss_reduced: 4.3603, loc_loss_elem: ['0.2031', '0.1620', '0.6211', '0.2591', '0.1530', '0.2292', '0.8962', '1.4495', '0.3871'], num_pos: 23.0000, num_neg: 19952.0000
2020-02-26 18:17:43,102 - INFO - task : ['truck', 'construction_vehicle'], loss: 1176.6788, cls_pos_loss: 550.3410, cls_neg_loss: 311.2071, dir_loss_reduced: 0.6776, cls_loss_reduced: 1172.7551, loc_loss_reduced: 3.7882, loc_loss_elem: ['0.3187', '0.2664', '0.5612', '0.3263', '0.5586', '0.3248', '0.5465', '0.5400', '0.3458'], num_pos: 24.4000, num_neg: 39932.0000
2020-02-26 18:17:43,102 - INFO - task : ['bus', 'trailer'], loss: 396.4121, cls_pos_loss: 179.8583, cls_neg_loss: 106.0010, dir_loss_reduced: 0.7220, cls_loss_reduced: 391.8602, loc_loss_reduced: 4.4075, loc_loss_elem: ['0.3016', '0.1981', '0.3558', '0.4285', '1.6443', '0.2680', '0.4065', '0.3449', '0.4598'], num_pos: 72.8000, num_neg: 39916.2000
2020-02-26 18:17:43,102 - INFO - task : ['barrier'], loss: 1901.0528, cls_pos_loss: 0.0422, cls_neg_loss: 948.9933, dir_loss_reduced: 0.7667, cls_loss_reduced: 1898.0289, loc_loss_reduced: 2.8706, loc_loss_elem: ['0.1731', '0.1723', '0.6855', '0.2647', '0.2434', '0.3112', '0.2356', '0.2740', '0.5107'], num_pos: 14.2000, num_neg: 19984.2000
2020-02-26 18:17:43,102 - INFO - task : ['motorcycle', 'bicycle'], loss: 2253.0825, cls_pos_loss: 1050.6371, cls_neg_loss: 598.2773, dir_loss_reduced: 0.7013, cls_loss_reduced: 2247.1917, loc_loss_reduced: 5.7506, loc_loss_elem: ['0.2719', '0.3527', '0.6125', '0.3074', '0.3881', '0.2621', '1.1131', '1.9434', '0.4993'], num_pos: 8.2000, num_neg: 39990.4000
2020-02-26 18:17:43,103 - INFO - task : ['pedestrian', 'traffic_cone'], loss: 2289.1748, cls_pos_loss: 1212.1962, cls_neg_loss: 536.2855, dir_loss_reduced: 0.7453, cls_loss_reduced: 2284.7673, loc_loss_reduced: 4.2585, loc_loss_elem: ['0.3888', '0.3689', '0.6287', '0.3924', '0.3640', '0.3956', '0.4584', '0.6679', '0.5938'], num_pos: 19.6000, num_neg: 39978.6000

I don't know what the normal result should be. Could you give a tutorial please? Maybe a jupyter notebook? Thank you very much.

chanyn commented 4 years ago

I meet the same warning, and i found the loss is too big, I'm not sure whether the warning is normal. But the validation results is 0.

Chi-Zaozao commented 4 years ago

Does the validation result mean there is no problem? The loss gets smaller and smaller as the training progresses. @chanyn

chanyn commented 4 years ago

But when PointPillars trained on Kitti, the initial loss is lower than 10. If you get the right performance on Nuscenes? Actually, I can't run Nuscenes in Det3d project, I met data preprocess problem when i start the train. My problem is recorded in https://github.com/poodarchu/Det3D/issues/85. But I can run Nuscenes in SECOND.pytorch project. And the log is the same with you. The final result is far lower than the official reported results.

Chi-Zaozao commented 4 years ago

I tried kitti today, but I met this error: ''' No such file or directory: '/data/Datasets/KITTI/Kitti/object/training/planes/000000.txt' ''' Do you know how to get the ground planes file? @chanyn

zwqnju commented 4 years ago

@Chi-Zaozao You need to generate ground plane files before. The code is in det3d/datasets/utils/ground_plane_detection.py, but needs some small changes, not very difficult. Or you can run without ground planes. Just modify with_gp=True to with_gp=False in the __getitem__ method of Dataset Class.

MeyLavie commented 4 years ago

Hi @zwqnju, I found that hey create pkl file for the plane but couldn't find where they generate the txt files, do you have any idea?

thanks!

zwqnju commented 4 years ago

@MeyLavie Ground plane txt files should be saved in training/planes

I reuse the code of det3d/datasets/utils/ground_plane_detection.py, and write a script to generate ground planes for KITTI dataset, which may help you.

It can work, but the speed is very slow. I do not use it because I don't need ground planes when training PointPillars. If you need ground planes, maybe you can use some methods like multiprocessing to make it fast.