Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added new augmentation methods and the option of augmentation by addition instead of replacement #653

Merged
merged 89 commits into from
Dec 9, 2021

Conversation

xaviersantos
Copy link
Contributor

Greetings,

The new augmentation methods I've implemented follow the same logic as the already implemented ones through the yaml files and are the following:

  • Global frustum dropout
  • Local transformations, such as translation, scaling, rotation and frustum dropout

Furthermore, a new method of augmenting by adding X fold augmented samples instead of replacing the original ones through the following fields in the DATA_AUGMENTATION section of the yaml file:

  • KEEP_RAW_DATA: (boolean) -> either or not the original samples are used in training
  • EXTEND_FACTOR: (double) -> the input dataset will have the size of the original dataset times the extend factor (e.g. EXTEND_FACTOR: 2 would duplicate the original dataset putting it through the augmentation pipeline again)

Feel free to use and modify whatever you need.

Best regards,
Xavier Santos

@xaviersantos
Copy link
Contributor Author

xaviersantos commented Nov 20, 2021

I've kept only the essential code to perform the augmentations, which is written in the files: data_augmentor.py and augmentor_utils.py.

The visualization of the effect of these augmentations can be done through the jupyter notebook in my fork of the repository.

I've also included a config file for PointPillars, which successfully replicates the results of the augmentation policy proposed by Hahner et al. in https://arxiv.org/abs/2004.01643

Copy link
Collaborator

@sshaoshuai sshaoshuai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the clear codes!

Have you already checked the augmented results by visualization?
What's the performance comparison between with and without these augmentations?

return gt_boxes, points

def get_points_in_box(points, gt_box):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this right?
Since you do not consider the orientation of gt_box, so simply checking the points with (xyz, dxdydz) may return wrong points.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The results were visually validated using this tool: https://github.com/xaviersantos/OpenPCDet/blob/dev/data_augmentation.ipynb

Here are some images taken from these augmentations (the magnitude of the transformations was exaggerated for better visualization):

Original image:
original

Local Translation along Y:
translation_local_y

Local Rotation:
rotated_local

Local Scaling:
scaled_local

Comparing the results of the new augmentation methods with the ones already implemented, these were the improvements:

table

These models models were trained for 80 epochs keeping all the same default hyperparameters.

As for the orientation of the gt_boxes, it should have no influence on the selection of the points inside its bounds (function get_points_in_box), as the center of the box and its dimensions are enough to the describe all the points within the box.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The performance looks good!

But I still do not understand why you do not need to consider the orientation.
Simply checking the center+dimensions of boxes for selecting inside points should only work for boxes with heading_angle=0.
What would happen when you conduct this function for a gt_box with heading_angle=pi/4? I think the inside points could not be well selected by this function since the gt_box is oblique.

