Giter Site home page Giter Site logo

pjlab-adg / logonet Goto Github PK

View Code? Open in Web Editor NEW
246.0 6.0 16.0 6.8 MB

[CVPR2023] LoGoNet: Towards Accurate 3D Object Detection with Local-to-Global Cross-Modal Fusion

Python 53.37% Shell 0.07% Jupyter Notebook 42.31% Dockerfile 0.03% Makefile 0.01% Batchfile 0.01% C++ 1.33% Cuda 2.82% C 0.05%
3d-object-detection autonomous-driving cvpr2023 lidar-camera-fusion

logonet's People

Contributors

dependabot[bot] avatar sankin97 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

logonet's Issues

he process is killed directly

Hello, how much G of video memory do you need to run your project? It shows that there is insufficient cuda or the process is killed directly.Hope to get your answer

The pretrain weight issues

Hi there,

Thanks for your work first.
Basically, I noticed that you freeze the FPN and Swin-T when training the network.
However, I think the weights you mentioned didn't contain the weights for the FPN part.
So how can you get it?

TypeError: unsupported operand type(s) for /: 'str' and 'str'

It seems that I am about to successfully train, but I have a new problem,

TypeError: unsupported operand type(s) for /: 'str' and 'str'

I don't know what the reason is, and I hope you can tell me How is "../data/kitti/ImageSets/train.txt" obtained
Thank you very much

