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

ImVoxelNet #620

Closed
filaPro opened this issue Jun 5, 2021 · 11 comments
Closed

ImVoxelNet #620

filaPro opened this issue Jun 5, 2021 · 11 comments
Assignees
Labels

Comments

@filaPro
Copy link
Contributor

filaPro commented Jun 5, 2021

Hi, @Tai-Wang and mmdetection3d team,

This issue continues the discussion in SamsungLabs/imvoxelnet#7. If you are sure, it would be great to have ImVoxelNet in this codebase, I can make a PR. I would like to clarify some points first.

  1. SUN RGB-D. Unfortunately there are 2 monocular benchmarks: PerspectiveNet with 30 classes, Total3DUnderstanding with 37 classes + camera pose estimation + 3d room layout estimation. In our paper we also present metrics for your VoteNet benchmark with 10 classes. Do you think this VoteNet option is enough for the beginning? One more question here. For SUN RGB-D we use differentiable rotated IoU from here. Do you want to adapt in to mmdetection3d?

  2. ScanNet. Current ScanNetDataset doesn't deal with RGB images. Do we need separate MultiViewScanNet dataset and MultiViewPipeline handling random images sampling on training? Also dataset preparation instruction need to be updated.

  3. KITTI. No questions here.

  4. nuScenes. Following OFTNet and MonoDIS we compare only on car category. I think it not enough interesting for community and we don't need to make separate benchmark here.

@Tai-Wang
Copy link
Member

Tai-Wang commented Jun 5, 2021

Hi @filaPro ,

Thanks again for your willingness to contribute. For these questions, in my opinion:

  1. I prefer to beginning with our 10-class setting, which can provide an intuitive comparison with methods based on other modalities. Also it would be easier and clearer in terms of the data preparation. As for the different rotated IoU, I think we can first reproduce the performance, then have a closer look at this module (maybe survey its advantages and the connection/difference with that in our repo) and decide how to deal with it.
  2. If we need new preprocessing scripts and loading pipelines, maybe you can refer to how we add image processing to KITTI and nuScenes. I guess new data converter functions and classes are similarly needed.
  3. Yes, I agree with you. Maybe we can try to extend your method to multi-class detection in the future.

Generally speaking, I would recommend you split the modules into several small PRs such that there will be not much burden for us to review and discuss each one. You can also refer to how I push the FCOS3D to this repo. For others, you can basically follow your idea because you are definitely more familiar with your codes, and we can discuss them after PRs are created.

@Tai-Wang Tai-Wang self-assigned this Jun 5, 2021
@Tai-Wang Tai-Wang added enhancement New feature or request WIP and removed enhancement New feature or request labels Jun 5, 2021
@filaPro
Copy link
Contributor Author

filaPro commented Jun 9, 2021

Hi @Tai-Wang ,

I made an initial pull request #627. It almost achieves our metrics on monocular car detection on KITTI. The code is much simpler now, as I utilized your point_fusion instead of projection from Atlas.

@Tai-Wang
Copy link
Member

Tai-Wang commented Jun 9, 2021

Hi @Tai-Wang ,

I made an initial pull request #627. It almost achieves our metrics on monocular car detection on KITTI. The code is much simpler now, as I utilized your point_fusion instead of projection from Atlas.

Great, it looks good. We will have a brief review ASAP.

@gujiaqivadin
Copy link

Great work!

@filaPro
Copy link
Contributor Author

filaPro commented Jun 11, 2021

Hi @Tai-Wang ,

PR #627 for KITTI is (almost?) ready to merge. I can move forward for multi-view RGB detection on ScanNet. However I think first we need as separate PR to manage RGB images with poses for this dataset. Here I have a question.