Actually I have implemented a function to select inside points from a rotated box (https://github.com/open-mmlab/OpenPCDet/blob/master/pcdet/ops/roiaware_pool3d/src/roiaware_pool3d.cpp#L121-L140), could you comment on the difference between your function and my function?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see what you mean and you're right.

I've fixed the get_points_in_box function using a numpy logical mask based on your code, as well as the local frustum dropout functions which had the same mistake.

The results were validated visually in scenes with objects in oblique positions and everything seems to be working as intended. I couldn't, however, train a model with this new fix to see if there are further improvements in performance yet, because the workstation I've been using for training is currently unavailable.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great! Thank you!

I will try to train with your config and get back to here soon.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xaviersantos I find a function points_in_boxes_cpu implemented in ./pcdet/ops/roiaware_pool3d/roiaware_pool3d_utils.py similar with your vesion get_points_in_box. I would like to know why you don't use it.

@sshaoshuai
Copy link
Collaborator

Hi,

I have trained and tested two configs (w./w.o new aug) of pointpillar.
Unfortunately, the performance drops after incorporating the new augs. The detailed comparison is as below.

Sorry I am a little bit busy and do not have much time to look into it.
Just paste here to see whether there is somebody who could find the problems.

kitti_models/pointpillar/ex1_e80:
Car AP@0.70, 0.70, 0.70:
bbox AP:94.2876, 89.7078, 88.7397
bev AP:89.7453, 87.2445, 85.0807
3d AP:86.2513, 76.6903, 74.8136
aos AP:94.25, 89.53, 88.37
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:96.8621, 93.1172, 91.2891
bev AP:92.0416, 87.9647, 86.8153
3d AP:87.1988, 77.7309, 74.9172
aos AP:96.83, 92.90, 90.88
Car AP@0.70, 0.50, 0.50:
bbox AP:94.2876, 89.7078, 88.7397
bev AP:94.3758, 90.0635, 89.4247
3d AP:94.3408, 90.0152, 89.2759
aos AP:94.25, 89.53, 88.37
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:96.8621, 93.1172, 91.2891
bev AP:97.0090, 94.6417, 94.0010
3d AP:96.9830, 94.4981, 93.5915
aos AP:96.83, 92.90, 90.88
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:64.6847, 60.2563, 57.7728
bev AP:60.2017, 55.4020, 52.1287
3d AP:54.6741, 50.0844, 46.1675
aos AP:44.68, 42.03, 40.16
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:64.5031, 60.4380, 57.1679
bev AP:59.5310, 54.4755, 50.5424
3d AP:53.8891, 48.5571, 44.3696
aos AP:42.23, 39.67, 37.42
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:64.6847, 60.2563, 57.7728
bev AP:69.9193, 67.5812, 64.1142
3d AP:69.8407, 67.3529, 63.8735
aos AP:44.68, 42.03, 40.16
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:64.5031, 60.4380, 57.1679
bev AP:71.1717, 68.2699, 64.5031
3d AP:71.0853, 67.9840, 64.1406
aos AP:42.23, 39.67, 37.42
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:90.0881, 74.2634, 70.7466
bev AP:87.1649, 68.3359, 63.7626
3d AP:82.1564, 65.4079, 61.1721
aos AP:89.33, 72.45, 68.83
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:91.8511, 75.6533, 71.5262
bev AP:89.0704, 68.7982, 64.2879
3d AP:85.4502, 65.7010, 61.2467
aos AP:91.03, 73.62, 69.51
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:90.0881, 74.2634, 70.7466
bev AP:89.2188, 71.4740, 68.3603
3d AP:89.2188, 71.4740, 68.3603
aos AP:89.33, 72.45, 68.83
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:91.8511, 75.6533, 71.5262
bev AP:91.0660, 72.8600, 69.1499
3d AP:91.0660, 72.8600, 69.1499
aos AP:91.03, 73.62, 69.51

kitti_models/pointpillar_newaugs/ex1_e80:
:Car AP@0.70, 0.70, 0.70:
bbox AP:90.7554, 89.3000, 88.0465
bev AP:89.8279, 86.9218, 83.8811
3d AP:85.5056, 76.2866, 72.1825
aos AP:90.71, 89.05, 87.64
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.7390, 91.6834, 90.1985
bev AP:92.3708, 88.0216, 86.4462
3d AP:86.7452, 76.9994, 72.8774
aos AP:95.68, 91.41, 89.76
Car AP@0.70, 0.50, 0.50:
bbox AP:90.7554, 89.3000, 88.0465
bev AP:90.8083, 89.9803, 89.1805
3d AP:90.8083, 89.8703, 88.9942
aos AP:90.71, 89.05, 87.64
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.7390, 91.6834, 90.1985
bev AP:95.8779, 94.4899, 93.5857
3d AP:95.8575, 94.2043, 93.0228
aos AP:95.68, 91.41, 89.76
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:65.4917, 60.4993, 57.2155
bev AP:59.8950, 53.7517, 49.0767
3d AP:53.1794, 47.5265, 43.8814
aos AP:49.03, 45.41, 42.49
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:65.5911, 60.4680, 56.5623
bev AP:59.4911, 52.8061, 48.3174
3d AP:53.1470, 46.8801, 42.0971
aos AP:46.77, 42.98, 39.74
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:65.4917, 60.4993, 57.2155
bev AP:71.8697, 67.8377, 64.1790
3d AP:71.6687, 67.7183, 63.9221
aos AP:49.03, 45.41, 42.49
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:65.5911, 60.4680, 56.5623
bev AP:72.9395, 68.5429, 64.4094
3d AP:72.8351, 68.3083, 64.1093
aos AP:46.77, 42.98, 39.74
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:89.4511, 74.5407, 69.8565
bev AP:87.5748, 68.7499, 64.2060
3d AP:80.1339, 63.6316, 60.1857
aos AP:88.40, 72.03, 67.16
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:90.8342, 75.0870, 70.7818
bev AP:88.9970, 68.9557, 64.5782
3d AP:82.8989, 63.7349, 59.9403
aos AP:89.70, 72.31, 67.85
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:89.4511, 74.5407, 69.8565
bev AP:88.6358, 72.7156, 68.6673
3d AP:88.6119, 72.6720, 68.5729
aos AP:88.40, 72.03, 67.16
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:90.8342, 75.0870, 70.7818
bev AP:90.3557, 73.7630, 69.6037
3d AP:90.3326, 73.6658, 69.1997
aos AP:89.70, 72.31, 67.85

@MartinHahner
Copy link
Contributor

I also do not have time to look into it further at the moment.
But many thanks to @xaviersantos: I am glad to see that you were able to reproduce our results in OpenPCDet.
I was not using OpenPCDet yet when I was working on Quantifying Data Augmentation for LiDAR-based 3D Object Detection.
Would be great if your pull request could be merged.

@xaviersantos
Copy link
Contributor Author

I've noticed a couple of bugs in the cfg file I've provided. That may have something to do with the performance drop, as two unwanted transformations were being applied and one intended transformation wasn't.

I'm sorry I cannot test the results before committing, but the workstation I was using for training is facing some technical difficulties and won't be available for the next couple of weeks.

@MartinHahner
Copy link
Contributor

@sshaoshuai: can you repeat the training with the updated "newaugs" config?

@sshaoshuai
Copy link
Collaborator

Sure, the experiment has been repeated. Let's see what will happen after fixing the bug.

@sshaoshuai
Copy link
Collaborator

Here are the new results, and we still do not see obvious performance improvement with the new augs.
Are there any other potential updates?

kitti_models/pointpillar/ex1_e80:
2021-12-08 09:06:54,784 INFO Car AP@0.70, 0.70, 0.70:
bbox AP:90.7527, 89.7032, 88.8203
bev AP:89.4830, 87.1204, 85.0039
3d AP:85.9750, 76.7086, 74.9935
aos AP:90.73, 89.53, 88.50
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.5335, 93.4306, 91.3087
bev AP:91.7994, 87.8895, 86.7348
3d AP:87.0832, 77.8370, 74.9903
aos AP:95.50, 93.22, 90.96
Car AP@0.70, 0.50, 0.50:
bbox AP:90.7527, 89.7032, 88.8203
bev AP:90.8227, 93.5160, 89.4313
3d AP:90.8227, 90.0305, 89.3053
aos AP:90.73, 89.53, 88.50
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.5335, 93.4306, 91.3087
bev AP:95.6526, 95.8797, 93.9737
3d AP:95.6399, 94.5263, 93.6050
aos AP:95.50, 93.22, 90.96
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:65.0546, 60.5082, 57.2984
bev AP:60.1787, 55.0007, 50.5978
3d AP:55.5727, 49.6548, 46.0004
aos AP:47.64, 44.29, 41.37
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:64.9431, 60.3267, 56.6870
bev AP:59.9911, 54.2032, 49.5747
3d AP:54.8259, 48.6312, 44.0889
aos AP:44.97, 41.79, 38.53
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:65.0546, 60.5082, 57.2984
bev AP:70.9825, 67.6143, 64.2035
3d AP:70.8376, 67.3980, 63.8426
aos AP:47.64, 44.29, 41.37
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:64.9431, 60.3267, 56.6870
bev AP:72.4878, 68.3799, 64.4638
3d AP:72.3947, 68.0342, 64.0442
aos AP:44.97, 41.79, 38.53
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:86.0547, 71.9854, 68.0125
bev AP:82.8196, 66.4960, 62.0066
3d AP:79.9991, 62.1636, 58.6683
aos AP:84.77, 69.72, 65.73
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:89.3820, 73.0658, 68.6808
bev AP:85.9026, 66.6140, 62.1211
3d AP:81.8078, 62.0278, 57.9298
aos AP:87.91, 70.51, 66.20
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:86.0547, 71.9854, 68.0125
bev AP:86.4702, 68.9746, 65.5664
3d AP:86.4702, 68.9746, 65.5664
aos AP:84.77, 69.72, 65.73
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:89.3820, 73.0658, 68.6808
bev AP:88.5279, 69.9593, 65.5938
3d AP:88.5279, 69.9593, 65.5938
aos AP:87.91, 70.51, 66.20

kitti_models/pointpillar_newaugs/ex1_e80:
Car AP@0.70, 0.70, 0.70:
bbox AP:90.7562, 89.3665, 88.1819
bev AP:90.0133, 86.9856, 83.8322
3d AP:86.9327, 76.9307, 72.6927
aos AP:90.74, 89.18, 87.83
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.7424, 91.8032, 89.0978
bev AP:92.5188, 88.1786, 85.3835
3d AP:88.1510, 77.6397, 73.3243
aos AP:95.73, 91.60, 88.74
Car AP@0.70, 0.50, 0.50:
bbox AP:90.7562, 89.3665, 88.1819
bev AP:90.8136, 90.1005, 89.2816
3d AP:90.8136, 89.9972, 89.0670
aos AP:90.74, 89.18, 87.83
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.7424, 91.8032, 89.0978
bev AP:95.8739, 94.6364, 93.7658
3d AP:95.8528, 94.3261, 93.0584
aos AP:95.73, 91.60, 88.74
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:65.7274, 61.8874, 57.4009
bev AP:61.0954, 54.9804, 49.3737
3d AP:53.4783, 47.7331, 42.6695
aos AP:49.13, 46.44, 43.12
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:65.6664, 61.4598, 56.6956
bev AP:60.2807, 54.2185, 48.2721
3d AP:52.4506, 46.2056, 40.2810
aos AP:46.80, 43.73, 40.00
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:65.7274, 61.8874, 57.4009
bev AP:71.2825, 67.3262, 62.6374
3d AP:71.2705, 66.9210, 62.4561
aos AP:49.13, 46.44, 43.12
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:65.6664, 61.4598, 56.6956
bev AP:71.7958, 68.0118, 62.6637
3d AP:71.7791, 67.7389, 62.4219
aos AP:46.80, 43.73, 40.00
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:85.2706, 72.2641, 67.8621
bev AP:83.1330, 67.7719, 62.7745
3d AP:79.9187, 63.1960, 59.4880
aos AP:83.62, 69.41, 65.06
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:87.8885, 73.3546, 68.5955
bev AP:85.9962, 67.9373, 63.1839
3d AP:81.1843, 63.6355, 58.8810
aos AP:86.03, 70.27, 65.43
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:85.2706, 72.2641, 67.8621
bev AP:84.3811, 70.5995, 65.9590
3d AP:84.3811, 70.2955, 65.9448
aos AP:83.62, 69.41, 65.06
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:87.8885, 73.3546, 68.5955
bev AP:87.1743, 71.2911, 66.5168
3d AP:87.1739, 71.1559, 66.4866
aos AP:86.03, 70.27, 65.43

@MartinHahner
Copy link
Contributor

From our paper:

To reduce the impact of randomness and to have a more meaningful comparison, we carried out all experiments exactly three times and report the numbers of the training run which has the highest R40 score on moderate difficulty, the same metric that is used for ranking submissions on the official KITTI leader-board.

The updated "newaugs" config from @xaviersantos should correspond to the strongest augmentation policy we found in our paper. I have double-checked it, but I have not checked the code.

@sshaoshuai: If you don't mind, you could run each experiment two more times and report the strongest run of all three, then it would be in accordance with what we did in our study.

@xaviersantos
Copy link
Contributor Author

Hi!
Thanks for running the experiment for me.

I was looking closer into the point clouds to see if there was something wrong with the new point selection method, seeing as the previous one (which was wrong) seemed to achieve better results somehow. This previous mistake meant that some background points were inadvertently transformed along with the object if its bounding box's edges weren't parallel to the coordinate axis.

So, this was my original PC (now in oblique positions to avoid the previous mistake):
original

And this is the result after a 1/2 scaling for a MARGIN=0.01:
scaled_local_1e-2

If you look close enough, you can see that not the whole object was selected. Some points belonging to the object can still be seen where the edges of the bounding box were. Which makes me think that a MARGIN=1e-2 may not be enough here.

Testing the results for MARGIN=0.1:
scaled_local_1e-1

Seems better, although there seems to be some residual points left on the bottom left car.

With MARGIN=1:
scaled_local_1

The background around the objects starts getting visibly distorted, so maybe there is a sweet spot in the interval [0.1, 1]. Then again, maybe some background context is needed.

@sshaoshuai
Copy link
Collaborator

@MartinHahner @xaviersantos , thank you for the comments and visualizations, I will launch a second run for them.

I may merge these new augs if they achieve similar performance, since the effectiveness of new augs may depends on the dataset and the experiments on KITTI may not be stable.

Maybe we can just merge these new augs for potential future usage and leave the problems to the researchers who will use it on their own datasets.

@sshaoshuai
Copy link
Collaborator

The results of second runs (each with 4gpus, and the above results are trained with 8gpus):

kitti_models/pointpillar/ex1_e80_try2
Car AP@0.70, 0.70, 0.70: [234/1867]
bbox AP:90.7368, 89.7281, 88.8800
bev AP:89.8089, 87.6042, 85.6929
3d AP:86.6801, 77.4495, 75.7850
aos AP:90.72, 89.47, 88.48
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.4456, 92.2016, 91.4127
bev AP:93.0933, 88.2259, 87.2154
3d AP:87.7108, 78.6303, 75.6837
aos AP:95.42, 91.93, 90.97
Car AP@0.70, 0.50, 0.50:
bbox AP:90.7368, 89.7281, 88.8800
bev AP:90.7657, 90.0778, 89.4832
3d AP:90.7585, 90.0163, 89.3396
aos AP:90.72, 89.47, 88.48
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.4456, 92.2016, 91.4127
bev AP:95.5389, 94.7144, 94.0685
3d AP:95.5122, 94.5545, 93.7374
aos AP:95.42, 91.93, 90.97
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:65.3268, 61.0491, 58.3274
bev AP:62.8745, 57.1695, 53.6065
3d AP:56.5816, 51.5708, 47.9962
aos AP:48.36, 45.40, 43.04
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:65.0515, 60.9862, 57.8971
bev AP:62.5182, 56.7652, 52.5419
3d AP:56.4094, 50.7823, 46.3461
aos AP:45.60, 43.02, 40.36
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:65.3268, 61.0491, 58.3274
bev AP:71.5733, 68.6129, 65.8805
3d AP:71.3958, 68.4132, 64.9970
aos AP:48.36, 45.40, 43.04
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:65.0515, 60.9862, 57.8971
bev AP:72.8648, 69.4235, 66.0319
3d AP:72.7699, 69.1252, 65.4869
aos AP:45.60, 43.02, 40.36
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:85.5898, 73.5100, 69.0154
bev AP:81.8780, 66.0280, 62.4490
3d AP:79.9025, 62.2903, 59.0582
aos AP:84.04, 71.30, 66.80
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:89.7114, 74.2708, 69.6869
bev AP:85.5211, 66.2907, 62.0423
3d AP:81.8754, 62.4796, 58.0879
aos AP:87.93, 71.80, 67.23
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:85.5898, 73.5100, 69.0154
bev AP:87.9927, 70.3633, 66.6337
3d AP:87.9927, 70.3609, 66.6337
aos AP:84.04, 71.30, 66.80
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:89.7114, 74.2708, 69.6869
bev AP:89.5506, 71.1073, 66.9756
3d AP:89.5506, 71.1059, 66.7574
aos AP:87.93, 71.80, 67.23

kitti_models/pointpillar_newaugs/ex1_e80_try2
Car AP@0.70, 0.70, 0.70:
bbox AP:90.8384, 89.8084, 88.7515
bev AP:89.9606, 87.5132, 84.0803
3d AP:86.3871, 77.0237, 72.8496
aos AP:90.81, 89.56, 88.35
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.8336, 92.3198, 91.2985
bev AP:93.8658, 88.4217, 85.6897
3d AP:87.6453, 77.6526, 73.5638
aos AP:95.79, 92.04, 90.85
Car AP@0.70, 0.50, 0.50:
bbox AP:90.8384, 89.8084, 88.7515
bev AP:90.8487, 90.2453, 89.5675
3d AP:90.8453, 90.1608, 89.3935
aos AP:90.81, 89.56, 88.35
Car AP_R40@0.70, 0.50, 0.50:
bbox AP:95.8336, 92.3198, 91.2985
bev AP:95.9011, 94.9942, 94.3021
3d AP:95.8713, 94.7894, 93.7140
aos AP:95.79, 92.04, 90.85
Pedestrian AP@0.50, 0.50, 0.50:
bbox AP:67.2860, 62.5827, 58.0269
bev AP:60.6709, 55.0187, 49.3271
3d AP:53.8265, 48.0849, 42.7837
aos AP:48.21, 44.97, 40.97
Pedestrian AP_R40@0.50, 0.50, 0.50:
bbox AP:67.6936, 62.6614, 57.5261
bev AP:60.3713, 54.2563, 47.9018
3d AP:52.3990, 46.7091, 40.4607
aos AP:47.87, 44.43, 40.45
Pedestrian AP@0.50, 0.25, 0.25:
bbox AP:67.2860, 62.5827, 58.0269
bev AP:72.9528, 68.9608, 64.4912
3d AP:72.6796, 68.1887, 63.2805
aos AP:48.21, 44.97, 40.97
Pedestrian AP_R40@0.50, 0.25, 0.25:
bbox AP:67.6936, 62.6614, 57.5261
bev AP:73.8839, 69.8212, 64.2208
3d AP:73.6645, 68.9483, 63.4116
aos AP:47.87, 44.43, 40.45
Cyclist AP@0.50, 0.50, 0.50:
bbox AP:85.8305, 71.1395, 67.4625
bev AP:81.9286, 65.2515, 60.3394
3d AP:80.9082, 62.6846, 58.3576
aos AP:84.03, 68.83, 65.05
Cyclist AP_R40@0.50, 0.50, 0.50:
bbox AP:88.6071, 72.3508, 67.5311
bev AP:83.0834, 64.9095, 60.3798
3d AP:81.8885, 62.4274, 57.8338
aos AP:86.56, 69.65, 64.74
Cyclist AP@0.50, 0.25, 0.25:
bbox AP:85.8305, 71.1395, 67.4625
bev AP:85.0116, 69.9143, 65.7517
3d AP:84.9747, 68.6983, 65.1574
aos AP:84.03, 68.83, 65.05
Cyclist AP_R40@0.50, 0.25, 0.25:
bbox AP:88.6071, 72.3508, 67.5311
bev AP:87.9448, 70.5935, 65.8031
3d AP:87.8913, 69.6975, 65.0272
aos AP:86.56, 69.65, 64.74

@xaviersantos
Copy link
Contributor Author

xaviersantos commented Dec 9, 2021

I may merge these new augs if they achieve similar performance, since the effectiveness of new augs may depends on the dataset and the experiments on KITTI may not be stable.

Maybe we can just merge these new augs for potential future usage and leave the problems to the researchers who will use it on their own datasets.

@sshaoshuai, I totally agree. Seeing as each augmentation is toggleable through the config file and does not affect the rest of the code, I think it could be useful to researchers to have these tools available.

As long as each transformation does what is intended of them, should be a helpful addition. The performance gains are relative to the dataset and the model's hyperparameters so there may be some trial and error in trying to come up with a new configuration which includes these augmentations.

I've increased the margin in the selection of points to be transformed, because, at least visually, it seemed to produce better results. Let me know if you agree.

@sshaoshuai sshaoshuai merged commit 63ffbac into open-mmlab:master Dec 9, 2021
@sshaoshuai
Copy link
Collaborator

Hi,
Thanks again for the PR! I have merged these augs after fixing several potential bugs.

Feel free to submit a new PR if you want to do any modifications.

@atta007
Copy link

atta007 commented Dec 27, 2022

Hi, awesome work. I am impressed to see your work on Lidar Augmentation. I have a few questions for you:
1- mlab is creating an obj file, I think it's face values. Can you check on this I can not visualize it.
2- As I am also working with kitti dataset format using my own custom dataset and I have augmented using your git. Instead of creating obj files can we create .bin files?

@OpenMMLab-Assistant-007
Copy link

Hi @xaviersantos !
First of all, we want to express our gratitude for your significant PR in the OpenMMLab project. Your contribution is highly appreciated, and we are grateful for your efforts in helping improve this open-source project during your personal time. We believe that many developers will benefit from your PR.

We would also like to invite you to join our Special Interest Group (SIG) private channel on Discord, where you can share your experiences, ideas, and build connections with like-minded peers. To join the SIG channel, simply message moderator— OpenMMLab on Discord or briefly share your open-source contributions in the #introductions channel and we will assist you. Look forward to seeing you there! Join us :https://discord.gg/UjgXkPWNqA

If you have WeChat account,welcome to join our community on WeChat. You can add our assistant :openmmlabwx. Please add "mmsig + Github ID" as a remark when adding friends:)
Thank you again for your contribution❤

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants