Git Product home page Git Product logo

Comments (4)

jihanyang avatar jihanyang commented on August 12, 2024 3

Hello, good question.

  1. This BOX_FILTER filters predicted boxes in inference stage, while mask_points_and_boxes_outside_range works on data prepare stage for ground truths.
    if self.dataset_cfg.get('TEST', None) and self.dataset_cfg.TEST.BOX_FILTER['FOV_FILTER']:
  2. Since KITTI dataset only annotates fov objects while other datasets annotate ring view objects, this filter is only applyed on KITTI.
  3. FOV_POINTS_ONLY can filter the points outside fov. However, since both source labeled data and pseudo labeled target data have full ring view points, I am not sure whether testing model on only fov points would cause some negative transfer. In this regard, this BOX_FILTER works when we set FOV_POINTS_ONLY to False in KITTI. Actually, we found that in some situations, set FOV_POINTS_ONLY to False could even result in better performance (It seems that the provided checkpoint of Waymo -> KITTI has this characteristic).

from st3d.

jihanyang avatar jihanyang commented on August 12, 2024 1

See following codes, the mask gts will not works during inference.

if data_dict.get('gt_boxes', None) is not None and config.REMOVE_OUTSIDE_BOXES and self.training:

Since mask gts already solve situations during training, you just need to consider inference time.
In this regard, you should modify following two place:

  1. Filter predictions outside range similar to our BOX_FILTER configs.
  2. Filter gts outside range in following place.
    eval_gt_annos = [copy.deepcopy(info['annos']) for info in self.kitti_infos]

You can also refer to here since I already implement this function in Lyft dataset.

# filter by range
if self.dataset_cfg.get('GT_FILTER', None) and \
self.dataset_cfg.GT_FILTER.RANGE_FILTER:
if self.dataset_cfg.GT_FILTER.get('RANGE', None):
point_cloud_range = self.dataset_cfg.GT_FILTER.RANGE
else:
point_cloud_range = self.point_cloud_range
point_cloud_range[2] = -10
point_cloud_range[5] = 10

from st3d.

darrenjkt avatar darrenjkt commented on August 12, 2024

Thanks for the detailed response. That makes a lot of sense.

Following on from that - in my understanding, when we set mask_points_and_boxes_outside_range and REMOVE_OUTSIDE_BOXES=True, it'll automatically remove the gt_boxes that are outside of the specific POINT_CLOUD_RANGE. E.g. if I set max x = 20m, it'll only keep any ground truth annotations that are less than 20m. My aim is to train on nuscenes and test on kitti within a certain pointcloud range and so I assume that it'll remove any gt_boxes outside this range.

However, when I exported some kitti pcds from the getitem function during evaluation, it was not the case. I show the exported pcds below. The pcd below is with fov=True and POINT_CLOUD_RANGE: [-20, -20, -2, 20, 20, 4]. You can see that the pointcloud was succesfully filtered however the ground truth boxes at around 60m are still present.

image

For reference, this is what the full fov pointcloud with POINT_CLOUD_RANGE: [-75.2 -75.2, -2, 75.2, 75.2, 4] looks like.
image

How do I specify the cfg settings for the kitti dataset in test/train to filter the ground truth annotation boxes such that my detection results are only evaluated on gt_boxes that lie within the POINT_CLOUD_RANGE I've defined?

from st3d.

darrenjkt avatar darrenjkt commented on August 12, 2024

Amazing. Thanks for your prompt response and for giving such helpful direction.

from st3d.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.