I understand, that there is probably no good way to unify extrinsic and intrinsic matrices for all indoor and outdoor datasets of mmdetection3d. As we developed a general-purpose detector, I unified these matrices for all 4 datasets: scannet, kitti, nuscenes, sunrgbd. Unlikely, you are ready to make such changes in this repo. However your implementation looks a little messy: img_meta['cam_intrinsic'] for nuscenes_mono, img_meta['lidar2img'] for kitti, nothing for scannet, calib for sunrgbd. Simple question is why calib is outside of img_meta? More complicated question is how to manage these options in general-purpose detector? Currently, data_info doesn't contain the name of dataset, so code that takes into account camera poses should rely on key differences in metadata.

What do you think about this? Of course, I can simply update ScanNet with calib similar to SUN RGB-D. But we can try to unify something first.

@Tai-Wang
Copy link
Member

Yes, after merging #627 , you can create a README page for imvoxelnet in the configs and add corresponding bib/benchmark with checkpoints in a new PR.

As for different representations/names of poses recorded the infos of different datasets, I think it would be better to unify their names and we prefer to giving outdoor datasets (nuScenes and KITTI) the priority, i.e., if there is any conflict, we'd better modify the codes for scannet & sunrgbd (I guess it would be more relaxed due to fewer models needed to be adjusted).

My own implementation of monocular methods on KITTI and nuScenes is based on the coco-style jsons due to its convenience considering the usage of mmdet modules, but I think your way to directly use mmdet3d infos is also elegant, so you can basically keep doing it in that way.

@filaPro
Copy link
Contributor Author

filaPro commented Jun 11, 2021

My proposal of unifying intrinsic and extrinsic matrices for all datasets.

Recap of what we have now:

  • img_meta['lidar2img'] for outdoor point cloud datasets
  • img_meta['cam_intrinsic'] for monocular outdoor datasets
  • calib['Rt'] and calib['K'] for SUN RGB-D
  • noting for ScanNet

First, I think there is no reason to put calib outside of img_meta. Also, this calib is only used in VoteFusion and visualization. And in both places points are multiplied by Rt and after that to K. So ther is almost no need to keep them separate. And with the same logic of how lidar2img is used in PointFusion we can aggregate Rt and K to depth2img. And the last thing, if we need cam_intrinsic for monocular datasets we can rename it to cam2img. So except of multiple img_meta and calib keys we can keep only img_mata['lidar2img'], img_meta['depth2img'] and img_meta['cam2img']. For each datasets there may be from 0 to 3 of them. Also for multi-view datasets (ScanNet(~1000 x RGB) and NuScenes(6 x RGB)) this keys will contain a list of matrices.

I can make a PR with all of this if you (and mmdetection3d team) agree. cc @Tai-Wang

@Tai-Wang
Copy link
Member

@filaPro Yeah, I agree. This unification is fine. Feel free to make a PR to adjust them for convenience. The only thing is that we need to guarantee all the related operations will be changed accordingly. Maybe we can help you double check this issue when reviewing.

@filaPro
Copy link
Contributor Author

filaPro commented Jun 15, 2021

Looks like here should be K[1, 1] instead of K[0, 0]. They are not exactly same even for some images of SUN RGB-D. I've refactored intrinsics here and validation mAP even grown from 64.06 to 64.61. Do you agree with it? сс @THU17cyz @Tai-Wang

@gujiaqivadin
Copy link

Hello, filaPro!
Thanks for your great work ImVoxelNet. I wonder will you support nuscenes version of ImVoxelNet in mmdetection3d. Appreciate it a lot!

@filaPro
Copy link
Contributor Author

filaPro commented Jun 21, 2021

Hello, filaPro!
Thanks for your great work ImVoxelNet. I wonder will you support nuscenes version of ImVoxelNet in mmdetection3d. Appreciate it a lot!

Hi @gujiaqivadin ,
For now our nuScenes is not ready for mmdetection3d, as the benchmark here supports all categories, but our model - only car. You can check the model imvoxelnet_nuscenes.py in original ImVoxelNet repo.

