From b25086f684bd6ef1028e320f231755857340d7f2 Mon Sep 17 00:00:00 2001 From: Roy Yang Date: Wed, 10 Apr 2024 18:43:11 +0200 Subject: [PATCH] Fix LRSchedulerWrapper with shared memory address issue. (#135) * fix: Fix LRSchedulerWrapper with shared memory address issue. * feat: update workflows, test data, and remove torch.jit * feat: lint the files. * fix: Fix mypy error. --- .github/workflows/ci.yml | 2 +- tests/common/ckpt_test.py | 1 + tests/common/imports_test.py | 1 + tests/common/logging_test.py | 1 + tests/common/named_tuple_test.py | 1 + tests/common/prettyprint_test.py | 1 + tests/common/progress_test.py | 1 + tests/common/time_test.py | 1 + .../common/datasets/bdd100k/detect_test.py | 1 + .../common/datasets/bdd100k/sem_seg_test.py | 1 + .../common/datasets/coco/detection_test.py | 1 + .../datasets/nuscenes/nuscenes_mono_test.py | 1 + .../common/datasets/nuscenes/nuscenes_test.py | 1 + .../common/datasets/shift/test_shift_tasks.py | 1 + tests/config/registry_test.py | 1 + tests/config/show_connection_test.py | 5 +- tests/config/sweep/sweep_test.py | 1 - tests/data/cbgs_test.py | 1 + tests/data/data_pipe_test.py | 1 + tests/data/datasets/bdd100k_test.py | 1 + tests/data/datasets/coco_test.py | 1 + tests/data/datasets/nuscenes_mono_test.py | 1 + tests/data/datasets/nuscenes_test.py | 1 + .../data/datasets/nuscenes_trajectory_test.py | 1 + tests/data/datasets/s3dis_test.py | 1 + tests/data/datasets/scalabel_test.py | 1 + tests/data/datasets/shift_test.py | 1 + tests/data/datasets/torchvision_test.py | 1 + tests/data/io/backend_test.py | 1 + tests/data/io/to_hdf5_test.py | 1 + tests/data/iterable_test.py | 1 + tests/data/loader_test.py | 1 + tests/data/reference_test.py | 1 + tests/data/resample_test.py | 1 + tests/data/transforms/autoaugment_test.py | 1 + tests/data/transforms/random_erasing_test.py | 1 + tests/data/transforms/to_tensor_test.py | 1 + tests/engine/callbacks/checkpoint_test.py | 1 + tests/engine/callbacks/ema_test.py | 1 + tests/engine/callbacks/evaluator_test.py | 1 + tests/engine/callbacks/logging_test.py | 1 + tests/engine/callbacks/visualizer_test.py | 1 + tests/engine/connectors_test.py | 1 + tests/engine/optim/optimizer_test.py | 1 + tests/engine/optim/scheduler_test.py | 1 + tests/engine/trainer_test.py | 1 + tests/engine/util_test.py | 1 + tests/eval/bdd100k/seg_test.py | 1 + tests/eval/bdd100k/track_test.py | 1 + tests/eval/coco/detect_test.py | 1 + tests/eval/common/binary_test.py | 1 + tests/eval/common/depth_test.py | 1 + tests/eval/common/flow_test.py | 1 + tests/eval/common/seg_test.py | 1 + tests/eval/kitti/depth_test.py | 1 + tests/eval/nuscenes/detect3d_test.py | 1 + tests/eval/nuscenes/track3d_test.py | 1 + tests/eval/scalabel/detect_test.py | 1 + tests/eval/scalabel/track_test.py | 1 + tests/eval/shift/depth_test.py | 1 + tests/eval/shift/detect_test.py | 1 + tests/eval/shift/flow_test.py | 1 + tests/eval/shift/multitask_writer_test.py | 1 + tests/eval/shift/seg_test.py | 1 + tests/eval/shift/track_test.py | 1 + tests/eval/utils.py | 1 + tests/model/adapter/ema_test.py | 1 + tests/model/cls/vit_test.py | 1 + tests/model/detect/faster_rcnn_test.py | 1 + tests/model/detect/mask_rcnn_test.py | 1 + tests/model/detect/retinanet_test.py | 1 + tests/model/detect/yolox_test.py | 1 + tests/model/seg/common.py | 1 + tests/model/seg/fcn_resnet_test.py | 1 + tests/model/seg/semantic_fpn_test.py | 1 + tests/model/segment3d/pointnet_test.py | 1 + tests/model/segment3d/pointnetpp_test.py | 1 + tests/model/track/qdtrack_test.py | 1 + tests/model/track/util_test.py | 1 + tests/op/base/csp_darknet_test.py | 1 + tests/op/base/dla_test.py | 1 + tests/op/base/pointnet_test.py | 1 + tests/op/base/resnet_test.py | 1 + tests/op/base/unet_test.py | 1 + tests/op/base/vgg_test.py | 1 + tests/op/box/anchor/point_generator_test.py | 1 + tests/op/box/box2d_test.py | 1 + tests/op/box/encoder/delta_xywh_test.py | 1 + tests/op/box/encoder/qd_3dt_test.py | 1 + tests/op/box/matchers/max_iou_test.py | 1 + tests/op/box/matchers/sim_ota_test.py | 1 + tests/op/box/poolers/roi_pooler_test.py | 1 + tests/op/box/samplers/combined_test.py | 1 + tests/op/box/samplers/random_test.py | 1 + tests/op/detect/faster_rcnn_test.py | 1 + tests/op/detect/mask_rcnn_test.py | 1 + tests/op/detect/rcnn_test.py | 1 + tests/op/detect/rpn_test.py | 1 + tests/op/detect/yolox_test.py | 1 + tests/op/detect3d/qd_3dt_test.py | 1 + tests/op/fpp/dla_up_test.py | 1 + tests/op/fpp/fpn_test.py | 1 + tests/op/fpp/yolox_pafpn_test.py | 1 + tests/op/geometry/projection_test.py | 1 + tests/op/geometry/rotation_test.py | 1 + tests/op/geometry/transform_test.py | 1 + tests/op/loss/multi_level_seg_loss_test.py | 1 + .../op/loss/orthogonal_transform_loss_test.py | 1 + tests/op/loss/quasi_dense_loss_test.py | 1 + tests/op/loss/seg_cross_entropy_loss_test.py | 1 + tests/op/mask/util_test.py | 1 + tests/op/seg/fcn_test.py | 1 + tests/op/seg/semantic_fpn_test.py | 1 + tests/op/track/qdtrack_test.py | 1 + tests/pl/data_module_test.py | 1 + tests/pl/trainer_test.py | 1 + tests/util.py | 1 + tests/vis/image/bbox3d_visualizer_test.py | 1 + tests/vis/image/bev_visualizer_test.py | 1 + .../vis/image/bounding_box_visualizer_test.py | 1 + tests/vis/image/seg_mask_visualizer_test.py | 1 + tests/vis/image/util.py | 1 + .../pointcloud/pointcloud_visualizer_test.py | 1 + tests/vis4d-test-data | 2 +- tests/zoo/bdd100k/faster_rcnn_test.py | 1 + tests/zoo/bdd100k/mask_rcnn_test.py | 1 + tests/zoo/bdd100k/qdtrack_test.py | 1 + tests/zoo/bdd100k/semantic_fpn_test.py | 1 + tests/zoo/bevformer_test.py | 1 + tests/zoo/cc_3dt_test.py | 1 + tests/zoo/faster_rcnn_test.py | 1 + tests/zoo/fcn_resnet_test.py | 1 + tests/zoo/mask_rcnn_test.py | 1 + tests/zoo/qdtrack_test.py | 1 + tests/zoo/retinanet_test.py | 1 + tests/zoo/shift/faster_rcnn_test.py | 1 + tests/zoo/shift/mask_rcnn_test.py | 1 + tests/zoo/shift/semantic_fpn_test.py | 1 + tests/zoo/util.py | 1 + tests/zoo/vit_imagenet_test.py | 1 + tests/zoo/yolox_test.py | 1 + vis4d/__init__.py | 1 + vis4d/__main__.py | 1 + vis4d/common/__init__.py | 1 + vis4d/common/array.py | 57 +++++++---------- vis4d/common/ckpt.py | 6 +- vis4d/common/dict.py | 1 + vis4d/common/imports.py | 1 + vis4d/common/logging.py | 1 + vis4d/common/named_tuple.py | 1 + vis4d/common/prettyprint.py | 1 + vis4d/common/progress.py | 1 + vis4d/common/slurm.py | 1 + vis4d/common/time.py | 1 + vis4d/common/typing.py | 1 + vis4d/common/util.py | 1 + vis4d/config/__init__.py | 1 + .../common/datasets/bdd100k/__init__.py | 1 + vis4d/config/common/datasets/bdd100k/track.py | 1 + vis4d/config/common/datasets/coco/__init__.py | 1 + .../common/datasets/imagenet/__init__.py | 1 + .../common/datasets/nuscenes/__init__.py | 1 + .../common/datasets/nuscenes/nuscenes.py | 1 + .../common/datasets/nuscenes/nuscenes_mono.py | 1 + .../config/common/datasets/shift/__init__.py | 1 + vis4d/config/common/datasets/shift/common.py | 17 +++-- vis4d/config/common/datasets/shift/tasks.py | 1 + vis4d/config/common/models/__init__.py | 1 + vis4d/config/common/models/faster_rcnn.py | 1 + vis4d/config/common/models/mask_rcnn.py | 1 + vis4d/config/common/models/qdtrack.py | 1 + vis4d/config/common/models/yolox.py | 1 + vis4d/config/config_dict.py | 1 + vis4d/config/default/__init__.py | 1 + .../default/data_connectors/__init__.py | 1 + vis4d/config/default/data_connectors/cls.py | 1 + .../config/default/data_connectors/common.py | 1 + .../default/data_connectors/detection.py | 1 + vis4d/config/default/data_connectors/seg.py | 1 + .../default/data_connectors/visualizers.py | 1 + vis4d/config/default/pl_trainer.py | 5 +- vis4d/config/default/runtime.py | 1 + vis4d/config/replicator.py | 18 +++--- vis4d/config/show_connection.py | 1 + vis4d/config/typing.py | 1 + vis4d/config/util/__init__.py | 1 + vis4d/config/util/callable.py | 1 + vis4d/config/util/dataloader.py | 1 + vis4d/config/util/optimizer.py | 1 + vis4d/config/util/registry.py | 1 + vis4d/config/util/sweep.py | 1 + vis4d/data/cbgs.py | 1 + vis4d/data/const.py | 1 + vis4d/data/data_pipe.py | 1 + vis4d/data/datasets/__init__.py | 1 + vis4d/data/datasets/base.py | 1 + vis4d/data/datasets/bdd100k.py | 1 + vis4d/data/datasets/coco.py | 3 +- vis4d/data/datasets/nuscenes.py | 1 + vis4d/data/datasets/nuscenes_detection.py | 1 + vis4d/data/datasets/nuscenes_mono.py | 1 + vis4d/data/datasets/nuscenes_trajectory.py | 1 + vis4d/data/datasets/s3dis.py | 1 + vis4d/data/datasets/scalabel.py | 8 +-- vis4d/data/datasets/shift.py | 1 + vis4d/data/datasets/torchvision.py | 1 + vis4d/data/datasets/util.py | 3 +- vis4d/data/io/__init__.py | 1 + vis4d/data/io/base.py | 1 + vis4d/data/io/file.py | 1 + vis4d/data/io/hdf5.py | 1 + vis4d/data/io/util.py | 1 + vis4d/data/io/zip.py | 1 + vis4d/data/iterable.py | 1 + vis4d/data/loader.py | 7 ++- vis4d/data/reference.py | 1 + vis4d/data/resample.py | 1 + vis4d/data/samplers.py | 1 + vis4d/data/transforms/__init__.py | 1 + vis4d/data/transforms/affine.py | 1 + vis4d/data/transforms/autoaugment.py | 1 + vis4d/data/transforms/base.py | 11 ++-- vis4d/data/transforms/crop.py | 1 + vis4d/data/transforms/flip.py | 1 + vis4d/data/transforms/mask.py | 1 + vis4d/data/transforms/mixup.py | 1 + vis4d/data/transforms/mosaic.py | 1 + vis4d/data/transforms/normalize.py | 1 + vis4d/data/transforms/pad.py | 1 + vis4d/data/transforms/photometric.py | 1 + vis4d/data/transforms/point_sampling.py | 1 + vis4d/data/transforms/points.py | 1 + vis4d/data/transforms/post_process.py | 1 + vis4d/data/transforms/random_erasing.py | 1 + vis4d/data/transforms/resize.py | 1 + vis4d/data/transforms/to_tensor.py | 1 + vis4d/data/typing.py | 1 + vis4d/engine/callbacks/__init__.py | 1 + vis4d/engine/callbacks/base.py | 1 + vis4d/engine/callbacks/checkpoint.py | 1 + vis4d/engine/callbacks/ema.py | 1 + vis4d/engine/callbacks/evaluator.py | 1 + vis4d/engine/callbacks/logging.py | 2 + vis4d/engine/callbacks/trainer_state.py | 1 + vis4d/engine/callbacks/visualizer.py | 1 + vis4d/engine/callbacks/yolox_callbacks.py | 1 + vis4d/engine/connectors/__init__.py | 1 + vis4d/engine/connectors/base.py | 1 + vis4d/engine/connectors/multi_sensor.py | 1 + vis4d/engine/connectors/util.py | 1 + vis4d/engine/experiment.py | 1 + vis4d/engine/flag.py | 1 + vis4d/engine/loss_module.py | 26 +++----- vis4d/engine/optim/__init__.py | 1 + vis4d/engine/optim/optimizer.py | 1 + vis4d/engine/optim/scheduler.py | 7 ++- vis4d/engine/parser.py | 1 + vis4d/engine/run.py | 1 + vis4d/engine/trainer.py | 1 + vis4d/engine/util.py | 1 + vis4d/eval/base.py | 1 + vis4d/eval/bdd100k/__init__.py | 1 + vis4d/eval/bdd100k/detect.py | 1 + vis4d/eval/bdd100k/seg.py | 1 + vis4d/eval/bdd100k/track.py | 1 + vis4d/eval/coco/detect.py | 1 + vis4d/eval/common/cls.py | 1 - vis4d/eval/common/seg.py | 1 + vis4d/eval/kitti/depth.py | 1 + vis4d/eval/metrics/depth.py | 3 +- vis4d/eval/nuscenes/__init__.py | 1 + vis4d/eval/nuscenes/detect3d.py | 1 + vis4d/eval/nuscenes/track3d.py | 1 + vis4d/eval/scalabel/__init__.py | 1 + vis4d/eval/scalabel/base.py | 1 + vis4d/eval/scalabel/detect.py | 23 ++++--- vis4d/eval/scalabel/track.py | 23 ++++--- vis4d/eval/shift/depth.py | 1 + vis4d/eval/shift/detect.py | 1 + vis4d/eval/shift/flow.py | 1 + vis4d/eval/shift/multitask_writer.py | 29 +++++---- vis4d/eval/shift/seg.py | 1 + vis4d/eval/shift/track.py | 1 + vis4d/model/adapter/__init__.py | 1 + vis4d/model/adapter/ema.py | 5 +- vis4d/model/cls/__init__.py | 1 + vis4d/model/cls/vit.py | 1 + vis4d/model/detect/faster_rcnn.py | 1 + vis4d/model/detect/mask_rcnn.py | 1 + vis4d/model/detect/retinanet.py | 1 + vis4d/model/detect/yolox.py | 1 + vis4d/model/detect3d/bevformer.py | 1 + vis4d/model/motion/velo_lstm.py | 1 + vis4d/model/seg/fcn_resnet.py | 1 + vis4d/model/seg/semantic_fpn.py | 1 + vis4d/model/segment3d/pointnet.py | 1 + vis4d/model/segment3d/pointnetpp.py | 7 +-- vis4d/model/track/qdtrack.py | 1 + vis4d/model/track/util.py | 1 + vis4d/model/track3d/cc_3dt.py | 1 + vis4d/op/base/__init__.py | 1 + vis4d/op/base/base.py | 1 + vis4d/op/base/csp_darknet.py | 1 + vis4d/op/base/dla.py | 1 + vis4d/op/base/pointnet.py | 1 + vis4d/op/base/pointnetpp.py | 63 +++++++++---------- vis4d/op/base/resnet.py | 1 + vis4d/op/base/unet.py | 1 + vis4d/op/base/vgg.py | 1 + vis4d/op/base/vit.py | 7 ++- vis4d/op/box/anchor/__init__.py | 1 + vis4d/op/box/anchor/anchor_generator.py | 1 + vis4d/op/box/anchor/point_generator.py | 1 + vis4d/op/box/anchor/util.py | 1 + vis4d/op/box/box2d.py | 6 +- vis4d/op/box/box3d.py | 1 + vis4d/op/box/encoder/__init__.py | 1 + vis4d/op/box/encoder/bevformer.py | 1 + vis4d/op/box/encoder/delta_xywh.py | 3 +- vis4d/op/box/encoder/qd_3dt.py | 3 +- vis4d/op/box/encoder/yolox.py | 1 + vis4d/op/box/matchers/__init__.py | 1 + vis4d/op/box/matchers/base.py | 1 + vis4d/op/box/matchers/max_iou.py | 1 + vis4d/op/box/matchers/sim_ota.py | 5 +- vis4d/op/box/poolers/__init__.py | 1 + vis4d/op/box/poolers/base.py | 1 + vis4d/op/box/poolers/roi_pooler.py | 1 + vis4d/op/box/poolers/utils.py | 3 +- vis4d/op/box/samplers/__init__.py | 1 + vis4d/op/box/samplers/base.py | 1 + vis4d/op/box/samplers/combined.py | 7 ++- vis4d/op/box/samplers/pseudo.py | 3 +- vis4d/op/box/samplers/random.py | 3 +- vis4d/op/detect/common.py | 1 + vis4d/op/detect/dense_anchor.py | 1 + vis4d/op/detect/faster_rcnn.py | 1 + vis4d/op/detect/mask_rcnn.py | 1 + vis4d/op/detect/rcnn.py | 1 + vis4d/op/detect/retinanet.py | 5 +- vis4d/op/detect/rpn.py | 5 +- vis4d/op/detect/yolox.py | 5 +- vis4d/op/detect3d/bevformer/__init__.py | 1 + vis4d/op/detect3d/bevformer/bevformer.py | 1 + vis4d/op/detect3d/bevformer/decoder.py | 1 + vis4d/op/detect3d/bevformer/encoder.py | 7 ++- vis4d/op/detect3d/bevformer/grid_mask.py | 1 + .../bevformer/spatial_cross_attention.py | 7 ++- .../bevformer/temporal_self_attention.py | 11 ++-- vis4d/op/detect3d/bevformer/transformer.py | 7 +-- vis4d/op/detect3d/common.py | 1 + vis4d/op/detect3d/qd_3dt.py | 3 +- vis4d/op/detect3d/util.py | 2 +- vis4d/op/fpp/__init__.py | 1 + vis4d/op/fpp/base.py | 1 + vis4d/op/fpp/dla_up.py | 1 + vis4d/op/fpp/fpn.py | 1 + vis4d/op/fpp/yolox_pafpn.py | 1 + vis4d/op/geometry/projection.py | 1 + vis4d/op/geometry/rotation.py | 15 ++--- vis4d/op/geometry/transform.py | 1 + vis4d/op/layer/attention.py | 3 +- vis4d/op/layer/conv2d.py | 1 + vis4d/op/layer/csp_layer.py | 1 + vis4d/op/layer/deform_conv.py | 1 + vis4d/op/layer/drop.py | 1 + vis4d/op/layer/mlp.py | 1 + vis4d/op/layer/ms_deform_attn.py | 2 +- vis4d/op/layer/patch_embed.py | 1 + vis4d/op/layer/positional_encoding.py | 1 + vis4d/op/layer/transformer.py | 5 +- vis4d/op/layer/util.py | 1 + vis4d/op/layer/weight_init.py | 1 + vis4d/op/loss/common.py | 3 +- vis4d/op/loss/embedding_distance.py | 1 + vis4d/op/loss/iou_loss.py | 1 + vis4d/op/loss/multi_level_seg_loss.py | 1 + vis4d/op/loss/multi_pos_cross_entropy.py | 1 + vis4d/op/loss/orthogonal_transform_loss.py | 1 + vis4d/op/loss/reducer.py | 1 + vis4d/op/loss/seg_cross_entropy_loss.py | 1 + vis4d/op/mask/util.py | 5 +- vis4d/op/motion/kalman_filter.py | 1 + vis4d/op/motion/velo_lstm.py | 1 + vis4d/op/seg/fcn.py | 1 + vis4d/op/seg/semantic_fpn.py | 1 + vis4d/op/track/assignment.py | 1 + vis4d/op/track/common.py | 1 + vis4d/op/track/matching.py | 1 + vis4d/op/track/qdtrack.py | 4 +- vis4d/op/track3d/cc_3dt.py | 2 +- vis4d/op/track3d/common.py | 1 + vis4d/op/typing.py | 1 + vis4d/op/util.py | 1 + vis4d/pl/__main__.py | 1 + vis4d/pl/callbacks/__init__.py | 1 + vis4d/pl/callbacks/callback_wrapper.py | 1 + vis4d/pl/callbacks/scheduler.py | 1 + vis4d/pl/data_module.py | 1 + vis4d/pl/run.py | 1 + vis4d/pl/trainer.py | 1 + vis4d/pl/training_module.py | 1 + vis4d/state/track/qdtrack.py | 3 +- vis4d/state/track3d/cc_3dt.py | 3 +- vis4d/state/track3d/motion/__init__.py | 1 + vis4d/state/track3d/motion/base.py | 1 + vis4d/state/track3d/motion/kf3d.py | 1 + vis4d/state/track3d/motion/lstm_3d.py | 1 + vis4d/vis/base.py | 1 + vis4d/vis/functional/__init__.py | 1 + vis4d/vis/functional/image.py | 1 + vis4d/vis/functional/pointcloud.py | 1 + vis4d/vis/image/__init__.py | 1 + vis4d/vis/image/bbox3d_visualizer.py | 29 +++++---- vis4d/vis/image/bev_visualizer.py | 15 +++-- vis4d/vis/image/bounding_box_visualizer.py | 1 + vis4d/vis/image/canvas/__init__.py | 1 + vis4d/vis/image/canvas/base.py | 1 + vis4d/vis/image/canvas/pillow_backend.py | 5 +- vis4d/vis/image/seg_mask_visualizer.py | 1 + vis4d/vis/image/util.py | 1 + vis4d/vis/image/viewer/__init__.py | 1 + vis4d/vis/image/viewer/base.py | 1 + vis4d/vis/image/viewer/matplotlib_viewer.py | 1 + vis4d/vis/pointcloud/__init__.py | 1 + vis4d/vis/pointcloud/pointcloud_visualizer.py | 9 ++- vis4d/vis/pointcloud/scene.py | 1 + vis4d/vis/pointcloud/viewer/__init__.py | 1 + vis4d/vis/pointcloud/viewer/base.py | 1 + vis4d/vis/pointcloud/viewer/open3d_viewer.py | 1 + vis4d/vis/util.py | 1 + vis4d/zoo/__init__.py | 1 + vis4d/zoo/bdd100k/__init__.py | 1 + vis4d/zoo/bevformer/__init__.py | 1 + vis4d/zoo/bevformer/bevformer_vis.py | 1 + vis4d/zoo/bevformer/data.py | 1 + vis4d/zoo/cc_3dt/__init__.py | 1 + .../cc_3dt_frcnn_r101_fpn_pure_det_nusc.py | 1 + ...c_3dt_frcnn_r101_fpn_velo_lstm_24e_nusc.py | 1 + vis4d/zoo/cc_3dt/cc_3dt_nusc_vis.py | 1 + vis4d/zoo/cc_3dt/data.py | 1 + vis4d/zoo/cc_3dt/model.py | 1 + vis4d/zoo/faster_rcnn/__init__.py | 1 + vis4d/zoo/fcn_resnet/__init__.py | 1 + vis4d/zoo/fcn_resnet/fcn_resnet_coco.py | 1 + vis4d/zoo/qdtrack/__init__.py | 1 + vis4d/zoo/qdtrack/data_yolox.py | 1 + vis4d/zoo/run.py | 1 + 448 files changed, 672 insertions(+), 248 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cee6f741c..0f9c371c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9"] + python-version: ["3.10"] steps: - uses: actions/checkout@v2 diff --git a/tests/common/ckpt_test.py b/tests/common/ckpt_test.py index 769f7375a..98ab57e21 100644 --- a/tests/common/ckpt_test.py +++ b/tests/common/ckpt_test.py @@ -1,4 +1,5 @@ """Test checkpoint.""" + from vis4d.common.ckpt import get_torchvision_models, load_from_torchvision diff --git a/tests/common/imports_test.py b/tests/common/imports_test.py index 123e8844e..e8c54fca6 100644 --- a/tests/common/imports_test.py +++ b/tests/common/imports_test.py @@ -1,4 +1,5 @@ """Test imports.""" + import unittest from vis4d.common.imports import package_available diff --git a/tests/common/logging_test.py b/tests/common/logging_test.py index fcd41b27c..5af247cee 100644 --- a/tests/common/logging_test.py +++ b/tests/common/logging_test.py @@ -1,4 +1,5 @@ """Test logging.""" + import logging import os import shutil diff --git a/tests/common/named_tuple_test.py b/tests/common/named_tuple_test.py index e3fc7cd8e..a604669de 100644 --- a/tests/common/named_tuple_test.py +++ b/tests/common/named_tuple_test.py @@ -1,4 +1,5 @@ """Test named tuple.""" + import unittest from collections import namedtuple diff --git a/tests/common/prettyprint_test.py b/tests/common/prettyprint_test.py index e8364f91d..fe8ab7ffe 100644 --- a/tests/common/prettyprint_test.py +++ b/tests/common/prettyprint_test.py @@ -1,4 +1,5 @@ """Test cases for pretty printing.""" + import unittest from typing import Any diff --git a/tests/common/progress_test.py b/tests/common/progress_test.py index 3e40289fb..1d4ace37b 100644 --- a/tests/common/progress_test.py +++ b/tests/common/progress_test.py @@ -1,4 +1,5 @@ """Test cases for progress bar.""" + import unittest import torch diff --git a/tests/common/time_test.py b/tests/common/time_test.py index 2e232af65..dd05e4b02 100644 --- a/tests/common/time_test.py +++ b/tests/common/time_test.py @@ -1,4 +1,5 @@ """Test cases for time.""" + import time import unittest from io import StringIO diff --git a/tests/config/common/datasets/bdd100k/detect_test.py b/tests/config/common/datasets/bdd100k/detect_test.py index 9cbd588a9..8c10e98c5 100644 --- a/tests/config/common/datasets/bdd100k/detect_test.py +++ b/tests/config/common/datasets/bdd100k/detect_test.py @@ -1,4 +1,5 @@ """Testcase for default data pipelines for detection.""" + import unittest from tests.util import get_test_data diff --git a/tests/config/common/datasets/bdd100k/sem_seg_test.py b/tests/config/common/datasets/bdd100k/sem_seg_test.py index a08fd8806..f66b4ca01 100644 --- a/tests/config/common/datasets/bdd100k/sem_seg_test.py +++ b/tests/config/common/datasets/bdd100k/sem_seg_test.py @@ -1,4 +1,5 @@ """Testcase for default data pipelines for segmentation.""" + import unittest from tests.util import get_test_data diff --git a/tests/config/common/datasets/coco/detection_test.py b/tests/config/common/datasets/coco/detection_test.py index 1e6fd34a6..748494bd7 100644 --- a/tests/config/common/datasets/coco/detection_test.py +++ b/tests/config/common/datasets/coco/detection_test.py @@ -1,4 +1,5 @@ """Test cases for dataset and dataloader using COCO.""" + from __future__ import annotations import unittest diff --git a/tests/config/common/datasets/nuscenes/nuscenes_mono_test.py b/tests/config/common/datasets/nuscenes/nuscenes_mono_test.py index 2a91556c4..3215f2de3 100644 --- a/tests/config/common/datasets/nuscenes/nuscenes_mono_test.py +++ b/tests/config/common/datasets/nuscenes/nuscenes_mono_test.py @@ -1,4 +1,5 @@ """Test NuScenes monocular dataset config.""" + from __future__ import annotations import unittest diff --git a/tests/config/common/datasets/nuscenes/nuscenes_test.py b/tests/config/common/datasets/nuscenes/nuscenes_test.py index 2cc688052..631713c97 100644 --- a/tests/config/common/datasets/nuscenes/nuscenes_test.py +++ b/tests/config/common/datasets/nuscenes/nuscenes_test.py @@ -1,4 +1,5 @@ """Test NuScenes multi-sensor video dataset config.""" + from __future__ import annotations import unittest diff --git a/tests/config/common/datasets/shift/test_shift_tasks.py b/tests/config/common/datasets/shift/test_shift_tasks.py index a554c2941..5d45e0a06 100644 --- a/tests/config/common/datasets/shift/test_shift_tasks.py +++ b/tests/config/common/datasets/shift/test_shift_tasks.py @@ -1,4 +1,5 @@ """Test cases for dataset and dataloader using COCO.""" + from __future__ import annotations import unittest diff --git a/tests/config/registry_test.py b/tests/config/registry_test.py index 83ce62046..efe1c5e1c 100644 --- a/tests/config/registry_test.py +++ b/tests/config/registry_test.py @@ -1,4 +1,5 @@ """Test config registry.""" + from __future__ import annotations import unittest diff --git a/tests/config/show_connection_test.py b/tests/config/show_connection_test.py index 5fdd0356a..64ea7b670 100644 --- a/tests/config/show_connection_test.py +++ b/tests/config/show_connection_test.py @@ -1,4 +1,5 @@ """Show config connection tests.""" + import unittest from tests.zoo.util import content_equal, get_config_for_name @@ -24,9 +25,7 @@ def test_show_frcnn(self) -> None: model = instantiate_classes(config.model) # Change the data root of evaluator callback to the test data - config.callbacks[ - 3 - ].init_args.evaluator.init_args.data_root = ( + config.callbacks[3].init_args.evaluator.init_args.data_root = ( "tests/vis4d-test-data/coco_test" ) config.callbacks[3].init_args.evaluator.init_args.split = "train" diff --git a/tests/config/sweep/sweep_test.py b/tests/config/sweep/sweep_test.py index 8a048c661..9b788a0db 100644 --- a/tests/config/sweep/sweep_test.py +++ b/tests/config/sweep/sweep_test.py @@ -1,6 +1,5 @@ """Vis4d Sweep Config Tests.""" - import unittest import numpy as np diff --git a/tests/data/cbgs_test.py b/tests/data/cbgs_test.py index 01957c7cd..ebacc88f5 100644 --- a/tests/data/cbgs_test.py +++ b/tests/data/cbgs_test.py @@ -1,4 +1,5 @@ """Class-balanced Grouping and Sampling for 3D Object Detection test.""" + from tests.util import get_test_data from vis4d.data.cbgs import CBGSDataset from vis4d.data.datasets.nuscenes import NuScenes, nuscenes_class_map diff --git a/tests/data/data_pipe_test.py b/tests/data/data_pipe_test.py index 75baf95be..2abf6d761 100644 --- a/tests/data/data_pipe_test.py +++ b/tests/data/data_pipe_test.py @@ -1,4 +1,5 @@ """Test data pipelines.""" + import os from tests.util import get_test_data diff --git a/tests/data/datasets/bdd100k_test.py b/tests/data/datasets/bdd100k_test.py index 085a8973f..5ed66366c 100644 --- a/tests/data/datasets/bdd100k_test.py +++ b/tests/data/datasets/bdd100k_test.py @@ -1,4 +1,5 @@ """BDD100K dataset testing class.""" + import os import unittest diff --git a/tests/data/datasets/coco_test.py b/tests/data/datasets/coco_test.py index 5d9485f4f..ef09035cd 100644 --- a/tests/data/datasets/coco_test.py +++ b/tests/data/datasets/coco_test.py @@ -1,4 +1,5 @@ """COCO dataset testing class.""" + import unittest import torch diff --git a/tests/data/datasets/nuscenes_mono_test.py b/tests/data/datasets/nuscenes_mono_test.py index f9a8227d4..106518664 100644 --- a/tests/data/datasets/nuscenes_mono_test.py +++ b/tests/data/datasets/nuscenes_mono_test.py @@ -1,4 +1,5 @@ """NuScenes monocular dataset testing class.""" + import unittest from tests.util import get_test_data diff --git a/tests/data/datasets/nuscenes_test.py b/tests/data/datasets/nuscenes_test.py index 227a6971a..0c52246b0 100644 --- a/tests/data/datasets/nuscenes_test.py +++ b/tests/data/datasets/nuscenes_test.py @@ -1,4 +1,5 @@ """NuScenes dataset testing class.""" + import unittest from tests.util import get_test_data diff --git a/tests/data/datasets/nuscenes_trajectory_test.py b/tests/data/datasets/nuscenes_trajectory_test.py index 545dff2c3..20b1d0c68 100644 --- a/tests/data/datasets/nuscenes_trajectory_test.py +++ b/tests/data/datasets/nuscenes_trajectory_test.py @@ -1,4 +1,5 @@ """NuScenes trajectory dataset tests.""" + import unittest from tests.util import get_test_data diff --git a/tests/data/datasets/s3dis_test.py b/tests/data/datasets/s3dis_test.py index 2294b63a7..b93adbb55 100644 --- a/tests/data/datasets/s3dis_test.py +++ b/tests/data/datasets/s3dis_test.py @@ -1,4 +1,5 @@ """S3DIS dataset testing class.""" + import unittest from tests.util import get_test_data diff --git a/tests/data/datasets/scalabel_test.py b/tests/data/datasets/scalabel_test.py index 878f475b1..a0b87d693 100644 --- a/tests/data/datasets/scalabel_test.py +++ b/tests/data/datasets/scalabel_test.py @@ -1,4 +1,5 @@ """Tests for scalabel dataset.""" + import os import numpy as np diff --git a/tests/data/datasets/shift_test.py b/tests/data/datasets/shift_test.py index 3e2d83800..0d8b0be5b 100644 --- a/tests/data/datasets/shift_test.py +++ b/tests/data/datasets/shift_test.py @@ -1,4 +1,5 @@ """S3DIS dataset testing class.""" + import unittest import numpy as np diff --git a/tests/data/datasets/torchvision_test.py b/tests/data/datasets/torchvision_test.py index 818ef29d4..e78295438 100644 --- a/tests/data/datasets/torchvision_test.py +++ b/tests/data/datasets/torchvision_test.py @@ -1,4 +1,5 @@ """Test for Torchvision dataset wrapper.""" + import os import shutil import tempfile diff --git a/tests/data/io/backend_test.py b/tests/data/io/backend_test.py index 5cfc450b4..3acb0e47f 100644 --- a/tests/data/io/backend_test.py +++ b/tests/data/io/backend_test.py @@ -1,4 +1,5 @@ """Testcases for data backends.""" + import os import shutil import sys diff --git a/tests/data/io/to_hdf5_test.py b/tests/data/io/to_hdf5_test.py index c12d37bbb..5e469746f 100644 --- a/tests/data/io/to_hdf5_test.py +++ b/tests/data/io/to_hdf5_test.py @@ -1,4 +1,5 @@ """Testcases for hdf5 dataset conversion.""" + import os import unittest diff --git a/tests/data/iterable_test.py b/tests/data/iterable_test.py index 9ac42ac85..3fde301a2 100644 --- a/tests/data/iterable_test.py +++ b/tests/data/iterable_test.py @@ -1,4 +1,5 @@ """Iterable datasets tests.""" + from __future__ import annotations import numpy as np diff --git a/tests/data/loader_test.py b/tests/data/loader_test.py index b7a994efb..b14e77ccf 100644 --- a/tests/data/loader_test.py +++ b/tests/data/loader_test.py @@ -1,4 +1,5 @@ """Test loader components.""" + import unittest import torch diff --git a/tests/data/reference_test.py b/tests/data/reference_test.py index f14400e51..9a3cf558f 100644 --- a/tests/data/reference_test.py +++ b/tests/data/reference_test.py @@ -1,4 +1,5 @@ """Testcases for reference view sampling.""" + import unittest from vis4d.data.reference import SequentialViewSampler, UniformViewSampler diff --git a/tests/data/resample_test.py b/tests/data/resample_test.py index ebfb43711..45f062397 100644 --- a/tests/data/resample_test.py +++ b/tests/data/resample_test.py @@ -1,4 +1,5 @@ """Resample index to recover the original dataset length test.""" + from tests.util import get_test_data from vis4d.data.datasets.nuscenes import NuScenes from vis4d.data.resample import ResampleDataset diff --git a/tests/data/transforms/autoaugment_test.py b/tests/data/transforms/autoaugment_test.py index a807516ec..2e91f01c1 100644 --- a/tests/data/transforms/autoaugment_test.py +++ b/tests/data/transforms/autoaugment_test.py @@ -1,4 +1,5 @@ """Test cases for auto-augment transform.""" + import numpy as np from vis4d.common.util import set_random_seed diff --git a/tests/data/transforms/random_erasing_test.py b/tests/data/transforms/random_erasing_test.py index 26db2c6b6..5f1fe56bb 100644 --- a/tests/data/transforms/random_erasing_test.py +++ b/tests/data/transforms/random_erasing_test.py @@ -1,4 +1,5 @@ """Test cases for normalize transform.""" + import numpy as np from vis4d.data.transforms.random_erasing import RandomErasing diff --git a/tests/data/transforms/to_tensor_test.py b/tests/data/transforms/to_tensor_test.py index 14692f0bc..c07db8226 100644 --- a/tests/data/transforms/to_tensor_test.py +++ b/tests/data/transforms/to_tensor_test.py @@ -1,4 +1,5 @@ """Test ToTensor transform.""" + import numpy as np import torch diff --git a/tests/engine/callbacks/checkpoint_test.py b/tests/engine/callbacks/checkpoint_test.py index 68cd70fa0..560a433f1 100644 --- a/tests/engine/callbacks/checkpoint_test.py +++ b/tests/engine/callbacks/checkpoint_test.py @@ -1,4 +1,5 @@ """Test cases for checkpoint callback.""" + import shutil import tempfile import unittest diff --git a/tests/engine/callbacks/ema_test.py b/tests/engine/callbacks/ema_test.py index 66db976be..2342b3f2b 100644 --- a/tests/engine/callbacks/ema_test.py +++ b/tests/engine/callbacks/ema_test.py @@ -1,4 +1,5 @@ """Test cases for EMA callback.""" + import unittest import torch diff --git a/tests/engine/callbacks/evaluator_test.py b/tests/engine/callbacks/evaluator_test.py index 2c1c4e22a..20666adf6 100644 --- a/tests/engine/callbacks/evaluator_test.py +++ b/tests/engine/callbacks/evaluator_test.py @@ -1,4 +1,5 @@ """Test cases for evaluator callback.""" + import shutil import tempfile import unittest diff --git a/tests/engine/callbacks/logging_test.py b/tests/engine/callbacks/logging_test.py index 534d70419..b60676b47 100644 --- a/tests/engine/callbacks/logging_test.py +++ b/tests/engine/callbacks/logging_test.py @@ -1,4 +1,5 @@ """Test cases for logging callback.""" + import unittest from tests.util import MOCKLOSS, MockModel diff --git a/tests/engine/callbacks/visualizer_test.py b/tests/engine/callbacks/visualizer_test.py index efef0a257..897dedf28 100644 --- a/tests/engine/callbacks/visualizer_test.py +++ b/tests/engine/callbacks/visualizer_test.py @@ -1,4 +1,5 @@ """Test cases for visualizer callback.""" + import shutil import tempfile import unittest diff --git a/tests/engine/connectors_test.py b/tests/engine/connectors_test.py index 29558209e..8498dd05c 100644 --- a/tests/engine/connectors_test.py +++ b/tests/engine/connectors_test.py @@ -1,4 +1,5 @@ """Test data connector.""" + import torch from vis4d.engine.connectors import MultiSensorDataConnector, data_key diff --git a/tests/engine/optim/optimizer_test.py b/tests/engine/optim/optimizer_test.py index d77e06e36..020882462 100644 --- a/tests/engine/optim/optimizer_test.py +++ b/tests/engine/optim/optimizer_test.py @@ -1,4 +1,5 @@ """Test cases for optimizer.""" + from __future__ import annotations import unittest diff --git a/tests/engine/optim/scheduler_test.py b/tests/engine/optim/scheduler_test.py index 287a89a4a..226e8eb43 100644 --- a/tests/engine/optim/scheduler_test.py +++ b/tests/engine/optim/scheduler_test.py @@ -1,4 +1,5 @@ """Test cases for learning rate schedulers.""" + import copy import unittest diff --git a/tests/engine/trainer_test.py b/tests/engine/trainer_test.py index a78e5eb07..5d56dd497 100644 --- a/tests/engine/trainer_test.py +++ b/tests/engine/trainer_test.py @@ -1,4 +1,5 @@ """Engine trainer tests.""" + from __future__ import annotations import shutil diff --git a/tests/engine/util_test.py b/tests/engine/util_test.py index 909b90890..f5453fa65 100644 --- a/tests/engine/util_test.py +++ b/tests/engine/util_test.py @@ -1,4 +1,5 @@ """Test engine util.""" + from collections import namedtuple from dataclasses import dataclass diff --git a/tests/eval/bdd100k/seg_test.py b/tests/eval/bdd100k/seg_test.py index eeba6d88f..6c582e7bc 100644 --- a/tests/eval/bdd100k/seg_test.py +++ b/tests/eval/bdd100k/seg_test.py @@ -1,4 +1,5 @@ """Testcases for BDD100K segmentation evaluator.""" + from __future__ import annotations import os.path as osp diff --git a/tests/eval/bdd100k/track_test.py b/tests/eval/bdd100k/track_test.py index 527c9171e..7fe64508d 100644 --- a/tests/eval/bdd100k/track_test.py +++ b/tests/eval/bdd100k/track_test.py @@ -1,4 +1,5 @@ """Testcases for BDD100K tracking evaluator.""" + from __future__ import annotations import os.path as osp diff --git a/tests/eval/coco/detect_test.py b/tests/eval/coco/detect_test.py index e51e6a8fc..0f2983e04 100644 --- a/tests/eval/coco/detect_test.py +++ b/tests/eval/coco/detect_test.py @@ -1,4 +1,5 @@ """Testcases for COCO evaluator.""" + from __future__ import annotations import unittest diff --git a/tests/eval/common/binary_test.py b/tests/eval/common/binary_test.py index 2993ad1c3..2907c1a8d 100644 --- a/tests/eval/common/binary_test.py +++ b/tests/eval/common/binary_test.py @@ -1,4 +1,5 @@ """Occupancy test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/common/depth_test.py b/tests/eval/common/depth_test.py index 949800ed5..525d19250 100644 --- a/tests/eval/common/depth_test.py +++ b/tests/eval/common/depth_test.py @@ -1,4 +1,5 @@ """Depth eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/common/flow_test.py b/tests/eval/common/flow_test.py index 7c1ce1fd5..99f67f135 100644 --- a/tests/eval/common/flow_test.py +++ b/tests/eval/common/flow_test.py @@ -1,4 +1,5 @@ """Depth eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/common/seg_test.py b/tests/eval/common/seg_test.py index c9de2a3bc..16e99430d 100644 --- a/tests/eval/common/seg_test.py +++ b/tests/eval/common/seg_test.py @@ -1,4 +1,5 @@ """Seg eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/kitti/depth_test.py b/tests/eval/kitti/depth_test.py index f80ba857a..e2162a57d 100644 --- a/tests/eval/kitti/depth_test.py +++ b/tests/eval/kitti/depth_test.py @@ -1,4 +1,5 @@ """KITTI Depth Evaluation test.""" + from __future__ import annotations import unittest diff --git a/tests/eval/nuscenes/detect3d_test.py b/tests/eval/nuscenes/detect3d_test.py index ce5527cd7..dc63e7e49 100644 --- a/tests/eval/nuscenes/detect3d_test.py +++ b/tests/eval/nuscenes/detect3d_test.py @@ -1,4 +1,5 @@ """Testcases for NuScenes 3D detection evaluator.""" + from __future__ import annotations import unittest diff --git a/tests/eval/nuscenes/track3d_test.py b/tests/eval/nuscenes/track3d_test.py index 84d987a15..2263957c8 100644 --- a/tests/eval/nuscenes/track3d_test.py +++ b/tests/eval/nuscenes/track3d_test.py @@ -1,4 +1,5 @@ """Testcases for NuScenes 3D tracking evaluator.""" + from __future__ import annotations import unittest diff --git a/tests/eval/scalabel/detect_test.py b/tests/eval/scalabel/detect_test.py index 12229cc73..ba380acef 100644 --- a/tests/eval/scalabel/detect_test.py +++ b/tests/eval/scalabel/detect_test.py @@ -1,4 +1,5 @@ """Testcases for BDD100K detection evaluator.""" + from __future__ import annotations import os.path as osp diff --git a/tests/eval/scalabel/track_test.py b/tests/eval/scalabel/track_test.py index e06d72ada..e270ace45 100644 --- a/tests/eval/scalabel/track_test.py +++ b/tests/eval/scalabel/track_test.py @@ -1,4 +1,5 @@ """Testcases for BDD100K tracking evaluator.""" + from __future__ import annotations import os.path as osp diff --git a/tests/eval/shift/depth_test.py b/tests/eval/shift/depth_test.py index 8a97e7cd2..f6164a79f 100644 --- a/tests/eval/shift/depth_test.py +++ b/tests/eval/shift/depth_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/shift/detect_test.py b/tests/eval/shift/detect_test.py index 9aebd6cca..37c84bc13 100644 --- a/tests/eval/shift/detect_test.py +++ b/tests/eval/shift/detect_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/shift/flow_test.py b/tests/eval/shift/flow_test.py index f078d8868..94b77ac9e 100644 --- a/tests/eval/shift/flow_test.py +++ b/tests/eval/shift/flow_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/shift/multitask_writer_test.py b/tests/eval/shift/multitask_writer_test.py index c83e33a2e..28acd3c72 100644 --- a/tests/eval/shift/multitask_writer_test.py +++ b/tests/eval/shift/multitask_writer_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import os diff --git a/tests/eval/shift/seg_test.py b/tests/eval/shift/seg_test.py index 226a6d967..b29d3cf4f 100644 --- a/tests/eval/shift/seg_test.py +++ b/tests/eval/shift/seg_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/shift/track_test.py b/tests/eval/shift/track_test.py index b5a8e6542..a5277d15f 100644 --- a/tests/eval/shift/track_test.py +++ b/tests/eval/shift/track_test.py @@ -1,4 +1,5 @@ """SHIFT eval test cases.""" + from __future__ import annotations import unittest diff --git a/tests/eval/utils.py b/tests/eval/utils.py index da8ade9d4..7b8022339 100644 --- a/tests/eval/utils.py +++ b/tests/eval/utils.py @@ -1,4 +1,5 @@ """Testcases utils.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/tests/model/adapter/ema_test.py b/tests/model/adapter/ema_test.py index 719b4b77c..ddc8731fc 100644 --- a/tests/model/adapter/ema_test.py +++ b/tests/model/adapter/ema_test.py @@ -1,4 +1,5 @@ """EMA Tests.""" + import torch from torch import nn diff --git a/tests/model/cls/vit_test.py b/tests/model/cls/vit_test.py index bbcf8f8a0..cc0cab049 100644 --- a/tests/model/cls/vit_test.py +++ b/tests/model/cls/vit_test.py @@ -1,4 +1,5 @@ """Faster RCNN tests.""" + from __future__ import annotations import unittest diff --git a/tests/model/detect/faster_rcnn_test.py b/tests/model/detect/faster_rcnn_test.py index 5e5a07601..d523c12dc 100644 --- a/tests/model/detect/faster_rcnn_test.py +++ b/tests/model/detect/faster_rcnn_test.py @@ -1,4 +1,5 @@ """Faster RCNN tests.""" + from __future__ import annotations import unittest diff --git a/tests/model/detect/mask_rcnn_test.py b/tests/model/detect/mask_rcnn_test.py index 4d66b7a11..b39c038f0 100644 --- a/tests/model/detect/mask_rcnn_test.py +++ b/tests/model/detect/mask_rcnn_test.py @@ -1,4 +1,5 @@ """Mask RCNN tests.""" + import unittest import torch diff --git a/tests/model/detect/retinanet_test.py b/tests/model/detect/retinanet_test.py index 13fac8d8d..58f34645c 100644 --- a/tests/model/detect/retinanet_test.py +++ b/tests/model/detect/retinanet_test.py @@ -1,4 +1,5 @@ """RetinaNet tests.""" + import unittest import torch diff --git a/tests/model/detect/yolox_test.py b/tests/model/detect/yolox_test.py index 548a96706..871cb729d 100644 --- a/tests/model/detect/yolox_test.py +++ b/tests/model/detect/yolox_test.py @@ -1,4 +1,5 @@ """YOLOX tests.""" + from __future__ import annotations import unittest diff --git a/tests/model/seg/common.py b/tests/model/seg/common.py index 8f7f0f6e9..89a2072d1 100644 --- a/tests/model/seg/common.py +++ b/tests/model/seg/common.py @@ -1,4 +1,5 @@ """Common functionality for seg tests.""" + from torch.utils.data import DataLoader, Dataset from vis4d.data.data_pipe import DataPipe diff --git a/tests/model/seg/fcn_resnet_test.py b/tests/model/seg/fcn_resnet_test.py index a9fd91ac1..dc1a2f985 100644 --- a/tests/model/seg/fcn_resnet_test.py +++ b/tests/model/seg/fcn_resnet_test.py @@ -1,4 +1,5 @@ """FCN ResNet tests.""" + from __future__ import annotations import unittest diff --git a/tests/model/seg/semantic_fpn_test.py b/tests/model/seg/semantic_fpn_test.py index 6c11fd5ed..53a1c4de7 100644 --- a/tests/model/seg/semantic_fpn_test.py +++ b/tests/model/seg/semantic_fpn_test.py @@ -1,4 +1,5 @@ """Semantic FPN tests.""" + from __future__ import annotations import unittest diff --git a/tests/model/segment3d/pointnet_test.py b/tests/model/segment3d/pointnet_test.py index bf4e58f19..89fd8ca6d 100644 --- a/tests/model/segment3d/pointnet_test.py +++ b/tests/model/segment3d/pointnet_test.py @@ -1,4 +1,5 @@ """Testcases for pointnet.""" + import unittest import torch diff --git a/tests/model/segment3d/pointnetpp_test.py b/tests/model/segment3d/pointnetpp_test.py index 2d7a97c91..aab45c0ae 100644 --- a/tests/model/segment3d/pointnetpp_test.py +++ b/tests/model/segment3d/pointnetpp_test.py @@ -1,4 +1,5 @@ """Testcases for pointnet.""" + import unittest import torch diff --git a/tests/model/track/qdtrack_test.py b/tests/model/track/qdtrack_test.py index 50435d8b9..937424e3e 100644 --- a/tests/model/track/qdtrack_test.py +++ b/tests/model/track/qdtrack_test.py @@ -1,4 +1,5 @@ """QDTrack model test file.""" + import os.path as osp import unittest diff --git a/tests/model/track/util_test.py b/tests/model/track/util_test.py index be20708f2..e479b96a1 100644 --- a/tests/model/track/util_test.py +++ b/tests/model/track/util_test.py @@ -1,4 +1,5 @@ """Utility functions for track module test.""" + from vis4d.model.track.util import split_key_ref_indices diff --git a/tests/op/base/csp_darknet_test.py b/tests/op/base/csp_darknet_test.py index e2f8bfec5..39e444a78 100644 --- a/tests/op/base/csp_darknet_test.py +++ b/tests/op/base/csp_darknet_test.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + import pytest import torch from torch.nn.modules.batchnorm import _BatchNorm diff --git a/tests/op/base/dla_test.py b/tests/op/base/dla_test.py index 386de0f12..2fc4b475f 100644 --- a/tests/op/base/dla_test.py +++ b/tests/op/base/dla_test.py @@ -1,4 +1,5 @@ """Testcases for DLA base model.""" + import unittest from tests.util import generate_features diff --git a/tests/op/base/pointnet_test.py b/tests/op/base/pointnet_test.py index 917a546ed..34aff9b99 100644 --- a/tests/op/base/pointnet_test.py +++ b/tests/op/base/pointnet_test.py @@ -1,4 +1,5 @@ """Testcases for pointnet.""" + import unittest import torch diff --git a/tests/op/base/resnet_test.py b/tests/op/base/resnet_test.py index 99e1169d2..af6211f3e 100644 --- a/tests/op/base/resnet_test.py +++ b/tests/op/base/resnet_test.py @@ -1,4 +1,5 @@ """Testcases for ResNet base model.""" + import torch from torch.nn.modules.batchnorm import _BatchNorm diff --git a/tests/op/base/unet_test.py b/tests/op/base/unet_test.py index d271509be..ed1c11639 100644 --- a/tests/op/base/unet_test.py +++ b/tests/op/base/unet_test.py @@ -1,4 +1,5 @@ """Test of the U-Net Architecture.""" + import unittest import torch diff --git a/tests/op/base/vgg_test.py b/tests/op/base/vgg_test.py index 728659cf5..ec3811425 100644 --- a/tests/op/base/vgg_test.py +++ b/tests/op/base/vgg_test.py @@ -1,4 +1,5 @@ """Testcases for VGG base model.""" + from __future__ import annotations import unittest diff --git a/tests/op/box/anchor/point_generator_test.py b/tests/op/box/anchor/point_generator_test.py index 5fe6244dd..ebe1b2a4f 100644 --- a/tests/op/box/anchor/point_generator_test.py +++ b/tests/op/box/anchor/point_generator_test.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + import pytest from vis4d.op.box.anchor import MlvlPointGenerator diff --git a/tests/op/box/box2d_test.py b/tests/op/box/box2d_test.py index 49c641e78..ae5a7aa95 100644 --- a/tests/op/box/box2d_test.py +++ b/tests/op/box/box2d_test.py @@ -1,4 +1,5 @@ """Box2D test file.""" + import torch from vis4d.op.box.box2d import ( diff --git a/tests/op/box/encoder/delta_xywh_test.py b/tests/op/box/encoder/delta_xywh_test.py index 66ed301ee..97810f840 100644 --- a/tests/op/box/encoder/delta_xywh_test.py +++ b/tests/op/box/encoder/delta_xywh_test.py @@ -1,4 +1,5 @@ """DeltaXYWHBBoxEncoder test file.""" + import torch from vis4d.op.box.encoder.delta_xywh import ( diff --git a/tests/op/box/encoder/qd_3dt_test.py b/tests/op/box/encoder/qd_3dt_test.py index 1265a616a..928863672 100644 --- a/tests/op/box/encoder/qd_3dt_test.py +++ b/tests/op/box/encoder/qd_3dt_test.py @@ -1,4 +1,5 @@ """QD3DT Box3D encoder decoder test file.""" + import torch from vis4d.op.box.encoder.qd_3dt import QD3DTBox3DEncoder diff --git a/tests/op/box/matchers/max_iou_test.py b/tests/op/box/matchers/max_iou_test.py index 1a4d67675..5b7e61cbb 100644 --- a/tests/op/box/matchers/max_iou_test.py +++ b/tests/op/box/matchers/max_iou_test.py @@ -1,4 +1,5 @@ """Test cases for max iou matcher.""" + import unittest import torch diff --git a/tests/op/box/matchers/sim_ota_test.py b/tests/op/box/matchers/sim_ota_test.py index c194c5dbe..55c2b613c 100644 --- a/tests/op/box/matchers/sim_ota_test.py +++ b/tests/op/box/matchers/sim_ota_test.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + import unittest import torch diff --git a/tests/op/box/poolers/roi_pooler_test.py b/tests/op/box/poolers/roi_pooler_test.py index a3300aa20..73474328e 100644 --- a/tests/op/box/poolers/roi_pooler_test.py +++ b/tests/op/box/poolers/roi_pooler_test.py @@ -1,4 +1,5 @@ """Test cases for torchvision roi pooler.""" + import unittest import torch diff --git a/tests/op/box/samplers/combined_test.py b/tests/op/box/samplers/combined_test.py index 574b1f2cf..4b373cc33 100644 --- a/tests/op/box/samplers/combined_test.py +++ b/tests/op/box/samplers/combined_test.py @@ -1,4 +1,5 @@ """Testcases for combined sampler.""" + from __future__ import annotations import unittest diff --git a/tests/op/box/samplers/random_test.py b/tests/op/box/samplers/random_test.py index 2598a34ba..e035572c3 100644 --- a/tests/op/box/samplers/random_test.py +++ b/tests/op/box/samplers/random_test.py @@ -1,4 +1,5 @@ """Test cases for random sampler.""" + import unittest import torch diff --git a/tests/op/detect/faster_rcnn_test.py b/tests/op/detect/faster_rcnn_test.py index b828928c6..8c01308f7 100644 --- a/tests/op/detect/faster_rcnn_test.py +++ b/tests/op/detect/faster_rcnn_test.py @@ -1,4 +1,5 @@ """Faster RCNN tests.""" + from tests.util import generate_boxes, generate_features from vis4d.op.detect.faster_rcnn import FasterRCNNHead diff --git a/tests/op/detect/mask_rcnn_test.py b/tests/op/detect/mask_rcnn_test.py index c6e051982..4908adcfd 100644 --- a/tests/op/detect/mask_rcnn_test.py +++ b/tests/op/detect/mask_rcnn_test.py @@ -1,4 +1,5 @@ """Mask RCNN operation tests.""" + import torch from tests.util import generate_boxes, generate_features diff --git a/tests/op/detect/rcnn_test.py b/tests/op/detect/rcnn_test.py index 26dc89f82..7d8308f67 100644 --- a/tests/op/detect/rcnn_test.py +++ b/tests/op/detect/rcnn_test.py @@ -1,4 +1,5 @@ """RCNN tests.""" + import torch from tests.util import generate_boxes, generate_features diff --git a/tests/op/detect/rpn_test.py b/tests/op/detect/rpn_test.py index 93a2b3d7e..f3a9bfe46 100644 --- a/tests/op/detect/rpn_test.py +++ b/tests/op/detect/rpn_test.py @@ -1,4 +1,5 @@ """RPN tests.""" + import torch from tests.util import ( diff --git a/tests/op/detect/yolox_test.py b/tests/op/detect/yolox_test.py index a72849852..c7c55c97b 100644 --- a/tests/op/detect/yolox_test.py +++ b/tests/op/detect/yolox_test.py @@ -1,4 +1,5 @@ """YOLOX tests.""" + from tests.util import generate_features_determ from vis4d.op.detect.yolox import YOLOXHead diff --git a/tests/op/detect3d/qd_3dt_test.py b/tests/op/detect3d/qd_3dt_test.py index b5522c582..fa59f1726 100644 --- a/tests/op/detect3d/qd_3dt_test.py +++ b/tests/op/detect3d/qd_3dt_test.py @@ -1,4 +1,5 @@ """Testcases for quasi-dense losses.""" + import unittest import torch diff --git a/tests/op/fpp/dla_up_test.py b/tests/op/fpp/dla_up_test.py index 5b0270de9..4b995ae43 100644 --- a/tests/op/fpp/dla_up_test.py +++ b/tests/op/fpp/dla_up_test.py @@ -1,4 +1,5 @@ """Testcases for DLA-UP.""" + import unittest from tests.util import generate_features diff --git a/tests/op/fpp/fpn_test.py b/tests/op/fpp/fpn_test.py index 410bbb5ed..946e5c5c7 100644 --- a/tests/op/fpp/fpn_test.py +++ b/tests/op/fpp/fpn_test.py @@ -1,4 +1,5 @@ """Testcases for FPN.""" + import unittest from tests.util import generate_features diff --git a/tests/op/fpp/yolox_pafpn_test.py b/tests/op/fpp/yolox_pafpn_test.py index 16d96e975..a339f604c 100644 --- a/tests/op/fpp/yolox_pafpn_test.py +++ b/tests/op/fpp/yolox_pafpn_test.py @@ -1,4 +1,5 @@ """Testcases for YOLOXPAFPN.""" + import unittest import torch diff --git a/tests/op/geometry/projection_test.py b/tests/op/geometry/projection_test.py index d5760b92b..474224011 100644 --- a/tests/op/geometry/projection_test.py +++ b/tests/op/geometry/projection_test.py @@ -1,4 +1,5 @@ """Projection tests.""" + import unittest import torch diff --git a/tests/op/geometry/rotation_test.py b/tests/op/geometry/rotation_test.py index 4a4628bd4..76cb9a4b4 100644 --- a/tests/op/geometry/rotation_test.py +++ b/tests/op/geometry/rotation_test.py @@ -1,4 +1,5 @@ """Rotation tests.""" + from __future__ import annotations import itertools diff --git a/tests/op/geometry/transform_test.py b/tests/op/geometry/transform_test.py index 7118ddee3..75127b0a4 100644 --- a/tests/op/geometry/transform_test.py +++ b/tests/op/geometry/transform_test.py @@ -1,4 +1,5 @@ """Transform tests.""" + import math import unittest diff --git a/tests/op/loss/multi_level_seg_loss_test.py b/tests/op/loss/multi_level_seg_loss_test.py index 2774f5ef0..1ccd2926f 100644 --- a/tests/op/loss/multi_level_seg_loss_test.py +++ b/tests/op/loss/multi_level_seg_loss_test.py @@ -1,4 +1,5 @@ """Test MultiLevelSegLoss.""" + import torch from vis4d.op.loss import MultiLevelSegLoss diff --git a/tests/op/loss/orthogonal_transform_loss_test.py b/tests/op/loss/orthogonal_transform_loss_test.py index 8cc32a8f1..0db5bf54d 100644 --- a/tests/op/loss/orthogonal_transform_loss_test.py +++ b/tests/op/loss/orthogonal_transform_loss_test.py @@ -1,4 +1,5 @@ """Test for the orthogonal transform loss.""" + import math import unittest diff --git a/tests/op/loss/quasi_dense_loss_test.py b/tests/op/loss/quasi_dense_loss_test.py index f81fdbaec..2b19d9609 100644 --- a/tests/op/loss/quasi_dense_loss_test.py +++ b/tests/op/loss/quasi_dense_loss_test.py @@ -1,4 +1,5 @@ """Testcases for quasi-dense losses.""" + import unittest import torch diff --git a/tests/op/loss/seg_cross_entropy_loss_test.py b/tests/op/loss/seg_cross_entropy_loss_test.py index 82dd5b69c..fb2a7628a 100644 --- a/tests/op/loss/seg_cross_entropy_loss_test.py +++ b/tests/op/loss/seg_cross_entropy_loss_test.py @@ -1,4 +1,5 @@ """Test SegCrossEntropyLoss.""" + import torch from vis4d.op.loss import SegCrossEntropyLoss diff --git a/tests/op/mask/util_test.py b/tests/op/mask/util_test.py index 83b322faf..a51c078f0 100644 --- a/tests/op/mask/util_test.py +++ b/tests/op/mask/util_test.py @@ -1,4 +1,5 @@ """Test cases for mask utils.""" + import unittest import torch diff --git a/tests/op/seg/fcn_test.py b/tests/op/seg/fcn_test.py index e8d9fb1c1..19b41dcd2 100644 --- a/tests/op/seg/fcn_test.py +++ b/tests/op/seg/fcn_test.py @@ -1,4 +1,5 @@ """FCN tests.""" + from __future__ import annotations import unittest diff --git a/tests/op/seg/semantic_fpn_test.py b/tests/op/seg/semantic_fpn_test.py index 475315163..1fc574f2a 100644 --- a/tests/op/seg/semantic_fpn_test.py +++ b/tests/op/seg/semantic_fpn_test.py @@ -1,4 +1,5 @@ """Testcases for Semantic FPN Head.""" + import unittest from tests.util import generate_features diff --git a/tests/op/track/qdtrack_test.py b/tests/op/track/qdtrack_test.py index b7587f444..957594e09 100644 --- a/tests/op/track/qdtrack_test.py +++ b/tests/op/track/qdtrack_test.py @@ -1,4 +1,5 @@ """Test cases for quasi dense tracking graph construction.""" + import torch from tests.util import fill_weights, get_test_file diff --git a/tests/pl/data_module_test.py b/tests/pl/data_module_test.py index e0c4de261..a7c3d4bab 100644 --- a/tests/pl/data_module_test.py +++ b/tests/pl/data_module_test.py @@ -1,4 +1,5 @@ """Pytorch lightning utilities for unit tests.""" + from __future__ import annotations import unittest diff --git a/tests/pl/trainer_test.py b/tests/pl/trainer_test.py index 7cdd3384c..6cca70a86 100644 --- a/tests/pl/trainer_test.py +++ b/tests/pl/trainer_test.py @@ -1,4 +1,5 @@ """Pytorch lightning utilities for unit tests.""" + from __future__ import annotations import shutil diff --git a/tests/util.py b/tests/util.py index 9ca688e9b..7b919fb54 100644 --- a/tests/util.py +++ b/tests/util.py @@ -1,4 +1,5 @@ """Utilities for unit tests.""" + from __future__ import annotations import inspect diff --git a/tests/vis/image/bbox3d_visualizer_test.py b/tests/vis/image/bbox3d_visualizer_test.py index b7c592fe1..72b6082e0 100644 --- a/tests/vis/image/bbox3d_visualizer_test.py +++ b/tests/vis/image/bbox3d_visualizer_test.py @@ -1,4 +1,5 @@ """Tests for the 3D bounding box visualizer.""" + import os import shutil import tempfile diff --git a/tests/vis/image/bev_visualizer_test.py b/tests/vis/image/bev_visualizer_test.py index a091f4f3b..af837468b 100644 --- a/tests/vis/image/bev_visualizer_test.py +++ b/tests/vis/image/bev_visualizer_test.py @@ -1,4 +1,5 @@ """Tests for the BEV 3D bounding box visualizer.""" + import os import shutil import tempfile diff --git a/tests/vis/image/bounding_box_visualizer_test.py b/tests/vis/image/bounding_box_visualizer_test.py index 73d5948c4..7626409e3 100644 --- a/tests/vis/image/bounding_box_visualizer_test.py +++ b/tests/vis/image/bounding_box_visualizer_test.py @@ -1,4 +1,5 @@ """Tests for the bounding box visualizer.""" + import os import pickle import shutil diff --git a/tests/vis/image/seg_mask_visualizer_test.py b/tests/vis/image/seg_mask_visualizer_test.py index d65d2e41e..1e2853afc 100644 --- a/tests/vis/image/seg_mask_visualizer_test.py +++ b/tests/vis/image/seg_mask_visualizer_test.py @@ -1,4 +1,5 @@ """Tests for the semantic mask visualizer.""" + import os import pickle import shutil diff --git a/tests/vis/image/util.py b/tests/vis/image/util.py index 0ba51c821..2a75a0de7 100644 --- a/tests/vis/image/util.py +++ b/tests/vis/image/util.py @@ -1,4 +1,5 @@ """Utility functions for image visualization tests.""" + import numpy as np from PIL import Image diff --git a/tests/vis/pointcloud/pointcloud_visualizer_test.py b/tests/vis/pointcloud/pointcloud_visualizer_test.py index 7bab3b7e5..d027c9f86 100644 --- a/tests/vis/pointcloud/pointcloud_visualizer_test.py +++ b/tests/vis/pointcloud/pointcloud_visualizer_test.py @@ -1,4 +1,5 @@ """Tests for pointcloud visualization.""" + import glob import shutil import tempfile diff --git a/tests/vis4d-test-data b/tests/vis4d-test-data index 054199b4c..a627bd3e6 160000 --- a/tests/vis4d-test-data +++ b/tests/vis4d-test-data @@ -1 +1 @@ -Subproject commit 054199b4c0c368dfbeb0fd8a93b2e0525f1cc357 +Subproject commit a627bd3e69bf8961809c365eef65ac874fb030b8 diff --git a/tests/zoo/bdd100k/faster_rcnn_test.py b/tests/zoo/bdd100k/faster_rcnn_test.py index c8332a762..9b8410b80 100644 --- a/tests/zoo/bdd100k/faster_rcnn_test.py +++ b/tests/zoo/bdd100k/faster_rcnn_test.py @@ -1,4 +1,5 @@ """BDD100K Faster R-CNN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/bdd100k/mask_rcnn_test.py b/tests/zoo/bdd100k/mask_rcnn_test.py index 0d6ebbcda..deda27238 100644 --- a/tests/zoo/bdd100k/mask_rcnn_test.py +++ b/tests/zoo/bdd100k/mask_rcnn_test.py @@ -1,4 +1,5 @@ """BDD100K Mask R-CNN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/bdd100k/qdtrack_test.py b/tests/zoo/bdd100k/qdtrack_test.py index 2556f364d..612e947dd 100644 --- a/tests/zoo/bdd100k/qdtrack_test.py +++ b/tests/zoo/bdd100k/qdtrack_test.py @@ -1,4 +1,5 @@ """QDTrack configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/bdd100k/semantic_fpn_test.py b/tests/zoo/bdd100k/semantic_fpn_test.py index ed915bb44..959607da9 100644 --- a/tests/zoo/bdd100k/semantic_fpn_test.py +++ b/tests/zoo/bdd100k/semantic_fpn_test.py @@ -1,4 +1,5 @@ """BDD100K Semantic FPN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/bevformer_test.py b/tests/zoo/bevformer_test.py index 387f398d8..70f921746 100644 --- a/tests/zoo/bevformer_test.py +++ b/tests/zoo/bevformer_test.py @@ -1,4 +1,5 @@ """BEVFormer configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/cc_3dt_test.py b/tests/zoo/cc_3dt_test.py index 9899ebe3e..abd4cf43c 100644 --- a/tests/zoo/cc_3dt_test.py +++ b/tests/zoo/cc_3dt_test.py @@ -1,4 +1,5 @@ """CC-3DT configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/faster_rcnn_test.py b/tests/zoo/faster_rcnn_test.py index 320bde45b..54d7a66b6 100644 --- a/tests/zoo/faster_rcnn_test.py +++ b/tests/zoo/faster_rcnn_test.py @@ -1,4 +1,5 @@ """Faster-RCNN configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/fcn_resnet_test.py b/tests/zoo/fcn_resnet_test.py index a01e6a7cc..edb666c3c 100644 --- a/tests/zoo/fcn_resnet_test.py +++ b/tests/zoo/fcn_resnet_test.py @@ -1,4 +1,5 @@ """FCN ResNet configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/mask_rcnn_test.py b/tests/zoo/mask_rcnn_test.py index d83483e68..da2782814 100644 --- a/tests/zoo/mask_rcnn_test.py +++ b/tests/zoo/mask_rcnn_test.py @@ -1,4 +1,5 @@ """Mask-RCNN configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/qdtrack_test.py b/tests/zoo/qdtrack_test.py index 2bec3651c..2d391e03f 100644 --- a/tests/zoo/qdtrack_test.py +++ b/tests/zoo/qdtrack_test.py @@ -1,4 +1,5 @@ """QDTrack configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/retinanet_test.py b/tests/zoo/retinanet_test.py index 5ffef8b63..5a929fee7 100644 --- a/tests/zoo/retinanet_test.py +++ b/tests/zoo/retinanet_test.py @@ -1,4 +1,5 @@ """RetinaNet configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/shift/faster_rcnn_test.py b/tests/zoo/shift/faster_rcnn_test.py index 678016b5b..3641becd8 100644 --- a/tests/zoo/shift/faster_rcnn_test.py +++ b/tests/zoo/shift/faster_rcnn_test.py @@ -1,4 +1,5 @@ """SHIFT Faster R-CNN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/shift/mask_rcnn_test.py b/tests/zoo/shift/mask_rcnn_test.py index 9bbe106d2..b52fe4a86 100644 --- a/tests/zoo/shift/mask_rcnn_test.py +++ b/tests/zoo/shift/mask_rcnn_test.py @@ -1,4 +1,5 @@ """SHIFT Mask R-CNN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/shift/semantic_fpn_test.py b/tests/zoo/shift/semantic_fpn_test.py index dc65130df..2445aac9f 100644 --- a/tests/zoo/shift/semantic_fpn_test.py +++ b/tests/zoo/shift/semantic_fpn_test.py @@ -1,4 +1,5 @@ """SHIFT Semantic FPN configs tests.""" + import unittest from ..util import compare_configs diff --git a/tests/zoo/util.py b/tests/zoo/util.py index 950cc3361..4e2524ecd 100644 --- a/tests/zoo/util.py +++ b/tests/zoo/util.py @@ -1,4 +1,5 @@ """Utility functions for model zoo tests.""" + from __future__ import annotations import importlib diff --git a/tests/zoo/vit_imagenet_test.py b/tests/zoo/vit_imagenet_test.py index aff8cea48..52bcb9315 100644 --- a/tests/zoo/vit_imagenet_test.py +++ b/tests/zoo/vit_imagenet_test.py @@ -1,4 +1,5 @@ """ViT configs tests.""" + import unittest from .util import compare_configs diff --git a/tests/zoo/yolox_test.py b/tests/zoo/yolox_test.py index a0396a56e..029a3bcde 100644 --- a/tests/zoo/yolox_test.py +++ b/tests/zoo/yolox_test.py @@ -1,4 +1,5 @@ """YOLOX configs tests.""" + import unittest from .util import compare_configs diff --git a/vis4d/__init__.py b/vis4d/__init__.py index f4858c9aa..f5569352a 100644 --- a/vis4d/__init__.py +++ b/vis4d/__init__.py @@ -4,6 +4,7 @@ for a number of contemporary methods and provides a compositional framework for further research and development of 4D Vision algorithms. """ + import logging _root_logger = logging.getLogger() diff --git a/vis4d/__main__.py b/vis4d/__main__.py index c8ea11f63..0ad873050 100644 --- a/vis4d/__main__.py +++ b/vis4d/__main__.py @@ -1,4 +1,5 @@ """Entry point for the vis4d package.""" + from .engine.run import entrypoint entrypoint() diff --git a/vis4d/common/__init__.py b/vis4d/common/__init__.py index fbad3df1e..4f017c2aa 100644 --- a/vis4d/common/__init__.py +++ b/vis4d/common/__init__.py @@ -1,4 +1,5 @@ """Contains common functions and types that are used across modules.""" + from .typing import ( ArgsType, DictStrAny, diff --git a/vis4d/common/array.py b/vis4d/common/array.py index d5a02c093..16c745caa 100644 --- a/vis4d/common/array.py +++ b/vis4d/common/array.py @@ -1,4 +1,5 @@ """This module contains array utility functions.""" + from __future__ import annotations from typing import overload @@ -23,76 +24,65 @@ @overload def array_to_numpy( data: ArrayLike, n_dims: int | None, dtype: type[NumpyBool] -) -> NDArrayBool: - ... +) -> NDArrayBool: ... @overload def array_to_numpy( data: ArrayLike, n_dims: int | None, dtype: type[NumpyFloat] -) -> NDArrayFloat: - ... +) -> NDArrayFloat: ... @overload def array_to_numpy( data: ArrayLike, n_dims: int | None, dtype: type[NumpyInt] -) -> NDArrayInt: - ... +) -> NDArrayInt: ... @overload def array_to_numpy( data: ArrayLike, n_dims: int | None, dtype: type[NumpyUInt] -) -> NDArrayUInt: - ... +) -> NDArrayUInt: ... @overload def array_to_numpy( data: ArrayLike | None, n_dims: int | None, dtype: type[NumpyBool] -) -> NDArrayBool | None: - ... +) -> NDArrayBool | None: ... @overload def array_to_numpy( data: ArrayLike | None, n_dims: int | None, dtype: type[NumpyFloat] -) -> NDArrayFloat | None: - ... +) -> NDArrayFloat | None: ... @overload def array_to_numpy( data: ArrayLike | None, n_dims: int | None, dtype: type[NumpyInt] -) -> NDArrayInt | None: - ... +) -> NDArrayInt | None: ... @overload def array_to_numpy( data: ArrayLike | None, n_dims: int | None, dtype: type[NumpyUInt] -) -> NDArrayUInt | None: - ... +) -> NDArrayUInt | None: ... @overload -def array_to_numpy(data: ArrayLike, n_dims: int | None) -> NDArrayNumber: - ... +def array_to_numpy(data: ArrayLike, n_dims: int | None) -> NDArrayNumber: ... @overload -def array_to_numpy(data: None) -> None: - ... +def array_to_numpy(data: None) -> None: ... def array_to_numpy( data: ArrayLike | None, n_dims: int | None = None, - dtype: type[NumpyBool] - | type[NumpyFloat] - | type[NumpyInt] - | type[NumpyUInt] = np.float32, + dtype: ( + type[NumpyBool] | type[NumpyFloat] | type[NumpyInt] | type[NumpyUInt] + ) = np.float32, ) -> NDArrayNumber | None: """Converts a given array like object to a numpy array. @@ -168,38 +158,33 @@ def array_to_numpy( @overload def arrays_to_numpy( *args: ArrayLike, n_dims: int | None, dtype: type[NumpyBool] -) -> tuple[NDArrayBool, ...]: - ... +) -> tuple[NDArrayBool, ...]: ... @overload def arrays_to_numpy( *args: ArrayLike, n_dims: int | None, dtype: type[NumpyFloat] -) -> tuple[NDArrayFloat, ...]: - ... +) -> tuple[NDArrayFloat, ...]: ... @overload def arrays_to_numpy( *args: ArrayLike, n_dims: int | None, dtype: type[NumpyInt] -) -> tuple[NDArrayInt, ...]: - ... +) -> tuple[NDArrayInt, ...]: ... @overload def arrays_to_numpy( *args: ArrayLike, n_dims: int | None, dtype: type[NumpyUInt] -) -> tuple[NDArrayUInt, ...]: - ... +) -> tuple[NDArrayUInt, ...]: ... def arrays_to_numpy( *args: ArrayLike | None, n_dims: int | None = None, - dtype: type[NumpyBool] - | type[NumpyFloat] - | type[NumpyInt] - | type[NumpyUInt] = np.float32, + dtype: ( + type[NumpyBool] | type[NumpyFloat] | type[NumpyInt] | type[NumpyUInt] + ) = np.float32, ) -> tuple[NDArrayNumber | None, ...]: """Converts a given sequence of optional ArrayLike objects to numpy. diff --git a/vis4d/common/ckpt.py b/vis4d/common/ckpt.py index 950db7f2a..0db727c16 100644 --- a/vis4d/common/ckpt.py +++ b/vis4d/common/ckpt.py @@ -2,6 +2,7 @@ The code is based on https://github.com/open-mmlab/mmcv/ """ + from __future__ import annotations import os.path as osp @@ -379,8 +380,9 @@ def _load_checkpoint( filename: str, map_location: str | torch.device | None = None, strict: bool = False, - revise_keys: tuple[tuple[str, str]] - | list[tuple[str, str]] = ((r"^module\.", ""),), + revise_keys: tuple[tuple[str, str]] | list[tuple[str, str]] = ( + (r"^module\.", ""), + ), ) -> TorchCheckpoint: """Load checkpoint from a file or URI. diff --git a/vis4d/common/dict.py b/vis4d/common/dict.py index 9f0098cc2..1ea0bc8a4 100644 --- a/vis4d/common/dict.py +++ b/vis4d/common/dict.py @@ -1,4 +1,5 @@ """This module contains dictionary utility functions.""" + from __future__ import annotations from typing import Any diff --git a/vis4d/common/imports.py b/vis4d/common/imports.py index e0c660e15..2cb6920a7 100644 --- a/vis4d/common/imports.py +++ b/vis4d/common/imports.py @@ -1,4 +1,5 @@ """Check if optional packages required by some modules are available.""" + from functools import lru_cache from importlib.util import find_spec diff --git a/vis4d/common/logging.py b/vis4d/common/logging.py index 77a9ff680..6794453a4 100644 --- a/vis4d/common/logging.py +++ b/vis4d/common/logging.py @@ -3,6 +3,7 @@ We provide utilities for setting up a logger and logging in a distributed setting. """ + from __future__ import annotations import logging diff --git a/vis4d/common/named_tuple.py b/vis4d/common/named_tuple.py index 9383ffc7e..8f724c755 100644 --- a/vis4d/common/named_tuple.py +++ b/vis4d/common/named_tuple.py @@ -1,4 +1,5 @@ """This module contains dictionary utility functions.""" + from __future__ import annotations from typing import Any, NamedTuple diff --git a/vis4d/common/prettyprint.py b/vis4d/common/prettyprint.py index f4ba2d4b2..ca655d9fe 100644 --- a/vis4d/common/prettyprint.py +++ b/vis4d/common/prettyprint.py @@ -1,4 +1,5 @@ """This module contains utilities for pretty printing.""" + from typing import Any import numpy as np diff --git a/vis4d/common/progress.py b/vis4d/common/progress.py index 90034e584..984d80556 100644 --- a/vis4d/common/progress.py +++ b/vis4d/common/progress.py @@ -1,4 +1,5 @@ """This module contains utilities for progress bar.""" + from __future__ import annotations import datetime diff --git a/vis4d/common/slurm.py b/vis4d/common/slurm.py index c290fc2fb..dea2a7282 100644 --- a/vis4d/common/slurm.py +++ b/vis4d/common/slurm.py @@ -3,6 +3,7 @@ Code adapted from: https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/dist_utils.py """ + import os import socket import subprocess diff --git a/vis4d/common/time.py b/vis4d/common/time.py index fe422c446..5c33a56c8 100644 --- a/vis4d/common/time.py +++ b/vis4d/common/time.py @@ -1,4 +1,5 @@ """This module contains utilities for tracking execution time.""" + from __future__ import annotations from time import perf_counter diff --git a/vis4d/common/typing.py b/vis4d/common/typing.py index 08d545cc0..5ebc0bfa4 100644 --- a/vis4d/common/typing.py +++ b/vis4d/common/typing.py @@ -2,6 +2,7 @@ Here we define commonly used types like specific numpy array and tensor types. """ + from collections.abc import Callable from typing import Any, Dict, Iterable, Union diff --git a/vis4d/common/util.py b/vis4d/common/util.py index 2373c6291..49845040d 100644 --- a/vis4d/common/util.py +++ b/vis4d/common/util.py @@ -1,4 +1,5 @@ """Utility functions for common usage.""" + import random from difflib import get_close_matches diff --git a/vis4d/config/__init__.py b/vis4d/config/__init__.py index 7063d02e4..872ddf1db 100644 --- a/vis4d/config/__init__.py +++ b/vis4d/config/__init__.py @@ -1,4 +1,5 @@ """Config modules.""" + from .config_dict import ( FieldConfigDict, class_config, diff --git a/vis4d/config/common/datasets/bdd100k/__init__.py b/vis4d/config/common/datasets/bdd100k/__init__.py index 32e795b3e..66ea6eb77 100644 --- a/vis4d/config/common/datasets/bdd100k/__init__.py +++ b/vis4d/config/common/datasets/bdd100k/__init__.py @@ -1,4 +1,5 @@ """BDD100K dataset config.""" + from .detect import ( CONN_BDD100K_DET_EVAL, CONN_BDD100K_INS_EVAL, diff --git a/vis4d/config/common/datasets/bdd100k/track.py b/vis4d/config/common/datasets/bdd100k/track.py index 6f306584d..4aa6dc9c4 100644 --- a/vis4d/config/common/datasets/bdd100k/track.py +++ b/vis4d/config/common/datasets/bdd100k/track.py @@ -1,4 +1,5 @@ """BDD100K tracking dataset configs.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/config/common/datasets/coco/__init__.py b/vis4d/config/common/datasets/coco/__init__.py index c229306f2..cb7015d84 100644 --- a/vis4d/config/common/datasets/coco/__init__.py +++ b/vis4d/config/common/datasets/coco/__init__.py @@ -1,4 +1,5 @@ """COCO dataset config.""" + from .detection import ( CONN_COCO_BBOX_EVAL, CONN_COCO_MASK_EVAL, diff --git a/vis4d/config/common/datasets/imagenet/__init__.py b/vis4d/config/common/datasets/imagenet/__init__.py index ceb4880cb..0149b0d4a 100644 --- a/vis4d/config/common/datasets/imagenet/__init__.py +++ b/vis4d/config/common/datasets/imagenet/__init__.py @@ -1,4 +1,5 @@ """ImageNet dataset config.""" + from .cls import CONN_IMAGENET_CLS_EVAL, get_imagenet_cls_cfg __all__ = ["get_imagenet_cls_cfg", "CONN_IMAGENET_CLS_EVAL"] diff --git a/vis4d/config/common/datasets/nuscenes/__init__.py b/vis4d/config/common/datasets/nuscenes/__init__.py index 0d27827ae..35ed92ba8 100644 --- a/vis4d/config/common/datasets/nuscenes/__init__.py +++ b/vis4d/config/common/datasets/nuscenes/__init__.py @@ -1,4 +1,5 @@ """NuScenes dataset config.""" + from .nuscenes import ( get_nusc_mini_train_cfg, get_nusc_mini_val_cfg, diff --git a/vis4d/config/common/datasets/nuscenes/nuscenes.py b/vis4d/config/common/datasets/nuscenes/nuscenes.py index e000f7238..1c2491e6a 100644 --- a/vis4d/config/common/datasets/nuscenes/nuscenes.py +++ b/vis4d/config/common/datasets/nuscenes/nuscenes.py @@ -1,4 +1,5 @@ """NuScenes multi-sensor video dataset config.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/config/common/datasets/nuscenes/nuscenes_mono.py b/vis4d/config/common/datasets/nuscenes/nuscenes_mono.py index 6b2c172dd..b28ad98d5 100644 --- a/vis4d/config/common/datasets/nuscenes/nuscenes_mono.py +++ b/vis4d/config/common/datasets/nuscenes/nuscenes_mono.py @@ -1,4 +1,5 @@ """NuScenes monocular dataset config.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/config/common/datasets/shift/__init__.py b/vis4d/config/common/datasets/shift/__init__.py index 9f5f9b285..53686843f 100644 --- a/vis4d/config/common/datasets/shift/__init__.py +++ b/vis4d/config/common/datasets/shift/__init__.py @@ -1,4 +1,5 @@ """SHIFT dataset config.""" + from .tasks import ( CONN_SHIFT_DET_EVAL, CONN_SHIFT_INS_EVAL, diff --git a/vis4d/config/common/datasets/shift/common.py b/vis4d/config/common/datasets/shift/common.py index 94cc66d44..288dade1d 100644 --- a/vis4d/config/common/datasets/shift/common.py +++ b/vis4d/config/common/datasets/shift/common.py @@ -1,4 +1,5 @@ """SHIFT data loading config for data augmentation.""" + from __future__ import annotations from collections.abc import Sequence @@ -322,9 +323,11 @@ def get_shift_dataloader_config( samples_per_gpu=samples_per_gpu, workers_per_gpu=workers_per_gpu, shuffle=True, - collate_fn=multi_sensor_collate - if len(train_views_to_load) > 1 - else default_collate, + collate_fn=( + multi_sensor_collate + if len(train_views_to_load) > 1 + else default_collate + ), ) # Test Dataset Config @@ -336,9 +339,11 @@ def get_shift_dataloader_config( batchprocess_cfg=test_batchprocess_cfg, samples_per_gpu=samples_per_gpu, workers_per_gpu=workers_per_gpu, - collate_fn=multi_sensor_collate - if len(test_views_to_load) > 1 - else default_collate, + collate_fn=( + multi_sensor_collate + if len(test_views_to_load) > 1 + else default_collate + ), ) return data diff --git a/vis4d/config/common/datasets/shift/tasks.py b/vis4d/config/common/datasets/shift/tasks.py index 09471bfcd..3f0304a6e 100644 --- a/vis4d/config/common/datasets/shift/tasks.py +++ b/vis4d/config/common/datasets/shift/tasks.py @@ -1,4 +1,5 @@ """SHIFT data loading config for segmentation.""" + from __future__ import annotations from ml_collections.config_dict import ConfigDict diff --git a/vis4d/config/common/models/__init__.py b/vis4d/config/common/models/__init__.py index 09c0b03e9..c3cd382f5 100644 --- a/vis4d/config/common/models/__init__.py +++ b/vis4d/config/common/models/__init__.py @@ -1,4 +1,5 @@ """Common models config.""" + from .faster_rcnn import get_faster_rcnn_cfg from .mask_rcnn import get_mask_rcnn_cfg diff --git a/vis4d/config/common/models/faster_rcnn.py b/vis4d/config/common/models/faster_rcnn.py index be0e03559..1b0a4a184 100644 --- a/vis4d/config/common/models/faster_rcnn.py +++ b/vis4d/config/common/models/faster_rcnn.py @@ -1,4 +1,5 @@ """Faseter R-CNN base model config.""" + from __future__ import annotations from ml_collections import ConfigDict, FieldReference diff --git a/vis4d/config/common/models/mask_rcnn.py b/vis4d/config/common/models/mask_rcnn.py index d2f4784d6..6781b940b 100644 --- a/vis4d/config/common/models/mask_rcnn.py +++ b/vis4d/config/common/models/mask_rcnn.py @@ -1,4 +1,5 @@ """Mask RCNN base model config.""" + from __future__ import annotations from ml_collections import ConfigDict, FieldReference diff --git a/vis4d/config/common/models/qdtrack.py b/vis4d/config/common/models/qdtrack.py index 6f6c93b34..e3671931a 100644 --- a/vis4d/config/common/models/qdtrack.py +++ b/vis4d/config/common/models/qdtrack.py @@ -1,4 +1,5 @@ """QD-Track model config.""" + from __future__ import annotations from ml_collections import ConfigDict, FieldReference diff --git a/vis4d/config/common/models/yolox.py b/vis4d/config/common/models/yolox.py index 2c9b9eff3..a5f5672cb 100644 --- a/vis4d/config/common/models/yolox.py +++ b/vis4d/config/common/models/yolox.py @@ -1,4 +1,5 @@ """YOLOX base model config.""" + from __future__ import annotations from ml_collections import ConfigDict, FieldReference diff --git a/vis4d/config/config_dict.py b/vis4d/config/config_dict.py index 2f38989d8..d6b90eebb 100644 --- a/vis4d/config/config_dict.py +++ b/vis4d/config/config_dict.py @@ -1,4 +1,5 @@ """Config dict module.""" + from __future__ import annotations import importlib diff --git a/vis4d/config/default/__init__.py b/vis4d/config/default/__init__.py index 93d372c80..298bcddc5 100644 --- a/vis4d/config/default/__init__.py +++ b/vis4d/config/default/__init__.py @@ -1,4 +1,5 @@ """Config default.""" + from .pl_trainer import get_default_pl_trainer_cfg from .runtime import get_default_callbacks_cfg, get_default_cfg diff --git a/vis4d/config/default/data_connectors/__init__.py b/vis4d/config/default/data_connectors/__init__.py index ee24b4d96..952ea18ef 100644 --- a/vis4d/config/default/data_connectors/__init__.py +++ b/vis4d/config/default/data_connectors/__init__.py @@ -1,4 +1,5 @@ """Default data connection setups.""" + from .common import CONN_IMAGES_TEST, CONN_IMAGES_TRAIN from .detection import CONN_BBOX_2D_TEST, CONN_BBOX_2D_TRAIN, CONN_BOX_LOSS_2D from .visualizers import ( diff --git a/vis4d/config/default/data_connectors/cls.py b/vis4d/config/default/data_connectors/cls.py index c9f1b8cd8..eca64ccd4 100644 --- a/vis4d/config/default/data_connectors/cls.py +++ b/vis4d/config/default/data_connectors/cls.py @@ -1,4 +1,5 @@ """Default data connectors for evaluators.""" + from vis4d.data.const import CommonKeys as K from vis4d.engine.connectors import data_key, pred_key diff --git a/vis4d/config/default/data_connectors/common.py b/vis4d/config/default/data_connectors/common.py index 614cc85b2..58d1fd0d8 100644 --- a/vis4d/config/default/data_connectors/common.py +++ b/vis4d/config/default/data_connectors/common.py @@ -1,4 +1,5 @@ """Default data connectors for common tasks.""" + from vis4d.data.const import CommonKeys as K CONN_IMAGES_TRAIN = {"images": K.images, "input_hw": K.input_hw} diff --git a/vis4d/config/default/data_connectors/detection.py b/vis4d/config/default/data_connectors/detection.py index 22c17b647..7bafec267 100644 --- a/vis4d/config/default/data_connectors/detection.py +++ b/vis4d/config/default/data_connectors/detection.py @@ -1,4 +1,5 @@ """Default data connectors for detection.""" + from vis4d.data.const import CommonKeys as K from vis4d.engine.connectors import data_key, pred_key diff --git a/vis4d/config/default/data_connectors/seg.py b/vis4d/config/default/data_connectors/seg.py index 6f7e54261..cbc596650 100644 --- a/vis4d/config/default/data_connectors/seg.py +++ b/vis4d/config/default/data_connectors/seg.py @@ -1,4 +1,5 @@ """Default data connectors for evaluators.""" + from vis4d.data.const import CommonKeys as K from vis4d.engine.connectors import data_key, pred_key diff --git a/vis4d/config/default/data_connectors/visualizers.py b/vis4d/config/default/data_connectors/visualizers.py index 0e619ffed..0b29e35af 100644 --- a/vis4d/config/default/data_connectors/visualizers.py +++ b/vis4d/config/default/data_connectors/visualizers.py @@ -1,4 +1,5 @@ """Default data connectors for visualizers.""" + from vis4d.data.const import CommonKeys as K from vis4d.engine.connectors import data_key, pred_key diff --git a/vis4d/config/default/pl_trainer.py b/vis4d/config/default/pl_trainer.py index 6e43fd974..e54e625cb 100644 --- a/vis4d/config/default/pl_trainer.py +++ b/vis4d/config/default/pl_trainer.py @@ -1,7 +1,8 @@ """Default runtime configuration for PyTorch Lightning.""" + import inspect -import pytorch_lightning as pl +from lightning import Trainer from vis4d.config import FieldConfigDict from vis4d.config.typing import ExperimentConfig @@ -12,7 +13,7 @@ def get_default_pl_trainer_cfg(config: ExperimentConfig) -> ExperimentConfig: pl_trainer = FieldConfigDict() # PL Trainer arguments - for k, v in inspect.signature(pl.Trainer).parameters.items(): + for k, v in inspect.signature(Trainer).parameters.items(): if not k in {"callbacks", "devices", "logger", "strategy"}: pl_trainer[k] = v.default diff --git a/vis4d/config/default/runtime.py b/vis4d/config/default/runtime.py index d59ea7ec7..111f78e75 100644 --- a/vis4d/config/default/runtime.py +++ b/vis4d/config/default/runtime.py @@ -1,4 +1,5 @@ """Default runtime configuration for the project.""" + from __future__ import annotations import platform diff --git a/vis4d/config/replicator.py b/vis4d/config/replicator.py index a6a39c108..a12c1d40d 100644 --- a/vis4d/config/replicator.py +++ b/vis4d/config/replicator.py @@ -1,4 +1,5 @@ """Replication methods to perform different parameters sweeps.""" + from __future__ import annotations import re @@ -29,8 +30,7 @@ def iterable_sampler( # type: ignore """ def _sampler() -> Generator[float, None, None]: - for s in samples: - yield s + yield from samples return _sampler @@ -156,10 +156,8 @@ def replicate_config( # type: ignore for key, value in sampling_args: # Convert Iterable to a callable generator if isinstance(value, Iterable): - generator: Callable[ - [], Generator[ArgsType, None, None] - ] = lambda value=value: ( # type: ignore - i for i in value + generator: Callable[[], Generator[ArgsType, None, None]] = ( + lambda value=value: (i for i in value) # type: ignore ) sampling_queue.put((key, generator)) else: @@ -257,8 +255,7 @@ def _replicate_config_grid( # type: ignore configuration.update_from_flattened_dict({key_name: value}) # Let the other samplers process the remaining keys - for config in _replicate_config_grid(configuration, sampling_queue): - yield config + yield from _replicate_config_grid(configuration, sampling_queue) # Add back this sampler for next round sampling_queue.put((key_name, sampler)) @@ -316,10 +313,9 @@ def _replicate_config_linear( # type: ignore configuration.update_from_flattened_dict({key_name: value}) # Let the other samplers process the remaining keys - for config in _replicate_config_linear( + yield from _replicate_config_linear( configuration, sampling_queue, current_position - ): - yield config + ) if is_top_level: current_position += 1 diff --git a/vis4d/config/show_connection.py b/vis4d/config/show_connection.py index 9fab70b47..8bb793b75 100644 --- a/vis4d/config/show_connection.py +++ b/vis4d/config/show_connection.py @@ -1,4 +1,5 @@ """Show connected components in the config.""" + from __future__ import annotations import inspect diff --git a/vis4d/config/typing.py b/vis4d/config/typing.py index a26ea2569..b6b49b240 100644 --- a/vis4d/config/typing.py +++ b/vis4d/config/typing.py @@ -1,4 +1,5 @@ """Type definitions for configuration files.""" + from __future__ import annotations from typing import Any, TypedDict diff --git a/vis4d/config/util/__init__.py b/vis4d/config/util/__init__.py index e4d189b5c..8fd238d50 100644 --- a/vis4d/config/util/__init__.py +++ b/vis4d/config/util/__init__.py @@ -1,4 +1,5 @@ """Config utilities.""" + from .callable import get_callable_cfg from .dataloader import get_inference_dataloaders_cfg, get_train_dataloader_cfg from .optimizer import get_lr_scheduler_cfg, get_optimizer_cfg diff --git a/vis4d/config/util/callable.py b/vis4d/config/util/callable.py index 0164137db..a50553f10 100644 --- a/vis4d/config/util/callable.py +++ b/vis4d/config/util/callable.py @@ -1,4 +1,5 @@ """Callable objects for use in config files.""" + from ml_collections import ConfigDict from vis4d.common.typing import ArgsType, GenericFunc diff --git a/vis4d/config/util/dataloader.py b/vis4d/config/util/dataloader.py index f6e42bd5f..6dcb70bd8 100644 --- a/vis4d/config/util/dataloader.py +++ b/vis4d/config/util/dataloader.py @@ -1,4 +1,5 @@ """Dataloader configuration.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/config/util/optimizer.py b/vis4d/config/util/optimizer.py index cf07b6b3d..9d5bebcb5 100644 --- a/vis4d/config/util/optimizer.py +++ b/vis4d/config/util/optimizer.py @@ -1,4 +1,5 @@ """Optimizer configuration.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/config/util/registry.py b/vis4d/config/util/registry.py index 8d2235687..628c1b958 100644 --- a/vis4d/config/util/registry.py +++ b/vis4d/config/util/registry.py @@ -1,4 +1,5 @@ """Utility function for registering config files.""" + from __future__ import annotations import glob diff --git a/vis4d/config/util/sweep.py b/vis4d/config/util/sweep.py index 7a428883d..83ed954cb 100644 --- a/vis4d/config/util/sweep.py +++ b/vis4d/config/util/sweep.py @@ -1,4 +1,5 @@ """Helper functions for creating sweep configurations.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/data/cbgs.py b/vis4d/data/cbgs.py index 2b1c41056..226b25d09 100644 --- a/vis4d/data/cbgs.py +++ b/vis4d/data/cbgs.py @@ -3,6 +3,7 @@ Implementation of `Class-balanced Grouping and Sampling for Point Cloud 3D Object Detection `_. """ + from __future__ import annotations import numpy as np diff --git a/vis4d/data/const.py b/vis4d/data/const.py index 4edd993e3..ca961434f 100644 --- a/vis4d/data/const.py +++ b/vis4d/data/const.py @@ -4,6 +4,7 @@ provides some constants that are used to define a common data format which is helpful to use for better data transformation. """ + from dataclasses import dataclass from enum import Enum diff --git a/vis4d/data/data_pipe.py b/vis4d/data/data_pipe.py index 78fbdea11..323c74f4b 100644 --- a/vis4d/data/data_pipe.py +++ b/vis4d/data/data_pipe.py @@ -1,4 +1,5 @@ """DataPipe wraps datasets to share the prepossessing pipeline.""" + from __future__ import annotations import random diff --git a/vis4d/data/datasets/__init__.py b/vis4d/data/datasets/__init__.py index 8ef073ad8..41f8cf00d 100644 --- a/vis4d/data/datasets/__init__.py +++ b/vis4d/data/datasets/__init__.py @@ -1,4 +1,5 @@ """Datasets module.""" + from .base import Dataset, VideoDataset from .bdd100k import BDD100K, bdd100k_track_map from .coco import COCO diff --git a/vis4d/data/datasets/base.py b/vis4d/data/datasets/base.py index 23f6292c0..208a99cad 100644 --- a/vis4d/data/datasets/base.py +++ b/vis4d/data/datasets/base.py @@ -4,6 +4,7 @@ provide a number of Mixin classes which a dataset can inherit from to implement additional functionality. """ + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/data/datasets/bdd100k.py b/vis4d/data/datasets/bdd100k.py index ff71a30d1..e978d1f4c 100644 --- a/vis4d/data/datasets/bdd100k.py +++ b/vis4d/data/datasets/bdd100k.py @@ -1,4 +1,5 @@ """BDD100K dataset.""" + from vis4d.common.imports import BDD100K_AVAILABLE, SCALABEL_AVAILABLE from .scalabel import Scalabel diff --git a/vis4d/data/datasets/coco.py b/vis4d/data/datasets/coco.py index 6e1a31b87..4e7a963ce 100644 --- a/vis4d/data/datasets/coco.py +++ b/vis4d/data/datasets/coco.py @@ -1,4 +1,5 @@ """COCO dataset.""" + from __future__ import annotations import contextlib @@ -14,8 +15,6 @@ from vis4d.data.const import CommonKeys as K from vis4d.data.typing import DictData -from ..const import CommonKeys as K -from ..typing import DictData from .base import Dataset from .util import CacheMappingMixin, im_decode diff --git a/vis4d/data/datasets/nuscenes.py b/vis4d/data/datasets/nuscenes.py index 0be1d5d0c..a9b224b29 100644 --- a/vis4d/data/datasets/nuscenes.py +++ b/vis4d/data/datasets/nuscenes.py @@ -1,4 +1,5 @@ """NuScenes multi-sensor video dataset.""" + from __future__ import annotations import os diff --git a/vis4d/data/datasets/nuscenes_detection.py b/vis4d/data/datasets/nuscenes_detection.py index 131c8fd99..decd7e7b5 100644 --- a/vis4d/data/datasets/nuscenes_detection.py +++ b/vis4d/data/datasets/nuscenes_detection.py @@ -1,4 +1,5 @@ """NuScenes multi-sensor video dataset.""" + from __future__ import annotations import json diff --git a/vis4d/data/datasets/nuscenes_mono.py b/vis4d/data/datasets/nuscenes_mono.py index bf872dd25..19128eb66 100644 --- a/vis4d/data/datasets/nuscenes_mono.py +++ b/vis4d/data/datasets/nuscenes_mono.py @@ -1,4 +1,5 @@ """NuScenes monocular dataset.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/data/datasets/nuscenes_trajectory.py b/vis4d/data/datasets/nuscenes_trajectory.py index a10a5c0c8..8da3c88ae 100644 --- a/vis4d/data/datasets/nuscenes_trajectory.py +++ b/vis4d/data/datasets/nuscenes_trajectory.py @@ -1,4 +1,5 @@ """NuScenes trajectory dataset.""" + from __future__ import annotations import json diff --git a/vis4d/data/datasets/s3dis.py b/vis4d/data/datasets/s3dis.py index 6edf87a52..ad2657d0a 100644 --- a/vis4d/data/datasets/s3dis.py +++ b/vis4d/data/datasets/s3dis.py @@ -1,4 +1,5 @@ """Stanford 3D indoor dataset.""" + from __future__ import annotations import copy diff --git a/vis4d/data/datasets/scalabel.py b/vis4d/data/datasets/scalabel.py index 96dd9ee69..b535d60df 100644 --- a/vis4d/data/datasets/scalabel.py +++ b/vis4d/data/datasets/scalabel.py @@ -1,4 +1,5 @@ """Scalabel type dataset.""" + from __future__ import annotations import os @@ -107,10 +108,9 @@ def instance_ids_to_global( for v in video_names[: video_names.index(video_name)] ) ) - label.attributes[ - "instance_id" - ] = sum_previous_vids + local_instance_ids[video_name].index( - label.id + label.attributes["instance_id"] = ( + sum_previous_vids + + local_instance_ids[video_name].index(label.id) ) diff --git a/vis4d/data/datasets/shift.py b/vis4d/data/datasets/shift.py index 2ee81a3f3..f6db0c220 100644 --- a/vis4d/data/datasets/shift.py +++ b/vis4d/data/datasets/shift.py @@ -1,4 +1,5 @@ """SHIFT dataset.""" + from __future__ import annotations import json diff --git a/vis4d/data/datasets/torchvision.py b/vis4d/data/datasets/torchvision.py index 3318da1a0..a23c974b5 100644 --- a/vis4d/data/datasets/torchvision.py +++ b/vis4d/data/datasets/torchvision.py @@ -1,4 +1,5 @@ """Provides functionalities to wrap torchvision datasets.""" + from __future__ import annotations from collections.abc import Callable diff --git a/vis4d/data/datasets/util.py b/vis4d/data/datasets/util.py index 556e9116f..38486fa3d 100644 --- a/vis4d/data/datasets/util.py +++ b/vis4d/data/datasets/util.py @@ -1,4 +1,5 @@ """Utility functions for datasets.""" + from __future__ import annotations import copy @@ -52,7 +53,7 @@ def im_decode( }, f"{mode} not supported for image decoding!" if backend == "PIL": pil_img = Image.open(BytesIO(bytearray(im_bytes))) - pil_img = ImageOps.exif_transpose(pil_img) + pil_img = ImageOps.exif_transpose(pil_img) # type: ignore if pil_img.mode == "L": # pragma: no cover if mode == "L": img: NDArrayUI8 = np.array(pil_img)[..., None] diff --git a/vis4d/data/io/__init__.py b/vis4d/data/io/__init__.py index 7af56e7d1..f167ac5fc 100644 --- a/vis4d/data/io/__init__.py +++ b/vis4d/data/io/__init__.py @@ -1,4 +1,5 @@ """Init io module.""" + from .base import DataBackend from .file import FileBackend from .hdf5 import HDF5Backend diff --git a/vis4d/data/io/base.py b/vis4d/data/io/base.py index d8f75d9e7..7e2c7fee9 100644 --- a/vis4d/data/io/base.py +++ b/vis4d/data/io/base.py @@ -4,6 +4,7 @@ files which are more suitable for data centers. The naive backend is the FileBackend, which loads from / saves to file naively. """ + from abc import abstractmethod from typing import Literal diff --git a/vis4d/data/io/file.py b/vis4d/data/io/file.py index 9cfbc54e0..abfbe85dd 100644 --- a/vis4d/data/io/file.py +++ b/vis4d/data/io/file.py @@ -2,6 +2,7 @@ This backends loads data from and saves data to the local hard drive. """ + import os from typing import Literal diff --git a/vis4d/data/io/hdf5.py b/vis4d/data/io/hdf5.py index db9f85f8c..cfa1f8630 100644 --- a/vis4d/data/io/hdf5.py +++ b/vis4d/data/io/hdf5.py @@ -3,6 +3,7 @@ This backend works with filepaths pointing to valid HDF5 files. We assume that the given HDF5 file contains the whole dataset associated to this backend. """ + from __future__ import annotations import argparse diff --git a/vis4d/data/io/util.py b/vis4d/data/io/util.py index 423eb83a7..6d23dbc6b 100644 --- a/vis4d/data/io/util.py +++ b/vis4d/data/io/util.py @@ -1,4 +1,5 @@ """Data I/O Utilities.""" + from __future__ import annotations import sys diff --git a/vis4d/data/io/zip.py b/vis4d/data/io/zip.py index e383132d6..0ea4f7cdd 100644 --- a/vis4d/data/io/zip.py +++ b/vis4d/data/io/zip.py @@ -3,6 +3,7 @@ This backend works with filepaths pointing to valid Zip files. We assume that the given Zip file contains the whole dataset associated to this backend. """ + from __future__ import annotations import os diff --git a/vis4d/data/iterable.py b/vis4d/data/iterable.py index 4f6326e8a..6caca4656 100644 --- a/vis4d/data/iterable.py +++ b/vis4d/data/iterable.py @@ -1,4 +1,5 @@ """Iterable datasets.""" + from __future__ import annotations import math diff --git a/vis4d/data/loader.py b/vis4d/data/loader.py index c6349fa49..482697e55 100644 --- a/vis4d/data/loader.py +++ b/vis4d/data/loader.py @@ -1,4 +1,5 @@ """Dataloader utility functions.""" + from __future__ import annotations import random @@ -172,9 +173,9 @@ def _worker_init_fn(worker_id: int) -> None: dataset, batch_size=samples_per_gpu, num_workers=workers_per_gpu, - collate_fn=_collate_fn_multi - if dataset.has_reference - else _collate_fn_single, + collate_fn=( + _collate_fn_multi if dataset.has_reference else _collate_fn_single + ), sampler=sampler, worker_init_fn=_worker_init_fn, persistent_workers=workers_per_gpu > 0, diff --git a/vis4d/data/reference.py b/vis4d/data/reference.py index 592dc1524..236d78c9d 100644 --- a/vis4d/data/reference.py +++ b/vis4d/data/reference.py @@ -4,6 +4,7 @@ This is usually used when a model needs multiple samples of a video during training. """ + from __future__ import annotations from abc import abstractmethod diff --git a/vis4d/data/resample.py b/vis4d/data/resample.py index d4cc901fb..e31b0c636 100644 --- a/vis4d/data/resample.py +++ b/vis4d/data/resample.py @@ -1,4 +1,5 @@ """Resample index to recover the original dataset length.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/data/samplers.py b/vis4d/data/samplers.py index 3b666b80a..ae3d00a10 100644 --- a/vis4d/data/samplers.py +++ b/vis4d/data/samplers.py @@ -1,4 +1,5 @@ """Vis4D data samplers.""" + from __future__ import annotations from collections.abc import Iterator diff --git a/vis4d/data/transforms/__init__.py b/vis4d/data/transforms/__init__.py index 4061147c5..59f70b93c 100644 --- a/vis4d/data/transforms/__init__.py +++ b/vis4d/data/transforms/__init__.py @@ -1,4 +1,5 @@ """Transforms.""" + from .base import RandomApply, Transform, compose __all__ = ["Transform", "RandomApply", "compose"] diff --git a/vis4d/data/transforms/affine.py b/vis4d/data/transforms/affine.py index 6baa6cdaf..72eeee47d 100644 --- a/vis4d/data/transforms/affine.py +++ b/vis4d/data/transforms/affine.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import math diff --git a/vis4d/data/transforms/autoaugment.py b/vis4d/data/transforms/autoaugment.py index 1c2101466..16b02ff67 100644 --- a/vis4d/data/transforms/autoaugment.py +++ b/vis4d/data/transforms/autoaugment.py @@ -1,4 +1,5 @@ """A wrap for timm transforms.""" + from typing import Union import numpy as np diff --git a/vis4d/data/transforms/base.py b/vis4d/data/transforms/base.py index af5430045..ec1b2d8b5 100644 --- a/vis4d/data/transforms/base.py +++ b/vis4d/data/transforms/base.py @@ -1,4 +1,5 @@ """Basic data augmentation class.""" + from __future__ import annotations from collections.abc import Callable, Sequence @@ -111,11 +112,13 @@ def _transform_fn(batch: list[DictData]) -> list[DictData]: # dict as aux input and set default value to None if # key is not found key_data += [ - get_dict_nested( - data, key.split("."), allow_missing=True + ( + get_dict_nested( + data, key.split("."), allow_missing=True + ) + if key != "data" + else data ) - if key != "data" - else data ] if any(d is None for d in key_data): # If any of the data in the batch is None, replace diff --git a/vis4d/data/transforms/crop.py b/vis4d/data/transforms/crop.py index f186544e5..043165046 100644 --- a/vis4d/data/transforms/crop.py +++ b/vis4d/data/transforms/crop.py @@ -1,4 +1,5 @@ """Crop transformation.""" + from __future__ import annotations import math diff --git a/vis4d/data/transforms/flip.py b/vis4d/data/transforms/flip.py index 13f2bb3be..42a314e17 100644 --- a/vis4d/data/transforms/flip.py +++ b/vis4d/data/transforms/flip.py @@ -1,4 +1,5 @@ """Horizontal flip augmentation.""" + import numpy as np import torch diff --git a/vis4d/data/transforms/mask.py b/vis4d/data/transforms/mask.py index 94bc0013a..18867617b 100644 --- a/vis4d/data/transforms/mask.py +++ b/vis4d/data/transforms/mask.py @@ -1,4 +1,5 @@ """Segmentation/Instance Mask Transform.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/data/transforms/mixup.py b/vis4d/data/transforms/mixup.py index 40246ab93..9e0963a93 100644 --- a/vis4d/data/transforms/mixup.py +++ b/vis4d/data/transforms/mixup.py @@ -1,4 +1,5 @@ """Mixup data augmentation.""" + from __future__ import annotations import random diff --git a/vis4d/data/transforms/mosaic.py b/vis4d/data/transforms/mosaic.py index dd5464a96..f0fae4de5 100644 --- a/vis4d/data/transforms/mosaic.py +++ b/vis4d/data/transforms/mosaic.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import random diff --git a/vis4d/data/transforms/normalize.py b/vis4d/data/transforms/normalize.py index a49584a40..79d3845de 100644 --- a/vis4d/data/transforms/normalize.py +++ b/vis4d/data/transforms/normalize.py @@ -1,4 +1,5 @@ """Normalize Transform.""" + from __future__ import annotations import torch diff --git a/vis4d/data/transforms/pad.py b/vis4d/data/transforms/pad.py index 5236c08c8..bda0f4c99 100644 --- a/vis4d/data/transforms/pad.py +++ b/vis4d/data/transforms/pad.py @@ -1,4 +1,5 @@ """Pad transformation.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/data/transforms/photometric.py b/vis4d/data/transforms/photometric.py index d82524e0f..a8f12d9c1 100644 --- a/vis4d/data/transforms/photometric.py +++ b/vis4d/data/transforms/photometric.py @@ -1,4 +1,5 @@ """Photometric transforms.""" + from __future__ import annotations from collections.abc import Callable diff --git a/vis4d/data/transforms/point_sampling.py b/vis4d/data/transforms/point_sampling.py index 0029d3ec7..d83f39d51 100644 --- a/vis4d/data/transforms/point_sampling.py +++ b/vis4d/data/transforms/point_sampling.py @@ -1,4 +1,5 @@ """Contains different Sampling Trasnforms for pointclouds.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/data/transforms/points.py b/vis4d/data/transforms/points.py index 159ab2e31..d981f2592 100644 --- a/vis4d/data/transforms/points.py +++ b/vis4d/data/transforms/points.py @@ -1,4 +1,5 @@ """Pointwise transformations.""" + from __future__ import annotations from typing import TypedDict diff --git a/vis4d/data/transforms/post_process.py b/vis4d/data/transforms/post_process.py index 599ba41a6..7a36a729b 100644 --- a/vis4d/data/transforms/post_process.py +++ b/vis4d/data/transforms/post_process.py @@ -1,4 +1,5 @@ """Post process after transformation.""" + from __future__ import annotations import torch diff --git a/vis4d/data/transforms/random_erasing.py b/vis4d/data/transforms/random_erasing.py index 48267708a..ace6af900 100644 --- a/vis4d/data/transforms/random_erasing.py +++ b/vis4d/data/transforms/random_erasing.py @@ -1,4 +1,5 @@ """Random erasing data augmentation.""" + import numpy as np from vis4d.common.typing import NDArrayNumber diff --git a/vis4d/data/transforms/resize.py b/vis4d/data/transforms/resize.py index c3351c548..b5556d1c7 100644 --- a/vis4d/data/transforms/resize.py +++ b/vis4d/data/transforms/resize.py @@ -1,4 +1,5 @@ """Resize transformation.""" + from __future__ import annotations import random diff --git a/vis4d/data/transforms/to_tensor.py b/vis4d/data/transforms/to_tensor.py index 5b523ece3..2e42c258b 100644 --- a/vis4d/data/transforms/to_tensor.py +++ b/vis4d/data/transforms/to_tensor.py @@ -1,4 +1,5 @@ """ToTensor transformation.""" + import numpy as np import torch diff --git a/vis4d/data/typing.py b/vis4d/data/typing.py index 891f1947a..a3da0b03b 100644 --- a/vis4d/data/typing.py +++ b/vis4d/data/typing.py @@ -6,6 +6,7 @@ so that the data pre-processing pipeline can take advantage of pre-defined data formats that are necessary to properly pre-process a given data sample. """ + from __future__ import annotations from typing import Union diff --git a/vis4d/engine/callbacks/__init__.py b/vis4d/engine/callbacks/__init__.py index 5d357bde9..9cfea9a67 100644 --- a/vis4d/engine/callbacks/__init__.py +++ b/vis4d/engine/callbacks/__init__.py @@ -1,4 +1,5 @@ """Callback modules.""" + from .base import Callback from .checkpoint import CheckpointCallback from .ema import EMACallback diff --git a/vis4d/engine/callbacks/base.py b/vis4d/engine/callbacks/base.py index e3a183e9e..67e3ae1d4 100644 --- a/vis4d/engine/callbacks/base.py +++ b/vis4d/engine/callbacks/base.py @@ -1,4 +1,5 @@ """Base module for callbacks.""" + from __future__ import annotations from torch import Tensor, nn diff --git a/vis4d/engine/callbacks/checkpoint.py b/vis4d/engine/callbacks/checkpoint.py index ea75f5472..9d31ce1f1 100644 --- a/vis4d/engine/callbacks/checkpoint.py +++ b/vis4d/engine/callbacks/checkpoint.py @@ -1,4 +1,5 @@ """This module contains utilities for callbacks.""" + from __future__ import annotations import os diff --git a/vis4d/engine/callbacks/ema.py b/vis4d/engine/callbacks/ema.py index d52fc0e6f..f876d14cf 100644 --- a/vis4d/engine/callbacks/ema.py +++ b/vis4d/engine/callbacks/ema.py @@ -1,4 +1,5 @@ """Callback for updating EMA model.""" + from __future__ import annotations from torch import nn diff --git a/vis4d/engine/callbacks/evaluator.py b/vis4d/engine/callbacks/evaluator.py index 102c1ac34..82ef5e0dc 100644 --- a/vis4d/engine/callbacks/evaluator.py +++ b/vis4d/engine/callbacks/evaluator.py @@ -1,4 +1,5 @@ """This module contains utilities for callbacks.""" + from __future__ import annotations import os diff --git a/vis4d/engine/callbacks/logging.py b/vis4d/engine/callbacks/logging.py index c62414e7e..2b44245c9 100644 --- a/vis4d/engine/callbacks/logging.py +++ b/vis4d/engine/callbacks/logging.py @@ -1,4 +1,5 @@ """This module contains utilities for callbacks.""" + from __future__ import annotations from collections import defaultdict @@ -51,6 +52,7 @@ def on_train_epoch_start( """Hook to run at the start of a training epoch.""" if self.epoch_based: self.train_timer.reset() + self.last_step = 0 self._metrics.clear() elif trainer_state["global_step"] == 0: self.train_timer.reset() diff --git a/vis4d/engine/callbacks/trainer_state.py b/vis4d/engine/callbacks/trainer_state.py index ad1ce3f5e..2c28c7656 100644 --- a/vis4d/engine/callbacks/trainer_state.py +++ b/vis4d/engine/callbacks/trainer_state.py @@ -1,4 +1,5 @@ """Trainer state for callbacks.""" + from __future__ import annotations from typing import TypedDict diff --git a/vis4d/engine/callbacks/visualizer.py b/vis4d/engine/callbacks/visualizer.py index 4400f02bd..8b12159a1 100644 --- a/vis4d/engine/callbacks/visualizer.py +++ b/vis4d/engine/callbacks/visualizer.py @@ -1,4 +1,5 @@ """This module contains utilities for callbacks.""" + from __future__ import annotations import os diff --git a/vis4d/engine/callbacks/yolox_callbacks.py b/vis4d/engine/callbacks/yolox_callbacks.py index 2d2ba5ea8..55d9201b5 100644 --- a/vis4d/engine/callbacks/yolox_callbacks.py +++ b/vis4d/engine/callbacks/yolox_callbacks.py @@ -1,4 +1,5 @@ """YOLOX-specific callbacks.""" + from __future__ import annotations import random diff --git a/vis4d/engine/connectors/__init__.py b/vis4d/engine/connectors/__init__.py index 8675c1675..18454f0ff 100644 --- a/vis4d/engine/connectors/__init__.py +++ b/vis4d/engine/connectors/__init__.py @@ -1,4 +1,5 @@ """Data connector for data connection.""" + from .base import CallbackConnector, DataConnector, LossConnector from .multi_sensor import ( MultiSensorCallbackConnector, diff --git a/vis4d/engine/connectors/base.py b/vis4d/engine/connectors/base.py index df9df72fa..75e38d6e3 100644 --- a/vis4d/engine/connectors/base.py +++ b/vis4d/engine/connectors/base.py @@ -1,4 +1,5 @@ """Base data connector to define data structures for data connection.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/engine/connectors/multi_sensor.py b/vis4d/engine/connectors/multi_sensor.py index 41da5a083..abfa46fdd 100644 --- a/vis4d/engine/connectors/multi_sensor.py +++ b/vis4d/engine/connectors/multi_sensor.py @@ -1,4 +1,5 @@ """Data connector for multi-sensor dataset.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/engine/connectors/util.py b/vis4d/engine/connectors/util.py index 4b0901f97..1a101215c 100644 --- a/vis4d/engine/connectors/util.py +++ b/vis4d/engine/connectors/util.py @@ -1,4 +1,5 @@ """Utility functions for the connectors module.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/engine/experiment.py b/vis4d/engine/experiment.py index eb66d56c9..c7543b12a 100644 --- a/vis4d/engine/experiment.py +++ b/vis4d/engine/experiment.py @@ -4,6 +4,7 @@ This will be called for each experiment configuration. """ + from __future__ import annotations import logging diff --git a/vis4d/engine/flag.py b/vis4d/engine/flag.py index 863e320dc..f127f1909 100644 --- a/vis4d/engine/flag.py +++ b/vis4d/engine/flag.py @@ -1,4 +1,5 @@ """Engine Flags.""" + from absl import flags from .parser import DEFINE_config_file diff --git a/vis4d/engine/loss_module.py b/vis4d/engine/loss_module.py index 2bfd3a638..fc7253178 100644 --- a/vis4d/engine/loss_module.py +++ b/vis4d/engine/loss_module.py @@ -1,4 +1,5 @@ """Loss module maps loss function input keys and controls loss weight.""" + from __future__ import annotations from typing import TypedDict, Union @@ -200,22 +201,15 @@ def forward( # Convert loss_dict to total loss and metrics dictionary metrics: dict[str, float] = {} - if isinstance(loss_dict, Tensor): - total_loss = loss_dict - elif isinstance(loss_dict, dict): - keep_loss_dict: LossesType = {} - for k, v in loss_dict.items(): - metrics[k] = v.detach().cpu().item() - if ( - self.exclude_attributes is None - or k not in self.exclude_attributes - ): - keep_loss_dict[k] = v - total_loss = sum(keep_loss_dict.values()) # type: ignore - else: - raise TypeError( - "Loss function must return a Tensor or a dict of Tensor" - ) + keep_loss_dict: LossesType = {} + for k, v in loss_dict.items(): + metrics[k] = v.detach().cpu().item() + if ( + self.exclude_attributes is None + or k not in self.exclude_attributes + ): + keep_loss_dict[k] = v + total_loss: Tensor = sum(keep_loss_dict.values()) # type: ignore metrics["loss"] = total_loss.detach().cpu().item() return total_loss, metrics diff --git a/vis4d/engine/optim/__init__.py b/vis4d/engine/optim/__init__.py index ce98d6519..72f88d69e 100644 --- a/vis4d/engine/optim/__init__.py +++ b/vis4d/engine/optim/__init__.py @@ -1,4 +1,5 @@ """Optimizer modules.""" + from .optimizer import set_up_optimizers from .scheduler import ( ConstantLR, diff --git a/vis4d/engine/optim/optimizer.py b/vis4d/engine/optim/optimizer.py index 8aa42cfe6..33629ee5b 100644 --- a/vis4d/engine/optim/optimizer.py +++ b/vis4d/engine/optim/optimizer.py @@ -1,4 +1,5 @@ """Optimizer.""" + from __future__ import annotations from typing import TypedDict diff --git a/vis4d/engine/optim/scheduler.py b/vis4d/engine/optim/scheduler.py index d539cdd76..8d2c3a247 100644 --- a/vis4d/engine/optim/scheduler.py +++ b/vis4d/engine/optim/scheduler.py @@ -1,4 +1,5 @@ """Vis4D LR schedulers.""" + from __future__ import annotations from typing import TypedDict @@ -7,7 +8,7 @@ from torch.optim.lr_scheduler import LRScheduler from vis4d.common.typing import DictStrAny -from vis4d.config import instantiate_classes +from vis4d.config import copy_and_resolve_references, instantiate_classes from vis4d.config.typing import LrSchedulerConfig @@ -30,7 +31,9 @@ def __init__( steps_per_epoch: int = -1, ) -> None: """Initialize LRSchedulerWrapper.""" - self.lr_schedulers_cfg = lr_schedulers_cfg + self.lr_schedulers_cfg: list[LrSchedulerConfig] = ( + copy_and_resolve_references(lr_schedulers_cfg) + ) self.lr_schedulers: dict[int, LRSchedulerDict] = {} super().__init__(optimizer) self.steps_per_epoch = steps_per_epoch diff --git a/vis4d/engine/parser.py b/vis4d/engine/parser.py index 586de230e..d77ae1099 100644 --- a/vis4d/engine/parser.py +++ b/vis4d/engine/parser.py @@ -1,4 +1,5 @@ """Parser for config files that can be used with absl flags.""" + from __future__ import annotations import logging diff --git a/vis4d/engine/run.py b/vis4d/engine/run.py index db47a722d..406ab3cb0 100644 --- a/vis4d/engine/run.py +++ b/vis4d/engine/run.py @@ -1,4 +1,5 @@ """CLI interface.""" + from __future__ import annotations from absl import app diff --git a/vis4d/engine/trainer.py b/vis4d/engine/trainer.py index 9e6e2e701..8235e4b98 100644 --- a/vis4d/engine/trainer.py +++ b/vis4d/engine/trainer.py @@ -1,4 +1,5 @@ """Trainer for running train and test.""" + from __future__ import annotations import torch diff --git a/vis4d/engine/util.py b/vis4d/engine/util.py index cbe53e85e..9d7c1a3c4 100644 --- a/vis4d/engine/util.py +++ b/vis4d/engine/util.py @@ -1,4 +1,5 @@ """Run utilities.""" + from __future__ import annotations import dataclasses diff --git a/vis4d/eval/base.py b/vis4d/eval/base.py index 8fdb0ad9a..d152d951b 100644 --- a/vis4d/eval/base.py +++ b/vis4d/eval/base.py @@ -1,4 +1,5 @@ """Vis4D base evaluation.""" + from __future__ import annotations from vis4d.common import ArgsType, GenericFunc, MetricLogs diff --git a/vis4d/eval/bdd100k/__init__.py b/vis4d/eval/bdd100k/__init__.py index 87fcfff5e..b4eb30ec2 100644 --- a/vis4d/eval/bdd100k/__init__.py +++ b/vis4d/eval/bdd100k/__init__.py @@ -1,4 +1,5 @@ """BDD100K evaluators.""" + from .detect import BDD100KDetectEvaluator from .seg import BDD100KSegEvaluator from .track import BDD100KTrackEvaluator diff --git a/vis4d/eval/bdd100k/detect.py b/vis4d/eval/bdd100k/detect.py index bfbee0d3e..497e62d19 100644 --- a/vis4d/eval/bdd100k/detect.py +++ b/vis4d/eval/bdd100k/detect.py @@ -1,4 +1,5 @@ """BDD100K detection evaluator.""" + from __future__ import annotations from vis4d.common.imports import BDD100K_AVAILABLE, SCALABEL_AVAILABLE diff --git a/vis4d/eval/bdd100k/seg.py b/vis4d/eval/bdd100k/seg.py index 04cc79f58..776e54f35 100644 --- a/vis4d/eval/bdd100k/seg.py +++ b/vis4d/eval/bdd100k/seg.py @@ -1,4 +1,5 @@ """BDD100K segmentation evaluator.""" + from __future__ import annotations import itertools diff --git a/vis4d/eval/bdd100k/track.py b/vis4d/eval/bdd100k/track.py index 4082bbc71..6e4c7b5b7 100644 --- a/vis4d/eval/bdd100k/track.py +++ b/vis4d/eval/bdd100k/track.py @@ -1,4 +1,5 @@ """BDD100K tracking evaluator.""" + from __future__ import annotations from vis4d.common.imports import BDD100K_AVAILABLE, SCALABEL_AVAILABLE diff --git a/vis4d/eval/coco/detect.py b/vis4d/eval/coco/detect.py index 4b630253e..676d1660f 100644 --- a/vis4d/eval/coco/detect.py +++ b/vis4d/eval/coco/detect.py @@ -1,4 +1,5 @@ """COCO evaluator.""" + from __future__ import annotations import contextlib diff --git a/vis4d/eval/common/cls.py b/vis4d/eval/common/cls.py index ab1d8ac7f..7db6482c5 100644 --- a/vis4d/eval/common/cls.py +++ b/vis4d/eval/common/cls.py @@ -1,6 +1,5 @@ """Image classification evaluator.""" - from __future__ import annotations import itertools diff --git a/vis4d/eval/common/seg.py b/vis4d/eval/common/seg.py index 3c409db3f..8a6430da3 100644 --- a/vis4d/eval/common/seg.py +++ b/vis4d/eval/common/seg.py @@ -1,4 +1,5 @@ """Common segmentation evaluator.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/eval/kitti/depth.py b/vis4d/eval/kitti/depth.py index 6eb44d216..df21b4480 100644 --- a/vis4d/eval/kitti/depth.py +++ b/vis4d/eval/kitti/depth.py @@ -1,4 +1,5 @@ """KITTI evaluation code.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/eval/metrics/depth.py b/vis4d/eval/metrics/depth.py index 9ad66e0d1..70e8f633d 100644 --- a/vis4d/eval/metrics/depth.py +++ b/vis4d/eval/metrics/depth.py @@ -126,8 +126,7 @@ def delta_p( prediction, target = dense_inputs_to_numpy(prediction, target) check_shape_match(prediction, target) return np.mean( - np.maximum((target / prediction), (prediction / target)) - < 1.25**power + np.maximum((target / prediction), (prediction / target)) < 1.25**power ).item() diff --git a/vis4d/eval/nuscenes/__init__.py b/vis4d/eval/nuscenes/__init__.py index 91fd6a774..6fbf75265 100644 --- a/vis4d/eval/nuscenes/__init__.py +++ b/vis4d/eval/nuscenes/__init__.py @@ -1,4 +1,5 @@ """NuScenes evaluator.""" + from .detect3d import NuScenesDet3DEvaluator from .track3d import NuScenesTrack3DEvaluator diff --git a/vis4d/eval/nuscenes/detect3d.py b/vis4d/eval/nuscenes/detect3d.py index ccb0bc14f..5974b774a 100644 --- a/vis4d/eval/nuscenes/detect3d.py +++ b/vis4d/eval/nuscenes/detect3d.py @@ -1,4 +1,5 @@ """NuScenes 3D detection evaluation code.""" + from __future__ import annotations import json diff --git a/vis4d/eval/nuscenes/track3d.py b/vis4d/eval/nuscenes/track3d.py index 992ba1989..a1b113c69 100644 --- a/vis4d/eval/nuscenes/track3d.py +++ b/vis4d/eval/nuscenes/track3d.py @@ -1,4 +1,5 @@ """NuScenes 3D tracking evaluation code.""" + from __future__ import annotations import json diff --git a/vis4d/eval/scalabel/__init__.py b/vis4d/eval/scalabel/__init__.py index 052f4e1f8..7d006bf0d 100644 --- a/vis4d/eval/scalabel/__init__.py +++ b/vis4d/eval/scalabel/__init__.py @@ -1,4 +1,5 @@ """Scalabel evaluator.""" + from .base import ScalabelEvaluator from .detect import ScalabelDetectEvaluator from .track import ScalabelTrackEvaluator diff --git a/vis4d/eval/scalabel/base.py b/vis4d/eval/scalabel/base.py index 710066249..31326c62e 100644 --- a/vis4d/eval/scalabel/base.py +++ b/vis4d/eval/scalabel/base.py @@ -1,4 +1,5 @@ """Scalabel base evaluator.""" + from __future__ import annotations import itertools diff --git a/vis4d/eval/scalabel/detect.py b/vis4d/eval/scalabel/detect.py index f23bfa626..7be4f307d 100644 --- a/vis4d/eval/scalabel/detect.py +++ b/vis4d/eval/scalabel/detect.py @@ -1,4 +1,5 @@ """Scalabel detection evaluator.""" + from __future__ import annotations import numpy as np @@ -84,17 +85,21 @@ def process_batch( # type: ignore # pylint: disable=arguments-differ label = Label( id=str(label_id), box2d=box2d, - category=self.inverse_cat_map[int(class_id)] - if self.inverse_cat_map != {} - else str(class_id), + category=( + self.inverse_cat_map[int(class_id)] + if self.inverse_cat_map != {} + else str(class_id) + ), score=float(score), - rle=mask_to_rle( - (masks[label_id] > self.mask_threshold).astype( - np.uint8 + rle=( + mask_to_rle( + (masks[label_id] > self.mask_threshold).astype( + np.uint8 + ) ) - ) - if pred_masks - else None, + if pred_masks + else None + ), ) labels.append(label) frame = Frame( diff --git a/vis4d/eval/scalabel/track.py b/vis4d/eval/scalabel/track.py index e6b2d9667..e55b8b4f2 100644 --- a/vis4d/eval/scalabel/track.py +++ b/vis4d/eval/scalabel/track.py @@ -1,4 +1,5 @@ """Scalabel tracking evaluator.""" + from __future__ import annotations import numpy as np @@ -89,18 +90,22 @@ def process_batch( # type: ignore # pylint: disable=arguments-differ box2d = xyxy_to_box2d(*box.tolist()) label = Label( box2d=box2d, - category=self.inverse_cat_map[int(class_id)] - if self.inverse_cat_map != {} - else str(class_id), + category=( + self.inverse_cat_map[int(class_id)] + if self.inverse_cat_map != {} + else str(class_id) + ), score=float(score), id=str(int(track_id)), - rle=mask_to_rle( - (masks[label_id] > self.mask_threshold).astype( - np.uint8 + rle=( + mask_to_rle( + (masks[label_id] > self.mask_threshold).astype( + np.uint8 + ) ) - ) - if pred_masks - else None, + if pred_masks + else None + ), ) labels.append(label) frame = Frame( diff --git a/vis4d/eval/shift/depth.py b/vis4d/eval/shift/depth.py index 0c8bc0059..55e4f3708 100644 --- a/vis4d/eval/shift/depth.py +++ b/vis4d/eval/shift/depth.py @@ -1,4 +1,5 @@ """SHIFT depth estimation evaluator.""" + from __future__ import annotations from vis4d.common.typing import NDArrayNumber diff --git a/vis4d/eval/shift/detect.py b/vis4d/eval/shift/detect.py index 727a3b7f4..ef4575600 100644 --- a/vis4d/eval/shift/detect.py +++ b/vis4d/eval/shift/detect.py @@ -1,4 +1,5 @@ """SHIFT detection evaluator.""" + from __future__ import annotations from vis4d.data.datasets.shift import shift_det_map diff --git a/vis4d/eval/shift/flow.py b/vis4d/eval/shift/flow.py index 5deb9a087..e3c3b5b3d 100644 --- a/vis4d/eval/shift/flow.py +++ b/vis4d/eval/shift/flow.py @@ -1,4 +1,5 @@ """SHIFT optical flow estimation evaluator.""" + from __future__ import annotations from ..common import OpticalFlowEvaluator diff --git a/vis4d/eval/shift/multitask_writer.py b/vis4d/eval/shift/multitask_writer.py index d76497b85..00f8949a5 100644 --- a/vis4d/eval/shift/multitask_writer.py +++ b/vis4d/eval/shift/multitask_writer.py @@ -1,4 +1,5 @@ """SHIFT result writer.""" + from __future__ import annotations import io @@ -197,18 +198,24 @@ def process_batch( # type: ignore # pylint: disable=arguments-differ box2d = xyxy_to_box2d(*box.tolist()) label = Label( box2d=box2d, - category=self.inverse_cat_map[int(class_id)] - if self.inverse_cat_map != {} - else str(class_id), + category=( + self.inverse_cat_map[int(class_id)] + if self.inverse_cat_map != {} + else str(class_id) + ), score=float(score), - rle=mask_to_rle( - (masks[class_id] > 0.0).astype(np.uint8) - ) - if pred_instance_masks - else None, - id=str(int(track_ids[0])) - if pred_boxes2d_track_ids - else None, + rle=( + mask_to_rle( + (masks[class_id] > 0.0).astype(np.uint8) + ) + if pred_instance_masks + else None + ), + id=( + str(int(track_ids[0])) + if pred_boxes2d_track_ids + else None + ), ) labels.append(label) frame = Frame( diff --git a/vis4d/eval/shift/seg.py b/vis4d/eval/shift/seg.py index e07d1c950..939d007a9 100644 --- a/vis4d/eval/shift/seg.py +++ b/vis4d/eval/shift/seg.py @@ -1,4 +1,5 @@ """SHIFT segmentation evaluator.""" + from __future__ import annotations from vis4d.common.typing import NDArrayI64, NDArrayNumber diff --git a/vis4d/eval/shift/track.py b/vis4d/eval/shift/track.py index ff723aaaf..1a9b0d1c5 100644 --- a/vis4d/eval/shift/track.py +++ b/vis4d/eval/shift/track.py @@ -1,4 +1,5 @@ """SHIFT tracking evaluator.""" + from __future__ import annotations from vis4d.data.datasets.shift import shift_det_map diff --git a/vis4d/model/adapter/__init__.py b/vis4d/model/adapter/__init__.py index f902d5afb..450a3d452 100644 --- a/vis4d/model/adapter/__init__.py +++ b/vis4d/model/adapter/__init__.py @@ -1,4 +1,5 @@ """Model adapters.""" + from .ema import ModelEMAAdapter, ModelExpEMAAdapter __all__ = ["ModelEMAAdapter", "ModelExpEMAAdapter"] diff --git a/vis4d/model/adapter/ema.py b/vis4d/model/adapter/ema.py index f1fc84da9..573836bc4 100644 --- a/vis4d/model/adapter/ema.py +++ b/vis4d/model/adapter/ema.py @@ -1,4 +1,5 @@ """Exponential Moving Average (EMA) for PyTorch models.""" + from __future__ import annotations import math @@ -61,7 +62,7 @@ def update(self, steps: int) -> None: # pylint: disable=unused-argument """Update the internal EMA model.""" self._update( self.model, - update_fn=lambda e, m: self.decay * e + (1.0 - self.decay) * m, # type: ignore # pylint: disable=line-too-long + update_fn=lambda e, m: self.decay * e + (1.0 - self.decay) * m, ) def set(self, model: nn.Module) -> None: @@ -113,5 +114,5 @@ def update(self, steps: int) -> None: ) self._update( self.model, - update_fn=lambda e, m: decay * e + (1.0 - decay) * m, # type: ignore # pylint: disable=line-too-long + update_fn=lambda e, m: decay * e + (1.0 - decay) * m, ) diff --git a/vis4d/model/cls/__init__.py b/vis4d/model/cls/__init__.py index dc1bf72de..cd4e60c12 100644 --- a/vis4d/model/cls/__init__.py +++ b/vis4d/model/cls/__init__.py @@ -1,4 +1,5 @@ """Common classes and functions for classification models.""" + from .common import ClsOut from .vit import ViTClassifer diff --git a/vis4d/model/cls/vit.py b/vis4d/model/cls/vit.py index 8b028defc..dea3cc4fc 100644 --- a/vis4d/model/cls/vit.py +++ b/vis4d/model/cls/vit.py @@ -1,4 +1,5 @@ """ViT for classification tasks.""" + from __future__ import annotations import timm.models.vision_transformer as _vision_transformer diff --git a/vis4d/model/detect/faster_rcnn.py b/vis4d/model/detect/faster_rcnn.py index c758ded3a..97a672baf 100644 --- a/vis4d/model/detect/faster_rcnn.py +++ b/vis4d/model/detect/faster_rcnn.py @@ -1,4 +1,5 @@ """Faster RCNN model implementation and runtime.""" + from __future__ import annotations import torch diff --git a/vis4d/model/detect/mask_rcnn.py b/vis4d/model/detect/mask_rcnn.py index da89c2a72..22cc29b76 100644 --- a/vis4d/model/detect/mask_rcnn.py +++ b/vis4d/model/detect/mask_rcnn.py @@ -1,4 +1,5 @@ """Mask RCNN model implementation and runtime.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/model/detect/retinanet.py b/vis4d/model/detect/retinanet.py index 756d91413..4ae88643b 100644 --- a/vis4d/model/detect/retinanet.py +++ b/vis4d/model/detect/retinanet.py @@ -1,4 +1,5 @@ """RetinaNet model implementation and runtime.""" + from __future__ import annotations from torch import Tensor, nn diff --git a/vis4d/model/detect/yolox.py b/vis4d/model/detect/yolox.py index a6527e969..0bfd9f719 100644 --- a/vis4d/model/detect/yolox.py +++ b/vis4d/model/detect/yolox.py @@ -1,4 +1,5 @@ """YOLOX model implementation and runtime.""" + from __future__ import annotations import torch diff --git a/vis4d/model/detect3d/bevformer.py b/vis4d/model/detect3d/bevformer.py index 918bdd522..34f6d6621 100644 --- a/vis4d/model/detect3d/bevformer.py +++ b/vis4d/model/detect3d/bevformer.py @@ -3,6 +3,7 @@ This file composes the operations associated with BEVFormer `https://arxiv.org/abs/2203.17270` into the full model implementation. """ + from __future__ import annotations import copy diff --git a/vis4d/model/motion/velo_lstm.py b/vis4d/model/motion/velo_lstm.py index d5e42327f..7c08ae5e8 100644 --- a/vis4d/model/motion/velo_lstm.py +++ b/vis4d/model/motion/velo_lstm.py @@ -1,4 +1,5 @@ """VeloLSTM 3D motion model.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/model/seg/fcn_resnet.py b/vis4d/model/seg/fcn_resnet.py index bc71a7260..f5a7ff6e1 100644 --- a/vis4d/model/seg/fcn_resnet.py +++ b/vis4d/model/seg/fcn_resnet.py @@ -1,4 +1,5 @@ """FCN Resnet Implementation.""" + from __future__ import annotations import torch diff --git a/vis4d/model/seg/semantic_fpn.py b/vis4d/model/seg/semantic_fpn.py index 870519129..c9b4a8e44 100644 --- a/vis4d/model/seg/semantic_fpn.py +++ b/vis4d/model/seg/semantic_fpn.py @@ -1,4 +1,5 @@ """SemanticFPN Implementation.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/model/segment3d/pointnet.py b/vis4d/model/segment3d/pointnet.py index 84687918f..ff85d098c 100644 --- a/vis4d/model/segment3d/pointnet.py +++ b/vis4d/model/segment3d/pointnet.py @@ -1,4 +1,5 @@ """Implementation of Pointnet.""" + from __future__ import annotations import torch diff --git a/vis4d/model/segment3d/pointnetpp.py b/vis4d/model/segment3d/pointnetpp.py index 2971f49ac..46a35ba7f 100644 --- a/vis4d/model/segment3d/pointnetpp.py +++ b/vis4d/model/segment3d/pointnetpp.py @@ -1,4 +1,5 @@ """Pointnet++ Implementation.""" + from __future__ import annotations from typing import overload @@ -41,14 +42,12 @@ def __init__( load_model_checkpoint(self, weights) @overload - def forward(self, points3d: torch.Tensor) -> ModelOutput: - ... + def forward(self, points3d: torch.Tensor) -> ModelOutput: ... @overload def forward( self, points3d: torch.Tensor, semantics3d: torch.Tensor | None - ) -> PointNet2SegmentationOut: - ... + ) -> PointNet2SegmentationOut: ... def forward( self, points3d: torch.Tensor, semantics3d: torch.Tensor | None = None diff --git a/vis4d/model/track/qdtrack.py b/vis4d/model/track/qdtrack.py index 285d46a41..a89bbb103 100644 --- a/vis4d/model/track/qdtrack.py +++ b/vis4d/model/track/qdtrack.py @@ -1,4 +1,5 @@ """Quasi-dense instance similarity learning model.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/model/track/util.py b/vis4d/model/track/util.py index 914c26cc1..f32af99ed 100644 --- a/vis4d/model/track/util.py +++ b/vis4d/model/track/util.py @@ -1,4 +1,5 @@ """Utility functions for track module.""" + from __future__ import annotations diff --git a/vis4d/model/track3d/cc_3dt.py b/vis4d/model/track3d/cc_3dt.py index 6273c6e90..1cc5e2319 100644 --- a/vis4d/model/track3d/cc_3dt.py +++ b/vis4d/model/track3d/cc_3dt.py @@ -3,6 +3,7 @@ This file composes the operations associated with CC-3DT `https://arxiv.org/abs/2212.01247`_ into the full model implementation. """ + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/op/base/__init__.py b/vis4d/op/base/__init__.py index 188d192cf..ffa6ba27c 100644 --- a/vis4d/op/base/__init__.py +++ b/vis4d/op/base/__init__.py @@ -1,4 +1,5 @@ """Base model module.""" + from .base import BaseModel from .csp_darknet import CSPDarknet from .dla import DLA diff --git a/vis4d/op/base/base.py b/vis4d/op/base/base.py index 9ca208463..902226967 100644 --- a/vis4d/op/base/base.py +++ b/vis4d/op/base/base.py @@ -1,4 +1,5 @@ """Base model interface.""" + from __future__ import annotations import abc diff --git a/vis4d/op/base/csp_darknet.py b/vis4d/op/base/csp_darknet.py index ff12e3920..0ad36e368 100644 --- a/vis4d/op/base/csp_darknet.py +++ b/vis4d/op/base/csp_darknet.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import math diff --git a/vis4d/op/base/dla.py b/vis4d/op/base/dla.py index 0862c9227..31d734494 100644 --- a/vis4d/op/base/dla.py +++ b/vis4d/op/base/dla.py @@ -1,4 +1,5 @@ """DLA base model.""" + from __future__ import annotations import torch diff --git a/vis4d/op/base/pointnet.py b/vis4d/op/base/pointnet.py index a7481c521..9f0c72625 100644 --- a/vis4d/op/base/pointnet.py +++ b/vis4d/op/base/pointnet.py @@ -4,6 +4,7 @@ https://github.com/timothylimyl/PointNet-Pytorch/blob/master/pointnet/model.py and modified to allow for modular configuration. """ + from __future__ import annotations from collections.abc import Callable, Iterable diff --git a/vis4d/op/base/pointnetpp.py b/vis4d/op/base/pointnetpp.py index 12e844382..0cc40f280 100644 --- a/vis4d/op/base/pointnetpp.py +++ b/vis4d/op/base/pointnetpp.py @@ -5,6 +5,7 @@ #TODO write tests """ + from __future__ import annotations from collections.abc import Callable @@ -18,11 +19,11 @@ class PointNetSetAbstractionOut(NamedTuple): """Ouput of PointNet set abstraction.""" - coordinates: torch.Tensor # [B, C, S] - features: torch.Tensor # [B, D', S] + coordinates: Tensor # [B, C, S] + features: Tensor # [B, D', S] -def square_distance(src: torch.Tensor, dst: torch.Tensor) -> torch.Tensor: +def square_distance(src: Tensor, dst: Tensor) -> Tensor: """Calculate Euclid distance between each two points. src^T * dst = xn * xm + yn * ym + zn * zm; @@ -43,10 +44,10 @@ def square_distance(src: torch.Tensor, dst: torch.Tensor) -> torch.Tensor: dist = -2 * torch.matmul(src, dst.permute(0, 2, 1)) dist += torch.sum(src**2, -1).view(bs, n_pts_in, 1) dist += torch.sum(dst**2, -1).view(bs, 1, n_pts_out) - return dist # type: ignore + return dist -def index_points(points: torch.Tensor, idx: torch.Tensor) -> torch.Tensor: +def index_points(points: Tensor, idx: Tensor) -> Tensor: """Indexes points. Input: @@ -72,7 +73,7 @@ def index_points(points: torch.Tensor, idx: torch.Tensor) -> torch.Tensor: return new_points -def farthest_point_sample(xyz: torch.Tensor, npoint: int) -> torch.Tensor: +def farthest_point_sample(xyz: Tensor, npoint: int) -> Tensor: """Farthest point sampling. Input: @@ -99,8 +100,8 @@ def farthest_point_sample(xyz: torch.Tensor, npoint: int) -> torch.Tensor: def query_ball_point( - radius: float, nsample: int, xyz: torch.Tensor, new_xyz: torch.Tensor -) -> torch.Tensor: + radius: float, nsample: int, xyz: Tensor, new_xyz: Tensor +) -> Tensor: """Query around a ball with given radius. Input: @@ -136,9 +137,9 @@ def sample_and_group( npoint: int, radius: float, nsample: int, - xyz: torch.Tensor, - points: torch.Tensor, -) -> tuple[torch.Tensor, torch.Tensor]: + xyz: Tensor, + points: Tensor, +) -> tuple[Tensor, Tensor]: """Samples and groups. Input: @@ -169,9 +170,7 @@ def sample_and_group( return new_xyz, new_points -def sample_and_group_all( - xyz: torch.Tensor, points: torch.Tensor -) -> tuple[torch.Tensor, torch.Tensor]: +def sample_and_group_all(xyz: Tensor, points: Tensor) -> tuple[Tensor, Tensor]: """Sample and groups all. Input: @@ -242,7 +241,7 @@ def __init__( self.group_all = group_all def __call__( - self, coordinates: torch.Tensor, features: torch.Tensor + self, coordinates: Tensor, features: Tensor ) -> PointNetSetAbstractionOut: """Call function. @@ -258,7 +257,7 @@ def __call__( return self._call_impl(coordinates, features) def forward( - self, xyz: torch.Tensor, points: torch.Tensor + self, xyz: Tensor, points: Tensor ) -> PointNetSetAbstractionOut: """Pointnet++ set abstraction layer forward. @@ -326,11 +325,11 @@ def __init__( def __call__( self, - xyz1: torch.Tensor, - xyz2: torch.Tensor, - points1: torch.Tensor | None, - points2: torch.Tensor, - ) -> torch.Tensor: + xyz1: Tensor, + xyz2: Tensor, + points1: Tensor | None, + points2: Tensor, + ) -> Tensor: """Call function. Input: @@ -346,11 +345,11 @@ def __call__( def forward( self, - xyz1: torch.Tensor, - xyz2: torch.Tensor, - points1: torch.Tensor | None, - points2: torch.Tensor, - ) -> torch.Tensor: + xyz1: Tensor, + xyz2: Tensor, + points1: Tensor | None, + points2: Tensor, + ) -> Tensor: """Forward Implementation. Input: @@ -376,7 +375,7 @@ def forward( dists, idx = dists.sort(dim=-1) dists, idx = dists[:, :, :3], idx[:, :, :3] # [B, N, 3] - dist_recip: Tensor = 1.0 / (dists + 1e-8) # type: ignore + dist_recip: Tensor = 1.0 / (dists + 1e-8) norm = torch.sum(dist_recip, dim=2, keepdim=True) weight = dist_recip / norm interpolated_points = torch.sum( @@ -386,9 +385,7 @@ def forward( if points1 is not None: points1 = points1.permute(0, 2, 1) - new_points = torch.cat( - [points1, interpolated_points], dim=-1 # type: ignore - ) + new_points = torch.cat([points1, interpolated_points], dim=-1) else: new_points = interpolated_points @@ -402,7 +399,7 @@ def forward( class PointNet2SegmentationOut(NamedTuple): """Prediction for the pointnet++ semantic segmentation network.""" - class_logits: torch.Tensor + class_logits: Tensor class PointNet2Segmentation(nn.Module): # TODO, probably move to module? @@ -444,7 +441,7 @@ def __init__(self, num_classes: int, in_channels: int = 3): self.conv2 = nn.Conv1d(128, num_classes, 1) self.in_channels = in_channels - def __call__(self, xyz: torch.Tensor) -> PointNet2SegmentationOut: + def __call__(self, xyz: Tensor) -> PointNet2SegmentationOut: """Call implementation. Args: @@ -455,7 +452,7 @@ def __call__(self, xyz: torch.Tensor) -> PointNet2SegmentationOut: """ return self._call_impl(xyz) - def forward(self, xyz: torch.Tensor) -> PointNet2SegmentationOut: + def forward(self, xyz: Tensor) -> PointNet2SegmentationOut: """Predicts the semantic class logits for each point. Args: diff --git a/vis4d/op/base/resnet.py b/vis4d/op/base/resnet.py index 6b503b114..84e51aa2b 100644 --- a/vis4d/op/base/resnet.py +++ b/vis4d/op/base/resnet.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations from collections.abc import Callable, Sequence diff --git a/vis4d/op/base/unet.py b/vis4d/op/base/unet.py index 3470c75d1..6bfbf4d18 100644 --- a/vis4d/op/base/unet.py +++ b/vis4d/op/base/unet.py @@ -3,6 +3,7 @@ Code taken from https://github.com/jaxony/unet-pytorch/blob/master/model.py and modified to include typing and custom ops. """ + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/base/vgg.py b/vis4d/op/base/vgg.py index 54089780e..a887ea03b 100644 --- a/vis4d/op/base/vgg.py +++ b/vis4d/op/base/vgg.py @@ -1,4 +1,5 @@ """Residual networks for classification.""" + from __future__ import annotations import torch diff --git a/vis4d/op/base/vit.py b/vis4d/op/base/vit.py index e13de8c4f..fdbdbd059 100644 --- a/vis4d/op/base/vit.py +++ b/vis4d/op/base/vit.py @@ -1,4 +1,5 @@ """Residual networks for classification.""" + from __future__ import annotations import torch @@ -150,9 +151,9 @@ def __init__( """ super().__init__() self.num_classes = num_classes - self.num_features = ( - self.embed_dim - ) = embed_dim # num_features for consistency with other models + self.num_features = self.embed_dim = ( + embed_dim # num_features for consistency with other models + ) self.num_depth = depth self.num_prefix_tokens = 1 if class_token else 0 self.no_embed_class = no_embed_class diff --git a/vis4d/op/box/anchor/__init__.py b/vis4d/op/box/anchor/__init__.py index eccf3b808..95be90d58 100644 --- a/vis4d/op/box/anchor/__init__.py +++ b/vis4d/op/box/anchor/__init__.py @@ -1,4 +1,5 @@ """Anchor and point generators.""" + from .anchor_generator import AnchorGenerator, anchor_inside_image from .point_generator import MlvlPointGenerator diff --git a/vis4d/op/box/anchor/anchor_generator.py b/vis4d/op/box/anchor/anchor_generator.py index 510c78d17..2a4efc383 100644 --- a/vis4d/op/box/anchor/anchor_generator.py +++ b/vis4d/op/box/anchor/anchor_generator.py @@ -3,6 +3,7 @@ Modified from: https://github.com/open-mmlab/mmdetection/blob/master/mmdet/core/anchor/anchor_generator.py """ + from __future__ import annotations import numpy as np diff --git a/vis4d/op/box/anchor/point_generator.py b/vis4d/op/box/anchor/point_generator.py index bcb63d1ac..c1bb10059 100644 --- a/vis4d/op/box/anchor/point_generator.py +++ b/vis4d/op/box/anchor/point_generator.py @@ -3,6 +3,7 @@ Modified from: https://github.com/open-mmlab/mmdetection/blob/master/mmdet/core/anchor/point_generator.py """ + from __future__ import annotations import numpy as np diff --git a/vis4d/op/box/anchor/util.py b/vis4d/op/box/anchor/util.py index 28014ca52..fa314c86a 100644 --- a/vis4d/op/box/anchor/util.py +++ b/vis4d/op/box/anchor/util.py @@ -1,4 +1,5 @@ """Anchor utils.""" + from __future__ import annotations from torch import Tensor diff --git a/vis4d/op/box/box2d.py b/vis4d/op/box/box2d.py index 484ae92a2..c1aeb344f 100644 --- a/vis4d/op/box/box2d.py +++ b/vis4d/op/box/box2d.py @@ -1,4 +1,5 @@ """Utility functions for bounding boxes.""" + from __future__ import annotations import torch @@ -74,7 +75,6 @@ def scale_and_clip_boxes( return boxes -@torch.jit.script def bbox_area(boxes: torch.Tensor) -> torch.Tensor: """Compute bounding box areas. @@ -90,7 +90,6 @@ def bbox_area(boxes: torch.Tensor) -> torch.Tensor: ).clamp(0) -@torch.jit.script def bbox_intersection(boxes1: Tensor, boxes2: Tensor) -> torch.Tensor: """Given two lists of boxes of size N and M, compute N x M intersection. @@ -109,7 +108,6 @@ def bbox_intersection(boxes1: Tensor, boxes2: Tensor) -> torch.Tensor: return intersection -@torch.jit.script def bbox_iou(boxes1: torch.Tensor, boxes2: torch.Tensor) -> torch.Tensor: """Compute IoU between all pairs of boxes. @@ -140,7 +138,6 @@ def bbox_iou(boxes1: torch.Tensor, boxes2: torch.Tensor) -> torch.Tensor: return iou -@torch.jit.script def bbox_intersection_aligned(boxes1: Tensor, boxes2: Tensor) -> torch.Tensor: """Given two lists of boxes both of size N, compute N intersection. @@ -159,7 +156,6 @@ def bbox_intersection_aligned(boxes1: Tensor, boxes2: Tensor) -> torch.Tensor: return intersection -@torch.jit.script def bbox_iou_aligned( boxes1: torch.Tensor, boxes2: torch.Tensor ) -> torch.Tensor: diff --git a/vis4d/op/box/box3d.py b/vis4d/op/box/box3d.py index e21173a35..756d21727 100644 --- a/vis4d/op/box/box3d.py +++ b/vis4d/op/box/box3d.py @@ -1,4 +1,5 @@ """Utility functions for 3D bounding boxes.""" + from __future__ import annotations import torch diff --git a/vis4d/op/box/encoder/__init__.py b/vis4d/op/box/encoder/__init__.py index 41dee0923..76cb645aa 100644 --- a/vis4d/op/box/encoder/__init__.py +++ b/vis4d/op/box/encoder/__init__.py @@ -1,4 +1,5 @@ """Init box coder module.""" + from .delta_xywh import DeltaXYWHBBoxDecoder, DeltaXYWHBBoxEncoder from .qd_3dt import QD3DTBox3DDecoder from .yolox import YOLOXBBoxDecoder diff --git a/vis4d/op/box/encoder/bevformer.py b/vis4d/op/box/encoder/bevformer.py index 4965f4dbf..699175736 100644 --- a/vis4d/op/box/encoder/bevformer.py +++ b/vis4d/op/box/encoder/bevformer.py @@ -1,4 +1,5 @@ """NMS-Free bounding box coder for BEVFormer.""" + from __future__ import annotations import torch diff --git a/vis4d/op/box/encoder/delta_xywh.py b/vis4d/op/box/encoder/delta_xywh.py index 65cf90d5a..659446200 100644 --- a/vis4d/op/box/encoder/delta_xywh.py +++ b/vis4d/op/box/encoder/delta_xywh.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import math @@ -99,7 +100,6 @@ def __call__(self, boxes: Tensor, box_deltas: Tensor) -> Tensor: return decoded_boxes -@torch.jit.script def bbox2delta( proposals: torch.Tensor, gt_boxes: torch.Tensor, @@ -150,7 +150,6 @@ def bbox2delta( return deltas -@torch.jit.script def delta2bbox( rois: torch.Tensor, deltas: torch.Tensor, diff --git a/vis4d/op/box/encoder/qd_3dt.py b/vis4d/op/box/encoder/qd_3dt.py index 34a0b4db7..7258f10b9 100644 --- a/vis4d/op/box/encoder/qd_3dt.py +++ b/vis4d/op/box/encoder/qd_3dt.py @@ -1,4 +1,5 @@ """3D bounding box coder.""" + from __future__ import annotations import numpy as np @@ -81,7 +82,7 @@ def __call__( 2 * np.pi / self.num_rotation_bins, device=alpha.device, ) - bin_centers += np.pi / self.num_rotation_bins # type: ignore + bin_centers += np.pi / self.num_rotation_bins for i in range(alpha.shape[0]): overlap_value = ( np.pi * 2 / self.num_rotation_bins * self.bin_overlap diff --git a/vis4d/op/box/encoder/yolox.py b/vis4d/op/box/encoder/yolox.py index d159e5135..b9c7dbd7c 100644 --- a/vis4d/op/box/encoder/yolox.py +++ b/vis4d/op/box/encoder/yolox.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import torch diff --git a/vis4d/op/box/matchers/__init__.py b/vis4d/op/box/matchers/__init__.py index c362c0aaa..ef1dd157c 100644 --- a/vis4d/op/box/matchers/__init__.py +++ b/vis4d/op/box/matchers/__init__.py @@ -1,4 +1,5 @@ """Matchers package.""" + from .base import Matcher, MatchResult from .max_iou import MaxIoUMatcher from .sim_ota import SimOTAMatcher diff --git a/vis4d/op/box/matchers/base.py b/vis4d/op/box/matchers/base.py index b9919fdf1..52a6b2773 100644 --- a/vis4d/op/box/matchers/base.py +++ b/vis4d/op/box/matchers/base.py @@ -1,4 +1,5 @@ """Matchers.""" + import abc from typing import NamedTuple diff --git a/vis4d/op/box/matchers/max_iou.py b/vis4d/op/box/matchers/max_iou.py index 41deb40a9..506098db3 100644 --- a/vis4d/op/box/matchers/max_iou.py +++ b/vis4d/op/box/matchers/max_iou.py @@ -1,4 +1,5 @@ """Match predictions and targets according to maximum 2D IoU.""" + from __future__ import annotations import torch diff --git a/vis4d/op/box/matchers/sim_ota.py b/vis4d/op/box/matchers/sim_ota.py index cd1036d97..d940ce12c 100644 --- a/vis4d/op/box/matchers/sim_ota.py +++ b/vis4d/op/box/matchers/sim_ota.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import torch @@ -115,7 +116,7 @@ def forward( # pylint: disable=arguments-differ # type: ignore[override] valid_pred_scores = valid_pred_scores.unsqueeze(1).repeat(1, num_gt, 1) # disable AMP autocast and calculate BCE with FP32 to avoid overflow - with torch.cuda.amp.autocast(enabled=False): # type: ignore[attr-defined] # pylint: disable=line-too-long + with torch.cuda.amp.autocast(enabled=False): cls_cost = ( F.binary_cross_entropy( valid_pred_scores.to(dtype=torch.float32), @@ -215,7 +216,7 @@ def dynamic_k_matching( for gt_idx in range(num_gt): _, pos_idx = torch.topk( cost[:, gt_idx], - k=dynamic_ks[gt_idx].item(), + k=dynamic_ks[gt_idx].item(), # type: ignore largest=False, ) matching_matrix[:, gt_idx][pos_idx] = 1 diff --git a/vis4d/op/box/poolers/__init__.py b/vis4d/op/box/poolers/__init__.py index ddad9d2d1..d6458ee94 100644 --- a/vis4d/op/box/poolers/__init__.py +++ b/vis4d/op/box/poolers/__init__.py @@ -1,4 +1,5 @@ """Init sampler module.""" + from .base import RoIPooler from .roi_pooler import MultiScaleRoIAlign, MultiScaleRoIPool diff --git a/vis4d/op/box/poolers/base.py b/vis4d/op/box/poolers/base.py index 99ec94283..55cc64ed8 100644 --- a/vis4d/op/box/poolers/base.py +++ b/vis4d/op/box/poolers/base.py @@ -1,4 +1,5 @@ """RoI Pooling module base.""" + from __future__ import annotations import abc diff --git a/vis4d/op/box/poolers/roi_pooler.py b/vis4d/op/box/poolers/roi_pooler.py index 7a28fd9be..be459f13a 100644 --- a/vis4d/op/box/poolers/roi_pooler.py +++ b/vis4d/op/box/poolers/roi_pooler.py @@ -1,4 +1,5 @@ """Vis4D RoI Pooling module.""" + from __future__ import annotations import abc diff --git a/vis4d/op/box/poolers/utils.py b/vis4d/op/box/poolers/utils.py index deacc99a7..9dcb5f749 100644 --- a/vis4d/op/box/poolers/utils.py +++ b/vis4d/op/box/poolers/utils.py @@ -1,4 +1,5 @@ """Utility functions for RoI poolers.""" + from __future__ import annotations import torch @@ -34,7 +35,7 @@ def assign_boxes_to_levels( ) # Eqn.(1) in FPN paper level_assignments = torch.floor( - canonical_level + torch.log2(box_sizes / canonical_box_size + 1e-8) # type: ignore # pylint: disable=line-too-long + canonical_level + torch.log2(box_sizes / canonical_box_size + 1e-8) ) # clamp level to (min, max), in case the box size is too large or too small # for the available feature maps diff --git a/vis4d/op/box/samplers/__init__.py b/vis4d/op/box/samplers/__init__.py index 7a5d014b1..716b8f076 100644 --- a/vis4d/op/box/samplers/__init__.py +++ b/vis4d/op/box/samplers/__init__.py @@ -1,4 +1,5 @@ """Init sampler module.""" + from .base import Sampler, SamplingResult, match_and_sample_proposals from .combined import CombinedSampler from .pseudo import PseudoSampler diff --git a/vis4d/op/box/samplers/base.py b/vis4d/op/box/samplers/base.py index 3804c1e66..2e41b14eb 100644 --- a/vis4d/op/box/samplers/base.py +++ b/vis4d/op/box/samplers/base.py @@ -1,4 +1,5 @@ """Interface for Vis4D bounding box samplers.""" + from __future__ import annotations import abc diff --git a/vis4d/op/box/samplers/combined.py b/vis4d/op/box/samplers/combined.py index eb8704e86..e94ea0076 100644 --- a/vis4d/op/box/samplers/combined.py +++ b/vis4d/op/box/samplers/combined.py @@ -1,4 +1,5 @@ """Combined Sampler.""" + from __future__ import annotations import torch @@ -135,9 +136,9 @@ def forward(self, matching: MatchResult) -> SamplingResult: """Sample boxes according to strategies defined in cfg.""" pos_sample_size = int(self.batch_size * self.positive_fraction) - positive_mask: Tensor = ( # type:ignore - matching.assigned_labels != -1 - ) & (matching.assigned_labels != self.bg_label) + positive_mask: Tensor = (matching.assigned_labels != -1) & ( + matching.assigned_labels != self.bg_label + ) negative_mask = torch.eq(matching.assigned_labels, self.bg_label) positive = positive_mask.nonzero()[:, 0] diff --git a/vis4d/op/box/samplers/pseudo.py b/vis4d/op/box/samplers/pseudo.py index d45973678..e6e22431c 100644 --- a/vis4d/op/box/samplers/pseudo.py +++ b/vis4d/op/box/samplers/pseudo.py @@ -1,4 +1,5 @@ """Pseudo Sampler.""" + from __future__ import annotations import torch @@ -29,6 +30,6 @@ def _sample_labels( labels: torch.Tensor, ) -> tuple[torch.Tensor, torch.Tensor]: """Randomly sample indices from given labels.""" - positive = ((labels != -1) & (labels != 0)).nonzero()[:, 0] # type: ignore # pylint: disable=line-too-long + positive = ((labels != -1) & (labels != 0)).nonzero()[:, 0] negative = torch.eq(labels, 0).nonzero()[:, 0] return positive, negative diff --git a/vis4d/op/box/samplers/random.py b/vis4d/op/box/samplers/random.py index f17b58e29..6e181def5 100644 --- a/vis4d/op/box/samplers/random.py +++ b/vis4d/op/box/samplers/random.py @@ -1,4 +1,5 @@ """Random Sampler.""" + from __future__ import annotations import torch @@ -39,7 +40,7 @@ def _sample_labels( self, labels: torch.Tensor ) -> tuple[torch.Tensor, torch.Tensor]: """Randomly sample indices from given labels.""" - positive = ((labels != -1) & (labels != self.bg_label)).nonzero()[:, 0] # type: ignore # pylint: disable=line-too-long + positive = ((labels != -1) & (labels != self.bg_label)).nonzero()[:, 0] negative = torch.eq(labels, self.bg_label).nonzero()[:, 0] num_pos = int(self.batch_size * self.positive_fraction) diff --git a/vis4d/op/detect/common.py b/vis4d/op/detect/common.py index eb25a486b..377366c12 100644 --- a/vis4d/op/detect/common.py +++ b/vis4d/op/detect/common.py @@ -1,4 +1,5 @@ """Common classes and functions for detection.""" + from typing import NamedTuple from torch import Tensor diff --git a/vis4d/op/detect/dense_anchor.py b/vis4d/op/detect/dense_anchor.py index 9eef1072c..14f8a20d8 100644 --- a/vis4d/op/detect/dense_anchor.py +++ b/vis4d/op/detect/dense_anchor.py @@ -1,4 +1,5 @@ """Dense anchor-based head.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/detect/faster_rcnn.py b/vis4d/op/detect/faster_rcnn.py index c3dc58c35..f69a7dd5c 100644 --- a/vis4d/op/detect/faster_rcnn.py +++ b/vis4d/op/detect/faster_rcnn.py @@ -1,4 +1,5 @@ """Faster RCNN detector.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/detect/mask_rcnn.py b/vis4d/op/detect/mask_rcnn.py index 1efc13abb..924961a29 100644 --- a/vis4d/op/detect/mask_rcnn.py +++ b/vis4d/op/detect/mask_rcnn.py @@ -1,4 +1,5 @@ """Mask RCNN detector.""" + from __future__ import annotations from typing import NamedTuple, Protocol diff --git a/vis4d/op/detect/rcnn.py b/vis4d/op/detect/rcnn.py index 37ab5251e..d1d0b087b 100644 --- a/vis4d/op/detect/rcnn.py +++ b/vis4d/op/detect/rcnn.py @@ -1,4 +1,5 @@ """Faster R-CNN RoI head.""" + from __future__ import annotations from math import prod diff --git a/vis4d/op/detect/retinanet.py b/vis4d/op/detect/retinanet.py index 27eeb6312..28e847c56 100644 --- a/vis4d/op/detect/retinanet.py +++ b/vis4d/op/detect/retinanet.py @@ -1,4 +1,5 @@ """RetinaNet.""" + from __future__ import annotations from math import prod @@ -311,7 +312,9 @@ def forward( # since feature map sizes of all images are the same, we only compute # anchors for one time device = cls_outs[0].device - featmap_sizes = [featmap.size()[-2:] for featmap in cls_outs] + featmap_sizes: list[tuple[int, int]] = [ + featmap.size()[-2:] for featmap in cls_outs # type: ignore + ] assert len(featmap_sizes) == self.anchor_generator.num_levels anchor_grids = self.anchor_generator.grid_priors( featmap_sizes, device=device diff --git a/vis4d/op/detect/rpn.py b/vis4d/op/detect/rpn.py index cad86e8cb..ab81fb388 100644 --- a/vis4d/op/detect/rpn.py +++ b/vis4d/op/detect/rpn.py @@ -1,4 +1,5 @@ """Faster RCNN RPN Head.""" + from __future__ import annotations from math import prod @@ -301,7 +302,9 @@ def forward( # since feature map sizes of all images are the same, we only compute # anchors for one time device = class_outs[0].device - featmap_sizes = [featmap.size()[-2:] for featmap in class_outs] + featmap_sizes: list[tuple[int, int]] = [ + featmap.size()[-2:] for featmap in class_outs # type: ignore + ] assert len(featmap_sizes) == self.anchor_generator.num_levels anchor_grids = self.anchor_generator.grid_priors( featmap_sizes, device=device diff --git a/vis4d/op/detect/yolox.py b/vis4d/op/detect/yolox.py index 7e82ccb92..e70ebcc84 100644 --- a/vis4d/op/detect/yolox.py +++ b/vis4d/op/detect/yolox.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import math @@ -245,7 +246,7 @@ def bboxes_nms( max_scores, labels = torch.max(cls_scores, 1) valid_mask = objectness * max_scores >= score_thr valid_idxs = valid_mask.nonzero()[:, 0] - num_topk = min(nms_pre, valid_mask.sum()) + num_topk = min(nms_pre, valid_mask.sum()) # type: ignore scores, idxs = (max_scores[valid_mask] * objectness[valid_mask]).sort( descending=True @@ -287,7 +288,7 @@ def preprocess_outputs( num_imgs = len(images_hw) num_classes = cls_outs[0].shape[1] featmap_sizes: list[tuple[int, int]] = [ - tuple(featmap.size()[-2:]) for featmap in cls_outs + tuple(featmap.size()[-2:]) for featmap in cls_outs # type: ignore ] assert len(featmap_sizes) == point_generator.num_levels mlvl_points = point_generator.grid_priors( diff --git a/vis4d/op/detect3d/bevformer/__init__.py b/vis4d/op/detect3d/bevformer/__init__.py index d0e7322b0..efdc35605 100644 --- a/vis4d/op/detect3d/bevformer/__init__.py +++ b/vis4d/op/detect3d/bevformer/__init__.py @@ -1,4 +1,5 @@ """BEVFormer ops.""" + from .bevformer import BEVFormerHead from .grid_mask import GridMask diff --git a/vis4d/op/detect3d/bevformer/bevformer.py b/vis4d/op/detect3d/bevformer/bevformer.py index ced112e74..8b96b4dbc 100644 --- a/vis4d/op/detect3d/bevformer/bevformer.py +++ b/vis4d/op/detect3d/bevformer/bevformer.py @@ -1,4 +1,5 @@ """BEVFormer head.""" + from __future__ import annotations from collections.abc import Sequence diff --git a/vis4d/op/detect3d/bevformer/decoder.py b/vis4d/op/detect3d/bevformer/decoder.py index 149c3d591..178521109 100644 --- a/vis4d/op/detect3d/bevformer/decoder.py +++ b/vis4d/op/detect3d/bevformer/decoder.py @@ -1,4 +1,5 @@ """BEVFormer decoder.""" + from __future__ import annotations import math diff --git a/vis4d/op/detect3d/bevformer/encoder.py b/vis4d/op/detect3d/bevformer/encoder.py index ce936f9f2..c0732130f 100644 --- a/vis4d/op/detect3d/bevformer/encoder.py +++ b/vis4d/op/detect3d/bevformer/encoder.py @@ -1,4 +1,5 @@ """BEVFormer Encoder.""" + from __future__ import annotations from collections.abc import Sequence @@ -302,9 +303,9 @@ def forward( batch_size, len_bev, num_bev_level, _ = ref_2d.shape if prev_bev is not None: prev_bev = prev_bev.permute(1, 0, 2) - prev_bev = torch.stack( - [prev_bev, bev_query], 1 # type: ignore - ).reshape(batch_size * 2, len_bev, -1) + prev_bev = torch.stack([prev_bev, bev_query], 1).reshape( + batch_size * 2, len_bev, -1 + ) hybird_ref_2d = torch.stack([shift_ref_2d, ref_2d], 1).reshape( batch_size * 2, len_bev, num_bev_level, 2 ) diff --git a/vis4d/op/detect3d/bevformer/grid_mask.py b/vis4d/op/detect3d/bevformer/grid_mask.py index 354dcf499..01efd8d91 100644 --- a/vis4d/op/detect3d/bevformer/grid_mask.py +++ b/vis4d/op/detect3d/bevformer/grid_mask.py @@ -1,4 +1,5 @@ """Grid mask for BEVFormer.""" + import numpy as np import torch from PIL import Image diff --git a/vis4d/op/detect3d/bevformer/spatial_cross_attention.py b/vis4d/op/detect3d/bevformer/spatial_cross_attention.py index a44a9d40c..3eb7fde02 100644 --- a/vis4d/op/detect3d/bevformer/spatial_cross_attention.py +++ b/vis4d/op/detect3d/bevformer/spatial_cross_attention.py @@ -1,4 +1,5 @@ """Spatial Cross Attention Module for BEVFormer.""" + from __future__ import annotations import math @@ -120,9 +121,9 @@ def forward( queries_rebatch[j, i, : len(index_query_per_img)] = query[ j, index_query_per_img ] - reference_points_rebatch[ - j, i, : len(index_query_per_img) - ] = _reference_points[j, index_query_per_img] + reference_points_rebatch[j, i, : len(index_query_per_img)] = ( + _reference_points[j, index_query_per_img] + ) _, l, bs, _ = value.shape diff --git a/vis4d/op/detect3d/bevformer/temporal_self_attention.py b/vis4d/op/detect3d/bevformer/temporal_self_attention.py index 2012d4d34..00fafdead 100644 --- a/vis4d/op/detect3d/bevformer/temporal_self_attention.py +++ b/vis4d/op/detect3d/bevformer/temporal_self_attention.py @@ -1,4 +1,5 @@ """An attention module used in BEVFormer based on Deformable-Detr.""" + from __future__ import annotations import math @@ -155,18 +156,18 @@ def forward( value = value.permute(1, 0, 2) bs, num_query, embed_dims = query.shape - _, num_value, _ = value.shape # type: ignore + _, num_value, _ = value.shape assert (spatial_shapes[:, 0] * spatial_shapes[:, 1]).sum() == num_value assert self.num_bev_queue == 2 - query = torch.cat([value[:bs], query], -1) # type: ignore + query = torch.cat([value[:bs], query], -1) value = self.value_proj(value) assert isinstance(value, Tensor) if key_padding_mask is not None: value = value.masked_fill(key_padding_mask[..., None], 0.0) - value = value.reshape( # type: ignore + value = value.reshape( bs * self.num_bev_queue, num_value, self.num_heads, -1 ) @@ -245,7 +246,7 @@ def forward( f" 2 or 4, but get {reference_points.shape[-1]} instead." ) - if torch.cuda.is_available() and value.is_cuda: # type: ignore + if torch.cuda.is_available() and value.is_cuda: output = MSDeformAttentionFunction.apply( value, spatial_shapes, @@ -256,7 +257,7 @@ def forward( ) else: output = ms_deformable_attention_cpu( - value, # type: ignore + value, spatial_shapes, sampling_locations, attention_weights, diff --git a/vis4d/op/detect3d/bevformer/transformer.py b/vis4d/op/detect3d/bevformer/transformer.py index b007d35ac..489c713f3 100644 --- a/vis4d/op/detect3d/bevformer/transformer.py +++ b/vis4d/op/detect3d/bevformer/transformer.py @@ -1,4 +1,5 @@ """BEVFormer transformer.""" + from __future__ import annotations import numpy as np @@ -119,9 +120,7 @@ def get_bev_features( for i in range(batch_size): rotation_angle = float(can_bus[i][-1]) tmp_prev_bev = ( - prev_bev[:, i] # type: ignore - .reshape(bev_h, bev_w, -1) - .permute(2, 0, 1) + prev_bev[:, i].reshape(bev_h, bev_w, -1).permute(2, 0, 1) ) tmp_prev_bev = rotate( tmp_prev_bev, rotation_angle, center=self.rotate_center @@ -129,7 +128,7 @@ def get_bev_features( tmp_prev_bev = tmp_prev_bev.permute(1, 2, 0).reshape( bev_h * bev_w, 1, -1 ) - prev_bev[:, i] = tmp_prev_bev[:, 0] # type: ignore + prev_bev[:, i] = tmp_prev_bev[:, 0] # add can bus signals bev_queries = bev_queries + self.can_bus_mlp(can_bus)[None, :, :] diff --git a/vis4d/op/detect3d/common.py b/vis4d/op/detect3d/common.py index 664ea64a1..33003af71 100644 --- a/vis4d/op/detect3d/common.py +++ b/vis4d/op/detect3d/common.py @@ -1,4 +1,5 @@ """Common classes and functions for 3D detection.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/detect3d/qd_3dt.py b/vis4d/op/detect3d/qd_3dt.py index d907d51ec..99a7e704e 100644 --- a/vis4d/op/detect3d/qd_3dt.py +++ b/vis4d/op/detect3d/qd_3dt.py @@ -1,4 +1,5 @@ """QD-3DT detector.""" + from __future__ import annotations from typing import NamedTuple @@ -676,7 +677,7 @@ def forward( pos_depth_self_labels = torch.exp( -torch.mul(torch.abs(pred[:, 2] - target[:, 2]), 5.0) ) - pos_depth_self_weights = torch.where( # type: ignore + pos_depth_self_weights = torch.where( pos_depth_self_labels > 0.8, pos_depth_self_labels.new_ones(1) * 5.0, pos_depth_self_labels.new_ones(1) * 0.1, diff --git a/vis4d/op/detect3d/util.py b/vis4d/op/detect3d/util.py index dbe2c85c0..d24e49d3a 100644 --- a/vis4d/op/detect3d/util.py +++ b/vis4d/op/detect3d/util.py @@ -1,4 +1,5 @@ """Utilitiy functions for detection 3D ops.""" + from __future__ import annotations import torch @@ -51,7 +52,6 @@ def bev_3d_nms( ) -@torch.jit.script_if_tracing # type: ignore def batched_nms_rotated( boxes: Tensor, scores: Tensor, diff --git a/vis4d/op/fpp/__init__.py b/vis4d/op/fpp/__init__.py index 06e2605f0..eb06dca6c 100644 --- a/vis4d/op/fpp/__init__.py +++ b/vis4d/op/fpp/__init__.py @@ -3,6 +3,7 @@ Feature pyramid processing is usually used for augmenting the existing feature maps and/or upsampling the feature maps. """ + from .base import FeaturePyramidProcessing from .dla_up import DLAUp from .fpn import FPN diff --git a/vis4d/op/fpp/base.py b/vis4d/op/fpp/base.py index 261ede50e..76d998ea3 100644 --- a/vis4d/op/fpp/base.py +++ b/vis4d/op/fpp/base.py @@ -1,4 +1,5 @@ """Feature pyramid processing base class.""" + from __future__ import annotations import abc diff --git a/vis4d/op/fpp/dla_up.py b/vis4d/op/fpp/dla_up.py index 8e13b9268..bf66bfff5 100644 --- a/vis4d/op/fpp/dla_up.py +++ b/vis4d/op/fpp/dla_up.py @@ -2,6 +2,7 @@ TODO(fyu) need clean up and update to the latest interface. """ + from __future__ import annotations import math diff --git a/vis4d/op/fpp/fpn.py b/vis4d/op/fpp/fpn.py index 23e7e32ec..a2856e116 100644 --- a/vis4d/op/fpp/fpn.py +++ b/vis4d/op/fpp/fpn.py @@ -3,6 +3,7 @@ This is based on `"Feature Pyramid Network for Object Detection" `_. """ + from __future__ import annotations from collections import OrderedDict diff --git a/vis4d/op/fpp/yolox_pafpn.py b/vis4d/op/fpp/yolox_pafpn.py index 59309a474..eca8fb341 100644 --- a/vis4d/op/fpp/yolox_pafpn.py +++ b/vis4d/op/fpp/yolox_pafpn.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import math diff --git a/vis4d/op/geometry/projection.py b/vis4d/op/geometry/projection.py index ff9edf049..ab2c352dd 100644 --- a/vis4d/op/geometry/projection.py +++ b/vis4d/op/geometry/projection.py @@ -1,4 +1,5 @@ """Projection utilities.""" + from __future__ import annotations import torch diff --git a/vis4d/op/geometry/rotation.py b/vis4d/op/geometry/rotation.py index ee6a56e97..075545147 100644 --- a/vis4d/op/geometry/rotation.py +++ b/vis4d/op/geometry/rotation.py @@ -1,4 +1,5 @@ """Rotation utilities.""" + import functools import torch @@ -25,18 +26,18 @@ def acute_angle(theta_1: Tensor, theta_2: Tensor) -> Tensor: """Update theta_1 to mkae the agnle between two thetas is acute.""" # Make sure the angle between two thetas is acute if torch.pi / 2.0 < abs(theta_2 - theta_1) < torch.pi * 3 / 2.0: - theta_1 += torch.pi # type: ignore + theta_1 += torch.pi if theta_1 > torch.pi: - theta_1 -= torch.pi * 2 # type: ignore + theta_1 -= torch.pi * 2 if theta_1 < -torch.pi: - theta_1 += torch.pi * 2 # type: ignore + theta_1 += torch.pi * 2 # Convert the case of > 270 to < 90 if abs(theta_2 - theta_1) >= torch.pi * 3 / 2.0: if theta_2 > 0: - theta_1 += torch.pi * 2 # type: ignore + theta_1 += torch.pi * 2 else: - theta_1 -= torch.pi * 2 # type: ignore + theta_1 -= torch.pi * 2 return theta_1 @@ -88,7 +89,7 @@ def rotation_output_to_alpha(output: Tensor, num_bins: int = 2) -> Tensor: bin_centers = torch.arange( -torch.pi, torch.pi, 2 * torch.pi / num_bins, device=output.device ) - bin_centers += torch.pi / num_bins # type: ignore + bin_centers += torch.pi / num_bins alpha = ( torch.atan(output[out_range, res_idx] / output[out_range, res_idx + 1]) + bin_centers[bin_idx] @@ -354,7 +355,7 @@ def matrix_to_quaternion(matrix: Tensor) -> Tensor: q_abs = _sqrt_positive_part( torch.stack( [ - 1.0 + m00 + m11 + m22, # type: ignore + 1.0 + m00 + m11 + m22, 1.0 + m00 - m11 - m22, 1.0 - m00 + m11 - m22, 1.0 - m00 - m11 + m22, diff --git a/vis4d/op/geometry/transform.py b/vis4d/op/geometry/transform.py index a4398dcea..2276419a5 100644 --- a/vis4d/op/geometry/transform.py +++ b/vis4d/op/geometry/transform.py @@ -1,4 +1,5 @@ """Vis4D geometric transformation functions.""" + import torch from torch import Tensor diff --git a/vis4d/op/layer/attention.py b/vis4d/op/layer/attention.py index 9b4fb09c5..ab60eed92 100644 --- a/vis4d/op/layer/attention.py +++ b/vis4d/op/layer/attention.py @@ -1,4 +1,5 @@ """Attention layer.""" + from __future__ import annotations from torch import Tensor, nn @@ -209,7 +210,7 @@ def forward( # from num_query_first to batch_first. if self.batch_first: query = query.transpose(0, 1) - key = key.transpose(0, 1) # type: ignore + key = key.transpose(0, 1) value = value.transpose(0, 1) out = self.attn( diff --git a/vis4d/op/layer/conv2d.py b/vis4d/op/layer/conv2d.py index 5eb857fc6..81521b556 100644 --- a/vis4d/op/layer/conv2d.py +++ b/vis4d/op/layer/conv2d.py @@ -1,4 +1,5 @@ """Wrapper for conv2d.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/layer/csp_layer.py b/vis4d/op/layer/csp_layer.py index 60aae9cda..47dc5e6f7 100644 --- a/vis4d/op/layer/csp_layer.py +++ b/vis4d/op/layer/csp_layer.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import torch diff --git a/vis4d/op/layer/deform_conv.py b/vis4d/op/layer/deform_conv.py index 9c8dbbc3d..7a3a52baf 100644 --- a/vis4d/op/layer/deform_conv.py +++ b/vis4d/op/layer/deform_conv.py @@ -1,4 +1,5 @@ """Wrapper for deformable convolution.""" + from __future__ import annotations import torch diff --git a/vis4d/op/layer/drop.py b/vis4d/op/layer/drop.py index 7419d7c13..f0a1cef8b 100644 --- a/vis4d/op/layer/drop.py +++ b/vis4d/op/layer/drop.py @@ -2,6 +2,7 @@ Modified from timm (https://github.com/huggingface/pytorch-image-models). """ + from __future__ import annotations import torch diff --git a/vis4d/op/layer/mlp.py b/vis4d/op/layer/mlp.py index bfbda3202..76fff1738 100644 --- a/vis4d/op/layer/mlp.py +++ b/vis4d/op/layer/mlp.py @@ -1,4 +1,5 @@ """MLP Layers.""" + from __future__ import annotations import torch diff --git a/vis4d/op/layer/ms_deform_attn.py b/vis4d/op/layer/ms_deform_attn.py index e1bd77b21..2d16f70c1 100644 --- a/vis4d/op/layer/ms_deform_attn.py +++ b/vis4d/op/layer/ms_deform_attn.py @@ -131,7 +131,7 @@ def ms_deformable_attention_cpu( _, ) = sampling_locations.shape value_list = value.split([h * w for h, w in value_spatial_shapes], dim=1) - sampling_grids: Tensor = 2 * sampling_locations - 1 # type: ignore + sampling_grids: Tensor = 2 * sampling_locations - 1 sampling_value_list = [] for level, (h, w) in enumerate(value_spatial_shapes): # bs, h*w, num_heads, embed_dims -> diff --git a/vis4d/op/layer/patch_embed.py b/vis4d/op/layer/patch_embed.py index 518ff4ad8..5b91aa123 100644 --- a/vis4d/op/layer/patch_embed.py +++ b/vis4d/op/layer/patch_embed.py @@ -3,6 +3,7 @@ Modified from vision_transformer (https://github.com/google-research/vision_transformer). """ + from __future__ import annotations import torch diff --git a/vis4d/op/layer/positional_encoding.py b/vis4d/op/layer/positional_encoding.py index d9b595d2c..c931c4b5f 100644 --- a/vis4d/op/layer/positional_encoding.py +++ b/vis4d/op/layer/positional_encoding.py @@ -2,6 +2,7 @@ Modified from mmdetection (https://github.com/open-mmlab/mmdetection). """ + import math import torch diff --git a/vis4d/op/layer/transformer.py b/vis4d/op/layer/transformer.py index 8de2a0ce7..614cd8254 100644 --- a/vis4d/op/layer/transformer.py +++ b/vis4d/op/layer/transformer.py @@ -3,6 +3,7 @@ Modified from timm (https://github.com/huggingface/pytorch-image-models) and mmdetection (https://github.com/open-mmlab/mmdetection). """ + from __future__ import annotations import copy @@ -66,9 +67,7 @@ def __init__( }, "data_format could only be channels_last or channels_first." self.inplace = inplace self.data_format = data_format - self.gamma = nn.Parameter( - init_values * torch.ones(dim) # type: ignore - ) + self.gamma = nn.Parameter(init_values * torch.ones(dim)) def forward(self, x: torch.Tensor) -> torch.Tensor: """Forward pass.""" diff --git a/vis4d/op/layer/util.py b/vis4d/op/layer/util.py index cd820f7f6..c49dc1771 100644 --- a/vis4d/op/layer/util.py +++ b/vis4d/op/layer/util.py @@ -1,4 +1,5 @@ """Utility functions for layer ops.""" + from __future__ import annotations from torch import nn diff --git a/vis4d/op/layer/weight_init.py b/vis4d/op/layer/weight_init.py index c679bc87d..23810ded7 100644 --- a/vis4d/op/layer/weight_init.py +++ b/vis4d/op/layer/weight_init.py @@ -1,4 +1,5 @@ """Model weight initialization.""" + import numpy as np from torch import nn diff --git a/vis4d/op/loss/common.py b/vis4d/op/loss/common.py index 51d39b9a7..991947c61 100644 --- a/vis4d/op/loss/common.py +++ b/vis4d/op/loss/common.py @@ -1,4 +1,5 @@ """Common loss functions.""" + import torch import torch.nn.functional as F from torch import Tensor @@ -33,7 +34,7 @@ def smooth_l1_loss( assert beta > 0 assert pred.size() == target.size() and target.numel() > 0 diff = torch.abs(pred - target) - loss = torch.where( # type: ignore + loss = torch.where( diff < beta, 0.5 * diff * diff / beta, diff - 0.5 * beta ) return reducer(loss) diff --git a/vis4d/op/loss/embedding_distance.py b/vis4d/op/loss/embedding_distance.py index 0530ae165..9c614541e 100644 --- a/vis4d/op/loss/embedding_distance.py +++ b/vis4d/op/loss/embedding_distance.py @@ -1,4 +1,5 @@ """Embedding distance loss.""" + from __future__ import annotations import torch diff --git a/vis4d/op/loss/iou_loss.py b/vis4d/op/loss/iou_loss.py index 1a66b2d49..5290d3b1d 100644 --- a/vis4d/op/loss/iou_loss.py +++ b/vis4d/op/loss/iou_loss.py @@ -1,4 +1,5 @@ """Embedding distance loss.""" + from __future__ import annotations import torch diff --git a/vis4d/op/loss/multi_level_seg_loss.py b/vis4d/op/loss/multi_level_seg_loss.py index 6521fc389..7518935be 100644 --- a/vis4d/op/loss/multi_level_seg_loss.py +++ b/vis4d/op/loss/multi_level_seg_loss.py @@ -1,4 +1,5 @@ """Multi-level segmentation loss.""" + from __future__ import annotations from collections.abc import Callable diff --git a/vis4d/op/loss/multi_pos_cross_entropy.py b/vis4d/op/loss/multi_pos_cross_entropy.py index 6e0d1ea97..e6ab48f08 100644 --- a/vis4d/op/loss/multi_pos_cross_entropy.py +++ b/vis4d/op/loss/multi_pos_cross_entropy.py @@ -1,4 +1,5 @@ """Multi-positive cross entropy loss.""" + import torch from torch import Tensor diff --git a/vis4d/op/loss/orthogonal_transform_loss.py b/vis4d/op/loss/orthogonal_transform_loss.py index f99c307ea..c97dc2718 100644 --- a/vis4d/op/loss/orthogonal_transform_loss.py +++ b/vis4d/op/loss/orthogonal_transform_loss.py @@ -1,4 +1,5 @@ """Orthogonal Transform Loss.""" + from __future__ import annotations import torch diff --git a/vis4d/op/loss/reducer.py b/vis4d/op/loss/reducer.py index 5aa235703..05a47c596 100644 --- a/vis4d/op/loss/reducer.py +++ b/vis4d/op/loss/reducer.py @@ -3,6 +3,7 @@ Loss reducers are usually used as the last step in loss computation to average or sum the loss maps from dense predictions or object detections. """ + from __future__ import annotations from typing import Callable diff --git a/vis4d/op/loss/seg_cross_entropy_loss.py b/vis4d/op/loss/seg_cross_entropy_loss.py index 9be5ba8e5..26bfb8dde 100644 --- a/vis4d/op/loss/seg_cross_entropy_loss.py +++ b/vis4d/op/loss/seg_cross_entropy_loss.py @@ -1,4 +1,5 @@ """Segmentation cross entropy loss.""" + from __future__ import annotations import torch diff --git a/vis4d/op/mask/util.py b/vis4d/op/mask/util.py index 24b181056..4c7018e7c 100644 --- a/vis4d/op/mask/util.py +++ b/vis4d/op/mask/util.py @@ -1,4 +1,5 @@ """Utility functions for segmentation masks.""" + from __future__ import annotations import numpy as np @@ -62,10 +63,10 @@ def _do_paste_mask( num_masks = masks.shape[0] img_y: Tensor = ( - torch.arange(y0_int, y1_int, device=device, dtype=torch.float32) + 0.5 # type: ignore # pylint: disable=line-too-long + torch.arange(y0_int, y1_int, device=device, dtype=torch.float32) + 0.5 ) img_x: Tensor = ( - torch.arange(x0_int, x1_int, device=device, dtype=torch.float32) + 0.5 # type: ignore # pylint: disable=line-too-long + torch.arange(x0_int, x1_int, device=device, dtype=torch.float32) + 0.5 ) img_y = (img_y - y0) / (y1 - y0) * 2 - 1 # (N, h) img_x = (img_x - x0) / (x1 - x0) * 2 - 1 # (N, w) diff --git a/vis4d/op/motion/kalman_filter.py b/vis4d/op/motion/kalman_filter.py index beee5d6c9..1a3a05963 100644 --- a/vis4d/op/motion/kalman_filter.py +++ b/vis4d/op/motion/kalman_filter.py @@ -1,4 +1,5 @@ """Kalman Filter PyTorch implementation.""" + from __future__ import annotations import torch diff --git a/vis4d/op/motion/velo_lstm.py b/vis4d/op/motion/velo_lstm.py index 0e16cbdf3..c1b8ec715 100644 --- a/vis4d/op/motion/velo_lstm.py +++ b/vis4d/op/motion/velo_lstm.py @@ -1,4 +1,5 @@ """VeloLSTM operations.""" + from __future__ import annotations import torch diff --git a/vis4d/op/seg/fcn.py b/vis4d/op/seg/fcn.py index 1b1308bd7..ab9ba0992 100644 --- a/vis4d/op/seg/fcn.py +++ b/vis4d/op/seg/fcn.py @@ -1,4 +1,5 @@ """FCN Head for semantic segmentation.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/seg/semantic_fpn.py b/vis4d/op/seg/semantic_fpn.py index 4dffd4efe..1cfd9720b 100644 --- a/vis4d/op/seg/semantic_fpn.py +++ b/vis4d/op/seg/semantic_fpn.py @@ -1,4 +1,5 @@ """Semantic FPN Head for segmentation.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/track/assignment.py b/vis4d/op/track/assignment.py index c2a44715e..dd000fe2e 100644 --- a/vis4d/op/track/assignment.py +++ b/vis4d/op/track/assignment.py @@ -1,4 +1,5 @@ """Track assignment functions.""" + from __future__ import annotations import torch diff --git a/vis4d/op/track/common.py b/vis4d/op/track/common.py index 0c2d93545..b8b9e1a88 100644 --- a/vis4d/op/track/common.py +++ b/vis4d/op/track/common.py @@ -1,4 +1,5 @@ """Common classes and functions for tracking.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/track/matching.py b/vis4d/op/track/matching.py index b21dc6db0..c1baff96a 100644 --- a/vis4d/op/track/matching.py +++ b/vis4d/op/track/matching.py @@ -1,4 +1,5 @@ """Matching calculation utils.""" + from __future__ import annotations import torch diff --git a/vis4d/op/track/qdtrack.py b/vis4d/op/track/qdtrack.py index f70de3a1e..480161b93 100644 --- a/vis4d/op/track/qdtrack.py +++ b/vis4d/op/track/qdtrack.py @@ -1,4 +1,5 @@ """Quasi-dense embedding similarity based graph.""" + from __future__ import annotations import math @@ -172,7 +173,6 @@ def __call__( ) -# @torch.jit.script TODO class QDTrackAssociation: """Data association relying on quasi-dense instance similarity. @@ -548,7 +548,7 @@ def forward( """ if sum(len(e) for e in key_embeddings) == 0: # pragma: no cover dummy_loss = sum(e.sum() * 0.0 for e in key_embeddings) - return QDTrackInstanceSimilarityLosses(dummy_loss, dummy_loss) + return QDTrackInstanceSimilarityLosses(dummy_loss, dummy_loss) # type: ignore # pylint: disable=line-too-long loss_track = torch.tensor(0.0, device=key_embeddings[0].device) loss_track_aux = torch.tensor(0.0, device=key_embeddings[0].device) diff --git a/vis4d/op/track3d/cc_3dt.py b/vis4d/op/track3d/cc_3dt.py index 2aa8d0905..2838e8b8f 100644 --- a/vis4d/op/track3d/cc_3dt.py +++ b/vis4d/op/track3d/cc_3dt.py @@ -1,4 +1,5 @@ """CC-3DT graph.""" + from __future__ import annotations import torch @@ -49,7 +50,6 @@ def get_track_3d_out( ) -# @torch.jit.script TODO class CC3DTrackAssociation: """Data association relying on quasi-dense instance similarity and 3D clue. diff --git a/vis4d/op/track3d/common.py b/vis4d/op/track3d/common.py index ae1b98dd5..77a2d289a 100644 --- a/vis4d/op/track3d/common.py +++ b/vis4d/op/track3d/common.py @@ -1,4 +1,5 @@ """Common classes and functions for 3D tracking.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/typing.py b/vis4d/op/typing.py index 097cccdba..cb1330561 100644 --- a/vis4d/op/typing.py +++ b/vis4d/op/typing.py @@ -1,4 +1,5 @@ """Vis4D op typing.""" + from __future__ import annotations from typing import NamedTuple diff --git a/vis4d/op/util.py b/vis4d/op/util.py index 87f2d5715..eb683e751 100644 --- a/vis4d/op/util.py +++ b/vis4d/op/util.py @@ -1,4 +1,5 @@ """Utilities for op.""" + from __future__ import annotations import torch diff --git a/vis4d/pl/__main__.py b/vis4d/pl/__main__.py index 18cc2e471..67e5297f9 100644 --- a/vis4d/pl/__main__.py +++ b/vis4d/pl/__main__.py @@ -1,4 +1,5 @@ """Entry point for the vis4d.pl package.""" + from .run import entrypoint entrypoint() diff --git a/vis4d/pl/callbacks/__init__.py b/vis4d/pl/callbacks/__init__.py index 8c4339e6b..36c3ea271 100644 --- a/vis4d/pl/callbacks/__init__.py +++ b/vis4d/pl/callbacks/__init__.py @@ -1,4 +1,5 @@ """Callbacks handling data related stuff (evaluation, visualization, etc).""" + from .callback_wrapper import CallbackWrapper from .scheduler import LRSchedulerCallback diff --git a/vis4d/pl/callbacks/callback_wrapper.py b/vis4d/pl/callbacks/callback_wrapper.py index d3b7521f1..1aa5e0640 100644 --- a/vis4d/pl/callbacks/callback_wrapper.py +++ b/vis4d/pl/callbacks/callback_wrapper.py @@ -1,4 +1,5 @@ """Wrapper to connect PyTorch Lightning callbacks.""" + from __future__ import annotations from typing import Any diff --git a/vis4d/pl/callbacks/scheduler.py b/vis4d/pl/callbacks/scheduler.py index 88960c994..456ca48a1 100644 --- a/vis4d/pl/callbacks/scheduler.py +++ b/vis4d/pl/callbacks/scheduler.py @@ -1,4 +1,5 @@ """Callback to configure learning rate during training.""" + from __future__ import annotations from collections.abc import Iterable diff --git a/vis4d/pl/data_module.py b/vis4d/pl/data_module.py index 0c2571257..de307a6e1 100644 --- a/vis4d/pl/data_module.py +++ b/vis4d/pl/data_module.py @@ -1,4 +1,5 @@ """Data module composing the data loading pipeline.""" + from __future__ import annotations import lightning.pytorch as pl diff --git a/vis4d/pl/run.py b/vis4d/pl/run.py index b729b8fec..60654ed14 100644 --- a/vis4d/pl/run.py +++ b/vis4d/pl/run.py @@ -1,4 +1,5 @@ """CLI interface using PyTorch Lightning.""" + from __future__ import annotations import logging diff --git a/vis4d/pl/trainer.py b/vis4d/pl/trainer.py index 00c525317..53fc8115c 100644 --- a/vis4d/pl/trainer.py +++ b/vis4d/pl/trainer.py @@ -1,4 +1,5 @@ """Trainer for PyTorch Lightning.""" + from __future__ import annotations import os.path as osp diff --git a/vis4d/pl/training_module.py b/vis4d/pl/training_module.py index 74000cc39..8692ebc99 100644 --- a/vis4d/pl/training_module.py +++ b/vis4d/pl/training_module.py @@ -1,4 +1,5 @@ """LightningModule that wraps around the models, losses and optims.""" + from __future__ import annotations from typing import Any diff --git a/vis4d/state/track/qdtrack.py b/vis4d/state/track/qdtrack.py index de314a25d..fd27ce3a2 100644 --- a/vis4d/state/track/qdtrack.py +++ b/vis4d/state/track/qdtrack.py @@ -1,4 +1,5 @@ """Memory for QDTrack inference.""" + from __future__ import annotations from typing import TypedDict @@ -300,7 +301,7 @@ def update_track( self.tracklets[track_id]["box"] = box self.tracklets[track_id]["score"] = score self.tracklets[track_id]["class_id"] = class_id - self.tracklets[track_id]["embed"] = ( # type: ignore + self.tracklets[track_id]["embed"] = ( 1 - self.memory_momentum ) * self.tracklets[track_id][ "embed" diff --git a/vis4d/state/track3d/cc_3dt.py b/vis4d/state/track3d/cc_3dt.py index 99a7401ce..e2509ddd4 100644 --- a/vis4d/state/track3d/cc_3dt.py +++ b/vis4d/state/track3d/cc_3dt.py @@ -1,4 +1,5 @@ """Memory for CC-3DT inference.""" + from __future__ import annotations from typing import TypedDict @@ -497,7 +498,7 @@ def update_track( self.tracklets[track_id]["score_3d"] = score_3d self.tracklets[track_id]["class_id"] = class_id - self.tracklets[track_id]["embed"] = ( # type: ignore + self.tracklets[track_id]["embed"] = ( 1 - self.memory_momentum ) * self.tracklets[track_id]["embed"] + self.memory_momentum * embed diff --git a/vis4d/state/track3d/motion/__init__.py b/vis4d/state/track3d/motion/__init__.py index 377af00a6..585785bbe 100644 --- a/vis4d/state/track3d/motion/__init__.py +++ b/vis4d/state/track3d/motion/__init__.py @@ -1,4 +1,5 @@ """3D Motional Models.""" + from .base import BaseMotionModel from .kf3d import KF3DMotionModel from .lstm_3d import LSTM3DMotionModel diff --git a/vis4d/state/track3d/motion/base.py b/vis4d/state/track3d/motion/base.py index 28d04021d..c83fa6357 100644 --- a/vis4d/state/track3d/motion/base.py +++ b/vis4d/state/track3d/motion/base.py @@ -1,4 +1,5 @@ """Motion model base class.""" + from torch import Tensor diff --git a/vis4d/state/track3d/motion/kf3d.py b/vis4d/state/track3d/motion/kf3d.py index ee1f8f4d7..c102cba4d 100644 --- a/vis4d/state/track3d/motion/kf3d.py +++ b/vis4d/state/track3d/motion/kf3d.py @@ -1,4 +1,5 @@ """Kalman Filter 3D motion model.""" + from __future__ import annotations import torch diff --git a/vis4d/state/track3d/motion/lstm_3d.py b/vis4d/state/track3d/motion/lstm_3d.py index db4064343..9c2f8e77b 100644 --- a/vis4d/state/track3d/motion/lstm_3d.py +++ b/vis4d/state/track3d/motion/lstm_3d.py @@ -1,4 +1,5 @@ """LSTM 3D motion model.""" + from __future__ import annotations import torch diff --git a/vis4d/vis/base.py b/vis4d/vis/base.py index 912511015..1985f0043 100644 --- a/vis4d/vis/base.py +++ b/vis4d/vis/base.py @@ -1,4 +1,5 @@ """Visualizer base class.""" + from vis4d.common.typing import ArgsType diff --git a/vis4d/vis/functional/__init__.py b/vis4d/vis/functional/__init__.py index dcf4f2388..5a46ff0ee 100644 --- a/vis4d/vis/functional/__init__.py +++ b/vis4d/vis/functional/__init__.py @@ -1,4 +1,5 @@ """Function interface for visualization functions.""" + from .image import ( draw_bboxes, draw_masks, diff --git a/vis4d/vis/functional/image.py b/vis4d/vis/functional/image.py index 5e9bbe82e..baf516438 100644 --- a/vis4d/vis/functional/image.py +++ b/vis4d/vis/functional/image.py @@ -1,4 +1,5 @@ """Function interface for image visualization functions.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/vis/functional/pointcloud.py b/vis4d/vis/functional/pointcloud.py index 8cddb8595..ed4335a6d 100644 --- a/vis4d/vis/functional/pointcloud.py +++ b/vis4d/vis/functional/pointcloud.py @@ -1,4 +1,5 @@ """Function interface for point cloud visualization functions.""" + from __future__ import annotations from vis4d.common.typing import ArrayLikeFloat, ArrayLikeInt diff --git a/vis4d/vis/image/__init__.py b/vis4d/vis/image/__init__.py index dd4998876..7525db917 100644 --- a/vis4d/vis/image/__init__.py +++ b/vis4d/vis/image/__init__.py @@ -1,4 +1,5 @@ """Image Visualization.""" + from .bounding_box_visualizer import BoundingBoxVisualizer from .seg_mask_visualizer import SegMaskVisualizer diff --git a/vis4d/vis/image/bbox3d_visualizer.py b/vis4d/vis/image/bbox3d_visualizer.py index cc60836d9..74f4a7f35 100644 --- a/vis4d/vis/image/bbox3d_visualizer.py +++ b/vis4d/vis/image/bbox3d_visualizer.py @@ -1,4 +1,5 @@ """Bounding box 3D visualizer.""" + from __future__ import annotations import os @@ -97,9 +98,9 @@ def __init__( super().__init__(*args, **kwargs) self._samples: list[DataSample] = [] self.axis_mode = axis_mode - self.trajectories: dict[ - int, list[tuple[float, float, float]] - ] = defaultdict(list) + self.trajectories: dict[int, list[tuple[float, float, float]]] = ( + defaultdict(list) + ) self.trajectory_length = trajectory_length self.plot_trajectory = plot_trajectory @@ -164,9 +165,9 @@ class ids each of shape [B, N]. Defaults to None. image_names[batch], boxes3d[batch], intrinsics[batch], # type: ignore - None - if extrinsics is None - else extrinsics[batch], # type: ignore + ( + None if extrinsics is None else extrinsics[batch] # type: ignore # pylint: disable=line-too-long + ), None if scores is None else scores[batch], None if class_ids is None else class_ids[batch], None if track_ids is None else track_ids[batch], @@ -401,14 +402,18 @@ class ids each of shape [B, N]. Defaults to None. image_names[idx][batch], boxes3d[batch], intrinsics[idx][batch], # type: ignore - None - if extrinsics is None - else extrinsics[idx][batch], # type: ignore + ( + None + if extrinsics is None + else extrinsics[idx][batch] # type: ignore + ), None if scores is None else scores[batch], None if class_ids is None else class_ids[batch], None if track_ids is None else track_ids[batch], - None - if sequence_names is None - else sequence_names[batch], + ( + None + if sequence_names is None + else sequence_names[batch] + ), self.cameras[idx], ) diff --git a/vis4d/vis/image/bev_visualizer.py b/vis4d/vis/image/bev_visualizer.py index 53f7eb79d..9ba2d4c7b 100644 --- a/vis4d/vis/image/bev_visualizer.py +++ b/vis4d/vis/image/bev_visualizer.py @@ -1,4 +1,5 @@ """BEV Bounding box 3D visualizer.""" + from __future__ import annotations import os @@ -91,9 +92,9 @@ def __init__( super().__init__(*args, **kwargs) self._samples: list[DataSample] = [] self.axis_mode = axis_mode - self.trajectories: dict[ - int, list[tuple[float, float, float]] - ] = defaultdict(list) + self.trajectories: dict[int, list[tuple[float, float, float]]] = ( + defaultdict(list) + ) self.trajectory_length = trajectory_length self.plot_trajectory = plot_trajectory @@ -142,9 +143,11 @@ def process( # type: ignore # pylint: disable=arguments-differ extrinsics[batch], # type: ignore class_ids[batch] if class_ids is not None else None, track_ids[batch] if track_ids is not None else None, - sequence_names[batch] - if sequence_names is not None - else None, + ( + sequence_names[batch] + if sequence_names is not None + else None + ), ) for tid in self.trajectories: diff --git a/vis4d/vis/image/bounding_box_visualizer.py b/vis4d/vis/image/bounding_box_visualizer.py index 650ccebff..72ece8d8a 100644 --- a/vis4d/vis/image/bounding_box_visualizer.py +++ b/vis4d/vis/image/bounding_box_visualizer.py @@ -1,4 +1,5 @@ """Bounding box visualizer.""" + from __future__ import annotations import os diff --git a/vis4d/vis/image/canvas/__init__.py b/vis4d/vis/image/canvas/__init__.py index d2ee1fd0d..ea8e856bc 100644 --- a/vis4d/vis/image/canvas/__init__.py +++ b/vis4d/vis/image/canvas/__init__.py @@ -1,4 +1,5 @@ """Vis4D image canvas backends.""" + from .base import CanvasBackend from .pillow_backend import PillowCanvasBackend diff --git a/vis4d/vis/image/canvas/base.py b/vis4d/vis/image/canvas/base.py index 26a4e6a4a..9025ff0e1 100644 --- a/vis4d/vis/image/canvas/base.py +++ b/vis4d/vis/image/canvas/base.py @@ -1,4 +1,5 @@ """Base class of canvas for image based visualization.""" + from __future__ import annotations from vis4d.common.typing import NDArrayBool, NDArrayF32, NDArrayUI8 diff --git a/vis4d/vis/image/canvas/pillow_backend.py b/vis4d/vis/image/canvas/pillow_backend.py index 25cb360c3..0dbb7c704 100644 --- a/vis4d/vis/image/canvas/pillow_backend.py +++ b/vis4d/vis/image/canvas/pillow_backend.py @@ -1,4 +1,5 @@ """Pillow backend implementation to draw on images.""" + from __future__ import annotations import base64 @@ -85,7 +86,9 @@ def draw_bitmap( bitmap_pil = Image.fromarray( bitmap_with_alpha.astype(np.uint8), mode="RGBA" ) - self._image_draw.bitmap(top_left_corner, bitmap_pil, fill=color) + self._image_draw.bitmap( + top_left_corner, bitmap_pil, fill=color # type: ignore + ) def draw_text( self, diff --git a/vis4d/vis/image/seg_mask_visualizer.py b/vis4d/vis/image/seg_mask_visualizer.py index ea6a64044..faaddb2d4 100644 --- a/vis4d/vis/image/seg_mask_visualizer.py +++ b/vis4d/vis/image/seg_mask_visualizer.py @@ -1,4 +1,5 @@ """Segmentation mask visualizer.""" + from __future__ import annotations import os diff --git a/vis4d/vis/image/util.py b/vis4d/vis/image/util.py index 1b7d35cfe..846414aa8 100644 --- a/vis4d/vis/image/util.py +++ b/vis4d/vis/image/util.py @@ -1,4 +1,5 @@ """Utility functions for image processing operations.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/vis/image/viewer/__init__.py b/vis4d/vis/image/viewer/__init__.py index c124a1842..207225e6d 100644 --- a/vis4d/vis/image/viewer/__init__.py +++ b/vis4d/vis/image/viewer/__init__.py @@ -1,4 +1,5 @@ """Viewer implementations to display images.""" + from .base import ImageViewerBackend from .matplotlib_viewer import MatplotlibImageViewer diff --git a/vis4d/vis/image/viewer/base.py b/vis4d/vis/image/viewer/base.py index 01e95fbec..59aed95cd 100644 --- a/vis4d/vis/image/viewer/base.py +++ b/vis4d/vis/image/viewer/base.py @@ -1,4 +1,5 @@ """Base class of image viewer for image based visualization.""" + from __future__ import annotations from vis4d.common.typing import NDArrayUI8 diff --git a/vis4d/vis/image/viewer/matplotlib_viewer.py b/vis4d/vis/image/viewer/matplotlib_viewer.py index 603b30fc4..cf11ec78d 100644 --- a/vis4d/vis/image/viewer/matplotlib_viewer.py +++ b/vis4d/vis/image/viewer/matplotlib_viewer.py @@ -1,4 +1,5 @@ """Matplotlib based image viewer.""" + from __future__ import annotations import matplotlib.pyplot as plt diff --git a/vis4d/vis/pointcloud/__init__.py b/vis4d/vis/pointcloud/__init__.py index c3a1b377d..147260a84 100644 --- a/vis4d/vis/pointcloud/__init__.py +++ b/vis4d/vis/pointcloud/__init__.py @@ -1,4 +1,5 @@ """Pointcloud Visualization Package.""" + from .pointcloud_visualizer import PointCloudVisualizer __all__ = ["PointCloudVisualizer"] diff --git a/vis4d/vis/pointcloud/pointcloud_visualizer.py b/vis4d/vis/pointcloud/pointcloud_visualizer.py index a53906770..e0dbc315c 100644 --- a/vis4d/vis/pointcloud/pointcloud_visualizer.py +++ b/vis4d/vis/pointcloud/pointcloud_visualizer.py @@ -1,4 +1,5 @@ """Vis4D Visualization tools for analysis and debugging.""" + from __future__ import annotations from vis4d.common.imports import OPEN3D_AVAILABLE @@ -146,9 +147,11 @@ def process( # type: ignore # pylint: disable=arguments-differ semantics[idx, ...] if semantics is not None else None, instances[idx, ...] if instances is not None else None, colors[idx, ...] if colors is not None else None, - scene_index[idx, ...] - if scene_index is not None - else None, + ( + scene_index[idx, ...] + if scene_index is not None + else None + ), ) else: diff --git a/vis4d/vis/pointcloud/scene.py b/vis4d/vis/pointcloud/scene.py index 54ddf6c4b..37f941d3e 100644 --- a/vis4d/vis/pointcloud/scene.py +++ b/vis4d/vis/pointcloud/scene.py @@ -1,4 +1,5 @@ """Data structures to store 3D data.""" + from __future__ import annotations from dataclasses import dataclass diff --git a/vis4d/vis/pointcloud/viewer/__init__.py b/vis4d/vis/pointcloud/viewer/__init__.py index 7afcbc80c..c2d6326de 100644 --- a/vis4d/vis/pointcloud/viewer/__init__.py +++ b/vis4d/vis/pointcloud/viewer/__init__.py @@ -1,4 +1,5 @@ """Viewer implementations to display pointcloud.""" + from .base import PointCloudVisualizerBackend from .open3d_viewer import Open3DVisualizationBackend diff --git a/vis4d/vis/pointcloud/viewer/base.py b/vis4d/vis/pointcloud/viewer/base.py index 24753ada0..8bce996c7 100644 --- a/vis4d/vis/pointcloud/viewer/base.py +++ b/vis4d/vis/pointcloud/viewer/base.py @@ -1,4 +1,5 @@ """Generic classes to visualize and save pointcloud data.""" + from __future__ import annotations import numpy as np diff --git a/vis4d/vis/pointcloud/viewer/open3d_viewer.py b/vis4d/vis/pointcloud/viewer/open3d_viewer.py index 20225b4e0..942878b26 100644 --- a/vis4d/vis/pointcloud/viewer/open3d_viewer.py +++ b/vis4d/vis/pointcloud/viewer/open3d_viewer.py @@ -1,4 +1,5 @@ """Open3d visualization backend.""" + from __future__ import annotations import os diff --git a/vis4d/vis/util.py b/vis4d/vis/util.py index 9a20e48e4..9242f0a93 100644 --- a/vis4d/vis/util.py +++ b/vis4d/vis/util.py @@ -1,4 +1,5 @@ """Utilities for visualization.""" + from __future__ import annotations import colorsys diff --git a/vis4d/zoo/__init__.py b/vis4d/zoo/__init__.py index 553819b75..c9a31eb9a 100644 --- a/vis4d/zoo/__init__.py +++ b/vis4d/zoo/__init__.py @@ -1,4 +1,5 @@ """Model Zoo.""" + from __future__ import annotations from vis4d.common.typing import ArgsType diff --git a/vis4d/zoo/bdd100k/__init__.py b/vis4d/zoo/bdd100k/__init__.py index bc04e6da0..44d079c7f 100644 --- a/vis4d/zoo/bdd100k/__init__.py +++ b/vis4d/zoo/bdd100k/__init__.py @@ -1,4 +1,5 @@ """BDD100K Model Zoo.""" + from .faster_rcnn import faster_rcnn_r50_1x_bdd100k, faster_rcnn_r50_3x_bdd100k from .mask_rcnn import ( mask_rcnn_r50_1x_bdd100k, diff --git a/vis4d/zoo/bevformer/__init__.py b/vis4d/zoo/bevformer/__init__.py index 1886bbde9..8e75b3249 100644 --- a/vis4d/zoo/bevformer/__init__.py +++ b/vis4d/zoo/bevformer/__init__.py @@ -1,4 +1,5 @@ """BEVFormer model zoo.""" + from . import bevformer_base, bevformer_tiny, bevformer_vis AVAILABLE_MODELS = { diff --git a/vis4d/zoo/bevformer/bevformer_vis.py b/vis4d/zoo/bevformer/bevformer_vis.py index d7fae10c5..d762235c4 100644 --- a/vis4d/zoo/bevformer/bevformer_vis.py +++ b/vis4d/zoo/bevformer/bevformer_vis.py @@ -1,4 +1,5 @@ """BEVFormer Visualizaion for NuScenes Example.""" + from __future__ import annotations from vis4d.config import class_config diff --git a/vis4d/zoo/bevformer/data.py b/vis4d/zoo/bevformer/data.py index 04356cd4a..79651bd38 100644 --- a/vis4d/zoo/bevformer/data.py +++ b/vis4d/zoo/bevformer/data.py @@ -1,4 +1,5 @@ """BEVFormer NuScenes data config.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/zoo/cc_3dt/__init__.py b/vis4d/zoo/cc_3dt/__init__.py index bb0afc9f9..f9ba88f85 100644 --- a/vis4d/zoo/cc_3dt/__init__.py +++ b/vis4d/zoo/cc_3dt/__init__.py @@ -1,4 +1,5 @@ """CC-3DT Model Zoo.""" + from . import ( cc_3dt_frcnn_r50_fpn_kf3d_12e_nusc, cc_3dt_frcnn_r101_fpn_kf3d_24e_nusc, diff --git a/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_pure_det_nusc.py b/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_pure_det_nusc.py index d9f6528ca..34d1033b9 100644 --- a/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_pure_det_nusc.py +++ b/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_pure_det_nusc.py @@ -1,4 +1,5 @@ """CC-3DT with Faster-RCNN ResNet-101 detector generating pure detection.""" + from __future__ import annotations from vis4d.config import class_config diff --git a/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_velo_lstm_24e_nusc.py b/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_velo_lstm_24e_nusc.py index 81ecd3e81..343ede71b 100644 --- a/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_velo_lstm_24e_nusc.py +++ b/vis4d/zoo/cc_3dt/cc_3dt_frcnn_r101_fpn_velo_lstm_24e_nusc.py @@ -1,4 +1,5 @@ """CC-3DT inference with Faster-RCNN ResNet-101 detector using VeloLSTM.""" + from __future__ import annotations from vis4d.config import class_config diff --git a/vis4d/zoo/cc_3dt/cc_3dt_nusc_vis.py b/vis4d/zoo/cc_3dt/cc_3dt_nusc_vis.py index 8c68a25a7..4867f7240 100644 --- a/vis4d/zoo/cc_3dt/cc_3dt_nusc_vis.py +++ b/vis4d/zoo/cc_3dt/cc_3dt_nusc_vis.py @@ -1,4 +1,5 @@ """CC-3DT Visualizaion for NuScenes Example.""" + from __future__ import annotations from vis4d.config import class_config diff --git a/vis4d/zoo/cc_3dt/data.py b/vis4d/zoo/cc_3dt/data.py index 00b787e41..e42a29330 100644 --- a/vis4d/zoo/cc_3dt/data.py +++ b/vis4d/zoo/cc_3dt/data.py @@ -1,4 +1,5 @@ """CC-3DT NuScenes data config.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/zoo/cc_3dt/model.py b/vis4d/zoo/cc_3dt/model.py index 4d3585c81..571927c16 100644 --- a/vis4d/zoo/cc_3dt/model.py +++ b/vis4d/zoo/cc_3dt/model.py @@ -1,4 +1,5 @@ """CC-3DT model config.""" + from __future__ import annotations from ml_collections import ConfigDict, FieldReference diff --git a/vis4d/zoo/faster_rcnn/__init__.py b/vis4d/zoo/faster_rcnn/__init__.py index 70c525d56..4aaded2cd 100644 --- a/vis4d/zoo/faster_rcnn/__init__.py +++ b/vis4d/zoo/faster_rcnn/__init__.py @@ -1,4 +1,5 @@ """Faster-RCNN Model Zoo.""" + from . import faster_rcnn_coco AVAILABLE_MODELS = { diff --git a/vis4d/zoo/fcn_resnet/__init__.py b/vis4d/zoo/fcn_resnet/__init__.py index fc533f78d..6e5854217 100644 --- a/vis4d/zoo/fcn_resnet/__init__.py +++ b/vis4d/zoo/fcn_resnet/__init__.py @@ -1,4 +1,5 @@ """FCN Model Zoo.""" + from . import fcn_resnet_coco AVAILABLE_MODELS = { diff --git a/vis4d/zoo/fcn_resnet/fcn_resnet_coco.py b/vis4d/zoo/fcn_resnet/fcn_resnet_coco.py index d25149c84..4a987b907 100644 --- a/vis4d/zoo/fcn_resnet/fcn_resnet_coco.py +++ b/vis4d/zoo/fcn_resnet/fcn_resnet_coco.py @@ -1,4 +1,5 @@ """FCN-ResNet COCO training example.""" + from __future__ import annotations import lightning.pytorch as pl diff --git a/vis4d/zoo/qdtrack/__init__.py b/vis4d/zoo/qdtrack/__init__.py index 6dff183d8..c8b6ff430 100644 --- a/vis4d/zoo/qdtrack/__init__.py +++ b/vis4d/zoo/qdtrack/__init__.py @@ -1,4 +1,5 @@ """QDTrack.""" + from . import ( qdtrack_frcnn_r50_fpn_augs_1x_bdd100k, qdtrack_yolox_x_50e_bdd100k, diff --git a/vis4d/zoo/qdtrack/data_yolox.py b/vis4d/zoo/qdtrack/data_yolox.py index 265712cf0..26c96946c 100644 --- a/vis4d/zoo/qdtrack/data_yolox.py +++ b/vis4d/zoo/qdtrack/data_yolox.py @@ -1,4 +1,5 @@ """BDD100K data loading config for QDTrack YOLOX.""" + from __future__ import annotations from ml_collections import ConfigDict diff --git a/vis4d/zoo/run.py b/vis4d/zoo/run.py index 3aa1549bc..7cd421af0 100644 --- a/vis4d/zoo/run.py +++ b/vis4d/zoo/run.py @@ -1,4 +1,5 @@ """CLI interface.""" + from __future__ import annotations from absl import app