2023-05-02 00:11:06,199 INFO cfg.EXP_GROUP_PATH: cfgs/det_model_cfgs/kitti 1 ../data/kitti/ImageSets/train.txt <class 'str'> Traceback (most recent call last): File "train.py", line 204, in <module> main() File "train.py", line 107, in main train_set, train_loader, train_sampler = build_dataloader( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/__init__.py", line 48, in build_dataloader dataset = __all__[dataset_cfg.DATASET]( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/kitti_dataset/kitti_dataset.py", line 51, in __init__ self.root_split_path = self.root_path / ('training' if self.split != 'test' else 'testing') TypeError: unsupported operand type(s) for /: 'str' and 'str' 1 ../data/kitti/ImageSets/train.txt <class 'str'> Traceback (most recent call last): File "train.py", line 204, in <module> main() File "train.py", line 107, in main train_set, train_loader, train_sampler = build_dataloader( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/__init__.py", line 48, in build_dataloader dataset = __all__[dataset_cfg.DATASET]( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/kitti_dataset/kitti_dataset.py", line 51, in __init__ self.root_split_path = self.root_path / ('training' if self.split != 'test' else 'testing') TypeError: unsupported operand type(s) for /: 'str' and 'str' 1 ../data/kitti/ImageSets/train.txt <class 'str'> Traceback (most recent call last): File "train.py", line 204, in <module> main() File "train.py", line 107, in main train_set, train_loader, train_sampler = build_dataloader( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/__init__.py", line 48, in build_dataloader dataset = __all__[dataset_cfg.DATASET]( File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/kitti_dataset/kitti_dataset.py", line 51, in __init__ self.root_split_path = self.root_path / ('training' if self.split != 'test' else 'testing') TypeError: unsupported operand type(s) for /: 'str' and 'str' 2023-05-02 00:11:06,332 INFO Database filter by min points Car: 14357 => 13442 2023-05-02 00:11:06,332 INFO Database filter by min points Pedestrian: 2207 => 2161 2023-05-02 00:11:06,332 INFO Database filter by min points Cyclist: 734 => 699 1 ../data/kitti/ImageSets/train.txt

安装codecov出现错误

感谢您的开源工作,我在配置环境时在cd LoGoNet/detection/models/image_modules/swin_model && pip install -r requirements.txt 这一步出现错误:
ERROR: Could not find a version that satisfies the requirement codecov (from versions: none)
ERROR: No matching distribution found for codecov
我该如何解决?

points num features doesn't equal to voxel

Hello, I am using self-built data set for model training, I encountered this problem during training, do you have a solution? Hope to get your reply. thank you。
File "train.py", line 204, in
main()
File "train.py", line 176, in main
merge_all_iters_to_one_epoch=args.merge_all_iters_to_one_epoch
File "/home/s/Desktop/LoGoNet-main/utils/al3d_utils/train_utils.py", line 93, in train_model
dataloader_iter=dataloader_iter
File "/home/s/Desktop/LoGoNet-main/utils/al3d_utils/train_utils.py", line 19, in train_one_epoch
batch = next(dataloader_iter)
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 521, in next
data = self._next_data()
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1203, in _next_data
return self._process_data(data)
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1229, in _process_data
data.reraise()
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/_utils.py", line 434, in reraise
raise exception
RuntimeError: Caught RuntimeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop
data = fetcher.fetch(index)
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/s/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 49, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/home/s/Desktop/LoGoNet-main/detection/al3d_det/datasets/kitti/kitti_dataset.py", line 477, in getitem
data_dict = self.prepare_data(data_dict=input_dict)
File "/home/s/Desktop/LoGoNet-main/detection/al3d_det/datasets/dataset_kitti.py", line 160, in prepare_data
data_dict=data_dict
File "/home/s/Desktop/LoGoNet-main/detection/al3d_det/datasets/processor/data_processor.py", line 197, in forward
data_dict = cur_processor(data_dict=data_dict)
File "/home/s/Desktop/LoGoNet-main/detection/al3d_det/datasets/processor/data_processor.py", line 102, in transform_points_to_voxels
voxel_output = self.voxel_generator.point_to_voxel(tv.from_numpy(points))
RuntimeError: /io/build/temp.linux-x86_64-3.6/spconv/build/src/csrc/sparse/all/ops_cpu3d/Point2VoxelCPU/Point2VoxelCPU_point_to_voxel_static.cc(22)
num_features == voxels.dim(2) assert faild. your points num features doesn't equal to voxel.

No module named 'petrel_client'

(LoGoNet) root@ubun:/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection# python -m al3d_det.datasets.kitti_dat\aset.kitti_dataset create_kitti_infos tools/cfgs/det_dataset_cfgs/kitti_dataset_mm.yaml
Traceback (most recent call last):
File "/root/miniconda3/envs/LoGoNet/lib/python3.6/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/root/miniconda3/envs/LoGoNet/lib/python3.6/runpy.py", line 109, in _get_module_details
import(pkg_name)
File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/init.py", line 8, in
from .dataset_kitti import DatasetTemplate_KITTI
File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/dataset_kitti.py", line 12, in
from .augmentor.data_augmentor import DataAugmentor
File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/augmentor/data_augmentor.py", line 7, in
from . import augmentor_utils, database_sampler, database_sampler_kitti, database_sampler_kittimm
File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/datasets/augmentor/database_sampler_kittimm.py", line 15, in
from ...utils.kitti_utils import box_utils, common_utils, calibration_kitti, box2d_utils
File "/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/al3d_det/utils/kitti_utils/calibration_kitti.py", line 3, in
from petrel_client.client import Client
ModuleNotFoundError: No module named 'petrel_client'

———————————————————————————————————————————————————

Thank you very much for your work. I have appeared such errors during the Kitti data processing process. I don’t know if I can give a solution

Expect open source

Nice work, I'm looking forward to your open-source code, when are you going to open-source code?

Pre-trained image model loading

Hi, I found line 17 "IMGPRETRAINED_MODEL: '../output_s2/det_model_cfgs/pretrained_ckpt/swin_tiny_patch4_window7_224.pth'" in LoGoNet-kitti.yaml has been commented out

But I did not find any loss in the loss function regarding the image. This means that the image network is a pre-trained model.
Therefore, should line 17 be uncommented?

In addition,I didn't understand line 9-10
# remember to use "--pretrained_model" to load 1-stage checkpoint
# and use "--fix_pretrained_weights" to fix params

Should these also be changed, if using pre-rained image models?

In short, I would like to use the pre-trained image model you provided. Which configurations should I change in the project?

配置mmpycocotools环境出错

按照要求配置image modules中的环境,可是在pip install mmpycocotools 时总是报以下错:

(open-mmlab) lizheng@lizheng-MS-7A59:/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/models/image_modules/swin_model$ pip install mmpycocotools
Collecting mmpycocotools
Using cached mmpycocotools-12.0.3.tar.gz (23 kB)
Preparing metadata (setup.py) ... done
Requirement already satisfied: setuptools>=18.0 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from mmpycocotools) (61.2.0)
Requirement already satisfied: cython>=0.27.3 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from mmpycocotools) (3.0.0)
Requirement already satisfied: matplotlib>=2.1.0 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from mmpycocotools) (3.5.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (1.4.3)
Requirement already satisfied: numpy>=1.17 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (1.22.4)
Requirement already satisfied: pyparsing>=2.2.1 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (2.8.2)
Requirement already satisfied: packaging>=20.0 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (21.3)
Requirement already satisfied: cycler>=0.10 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (0.11.0)
Requirement already satisfied: pillow>=6.2.0 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (9.1.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages (from matplotlib>=2.1.0->mmpycocotools) (4.33.3)
Requirement already satisfied: six>=1.5 in /home/lizheng/.local/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib>=2.1.0->mmpycocotools) (1.15.0)
Building wheels for collected packages: mmpycocotools
Building wheel for mmpycocotools (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [23 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/cocoeval.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/mask.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/coco.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/init.py -> build/lib.linux-x86_64-3.8/pycocotools
running build_ext
Compiling pycocotools/_mask.pyx because it changed.
[1/1] Cythonizing pycocotools/_mask.pyx
/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /tmp/pip-install-4w3usf7w/mmpycocotools_f828a534b0364f73bea4e3bd394507f9/pycocotools/_mask.pyx
tree = Parsing.p_module(s, pxd, full_module_name)
building 'pycocotools._mask' extension
creating build/common
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/common
creating build/temp.linux-x86_64-3.8/pycocotools
gcc -pthread -B /home/lizheng/anaconda3/envs/open-mmlab/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/numpy/core/include -Icommon -I/home/lizheng/anaconda3/envs/open-mmlab/include/python3.8 -c ../common/maskApi.c -o build/temp.linux-x86_64-3.8/../common/maskApi.o
gcc: error: ../common/maskApi.c: 没有那个文件或目录
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for mmpycocotools
Running setup.py clean for mmpycocotools
Failed to build mmpycocotools
Installing collected packages: mmpycocotools
Running setup.py install for mmpycocotools ... error
error: subprocess-exited-with-error

× Running setup.py install for mmpycocotools did not run successfully.
│ exit code: 1
╰─> [19 lines of output]
running install
/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
running build
running build_py
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/cocoeval.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/mask.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/coco.py -> build/lib.linux-x86_64-3.8/pycocotools
copying pycocotools/init.py -> build/lib.linux-x86_64-3.8/pycocotools
running build_ext
building 'pycocotools._mask' extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/common
creating build/temp.linux-x86_64-3.8/pycocotools
gcc -pthread -B /home/lizheng/anaconda3/envs/open-mmlab/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/numpy/core/include -Icommon -I/home/lizheng/anaconda3/envs/open-mmlab/include/python3.8 -c ../common/maskApi.c -o build/temp.linux-x86_64-3.8/../common/maskApi.o
gcc: error: ../common/maskApi.c: 没有那个文件或目录
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> mmpycocotools

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Could not find a version that satisfies the requirement protobuf

Thanks for sharing the code!

I have a problem when I try to install dependencies following your instructions, and I find protobuf>=3.20.2 requires-python: >=3.7.

微信截图_20230511153254 微信截图_20230511153325

So I do the same work on python3.7, but meet a problem: "ModuleNotFoundError: No module named 'petrel_client'" when i run train.py.

I comment some codes, then have another problem: "No module named 'mmcv'".

I build mmcv from source, then meet problem: "AssertionError: MMCV==2.0.0 is used but incompatible. Please install mmcv>=1.2.4, <=1.4.0." I install 1.4.0 by using "mim install "mmcv<=1.4.0"", but have another problem: "ModuleNotFoundError: No module named 'mmcv._ext'"

I have no idea.

Your paper is easy to read and understand, but code env is difficult to construct.

lack of image file

assert img_file.exists()
AttributeError: 'NoneType' object has no attribute 'exists'

run ‘python -m al3d_det.datasets.waymo.waymo_preprocess --cfg_file tools/cfgs/det_dataset_cfgs/waymo_xxx_sweeps_mm.yaml --func create_waymo_infos' and 'python -m al3d_det.datasets.waymo.waymo_preprocess --cfg_file tools/cfgs/det_dataset_cfgs/waymo_xxxx_sweeps_mm.yaml --func create_waymo_database'. There are
not the path of '../data/waymo/waymo_processed_data_v4/segment-9509506420470671704_4049_100_4069_100_with_camera_labels/image_0/0034.png' and '../data/waymo/waymo_processed_data_v4/segment-9509506420470671704_4049_100_4069_100_with_camera_labels/image*' What should I do? Thake you for your answer.

Visualize the results

Hello author, I may encounter some errors when using demo. py

(LoG37) root@autodl-container-3b5811a6ae-c6f524b1:~/LoGoNet/detection/tools# python demo.py --cfg_file /root/LoGoNet/detection/tools/cfgs/det_model_cfgs/kitti/LoGoNet-kitti.yaml --data_path /root/LoGoNet/detection/data/kitti/testing/velodyne/000000.bin --ckpt /root/LoGoNet/detection/tools/LoGoNet-KITTI.pth /root/miniconda3/envs/LoG37/lib/python3.7/site-packages/traits/etsconfig/etsconfig.py:428: UserWarning: Environment variable "HOME" not set, setting home directory to /tmp % (environment_variable, parent_directory) 2023-06-05 20:51:43,504 INFO -----------------Quick Demo of al3d-det------------------------- 2023-06-05 20:51:43,505 INFO Total number of samples: 1 /root/miniconda3/envs/LoG37/lib/python3.7/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:2157.) return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined] 2023-06-05 20:51:46,868 INFO ==> Loading parameters from checkpoint /root/LoGoNet/detection/tools/LoGoNet-KITTI.pth to CPU 2023-06-05 20:51:47,037 INFO ==> Checkpoint trained from version: al3d_det+0.1.0+dcdb7e6+pyc3a3d92 2023-06-05 20:51:49,242 INFO ==> Done (loaded 575/575) 2023-06-05 20:51:49,486 INFO Visualized sample index: 1 Traceback (most recent call last): File "demo.py", line 110, in <module> main() File "demo.py", line 96, in main pred_dicts, _ = model.forward(data_dict) File "/root/LoGoNet/detection/al3d_det/models/anchor_MM_kitti.py", line 86, in forward batch_dict = self.camera.img_backbone(batch_dict) File "/root/miniconda3/envs/LoG37/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl return forward_call(*input, **kwargs) File "/root/LoGoNet/detection/al3d_det/models/image_modules/mmdet_ffnkitti.py", line 54, in forward images = batch_dict['images'] KeyError: 'images'


Can you tell me how to modify or update your demo. py? Thank you

'SwinTransformer is not in the backbone registry'

When I debug for /detection/tools/train.py file, there has an error "'SwinTransformer is not in the backbone registry'". It this caused by version of mmdet or mmcv-full?
Following is my environment :
mmcv-full 1.4.0
mmdet 2.11.0
mmengine 0.8.4
mmpycocotools 12.0.3
Cpython 0.29.33
Could the author introduce the version of critical packages, i.e. mmdet ,mmcv ? Please

运行脚本时错误

当我运行sh scripts/dist_train.sh ${NUM_GPUS} --cfg_file ${CONFIG_FILE} 出现了错误:
1.首先dist_train.sh 要接受3个参数 :
NGPUSLIST=$1
NGPUS=$2
PY_ARGS=${@:3}
cfg_file应该传入PY_ARGS里吧,是LoGoNet-kitti.yaml文件的路径吗 第一个参数第二个参数一般填什么

2.status="$(nc -z 127.0.0.1 $PORT &lt; /dev/null &amp;&gt;/dev/null; echo $?)"
if [ "${status}" != "0" ]; then
break;
fi
我后来把NGPUSLIST=1 NGPUS=1直接写死,不传参了,cfg_file直接写在train.py里,后运行到上述代码一直循环,这个代码意思不是找到未占用的端口吗,如果未占用返回0吧 那么下面为啥是不等于号

How to visualize?

I run the demo.py by python demo.py --cfg_file /media/wdr/cym/LoGoNet-base/detection/tools/cfgs/det_model_cfgs/kitti/LoGoNet-kitti.yaml --data_path /media/wdr/cym/LoGoNet-base/detection/data/kitti/testing/velodyne/000000.bin --ckpt /media/wdr/cym/LoGoNet-base/checkpoint_epoch_40.pth

and output error:

2024-04-02 22:12:25,115 INFO -----------------Quick Demo of al3d-det-------------------------
Traceback (most recent call last):
File "demo.py", line 107, in
main()
File "demo.py", line 80, in main
root_path=Path(args.data_path), ext=args.ext, logger=logger
File "/home/cym/miniconda3/envs/multi3d/lib/python3.6/typing.py", line 1231, in new
return _generic_new(cls.next_in_mro, cls, *args, **kwds)
File "/home/cym/miniconda3/envs/multi3d/lib/python3.6/typing.py", line 1186, in _generic_new
return base_cls.new(cls)
TypeError: Can't instantiate abstract class DemoDataset with abstract methods get_infos_and_points, init_infos

how to solve?

GoF and LoF

hello,I have a question that where are the GoF and LoF codes in kitti's code?
I have seen the code in LoGoHead_kitti.py

localgrid_densityfeat_fuse = self.crossattention_pointhead(batch_dict, point_features=localgrid_densityfeat, point_coords=grid_coords, layer_name="layer1")

Is this the code for LoF? If so, where is GoF?

AssertionError: MMCV==1.7.1 is usebut incompatible. Please install mmcv>=2.0.0rc4, <2.1.0.

I have a version problem when I run the training function, but these versions are not available in the repository,

(LoG) root@ubun:/data/python/jupyter_lab/jupyter_projects/LRK/LoGoNet/detection/tools# pip install mmcv==2.1.0 ERROR: Could not find a version that satisfies the requirement mmcv==2.1.0 (from versions: 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.2.11, 0.2.12, 0.2.13, 0.2.14, 0.2.15, 0.2.16, 0.3.0, 0.3.1, 0.3.2, 0.4.0, 0.4.2, 0.4.3, 0.4.4, 0.5.0, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8, 0.5.9, 0.6.0, 0.6.1, 0.6.2, 1.0rc0, 1.0rc2, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3.0, 1.3.1, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.3.15, 1.3.16, 1.3.17, 1.3.18, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 2.0.0rc1, 2.0.0rc2, 2.0.0rc3) ERROR: No matching distribution found for mmcv==2.1.0

Evaluate Result precision

Hi, thanks to open source excellent work. But after training, the result is not well as the paper said. The result is as follows:
image
I guess it was some fault when I installed or trained.
my environment is as follows:

ubuntu 18.04
pytorch=1.10.0
spconv=2.1.25

about install issue

hello,thank you for your code!
when i run the command cd LoGoNet/detection/models/image_modules/swin_model && pip install -r requirements.txt, occurs the following error:

INFO: pip is looking at multiple versions of isort to determine which version is compatible with other requirements. This could take a while.
ERROR: Could not find a version that satisfies the requirement protobuf<4,>=3.20.2 (from onnx) (from versions: 2.0.0b0, 2.0.3, 2.3.0, 2.4.1, 2.5.0, 2.6.0, 2.6.1, 3.0.0a2, 3.0.0a3, 3.0.0b1, 3.0.0b1.post1, 3.0.0b1.post2, 3.0.0b2, 3.0.0b2.post1, 3.0.0b2.post2, 3.0.0b3, 3.0.0b4, 3.0.0, 3.1.0, 3.1.0.post1, 3.2.0rc1, 3.2.0rc1.post1, 3.2.0rc2, 3.2.0, 3.3.0, 3.4.0, 3.5.0.post1, 3.5.1, 3.5.2, 3.5.2.post1, 3.6.0, 3.6.1, 3.7.0rc2, 3.7.0rc3, 3.7.0, 3.7.1, 3.8.0rc1, 3.8.0, 3.9.0rc1, 3.9.0, 3.9.1, 3.9.2, 3.10.0rc1, 3.10.0, 3.11.0rc1, 3.11.0rc2, 3.11.0, 3.11.1, 3.11.2, 3.11.3, 3.12.0rc1, 3.12.0rc2, 3.12.0, 3.12.1, 3.12.2, 3.12.4, 3.13.0rc3, 3.13.0, 3.14.0rc1, 3.14.0rc2, 3.14.0rc3, 3.14.0, 3.15.0rc1, 3.15.0rc2, 3.15.0, 3.15.1, 3.15.2, 3.15.3, 3.15.4, 3.15.5, 3.15.6, 3.15.7, 3.15.8, 3.16.0rc1, 3.16.0rc2, 3.16.0, 3.17.0rc1, 3.17.0rc2, 3.17.0, 3.17.1, 3.17.2, 3.17.3, 3.18.0rc1, 3.18.0rc2, 3.18.0, 3.18.1, 3.18.3, 3.19.0rc1, 3.19.0rc2, 3.19.0, 3.19.1, 3.19.2, 3.19.3, 3.19.4, 3.19.5, 3.19.6, 4.0.0rc1, 4.0.0rc2, 4.21.0rc1, 4.21.0rc2, 4.21.0)
ERROR: No matching distribution found for protobuf<4,>=3.20.2

My environment is ubuntu 18.04 ,nvcc -V 11.6
How can i solve the problem?Thanks

Question about create_waymo_database

I have one more question.
When I do,
python -m al3d_det.datasets.waymo.waymo_preprocess --cfg_file cfgs/det_dataset_cfgs/waymo_one_sweep_mm.yaml --func create_waymo_database

It make gt image file like this.
LoGoNet/detection/data/waymo/gt_database_train_sampled_1_sweep_[0,0]/segment-10017090168044687777_6380_000_6400_000_with_camera_labels_0000_Vehicle_1.png

But when I see it, it's not correct. maybe in "detection/al3d_det/datasets/waymo/waymo_preprocess.py"
gt_boxes2d[cam] = box_utils.boxes3d_to_boxes2d
I think 196 line have a problem.
When I do this command, I have an error for saving empty array to file.

Or these patch images in gt database don't need to be correct?

TypeError: argument of type 'PosixPath' is not iterable

2023-06-25 16:39:06,450 INFO Start logging
2023-06-25 16:39:06,450 INFO CUDA_VISIBLE_DEVICES=ALL
2023-06-25 16:39:06,450 INFO cfg_file /media/root1/D/Workspace/paper/LoGoNet/detection/tools/cfgs/det_model_cfgs/kitti/LoGoNet-kitti.yaml
2023-06-25 16:39:06,450 INFO batch_size 2
2023-06-25 16:39:06,450 INFO epochs 80
2023-06-25 16:39:06,450 INFO workers 6
2023-06-25 16:39:06,450 INFO extra_tag default
2023-06-25 16:39:06,450 INFO ckpt None
2023-06-25 16:39:06,450 INFO pretrained_model None
2023-06-25 16:39:06,450 INFO fix_pretrained_weights False
2023-06-25 16:39:06,450 INFO launcher none
2023-06-25 16:39:06,450 INFO tcp_port 18888
2023-06-25 16:39:06,450 INFO sync_bn False
2023-06-25 16:39:06,450 INFO fix_random_seed False
2023-06-25 16:39:06,450 INFO ckpt_save_interval 1
2023-06-25 16:39:06,450 INFO local_rank 0
2023-06-25 16:39:06,450 INFO max_ckpt_save_num 30
2023-06-25 16:39:06,450 INFO merge_all_iters_to_one_epoch False
2023-06-25 16:39:06,450 INFO find_unused_parameters False
2023-06-25 16:39:06,450 INFO set_cfgs None
2023-06-25 16:39:06,450 INFO max_waiting_mins 0
2023-06-25 16:39:06,450 INFO start_epoch 0
2023-06-25 16:39:06,450 INFO save_to_file False
2023-06-25 16:39:06,450 INFO cfg.LOCAL_RANK: 0
2023-06-25 16:39:06,450 INFO cfg.CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
2023-06-25 16:39:06,450 INFO
cfg.DATA_CONFIG = edict()
2023-06-25 16:39:06,450 INFO cfg.DATA_CONFIG.DATASET: KittiDataset
2023-06-25 16:39:06,450 INFO cfg.DATA_CONFIG.DATA_PATH: /media/root1/D/Workspace/paper/LoGoNet/detection/data/kitti
2023-06-25 16:39:06,450 INFO cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1]
2023-06-25 16:39:06,450 INFO
cfg.DATA_CONFIG.DATA_SPLIT = edict()
2023-06-25 16:39:06,450 INFO cfg.DATA_CONFIG.DATA_SPLIT.train: train
2023-06-25 16:39:06,450 INFO cfg.DATA_CONFIG.DATA_SPLIT.test: val
2023-06-25 16:39:06,450 INFO
cfg.DATA_CONFIG.INFO_PATH = edict()
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.INFO_PATH.train: ['kitti_infos_train.pkl']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.INFO_PATH.test: ['kitti_infos_val.pkl']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.USE_IMAGE: True
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.GET_ITEM_LIST: ['images', 'points', 'calib_matricies', 'gt_boxes2d']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.FOV_POINTS_ONLY: True
2023-06-25 16:39:06,451 INFO
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict()
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'gt_samplingkittimm', 'AUG_WITH_IMAGE': True, 'JOINT_SAMPLE': True, 'KEEP_RAW': True, 'POINT_REFINE': True, 'BOX_IOU_THRES': 0.5, 'IMG_AUG_TYPE': 'by_order', 'AUG_USE_TYPE': 'annotation', 'IMG_ROOT_PATH': 'training/image_2', 'USE_ROAD_PLANE': True, 'DB_INFO_PATH': ['kitti_dbinfos_train.pkl'], 'PREPARE': {'filter_by_min_points': ['Car:5', 'Pedestrian:5', 'Cyclist:5'], 'filter_by_difficulty': [-1]}, 'SAMPLE_GROUPS': ['Car:15', 'Pedestrian:10', 'Cyclist:10'], 'NUM_POINT_FEATURES': 4, 'DATABASE_WITH_FAKELIDAR': False, 'REMOVE_EXTRA_WIDTH': [0.0, 0.0, 0.0], 'LIMIT_WHOLE_SCENE': True}, {'NAME': 'random_world_flip', 'ALONG_AXIS_LIST': ['x'], 'RETURN_NOISE_FLIP': True}, {'NAME': 'random_world_rotation', 'WORLD_ROT_ANGLE': [-0.78539816, 0.78539816], 'RETURN_NOISE_ROTATE': True}, {'NAME': 'random_world_scaling', 'WORLD_SCALE_RANGE': [0.95, 1.05], 'RETURN_NOISE_SCALE': True}]
2023-06-25 16:39:06,451 INFO
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict()
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity']
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.DATA_PROCESSOR: [{'NAME': 'mask_points_and_boxes_outside_range', 'REMOVE_OUTSIDE_BOXES': True}, {'NAME': 'shuffle_points', 'SHUFFLE_ENABLED': {'train': True, 'test': False}}, {'NAME': 'transform_points_to_voxels', 'VOXEL_SIZE': [0.05, 0.05, 0.1], 'MAX_POINTS_PER_VOXEL': 5, 'MAX_NUMBER_OF_VOXELS': {'train': 16000, 'test': 40000}}]
2023-06-25 16:39:06,451 INFO cfg.DATA_CONFIG.BASE_CONFIG: cfgs/det_dataset_cfgs/kitti_dataset_mm.yaml
2023-06-25 16:39:06,451 INFO
cfg.MODEL = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.NAME: ANCHORMMKITTI
2023-06-25 16:39:06,451 INFO cfg.MODEL.SECOND_STAGE: True
2023-06-25 16:39:06,451 INFO
cfg.MODEL.VFE = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.VFE.NAME: MeanVFE
2023-06-25 16:39:06,451 INFO
cfg.MODEL.IMAGE_BACKBONE = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.NAME: MMDETFPNKITTI
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.FREEZE_IMGBACKBONE: True
2023-06-25 16:39:06,451 INFO
cfg.MODEL.IMAGE_BACKBONE.IFN = edict()
2023-06-25 16:39:06,451 INFO
cfg.MODEL.IMAGE_BACKBONE.IFN.ARGS = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.ARGS.feat_extract_layer: ['layer1']
2023-06-25 16:39:06,451 INFO
cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE.in_channels: [256]
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE.out_channels: [64]
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE.kernel_size: [1]
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE.stride: [1]
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IFN.CHANNEL_REDUCE.bias: [False]
2023-06-25 16:39:06,451 INFO
cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG = edict()
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.type: SwinTransformer
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.embed_dim: 96
2023-06-25 16:39:06,451 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.depths: [2, 2, 6, 2]
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.num_heads: [3, 6, 12, 24]
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.window_size: 7
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.mlp_ratio: 4
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.qkv_bias: True
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.qk_scale: None
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.drop_rate: 0.0
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.attn_drop_rate: 0.0
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.drop_path_rate: 0.2
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.ape: False
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.patch_norm: True
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.out_indices: [0, 1, 2, 3]
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.IMGCONFIG.use_checkpoint: False
2023-06-25 16:39:06,452 INFO
cfg.MODEL.IMAGE_BACKBONE.FPNCONFIG = edict()
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.FPNCONFIG.type: FPN
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.FPNCONFIG.in_channels: [96, 192, 384, 768]
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.FPNCONFIG.out_channels: 256
2023-06-25 16:39:06,452 INFO cfg.MODEL.IMAGE_BACKBONE.FPNCONFIG.num_outs: 5
2023-06-25 16:39:06,452 INFO
cfg.MODEL.BACKBONE_3D = edict()
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_3D.NAME: Backbone3D
2023-06-25 16:39:06,452 INFO
cfg.MODEL.MAP_TO_BEV = edict()
2023-06-25 16:39:06,452 INFO cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression
2023-06-25 16:39:06,452 INFO cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256
2023-06-25 16:39:06,452 INFO
cfg.MODEL.BACKBONE_2D = edict()
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.NAME: Backbone2D
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5]
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2]
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [128, 256]
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2]
2023-06-25 16:39:06,452 INFO cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [256, 256]
2023-06-25 16:39:06,452 INFO
cfg.MODEL.DENSE_HEAD = edict()
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0
2023-06-25 16:39:06,452 INFO cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.ANCHOR_GENERATOR_CONFIG: [{'class_name': 'Car', 'anchor_sizes': [[3.9, 1.6, 1.56]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-1.78], 'align_center': False, 'feature_map_stride': 8, 'matched_threshold': 0.6, 'unmatched_threshold': 0.45}, {'class_name': 'Pedestrian', 'anchor_sizes': [[0.8, 0.6, 1.73]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-0.6], 'align_center': False, 'feature_map_stride': 8, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}, {'class_name': 'Cyclist', 'anchor_sizes': [[1.76, 0.6, 1.73]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [-0.6], 'align_center': False, 'feature_map_stride': 8, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}]
2023-06-25 16:39:06,453 INFO
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder
2023-06-25 16:39:06,453 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict()
2023-06-25 16:39:06,453 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2
2023-06-25 16:39:06,453 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-06-25 16:39:06,453 INFO
cfg.MODEL.ROI_HEAD = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NAME: LoGoHeadKITTI
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256]
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.CLS_FC: [256, 256]
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.REG_FC: [256, 256]
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3
2023-06-25 16:39:06,453 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict()
2023-06-25 16:39:06,453 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8
2023-06-25 16:39:06,453 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 1024
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7
2023-06-25 16:39:06,453 INFO
cfg.MODEL.ROI_HEAD.VOXEL_AGGREGATION = edict()
2023-06-25 16:39:06,453 INFO cfg.MODEL.ROI_HEAD.VOXEL_AGGREGATION.NUM_FEATURES: [64, 64]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.VOXEL_AGGREGATION.FEATURE_LOCATIONS: ['x_conv3', 'x_conv4']
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FEATURE_LOCATIONS: ['x_conv3', 'x_conv4']
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 6
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS = edict()
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3 = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.MLPS: [[32, 32], [32, 32]]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.POOL_RADIUS: [0.4, 0.8]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.NSAMPLE: [16, 16]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.POOL_METHOD: max_pool
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.USE_DENSITY: True
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4 = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.MLPS: [[32, 32], [32, 32]]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.POOL_RADIUS: [0.8, 1.6]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.NSAMPLE: [16, 16]
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.POOL_METHOD: max_pool
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.USE_DENSITY: True
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.NAME: VoxelWithPointProjectionV2KITTI
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.FUSE_MODE: crossattention_deform
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.CAMERAS: ['camera_0', 'camera_1', 'camera_2', 'camera_3', 'camera_4']
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.IMAGE_SCALE: 0.5
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.INTERPOLATE: True
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES.camera_0: 0
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES.camera_1: 0
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES.camera_2: 0
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES.camera_3: 0
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.DEPTH_THRES.camera_4: 0
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.LAYER_CHANNEL = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.LAYER_CHANNEL.layer1: 64
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.MID_CHANNELS: 64
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FUSION.FUSE_OUT: True
2023-06-25 16:39:06,454 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION = edict()
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.ENABLED: True
2023-06-25 16:39:06,454 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.NUM_FEATURES: 128
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.NUM_HEADS: 1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.NUM_HIDDEN_FEATURES: 128
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.NUM_LAYERS: 1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.POSITIONAL_ENCODER: density_grid_points
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.MAX_NUM_BOXES: 20
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.DROPOUT: 0.1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.COMBINE: True
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.ATTENTION.MASK_EMPTY_POINTS: True
2023-06-25 16:39:06,455 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY = edict()
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.ENABLED: True
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.NUM_FEATURES: 128
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.NUM_HIDDEN_FEATURES: 128
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.POSITIONAL_ENCODER: density_grid_points
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.MAX_NUM_BOXES: 20
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.DROPOUT: 0.1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.COMBINE: True
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DENSITYQUERY.MASK_EMPTY_POINTS: True
2023-06-25 16:39:06,455 INFO
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict()
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: roi_iou
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55
2023-06-25 16:39:06,455 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict()
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CLS_LOSS: BinaryCrossEntropy
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.REG_LOSS: smooth-l1
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CORNER_LOSS_REGULARIZATION: True
2023-06-25 16:39:06,455 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_cls_weight: 1.0
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_reg_weight: 1.0
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_corner_weight: 1.0
2023-06-25 16:39:06,455 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-06-25 16:39:06,456 INFO
cfg.MODEL.POST_PROCESSING = edict()
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.3
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti
2023-06-25 16:39:06,456 INFO
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict()
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.55
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096
2023-06-25 16:39:06,456 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500
2023-06-25 16:39:06,456 INFO
cfg.OPTIMIZATION = edict()
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 2
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.NUM_EPOCHS: 80
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.LR: 0.01
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.MOMENTUM: 0.9
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.MOMS: [0.95, 0.85]
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.PCT_START: 0.4
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.DIV_FACTOR: 10
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45]
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.LR_DECAY: 0.1
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.LR_CLIP: 1e-07
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.LR_WARMUP: False
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.WARMUP_EPOCH: 1
2023-06-25 16:39:06,456 INFO cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10
2023-06-25 16:39:06,456 INFO cfg.ROOT_DIR: /media/root1/D/Workspace/paper/LoGoNet/detection
2023-06-25 16:39:06,456 INFO cfg.TAG: LoGoNet-kitti
2023-06-25 16:39:06,456 INFO cfg.EXP_GROUP_PATH: media/root1/D/Workspace/paper/LoGoNet/detection/tools/cfgs/det_model_cfgs/kitti
2023-06-25 16:39:06,562 INFO Database filter by min points Car: 14357 => 13532
2023-06-25 16:39:06,562 INFO Database filter by min points Pedestrian: 2207 => 2168
2023-06-25 16:39:06,563 INFO Database filter by min points Cyclist: 734 => 705
2023-06-25 16:39:06,582 INFO Database filter by difficulty Car: 13532 => 10759
2023-06-25 16:39:06,585 INFO Database filter by difficulty Pedestrian: 2168 => 2075
2023-06-25 16:39:06,586 INFO Database filter by difficulty Cyclist: 705 => 581
2023-06-25 16:39:06,591 INFO Loading KITTI dataset
2023-06-25 16:39:06,675 INFO Total samples for KITTI dataset: 3712
/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /opt/conda/conda-bld/pytorch_1634272155627/work/aten/src/ATen/native/TensorShape.cpp:2157.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
2023-06-25 16:39:09,360 INFO ANCHORMMKITTI(
(lidar): ANCHORKITTIMM_LiDAR(
(vfe): MeanVFE()
(backbone3d): Backbone3D(
(conv_input): SparseSequential(
(0): SubMConv3d(4, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(conv1): SparseSequential(
(0): SparseSequential(
(0): SubMConv3d(16, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv2): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(16, 32, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv3): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(32, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(3): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv4): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(64, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[0, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(3): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv_out): SparseSequential(
(0): SparseConv3d(64, 128, kernel_size=[3, 1, 1], stride=[2, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(map_to_bev): HeightCompression()
(backbone2d): Backbone2D(
(blocks): ModuleList(
(0): Sequential(
(0): ZeroPad2d(padding=(1, 1, 1, 1), value=0.0)
(1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), bias=False)
(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
(1): Sequential(
(0): ZeroPad2d(padding=(1, 1, 1, 1), value=0.0)
(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)
(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
)
(deblocks): ModuleList(
(0): Sequential(
(0): ConvTranspose2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): Sequential(
(0): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
)
(dense_head): AnchorHeadSingle(
(cls_loss_func): SigmoidFocalClassificationLoss()
(reg_loss_func): WeightedSmoothL1Loss()
(dir_loss_func): WeightedCrossEntropyLoss()
(conv_cls): Conv2d(512, 18, kernel_size=(1, 1), stride=(1, 1))
(conv_box): Conv2d(512, 42, kernel_size=(1, 1), stride=(1, 1))
(conv_dir_cls): Conv2d(512, 12, kernel_size=(1, 1), stride=(1, 1))
)
(roi_head): LoGoHeadKITTI(
(proposal_target_layer): ProposalTargetLayer()
(reg_loss_func): WeightedSmoothL1Loss()
(ffn): Sequential(
(0): Conv1d(7, 32, kernel_size=(1,), stride=(1,))
(1): BatchNorm1d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
(3): Conv1d(32, 64, kernel_size=(1,), stride=(1,))
)
(up_ffn): Sequential(
(0): Conv1d(64, 64, kernel_size=(1,), stride=(1,))
(1): BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
(3): Conv1d(64, 128, kernel_size=(1,), stride=(1,))
)
(roi_grid_pool_layers): ModuleList(
(0): StackSAModuleMSGAttention(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(68, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(68, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(1): StackSAModuleMSGAttention(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(68, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(68, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
)
(attention_head): TransformerEncoder(
(pos_encoder): FeedForwardPositionalEncoding(
(ffn): Sequential(
(0): Conv1d(4, 64, kernel_size=(1,), stride=(1,))
(1): BatchNorm1d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
(3): Conv1d(64, 128, kernel_size=(1,), stride=(1,))
)
)
(transformer_encoder): TransformerEncoder(
(layers): ModuleList(
(0): TransformerEncoderLayer(
(self_attn): MultiheadAttention(
(out_proj): NonDynamicallyQuantizableLinear(in_features=128, out_features=128, bias=True)
)
(linear1): Linear(in_features=128, out_features=128, bias=True)
(dropout): Dropout(p=0.1, inplace=False)
(linear2): Linear(in_features=128, out_features=128, bias=True)
(norm1): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
(dropout1): Dropout(p=0.1, inplace=False)
(dropout2): Dropout(p=0.1, inplace=False)
)
)
)
)
(crossattention_head): VoxelWithPointProjectionV2KITTI(
(point_projector): Point2ImageProjectionV2()
(pts_key_proj): Sequential(
(0): Linear(in_features=64, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
)
(pts_transform): Sequential(
(0): Linear(in_features=64, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
)
(fuse_blocks): DeformTransLayer(
(self_attn): MSDeformAttn(
(sampling_offsets): Linear(in_features=64, out_features=32, bias=True)
(attention_weights): Linear(in_features=64, out_features=16, bias=True)
(value_proj): Linear(in_features=64, out_features=64, bias=True)
(output_proj): Linear(in_features=64, out_features=64, bias=True)
)
(dropout1): Dropout(p=0.1, inplace=False)
(norm1): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
)
(fuse_conv): Sequential(
(0): Linear(in_features=128, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(crossattention_pointhead): VoxelWithPointProjectionV2KITTI(
(point_projector): Point2ImageProjectionV2()
(pts_key_proj): Sequential(
(0): Linear(in_features=64, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
)
(pts_transform): Sequential(
(0): Linear(in_features=64, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
)
(fuse_blocks): DeformTransLayer(
(self_attn): MSDeformAttn(
(sampling_offsets): Linear(in_features=64, out_features=32, bias=True)
(attention_weights): Linear(in_features=64, out_features=16, bias=True)
(value_proj): Linear(in_features=64, out_features=64, bias=True)
(output_proj): Linear(in_features=64, out_features=64, bias=True)
)
(dropout1): Dropout(p=0.1, inplace=False)
(norm1): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
)
(fuse_conv): Sequential(
(0): Linear(in_features=128, out_features=64, bias=True)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(shared_fc_layer): Sequential(
(0): Conv1d(27648, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
)
(reg_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 7, kernel_size=(1,), stride=(1,))
)
(cls_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 1, kernel_size=(1,), stride=(1,))
)
)
)
(camera): ANCHORKITTIMM_Camera(
(img_backbone): MMDETFPNKITTI(
(img_backbone): SwinTransformer(
(patch_embed): PatchEmbed(
(proj): Conv2d(3, 96, kernel_size=(4, 4), stride=(4, 4))
(norm): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
)
(pos_drop): Dropout(p=0.0, inplace=False)
(layers): ModuleList(
(0): BasicLayer(
(blocks): ModuleList(
(0): SwinTransformerBlock(
(norm1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=96, out_features=288, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=96, out_features=96, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): Identity()
(norm2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=96, out_features=384, bias=True)
(act): GELU()
(fc2): Linear(in_features=384, out_features=96, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1): SwinTransformerBlock(
(norm1): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=96, out_features=288, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=96, out_features=96, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.018)
(norm2): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=96, out_features=384, bias=True)
(act): GELU()
(fc2): Linear(in_features=384, out_features=96, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(downsample): PatchMerging(
(reduction): Linear(in_features=384, out_features=192, bias=False)
(norm): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
)
)
(1): BasicLayer(
(blocks): ModuleList(
(0): SwinTransformerBlock(
(norm1): LayerNorm((192,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=192, out_features=576, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=192, out_features=192, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.036)
(norm2): LayerNorm((192,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=192, out_features=768, bias=True)
(act): GELU()
(fc2): Linear(in_features=768, out_features=192, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1): SwinTransformerBlock(
(norm1): LayerNorm((192,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=192, out_features=576, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=192, out_features=192, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.055)
(norm2): LayerNorm((192,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=192, out_features=768, bias=True)
(act): GELU()
(fc2): Linear(in_features=768, out_features=192, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(downsample): PatchMerging(
(reduction): Linear(in_features=768, out_features=384, bias=False)
(norm): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
)
)
(2): BasicLayer(
(blocks): ModuleList(
(0): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.073)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.091)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(2): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.109)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(3): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.127)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(4): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.145)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(5): SwinTransformerBlock(
(norm1): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=384, out_features=1152, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=384, out_features=384, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.164)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=384, out_features=1536, bias=True)
(act): GELU()
(fc2): Linear(in_features=1536, out_features=384, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
(downsample): PatchMerging(
(reduction): Linear(in_features=1536, out_features=768, bias=False)
(norm): LayerNorm((1536,), eps=1e-05, elementwise_affine=True)
)
)
(3): BasicLayer(
(blocks): ModuleList(
(0): SwinTransformerBlock(
(norm1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=768, out_features=2304, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=768, out_features=768, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.182)
(norm2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
(1): SwinTransformerBlock(
(norm1): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
(attn): WindowAttention(
(qkv): Linear(in_features=768, out_features=2304, bias=True)
(attn_drop): Dropout(p=0.0, inplace=False)
(proj): Linear(in_features=768, out_features=768, bias=True)
(proj_drop): Dropout(p=0.0, inplace=False)
(softmax): Softmax(dim=-1)
)
(drop_path): DropPath(drop_prob=0.200)
(norm2): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
(mlp): Mlp(
(fc1): Linear(in_features=768, out_features=3072, bias=True)
(act): GELU()
(fc2): Linear(in_features=3072, out_features=768, bias=True)
(drop): Dropout(p=0.0, inplace=False)
)
)
)
)
)
(norm0): LayerNorm((96,), eps=1e-05, elementwise_affine=True)
(norm1): LayerNorm((192,), eps=1e-05, elementwise_affine=True)
(norm2): LayerNorm((384,), eps=1e-05, elementwise_affine=True)
(norm3): LayerNorm((768,), eps=1e-05, elementwise_affine=True)
)
(neck): FPN(
(lateral_convs): ModuleList(
(0): ConvModule(
(conv): Conv2d(96, 256, kernel_size=(1, 1), stride=(1, 1))
)
(1): ConvModule(
(conv): Conv2d(192, 256, kernel_size=(1, 1), stride=(1, 1))
)
(2): ConvModule(
(conv): Conv2d(384, 256, kernel_size=(1, 1), stride=(1, 1))
)
(3): ConvModule(
(conv): Conv2d(768, 256, kernel_size=(1, 1), stride=(1, 1))
)
)
(fpn_convs): ModuleList(
(0): ConvModule(
(conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(1): ConvModule(
(conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(2): ConvModule(
(conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(3): ConvModule(
(conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
)
)
(reduce_blocks): ModuleList(
(0): BasicBlock2D(
(conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
)
)
)
)
2023-06-25 16:39:09,366 INFO Start training media/root1/D/Workspace/paper/LoGoNet/detection/tools/cfgs/det_model_cfgs/kitti/LoGoNet-kitti(default)
epochs: 0%| | 0/80 [00:00<?, ?it/s]
epochs: 0%| | 0/80 [00:02<?, ?it/s]
Traceback (most recent call last):
File "/media/root1/D/Workspace/paper/LoGoNet/detection/tools/train.py", line 204, in
main()
File "/media/root1/D/Workspace/paper/LoGoNet/detection/tools/train.py", line 176, in main
merge_all_iters_to_one_epoch=args.merge_all_iters_to_one_epoch
File "/media/root1/D/Workspace/paper/LoGoNet/utils/al3d_utils/train_utils.py", line 93, in train_model
dataloader_iter=dataloader_iter
File "/media/root1/D/Workspace/paper/LoGoNet/utils/al3d_utils/train_utils.py", line 19, in train_one_epoch
batch = next(dataloader_iter)
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 521, in next
data = self._next_data()
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1203, in _next_data
return self._process_data(data)
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1229, in _process_data
data.reraise()
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/_utils.py", line 434, in reraise
raise exception
TypeError: Caught TypeError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 287, in _worker_loop
data = fetcher.fetch(index)
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 49, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/media/root1/D/anaconda3/envs/logonet/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 49, in
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/kitti/kitti_dataset.py", line 477, in getitem
data_dict = self.prepare_data(data_dict=input_dict)
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/dataset_kitti.py", line 140, in prepare_data
'gt_boxes_mask': gt_boxes_mask
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/augmentor/data_augmentor.py", line 262, in forward
data_dict = cur_augmentor(data_dict=data_dict)
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/augmentor/database_sampler_kittimm.py", line 437, in call
total_valid_sampled_dict)
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/augmentor/database_sampler_kittimm.py", line 285, in add_sampled_boxes_to_scene
calib_file = kitti_common.get_calib_path(int(info['image_idx']), self.root_path, relative_path=False)
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/kitti/kitti_object_eval_python/kitti_common.py", line 64, in get_calib_path
relative_path)
File "/media/root1/D/Workspace/paper/LoGoNet/detection/al3d_det/datasets/kitti/kitti_object_eval_python/kitti_common.py", line 23, in get_kitti_info_path
if 's3' not in prefix:
TypeError: argument of type 'PosixPath' is not iterable

Feature Dynamic Aggregation Module

hello,I have a question that where the code for Feature Dynamic Aggregation Module is ?
I have seen the code in LoGoHead_kitti.py

pooled_features = pooled_features + localgrid_densityfeat_fuse.permute(0, 2, 1)
and attention_output = pooled_features + attention_output

if this code means the three feature F p B + F l B + F g B, then I didn't see the self attetion moudle before

shared_features = self.shared_fc_layer(pooled_features.view(batch_size_rcnn, -1, 1))

Cant install requirements

hello im using ubuntu 22 and cuda 11.8. I cant install requirements for example sklearn library and torch_scatter. Do you have maybe already created environment in conda and could send me all required version?

About LoGoNet_Ens_v2

Hi, thanks for your excellent work. Would you mind sharing the difference or improvement between v1 and v2?
Moreover, does the model_v2 submitted to testset use the validation data in training? or just use the training data?

Thanks for your reply : )

Errors for processing waymo infos:

Hello, I would like to run the code on waymo dataset. However, when I run the following two commands

  1. "python -m al3d_det.datasets.waymo.waymo_preprocess --cfg_file tools/cfgs/det_dataset_cfgs/waymo_xxx_sweeps_mm.yaml --func create_waymo_infos",
  2. python -m al3d_det.datasets.waymo.waymo_preprocess --cfg_file tools/cfgs/det_dataset_cfgs/waymo_xxxx_sweeps_mm.yaml --func create_waymo_database

The following error occurred:
2023-09-07 21:03:29.162028: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0
Traceback (most recent call last):
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/datasets/waymo/waymo_preprocess.py", line 355, in
create_waymo_database(
File "/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/datasets/waymo/waymo_preprocess.py", line 304, in create_waymo_database
dataset = WaymoTrainingDataset(
File "/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/datasets/waymo/waymo_dataset.py", line 51, in init
from petrel_client.client import Client
ModuleNotFoundError: No module named 'petrel_client'

When I remove "OSS_PATH: 'cluster2:s3://dataset/waymo" in "waymo_one_sweep_mm.yaml", the new error occurred:
Traceback (most recent call last):
File "/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/datasets/waymo/waymo_preprocess.py", line 38, in get_infos_worker
sequence_infos = list(tqdm(executor.map(process_single_sequence, sample_sequence_file_list),
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/site-packages/tqdm/std.py", line 1182, in iter
for obj in iterable:
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/concurrent/futures/_base.py", line 619, in result_iterator
yield fs.pop().result()
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/concurrent/futures/_base.py", line 437, in result
return self.__get_result()
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
raise self._exception
File "/home/lizheng/anaconda3/envs/open-mmlab/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/media/lizheng/Samsung/codes/LoGoNet/detection/al3d_det/datasets/waymo/waymo_utils.py", line 218, in process_single_sequence_and_save
if pkl_file.exists():
AttributeError: 'str' object has no attribute 'exists'

May I ask what I should do?

precision on kitti test set?

I try to train the model on KITTI with all training data. But the precision on moderate level for car is only 82%, I want to know how to achieve 85% as paper said?

Plan for Nuscense

Hi, Thanks for open-source your excellent work. Do you have the plan to evaluate your work on the Nuscense dataset?

AP为0

2024-07-03 21:17:43,039 INFO *************** Performance of EPOCH 42 ***************** 2024-07-03 21:17:43,040 INFO Generate label finished(sec_per_example: 0.2963 second). 2024-07-03 21:17:43,041 INFO recall_roi_0.3: 0.914512 2024-07-03 21:17:43,041 INFO recall_rcnn_0.3: 0.916050 2024-07-03 21:17:43,042 INFO recall_roi_0.5: 0.859950 2024-07-03 21:17:43,042 INFO recall_rcnn_0.5: 0.879485 2024-07-03 21:17:43,042 INFO recall_roi_0.7: 0.528192 2024-07-03 21:17:43,042 INFO recall_rcnn_0.7: 0.690796 2024-07-03 21:17:43,046 INFO Average predicted number of objects(3769 samples): 5.860 /home/yxm/anaconda3/envs/logo38/lib/python3.8/site-packages/numba/cuda/dispatcher.py:536: NumbaPerformanceWarning: Grid size 15 will likely result in GPU under-utilization due to low occupancy. warn(NumbaPerformanceWarning(msg)) 2024-07-03 21:17:59,623 INFO Car [email protected], 0.70, 0.70: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car [email protected], 0.70, 0.70: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Pedestrian [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Pedestrian [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Pedestrian [email protected], 0.25, 0.25: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Pedestrian [email protected], 0.25, 0.25: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Cyclist [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Cyclist [email protected], 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Cyclist [email protected], 0.25, 0.25: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Cyclist [email protected], 0.25, 0.25: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Hello, why are all the box accuracies I tested 0? I hope to get your answer.

RuntimeError: /io/build/temp.linux-x86_64-cpython-39/spconv/build/core_cc/src/csrc/sparse/all/SpconvOps/SpconvOps_get_indice_pairs.cc(65) not implemented for CPU ONLY build.

when I follow the guidence to run CUDA_VISIBLE_DEVICES=0 python train.py --cfg_file cfgs/det_model_cfgs/kitti/LoGoNet-kitti.yaml
I got this error:

2024-04-20 19:08:49,322 INFO Start training det_model_cfgs/kitti/LoGoNet-kitti(default)
epochs: 0%| | 0/80 [00:00<?, ?it/s]
[Exception|native_pair]indices=torch.Size([32000, 4]),bs=2,ss=[41, 1600, 1408],algo=ConvAlgo.Native,ksize=[3, 3, 3],stride=[1, 1, 1],padding=[1, 1, 1],dilation=[1, 1, 1],subm=True,transpose=False | 0/1856 [00:00<?, ?it/s]
SPCONV_DEBUG_SAVE_PATH not found, you can specify SPCONV_DEBUG_SAVE_PATH as debug data save path to save debug data which can be attached in a issue.
epochs: 0%| | 0/80 [00:04<?, ?it/s]
Traceback (most recent call last):
File "/home/wbt/paper_code/LoGoNet/detection/tools/train.py", line 204, in
main()
File "/home/wbt/paper_code/LoGoNet/detection/tools/train.py", line 159, in main
train_model(
File "/home/wbt/paper_code/LoGoNet/utils/al3d_utils/train_utils.py", line 86, in train_model
accumulated_iter = train_one_epoch(
File "/home/wbt/paper_code/LoGoNet/utils/al3d_utils/train_utils.py", line 36, in train_one_epoch
loss, tb_dict, disp_dict = model_func(model, batch)
File "/home/wbt/paper_code/LoGoNet/detection/al3d_det/models/init.py", line 67, in model_func
ret_dict, tb_dict, disp_dict = model(batch_dict)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wbt/paper_code/LoGoNet/detection/al3d_det/models/anchor_MM_kitti.py", line 88, in forward
batch_dict = self.lidar(batch_dict, self.lidar.module_list[1])
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wbt/paper_code/LoGoNet/detection/al3d_det/models/anchor_MM_kitti.py", line 23, in forward
return cur_module(batch_dict)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wbt/paper_code/LoGoNet/detection/al3d_det/models/modules/backbone_3d/backbone3d.py", line 155, in forward
x = self.conv_input(input_sp_tensor)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/spconv/pytorch/modules.py", line 138, in forward
input = module(input)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/spconv/pytorch/conv.py", line 755, in forward
return self._conv_forward(self.training,
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/spconv/pytorch/conv.py", line 297, in _conv_forward
raise e
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/spconv/pytorch/conv.py", line 284, in _conv_forward
outids, indice_pairs, indice_pair_num = ops.get_indice_pairs(
File "/home/wbt/miniconda3/envs/LoGoNet/lib/python3.9/site-packages/spconv/pytorch/ops.py", line 156, in get_indice_pairs
num_act_out = SpconvOps.get_indice_pairs(alloc,
RuntimeError: /io/build/temp.linux-x86_64-cpython-39/spconv/build/core_cc/src/csrc/sparse/all/SpconvOps/SpconvOps_get_indice_pairs.cc(65)
not implemented for CPU ONLY build.

How to reproduce?

Thank you for your code!
I tried to train 1-stage model to use this one as pretrained_model in 2-stage.
So I changed below lines in LoGoNet-5f.yaml

SECOND_STAGE: False
NUM_EPOCHS: 20

But accuracy was quite low. So I'm checking what's the problem.
Am I right to train 1-stage model like this?

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.