@ZwwWayne ZwwWayne closed this as completed Jul 2, 2021
tpoisonooo added a commit to tpoisonooo/mmdetection3d that referenced this issue Sep 5, 2022
* make -install -> make install (open-mmlab#621)

change `make -install` to `make install`

open-mmlab/mmdeploy#618

* [Fix] fix csharp api detector release result (open-mmlab#620)

* fix csharp api detector release result

* fix wrong count arg of xxx_release_result in c# api

* [Enhancement] Support two-stage rotated detector TensorRT. (open-mmlab#530)

* upload

* add fake_multiclass_nms_rotated

* delete unused code

* align with pytorch

* Update delta_midpointoffset_rbbox_coder.py

* add trt rotated roi align

* add index feature in nms

* not good

* fix index

* add ut

* add benchmark

* move to csrc/mmdeploy

* update unit test

Co-authored-by: zytx121 <592267829@qq.com>

* Reduce mmcls version dependency (open-mmlab#635)

* fix shufflenetv2 with trt (open-mmlab#645)

* fix shufflenetv2 and pspnet

* fix ci

* remove print

* ' -> " (open-mmlab#654)

If there is a variable in the string, single quotes will ignored it, while double quotes will bring the variable into the string after parsing

* ' -> " (open-mmlab#655)

same with open-mmlab/mmdeploy#654

* Support deployment of Segmenter (open-mmlab#587)

* support segmentor with ncnn

* update regression yml

* replace chunk with split to support ts

* update regression yml

* update docs

* fix segmenter ncnn inference failure brought by open-mmlab#477

* add test

* fix test for ncnn and trt

* fix lint

* export nn.linear to Gemm op in onnx for ncnn

* fix ci

* simplify `Expand` (open-mmlab#617)

* Fix typo (open-mmlab#625)

* Add make install in en docs

* Add make install in zh docs

* Fix typo

* Merge and add windows build

Co-authored-by: tripleMu <865626@163.com>

* [Enhancement] Fix ncnn unittest (open-mmlab#626)

* optmize-csp-darknet

* replace floordiv to torch.div

* update csp_darknet default implement

* fix test

* [Enhancement] TensorRT Anchor generator plugin (open-mmlab#646)

* custom trt anchor generator

* add ut

* add docstring, update doc

* Add partition doc and sample code (open-mmlab#599)

* update torch2onnx tool to support onnx partition

* add model partition of yolov3

* add cn doc

* update torch2onnx tool to support onnx partition

* add model partition of yolov3

* add cn doc

* add to index.rst

* resolve comment

* resolve comments

* fix lint

* change caption level in docs

* update docs (open-mmlab#624)

* Add java apis and demos (open-mmlab#563)

* add java classifier detector

* add segmentor

* fix lint

* add ImageRestorer java apis and demo

* remove useless count parameter for Segmentor and Restorer, add PoseDetector

* add RotatedDetection java api and demo

* add Ocr java demo and apis

* remove mmrotate ncnn java api and demo

* fix lint

* sync java api folder after rebase to master

* fix include

* remove record

* fix java apis dir path in cmake

* add java demo readme

* fix lint mdformat

* add test javaapi ci

* fix lint

* fix flake8

* fix test javaapi ci

* refactor readme.md

* fix install opencv for ci

* fix install opencv : add permission

* add all codebases and mmcv install

* add torch

* install mmdeploy

* fix image path

* fix picture path

* fix import ncnn

* fix import ncnn

* add submodule of pybind

* fix pybind submodule

* change download to git clone for submodule

* fix ncnn dir

* fix README error

* simplify the github ci

* fix ci

* fix yapf

* add JNI as required

* fix Capitalize

* fix Capitalize

* fix copyright

* ignore .class changed

* add OpenJDK installation docs

* install target of javaapi

* simplify ci

* add jar

* fix ci

* fix ci

* fix test java command

* debugging what failed

* debugging what failed

* debugging what failed

* add java version info

* install openjdk

* add java env var

* fix export

* fix export

* fix export

* fix export

* fix picture path

* fix picture path

* fix file name

* fix file name

* fix README

* remove java_api strategy

* fix python version

* format task name

* move args position

* extract common utils code

* show image class result

* add detector result

* segmentation result format

* add ImageRestorer result

* add PoseDetection java result format

* fix ci

* stage ocr

* add visualize

* move utils

* fix lint

* fix ocr bugs

* fix ci demo

* fix java classpath for ci

* fix popd

* fix ocr demo text garbled

* fix ci

* fix ci

* fix ci

* fix path of utils ci

* update the circleci config file by adding workflows both for linux, windows and linux-gpu (open-mmlab#368)

* update circleci by adding more workflows

* fix test workflow failure on windows platform

* fix docker exec command for SDK unittests

* Fixed tensorrt plugin not found in Windows (open-mmlab#672)

* update introduction.png (open-mmlab#674)

* [Enhancement] Add fuse select assign pass (open-mmlab#589)

* Add fuse select assign pass

* move code to csrc

* add config flag

* remove bool cast

* fix export sdk info of input shape (open-mmlab#667)

* Update get_started.md (open-mmlab#675)

Fix backend model assignment

* Update get_started.md (open-mmlab#676)

Fix backend model assignment

* [Fix] fix clang build (open-mmlab#677)

* fix clang build

* fix ndk build

* fix ndk build

* switch to `std::filesystem` for clang-7 and later

* Deploy the Swin Transformer on TensorRT. (open-mmlab#652)

* resolve conflicts

* update ut and docs

* fix ut

* refine docstring

* add comments and refine UT

* resolve comments

* resolve comments

* update doc

* add roll export

* check backend

* update regression test

* bump version to 0.6.0 (open-mmlab#680)

* bump vertion to 0.6.0

* update version

* pass img_metas while exporting to onnx (open-mmlab#681)

* pass img_metas while exporting to onnx

* remove try-catch in tools for beter debugging

* use get

* fix typo

* [Fix] fix ssd ncnn ut (open-mmlab#692)

* fix ssd ncnn ut

* fix yapf

* fix passing img_metas to pytorch2onnx for mmedit (open-mmlab#700)

* fix passing img_metas for mmdet3d (open-mmlab#707)

* [Fix] Fix android build (open-mmlab#698)

* fix android build

* fix cmake

* fix url link

* fix wrong exit code in pipeline_manager (open-mmlab#715)

* fix exit

* change to general exit errorcode=1

* fix passing wrong backend type (open-mmlab#719)

* Rename onnx2ncnn to mmdeploy_onnx2ncnn (open-mmlab#694)

* improvement(tools/onnx2ncnn.py): rename to mmdeploy_onnx2ncnn

* format(tools/deploy.py): clean code

* fix(init_plugins.py): improve if condition

* fix(CI): update target

* fix(test_onnx2ncnn.py): update desc

* Update init_plugins.py

* [Fix] Fix mmdet ort static shape bug (open-mmlab#687)

* fix shape

* add device

* fix yapf

* fix rewriter for transforms

* reverse image shape

* fix ut of distance2bbox

* fix rewriter name

* fix c4 for torchscript (open-mmlab#724)

* [Enhancement] Standardize C API (open-mmlab#634)

* unify C API naming

* fix demo and move apis/c/* -> apis/c/mmdeploy/*

* fix lint

* fix C# project

* fix Java API

* [Enhancement] Support Slide Vertex TRT (open-mmlab#650)

* reorgnize mmrotate

* fix

* add hbb2obb

* add ut

* fix rotated nms

* update docs

* update benchmark

* update test

* remove ort regression test, remove comment

* Fix get-started rendering issues in readthedocs (open-mmlab#740)

* fix mermaid markdown rendering issue in readthedocs

* fix error in C++ example

* fix error in c++ example in zh_cn get_started doc

* [Fix] set default topk for dump info (open-mmlab#702)

* set default topk for dump info

* remove redundant docstrings

* add ci densenet

* fix classification warnings

* fix mmcls version

* fix logger.warnings

* add version control (open-mmlab#754)

* fix satrn for ORT (open-mmlab#753)

* fix satrn for ORT

* move rewrite into pytorch

* Add inference latency test tool (open-mmlab#665)

* add profile tool

* remove print envs in profile tool

* set cudnn_benchmark to True

* add doc

* update tests

* fix typo

* support test with images from a directory

* update doc

* resolve comments

* [Enhancement] Add CSE ONNX pass (open-mmlab#647)

* Add fuse select assign pass

* move code to csrc

* add config flag

* Add fuse select assign pass

* Add CSE for ONNX

* remove useless code

* Test robot

Just test robot

* Update README.md

Revert

* [Fix] fix yolox point_generator (open-mmlab#758)

* fix yolox point_generator

* add a UT

* resolve comments

* fix comment lines

* limit markdown version (open-mmlab#773)

* [Enhancement] Better index put ONNX export. (open-mmlab#704)

* Add rewriter for tensor setitem

* add version check

* Upgrade Dockerfile to use TensorRT==8.2.4.2 (open-mmlab#706)

* Upgrade TensorRT to 8.2.4.2

* upgrade pytorch&mmcv in CPU Dockerfile

* Delete redundant port example in Docker

* change 160x160-608x608 to 64x64-608x608 for yolov3

* [Fix] reduce log verbosity & improve error reporting (open-mmlab#755)

* reduce log verbosity & improve error reporting

* improve error reporting

* [Enhancement] Support latest ppl.nn & ppl.cv (open-mmlab#564)

* support latest ppl.nn

* fix pplnn for model convertor

* fix lint

* update memory policy

* import algo from buffer

* update ppl.cv

* use `ppl.cv==0.7.0`

* document supported ppl.nn version

* skip pplnn dependency when building shared libs

* [Fix][P0] Fix for torch1.12 (open-mmlab#751)

* fix for torch1.12

* add comment

* fix check env (open-mmlab#785)

* [Fix] fix cascade mask rcnn (open-mmlab#787)

* fix cascade mask rcnn

* fix lint

* add regression

* [Feature] Support RoITransRoIHead (open-mmlab#713)

* [Feature] Support RoITransRoIHead

* Add docs

* Add mmrotate models regression test

* Add a draft for test code

* change the argument name

* fix test code

* fix minor change for not class agnostic case

* fix sample for test code

* fix sample for test code

* Add mmrotate in requirements

* Revert "Add mmrotate in requirements"

This reverts commit 043490075e6dbe4a8fb98e94b2b583b91fc5038d.

* [Fix] fix triu (open-mmlab#792)

* fix triu

* triu -> triu_default

* [Enhancement] Install Optimizer by setuptools (open-mmlab#690)

* Add fuse select assign pass

* move code to csrc

* add config flag

* Add fuse select assign pass

* Add CSE for ONNX

* remove useless code

* Install optimizer by setup tools

* fix comment

* [Feature] support MMRotate model with le135 (open-mmlab#788)

* support MMRotate model with le135

* cse before fuse select assign

* remove unused import

* [Fix] Support macOS build (open-mmlab#762)

* fix macOS build

* fix missing

* add option to build & install examples (open-mmlab#822)

* [Fix] Fix setup on non-linux-x64 (open-mmlab#811)

* fix setup

* replace long to int64_t

* [Feature] support build single sdk library (open-mmlab#806)

* build single lib for c api

* update csharp doc & project

* update test build

* fix test build

* fix

* update document for building android sdk (open-mmlab#817)

Co-authored-by: dwSun <dwsunny@icloud.com>

* [Enhancement] support kwargs in SDK python bindings (open-mmlab#794)

* support-kwargs

* make '__call__' as single image inference and add 'batch' API to deal with batch images inference

* fix linting error and typo

* fix lint

* improvement(sdk): add sdk code coverage (open-mmlab#808)

* feat(doc): add CI

* CI(sdk): add sdk coverage

* style(test): code format

* fix(CI): update coverage.info path

* improvement(CI): use internal image

* improvement(CI): push coverage info once

* [Feature] Add C++ API for SDK (open-mmlab#831)

* add C++ API

* unify result type & add examples

* minor fix

* install cxx API headers

* fix Mat, add more examples

* fix monolithic build & fix lint

* install examples correctly

* fix lint

* feat(tools/deploy.py): support snpe (open-mmlab#789)

* fix(tools/deploy.py): support snpe

* improvement(backend/snpe): review advices

* docs(backend/snpe): update build

* docs(backend/snpe): server support specify port

* docs(backend/snpe): update path

* fix(backend/snpe): time counter missing argument

* docs(backend/snpe): add missing argument

* docs(backend/snpe): update download and using

* improvement(snpe_net.cpp): load model with modeldata

* Support setup on environment with no PyTorch (open-mmlab#843)

* support test with multi batch (open-mmlab#829)

* support test with multi batch

* resolve comment

* import algorithm from buffer (open-mmlab#793)

* [Enhancement] build sdk python api in standard-alone manner (open-mmlab#810)

* build sdk python api in standard-alone manner

* enable MMDEPLOY_BUILD_SDK_MONOLITHIC and MMDEPLOY_BUILD_EXAMPLES in prebuild config

* link mmdeploy to python target when monolithic option is on

* checkin README to describe precompiled package build procedure

* use packaging.version.parse(python_version) instead of list(python_version)

* fix according to review results

* rebase master

* rollback cmake.in and apis/python/CMakeLists.txt

* reorganize files in install/example

* let cmake detect visual studio instead of specifying 2019

* rename whl name of precompiled package

* fix according to review results

* Fix SDK backend (open-mmlab#844)

* fix mmpose python api (open-mmlab#852)

* add prebuild package usage docs on windows (open-mmlab#816)

* add prebuild package usage docs on windows

* fix lint

* update

* try fix lint

* add en docs

* update

* update

* udpate faq

* fix typo (open-mmlab#862)

* [Enhancement] Improve get_started documents and bump version to 0.7.0 (open-mmlab#813)

* simplify commands in get_started

* add installation commands for Windows

* fix typo

* limit markdown and sphinx_markdown_tables version

* adopt html <details open> tag

* bump mmdeploy version

* bump mmdeploy version

* update get_started

* update get_started

* use python3.8 instead of python3.7

* remove duplicate section

* resolve issue open-mmlab#856

* update according to review results

* add reference to prebuilt_package_windows.md

* fix error when build sdk demos

* fix mmcls

Co-authored-by: Ryan_Huang <44900829+DrRyanHuang@users.noreply.github.com>
Co-authored-by: Chen Xin <xinchen.tju@gmail.com>
Co-authored-by: q.yao <yaoqian@sensetime.com>
Co-authored-by: zytx121 <592267829@qq.com>
Co-authored-by: Li Zhang <lzhang329@gmail.com>
Co-authored-by: tripleMu <gpu@163.com>
Co-authored-by: tripleMu <865626@163.com>
Co-authored-by: hanrui1sensetime <83800577+hanrui1sensetime@users.noreply.github.com>
Co-authored-by: lvhan028 <lvhan_028@163.com>
Co-authored-by: Bryan Glen Suello <11388006+bgsuello@users.noreply.github.com>
Co-authored-by: zambranohally <63218980+zambranohally@users.noreply.github.com>
Co-authored-by: AllentDan <41138331+AllentDan@users.noreply.github.com>
Co-authored-by: tpoisonooo <khj.application@aliyun.com>
Co-authored-by: Hakjin Lee <nijkah@gmail.com>
Co-authored-by: 孙德伟 <5899962+dwSun@users.noreply.github.com>
Co-authored-by: dwSun <dwsunny@icloud.com>
Co-authored-by: Chen Xin <irexyc@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants