From fdeee889589df413e368b05fd702b5c3f76ac7d3 Mon Sep 17 00:00:00 2001 From: limm Date: Sun, 25 May 2025 15:19:25 +0800 Subject: [PATCH] release v1.6.1 of mmcv --- CONTRIBUTING.md | 24 +- Dockerfile | 7 - LICENSES.md | 4 +- MANIFEST.in | 4 +- README.md | 293 ++- README_ORIGIN.md | 222 --- README_zh-CN.md | 123 +- TERMINOLOGY.md | 48 +- docker/README.md | 70 + docker/dev/Dockerfile | 32 + docker/release/Dockerfile | 20 + docs/_static/qq_group_qrcode.jpg | Bin 71955 -> 0 bytes docs/_static/zhihu_qrcode.jpg | Bin 397245 -> 0 bytes docs/community/contributing.md | 1 - docs/community/pr.md | 94 - docs/deployment/onnx.md | 19 - docs/{ => en}/Makefile | 0 docs/{ => en}/_static/community/1.png | Bin docs/{ => en}/_static/community/2.png | Bin docs/{ => en}/_static/community/3.png | Bin docs/{ => en}/_static/css/readthedocs.css | 0 docs/{ => en}/_static/flow_img2toimg1.png | Bin docs/{ => en}/_static/flow_raw_images.png | Bin docs/{ => en}/_static/flow_visualization.png | Bin docs/{ => en}/_static/flow_warp.png | Bin docs/{ => en}/_static/flow_warp_diff.png | Bin docs/{ => en}/_static/image/mmcv-logo.png | Bin docs/{ => en}/_static/parallel_progress.gif | Bin docs/{ => en}/_static/parallel_progress.png | Bin docs/{ => en}/_static/progress.gif | Bin docs/{ => en}/_static/progress.png | Bin docs/en/_static/qq_group_qrcode.jpg | Bin 0 -> 77256 bytes docs/en/_static/wechat_qrcode.jpg | Bin 0 -> 144827 bytes docs/en/_static/zhihu_qrcode.jpg | Bin 0 -> 2471708 bytes docs/{ => en}/api.rst | 5 + docs/en/community/contributing.md | 1 + docs/en/community/pr.md | 114 ++ docs/{ => en}/compatibility.md | 0 {docs_zh_CN => docs/en}/conf.py | 120 +- .../deployment/mmcv_ops_definition.md | 130 +- docs/en/deployment/onnx.md | 28 + .../deployment/onnxruntime_custom_ops.md | 24 +- docs/{ => en}/deployment/onnxruntime_op.md | 52 +- .../deployment/tensorrt_custom_ops.md | 6 +- docs/{ => en}/deployment/tensorrt_plugin.md | 55 +- docs/en/faq.md | 93 + docs/{ => en}/get_started/build.md | 145 +- docs/{ => en}/get_started/installation.md | 60 +- docs/{ => en}/get_started/introduction.md | 18 +- .../{ => en}/get_started/previous_versions.md | 4 +- docs/{ => en}/index.rst | 6 +- docs/{ => en}/make.bat | 0 docs/{ => en}/mmcv-logo.png | Bin docs/en/understand_mmcv/cnn.md | 583 ++++++ docs/{ => en}/understand_mmcv/config.md | 2 +- docs/{ => en}/understand_mmcv/data_process.md | 2 +- docs/{ => en}/understand_mmcv/io.md | 4 +- docs/en/understand_mmcv/ops.md | 60 + docs/{ => en}/understand_mmcv/registry.md | 44 +- docs/{ => en}/understand_mmcv/runner.md | 10 +- docs/{ => en}/understand_mmcv/utils.md | 0 .../{ => en}/understand_mmcv/visualization.md | 0 docs/faq.md | 42 - docs/understand_mmcv/cnn.md | 538 ------ docs/understand_mmcv/ops.md | 37 - {docs_zh_CN => docs/zh_cn}/Makefile | 0 .../zh_cn}/_static/css/readthedocs.css | 0 .../zh_cn}/_static/image/mmcv-logo.png | Bin {docs_zh_CN => docs/zh_cn}/api.rst | 5 + .../zh_cn}/community/contributing.md | 28 +- docs/zh_cn/community/pr.md | 114 ++ {docs_zh_CN => docs/zh_cn}/compatibility.md | 0 docs/{ => zh_cn}/conf.py | 116 +- {docs_zh_CN => docs/zh_cn}/deployment/onnx.md | 0 .../deployment/onnxruntime_custom_ops.md | 10 +- .../zh_cn}/deployment/onnxruntime_op.md | 44 +- .../zh_cn}/deployment/tensorrt_custom_ops.md | 16 +- .../zh_cn}/deployment/tensorrt_plugin.md | 47 +- docs/zh_cn/faq.md | 91 + .../zh_cn}/get_started/build.md | 159 +- .../zh_cn}/get_started/installation.md | 50 +- .../zh_cn}/get_started/introduction.md | 18 +- .../zh_cn}/get_started/previous_versions.md | 5 +- {docs_zh_CN => docs/zh_cn}/index.rst | 0 {docs_zh_CN => docs/zh_cn}/make.bat | 0 {docs_zh_CN => docs/zh_cn}/mmcv-logo.png | 0 docs/zh_cn/understand_mmcv/cnn.md | 570 ++++++ .../zh_cn}/understand_mmcv/config.md | 3 + .../zh_cn}/understand_mmcv/data_process.md | 10 +- .../zh_cn}/understand_mmcv/io.md | 1 + docs/zh_cn/understand_mmcv/ops.md | 60 + .../zh_cn}/understand_mmcv/registry.md | 47 +- .../zh_cn}/understand_mmcv/runner.md | 14 +- .../zh_cn}/understand_mmcv/utils.md | 5 +- .../zh_cn}/understand_mmcv/visualization.md | 0 docs_zh_CN/community/pr.md | 90 - docs_zh_CN/faq.md | 37 - docs_zh_CN/understand_mmcv/cnn.md | 525 ------ docs_zh_CN/understand_mmcv/ops.md | 36 - examples/train.py | 2 +- mmcv/__init__.py | 1 + mmcv/arraymisc/quantization.py | 22 +- mmcv/cnn/alexnet.py | 10 +- mmcv/cnn/bricks/activation.py | 13 +- mmcv/cnn/bricks/context_block.py | 18 +- mmcv/cnn/bricks/conv.py | 6 +- mmcv/cnn/bricks/conv2d_adaptive_padding.py | 20 +- mmcv/cnn/bricks/conv_module.py | 50 +- mmcv/cnn/bricks/conv_ws.py | 70 +- .../bricks/depthwise_separable_conv_module.py | 43 +- mmcv/cnn/bricks/drop.py | 16 +- mmcv/cnn/bricks/generalized_attention.py | 24 +- mmcv/cnn/bricks/hsigmoid.py | 29 +- mmcv/cnn/bricks/hswish.py | 18 +- mmcv/cnn/bricks/non_local.py | 60 +- mmcv/cnn/bricks/norm.py | 14 +- mmcv/cnn/bricks/padding.py | 6 +- mmcv/cnn/bricks/plugin.py | 28 +- mmcv/cnn/bricks/scale.py | 6 +- mmcv/cnn/bricks/swish.py | 4 +- mmcv/cnn/bricks/transformer.py | 387 +++- mmcv/cnn/bricks/upsample.py | 15 +- mmcv/cnn/bricks/wrappers.py | 20 +- mmcv/cnn/resnet.py | 98 +- mmcv/cnn/utils/flops_counter.py | 160 +- mmcv/cnn/utils/fuse_conv_bn.py | 4 +- mmcv/cnn/utils/sync_bn.py | 8 +- mmcv/cnn/utils/weight_init.py | 112 +- mmcv/cnn/vgg.py | 48 +- mmcv/device/__init__.py | 6 + mmcv/device/_functions.py | 30 + mmcv/device/ipu/__init__.py | 14 + mmcv/device/ipu/dataloader.py | 157 ++ mmcv/device/ipu/hierarchical_data_manager.py | 243 +++ mmcv/device/ipu/hook_wrapper.py | 105 ++ mmcv/device/ipu/model_wrapper.py | 721 ++++++++ mmcv/device/ipu/runner.py | 142 ++ mmcv/device/ipu/utils.py | 244 +++ mmcv/device/mlu/__init__.py | 5 + mmcv/device/mlu/_functions.py | 24 + mmcv/device/mlu/data_parallel.py | 41 + mmcv/device/mlu/distributed.py | 20 + mmcv/device/mlu/scatter_gather.py | 59 + mmcv/device/mps/__init__.py | 4 + mmcv/device/mps/data_parallel.py | 34 + mmcv/device/scatter_gather.py | 64 + mmcv/device/utils.py | 18 + mmcv/engine/test.py | 31 +- mmcv/fileio/file_client.py | 131 +- mmcv/fileio/handlers/base.py | 4 +- mmcv/fileio/handlers/pickle_handler.py | 6 +- mmcv/fileio/handlers/yaml_handler.py | 5 +- mmcv/fileio/io.py | 32 +- mmcv/fileio/parse.py | 22 +- mmcv/image/__init__.py | 11 +- mmcv/image/colorspace.py | 37 +- mmcv/image/geometric.py | 59 +- mmcv/image/io.py | 142 +- mmcv/image/misc.py | 27 +- mmcv/image/photometric.py | 43 + mmcv/model_zoo/torchvision_0.12.json | 57 + mmcv/onnx/info.py | 16 +- mmcv/onnx/onnx_utils/symbolic_helper.py | 4 +- mmcv/onnx/symbolic.py | 15 +- mmcv/ops/__init__.py | 33 +- mmcv/ops/active_rotated_filter.py | 64 + mmcv/ops/assign_score_withk.py | 26 +- mmcv/ops/ball_query.py | 13 +- mmcv/ops/bbox.py | 80 +- mmcv/ops/border_align.py | 33 +- mmcv/ops/box_iou_rotated.py | 123 +- mmcv/ops/carafe.py | 70 +- mmcv/ops/cc_attention.py | 15 +- mmcv/ops/chamfer_distance.py | 95 + mmcv/ops/contour_expand.py | 17 +- mmcv/ops/convex_iou.py | 52 + mmcv/ops/corner_pool.py | 113 +- mmcv/ops/correlation.py | 22 +- mmcv/ops/csrc/README.md | 175 +- .../ops/csrc/common/box_iou_rotated_utils.hpp | 4 + .../active_rotated_filter_cuda_kernel.cuh | 59 + .../cuda/assign_score_withk_cuda_kernel.cuh | 132 +- .../common/cuda/ball_query_cuda_kernel.cuh | 49 +- .../common/cuda/bbox_overlaps_cuda_kernel.cuh | 175 +- .../csrc/common/cuda/carafe_cuda_kernel.cuh | 4 +- .../cuda/chamfer_distance_cuda_kernel.cuh | 101 ++ .../csrc/common/cuda/common_cuda_helper.hpp | 16 +- .../common/cuda/convex_iou_cuda_kernel.cuh | 831 +++++++++ .../ops/csrc/common/cuda/correlation_cuda.cuh | 172 +- .../cuda/diff_iou_rotated_cuda_kernel.cuh | 136 ++ .../common/cuda/gather_points_cuda_kernel.cuh | 28 +- .../common/cuda/group_points_cuda_kernel.cuh | 36 +- .../csrc/common/cuda/iou3d_cuda_kernel.cuh | 290 ++- mmcv/ops/csrc/common/cuda/knn_cuda_kernel.cuh | 61 +- .../common/cuda/min_area_polygons_cuda.cuh | 300 ++++ .../cuda/ms_deform_attn_cuda_kernel.cuh | 137 +- mmcv/ops/csrc/common/cuda/nms_cuda_kernel.cuh | 105 +- .../ops/csrc/common/cuda/nms_rotated_cuda.cuh | 14 +- .../cuda/points_in_boxes_cuda_kernel.cuh | 48 +- .../cuda/points_in_polygons_cuda_kernel.cuh | 79 + .../common/cuda/prroi_pool_cuda_kernel.cuh | 381 ++++ .../cuda/riroi_align_rotated_cuda_kernel.cuh | 242 +++ .../cuda/roi_align_rotated_cuda_kernel.cuh | 16 +- .../cuda/roiaware_pool3d_cuda_kernel.cuh | 252 ++- .../cuda/roipoint_pool3d_cuda_kernel.cuh | 116 +- .../rotated_feature_align_cuda_kernel.cuh | 129 ++ mmcv/ops/csrc/common/cuda/spconv/indice.cuh | 236 +++ .../csrc/common/cuda/spconv/reordering.cuh | 160 ++ .../cuda/three_interpolate_cuda_kernel.cuh | 42 +- .../csrc/common/cuda/three_nn_cuda_kernel.cuh | 75 +- .../common/cuda/voxelization_cuda_kernel.cuh | 57 +- .../common/mlu/bbox_overlaps_mlu_kernel.mlu | 322 ++++ .../ops/csrc/common/mlu/common_mlu_helper.hpp | 190 ++ .../mlu/focal_loss_sigmoid_mlu_kernel.mlu | 888 +++++++++ mmcv/ops/csrc/common/mlu/nms_mlu_kernel.mlu | 1161 ++++++++++++ .../csrc/common/mlu/psamask_mlu_kernel.mlu | 615 +++++++ mmcv/ops/csrc/common/mlu/psamask_utils.hpp | 55 + .../csrc/common/mlu/roi_align_mlu_kernel.mlu | 493 +++++ .../mlu/roi_align_rotated_mlu_kernel.mlu | 472 +++++ .../common/mlu/roi_align_rotated_utils.hpp | 24 + .../csrc/common/mlu/roi_pool_mlu_kernel.mlu | 749 ++++++++ .../csrc/common/mlu/tin_shift_mlu_kernel.mlu | 307 ++++ mmcv/ops/csrc/common/mps/MPSDevice.h | 64 + mmcv/ops/csrc/common/mps/MPSLibrary.h | 61 + mmcv/ops/csrc/common/mps/MPSLibrary.mm | 110 ++ mmcv/ops/csrc/common/mps/MPSStream.h | 132 ++ mmcv/ops/csrc/common/mps/MPSUtils.h | 51 + mmcv/ops/csrc/common/pytorch_cpp_helper.hpp | 11 +- mmcv/ops/csrc/common/pytorch_mlu_helper.hpp | 28 + .../ops/csrc/common/utils/spconv/paramsgrid.h | 70 + .../csrc/common/utils/spconv/prettyprint.h | 493 +++++ .../csrc/common/utils/spconv/pybind11_utils.h | 60 + .../common/utils/spconv/spconv/geometry.h | 297 +++ .../csrc/common/utils/spconv/spconv/indice.h | 78 + .../csrc/common/utils/spconv/spconv/maxpool.h | 37 + .../common/utils/spconv/spconv/mp_helper.h | 50 + .../common/utils/spconv/spconv/point2voxel.h | 385 ++++ .../common/utils/spconv/spconv/reordering.h | 36 + .../utils/spconv/tensorview/helper_kernel.cuh | 75 + .../utils/spconv/tensorview/helper_launch.h | 19 + .../utils/spconv/tensorview/tensorview.h | 1119 ++++++++++++ .../onnxruntime/cpu/onnxruntime_register.cpp | 7 + .../onnxruntime/cpu/rotated_feature_align.cpp | 132 ++ .../csrc/onnxruntime/rotated_feature_align.h | 50 + .../csrc/parrots/active_rotated_filter.cpp | 28 + .../parrots/active_rotated_filter_parrots.cpp | 63 + .../parrots/active_rotated_filter_pytorch.h | 13 + mmcv/ops/csrc/parrots/assign_score_withk.cpp | 73 +- mmcv/ops/csrc/parrots/ball_query.cpp | 31 +- mmcv/ops/csrc/parrots/bbox_overlaps.cpp | 26 +- mmcv/ops/csrc/parrots/border_align.cpp | 58 +- mmcv/ops/csrc/parrots/box_iou_rotated.cpp | 24 +- mmcv/ops/csrc/parrots/box_iou_rotated_cpu.cpp | 33 - mmcv/ops/csrc/parrots/carafe.cpp | 74 +- mmcv/ops/csrc/parrots/carafe_naive.cpp | 61 +- mmcv/ops/csrc/parrots/contour_expand.cpp | 1 - mmcv/ops/csrc/parrots/convex_iou.cpp | 23 + mmcv/ops/csrc/parrots/convex_iou_parrots.cpp | 40 + mmcv/ops/csrc/parrots/convex_iou_pytorch.h | 11 + mmcv/ops/csrc/parrots/corner_pool.cpp | 240 --- mmcv/ops/csrc/parrots/corner_pool_parrots.cpp | 234 --- mmcv/ops/csrc/parrots/corner_pool_pytorch.h | 15 - mmcv/ops/csrc/parrots/correlation.cpp | 74 +- mmcv/ops/csrc/parrots/cudabind.cpp | 1591 +++++++++++++++++ mmcv/ops/csrc/parrots/deform_conv.cpp | 141 +- mmcv/ops/csrc/parrots/deform_conv_cpu.cpp | 377 ---- mmcv/ops/csrc/parrots/deform_roi_pool.cpp | 70 +- mmcv/ops/csrc/parrots/diff_iou_rotated.cpp | 14 + .../csrc/parrots/diff_iou_rotated_parrots.cpp | 28 + .../csrc/parrots/diff_iou_rotated_pytorch.h | 10 + mmcv/ops/csrc/parrots/focal_loss.cpp | 116 +- .../csrc/parrots/furthest_point_sample.cpp | 60 +- .../ops/csrc/parrots/fused_bias_leakyrelu.cpp | 132 +- mmcv/ops/csrc/parrots/gather_points.cpp | 51 +- mmcv/ops/csrc/parrots/group_points.cpp | 50 +- mmcv/ops/csrc/parrots/info.cpp | 56 + mmcv/ops/csrc/parrots/iou3d.cpp | 261 +-- mmcv/ops/csrc/parrots/iou3d_parrots.cpp | 34 +- mmcv/ops/csrc/parrots/iou3d_pytorch.h | 12 +- mmcv/ops/csrc/parrots/knn.cpp | 27 +- mmcv/ops/csrc/parrots/masked_conv2d.cpp | 64 +- mmcv/ops/csrc/parrots/min_area_polygons.cpp | 11 + .../parrots/min_area_polygons_parrots.cpp | 26 + .../csrc/parrots/min_area_polygons_pytorch.h | 9 + .../csrc/parrots/modulated_deform_conv.cpp | 195 +- .../parrots/modulated_deform_conv_cpu.cpp | 403 ----- mmcv/ops/csrc/parrots/ms_deform_attn.cpp | 65 +- mmcv/ops/csrc/parrots/nms.cpp | 260 +-- mmcv/ops/csrc/parrots/nms_rotated_cpu.cpp | 66 - mmcv/ops/csrc/parrots/pixel_group.cpp | 125 +- mmcv/ops/csrc/parrots/points_in_boxes.cpp | 88 +- mmcv/ops/csrc/parrots/points_in_boxes_cpu.cpp | 53 - mmcv/ops/csrc/parrots/points_in_polygons.cpp | 15 + .../parrots/points_in_polygons_parrots.cpp | 28 + .../csrc/parrots/points_in_polygons_pytorch.h | 9 + mmcv/ops/csrc/parrots/psamask.cpp | 241 +-- mmcv/ops/csrc/parrots/riroi_align_rotated.cpp | 42 + .../parrots/riroi_align_rotated_parrots.cpp | 86 + .../parrots/riroi_align_rotated_pytorch.h | 18 + mmcv/ops/csrc/parrots/roi_align.cpp | 119 +- mmcv/ops/csrc/parrots/roi_align_cpu.cpp | 430 ----- mmcv/ops/csrc/parrots/roi_align_rotated.cpp | 154 +- .../csrc/parrots/roi_align_rotated_cpu.cpp | 417 ----- .../parrots/roi_align_rotated_parrots.cpp | 28 +- .../csrc/parrots/roi_align_rotated_pytorch.h | 12 +- mmcv/ops/csrc/parrots/roi_pool.cpp | 58 +- mmcv/ops/csrc/parrots/roiaware_pool3d.cpp | 111 +- mmcv/ops/csrc/parrots/roipoint_pool3d.cpp | 49 +- .../csrc/parrots/rotated_feature_align.cpp | 39 + .../parrots/rotated_feature_align_parrots.cpp | 99 + .../parrots/rotated_feature_align_pytorch.h | 17 + mmcv/ops/csrc/parrots/sync_bn.cpp | 136 +- mmcv/ops/csrc/parrots/three_interpolate.cpp | 54 +- mmcv/ops/csrc/parrots/three_nn.cpp | 26 +- mmcv/ops/csrc/parrots/tin_shift.cpp | 46 +- mmcv/ops/csrc/parrots/upfirdn2d.cpp | 130 +- mmcv/ops/csrc/parrots/voxelization.cpp | 83 +- mmcv/ops/csrc/parrots/voxelization_cpu.cpp | 152 -- .../ops/csrc/parrots/voxelization_parrots.cpp | 9 +- mmcv/ops/csrc/parrots/voxelization_pytorch.h | 3 +- .../csrc/pytorch/active_rotated_filter.cpp | 28 + mmcv/ops/csrc/pytorch/chamfer_distance.cpp | 35 + mmcv/ops/csrc/pytorch/contour_expand.cpp | 1 - mmcv/ops/csrc/pytorch/convex_iou.cpp | 23 + mmcv/ops/csrc/pytorch/corner_pool.cpp | 240 --- .../pytorch/cpu/active_rotated_filter.cpp | 120 ++ mmcv/ops/csrc/pytorch/cpu/nms_rotated.cpp | 2 +- mmcv/ops/csrc/pytorch/cpu/pixel_group.cpp | 6 +- .../csrc/pytorch/cpu/roi_align_rotated.cpp | 9 +- .../pytorch/cpu/rotated_feature_align.cpp | 262 +++ mmcv/ops/csrc/pytorch/cpu/sparse_indice.cpp | 84 + mmcv/ops/csrc/pytorch/cpu/sparse_maxpool.cpp | 82 + .../csrc/pytorch/cpu/sparse_reordering.cpp | 68 + mmcv/ops/csrc/pytorch/cpu/voxelization.cpp | 30 +- .../cuda/active_rotated_filter_cuda.cu | 58 + .../pytorch/cuda/assign_score_withk_cuda.cu | 6 +- mmcv/ops/csrc/pytorch/cuda/ball_query_cuda.cu | 2 +- .../csrc/pytorch/cuda/bbox_overlaps_cuda.cu | 16 + .../pytorch/cuda/chamfer_distance_cuda.cu | 63 + mmcv/ops/csrc/pytorch/cuda/convex_iou.cu | 41 + .../ops/csrc/pytorch/cuda/correlation_cuda.cu | 41 +- mmcv/ops/csrc/pytorch/cuda/cudabind.cpp | 534 +++++- .../pytorch/cuda/diff_iou_rotated_cuda.cu | 35 + .../pytorch/cuda/fused_spconv_ops_cuda.cu | 104 ++ .../csrc/pytorch/cuda/gather_points_cuda.cu | 4 +- .../csrc/pytorch/cuda/group_points_cuda.cu | 4 +- mmcv/ops/csrc/pytorch/cuda/iou3d_cuda.cu | 51 +- mmcv/ops/csrc/pytorch/cuda/knn_cuda.cu | 2 +- .../csrc/pytorch/cuda/min_area_polygons.cu | 21 + .../csrc/pytorch/cuda/ms_deform_attn_cuda.cu | 18 +- mmcv/ops/csrc/pytorch/cuda/nms_cuda.cu | 39 +- .../csrc/pytorch/cuda/points_in_boxes_cuda.cu | 4 +- .../pytorch/cuda/points_in_polygons_cuda.cu | 28 + mmcv/ops/csrc/pytorch/cuda/prroi_pool_cuda.cu | 65 + mmcv/ops/csrc/pytorch/cuda/psamask_cuda.cu | 3 - .../pytorch/cuda/riroi_align_rotated_cuda.cu | 53 + .../pytorch/cuda/roi_align_rotated_cuda.cu | 14 +- .../csrc/pytorch/cuda/roiaware_pool3d_cuda.cu | 10 +- .../csrc/pytorch/cuda/roipoint_pool3d_cuda.cu | 6 +- .../cuda/rotated_feature_align_cuda.cu | 53 + .../csrc/pytorch/cuda/scatter_points_cuda.cu | 13 +- mmcv/ops/csrc/pytorch/cuda/sparse_indice.cu | 156 ++ mmcv/ops/csrc/pytorch/cuda/sparse_maxpool.cu | 483 +++++ .../csrc/pytorch/cuda/sparse_pool_ops_cuda.cu | 89 + .../csrc/pytorch/cuda/sparse_reordering.cu | 157 ++ mmcv/ops/csrc/pytorch/cuda/spconv_ops_cuda.cu | 474 +++++ .../pytorch/cuda/three_interpolate_cuda.cu | 4 +- mmcv/ops/csrc/pytorch/cuda/three_nn_cuda.cu | 2 +- .../csrc/pytorch/cuda/voxelization_cuda.cu | 98 + mmcv/ops/csrc/pytorch/diff_iou_rotated.cpp | 14 + mmcv/ops/csrc/pytorch/fused_spconv_ops.cpp | 34 + mmcv/ops/csrc/pytorch/iou3d.cpp | 58 +- mmcv/ops/csrc/pytorch/min_area_polygons.cpp | 11 + .../csrc/pytorch/mlu/bbox_overlaps_mlu.cpp | 100 ++ .../pytorch/mlu/focal_loss_sigmoid_mlu.cpp | 332 ++++ mmcv/ops/csrc/pytorch/mlu/nms_mlu.cpp | 130 ++ mmcv/ops/csrc/pytorch/mlu/psamask_mlu.cpp | 308 ++++ mmcv/ops/csrc/pytorch/mlu/roi_align_mlu.cpp | 206 +++ .../pytorch/mlu/roi_align_rotated_mlu.cpp | 232 +++ mmcv/ops/csrc/pytorch/mlu/roi_pool_mlu.cpp | 275 +++ mmcv/ops/csrc/pytorch/mlu/tin_shift_mlu.cpp | 203 +++ .../ops/csrc/pytorch/mps/bbox_overlaps_mps.mm | 99 + mmcv/ops/csrc/pytorch/points_in_polygons.cpp | 15 + mmcv/ops/csrc/pytorch/prroi_pool.cpp | 47 + mmcv/ops/csrc/pytorch/pybind.cpp | 285 ++- mmcv/ops/csrc/pytorch/riroi_align_rotated.cpp | 42 + mmcv/ops/csrc/pytorch/roi_align_rotated.cpp | 12 +- .../csrc/pytorch/rotated_feature_align.cpp | 39 + mmcv/ops/csrc/pytorch/sparse_pool_ops.cpp | 48 + mmcv/ops/csrc/pytorch/spconv_ops.cpp | 171 ++ mmcv/ops/csrc/pytorch/spconv_utils.h | 79 + mmcv/ops/csrc/pytorch/voxelization.cpp | 26 +- .../plugins/trt_corner_pool_kernel.cu | 4 +- .../tensorrt/plugins/trt_cummaxmin_kernel.cu | 2 +- .../csrc/tensorrt/plugins/trt_deform_conv.cpp | 2 +- .../plugins/trt_modulated_deform_conv.cpp | 2 +- .../csrc/tensorrt/plugins/trt_nms_kernel.cu | 6 +- .../tensorrt/plugins/trt_scatternd_kernel.cu | 2 +- mmcv/ops/csrc/tensorrt/trt_cuda_helper.cuh | 2 - mmcv/ops/deform_conv.py | 33 +- mmcv/ops/deform_roi_pool.py | 71 +- mmcv/ops/deprecated_wrappers.py | 11 +- mmcv/ops/diff_iou_rotated.py | 301 ++++ mmcv/ops/focal_loss.py | 71 +- mmcv/ops/furthest_point_sample.py | 9 +- mmcv/ops/fused_bias_leakyrelu.py | 50 +- mmcv/ops/gather_points.py | 14 +- mmcv/ops/group_points.py | 44 +- mmcv/ops/iou3d.py | 211 ++- mmcv/ops/knn.py | 17 +- mmcv/ops/masked_conv.py | 41 +- mmcv/ops/merge_cells.py | 65 +- mmcv/ops/min_area_polygons.py | 20 + mmcv/ops/modulated_deform_conv.py | 55 +- mmcv/ops/multi_scale_deform_attn.py | 115 +- mmcv/ops/nms.py | 208 ++- mmcv/ops/pixel_group.py | 29 +- mmcv/ops/point_sample.py | 118 +- mmcv/ops/points_in_boxes.py | 20 +- mmcv/ops/points_in_polygons.py | 38 + mmcv/ops/points_sampler.py | 45 +- mmcv/ops/prroi_pool.py | 134 ++ mmcv/ops/psa_mask.py | 16 +- mmcv/ops/riroi_align_rotated.py | 139 ++ mmcv/ops/roi_align.py | 41 +- mmcv/ops/roi_align_rotated.py | 141 +- mmcv/ops/roi_pool.py | 20 +- mmcv/ops/roiaware_pool3d.py | 26 +- mmcv/ops/roipoint_pool3d.py | 30 +- mmcv/ops/rotated_feature_align.py | 95 + mmcv/ops/saconv.py | 5 +- mmcv/ops/scatter_points.py | 47 +- mmcv/ops/sparse_conv.py | 455 +++++ mmcv/ops/sparse_functional.py | 156 ++ mmcv/ops/sparse_modules.py | 203 +++ mmcv/ops/sparse_ops.py | 174 ++ mmcv/ops/sparse_pool.py | 86 + mmcv/ops/sparse_structure.py | 66 + mmcv/ops/sync_bn.py | 28 +- mmcv/ops/three_interpolate.py | 21 +- mmcv/ops/three_nn.py | 12 +- mmcv/ops/tin_shift.py | 13 +- mmcv/ops/upfirdn2d.py | 43 +- mmcv/ops/voxelize.py | 86 +- mmcv/parallel/_functions.py | 27 +- mmcv/parallel/collate.py | 2 +- mmcv/parallel/data_container.py | 34 +- mmcv/parallel/data_parallel.py | 12 +- mmcv/parallel/distributed.py | 77 +- mmcv/parallel/distributed_deprecated.py | 22 +- mmcv/parallel/scatter_gather.py | 27 +- mmcv/parallel/utils.py | 20 +- mmcv/runner/__init__.py | 42 +- mmcv/runner/base_module.py | 48 +- mmcv/runner/base_runner.py | 158 +- mmcv/runner/builder.py | 5 +- mmcv/runner/checkpoint.py | 248 ++- mmcv/runner/default_constructor.py | 5 +- mmcv/runner/dist_utils.py | 89 +- mmcv/runner/epoch_based_runner.py | 28 +- mmcv/runner/fp16_utils.py | 81 +- mmcv/runner/hooks/__init__.py | 43 +- mmcv/runner/hooks/checkpoint.py | 27 +- mmcv/runner/hooks/closure.py | 4 +- mmcv/runner/hooks/ema.py | 16 +- mmcv/runner/hooks/evaluation.py | 78 +- mmcv/runner/hooks/logger/__init__.py | 5 +- mmcv/runner/hooks/logger/base.py | 54 +- mmcv/runner/hooks/logger/clearml.py | 63 + mmcv/runner/hooks/logger/dvclive.py | 67 +- mmcv/runner/hooks/logger/mlflow.py | 81 +- mmcv/runner/hooks/logger/neptune.py | 75 +- mmcv/runner/hooks/logger/pavi.py | 72 +- mmcv/runner/hooks/logger/segmind.py | 48 + mmcv/runner/hooks/logger/tensorboard.py | 34 +- mmcv/runner/hooks/logger/text.py | 58 +- mmcv/runner/hooks/logger/wandb.py | 83 +- mmcv/runner/hooks/lr_updater.py | 286 +-- mmcv/runner/hooks/memory.py | 5 +- mmcv/runner/hooks/momentum_updater.py | 207 ++- mmcv/runner/hooks/optimizer.py | 119 +- mmcv/runner/hooks/profiler.py | 12 +- mmcv/runner/hooks/sync_buffer.py | 2 +- mmcv/runner/iter_based_runner.py | 42 +- mmcv/runner/log_buffer.py | 8 +- mmcv/runner/optimizer/builder.py | 7 +- mmcv/runner/optimizer/default_constructor.py | 39 +- mmcv/runner/priority.py | 3 +- mmcv/runner/utils.py | 14 +- mmcv/tensorrt/__init__.py | 4 +- mmcv/tensorrt/init_plugins.py | 45 +- mmcv/tensorrt/preprocess.py | 18 +- mmcv/tensorrt/tensorrt_utils.py | 84 +- mmcv/utils/__init__.py | 25 +- mmcv/utils/config.py | 135 +- mmcv/utils/device_type.py | 40 + mmcv/utils/env.py | 37 +- mmcv/utils/ext_loader.py | 3 +- mmcv/utils/hub.py | 26 +- mmcv/utils/logging.py | 3 +- mmcv/utils/misc.py | 4 +- mmcv/utils/parrots_wrapper.py | 11 +- mmcv/utils/path.py | 2 +- mmcv/utils/registry.py | 81 +- mmcv/utils/seed.py | 23 + mmcv/utils/testing.py | 3 +- mmcv/utils/timer.py | 74 +- mmcv/utils/torch_ops.py | 29 + mmcv/utils/trace.py | 1 + mmcv/utils/version_utils.py | 2 +- mmcv/version.py | 6 +- mmcv/video/io.py | 35 +- mmcv/video/optflow.py | 48 +- mmcv/video/processing.py | 57 +- mmcv/visualization/color.py | 5 +- mmcv/visualization/image.py | 63 +- mmcv/visualization/optflow.py | 14 +- requirements.txt | 9 +- requirements/build.txt | 1 + requirements/docs.txt | 2 +- requirements/optional.txt | 1 + requirements/test.txt | 9 +- setup.cfg | 10 +- setup.py | 128 +- tests/data/config/a.b.py | 1 + tests/data/config/a.py | 1 + tests/data/config/base.py | 1 + tests/data/config/code.py | 1 + tests/data/config/d.py | 1 + tests/data/config/delete.py | 4 +- tests/data/config/deprecated.py | 1 + tests/data/config/deprecated_as_base.py | 1 + tests/data/config/e.py | 1 + tests/data/config/expected.py | 1 + tests/data/config/f.py | 1 + tests/data/config/g.py | 1 + tests/data/config/h.py | 1 + tests/data/config/i_base.py | 1 + tests/data/config/i_child.py | 1 + tests/data/config/l.py | 7 + tests/data/config/l1.py | 1 + tests/data/config/l4.py | 1 + tests/data/config/m.py | 1 + tests/data/config/n.py | 7 + tests/data/config/q.py | 1 + tests/data/config/r.py | 1 + tests/data/config/s.py | 1 + tests/data/config/t.py | 1 + tests/data/config/u.py | 1 + tests/data/config/v.py | 1 + tests/data/scripts/hello.py | 1 + tests/test_arraymisc.py | 1 - tests/test_cnn/test_build_layers.py | 12 +- tests/test_cnn/test_context_block.py | 1 + .../test_cnn/test_conv2d_adaptive_padding.py | 1 + tests/test_cnn/test_conv_module.py | 11 +- .../test_depthwise_seperable_conv_module.py | 1 + tests/test_cnn/test_flops_counter.py | 1 + tests/test_cnn/test_fuse_conv_bn.py | 1 + tests/test_cnn/test_generalized_attention.py | 1 + tests/test_cnn/test_hsigmoid.py | 7 +- tests/test_cnn/test_hswish.py | 1 + tests/test_cnn/test_model_registry.py | 1 + tests/test_cnn/test_non_local.py | 1 + tests/test_cnn/test_revert_syncbn.py | 3 + tests/test_cnn/test_scale.py | 1 + tests/test_cnn/test_swish.py | 5 +- tests/test_cnn/test_transformer.py | 485 ++++- tests/test_cnn/test_weight_init.py | 3 + tests/test_cnn/test_wrappers.py | 1 + tests/test_device/test_device_utils.py | 15 + tests/test_device/test_functions.py | 90 + .../test_ipu/test_hierarchicaldatamanager.py | 106 ++ .../test_ipu/test_ipu_dataloder.py | 69 + tests/test_device/test_ipu/test_ipu_hooks.py | 130 ++ tests/test_device/test_ipu/test_ipu_model.py | 301 ++++ tests/test_device/test_ipu/test_ipu_runner.py | 126 ++ tests/test_device/test_ipu/test_ipu_utils.py | 194 ++ .../test_device/test_mlu/test_mlu_parallel.py | 37 + .../test_device/test_mps/test_mps_parallel.py | 34 + tests/test_fileclient.py | 84 +- tests/test_fileio.py | 2 +- tests/test_image/test_geometric.py | 4 + tests/test_image/test_image_misc.py | 21 + tests/test_image/test_io.py | 67 +- tests/test_image/test_photometric.py | 48 +- tests/test_load_model_zoo.py | 50 +- tests/test_ops/test_active_rotated_filter.py | 258 +++ tests/test_ops/test_assign_score_withk.py | 1 + tests/test_ops/test_ball_query.py | 1 + tests/test_ops/test_bbox.py | 54 +- tests/test_ops/test_bilinear_grid_sample.py | 7 +- tests/test_ops/test_border_align.py | 3 +- tests/test_ops/test_box_iou_rotated.py | 48 +- tests/test_ops/test_carafe.py | 3 +- tests/test_ops/test_cc_attention.py | 3 +- tests/test_ops/test_chamfer_distance.py | 57 + tests/test_ops/test_contour_expand.py | 1 + tests/test_ops/test_convex_iou.py | 56 + tests/test_ops/test_corner_pool.py | 1 + tests/test_ops/test_correlation.py | 11 +- tests/test_ops/test_deform_conv.py | 3 +- tests/test_ops/test_deform_roi_pool.py | 3 +- tests/test_ops/test_diff_iou_rotated.py | 49 + tests/test_ops/test_focal_loss.py | 44 +- tests/test_ops/test_furthest_point_sample.py | 1 + tests/test_ops/test_fused_bias_leakyrelu.py | 3 +- tests/test_ops/test_gather_points.py | 5 + tests/test_ops/test_group_points.py | 1 + tests/test_ops/test_info.py | 3 +- tests/test_ops/test_iou3d.py | 110 +- tests/test_ops/test_knn.py | 1 + tests/test_ops/test_masked_conv2d.py | 3 +- tests/test_ops/test_merge_cells.py | 80 +- tests/test_ops/test_min_area_polygons.py | 30 + tests/test_ops/test_modulated_deform_conv.py | 3 +- tests/test_ops/test_ms_deformable_attn.py | 9 +- tests/test_ops/test_nms.py | 35 +- tests/test_ops/test_nms_rotated.py | 64 + tests/test_ops/test_onnx.py | 156 +- tests/test_ops/test_pixel_group.py | 1 + tests/test_ops/test_points_in_polygons.py | 23 + tests/test_ops/test_prroi_pool.py | 99 + tests/test_ops/test_psa_mask.py | 50 +- tests/test_ops/test_riroi_align_rotated.py | 84 + tests/test_ops/test_roi_align.py | 31 +- tests/test_ops/test_roi_align_rotated.py | 53 +- tests/test_ops/test_roi_pool.py | 39 +- tests/test_ops/test_roiaware_pool3d.py | 8 + tests/test_ops/test_roipoint_pool3d.py | 3 +- tests/test_ops/test_rotated_feature_align.py | 131 ++ tests/test_ops/test_saconv.py | 1 + tests/test_ops/test_scatter_points.py | 50 +- tests/test_ops/test_spconv.py | 133 ++ tests/test_ops/test_syncbn.py | 3 +- tests/test_ops/test_tensorrt.py | 13 +- tests/test_ops/test_tensorrt_preprocess.py | 5 + tests/test_ops/test_three_interpolate.py | 1 + tests/test_ops/test_three_nn.py | 1 + tests/test_ops/test_tin_shift.py | 57 +- tests/test_ops/test_upfirdn2d.py | 3 +- tests/test_ops/test_voxelization.py | 80 +- tests/test_parallel.py | 130 +- tests/test_runner/test_basemodule.py | 66 +- tests/test_runner/test_checkpoint.py | 46 +- tests/test_runner/test_dist_utils.py | 1 + tests/test_runner/test_eval_hook.py | 1 + tests/test_runner/test_fp16.py | 21 +- tests/test_runner/test_hooks.py | 575 +++++- tests/test_runner/test_optimizer.py | 1 + tests/test_runner/test_runner.py | 2 +- tests/test_runner/test_utils.py | 1 + tests/test_utils/test_config.py | 173 +- tests/test_utils/test_env.py | 7 +- tests/test_utils/test_hub.py | 4 + tests/test_utils/test_logging.py | 3 +- tests/test_utils/test_misc.py | 1 - tests/test_utils/test_parrots_jit.py | 6 +- tests/test_utils/test_path.py | 48 +- tests/test_utils/test_progressbar.py | 14 +- tests/test_utils/test_registry.py | 32 +- tests/test_utils/test_testing.py | 5 +- tests/test_utils/test_torch_ops.py | 15 + tests/test_utils/test_trace.py | 1 + tests/test_utils/test_version_utils.py | 3 +- tests/test_video/test_reader.py | 2 +- tests/test_visualization.py | 2 +- 667 files changed, 38227 insertions(+), 11845 deletions(-) delete mode 100644 Dockerfile delete mode 100644 README_ORIGIN.md create mode 100644 docker/README.md create mode 100644 docker/dev/Dockerfile create mode 100644 docker/release/Dockerfile delete mode 100644 docs/_static/qq_group_qrcode.jpg delete mode 100644 docs/_static/zhihu_qrcode.jpg delete mode 120000 docs/community/contributing.md delete mode 100644 docs/community/pr.md delete mode 100644 docs/deployment/onnx.md rename docs/{ => en}/Makefile (100%) rename docs/{ => en}/_static/community/1.png (100%) rename docs/{ => en}/_static/community/2.png (100%) rename docs/{ => en}/_static/community/3.png (100%) rename docs/{ => en}/_static/css/readthedocs.css (100%) rename docs/{ => en}/_static/flow_img2toimg1.png (100%) rename docs/{ => en}/_static/flow_raw_images.png (100%) rename docs/{ => en}/_static/flow_visualization.png (100%) rename docs/{ => en}/_static/flow_warp.png (100%) rename docs/{ => en}/_static/flow_warp_diff.png (100%) rename docs/{ => en}/_static/image/mmcv-logo.png (100%) rename docs/{ => en}/_static/parallel_progress.gif (100%) rename docs/{ => en}/_static/parallel_progress.png (100%) rename docs/{ => en}/_static/progress.gif (100%) rename docs/{ => en}/_static/progress.png (100%) create mode 100644 docs/en/_static/qq_group_qrcode.jpg create mode 100644 docs/en/_static/wechat_qrcode.jpg create mode 100644 docs/en/_static/zhihu_qrcode.jpg rename docs/{ => en}/api.rst (90%) create mode 120000 docs/en/community/contributing.md create mode 100644 docs/en/community/pr.md rename docs/{ => en}/compatibility.md (100%) rename {docs_zh_CN => docs/en}/conf.py (61%) rename docs/{ => en}/deployment/mmcv_ops_definition.md (80%) create mode 100644 docs/en/deployment/onnx.md rename docs/{ => en}/deployment/onnxruntime_custom_ops.md (98%) rename docs/{ => en}/deployment/onnxruntime_op.md (65%) rename docs/{ => en}/deployment/tensorrt_custom_ops.md (96%) rename docs/{ => en}/deployment/tensorrt_plugin.md (72%) create mode 100644 docs/en/faq.md rename docs/{ => en}/get_started/build.md (61%) rename docs/{ => en}/get_started/installation.md (75%) rename docs/{ => en}/get_started/introduction.md (62%) rename docs/{ => en}/get_started/previous_versions.md (93%) rename docs/{ => en}/index.rst (100%) rename docs/{ => en}/make.bat (100%) rename docs/{ => en}/mmcv-logo.png (100%) create mode 100644 docs/en/understand_mmcv/cnn.md rename docs/{ => en}/understand_mmcv/config.md (95%) rename docs/{ => en}/understand_mmcv/data_process.md (99%) rename docs/{ => en}/understand_mmcv/io.md (98%) create mode 100644 docs/en/understand_mmcv/ops.md rename docs/{ => en}/understand_mmcv/registry.md (74%) rename docs/{ => en}/understand_mmcv/runner.md (88%) rename docs/{ => en}/understand_mmcv/utils.md (100%) rename docs/{ => en}/understand_mmcv/visualization.md (100%) delete mode 100644 docs/faq.md delete mode 100644 docs/understand_mmcv/cnn.md delete mode 100644 docs/understand_mmcv/ops.md rename {docs_zh_CN => docs/zh_cn}/Makefile (100%) rename {docs_zh_CN => docs/zh_cn}/_static/css/readthedocs.css (100%) rename {docs_zh_CN => docs/zh_cn}/_static/image/mmcv-logo.png (100%) rename {docs_zh_CN => docs/zh_cn}/api.rst (90%) rename {docs_zh_CN => docs/zh_cn}/community/contributing.md (68%) create mode 100644 docs/zh_cn/community/pr.md rename {docs_zh_CN => docs/zh_cn}/compatibility.md (100%) rename docs/{ => zh_cn}/conf.py (62%) rename {docs_zh_CN => docs/zh_cn}/deployment/onnx.md (100%) rename {docs_zh_CN => docs/zh_cn}/deployment/onnxruntime_custom_ops.md (98%) rename {docs_zh_CN => docs/zh_cn}/deployment/onnxruntime_op.md (78%) rename {docs_zh_CN => docs/zh_cn}/deployment/tensorrt_custom_ops.md (95%) rename {docs_zh_CN => docs/zh_cn}/deployment/tensorrt_plugin.md (79%) create mode 100644 docs/zh_cn/faq.md rename {docs_zh_CN => docs/zh_cn}/get_started/build.md (50%) rename {docs_zh_CN => docs/zh_cn}/get_started/installation.md (74%) rename {docs_zh_CN => docs/zh_cn}/get_started/introduction.md (62%) rename {docs_zh_CN => docs/zh_cn}/get_started/previous_versions.md (93%) rename {docs_zh_CN => docs/zh_cn}/index.rst (100%) rename {docs_zh_CN => docs/zh_cn}/make.bat (100%) rename {docs_zh_CN => docs/zh_cn}/mmcv-logo.png (100%) create mode 100644 docs/zh_cn/understand_mmcv/cnn.md rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/config.md (99%) rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/data_process.md (96%) rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/io.md (99%) create mode 100644 docs/zh_cn/understand_mmcv/ops.md rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/registry.md (76%) rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/runner.md (88%) rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/utils.md (93%) rename {docs_zh_CN => docs/zh_cn}/understand_mmcv/visualization.md (100%) delete mode 100644 docs_zh_CN/community/pr.md delete mode 100644 docs_zh_CN/faq.md delete mode 100644 docs_zh_CN/understand_mmcv/cnn.md delete mode 100644 docs_zh_CN/understand_mmcv/ops.md create mode 100644 mmcv/device/__init__.py create mode 100644 mmcv/device/_functions.py create mode 100755 mmcv/device/ipu/__init__.py create mode 100755 mmcv/device/ipu/dataloader.py create mode 100755 mmcv/device/ipu/hierarchical_data_manager.py create mode 100755 mmcv/device/ipu/hook_wrapper.py create mode 100755 mmcv/device/ipu/model_wrapper.py create mode 100755 mmcv/device/ipu/runner.py create mode 100755 mmcv/device/ipu/utils.py create mode 100644 mmcv/device/mlu/__init__.py create mode 100644 mmcv/device/mlu/_functions.py create mode 100644 mmcv/device/mlu/data_parallel.py create mode 100644 mmcv/device/mlu/distributed.py create mode 100644 mmcv/device/mlu/scatter_gather.py create mode 100644 mmcv/device/mps/__init__.py create mode 100644 mmcv/device/mps/data_parallel.py create mode 100644 mmcv/device/scatter_gather.py create mode 100644 mmcv/device/utils.py create mode 100644 mmcv/model_zoo/torchvision_0.12.json mode change 100644 => 100755 mmcv/ops/__init__.py create mode 100644 mmcv/ops/active_rotated_filter.py create mode 100644 mmcv/ops/chamfer_distance.py create mode 100644 mmcv/ops/convex_iou.py create mode 100644 mmcv/ops/csrc/common/cuda/active_rotated_filter_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/chamfer_distance_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/convex_iou_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/diff_iou_rotated_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/min_area_polygons_cuda.cuh create mode 100644 mmcv/ops/csrc/common/cuda/points_in_polygons_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/prroi_pool_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/riroi_align_rotated_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/rotated_feature_align_cuda_kernel.cuh create mode 100644 mmcv/ops/csrc/common/cuda/spconv/indice.cuh create mode 100644 mmcv/ops/csrc/common/cuda/spconv/reordering.cuh create mode 100644 mmcv/ops/csrc/common/mlu/bbox_overlaps_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/common_mlu_helper.hpp create mode 100644 mmcv/ops/csrc/common/mlu/focal_loss_sigmoid_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/nms_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/psamask_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/psamask_utils.hpp create mode 100644 mmcv/ops/csrc/common/mlu/roi_align_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/roi_align_rotated_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/roi_align_rotated_utils.hpp create mode 100644 mmcv/ops/csrc/common/mlu/roi_pool_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mlu/tin_shift_mlu_kernel.mlu create mode 100644 mmcv/ops/csrc/common/mps/MPSDevice.h create mode 100644 mmcv/ops/csrc/common/mps/MPSLibrary.h create mode 100644 mmcv/ops/csrc/common/mps/MPSLibrary.mm create mode 100644 mmcv/ops/csrc/common/mps/MPSStream.h create mode 100644 mmcv/ops/csrc/common/mps/MPSUtils.h create mode 100644 mmcv/ops/csrc/common/pytorch_mlu_helper.hpp create mode 100644 mmcv/ops/csrc/common/utils/spconv/paramsgrid.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/prettyprint.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/pybind11_utils.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/geometry.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/indice.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/maxpool.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/mp_helper.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/point2voxel.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/spconv/reordering.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/tensorview/helper_kernel.cuh create mode 100644 mmcv/ops/csrc/common/utils/spconv/tensorview/helper_launch.h create mode 100644 mmcv/ops/csrc/common/utils/spconv/tensorview/tensorview.h create mode 100644 mmcv/ops/csrc/onnxruntime/cpu/rotated_feature_align.cpp create mode 100644 mmcv/ops/csrc/onnxruntime/rotated_feature_align.h create mode 100644 mmcv/ops/csrc/parrots/active_rotated_filter.cpp create mode 100644 mmcv/ops/csrc/parrots/active_rotated_filter_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/active_rotated_filter_pytorch.h delete mode 100644 mmcv/ops/csrc/parrots/box_iou_rotated_cpu.cpp create mode 100644 mmcv/ops/csrc/parrots/convex_iou.cpp create mode 100644 mmcv/ops/csrc/parrots/convex_iou_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/convex_iou_pytorch.h delete mode 100644 mmcv/ops/csrc/parrots/corner_pool.cpp delete mode 100644 mmcv/ops/csrc/parrots/corner_pool_parrots.cpp delete mode 100644 mmcv/ops/csrc/parrots/corner_pool_pytorch.h create mode 100644 mmcv/ops/csrc/parrots/cudabind.cpp delete mode 100644 mmcv/ops/csrc/parrots/deform_conv_cpu.cpp create mode 100644 mmcv/ops/csrc/parrots/diff_iou_rotated.cpp create mode 100644 mmcv/ops/csrc/parrots/diff_iou_rotated_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/diff_iou_rotated_pytorch.h create mode 100644 mmcv/ops/csrc/parrots/info.cpp create mode 100644 mmcv/ops/csrc/parrots/min_area_polygons.cpp create mode 100644 mmcv/ops/csrc/parrots/min_area_polygons_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/min_area_polygons_pytorch.h delete mode 100644 mmcv/ops/csrc/parrots/modulated_deform_conv_cpu.cpp delete mode 100644 mmcv/ops/csrc/parrots/nms_rotated_cpu.cpp delete mode 100644 mmcv/ops/csrc/parrots/points_in_boxes_cpu.cpp create mode 100644 mmcv/ops/csrc/parrots/points_in_polygons.cpp create mode 100644 mmcv/ops/csrc/parrots/points_in_polygons_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/points_in_polygons_pytorch.h create mode 100644 mmcv/ops/csrc/parrots/riroi_align_rotated.cpp create mode 100644 mmcv/ops/csrc/parrots/riroi_align_rotated_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/riroi_align_rotated_pytorch.h delete mode 100644 mmcv/ops/csrc/parrots/roi_align_cpu.cpp delete mode 100644 mmcv/ops/csrc/parrots/roi_align_rotated_cpu.cpp create mode 100644 mmcv/ops/csrc/parrots/rotated_feature_align.cpp create mode 100644 mmcv/ops/csrc/parrots/rotated_feature_align_parrots.cpp create mode 100644 mmcv/ops/csrc/parrots/rotated_feature_align_pytorch.h delete mode 100644 mmcv/ops/csrc/parrots/voxelization_cpu.cpp create mode 100644 mmcv/ops/csrc/pytorch/active_rotated_filter.cpp create mode 100644 mmcv/ops/csrc/pytorch/chamfer_distance.cpp create mode 100644 mmcv/ops/csrc/pytorch/convex_iou.cpp delete mode 100644 mmcv/ops/csrc/pytorch/corner_pool.cpp create mode 100644 mmcv/ops/csrc/pytorch/cpu/active_rotated_filter.cpp create mode 100644 mmcv/ops/csrc/pytorch/cpu/rotated_feature_align.cpp create mode 100644 mmcv/ops/csrc/pytorch/cpu/sparse_indice.cpp create mode 100644 mmcv/ops/csrc/pytorch/cpu/sparse_maxpool.cpp create mode 100644 mmcv/ops/csrc/pytorch/cpu/sparse_reordering.cpp create mode 100644 mmcv/ops/csrc/pytorch/cuda/active_rotated_filter_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/chamfer_distance_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/convex_iou.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/diff_iou_rotated_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/fused_spconv_ops_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/min_area_polygons.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/points_in_polygons_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/prroi_pool_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/riroi_align_rotated_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/rotated_feature_align_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/sparse_indice.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/sparse_maxpool.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/sparse_pool_ops_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/sparse_reordering.cu create mode 100644 mmcv/ops/csrc/pytorch/cuda/spconv_ops_cuda.cu create mode 100644 mmcv/ops/csrc/pytorch/diff_iou_rotated.cpp create mode 100644 mmcv/ops/csrc/pytorch/fused_spconv_ops.cpp create mode 100644 mmcv/ops/csrc/pytorch/min_area_polygons.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/bbox_overlaps_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/focal_loss_sigmoid_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/nms_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/psamask_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/roi_align_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/roi_align_rotated_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/roi_pool_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mlu/tin_shift_mlu.cpp create mode 100644 mmcv/ops/csrc/pytorch/mps/bbox_overlaps_mps.mm create mode 100644 mmcv/ops/csrc/pytorch/points_in_polygons.cpp create mode 100644 mmcv/ops/csrc/pytorch/prroi_pool.cpp create mode 100644 mmcv/ops/csrc/pytorch/riroi_align_rotated.cpp create mode 100644 mmcv/ops/csrc/pytorch/rotated_feature_align.cpp create mode 100644 mmcv/ops/csrc/pytorch/sparse_pool_ops.cpp create mode 100644 mmcv/ops/csrc/pytorch/spconv_ops.cpp create mode 100644 mmcv/ops/csrc/pytorch/spconv_utils.h create mode 100644 mmcv/ops/diff_iou_rotated.py mode change 100644 => 100755 mmcv/ops/iou3d.py create mode 100644 mmcv/ops/min_area_polygons.py create mode 100644 mmcv/ops/points_in_polygons.py create mode 100644 mmcv/ops/prroi_pool.py create mode 100644 mmcv/ops/riroi_align_rotated.py create mode 100644 mmcv/ops/rotated_feature_align.py create mode 100644 mmcv/ops/sparse_conv.py create mode 100644 mmcv/ops/sparse_functional.py create mode 100644 mmcv/ops/sparse_modules.py create mode 100644 mmcv/ops/sparse_ops.py create mode 100644 mmcv/ops/sparse_pool.py create mode 100644 mmcv/ops/sparse_structure.py mode change 100644 => 100755 mmcv/ops/tin_shift.py create mode 100644 mmcv/runner/hooks/logger/clearml.py create mode 100644 mmcv/runner/hooks/logger/segmind.py create mode 100644 mmcv/utils/device_type.py create mode 100644 mmcv/utils/seed.py create mode 100644 mmcv/utils/torch_ops.py create mode 100644 requirements/build.txt create mode 100644 requirements/optional.txt create mode 100644 tests/test_device/test_device_utils.py create mode 100644 tests/test_device/test_functions.py create mode 100755 tests/test_device/test_ipu/test_hierarchicaldatamanager.py create mode 100755 tests/test_device/test_ipu/test_ipu_dataloder.py create mode 100755 tests/test_device/test_ipu/test_ipu_hooks.py create mode 100755 tests/test_device/test_ipu/test_ipu_model.py create mode 100755 tests/test_device/test_ipu/test_ipu_runner.py create mode 100755 tests/test_device/test_ipu/test_ipu_utils.py create mode 100644 tests/test_device/test_mlu/test_mlu_parallel.py create mode 100644 tests/test_device/test_mps/test_mps_parallel.py create mode 100644 tests/test_ops/test_active_rotated_filter.py create mode 100644 tests/test_ops/test_chamfer_distance.py create mode 100644 tests/test_ops/test_convex_iou.py create mode 100644 tests/test_ops/test_diff_iou_rotated.py create mode 100644 tests/test_ops/test_min_area_polygons.py create mode 100644 tests/test_ops/test_points_in_polygons.py create mode 100644 tests/test_ops/test_prroi_pool.py create mode 100644 tests/test_ops/test_riroi_align_rotated.py create mode 100644 tests/test_ops/test_rotated_feature_align.py create mode 100644 tests/test_ops/test_spconv.py mode change 100644 => 100755 tests/test_ops/test_tin_shift.py create mode 100644 tests/test_utils/test_torch_ops.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2fdf8a2..eea0b25 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,6 +16,7 @@ All kinds of contributions are welcome, including but not limited to the followi ```{note} If you plan to add some new features that involve large changes, it is encouraged to open an issue for discussion first. ``` + ### Code style #### Python @@ -24,10 +25,11 @@ We adopt [PEP8](https://www.python.org/dev/peps/pep-0008/) as the preferred code We use the following tools for linting and formatting: -- [flake8](http://flake8.pycqa.org/en/latest/): A wrapper around some linter tools. -- [yapf](https://github.com/google/yapf): A formatter for Python files. +- [flake8](https://github.com/PyCQA/flake8): A wrapper around some linter tools. - [isort](https://github.com/timothycrosley/isort): A Python utility to sort imports. -- [markdownlint](https://github.com/markdownlint/markdownlint): A linter to check markdown files and flag style issues. +- [yapf](https://github.com/google/yapf): A formatter for Python files. +- [codespell](https://github.com/codespell-project/codespell): A Python utility to fix common misspellings in text files. +- [mdformat](https://github.com/executablebooks/mdformat): Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files. - [docformatter](https://github.com/myint/docformatter): A formatter to format docstring. Style configurations of yapf and isort can be found in [setup.cfg](./setup.cfg). @@ -48,23 +50,9 @@ From the repository folder pre-commit install ``` -Try the following steps to install ruby when you encounter an issue on installing markdownlint - -```shell -# install rvm -curl -L https://get.rvm.io | bash -s -- --autolibs=read-fail -[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" -rvm autolibs disable - -# install ruby -rvm install 2.7.1 -``` - -Or refer to [this repo](https://github.com/innerlee/setup) and take [`zzruby.sh`](https://github.com/innerlee/setup/blob/master/zzruby.sh) according its instruction. - After this on every commit check code linters and formatter will be enforced. ->Before you create a PR, make sure that your code lints and is formatted by yapf. +> Before you create a PR, make sure that your code lints and is formatted by yapf. #### C++ and CUDA diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index e163b31..0000000 --- a/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM python:3.7 - -WORKDIR /mmcv - -COPY . /mmcv - -RUN pip install -e . diff --git a/LICENSES.md b/LICENSES.md index 9bb0c8c..5de8358 100644 --- a/LICENSES.md +++ b/LICENSES.md @@ -2,7 +2,7 @@ In this file, we list the operations with other licenses instead of Apache 2.0. Users should be careful about adopting these operations in any commercial matters. -| Operation | Files | License | -| :--------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------: | :------------: | +| Operation | Files | License | +| :--------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------: | | upfirdn2d | [mmcv/ops/csrc/pytorch/cuda/upfirdn2d_kernel.cu](https://github.com/open-mmlab/mmcv/blob/master/mmcv/ops/csrc/pytorch/cuda/upfirdn2d_kernel.cu) | NVIDIA License | | fused_leaky_relu | [mmcv/ops/csrc/pytorch/cuda/fused_bias_leakyrelu_cuda.cu](https://github.com/open-mmlab/mmcv/blob/master/mmcv/ops/csrc/pytorch/cuda/fused_bias_leakyrelu_cuda.cu) | NVIDIA License | diff --git a/MANIFEST.in b/MANIFEST.in index 65f232e..5de8494 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,7 @@ include requirements/runtime.txt -include mmcv/model_zoo/open_mmlab.json mmcv/model_zoo/deprecated.json mmcv/model_zoo/mmcls.json +include mmcv/model_zoo/open_mmlab.json mmcv/model_zoo/deprecated.json mmcv/model_zoo/mmcls.json mmcv/model_zoo/torchvision_0.12.json include mmcv/ops/csrc/common/cuda/*.cuh mmcv/ops/csrc/common/cuda/*.hpp mmcv/ops/csrc/common/*.hpp include mmcv/ops/csrc/pytorch/*.cpp mmcv/ops/csrc/pytorch/cuda/*.cu mmcv/ops/csrc/pytorch/cuda/*.cpp mmcv/ops/csrc/pytorch/cpu/*.cpp include mmcv/ops/csrc/parrots/*.h mmcv/ops/csrc/parrots/*.cpp +include mmcv/ops/csrc/pytorch/mps/*.mm mmcv/ops/csrc/common/mps/*.h mmcv/ops/csrc/common/mps/*.mm +recursive-include mmcv/ops/csrc/ *.h *.hpp *.cpp *.cuh *.cu *.mm diff --git a/README.md b/README.md index 9b64100..1a6541a 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,274 @@ -#
MMCV
-## 简介 -MMCV是计算机视觉研究的基础库,主要提供以下功能:图像处理、图像和标注结果可视化、图像转换、多种CNN网络结构、高质量实现的常见CUDA算子。 +
+ +
 
+
+ OpenMMLab website + + + HOT + + +      + OpenMMLab platform + + + TRY IT OUT + + +
+
 
+
-## 安装 -组件支持 -+ Python 3.7、3.8、3.9 +[![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmcv.readthedocs.io/en/latest/) +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mmcv)](https://pypi.org/project/mmcv/) +[![PyPI](https://img.shields.io/pypi/v/mmcv)](https://pypi.org/project/mmcv) +[![badge](https://github.com/open-mmlab/mmcv/workflows/build/badge.svg)](https://github.com/open-mmlab/mmcv/actions) +[![codecov](https://codecov.io/gh/open-mmlab/mmcv/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmcv) +[![license](https://img.shields.io/github/license/open-mmlab/mmcv.svg)](https://github.com/open-mmlab/mmcv/blob/master/LICENSE) + +English | [简体中文](README_zh-CN.md) + +## Introduction + +MMCV is a foundational library for computer vision research and supports many +research projects as below: + +- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages. +- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. +- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. +- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark. +- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox. +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark. +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab self-supervised learning toolbox and benchmark. +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark. +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark. +- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. +- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. +- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark. +- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. +- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox. +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab model deployment framework. + +It provides the following functionalities. + +- Universal IO APIs +- Image/Video processing +- Image and annotation visualization +- Useful utilities (progress bar, timer, ...) +- PyTorch runner with hooking mechanism +- Various CNN architectures +- High-quality implementation of common CUDA ops + +It supports the following systems. + +- Linux +- Windows +- macOS + +See the [documentation](http://mmcv.readthedocs.io/en/latest) for more features and usage. + +Note: MMCV requires Python 3.6+. + +## Installation + +There are two versions of MMCV: + +- **mmcv-full**: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build. +- **mmcv**: lite, without CUDA ops but all other features, similar to mmcv\<1.0.0. It is useful when you do not need those CUDA ops. + +**Note**: Do not install both versions in the same environment, otherwise you may encounter errors like `ModuleNotFound`. You need to uninstall one before installing the other. `Installing the full version is highly recommended if CUDA is available`. + +a. Install the full version. + +Before installing mmcv-full, make sure that PyTorch has been successfully installed following the [official guide](https://pytorch.org/). + +We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building for **Linux and Windows systems**. In addition, you can run [check_installation.py](.dev_scripts/check_installation.py) to check the installation of mmcv-full after running the installation commands. + +i. Install the latest version. + +The rule for installing the latest `mmcv-full` is as follows: -### 1、使用pip方式安装 -mmcv whl包下载目录:[https://cancon.hpccube.com:65024/4/main/mmcv](https://cancon.hpccube.com:65024/4/main/mmcv),选择对应的pytorch版本和python版本下载对应mmcv的whl包 ```shell -pip install mmcv* (下载的mmcv的whl包) +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -### 2、使用源码编译方式安装 -#### 编译环境准备 -提供2种环境准备方式: +Please replace `{cu_version}` and `{torch_version}` in the url to your desired one. For example, +to install the latest `mmcv-full` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command: + +```shell +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html +``` -1. 基于光源pytorch基础镜像环境:镜像下载地址:[https://sourcefind.cn/#/image/dcu/pytorch](https://sourcefind.cn/#/image/dcu/pytorch),根据pytorch、python、dtk及系统下载对应的镜像版本。 +**Note**: mmcv-full is only compiled on PyTorch 1.x.0 because the compatibility usually holds between 1.x.0 and 1.x.1. If your PyTorch version is 1.x.1, you can install mmcv-full compiled with PyTorch 1.x.0 and it usually works well. For example, if your PyTorch version is 1.8.1 and CUDA version is 11.1, you can use the following command to install mmcv-full. -2. 基于现有python环境:安装pytorch,pytorch whl包下载目录:[https://cancon.hpccube.com:65024/4/main/pytorch/dtk24.04.1](https://cancon.hpccube.com:65024/4/main/pytorch/dtk24.04.1),根据python、dtk版本,下载对应pytorch的whl包。安装命令如下: ```shell -pip install torch* (下载的torch的whl包) -pip install setuptools==59.5.0 wheel +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html ``` -#### 源码编译安装 -- 代码下载 +For more details, please refer the the following tables and delete `=={mmcv_version}`. + +ii. Install a specified version. + +The rule for installing a specified `mmcv-full` is as follows: + ```shell -git clone https://developer.hpccube.com/codes/aicomponent/mmcv # 根据编译需要切换分支 +pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -- 提供2种源码编译方式(进入mmcv目录): + +First of all, please refer to the Releases and replace `{mmcv_version}` a specified one. e.g. `1.3.9`. +Then replace `{cu_version}` and `{torch_version}` in the url to your desired versions. For example, +to install `mmcv-full==1.3.9` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command: + +```shell +pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html ``` -1. 编译whl包并安装 -MMCV_WITH_OPS=1 python3 setup.py -v bdist_wheel -pip install dist/mmcv* -2. 源码编译安装 -MMCV_WITH_OPS=1 python3 setup.py install +For more details, please refer the the following tables. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CUDA torch 1.11torch 1.10torch 1.9torch 1.8torch 1.7torch 1.6torch 1.5
11.5
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu115/torch1.11.0/index.html
11.3
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
11.1
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
11.0
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html
10.1
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html
9.2
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.11.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.5.0/index.html
+ +**Note**: The pre-built packages provided above do not include all versions of mmcv-full, you can click on the corresponding links to see the supported versions. For example, you can click [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html) and you can see that `cu102-torch1.8.0` only provides 1.3.0 and above versions of mmcv-full. In addition, We no longer provide `mmcv-full` pre-built packages compiled with `PyTorch 1.3 & 1.4` since v1.3.17. You can find previous versions that compiled with PyTorch 1.3 & 1.4 [here](./docs/en/get_started/previous_versions.md). The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year. + +**Note**: mmcv-full does not provide pre-built packages for `cu102-torch1.11` and `cu92-torch*` on Windows. + +Another way is to compile locally by running + +```python +pip install mmcv-full ``` -3. 测试验证 + +Note that the local compiling may take up to 10 mins. + +b. Install the lite version. + +```python +pip install mmcv ``` -cd test -pytest -s ./test_arraymisc.py -pytest -s ./test_ops + +c. Install full version with custom operators for onnxruntime + +- Check [here](docs/en/deployment/onnxruntime_op.md) for detailed instruction. + +If you would like to build MMCV from source, please refer to the [guide](https://mmcv.readthedocs.io/en/latest/get_started/build.html). + +## FAQ + +If you face some installation issues, CUDA related issues or RuntimeErrors, +you may first refer to this [Frequently Asked Questions](https://mmcv.readthedocs.io/en/latest/faq.html). + +## Citation + +If you find this project useful in your research, please consider cite: + +```latex +@misc{mmcv, + title={{MMCV: OpenMMLab} Computer Vision Foundation}, + author={MMCV Contributors}, + howpublished = {\url{https://github.com/open-mmlab/mmcv}}, + year={2018} +} ``` -#### 注意事项 -+ 若使用pip install下载安装过慢,可添加pypi清华源:-i https://pypi.tuna.tsinghua.edu.cn/simple/ -+ ROCM_PATH为dtk的路径,默认为/opt/dtk -## 验证 -- python -c "import mmcv; mmcv.\_\_version__",版本号与官方版本同步,查询该软件的版本号,例如2.0.0; +## Contributing -## Known Issue -- 无 +We appreciate all contributions to improve MMCV. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for the contributing guideline. -## 参考资料 -- [README_ORIGIN](README_ORIGIN.md) -- [README_zh-CN](README_zh-CN.md) -- [https://github.com/open-mmlab/mmcv](https://github.com/open-mmlab/mmcv) +## License +MMCV is released under the Apache 2.0 license, while some specific operations in this library are with other licenses. Please refer to [LICENSES.md](LICENSES.md) for the careful check, if you are using our code for commercial matters. diff --git a/README_ORIGIN.md b/README_ORIGIN.md deleted file mode 100644 index e9e3f8e..0000000 --- a/README_ORIGIN.md +++ /dev/null @@ -1,222 +0,0 @@ -
- -
- -[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mmcv)](https://pypi.org/project/mmcv/) [![PyPI](https://img.shields.io/pypi/v/mmcv)](https://pypi.org/project/mmcv) [![badge](https://github.com/open-mmlab/mmcv/workflows/build/badge.svg)](https://github.com/open-mmlab/mmcv/actions) [![codecov](https://codecov.io/gh/open-mmlab/mmcv/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmcv) [![license](https://img.shields.io/github/license/open-mmlab/mmcv.svg)](https://github.com/open-mmlab/mmcv/blob/master/LICENSE) - -English | [简体中文](README_zh-CN.md) - -## Introduction - -MMCV is a foundational library for computer vision research and supports many -research projects as below: - -- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision. -- [MIM](https://github.com/open-mmlab/mim): MIM Installs OpenMMLab Packages. -- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. -- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. -- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. -- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. -- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. -- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. -- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. -- [MMOCR](https://github.com/open-mmlab/mmocr): A Comprehensive Toolbox for Text Detection, Recognition and Understanding. -- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox. -- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark. -- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab FewShot Learning Toolbox and Benchmark. - -It provides the following functionalities. - -- Universal IO APIs -- Image/Video processing -- Image and annotation visualization -- Useful utilities (progress bar, timer, ...) -- PyTorch runner with hooking mechanism -- Various CNN architectures -- High-quality implementation of common CUDA ops - -See the [documentation](http://mmcv.readthedocs.io/en/latest) for more features and usage. - -Note: MMCV requires Python 3.6+. - -## Installation - -There are two versions of MMCV: - -- **mmcv-full**: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build. -- **mmcv**: lite, without CUDA ops but all other features, similar to mmcv<1.0.0. It is useful when you do not need those CUDA ops. - -**Note**: Do not install both versions in the same environment, otherwise you may encounter errors like `ModuleNotFound`. You need to uninstall one before installing the other. `Installing the full version is highly recommended if CUDA is available`. - -a. Install the full version. - -Before installing mmcv-full, make sure that PyTorch has been successfully installed following the [official guide](https://pytorch.org/). - -We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building. In addition, you can run [check_installation.py](.dev_scripts/check_installation.py) to check the installation of mmcv-full after running the installation commands. - -i. Install the latest version. - -The rule for installing the latest ``mmcv-full`` is as follows: - -```shell -pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html -``` - -Please replace ``{cu_version}`` and ``{torch_version}`` in the url to your desired one. For example, -to install the latest ``mmcv-full`` with ``CUDA 11.1`` and ``PyTorch 1.9.0``, use the following command: - -```shell -pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html -``` - -**Note**: mmcv-full is only compiled on PyTorch 1.x.0 because the compatibility usually holds between 1.x.0 and 1.x.1. If your PyTorch version is 1.x.1, you can install mmcv-full compiled with PyTorch 1.x.0 and it usually works well. For example, if your PyTorch version is 1.8.1 and CUDA version is 11.1, you can use the following command to install mmcv-full. - -```shell -pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html -``` - -For more details, please refer the the following tables and delete ``=={mmcv_version}``. - -ii. Install a specified version. - -The rule for installing a specified ``mmcv-full`` is as follows: - -```shell -pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html -``` - -First of all, please refer to the Releases and replace ``{mmcv_version}`` a specified one. e.g. ``1.3.9``. -Then replace ``{cu_version}`` and ``{torch_version}`` in the url to your desired versions. For example, -to install ``mmcv-full==1.3.9`` with ``CUDA 11.1`` and ``PyTorch 1.9.0``, use the following command: - -```shell -pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html -``` - -For more details, please refer the the following tables. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CUDA torch1.10torch1.9torch1.8torch1.7torch1.6torch1.5
11.3
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
11.1
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
11.0
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html
10.1
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html
9.2
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.5.0/index.html
- -**Note**: The pre-built packages provided above do not include all versions of mmcv-full, you can click on the corresponding links to see the supported versions. For example, you can click [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html) and you can see that `cu102-torch1.8.0` only provides 1.3.0 and above versions of mmcv-full. In addition, We no longer provide `mmcv-full` pre-built packages compiled with `PyTorch 1.3 & 1.4` since v1.3.17. You can find previous versions that compiled with PyTorch 1.3 & 1.4 [here](./docs/get_started/previous_versions.md). The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year. - -Another way is to compile locally by running - -```python -pip install mmcv-full -``` - -Note that the local compiling may take up to 10 mins. - -b. Install the lite version. - -```python -pip install mmcv -``` - -c. Install full version with custom operators for onnxruntime - -- Check [here](docs/deployment/onnxruntime_op.md) for detailed instruction. - -If you would like to build MMCV from source, please refer to the [guide](https://mmcv.readthedocs.io/en/latest/get_started/build.html). - -## FAQ - -If you face some installation issues, CUDA related issues or RuntimeErrors, -you may first refer to this [Frequently Asked Questions](https://mmcv.readthedocs.io/en/latest/faq.html). - -## Citation - -If you find this project useful in your research, please consider cite: - -```latex -@misc{mmcv, - title={{MMCV: OpenMMLab} Computer Vision Foundation}, - author={MMCV Contributors}, - howpublished = {\url{https://github.com/open-mmlab/mmcv}}, - year={2018} -} -``` - -## Contributing - -We appreciate all contributions to improve MMCV. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for the contributing guideline. - -## License - -MMCV is released under the Apache 2.0 license, while some specific operations in this library are with other licenses. Please refer to [LICENSES.md](LICENSES.md) for the careful check, if you are using our code for commercial matters. diff --git a/README_zh-CN.md b/README_zh-CN.md index e3288ee..8c768c8 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -1,8 +1,30 @@
- + +
 
+
+ OpenMMLab 官网 + + + HOT + + +      + OpenMMLab 开放平台 + + + TRY IT OUT + + +
+
 
-[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mmcv)](https://pypi.org/project/mmcv/) [![PyPI](https://img.shields.io/pypi/v/mmcv)](https://pypi.org/project/mmcv) [![badge](https://github.com/open-mmlab/mmcv/workflows/build/badge.svg)](https://github.com/open-mmlab/mmcv/actions) [![codecov](https://codecov.io/gh/open-mmlab/mmcv/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmcv) [![license](https://img.shields.io/github/license/open-mmlab/mmcv.svg)](https://github.com/open-mmlab/mmcv/blob/master/LICENSE) +[![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmcv.readthedocs.io/zh_CN/latest/) +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mmcv)](https://pypi.org/project/mmcv/) +[![PyPI](https://img.shields.io/pypi/v/mmcv)](https://pypi.org/project/mmcv) +[![badge](https://github.com/open-mmlab/mmcv/workflows/build/badge.svg)](https://github.com/open-mmlab/mmcv/actions) +[![codecov](https://codecov.io/gh/open-mmlab/mmcv/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmcv) +[![license](https://img.shields.io/github/license/open-mmlab/mmcv.svg)](https://github.com/open-mmlab/mmcv/blob/master/LICENSE) [English](README.md) | 简体中文 @@ -10,20 +32,24 @@ MMCV 是一个面向计算机视觉的基础库,它支持了很多开源项目,例如: -- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库 -- [MIM](https://github.com/open-mmlab/mim): OpenMMLab 项目、算法、模型的统一入口 -- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱与测试基准 -- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 检测工具箱与测试基准 -- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用3D目标检测平台 -- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱与测试基准 -- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱与测试基准 +- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口 +- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱 +- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱 +- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台 +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准 +- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱 +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具箱 +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱 +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准 +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准 +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准 +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准 +- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱 - [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台 -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱与测试基准 -- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 -- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包 -- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 新一代生成模型工具箱 - [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准 -- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准 +- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 +- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱 +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架 MMCV 提供了如下众多功能: @@ -35,7 +61,13 @@ MMCV 提供了如下众多功能: - 多种 CNN 网络结构 - 高质量实现的常见 CUDA 算子 -如想了解更多特性和使用,请参考[文档](http://mmcv.readthedocs.io/en/latest)。 +MMCV 支持以下的系统: + +- Linux +- Windows +- macOS + +如想了解更多特性和使用,请参考[文档](http://mmcv.readthedocs.io/zh_CN/latest)。 提示: MMCV 需要 Python 3.6 以上版本。 @@ -50,19 +82,19 @@ MMCV 有两个版本: a. 安装完整版 -在安装 mmcv-full 之前,请确保 PyTorch 已经成功安装在环境中,可以参考 PyTorch 官方[文档](https://pytorch.org/)。 +在安装 mmcv-full 之前,请确保 PyTorch 已经成功安装在环境中,可以参考 PyTorch [官方文档](https://pytorch.org/)。 -我们提供了不同 PyTorch 和 CUDA 版本的 mmcv-full 预编译包,可以大大简化用户安装编译过程。强烈推荐通过预编译包来安装。另外,安装完成后可以运行 [check_installation.py](.dev_scripts/check_installation.py) 脚本检查 mmcv-full 是否安装成功。 +我们提供了 **Linux 和 Windows 平台** PyTorch 和 CUDA 版本组合的 mmcv-full 预编译包,可以大大简化用户安装编译过程。强烈推荐通过预编译包来安装。另外,安装完成后可以运行 [check_installation.py](.dev_scripts/check_installation.py) 脚本检查 mmcv-full 是否安装成功。 i. 安装最新版本 -如下是安装最新版 ``mmcv-full`` 的命令 +如下是安装最新版 `mmcv-full` 的命令 ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -请将链接中的 ``{cu_version}`` 和 ``{torch_version}`` 根据自身需求替换成实际的版本号,例如想安装和 ``CUDA 11.1``、``PyTorch 1.9.0`` 兼容的最新版 ``mmcv-full``,使用如下替换过的命令 +请将链接中的 `{cu_version}` 和 `{torch_version}` 根据自身需求替换成实际的版本号,例如想安装和 `CUDA 11.1`、`PyTorch 1.9.0` 兼容的最新版 `mmcv-full`,使用如下替换过的命令 ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html @@ -74,18 +106,18 @@ pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9 pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html ``` -如果想知道更多 CUDA 和 PyTorch 版本的命令,可以参考下面的表格,将链接中的 ``=={mmcv_version}`` 删去即可。 +如果想知道更多 CUDA 和 PyTorch 版本的命令,可以参考下面的表格,将链接中的 `=={mmcv_version}` 删去即可。 ii. 安装特定的版本 -如下是安装特定版本 ``mmcv-full`` 的命令 +如下是安装特定版本 `mmcv-full` 的命令 ```shell pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -首先请参考版本发布信息找到想要安装的版本号,将 ``{mmcv_version}`` 替换成该版本号,例如 ``1.3.9``。 -然后将链接中的 ``{cu_version}`` 和 ``{torch_version}`` 根据自身需求替换成实际的版本号,例如想安装和 ``CUDA 11.1``、``PyTorch 1.9.0`` 兼容的 ``mmcv-full`` 1.3.9 版本,使用如下替换过的命令 +首先请参考版本发布信息找到想要安装的版本号,将 `{mmcv_version}` 替换成该版本号,例如 `1.3.9`。 +然后将链接中的 `{cu_version}` 和 `{torch_version}` 根据自身需求替换成实际的版本号,例如想安装和 `CUDA 11.1`、`PyTorch 1.9.0` 兼容的 `mmcv-full` 1.3.9 版本,使用如下替换过的命令 ```shell pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html @@ -97,15 +129,27 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t CUDA - torch1.10 - torch1.9 - torch1.8 - torch1.7 - torch1.6 - torch1.5 + torch 1.11 + torch 1.10 + torch 1.9 + torch 1.8 + torch 1.7 + torch 1.6 + torch 1.5 + + + 11.5 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu115/torch1.11.0/index.html
+ + + + + + 11.3 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
@@ -115,6 +159,7 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t 11.1 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
@@ -127,12 +172,14 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
@@ -144,6 +191,7 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t 10.1 +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
@@ -154,12 +202,14 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.11.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
@@ -170,7 +220,9 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t -**注意**:以上提供的预编译包并不囊括所有的 mmcv-full 版本,你可以点击对应链接查看支持的版本。例如,点击 [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html),可以看到 `cu102-torch1.8.0` 只提供了 1.3.0 及以上的 mmcv-full 版本。另外,从 `mmcv v1.3.17` 开始,我们不再提供`PyTorch 1.3 & 1.4` 对应的 mmcv-full 预编译包。你可以在 [这](./docs_zh_CN/get_started/previous_versions.md) 找到 `PyTorch 1.3 & 1.4` 对应的预编包。虽然我们不再提供 `PyTorch 1.3 & 1.4` 对应的预编译包,但是我们依然在 CI 中保证对它们的兼容持续到下一年。 +**注意**:以上提供的预编译包并不囊括所有的 mmcv-full 版本,你可以点击对应链接查看支持的版本。例如,点击 [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html),可以看到 `cu102-torch1.8.0` 只提供了 1.3.0 及以上的 mmcv-full 版本。另外,从 `mmcv v1.3.17` 开始,我们不再提供`PyTorch 1.3 & 1.4` 对应的 mmcv-full 预编译包。你可以在 [这](./docs/zh_cn/get_started/previous_versions.md) 找到 `PyTorch 1.3 & 1.4` 对应的预编包。虽然我们不再提供 `PyTorch 1.3 & 1.4` 对应的预编译包,但是我们依然在 CI 中保证对它们的兼容持续到下一年。 + +**注意**:mmcv-full 没有提供 Windows 平台 `cu102-torch1.8.0` 和 `cu92-torch*` 的预编译包。 除了使用预编译包之外,另一种方式是在本地进行编译,直接运行下述命令 @@ -188,13 +240,13 @@ pip install mmcv c. 安装完整版并且编译 onnxruntime 的自定义算子 -- 详细的指南请查看 [这里](docs/deployment/onnxruntime_op.md)。 +- 详细的指南请查看[这里](docs/zh_cn/deployment/onnxruntime_op.md)。 -如果想从源码编译 MMCV,请参考[该文档](https://mmcv.readthedocs.io/en/latest/get_started/build.html)。 +如果想从源码编译 MMCV,请参考[该文档](https://mmcv.readthedocs.io/zh_CN/latest/get_started/build.html)。 ## FAQ -如果你遇到了安装问题,CUDA 相关的问题或者 RuntimeErrors,可以首先参考[问题解决页面](https://mmcv.readthedocs.io/en/latest/faq.html) 看是否已经有解决方案。 +如果你遇到了安装问题,CUDA 相关的问题或者 RuntimeErrors,可以首先参考[问题解决页面](https://mmcv.readthedocs.io/zh_CN/latest/faq.html) 看是否已经有解决方案。 ## 贡献指南 @@ -203,12 +255,13 @@ c. 安装完整版并且编译 onnxruntime 的自定义算子 ## 许可证 `MMCV` 目前以 Apache 2.0 的许可证发布,但是其中有一部分功能并不是使用的 Apache2.0 许可证,我们在 [许可证](LICENSES.md) 中详细地列出了这些功能以及他们对应的许可证,如果您正在从事盈利性活动,请谨慎参考此文档。 + ## 欢迎加入 OpenMMLab 社区 -扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=GJP18SjI) +扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=3ijNTqfg),或添加微信小助手”OpenMMLabwx“加入官方交流微信群。
- +
我们会在 OpenMMLab 社区为大家 diff --git a/TERMINOLOGY.md b/TERMINOLOGY.md index 61941e3..07411b7 100644 --- a/TERMINOLOGY.md +++ b/TERMINOLOGY.md @@ -4,27 +4,27 @@ This document is used as a reference for English-Chinese terminology translation 该文档用作中英文翻译对照参考。 -| English | 中文 | -| :-----: | :---:| -| annotation | 标注 | -| backbone | 主干网络 | -| benchmark | 基准测试 | -| checkpoint | 模型权重文件 | -| classifier | 分类器 | -| cls_head | 分类头 | -| decoder | 解码器 | -| detector | 检测器 | -| encoder | 编码器 | -| finetune | 微调 | -| ground truth | 真实标签 | -| hook | 钩子 | -| localizer | 定位器 | -| neck | 模型颈部 | -| pipeline | 流水线 | -| recognizer | 识别器 | -| register | 注册器 | -| schedule | 调整 | -| scheduler | 调度器 | -| segmentor | 分割器 | -| tensor | 张量 | -| training schedule | 训练策略 | +| English | 中文 | +| :---------------: | :----------: | +| annotation | 标注 | +| backbone | 主干网络 | +| benchmark | 基准测试 | +| checkpoint | 模型权重文件 | +| classifier | 分类器 | +| cls_head | 分类头 | +| decoder | 解码器 | +| detector | 检测器 | +| encoder | 编码器 | +| finetune | 微调 | +| ground truth | 真实标签 | +| hook | 钩子 | +| localizer | 定位器 | +| neck | 模型颈部 | +| pipeline | 流水线 | +| recognizer | 识别器 | +| register | 注册器 | +| schedule | 调整 | +| scheduler | 调度器 | +| segmentor | 分割器 | +| tensor | 张量 | +| training schedule | 训练策略 | diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..e9985b4 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,70 @@ +# Docker images + +There are two `Dockerfile` files to build docker images, one to build an image with the mmcv-full pre-built package and the other with the mmcv development environment. + +```text +. +|-- README.md +|-- dev # build with mmcv development environment +| `-- Dockerfile +`-- release # build with mmcv pre-built package + `-- Dockerfile +``` + +## Build docker images + +### Build with mmcv pre-built package + +Build with local repository + +```bash +git clone https://github.com/open-mmlab/mmcv.git && cd mmcv +docker build -t mmcv -f docker/release/Dockerfile . +``` + +Or build with remote repository + +```bash +docker build -t mmcv https://github.com/open-mmlab/mmcv.git#master:docker/release +``` + +The [Dockerfile](release/Dockerfile) installs latest released version of mmcv-full by default, but you can specify mmcv versions to install expected versions. + +```bash +docker image build -t mmcv -f docker/release/Dockerfile --build-arg MMCV=1.5.0 . +``` + +If you also want to use other versions of PyTorch and CUDA, you can also pass them when building docker images. + +An example to build an image with PyTorch 1.11 and CUDA 11.3. + +```bash +docker build -t mmcv -f docker/release/Dockerfile \ + --build-arg PYTORCH=1.9.0 \ + --build-arg CUDA=11.1 \ + --build-arg CUDNN=8 \ + --build-arg MMCV=1.5.0 . +``` + +More available versions of PyTorch and CUDA can be found at [dockerhub/pytorch](https://hub.docker.com/r/pytorch/pytorch/tags). + +### Build with mmcv development environment + +If you want to build an docker image with the mmcv development environment, you can use the following command + +```bash +git clone https://github.com/open-mmlab/mmcv.git && cd mmcv +docker build -t mmcv -f docker/dev/Dockerfile --build-arg CUDA_ARCH=7.5 . +``` + +Note that `CUDA_ARCH` is the cumpute capability of your GPU and you can find it at [Compute Capability](https://developer.nvidia.com/cuda-gpus#compute). + +The building process may take 10 minutes or more. + +## Run images + +```bash +docker run --gpus all --shm-size=8g -it mmcv +``` + +See [docker run](https://docs.docker.com/engine/reference/commandline/run/) for more usages. diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile new file mode 100644 index 0000000..0c673e9 --- /dev/null +++ b/docker/dev/Dockerfile @@ -0,0 +1,32 @@ +ARG PYTORCH="1.8.1" +ARG CUDA="10.2" +ARG CUDNN="7" + +FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel + +# To fix GPG key error when running apt-get update +RUN rm /etc/apt/sources.list.d/cuda.list \ + && rm /etc/apt/sources.list.d/nvidia-ml.list \ + && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub \ + && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub + +# Install git and system dependencies for opencv-python +RUN apt-get update && apt-get install -y git \ + && apt-get update && apt-get install -y libgl1 libglib2.0-0 + +# Install system dependencies for unit tests +RUN apt-get install -y ffmpeg libturbojpeg \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# build mmcv-full from source with develop mode +ARG HTTPS_PROXY="" +ENV https_proxy=${HTTPS_PROXY} +ENV FORCE_CUDA="1" +ENV MMCV_WITH_OPS="1" +ARG CUDA_ARCH="" +ENV TORCH_CUDA_ARCH_LIST=${CUDA_ARCH} +RUN git clone https://github.com/open-mmlab/mmcv.git /mmcv +WORKDIR /mmcv +RUN git rev-parse --short HEAD +RUN pip install --no-cache-dir -e .[all] -v && pip install pre-commit && pre-commit install diff --git a/docker/release/Dockerfile b/docker/release/Dockerfile new file mode 100644 index 0000000..493aa6d --- /dev/null +++ b/docker/release/Dockerfile @@ -0,0 +1,20 @@ +ARG PYTORCH="1.8.1" +ARG CUDA="10.2" +ARG CUDNN="7" + +FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel + +# To fix GPG key error when running apt-get update +RUN rm /etc/apt/sources.list.d/cuda.list \ + && rm /etc/apt/sources.list.d/nvidia-ml.list \ + && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub \ + && apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub + +# Install system dependencies for opencv-python +RUN apt-get update && apt-get install -y libgl1 libglib2.0-0 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Install mmcv-full +ARG MMCV="1.5.1" +RUN pip install openmim && mim install mmcv-full==${MMCV} && python -c 'import mmcv;print(mmcv.__version__)' diff --git a/docs/_static/qq_group_qrcode.jpg b/docs/_static/qq_group_qrcode.jpg deleted file mode 100644 index 7c6b04f561da283ae622f4219ea9b8cabf8f301a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71955 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�z}kBy(lpECAp?2$3?2Ce?C@=QTLjJV^{=f7xK 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 `>)#!#P|5Ci-PrOOx&3?kH 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

BleOu!O-<4iCWZ(G;i3}JnJvDT7{oZRkt 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

1*>=a5&H={)y-VSw4<4g%(qQgPf)0Dvi<^JD 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ֽUZ#?zv6#s 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 Q5e+X_`$G&2^w+8X1u%?H6#xJL diff --git a/docs/community/contributing.md b/docs/community/contributing.md deleted file mode 120000 index f939e75..0000000 --- a/docs/community/contributing.md +++ /dev/null @@ -1 +0,0 @@ -../../CONTRIBUTING.md \ No newline at end of file diff --git a/docs/community/pr.md b/docs/community/pr.md deleted file mode 100644 index 77bdbf7..0000000 --- a/docs/community/pr.md +++ /dev/null @@ -1,94 +0,0 @@ -## Pull Request (PR) - -### What is PR - -`PR` is the abbreviation of `Pull Request`. Here's the definition of `PR` in the [official document](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) of Github. - -> Pull requests let you tell others about changes you've pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with collaborators and add follow-up commits before your changes are merged into the base branch. - -### Basic Workflow - -1. Get the most recent codebase -2. Checkout a new branch from the master branch -3. Commit your changes -4. Push your changes and create a PR -5. Discuss and review your code -6. Merge your branch to the master branch - -### Procedures in detail - -1. Get the most recent codebase - + When you work on your first PR - - Fork the OpenMMLab repository: click the **fork** button at the top right corner of Github page - ![avatar](../_static/community/1.png) - - - Clone forked repository to local - ```bash - git clone git@github.com:XXX/mmcv.git - ``` - - - Add source repository to upstream - ```bash - git remote add upstream git@github.com:open-mmlab/mmcv - ``` - - + After your first PR - - Checkout master branch of the local repository and pull the latest master branch of the source repository - ```bash - git checkout master - git pull upstream master - ``` - -2. Checkout a new branch from the master branch - ```bash - git checkout -b branchname - ``` - -```{tip} -To make commit history clear, we strongly recommend you checkout the master branch before create a new branch. -``` - -3. Commit your changes - ```bash - # coding - git add [files] - git commit -m 'messages' - ``` - -4. Push your changes to the forked repository and create a PR - + Push the branch to your forked remote repository - ```bash - git push origin branchname - ``` - - + Create a PR - ![avatar](../_static/community/2.png) - - + Revise PR message template to describe your motivation and modifications made in this PR. You can also link the related issue to the PR manually in the PR message (For more information, checkout the [official guidance](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)). - -5. Discuss and review your code - + After creating a pull request, you can ask a specific person to review the changes you've proposed - ![avatar](../_static/community/3.png) - - + Modify your codes according to reviewers' suggestions and then push your changes - -6. Merge your branch to the master branch and delete the branch - ```bash - git branch -d branchname # delete local branch - git push origin --delete branchname # delete remote branch - ``` - -### PR Specs - -1. Use [pre-commit](https://pre-commit.com) hook to avoid issues of code style -2. One short-time branch should be matched with only one PR -3. Accomplish a detailed change in one PR. Avoid large PR - >- Bad: Support Faster R-CNN - >- Acceptable: Add a box head to Faster R-CNN - >- Good: Add a parameter to box head to support custom conv-layer number -4. Provide clear and significant commit message -5. Provide clear and meaningful PR description - >- Task name should be clarified in title. The general format is: [Prefix] Short description of the PR (Suffix) - >- Prefix: add new feature [Feature], fix bug [Fix], related to documents [Docs], in developing [WIP] (which will not be reviewed temporarily) - >- Introduce main changes, results and influences on other modules in short description - >- Associate related issues and pull requests with a milestone diff --git a/docs/deployment/onnx.md b/docs/deployment/onnx.md deleted file mode 100644 index be6c59c..0000000 --- a/docs/deployment/onnx.md +++ /dev/null @@ -1,19 +0,0 @@ -## Introduction of onnx module in MMCV (Experimental) - -### register_extra_symbolics - -Some extra symbolic functions need to be registered before exporting PyTorch model to ONNX. - -#### Example - -```python -import mmcv -from mmcv.onnx import register_extra_symbolics - -opset_version = 11 -register_extra_symbolics(opset_version) -``` - -#### FAQs - -- None diff --git a/docs/Makefile b/docs/en/Makefile similarity index 100% rename from docs/Makefile rename to docs/en/Makefile diff --git a/docs/_static/community/1.png b/docs/en/_static/community/1.png similarity index 100% rename from docs/_static/community/1.png rename to docs/en/_static/community/1.png diff --git a/docs/_static/community/2.png b/docs/en/_static/community/2.png similarity index 100% rename from docs/_static/community/2.png rename to docs/en/_static/community/2.png diff --git a/docs/_static/community/3.png b/docs/en/_static/community/3.png similarity index 100% rename from docs/_static/community/3.png rename to docs/en/_static/community/3.png diff --git a/docs/_static/css/readthedocs.css b/docs/en/_static/css/readthedocs.css similarity index 100% rename from docs/_static/css/readthedocs.css rename to docs/en/_static/css/readthedocs.css diff --git a/docs/_static/flow_img2toimg1.png b/docs/en/_static/flow_img2toimg1.png similarity index 100% rename from docs/_static/flow_img2toimg1.png rename to docs/en/_static/flow_img2toimg1.png diff --git a/docs/_static/flow_raw_images.png b/docs/en/_static/flow_raw_images.png similarity index 100% rename from docs/_static/flow_raw_images.png rename to docs/en/_static/flow_raw_images.png diff --git a/docs/_static/flow_visualization.png b/docs/en/_static/flow_visualization.png similarity index 100% rename from docs/_static/flow_visualization.png rename to docs/en/_static/flow_visualization.png diff --git a/docs/_static/flow_warp.png b/docs/en/_static/flow_warp.png similarity index 100% rename from docs/_static/flow_warp.png rename to docs/en/_static/flow_warp.png diff --git a/docs/_static/flow_warp_diff.png b/docs/en/_static/flow_warp_diff.png similarity index 100% rename from docs/_static/flow_warp_diff.png rename to docs/en/_static/flow_warp_diff.png diff --git a/docs/_static/image/mmcv-logo.png b/docs/en/_static/image/mmcv-logo.png similarity index 100% rename from docs/_static/image/mmcv-logo.png rename to docs/en/_static/image/mmcv-logo.png diff --git a/docs/_static/parallel_progress.gif b/docs/en/_static/parallel_progress.gif similarity index 100% rename from docs/_static/parallel_progress.gif rename to docs/en/_static/parallel_progress.gif diff --git a/docs/_static/parallel_progress.png b/docs/en/_static/parallel_progress.png similarity index 100% rename from docs/_static/parallel_progress.png rename to docs/en/_static/parallel_progress.png diff --git a/docs/_static/progress.gif b/docs/en/_static/progress.gif similarity index 100% rename from docs/_static/progress.gif rename to docs/en/_static/progress.gif diff --git a/docs/_static/progress.png b/docs/en/_static/progress.png similarity index 100% rename from docs/_static/progress.png rename to docs/en/_static/progress.png diff --git a/docs/en/_static/qq_group_qrcode.jpg b/docs/en/_static/qq_group_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8216326ad442c37c706bdf6dc8f7203c532849d2 GIT binary patch literal 77256 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 R?3W<^kL=s;J&$kW{|CJbZfpPm literal 0 HcmV?d00001 diff --git a/docs/en/_static/wechat_qrcode.jpg b/docs/en/_static/wechat_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f453ab91436264e5795569e8e3fdc86204024d5 GIT binary patch literal 144827 zcmZ^KWk6iPvL^2Ct^)+01b5eI9sx}t&(HI`wMs|?Zc7}o?4}JZCj@>>pgMxY~l#>)w_b~XI1^*RK zE~D}0xvisZ+4;}nA4hk0)1~F*2PR~dgVfp zqNtEi;=vD;=p~Kd#E7H;(%>QRuS29kjF2&3U&n+}v%U?W8gqFa1dOQfM+yKYV*6vm zt%u3J2X}Mezf#0R$iDuM4f$WreIgfx8b*cG8!iq9X6gu$E_1Z|o z67reK0)R)#ypBYko@RcP94__RlADZOd47^+X9}P~8iIXgO)sU(Ag7S?DvJRD@<7o> zCI^HXNre@2c-VAPrSfLuxbw3mpuj2vJ@ z19?Df%kuVVkX;yzQ%wxa7A}!yA`Ba@2QRD}OytDBeQhm+=2a6i_pNaNm`%hhB}33SMf|Hl zVj-<4I|v&&npX{x3$+Y*z{Uq)z0Ok5)NjT>FL<#u-d84>4*adxBpss2V1CH2c+BDS zm)}u&e%ma9}_xhKC6MAgh%?l}YjH5Dp{MCtw;iN(had*TW5I#~v7!H3Su-T$>=N zG?tPTM6TI>0(1wM0y43ss9olwV71qiBwwdME#sPvc#;{Z7-Hwl^I;nVxb+!`TdPrc zaz{~RdO^hLP*oFyNB@IJ`bo5!Dw7}5u`o$p2?R5T$hDG+g~&yQ$gQ+YeU&T!uS-U2 zLb!lX609Kwr1!|u_5{+O0C5^Cxni_E{GdbgHVF6MI5 zZJ^4`{0C}!rDbk!032@V(Ga5wEkk-;{vn(G{m0@Gh7qZE>@^d>`NxGWBKQ7;geeSY zfx4OqoT?!H3nw&%LW{(J`D$b&gv+C3$UsO02SA@kK#TG6z0QUhk%WCteJ@h4!fT#^ zGe*nOKX(uiOWS`HM@1y2V+?0(4heOmAPizuS|kpLGC{PHi|k+<0o7h3Qj8boRTu~1 ztDZpxRHm;)uQL6~Ugk4_Qy?T)8ROKC9>RkY z1w<2|-2K)SOn^f#1aTVR+zV_%$A5eheq(rce5J~K13_OTTDTpj42IZC_KxQh*fBfbcj%L6m@f2!9~zMnB*I4JD4`S52%kv~qDg3j~5c0k>PS8Gt<2o;BnHIAFH)#L0?82?{zS;oj15uMq z=KdktFbZ4;h#)YB;=!edR1T{MQdfgEWo72Rf+B0FkZ}LQYH9&we`&&k)Y}iyk#}77 zRVX=RayJz$np|j+d)5CT8n1VSAcCv}f^bEZa|CCUu!{ao1#)h=?qCm6ulheW(8Fq; z@W$2ikA*0|_jj-w^nnn=A%EA04E?7++%$WW8ftIQKa@SgHt=x98~@0RwvJ{3fR6tp z18pIqi6EkhMGd=Nb(8$(I?xa*6A0B96#sSuOaPD?LS_#24nrD?9^wwYXnD%nh_pzX z|GYhf>J{PRKO(FxPjCkC{YQgzl;s_5Py#Q;OZHD%P%SEWIS~3UrUUnqZ)lKvoBxRx z16Mpz12Lk14$gr@{3-x4JH`m01vboj+@LdvlL7no_7f2okb7(Y5gNOU@`9uPUpC^1 zV)M++q9VinCr{ct6>SUuwQd&_Hxw9xQ{iBZ``TBB4AY7!0&v*{O*gq?g<_E7fb&xj z?s!iiVzlN$FA@#V3!*?!dH~W`Ew(?X55~D3c)dnKI>?s8hG7z742TYqjiV9^2r5PF z%qA(X55|@>x(w@%qBPx~d3_FttcLkTh)dH7l{Tz<58IzuWN@mK`t>S^?$_E z!f^OT6{<)Xeu^34HpVHq3cLQ;49f?Q(zf2}-;X?Z6NA6`$D+eXi zK_?=-K|T_Q4h~^En4oK~VVFTt{1!Ap41vjt~XA6Y&cIdazXu*e<5%T~^#z;BV( z-~Y8il#CHt-+aU}R#j1Q_hhkHS#xN~v9Kjn!OxD-_@a2-M#`g(|C zn%oEkhfa1lN|Z4bqW?PV%AQ|=3XN&^ytR*r#@}L$NBhY)hoS>DR)gtV#8z@U+n^!iJv`*2*^Th53)cfR16oW7~4A{Nnx2Tv?`ZeqZ(m0gMw z_4__w$B5IPmjFEAECBW z6){a!giDse;fe0)dD`L<6b?xNyOZc z{AdFByfoydz{c^Pl8ZzO;hIb&+1I$z%Ie^JZOlmn90D(gCX(Pnm@JPI)>A?{VG&hU zrlP`@(;Z@B1I#{QH3o+o+js=2j`h;i(y>?*{iv}_3sx4YvdlKQ zQ_uTh-19=7B)`$S#V2;Bnv0Fq5;dYK&FqwGs`{p${fJ57R}W=aE7FqGCE zMKb4P87H_6bq#uaVqsa@a5DPZZ$^oMMlL%2>?^4`x9R=@Xm4f2ie*Rd7J3iku=zn` zsk0x^ox)!?^=>@`Uo3H>D7mNEN+V3w?jvqk`JDIWeS>eaoh=ocA>r5ezaKU;8lIbN z3q|Zc9z_cf%B=OkGdBAf(-hJo%}uwHYI<&7oAoq1Ys1;;W5LSTfIg(LiCf_e+mS%5Arw;2UZR&c5MM=f z&9Y70qI%IQmdY(~R9K0{WT43`X-DaG=@~lx1Un}%$Yg5_F8D%21Vo+t=_iHM_Uonz zh&>eZGNU1rKnJWgl*Q8`SGZ&C%~0<-Y17{al1rWR$UK$Gy{rI?rUV7crN*8isEj6% z^M|F*Kcw!T&)$w?ee-#1Qy_AzOPSm39Vl|VBxcBv`(WTSTs@R#375} zZQPP;$5-pk&aOz=wBb4%B!OuM2%PaXr@v-fowiA9q>Kh}!HI2sOAKzX9-No>8oN)) zIUmOeoCt;KG54g~-Bg$Nf3)G)F9sVoS}^%u{)vY7m%3%GA?ms(H1Rj2AhdH>^HYM_*FTkSkM>ifrcwf#J>sNt)R?@mpP=zY`0o_)hA>m1>B^7t4|l9z ze|DcF#jvx8pBCs6(U2}o_H2*1zad|cDZW>?t0nM%%f&zgt~v|?G{7S8!ud6e>FT&l zq|aVaoU!)7axO3XLai=@tg&*u_t;L!D=8(VyZSXhtrA<;s-vzoi={7l0_5WIDJaPX zXvpN%73EC5{hB}Mi^ticQz3#v}UVk-qX~8#1iy}Rt4B>BSnOc(iTwZ;VfvV=>*Q5-J zN0JXgGQV5bZcfpXt`pnQjtXFw-*59L>sCk^Df|jYVqmHc0P3H<75qa5BlW(J2R+Q3}y&<37tN08kwF@3H%Y=vgMmYaWgXpdFxgcy*arL(oWLTgAugT>a$|?%p~QmGlxIv zYwv~Hk(#RA`lbaQv9#u5BoMDZvd z_|fQZY(8hZSzD8WR6m3+WRT3v&gKSg6&BW^*5d2mzT>6vyDIDL;@jTPnc)1$bD3Kc z-dI{KWp0Z;B`1kejzRUdiI|$PaF~VR?v1Uur#|6`oFtQtK&-6d6_vH+;=uuINg3Z) z`TX{4sFAR-g^rH|$&ugYJl7k!j!(zR`+IzZ)JuGb)=bEq&tt)FvS7u)Ma!X%7RFQu zJWJrB7t$7sah}B?QBn{)kq*B(qLJs}_KktYou{C!9hDp(z|hc8Qf4RN?I=PbOJ-fp z@2c*eU)5@p7IJ{WIpsC2=xioHGAf{|J{J)X!mU1gUGSZxX7LAQlfcj>rd`&pz^<3x zz7Evf$dhG}i>ns5k-I1QXQ%Qr?@!R3E=U8d!=C}%Xt}wKvERQFUL~b^WmEVQEZD!N zJL-~8jk(X@PAK8VDdUbPfVau#a2!RT)ax1{Z`-J=tuDqV`rBi`rb$cq^^6+E)LQ9v zC8*>kX`}#tx1unG>AP9Cfsq)>Z-otyk>{_wP8=o^T@^O^P0yoO%Z4{$dnG=6Oj57O zUC@zF;M#z$?#NS6nGdfxyDW*R@mEr+DW;5qbM`XdUze3cS7mDI>&QL5OR}4>y%;7x zbE}Ft&di5dsdtlN`P1^f(^0J%1Q`iLacHyUC-pfC(z6>Mq}1ntf?dQK0PN1-%K0?a z=%fw1BrQy1Uvu1NlhlZp#;O64#rid!Lm0Tf)axa7G7`U_P?)`Ir;4HG9*;w8Qu({t zI?%nXzxMv7PU61FOaER{TLH^jn3bfJkiNjCK9?9adl}b!m0MXCz7;;DTT7^D=CfD! zSK0<%4y~}Mri$>8=G<{8!)U2}3iD7r5wy4}Z9ZRar^w?5{kl<9v?B>F5bK|0{v}l6 z*zQvfqrDP!n7*dx<5g5})+g4gz#OOOv2LXqmE8!DQ!<_vFFvB6}8ypXKfFUa-K|_@_0j6D9VuSO+PpKb(|so zM@Mh;s)jMCwQPD$ZWm+aE8kCA7~L$nWLm!VfrqIJeO*Q(^70sYx!X`E-@HJw`5zQ$ z)U+k0#I4H9cixKV12}~CnD-@Qv|$U=`-`AUs)(qxX`z{I@?5=D)Y}LTdm|lp4^)=w zXrOGw6F?l3RjqNiRW7FgFUQI*MH)*60NK;;s9B0JD!D2xY5$biSW3B?l4i($Dmz$I z`6G&>wi@mw#06lnHn0`ZDgQckE>RQ3Iy9>J?BUXes0p`|Ux84s#BRG9e&Cgm#*b65 zpffW!6Q5i2h7$)sDXE6{kP4Z0f9QLBLQ^P>OMkD_IJIy0L{S=E|R~SkK0NSzGvbIv6x_umsDNGP%Y>Wsw!QWQm$}6Rj5@}Rzq=2CbI1wk5fWWQ~zwZ4go&P+x1nT zKi|G9!EfT9Tf;1`a}3tTX^$jPS((9H9pnBRQ7tBG%(J53jJmprK%MUe)%d*s#+F1} z>VnE`&UL-*^kZ5ueO_4+C2MjAK+Svq0&7IBS$@H?%28%s*jSDX=FEH=`o4(1;p<9Dg z{A`NAFlhTg$7td1_uf5$dSXB4ELYx-I*jE)u057ANf|rF*7H%2hFqT$=lj}Oi52!CTq~Uzm@$&@wU;l0>vA8J?ROshP;+%l@fJp79;U8r1o-`lh`bo%w$P6L8z9Q4@k0G>ikV=ucp)K95pDutA0!9V(Kc1ZKsPH zaj11`tnC29kFX$VME|-O{6DL@^oVXfIhczX0`}Y8nXfrrQwGal?-$HxW*c)0>nO;B z=`2Tv#q__BkZdAla0AS8ZQY@DMneL2YpXwt(8xbHKI?ctW-Lcr zxCfg$n$Z3(Y+UCERsXV|63J7MaAy0NwlmtQpF_8|_DvlHd(~B-=NVN>@ysSin~EeM zr*XO(Og1pKyKfQK;ekeEsdfq7-&4ZFL5BPJ@;#tRj|A=IQ96ke)7aD!-+(7F$lidI zOb{00$DxoNnP_BFSO^e&@emA%N4C}g{Jjm3IShx|rJ7kIb^ThE$ zAb^1qj%TAPdi|EQ7Fqz+>$LJciDu}Qv6U>Fogrb&q1L@AGP1%$CpVK}OSD(}>o(x) z&hBf0d(A`m0ATFNslUB3Imv+wD=?btmt~2iq>Urj!c9`{TLDroImQxNYurTDZwV1a znPi;!JG89Kl&k58>pZJpg7Dm_N-Ky7+DILKF;P~OE`?fH{%QTo{rTs9kJd3jK&kC) zZO2lulNE*iD57U^(X@uUoq*B~NmNq6NPj*$cB}(ST|E>Z19ZD2gd1xc)t63bH&pQL zDZa)cuCsVec@=JB#Lx$;rj0_%^`UmEn#}!qBgi)1J1%`Syy8IOc8m{=Qblie77?Tl z3fyYt9=rP4hf<9uIeinh!1h^@wKr8Mem;I0vAhn}!=*z+_`1AbjZ~tRuL0R^+q?En zJJkEYcd|N84u=aWdQA~<^Z;mEFaP+(k|DzX?NNM1-IH9ItAYKLvqWiu4{t?3IPdZ^ z=(WB@i_LhT0(N02HdIbaUG&8C41njg)8|4`SI>8&RdM{4%zbSf0%?)lBxS&Nm=r;*p6e`}^b~n{O z^TZ&hon)gdZb^HX*RL0|cIF~KMhd*08z-bLY?xmoiJmp~J_W@{>Rqf8JZ^jot&gA< zY~`nTc@Af&dj3fW{paXS<)2utF;o?o3f&7|KYdnyGbnz8$Ko>5Z@-f6;aouJi^k?{lcyS)-v4YGRY4%xs;d*;JmCccJ7hC?=7jS+J@9(jVdW>$8^ol|c+~Ir z?t4%eSdV`k{(SThvL!b?Bzd0R*z{{xI7%J)$h=$IgSS2UFmukG{TNN?%ZjvmJ;+`? zFY}NqB4a6XX;nfP2x~h(_vdS#-Tiwbdyz^W*@qRGLyFv^JtDKgeg-6&fY|k)2*RmR z|Jh!MVFbdxkdMT+YuQVZ@PEa)_kCgF$?SSd7OU++%il(DG|OsPRV}lb{cZ+8UjX1k z;VSgBEMpRLwIevF`!OlYxeZUoy;CAIA778yS*R#$b1b1}%q2+sW1S*CFiGeL9EO4RpQ$4aun97`MN2z`ce?@Mt&V;22nC(!HO)JvC7bPP&9l`D}# zvOUCBlTPXu29Wj;bIFz-^+kl~E!EM7!3`3=55xrtPl`#k5k9D6$0prKuE}3@Lzk_E z?B(ZGf4aMf@5~wVcM?2+X>oU8Z}o0_E2>ttg`OHMg$oUj+`RtoxtMkHgw>X{q=ZT4 zWW}K27>oQwLqnsaqC$P!lBj-FlzDd_<+1*-2lfH)0g2UCEtpdBXHy5diuUzX<`d$L zNl76JxwdKvlDlZb4F>03b1nlviFc%vLvD4N^0tL`mhoRDqX+J|>f;j=^;JNUNPX&t;jFqG^uThP{+) ztQYYoPsLQP4pAvv0akk%Uy0(MaMHMV=(ZG*(FlIKSIRr0d=#C$=UpXfvMhRaSa(u) zL}Vmnu4iPZF9HsyP}kF5?N!$C#PF3pYWIX#Td`7j_Iz?<&v{QoOCn(!<(kGv3k_u~ z=za6&IaNT(d{qryczY3hI5@=Ij`C&8PI{CVQo(vk?>kUZ=)M04jZ5odf!n~Bq^EO6 zrk#%PksJ}}U-lyTc8e&N#rIH8h4pTfZ-sE^GAT~)`2TdzG5vQ7b004)We_2&8vrQa zq$5EG0FzsYhtbd_>l20Y|9-}@wU313vDkup$YY};(1+*STT}}e51?^5Vw9F~6ehXg zP)SsaO{id+Ig7+0z0S{TC9Kr&*`ralsy--uI@^3`18K{w?mJ7!31l$0PWD!Ft`)Cw zU&eoobK$JdYpKFsE==D0H7=8@2>1KNF4j<3I~eX87H0^3o}eHpcF#6a)Ubq-BiD6Y z(BIOf$cPMT^*X@pO?-cSer*x7VncKv=Nwn5m97M8hIIz$!>au1x5*NU5-pj-#L3y2 zyppOvTQF)`TA^`qSn~@Dy}i9KN=iy$MP1()7Zzr`+Mj=ty&38wlzDEl+vL}Cx}!rv z#_Z`{`HN>b=KqmODlw9^2f(fpvd>e{O!h$pRpx4I%ME!s)?b_1ZXhu1p z|B0%Gk^k6b6b)nhmrgZwb0#MhP}7lf{gJa|n~<=QhM~#)jP<#bJa0z;OFBsR zNIWSJ{lim-YD!Yr??;o%Bz2SAG6Ysn&l1^i8Bc4115|mCrc{8+T*&VQrTV$+{2z^! zN3KGal?>XYhX7A1?RA-Zt;YPkGR2$ktAk=VsluEy?z!dp7(zd__gu~-exY!D8cz>x zR_>IUw8^1*+O)6PU8Gd)bihCOC8SFDE$Y4wC!!$y8Rl5hQ=d|vF?*!QF6jdHO4jJW zQd=k-Rb;a$yFW;ThpREKHV^-o;!*2_^|G|i@BHHtrV9JM5m^dY378*KGRO*xP_h0X zsf=TV$vF8lDS?xOS%$Iy_mOV~7Zq{~oLb9{7 zjsF;P=DmHa1aF-K8#C8AqtO@M^-Y9W_RPPFQ66P)lK(3ro6PQh7-w12t>?RKhJ=ht zY^M!s4H$H5aX>|#Fva$`Ye+qtPmEo!WkAaCz3FQj9v z51OrraLn~dw#>v_b-v&Aq2<%QP(APGUQttITklIvHZfpOjKdR1@T_|`{qpD`&1sfe^AvMkWd+0I)1QuvPAdGm7MkHrvDJP>h z*8sDEx78?F_==Xym13UeY$H=@H4Loq$#rEwxcij+7x-KH!O z2s3{3xRrRivUa?&Ux~~ZF|Ri#$erbggEQlDGI+tW!fX$_T(pKA%btivt2sX>Jjz?OGpy2j96ZRt1vuOgXenkoMH=`1y}}eURVWh&IH53%NzFea8urO@Ar5nqvtq) z-wck~vnA&VgO)G_8kq+?zmHj=vApH>#-ja<&fab)gx8F%Fp(`r41Xz3|SRK;F6* zo@I`%rM8R|dIqhDN{1asgvc#k3#L%WC8@o{f-8^djq9ArO>!#D$;kUSzh$oB)-(D~ ztB$A<$8E&H%7Rh(6P==MZJ{Ke^cLpBa1v585Ekqeaeux?WjfTEWyUEZSx{LP9hJ?r z{w8OVp(CfKGh>5SW@W$?iH@v*j;i3pqbV8JU4hnh)#$!)0F7on4 z@OCZG!QEY}@@-aDR^KVVrlw}|dI+h*AG1`(+VwjYI3207fgv?TgL=k^xfEgw+=WJY zmdhG-t3%SN;(@-L2F8iatCoQc*)xvz&nGJ#Z`jzRHQiDUV5W3*o8fm*aMC7ERk*6{ z?b(^inX$-8UD5noGJc0kds~n;9?eHEWc$J>vPPGbl&P?Cj%uSgg>ee4O%7Ql40+7;Gnm@PIM%bt6`o2trnW9Bm1E}ZbKb>Igm8B2i>isITv z5Pa;7O8)1*z;nZY0{Q(0 zlbh3vEIG83yo{csy-Rto>ehEP?>y8u{Inx8GccG})`+12ptt3!++(u;K2mO=swIOj z>O(8GZ)HiJZY}L2!Kx~8ae!1=UYcBF`=-QZ==_w74#-n+os-b*FwkPZDt!C!u(=V* zuE`1~cpc2_l>$>m)G(5)Yt?-C=FJ;fSLUcprr{G;bU*W0BV)==kHlT{>JQ#6O04pAW!fKq zcsI5S;uU?!ohGy_k@(R;m*IDh@?g;w*~3?z*xw!yXebo>`y@x^XvqTfJdL~evMx8n z;){87Rs|3ym)^vKGj*_i`=@(1;J-EME&L9Z@|`yDF}=#y1=^0Gpv68Im2C;j--7iC zD_tvgFoc`)cl_|yv6#hYri>4pAZ^V6y?a!?&%50HM?i_P0k`je(rEhzu=nkhWL;e) z%YM+}9FfIuYy|g)!OfTx<~8I)cMNb@vX@KRXxFwLwYJp|32C5PS{+DQxeHk9@K5T3 z0{!cJEUS-XP-7E+GK(fB(^{|IB6$ADmgqshF`1Zc%Do-2iT9hG9d0|;*)nkFm}2Wf z2v5}y-+Rw4GhdiWvz8DEUN02NHXoDx?Y!guKH)_)+f^m$C(TA;qdTdy9Jo>^?4sco zS8|ox;sq5w8)&_tx*VB(z&11Ml33%Cm)Ds*;*a?7J3snUaZ5ge8T{q3Lj65DavUOeU#s{r{$cU_ zGFi(&%+0M)XBGI=&Q8E+XYBQG)TE-XTd1Rzb|r`)y$aLkROfCeLYDbAdFJzcy}@$8 z7``C8S|vUwD=WLIzGUs$+da~~K5l-tVG0u1Ld4r6OM^MSUSt{g0&T{$v;M#Qt>=$NN*etD>MHQhJ z-1;#eM8&T5;Dx)BT)SgZ%lm!SjLz`E9K)Wqzgm+|qjM#S7*ZnS<%1hwFP5IJX{ zxYc|6pDQ%!HQi|B+D0U@Mhmh={2Nn~N!ejBQ$q9PBvD^~kzzMFGdq!0#2=c(es(AP zblwq`4XylH#k*-H_k$9gj=XP1f@W_WSZRQk`8hV({Eb$Odzj1jtN_`X++8_Myxs zPV8Nx)1TR}t}UmaOn2xnr7&lLH=jKW9N2o<+K~3=3}fqc&8e@pZ&Xh<0<%XDIJNeV z9S%wkMBme45*Y1^XSr$TaaU(HdU{yhRd&SQvW4>ny!c^?Ui#2a z^TYK}lTM0-raedCq#f73<0?gd^h$k&MZ|e$OjX|?WZ&ZL#nqL@gLaE`VFJ!F)o<8P zWHha;6zt6#{uuDJSe3I=1MaMI?n{XLI~>s=dr#(M~EL|nQO5GWqb*Jv>} zj=hh2g>IGthbX)iwvXavD0+q{{VH^Vn-y9F2bqEGY`ejJ95Jz@>7&s@z-8}~4*5?X zP44gSYhJp2>9k{opOMA|cNO&HtbC86=T09sR%a_WV<#UY*;=q}L_E51$Q2Kgx}!>E z(Wr&g_eCY}b;#Uvt$T_svmUq?{Cu;D>~o)nc0m`*qm~b6boEb{EEr?H1W#R){Nchx zlChANLl=a@*vD{0;hX=trlVnWAZK*`ev%+HqP5<`MI$K>$d8k4qeVUSnfBU)*EF_? z)Ge|5dy4>V799QZGJfee8vsZldv+;h@QG|h&VzBD)s5o#hT~ubO*jedk4N7mRtQV7#mgXcVa>#_UbK z>Rh>XMZw>{qq72-qi2^bEA~~V&FQ!*0eZ80Y-}<%cEZ*i94a}9k-zhuW{%m!eC6M2 zdeEUabt`BXIXOA0+x+}yKV>+wV0h%E`u6dNbAPgN9lAsh+u0qHeG?^FYPw${-vyi7ex-s*GbYh~Zl^8lqvY*4X-ue8@Ic5w7_)~R@rGG@G(B)> zqkH+|(su8%W;^9d%*oz50dY*C)KB2k(!tpui=5Jw?6kDKb@`0qLAauhALQk~EBcSz zR}j2qyqEjdE-QgDcxk&isuS9OJ~blqEPLU0K406g7&ed@`aaQ(cby8h-ybl4tThR? z?(w?cFV=8Rpa+h5z=zD)+SzHsRySypRsQve!raX=gp@n7o1A&+C7x)g5 z&amv0oSrov_S}aDLeM$K&(TZ^kkE^%3%$pb)v6h%k{A#ntLL8954_a#`R`IM9Ca*C z$tb05jRq%em*o*l3TC=nAAB{zvRJ;Im63dQ|7@?~jTEv5!OGzrmDeFXUJGAd{}8#S z!SV2=lSFHiK!Sc2wsNvXdlsw-Sti!uj(oP1un z4f!Z$ii(z%b_Gw31(l7sm97A`%a)chd`0|Ud&A>0YT_u?j7JUO;U&tWqFTmu{E-JL zwQVHjayrte3Jl4N8Xk#QL{(e2>~5V>I;2VE;SuZh#Ts>E*+Sl@;0#yp2wY!ZxAsw1 zR_5wX)fMp|iy}Z&z7uGwU-Er8@&Lc>Y0!<1-tuuQ(ez$`eb0`J09^?@fS7Y>s;?4R z@EGieL!k~@pvSul4IMrTB}%^?Ug5hfTzm_2^Bso;K6DmImXG#bPu%?c0@4W8AEbmd zjhYLChbjQY^o-bde@7=&l!s`wZuLrSVEQVFP2oe@B5$jTb`8H!>}&5cWw!_DEqPp^ zBcY+GC-mHHRyBfOhuuDsq=zG+rNR#lnEEz1g!|#LX{BW3_&sa8?w;BH`7)&O<%1xF z-??M^-T1dR1tM^~m?W9P6cc^R?*)@)GFxgE{+}U$CWirM+aal#$1JB{@^R82yRDay+a?-(nAReVMFn*lW{#RKadHz#b z-_iqh;QPqvf$IA%Q$yaV0*7#eOPC-}^b&hZDbx3~t;{x{RJE@=8!VUVTKP15*w5d1 zO4z>B@W{{s;X4h6&(9=V+1HQ!Io%V8-QB3oa2T^>J9y3DfoZ+^=@3!>Z z@ax#yFpyIX{D)E5G?!(BEppIroW}z;wJo~ut6yNhbv+XRY*=5$ zb*smBS6nJ-!Z!?I0NceOGnqxyBs(ZHNKfoy$Ur%SIdJG6BCmTxaxD0W$jAb#@ZC-K#1M60AOG!Z*I;9pLSEsjObI1oo|nZ zt`iU)8<=QsjHKU~nwuB3hTmE>l2xa$KaW*%E@ky@T24((&3swGY+5?KrLb#Qf6EE> zF7T#m@v^k-8{m?7kG_m^XHKB@%`b5kStflJFYVh zluX5D;6k>85YJMyQew-$GT1o1By3Q4*D` zC9xQig})G7>|e+$FIFVxGPNdwH~KDqFMMTw+0j$1s4DginQ*>{8K|-c80b+E@3CSK z^rbFkp8H`bi~oDMQVl+{DiYvZqdBzAAw0@8;AZ%&C$^P+Y`!B@;{0 zJ3`VoXlFj~NfY9)b|GFJH0jUzKGS|nr=JE*pvmHlZ`!5f8X&e9bM+aualfcalfvj6G zw}k;vTDJpgf9I2WzW2kL5EQMZp!OZ56%|gu4S74`ZTA zQ_Crc#fi8jF8#&0lrF0#J#Y7kqr{D@*i!#X??0bdPdc04Qo_un;(qNi%azN@LEaKc zNV{G2pz5*D^``mnyYGfxZ$GfNBa{;A`>W%m&P1|_9>5b)Jv~OoIUW~=b)Mo#8n_^f zv$Z0v>?U+)`eBew+>us{KccccpLflliM&LU`#rJqW_uIRRCU3o+fPXA%EItlFHY)% zB94W)EEg5uC1-{l^mEQw;O8}zWJ?wi|B{NfWULZ{l~XX2r;jK|jN77sGbE)PTiNix zNNw31kusQH%M!HmUmwXD`rtr_F0vRrWZ`fKr4<*_McQ}XebMqQq)o)5=J=%RrRund zFQxm`ZOOW?w{KIpuC8u|`{HUM+n9JgB{L`pj*f?9;U*v;V7-=N6QAgqWb?{XBqk=t z`VqZ2wM{>U4%oW;eQ%h3tgqa@y{z@)2F~V8J1sJrJGHAzgDFQi>S|Aalko-B8X~1H zmPM8`{c-C9+idVarT#*<6#-FYCU|MTG<&^h-&N|G%A%cbN4vWkeBxjN+Du`!^9OI| z^gzp>fUkva2j%ErJjJfAHwxIR^%lW}?AYj=kBME`e-gOjK6t8+I$tr+k{+^vVp?JW zHQER2YNCBYSTmAg99ZRHg7}Zy9%MaV{Xgg8djb}FeFCH-^^ zK$xFwondt@(qCHyeCPj$N2YqMjRa@Uucbz$_+(x3RNA4Ty_gB2Wj%9Rq^XXEQM0{t zJRu>S4sp%tMI%yvfjXvmEcutTu1LAr;;-)u#@eMHdQ+G4W0CfuN}?MYl!^e$34Ovc`jeXKEK{m*W;l!X>U zW14Lbta^&(Z_TjC*uaiJA-1;1cNKaaA1W#FaDrk*o<3F@uBsI4@Obzwy4wwbPZfd{ zzwzXyj;Ju8xBBU%I|$!Vdo1a@EZR0P_Dqi`GILM>#$fsaOFb!0F2WfohQ8T%gbUGm z&zub0Z9SfyFmiMl#PP$vA<^M zAF9-3N)9;DVwlnAa|#mS+sx&DI;1C)jf8tAp;~7yoT2$kqN~sR64d@=D_CU7PTqjX zXt(SbDdF;#7tr((wE)}yEi3qICh#>7L=1m6)iSye@P1%zPE}x2g>%pLAj=w`60I)YV4T zk-y0mE{58cBYqR5AX;VtwQ;nJZMq!=(8cT*KvQCsrQweAkp3q|d93LU25y0n>DSsL5r8iPw4y_Njn1kL(p>7e@}mLAyt^!LvX zjYF&^c}skLt#dL&O!}Rx!8+qU1lJ~95wuvTp3}7LlSh_};bB>>xU|i!I~L73J?H3y zgALB}qtQnSTDzVN&d%G7$g*#tbGvrj#|Ow5=$fWB9=Rv^g^}v0iV|uf3reUNZfTt2Qp34lz)v zCw7~8mG#WOjPkonIPy7_KHU0Rml;YKL=+DW6(A-_Q{=e!S*l+U*RF z$T5`oxo`qhCyMRJYS?pdmQnWNoYW3_hI3bczQ$kheS}iHSP|n2SNPV&gTXb+C^vM#Pb6L%)K-f46@kvg;Zp2bCU)k#$vHCXD-ep&uL_ECwe!6jXsBnKVJT2jn41xUs z1sDmdlj1Jvn;XzgD@wf#0`*msA=dLG?I}Y%vd9Zce~u@1!UQj-oJDqE(2oi6?z_~U zm-hGTGESSWzwaE1?zkD)$bL#bxXwWqYz8EFXLVVZj?y&Ci2}j)UnIYhF0XsRo|dKX%6k2@QQ>bWfT!I%ZBE zayqppwASV0naz*$*BFND1Rb_V0+k6_b-uTHHRJ5Cm9`zX+S~?*>XpW58O^Zv-=7IC zEc3SuRTs;l`0Y+St_dBBZ`Pj*_L-*4?RxNHunK2S!1Qf?^~f9t9}R!kk@$#nd(7CW z7ST51LG^ZMNZ+Vk@C~P|&{oXQ&(ot>LGz-#7JuLLz%qr##O~9|KY}|u*$*c@KA0=T zoBj_o^VGf$`ttG-@~Epi<0pkC9)D3Ik=>bVRUBLE35b+9+$V(Ywi3(QVonZBKpU>&92dk*6?x1P#moDJXstYX2U@oHkyJzY-3zC`c+$dlZvHYhp73wvU^Js*y`KUXG zF)zi9YjQ|V63F*L0V4KvY>d#IvX>X)I8VW;;Lkka=%=P5gXoADsR8f+;7`CiZB>vZ zD`P|}^FQxAXKLQ6nJ@EcilPeXUA=4fTKBs3clq9oxddbmg#QwsiEgj5 zsDEl+Ftmh%?b5FB$5fqpcTShsZEORpAgc3Wfgj;=FMlk0DTB;%qXUnEsYm?p*lkCU zxI?2z2iu$ZSx2vJCxLL}+Dmo*Yr;SIY4_KM1vo_>N0NB1t_5xF#NUgamOkT9a8jdl z9_LSdLK>~(VA$i0WawJN9H49e!IU^~iuE!zlO9`D#BZ56Vld4c@tH+(h9W^yFc9HH z@a{SOn>jIva!?S;@sjt^N)$Uc9LVrR){TmiT4tXM>v>LYfG`c2BqW|nw1E%J9UG&q z6Xf~^`*Eii9XXevH~2ohH@JFUy+tCIK`u@gO_qqcy=o2h`pUBMDOmfq{j#RV4IW;p z<-jqitLIDZWv1b$oVdM!lkz3i$p#O`=UDU;1-?h~%BWEgh=`{x8%eg@>Z3B&)@s?n z_u)tD2;S#D?4ljl0c*Tqiz{)50?qw7=T}C^$j)1iG(nrG(ysc2pe_$^t&cB|O5Dx! z@v#wBdAf`(a5U|S<5#oD950cd1MlYK;cyWj_E`C9Q{8QNf8Bwce{Z?sVEJH2F~YB+ zDkm4Bj2TVRkr{;^KNx!iTC1w7?zsOjyv4DzAlMKEaVy?a?LS7afQA?uSU(Q;##xBmNt+H;g zzxv-tfi_SDMjo)9cC;&gJEgncYz;*<>6Lin^~N z_@hx&;}G#;tnHot`RmDF3!$m2IPWah^FYr@n=~SS;6*BYqgP5be8d+Nl!%~@c%n{k z<~iXZ>|oZMRM-@{0y}uzXqz!zN|x>m#t6F)5q$Eg7KJ}mV{g~E%s6jn-&RpgO^AN^*+T@!}?^d>bfIF}vj)=G(Hr@KU`@{7_kEAN9dG7mab30sQ#sVqhp zM^sHFkcc4X|CV*UN34?o)%6Q~9N%OdXk2C#Y4jdgs9m>OAMG`aJ)43;j(03`sXTvH zxBEbU=JQbL4-%FP^BCS{Y}JLFq|=k}ar%bs*_d}b&em=_c{Q2$9Zz}M`QrOo3Otz9 zzs8KGoKsAi_#H=rsV%^D_tcGjE6?j-v{dJT|L63mV(*-MsZJf9pv^YF?{b~fW98|G zs9nL1Joj@4fd}E=V`9C!sRcrU={@bCzr9~a;9eBQC?JO^nPjf#iUG%i!bRMPLu{s za==0YWF0M(nT-Lj1yv?-doB2hl$03;#`vw#6SQ!qWhsiLrF+O39-QgSNS}P%f&8ZMmhF0E;AaAjlS+Fs zAL{G{mu`+FekXOl-idjU3`aOiIj{J-G{2X@JM$C}vC56Fr(ND3x?ywCJU;0`jjQzt z7)hiv`a(%zn`bUYK>OwB=KSnJnDR^IgmP}Aigs%2_0i2+7i_7jP~3T1ok8_|^6cPI-Ol7hg|Ze(7q*UUci3 zd9^T&c(IY#Rbo-g&CfD*PbQl6%6@MxM89EX*AwPq746h^qbv#yB_)R7<7?|Hl`$GW zQ&W;v(L}#!fK8xhyqQwp*)9HA+Cq=I2tt2Hd~`G)E!nK&p;0s;ZM|DnEl*ffCMbyd z3Pc$y?!mNi8H)9Qd@BMzeb%t#C?TZphTfp(&+H?Kd{XH&uw7;+?chSMKjXiW3d^rDjYKhE;bTbXODw0XF+ zO^sC9dFI6W=jKOl-B5Xv zJ%&M0XLfvPif$)fxjMbNa)bv1Sv#yuUGzH&6T=#g2br!0+Iv~#KfXSKT+u`plqk(} zW5Vxfu?ey)M))yvN;U=@CH!KtukX%LWILYGTGn&l>k|^>$Nw(KT`$N@-Dg3%(EIKd zJ=CS{GZWDKes$$7+%@kQJCY&|_hOMR<*}QioD(1jvGt5+Pn!@cI)mDb&P z?#)j;&hua`q_n;V+dF$buf_G_#Jzv1rD)jDziMfQD9rs*+@mkG>3M05e$DSPMoAY< zg(+-Sp%-47yUF|~JeRo58UN#2@|gZ&$YC?VpQ(nVA%QQU>qQK)>nu!Yk&KTaSbt=l zzeo*`6M|ViPcF5Yk`HB<7r_bJ+d*>PY=yrBmS*YCU^j?w8wQO@Xcoa8_INQ~1bCDD zde~Mqwlw%~w|F#IdyK)uv0al4F4n0wH=bT2H1DJNF9~GKgZ0~kGb_A!!r0oUJBjHK zo`$wCEzfvGqk1<%>tF3I;5o3JX~{ZZVIjT_QKa9cILH*xTkn$ z`MxQGHuAx5{i z5swNn!kO8@R6BWzAWmWsw}u=@NkwEpg(tu5mS|%q*sR0IEL^^Tfe}5{`{%F8Ul9g= z^y=Q!Ud>{^7L{D<*}b-196ZRIt=?OT4?uKLy*})XExrz}`ikS4n)>BC1O0G|M*%N8 zdF(8@)xdo4R6d^oS?U))al+o6_cOF<5%mGDL7tdQW9%;zS9ZcFgdOBWy_p6Q3wuY< zu^UE|^;Yc;h;8g-br^g4D3=|a;JxgvjI+Q?*13cAs^=Eaz)n()+yv0q13X|PC>3JyG8_bjXuZr69)@jrm(fSms% z6N_1Sh(SDzAfAQO@n9~J^pRAp`joVM2~Ofz5RZf>PtLP!BikgYr8(jw(^x+(!T zd9+B?ig@xQRMZ4AlCSG5Y%d6AiFqMxo=SvlIwlaSBotZVwS#yp4+ptsFUHS3fgL4^ zas?o7;azt2vDf;sQ+*1`vix2UD=%?~0mS55$7&8@4>4(;r{3mQQdN=gqO#E>*LHAY zxsGh#{qScx3GW0KbQYCBo>^-4Li8D)ljLLNcT6;kSRQh3sa6-RMwksrDE-a6kj%rq z(LKG`W2p@h4d0|c6|pdJ4iOs}$BSlWIgL51>j43a&7E3nr=tpr2l)vF;rX8_UUGn* z@eLim=J|E#k0VDQZ)(X-=Zq6mR{JlFJSiriiwDa0pM?j^xz@8&bjfpC+3&IjTFYCy z@XrmZ{L09QU?oZ4{4E01;^dm>RKx0pZmYCe#HKd!j<_n&qx!D>bAm?4 zvTy?swNHjq@8#s3g>Hm0;Xo`V8;HPddW+QlYd? zoWut;k(M@m=m!NTRDq#Sib&d?E`k6{&ffXO$EZu7|46}&*Ns#n_LY^xS4B%)*tkG` zL87Ga@4UL4(()o}U}0Hh|D<}tR#HBdcKZYRge2p!@zScp@<(&N>rU7_jDDi64iam69(hvd*tzdU&}f8#9aHsl?0fgIUFY8i#2PkcP2-O{ z0$hYagx;8+PX-{7#eG3ZzZc}NBdDFN+UTtuA%3dK)+%> zFE7=`iSZAtbA^gr>U`hD1Y%0LZj#7~#%E^zip=anpNpM-up9@*BUXApmxNj9SpDefX z`Gj-FwWIoeD%U5>)KC7-&mIS>x^d3EDA&l=4OkpIfe6xBd~S^ilyTkQ5C6ly&^6CFz@zPNN&^_#*Y=hB(M6q4WnwG!w87Lh*FfaxLJc zqPCpp6%!)^nv!(hZe4CRDGE(iVxLn_PXU7{eo;n?hWxiT+V6tqx+O|CFDZ-68ROSk zQqV&C+a0NNilLvW)vRM8WbNfDNGQq34?nD?rn?^Tm|e-6c)SETqgd158$-_j$hJmf z%Fuu(8J1MEprh%$JWM>v|5__g073=WHDo6~2C%|H|Eoo74&`jzogQs#5}0Tr=6t$Q z`eQjZ>NoUva_JMOm?;c~dm)F;B*lf+q(uB9icrzr1kE|wG$H$?2@!Q(Br#-8=`8(Ln%% zw`C9Xig9j&ybHw7HSgZ#4ksg_V*_1dFm|!M{=VwC0B#5iweqk8SuI*)_yTy=JHu$}fW zF!kEG(75eS6wJ)1KJu+^RqqZd^6;0}EGUQDy+drL-U>yPEvN zSuS@%mMMXjIC_!zWQJDhhBa}(BykKYT3!KyHy)IqxK17?Qf<@&#Q+RondfX^;t$*? z8OZ?^4M)7wZSSuhUz&&KmYIoMhJ2l7aU2$EKB2RsyJ0rhq~)T@_DX$C(m=QKQez9u zQ07VX2e`ceaL^jSx$$cRB1$~R{Tn^AX}NT%L$-vxm_QhEPz)@x9P-f#v{1jIzx30kUB692pYpoLFb7QAS z*K^rVEm9_JL6C8#1Tvb~ibtQ5ewp2bFif-Iu^>KKMn(6J$c6T-DrOq#HH=dWbK)`t zD#u=2piArJ;Vw^LtSJnr@!;4B#WGaw5(yv+JeN;F65(YPFoymotC(Hbdln~)_4b`7g7ch--hu3ETFOxj?(AGB9;;HM}h8Y zSRN-YTOGc93^cACh*kn6ed?^KaV*F6VB@_NWfss1p<2W@N%vX(e@93^Q8z)*aDVN@@_EXO>Qq-MP&r)U1sa zlRNR8Vz2{X75@XT0UE)=;t5Jjoj!HafD1{}b*JXbdH*t6UIdmYN4`OU>q7)VkBXEK zAYKqY@5ztoD0u_dtX;LAF%dE{FNsWi+lY4#BY4QYNeFDv#OD~s;n*jBbP$|lEr+5w zSGPByYp=wYAqkL>q?c$6Q*c@}YT-`rEwx4mLHKo(lqt|JZQ2WSF={u-pt@N#wYdHXzAi`D8v{ICwHJ|EeAuc+X5oSg(G5hTsr%D5(DfGe} z^kPHoeAcJ^q_Tk-&r06@x2bp^2y|_|GJ@i%D(O9QPLg>|K^~6t6^UztqCr6$d;3FY zJwd?igkLX6214hvVq=Qg5=&j{JHTXnZTEO;IJ3N%j6Dr*+AkC$F8)9+<9t;5gXdXAqu=-xqaE^Gv-3H-p5Hy| z=I-blVHrf&)ygWV#*~zQj8!_lRA`OIj0~p*d)TrCzQ??@(=~3f5Nx=;W*_o% z2|bt-Jf8V3`@IwJ+Uz0t#r26j$NG>H$;VH^sby%M8z@iPlT>tvJbA)aoX@}|FSQgZ zAF8XH|CBOsY`2A#=RM*i#9kE-)_0tqPC>05^7%cZZQavVcTq;OWOVRUI^)j~e9-|> z9okQM23TDoy)g#_nky)li)Y#){J%|vp`=^H&E#Jj>8V>cT=lTTZO5Kqx zw?90W^t^i2dbv=JJRK&i@w-Pset6F~KKazi05E;7iiLH|x11hbo)fGy)yt3iV>4@P zcARa~h3V(XIQynTqgQI2n8EJ$;p_vkTUFUu9!@e@Ft#_rP`y~Ge2G>ftGxgsOg55& zMTpdKE$8UQeTtW(78M*}oX~({K9vKnt+N`^f+M zbWt!ua)HRwRi-i4PQKGQo@2>>3?L1X@L=j0!5C|?CAM}5rBGxG(G_Qy=_Xs6=cw69 zlh?UA;0Dp|)ta9uS6urNr`~^i)ZzQUzd3SG=OXzz7MA0US}l3bC+WANS&@Co&a?<7 z+CxNIkz^3*QbX+ogYTO0YjiuX8}@`u06Q`x@*r$$_>D$9tukb-nA1^c9`6Q!PswD6 z2(lCD=%mmJOJn*uOe@{sj@97t60bLtgean-#&KOD6!oCWp^_gJMjo`hkDCVj(>dAo)N!d9GOtYR;>u9{SI^o>%;M);Z2?CFh(;G#T= zDa?=AcDg$B{Ie#ApBiCf9mvCmNkZOU035(0Ragx!a#$VQ1C!a~2f?5YAn}92Eci?{ zk&LElJru~vva-EU`#x0DcuYZ=mmr)Z zzQiQW2o}HRjixD8xJqc7>)3s#+*sXX|8%ObzTokp7Q`LGFRyg!!jS?uE?}ol(M34H zyr}=i}{WUw;AQF887j4?&CI`y3jINQkAOocL9@ ze~E-o!z@$EvKno2P*1%cNxIoWlNbf8;z^)r#(z5~037$?Mc|(Hdqj82eWQN{Do4cv z@t$!J8tddT`Fs2J2oD#zm~zrp2_^f5g_U++Ofo+S%#P8V;HOf<@IHBVo};}c~ zPe2Xp{5bg`^n4fS;OF4BQ8LgfZAolI@3Wa!BO#?mo1Ojoyn}tfxPY?ZwgD}=?eCTW)|Ww2t!{U z>BX#W4=y?MM%IaM1|(WORZLe<+xt2#*W&w4rD7HPx(L4sh!u3_(hnAO@CneShthBld0}xc zo$(m7A8EAS|4N2#MQ$DMs8p}rTuSy8FO$LN$F(H*!$whL7-7aryf8SPw-0}b%N8OE?dE16ami+O8szg|Xk{X@2~tGc3=kV7B*z0( zJowxHFQ*j>oF5oreQzIkmUgvjOhSRl=06#_zE)4^N7h30(IPHDUl(E1L@Vu{isj-I zkXy+z#g!heZs7gYrQ;SQ+CL}SbJ-`H(9j!q6pW;xYdoM^@EDY6d`R^^K}y80hAQTC zQLA^vn7jDPmX;GTN%$Zfw$MiPQ$egPD-CYpN#t}xgD9p-HJvk+%P%JcK_Zz5Q|XMPTo$@Dr{PB@_iwpZW5aX1b>k(2h3P%1s+S%_44NKzTkmG-klR<<$5-VJtI6bs zaPm)8y)J%VeBU!I^uCoiw*TW|>}qO)?DDv(eGVxZ#SSFieeB`Hb&pl&E*sFq+^uBP zYQ5yqAl+zOD{TLP4j`+N{I_RA>hPC>p{e45SYR;#wwHwMK@)l(#^b7aVk7Iom0@v& zc>}inybwHP1#|Ff?n75nkI99&gXst+z0uNsHDG(yPwoe+5j!{ZeZjC%rpOHW3Gb6X zsOl@Tm^s}oqa6fw=6ggtPXi$8QfPB6ozrt_ZY-WjJ&oy3xI<(*l@@{TQRm&LA$mhA z-`sFphdp-t+mC0+sQ2|6p5(S3qeTA1MIL8NA1}SFUg`Cw??0=fgWC{FM0@PqkXN@w z(@S0BEw?@J`ub7Rw;jI#+AAeCx@d^240i1cet&@!qVL()Zl+S$2O9H1jK+7wrPjFy z*wKg^=&)*?rL!`nP*9jsI`v>PxWZg#+9(s>)6h1J=n0&gz5<7p>MJ8we`&W=wajusZ3X-Dxwnii*d2_Q`VA2+9#Z}N-0iXCN?LRsXVPE= zu+u0r^rDOHq)%4eR0um19##obl#DnzRwyk2#82jZT9?WK3>T zrC0i5b#6jy>p5||XL8|cDC~HyU=$IGnbT8uDG{~>F);AE6>YujiPrfud3g+Teknk> zT7*pLoS7{bj|w_CSaGmJcR15mHd}x>y!D{DdawJ;6WgUh8)ePLJTMlQY$cm5r|_;V z_DC{4wtDHB=BNXiLuJFi7k1+`I!uT_wB+_h*N@K9`-g4dl9}9mb<;VXgee>O-L2dF zgo`!W!GbzsNoBIZM2Ov3D?%wCS;H_Qo*>6UVcnH@9oTmA^?O)aZD$C&!kT!CkzVUK z?lk9l?{$E{Uqru}F%W|TDl`E99q;n_$@*t=EfI$d!b4qiT$_1@o+c>6uPzel)Ksj+ zkB?!T7B#vp#HoYRM*aC4GuQJZlT2$ZgP%bb{8RV!kIp1>Vyl;LiE>;2uu6KJ;QL(f ziX&Gm36D3#>5WII=}q>!pJIJ;lP(QrM^vCGgxkO5l3HW=F`|Ht?{ArhU0+wc(GcP4 z!W!uGrjq+i^6JTv#5u>ok;{u6+aul7s_yE#4!E#GYy7h0U6`3IEsfAYz@U~(qkUaKU503_itojYb?_ryOBR8F z#|U_^&wDEppJ3uu`bdYe7_JY9NE`B-zbXojQ9yD=8Q==57NdvtpBl7uV{CC>!clGZ zHF5E9Rf(`wYf@Oc8{T&%_jHAV`Vui`t90 z^=82adR4o1+*x^PG8GHr7G4T&acC!uU%J7P^g5%xJ?^#TxJQr=`9&KFT|LI0!9aU2 z&irF31=Nd+;4;8+`t!wCq|Ba0@h4_^nkROy}iZY)mpv>Rh>Cx>V& z`sS~^JYs?tB0x$Z%NDT9fTYV`bpl|R;v2SHQn+wFIGbo~KL(AOJY;4r5vtQQy^sa! zQ;m!n+jQ`fyf4oZZVX7dfx4y<5+aF3^XvwBs{O!_^i- zseW&O@GE&LK$m&WL)W|}4d&a^0Q)_>g`NzMA0w!N^OG%itzW&PJI$dLvu-(!xig9W z=T;qaZ*hm0AFM7TT41bye1IoKyQvXdtwr6vVvD*fFUqrCl{ z6y7P1?3@p9RI)l2FzZr3o5Ho&LLABCa+$j&^oi__unfhM(y}v&TU~HT^lcMY4+G4! zz2)XVGmp)ZQRa+5+-nuH3h-C0sCI0_A;N5Oo`3^2h##oNbzJB6T760X;moHZ>yB3F zL4;o1?~2yq%&&jSki5&Q_oGNsVWa&F3U?jt@w^4WQKh(XhjFr3Y4+q-x0z-~(W%=% z>{`AZk5t<4DVIAQcqRQ#1X~~WRiJmZCCB5a@vBcsGN$Q#aU3MCIF@`5J$zW%1|@fz3|vYv-p=P+gp49;Qn{D@Szk)L|!fw@ZmfG+P-*dt6u===BZ`JWi=w|G?7bgQdj z5Fl}Ib;X_-c}e*4OExKukX>+E6aGLJ`>HPr@fK--)hOVVL>>sk z0VP2%APffwFDv+-f72K7t`)b>>7c|VbLaw6*2cBIf?%MNA%xvW7dK@7K!$2ixklI> zvypjVlFTVC6>{cWcm#kqTok{;*vIeM5@ZT7ZkRd2XwQwifW6pNoa@*1Exw~O)xj_1 z%Hz!FJ z8N1eZ;3&u+o*P==Rr2Q1K-feo?F@3>q~g|zPHR;E%aX5IogcGLWhKJW6g6JIBHNXISPL zs>OcC$urG)()Hot-S0!2G%gU}u4w$@t_)z|!8-Mt%rHmZuLgRj>6%O`=!)3RqLu60 zAgpcTu*AL5PJ-97DiaU4!WJ1NA!lx~NhPF7tyxw%;t1(nePBjELWGbUbmhq$++*&c z`o!79G+~1ptAC@sb~l;3c0Km8_BuA+=B{=`s=AQn} zZ37m^yB9WXojS(lO_)L1G%H)?!C3U#g-~y1$zPadpyy2>4tZ>iXUZ`OjIVIl3SJYD z2QH-Zm?@w!il$@sTr+Zl(l>j5i77pcP?ynC6&aUBCEhW@tUL1W3?et^x`s(HIbA)` zT>_HIQb?MmwktZH%l&fXPV6OcCexSKvIoWyM4YjDG6hC4KaV=QU{Z3H3HZ+G!%^{W z4-3}lXoHPA6bH;9O%wWi%+x%Nqn-ki&R#%a0(TFn&eeIbfE(-r>9IeP+if-3r8V2U z7$3loH1PX@gCh&%{14#xT)G}F7{ATG+?x=)MfqVxNDnZvS`xV47uf{Pl4X>j0kg@X zx9jA9p~?6^4b3f|Vmt1RF}uHB<2X5C<@ewsS%&;JFmaCuqh}LC?;tKP;{GENU(uLp zK;=zLegGP4+NQZY2D1d1s7#JeN!b~~FrX^poNuaRPm)MW8NJ^4x+naKajKuz9Ylh= z1VxQD@I|#*_M#tLLO!aa_aj?QZneF(=c-VW0lTL&FD#;-+=JxqZ+S$!r*W11ZkZs2 z0QKf2wKq~{_Bq)7L$~pS*5n5KEgk7vt*^L`yM1s+uNv}jj$nG2dPN~*<^yA2FSc~5 z`|+Z2AeJ{d$m^PEcAnn4T^eNj7|Y2~!|B_T_m#7cM)kF@+}yQMNViF&M5jPJ*StJa zk>*xnzg0HoxB>ON?&lHz4ijBe1M^H1#pCL?I`{jDymr>&iDw(_%TVb)w3E*3%Mh)R z$B3wF_lVCi!G|eDLG)Kn#LrYC6rA3000sK8(JLnnpqVAAzJ>vWhR(#r@Tm6wF$AaB zGmjX=#|y!al#@|qFoF9J(XKpBqs`>KgnOJ^)u|&g$#da^)opR1^u8#2=7Yo*4)JIt z#qXlnIXTeEKyuFmZz2AcaxLPe_7ytH+MhB>fyx!p%67m@OE%=(Y}ar%4Off%i>#|F zfq4&xo}U=lKwlAJzR_b}rjrY|r>T)~avpQQo-5*8(FWJZpGDlrh3>T-H7LWU!ama$ zQ4Xz&z>Uvtj*CsCkJZ$$O3d&57?FK_gyhxky|H_@D{0d~dA^0Am^WoHng|@g;g$Kv z;q50$XS^P9*wH{Wgcu<;++zhsJHC>RR`B)L?G4p(g3&c1TM}uWMCxb@%QdwyjK_nR zI8X-0up!YZ3Lo`I-k6X~UKVac3*~y5B*0YG2n|SlgqGRyr_G`;c_s>`Mv0ED~VZjHDOtKV^)#vs=aOdE!*`>G9Y?~01Qaqr@wknshu=mjsQ4Q@U7|+ z>ULqZ{7t|l;|bKfoYN0KrfUkRY8$WIrEuN)lMP3um8o`0kScRwwPu)&a`Q3e%tme; zZF||wP8tsN14!gXfnD#;6w!y)Q&#r*DDkm(+B+R_kV%Q=6Fp8glq{r zH}$(_Oz84wY9xqk8jvO%3hKA*12oZ`Fw^94(xO>>>IIsb@ufGfJdj?dB{rZbT}-3w zR}4Z;a>jMuG(w)NMg`hT4Z8g%8)EbvI#%)M(fc)KMf^e&?HmXBwIiZr4(XmNv#$5&ZxM)J0qSgO7XKXaCs;ANGGcPM&_9P=k0)^^oE@<;I1i91avKNP zYEbuZX1XOrkT=ZRI5k7+aE>A(91thV+n|FwHi^?2>_qlYBUd8b{GdrtTYVxr9rCc7 z>9Cc+?|FYjpAc3NzMZ(4LYugF+-TZHZ(ri(@O~}UCQW25>1wL+R$F(Wwde6=g?n$C z&4SZ|mpZsH@S<)ElhD3!$IAgMbK`0CU6}5R?~>w8yF*5tcUrT_6rc72EU7_vqpTnG zlEb4{|H*?si2jnZ*r&p^px*22j&C&W@iC4txV8^>wBn-Mba3H#2IuGCM?-MK6n%UZ zZV%iB#Zma+j5TVlIFz6<`oamb*X`&H+xLTlPgCU6Eymh%l3&FxjJd4`8Lmrh313sX zAgEd%{S7@U{@IBDG{8?G((4hP65c3nCs8v2t(<~Bp%!}28*}?Wo798ur|h&&l$xj7 z9H-qI(fUraOl*3$EvQ`AlWM;0wzYMuK`eA4rq&Gi&7hZEx%f@%9%;s0_rswL9;{hU z(l~2+Q$T#$0NL6GLQ!?UXrIpRU)Rsl0ifWPt=g8epVL+~CXIJZ43dkjEogFyIHZ)X zE~IdY*kmw|=xqk@r-`ks$}ctg_&wsf>s5bMeJdDIeBWrBBlXJH@#)6e&t)3NUWYi) z8?>T>s8IWQdg0q6Wy{;k7nZlnFW9n_a!2((hS!mOSVj4~WVsm}Tgy^vUBXARe!8b1 zWj$mdId-K-@3x8yJdXYU7$!PYm)DP3c*Jxp2!1{Osp%wTXV6BDRch5+oo5Z57NX#` zJ?SY>v2{9fre3HU*W!(Cv}ro$sY}gRYd4<{^EB!u0M|H&*i6mSBvNbXu54;4 z+w0nt6;laMT58SBm)dIJw_m=Xxc200s%!S5TY>%q^+p2GH)bjn4UpUm@hH;Fe z!&7)tjSp1wPeII2YpFEEYw{HH+>gDhhXujo|2nJyap=D}O&4G=pO+i6)=&x8x0g{& zs7W)7-B2Ih=aF|AnSF`*xm>T`7avEgB5%ys^0_wFcVY$#d#9GM3SS533Gw2LA9%LE z;0r*1y}HD@1F2@Cz9eV)5}mZH^cFv7`c>xHEy0I=M@s*rFFiK({Pk4|Y(?dnd^4i1 z0jWpY6I>)hIqn4bdC^lx>vo>{cYgCXfkOGAlCa&igWudodDc?AFY(?WGzfO;?Mq|| zh9vh|i>mnFUy?^^n#`J!aa zMDhITcBw6nR~RmKD8Y?}y-&1*aokzWf1C2+P8!nSOXRjFB;}4sa~qsZ z7PD{KdfX7^gdf`lWZR@~1pMCoU62I-EXZOa3JV=E9(;-(@#itU)^B36fBp4OasTm8 z>v8ckSNaII%baHX`XXx^0Yy|aAWHss9H zK+#9&3cMWgTjt--^j{LRM8&`?;omr0@vl6ubUL7s{WsG~N0tsRTK_=tpm2GexzVm6C^l41WB2wh))DBEvZ2qx7@1M@^c&wp6M*mz9 zc=qx3Qc~z`OS)R>K={P-YPJ^?>@6owryKK7N!7vMakBr=^yrAwce>tn&9vi*`l4)2 zB9DA+i`{v%Ig$xW-WsUCh@i;zPz-4UUSxm)ZX{moTeys~Y4>M7Vzz1DStGXYay+YqM1 zn{eba;vg)xJnbMXnf<4a7pUj1o3H}civ53kttBh&5TJzY`gXN5P#TrM$m&Nz9%-C0 zWh^F_BL2u|?aDa@rdvmfF;7hL^xody+dTksy=)~`g1R)??tAm@GqS~)N0ku1^XrsH zC@0c+B*&B^$Bsd~jU(}@>@XZ3tiA3O;U>A$#b z>o8p$%$LW};&aKu?fUuLbJs#AEI1_J7Nn#w&WQqm=|{dLd(rngeBi_4zS_7GW=yrZ z|4bLe09-0PC;FFeZY+9wSw_~@1k}{*fX2lyS2SJSd1GWtQPGA||JyK7wu zk}X4PYHCDcGzNEOR@Rtbh>@V8-qkz!Zd6g|8wd&tIyyVQF>kS%u7a=r_RHLXaHqYs zwdJ_J5q-sME#f7jXCy*@gMqoSaUgBIB<woFtFU-uNI^lXs_;5_9^UW;sD;fYXIXpaUTu)Ltj(uQ$Eh=#d<&@09HemTU!!SX?^5G?tS67 z?fzvmAP}&!yX*D)bV()YX5ImJ`|~N`?hN9T2C?07Gvhnr+E<)g&8FuLXq3>kwt_Xw za}Xy&68{{r{02tb)#~*0++wpMl5g z4`4>f{9$s3xM1#gVJE7>G!Fn8tMWxrZ5PigJ;dz>x4%Zp%uMSmwukr^NB(!yQfrHs zON?WCMZOa!s1g_`@P3DnA79*Gz&h|%06h+MODfSr{~MS;oGsTUC@d@tA;6vO}J!3z#tsEFskY^p1xIn!La_qRE+lGEdTo}SG#j90BTPY&`b92E|-PpLd_^-WMxkbAI=Rw`f~ag2dv!#pAR;G(H6SC_O=>j?oToX za)X2Vh8&u=X{EJ|#kgvuxI@5=2X1a|YV3%3t+=_ORCh5gkBx=dRJVQp`9_>DF687- z*0aWM>s90jbHI4f{Mm`?TC6bLiO%X;3;^%Uh$Dk83Cwae(O2BE%1XO;VsUiP?6DL80(zG;@r=huKci!XT$$Q|zu`8f z-}fufn{vtwR3?f&7*7n9xvEA)Zua>#{U3H51IK#ggSR3(X|jQ90V#6szir9H=^1Q1 zde)OPmTW<9{3q#+8AfPySXI+@|zj}|hgQ0LZJRH4GhbFm8N6*Lh_G;9hsmzP; z?hYKG?SW_ApLjT>bFE6g`RTVAN&17QN;QhJbgXZ7zBn>A;YDQe*p9$gX z1H#udm5l%`CO+{HKEXq^==FidpC@F58Q(x#yy5$)}-o2=|Gbz5#^X9sP`&V;&Dc1UMTXQ2Ph)RdN<|K0i9 zXDXcP&9_bl_`G`B?3S{9TwDJKRo@-Y=G(Skv5DOhyK2@->`hTYt*Q>K6@0DQn_7uI zVpVI@YHM|wwFR+jueSCGwQ5rY!SC+#KF|9;KY#kf?anpM>o||&yw0P~qN$(@aDqcq zqK~KOI~KNd93uh}<4Ir3m29?CLzRoMdlK!XZ)^{{98Xt5AZDtcI0OeK>j9U|?e27^ zJ;h*ym2~0K8$V1H5}U>U!#_>h=fV7IuKStz2>XHd!CQ zbwvx#_qWYpZ{Ot5Mab{HYW3!-Sr~v|l==8bW@+6L&=jT% zuo;Ru-)#+huvhzc?Jc9m&lj!+=U5A%8q;0c{kt3DFv4sy(ADVS>x@dT;Jr5T{Yl$o z>!BQly_1tC=bSto45_$Sbo|YBYj^hqpyxjA$=q;HpGv?Y>Kwkms7bd7bRg^k!fBZP z?K#5CAdtO!uh88a8UlJ}&jzk-*PpaJ?Ldo}bS!80hlozUxH<{Da`3TY15B&8m7yXc zn!&-!Ha0fs_EM-`hIp4u@*F+Fa_BXg3!$de&d9+&Slb zcg>dzA{VUh47n8V2_FyW7pwcQqi4HPxMBqC*1yK(`pl4MBk`RQl{eTu<(82>t+J0F zbuHEfsh>!*ZEtTccY8F&-M6wzeqt5ki-!u>1}<;(3d0B-nH%(wmhHf<_#40d{wdw6 z_F9YS+;{I8eui61%<=vC6b~G!R>YS<*Zt>w$?xf%jK~hg*Vd+Y0L{WW4CEF(I;jwt z3T*K4l*9G40Vk9->J-0BXKb3OCa_SDJZQ_gkdrqy_TaDglkKt8n*vI3NB*h&(n1o@ zCDxQZLM#93zQTiqVN;X@c)CT}G}9DOz1`j2pER{T+&s#ozNc@Ml7xux+HS7(tFOXK5>Bcs2e$&uu3Rig-^pz zB4;Ws^!1&lxMuxk#7c6od;5P*uJ-(aCTPPt_}@aI9l_i!R$^$2ZjUVQH+X31^7*&~ z@FENTF3w4QhK>+%c53Ka)n6~?OJ-41kIt&^OD}*03Il%ZgE}O$DbiXE^2JT%ts`qD*t@&cmbAG@=2h7kjotQJBfbXveEZE$W zO$MGZbvKjXYx6!9n=}2tJE5%pwD5=U*WR})&OVpjEZuHOK-S#d<3p`~Sb>Fnc8msG zBf`y$)KR02DJ^d7ww-s<-F`0zM+R$})=l;I$EcT@Wp-$g`{ zx^NQ^6Rcf-*g$U3PD9L!Uc{mO--F${+cKkPczxO77V5kI=Wq}dt ze;8hg2P-^ST-`XC4|1=6z?QAHeZHX@d!hsCP(L4(L0LO3UL?Yv0X``^Y|?eoqkf8j z)-%bjp=GDw)_4j}qeQ2ZcVHY(7h!%=KGXwSQ&#Ui(SJ{hV(o}=B`y^1&jEYNY2C6b zID(mF&3(B$ar_pn+j3Q&*#Lol&EHed)wO%Bn2trO_$3XjJEz?qeTKj%6;__w%DV%B zkev@4mQlG6S#`BR=j1cdV66TxA7m(IM0YuSOAV(Oz{85LBgQJ|ok=DXD?50+plw5i zlO%e0G!;9O{3`2t;3&6L5B%hui%uG)Ft*q_+LvLqLyWpl{Z*Do0}N`an8E0<$1*X0(xd{8*Mp1ueHnE5Ds zdcSG)y-t`Fn{skkP)qKq4xJ}Ew>C>=<+%!Tj(tmMW9`NeF^vn0v)3vQ&paBF5W+!>Q|YZVbnoDQdLHzi@ySO!L6}e7&CI zt@22vQ^l4?QmB|bGsayLU0NW)fWlRc)UtEp&v6s0`x3Hc`{af(|4F*^SsJLJ#khlG3yMn=Z( znl(U6Mk@2r)0Kje)%~c)&N33U&}jbk469J%R*5UW?oeopBh;)`U*%8IG8<50i2p&P z9GhV!n3A8bw{OSWdedE6T1{9OWTbi|U)K0r*gSCMH5~Wn@X!g}o7Eja5}lkpKW}-Y ze`Dy0vGJ%-^>W<8`w+kq9H4lD3pP zThDv)RJ8uEue^JkQZAxx^LzrLN_M<874hklaEPK$AP$i!XMYRS(OSUVgKNVdolZg$ zoP$y0*8jU%sRwiveFygzf)5Ax((ay8W`6}d{QTrClk%Zk!J`uC0*NLT2t4#peZ9P+ zk;%$18=*ohuV+qmw#uWBC}u$IVqEQ`;J(+C7rz{{xO<+LR`>pTXICbcKty0eHSM%8 z`48W6RCNAn(J|{y*CRu1q;|o_!LdcF_myXUem-EQVQp_s?doZf=O0yH4Jlw!7i8q* zo~VqB>`h8{hY@7hB{A4@T=j??Z%U;N3EJf0{udV{my2Ow#G7C98+0K<_-J%e*T;E&6F5dZNi ziJt8M+$NP#LsL?|tZRV5-|>QztbPZ|!-hBb0QV#An!#PYvH7fjVjpkllXI}N9_K@g zyT=MWKT(4_PS>dVO%?W()0JCb-mH+B46@xr$5y6cHFHadWibmRe8Imk$Uo7o1$X|u zK4F9VYM?_8B0#6v24h`DFR-$=X8D)-`R;#=!0#vin_{$8;`oNA5BaipuC%UkY)q|SnKIeZ>LUUOd>Xtyn+ zznk*TIn2$p1#*Qsz^P-cVSYL6HjwIF+cj_4Y_!Dn%u2^K&WvV1ma)lg8TrB4-`?9b z6Juuu<-E_7qYsP2{gjmndmSAUAOJSm5r9;VDe!`~tB4Yu5#^WohVuXR(BHuf9$Csa zMB(c3zvPrZ)(nsPrb_%%1u7_tDw$pb$m`n&l57@Tww@|01y784E2g>Q}{4g%6AL69DgM*EdW%|rvZECb%Q!QB?mhUUpgXN_v z-L!l8#pO70m-e1%Vis_pE9v=K|L73A{VnUQ+HrnZ4jf=;X>w@)!S_ z-Z^2-ZPm3+k%M2%|HhAOJ4iPkz8*GHZ3%qA7tnxHv`xN>iv;q3=v|}@5CCHvnfaB3{p44zVT&=vo|b_j;&Pm}QFfxy=Zlg{_M!RgUg{)N*Hd}#JI=Shm9BRJ4;)Qw+Y3KhH2V|s0Q-=}`me82l7z*doh_|qyLT^K9?Ru~98bwFqov?&ho^1MgjvQ8$xQji_%LPA z_{2m3*UZAm{gTDjGZ}o4MF@?J&3lh?&N@yRgW#F-zj@h5!J6lR62Atd6q2uE0KzcL zL=4YkVf0#hOZ8W15TR#?>{t0b_?{? zMXM`(pP0BMDtfoM5%5zJf_AQBaz7U5_-|)P0UqhR;)0e}e{I(6x@I=|w#%ij%6(jN z;&xlI3&w`sS5`55*&lmW-G#wx$p?L&Cu5!-(kR>^rl~1=Y+Qdvjx{R(_V=l&kCE+@ z4Y1UkAfPFSBtY8$g#C90Na($ini`pbfr0C0wJxk(tApA502%O6uz+pH9ayly=&Eq6q|uim_rsohhFa}=yT zuL139GNG*;xpfdTCHXv?BcVld$1BU>~F zzH#HmZ*#7oG9$j&|3n_(Wb-Al7d2;&UTK>tDK1_@k#j*FkufKh+K;M>zUaxjBIEJR+Fa8s+{_A`T zm`y%s@376y(xC@}umVu)2ILRk&#A#iHQ0qfgs|1Me+943MIU;|wj3}?N$0dGvDKh3fc8dZMp}oMN(#UA{ z0$EYp%Yn6TyvfS%Tb0mtoFSP1e>g)(qSX$&^7G*?resXof@DBeRmaNBbRF`hXE-{A=hZWSh{fvi+Y&odi;l06i>23WcoHEd{|lv{y9v^>nar ztH?kC)-Zw_6+|j&y)sh$;;j6hgHSF*0?Sw12lj(`tWU8X^%C0P1Fc?DgIcc-@=y zFj*9mk_6q&ppp(lA|=A+&Kb&)`zZlLOpMTs8f3$&@TXrlU}V#{U9}3iUeIcLer>Gv zqNYA%D2Klw?J5pRJQ`8b-speT%T{U^Hq$9awv9g!MtF#geL`@<5jPR{)1j+S zdKe1XkOTZLgPRBtQGw^(1S;Z&C?E0k4qyLz0ZK}UNnxk||O551*osi}us6 z)-7=x4p%T}y7N=4&*sn9OZ8tePjBe{YwRz;_qFeb`7-Wy{nyB!mQX@=33L}*EIVDu zy_dp>0oeDlU-Ym&11}1Q4~Cwsyb9UIBxdj698POOiuOr~{y-6zu#RPeX4c^bQ0n+; zg_&67#@sj~tnA2&Fus3cLk*d?q17+CcZ2adtUl_Y01r`z6AO{|>h%msP3$$wwVb2t z4`OPo1kg%QLI=jQ;v1rFM@@IWH<-Vc=ok;Y4xeS=BX!O;3UFV=!7A~Z5C2il98 zzCn?Ryn~%A^dpMs4WTqxA}vNrxFQl1M4L2M$e42Fh9!d+T@X&Rp%%*VT2o|dsc}bjV!nypR z`^2K={s+H2$wfz^lMVnI@>h?X__-or?BD_02Jf{(zwPOfN?UDnoQR+yM**)kZEq`a|I^au~UD`P8ydXXDht#Y5qBTQ!uB&eo7~zvtt{G|iW1&JV9@o^byD5!Qu^V#!N8g2VjPwGGS@VPP@IhRw21 zUe0fWlHF)Czf2W4_{Ye)KI?t&T0i&aZ1ZSCCT-$(uQD6yg28~T>7SkRU3Ra`Is8QM zle3RzEO9f1dKre_t2gMp%H%jY^Jg)HgM^3SO5(99m~JdTVo@%Z<=A?kvFn4|T*lA zVv(8uk;Rke-`AC%nvV2&|5EEy|E4+~#u4Zr-0qLoCQl^#=nq8Ij2C87Vps(D z9Hsnq9U(uW`|zZk3up$8u63PR{SGY2|BGCdB>DlSy;{$iVAm3Fu>JZ&hSe*xdyn6U5|#{T7X<^eY#XJ2^4Zn)lWfEw+bGE9KmKY_eaP%_{tvD_ z>fn~)p#LjhQo9bqmo+@fyW)qlJ~z)Uf{BFNl6w&|kov{fVfMIT;(eP!*>aW9KF1*< zj@kJ#ajQcH^BPlQ#s3z|jW=1yjO;7(-TD6_q#y-^lqQJ^LVx>9A+iGV>b6NVfbV)d zo7f>~2{&N-7lFgRw!@lx*4+LB>x=K5QX0J_bQ;` zP|ig!R{XOAs$l1ya#&_D;=6fAAMu$Aa+JZ{t3XZ`W`BuCscm|HgIdA>y4MVgaEm*G zr_RV3BfWP&2hwq>yvW?P!LLH^@c^Pvf4%}Eytyh~1` zr+Y*Y58^drXva3)G2&@%Vhi<$w41{SNwFaX51?Jt@>Ps-1aedXR&V&Ttn#8PTt}k+ z1Ir+HKiB40Iis5hKnQbfc(mRZ)UohEMAE-2i+2TeqO1C%j43$y24%zR-VN<3viSq{ zh5W$06N1k95ww9+|KkJxFPMG&OjN2-oYr=@f$4zJ4Ctc6;fS;Lzc#^0W;9#&;q1G4 zXW#HyT<<>*yXVwn+V2MIl7^Fj$P&!E1eIT!U>yao!6dG?-2am^a*|?&iA7phBF=Qw zB2vm3kr&Sj;J%7pe^SOrKOz~_I~GcnmoBOvxYUdF&4)Apx7et(d8=4lk)7g2T6#l0=>%5-wrkNC}oIlP2l8NixuC9{}cLucV1gn*0nLNZ?Ap zMwp~`U<_6d)NLb5QeYt4vw{91Mp&a&Yj$Eq#s&HDD4_X?*bo(PrYCCzC_Q9ixL&K~ z$(g6oZaWx2)%(J`=Epj5$g9U{zUrn%S0t{)VzwAO3vDQr>i(;amF2ozAqI$BQM>ZU#zI9H@B&tD=wGU*rW6NUAE zOrOzN55xwQK9$3S^#UhML__P)y9Y&j@(F5ZKd99Yu$)h-9h=*xf_0X%8-m*52WqmWg8 z1=4}h0&Sfu%I68!72kZUNlK=cwhCzSo`r zv3gY%o2^I9JXFH3$1*-7>{&JPr@N_Mj}gZTCc%YiHM`nz6#Z$| zI8OMX=&-7PME&PSO=)Z)3n?P_6+y($ax16^-;+-dTxh3Sfr}B&_qA|Q@RL;dz@U+HGWcUK+cIhI3ulK83V zDNWHLJfo=qehZs4%#k;Shm4gN8P(0d5V8A~f^uuxmL~UnkjO< z;ZRd`$wIM$6xVn#NER4$HlV983`PGEXdnS!j>K`Oh30f9cdqUD7m3UcU)s@b&DF*9 zj~`Yo=0Cv-LE2ud&0Y0&I=at`(5KPo(cce{AwGZ-AHazF(zVY1Z1A~DkarHNrF!(- zU~_5{?u??k@v`dkTTv0A*7(4r-oF(%fRbC_x!mnJxua-v$)ABljU=obM92Mx@c$Wx zCKPD5jq-WoVeKjc<*)8!<6L7Ze}w$^ek;&iia$4Xlvk|$VDw7oyqT{A$tqzJIZyyA zj~T8`?PhLWDmKXOUTeBwW=!p|`xePBE0R*&<}5*0yH34|;zC zMlbMO>BUYuGRM#!qj!KB@^O|R?o6IgeDe2Le}~-gcNO1 zX`|&R>z__B1McqxKZ#1~7wDMR)AFK*X!X5Il`S`w8b0z`>huiMW+FikMeH+{BGvP* z-+u6|SFV{WFwS3%CzvABX}shnsqu1Be-(SK(EP$Hem&+4I^*;k-rTjBbW2*KU`2a( zPKm3R?j+HNF(Gz4fO(Hs`=RJFefEJ}ywr&`J4L3*UszrE1=*&ctGRqYmq7-Id&ieV$&ue_|o%XZiV5dtJB!5BSq%@(_@>}5*LMF_v!0mN})N5zAu0O49Rl6*CA_q zNn?F#P6Gakk|0H|c{=(Gc&`nuVs490tbe1vGw)>j%?#r?>uejG>6BJqFZw>OZg(V4 z(qU+;)0Sc9i7WB_ZXj{3h(fX|c=5$>9spMHqg0tdafbSDM!ZG zjd1Av#D}{UFA>A-8@fR}=}rZq;Ux@j*RAWGac}KyRugLgfJ4BJRDVnzPtW_o+!6hr z0hWm``FaRt5hXgr9Ld@~>DVq-C#Hb>dOaEtU#<~0Z>BRH;1mJwOBZ90LVCt*UQoMt z@=6Ud!-P%0%ckAZivPB}D!))J$|onzzHN4GNMhLYFf${9oNgrBz2!EjyS(6zV6xVZ zWmthKb!NzZv@_S&gCFv%3@ob>P=Mxm2k4GZEq_5QpL~%-RuxlE@hHa{m^*i)LV%q2 zE-Bh*o=0?`TqE#cnn5g9FW>R^$U9EzOtg6F=at9%(}-~8Ymg`o1+Pf=;CmVX`C&p7 z;Wtdzsu*%x=Ns7#SU_BfT*w<)6YSzJltXPnOM6TUyma)RfuM(lK{Fm;7rlLWVLKkp z0F0}|11OahM?VwOR%+lDG+x?Se)-fv?%(7p;gLiT=+oS$1xTpw>45 zt}x@jpTAf#VdO>F*xH`5U8((j?Y+yao)NeAVx1h2*~f>)M&rx?AkFxnblui)Nvn(6 z{Z(mStQ9-{2dWR^WGchsF;}!YkR|npKt1eL5*~zi)Ne?Ws8CEQq=Z2CEPOy@x%Xl{ ztfGcA*BnAm!gVp3>v2Qh?itlvj8Z@ffB3f~qIS}jk7d%6XWxE}oHIqz9QyoHZq94n zeE(ty2Cpl;jGX-IaA z4Nt;(5h=wwX%>}qJ^SlHGk&f@Guu!9DRRM0k1)ZnsXo?lqI%c!(wk&8%ONjyh5r7N z8r96Bi7$c~jN@eGoOp&9GaW~25OAvf9oX-}h`pFTNGY;6m6zP$jdUDP$8y)K&aKFG zrWPRnZFb0kgx!CStLeJSWJO-y*>Kup+d<9*3KqkHm$QFaGe$<(+ECZ%<;A%ZP_$`N zu%VVP*xsf|zOI}=)C#+{p^sM5<3$X3iaNf9nvdl9}o|_uH8jPuL4|-HVQr zajSKiy1Oa&B`s=tkJV)!lPW8L$84S~P>7s0wjZE>@?{{^Rc$Wbh;5D2uumko*YV`a z&iH#g#fgpi%XT}P2yu8AgSvTP1G*S{(=*nY4N+Quh#F|l3Z zkiQsVF|^!o?FX~(k;lkgrHekwIix#vL4}yo(}_@Mf-_|UI@+nK0*dZ#jPcvmAii{> zhbc<##@R6b?4Y~K{#j;W5TKpL^jMM#!i1(MHLnTh3i)HbUpo1y1syRRJt6sJ>Ck+F z{TTW1HlqHo4gJJRT6`TigR{sd>*Z1yQZk8@=1KX}6=W(2DW}xW_%;pS%gdH~^`=A- zA@oo@n)GG@vzV|em5^mle_jb~i7bNm_d|dTDzx}hOm{O8$S#8am15sQj4UorM9bQo zQUCV3Rsdb!LdIvdnqapUT9g0Q_U)G}&{t!4<6Q3wu5bUr0CU?`b+X%hLhC;;VFvYi zm(mr2qaA6lIv3B#K!4`dTEzJFrijv*B!-C=gq_I-LLH@q6Dy7=HnB)J*u= zY5Wsm#NcaZ*M&E-8|Qhjwj1RLkCj|&I-OEp*f$o;{I!-JRb?xjE8LjV)lJC<#G^uc zzV)0ol6HO98)!Zy>&J|x0~GLE%UiTAo=HD{=&Y3pAb^IG$FMPle}6B7=Pa-f=8ADF zH=r2f7Q&rn25v_o%{8;!$)X#uAiH-`+b)H~-ii{NQpW`yqeH`;U=aY8xr8H)_y6$= z|6RatI{Q6jg$9AT(HIXt|?AL#8eUIAW>$9ey$cXQJ4p zFXDdk=8w-kPG9?wGvXqmh3wGH*{^GKWrvl_Yo!Y6YtYW8hc5w`P<%fse#J#C%Slg_ z$aZ?&pWvlE9zC-I(5kZYox}d43>2BK`2IyApPr9KKhdQDqFmg`MAf*br#wFIjAX#~ zVV&CnWoB0bi4E3$o4gdUy=*GT?7fCD5;Q*k@VYEdzIDt}EX!ms321d` zw3-yOdcgm$=QjLtB>w2w@tH6OBIBF^GU#zeD)77|nCSf`%2d`W3j|jZRgMq3O$vr1 z4pueionC0jI233=$33VEU z%U9F&h!J@kl7b1gYWJKk`SX!en-maaPm`}S*)6!zrrbgm33}>Xyer&v+(Ex+#uR%K zTyA>*B>>J6%yfWyLCIXjkaoKW%CY8K@eB~3@cJl{(OBo}QePs-c@UN?M8vI`vbTYJ z)|RN_ID6s^B8ftPd2KK|d$~4v%YkXW79IDcxV72*6>@*_wF_unStKI<;x=?9XdRV3v1URCS{~l46M7CWK(PXc| z36fbfZ{zB`1fmlfjvt`9&j2~@S9JHYjL!X37tOHVKx)cd%DdzO{lEDhXlc>F5&v-B z$cJ4g*uVv2bl=R=YU_#@wt8bmxv703m8X1Y?#*Fhi|eEK=h*6R6`C zJJ4~zM+wOY(FY)NHEVhEG28k1bF1t{=r2+@VkzhuwVz>@WL&=oYY&-}=r7LL$5?5{ zkvl^@H5L5{(N5hA8?&#voi%MF#@~guCu^8sGhKsXQ?4!u5P&u+L*nW2hg8h4EXlc5 z#z*!FSSF54;;;YoGCGrxZ5$Hiijn9mGQ%kJw!8==M2ApjIj8l~t7e|HvnV3^p7&kU zISPO<;+dgM>L*ZwJOwIySAwO$P`2W@g}~d1`JAIm&0MF~Mv4XgTz|O{rltl5Xo=gp z0K@g*E0XAgIg_9v-xn>f^X)p5pI@G?B-RK7kY2qe8H3!Cvg=QeVv}>b>$zr=GozE9 zKbv?L80lHIQ=o)YNTeqLuf8gp#epzN;;7RT!~^6-Z$WwJmNh(yV+Y_LYL!!q zM2B16S4Eskb^Wn1+(9SX#Z%t)y-aEfUiKN)AIg862sxM%I{=v>Ba}b{TMFN$Vs1NM zm~l7WQC7G;vmG4rQ=bD)ffx4Q$r+PypRelm6;pgp>SvH6k2?4jrL*?u?w$#t`aHo( zyU*uz`NDg5fvY~cmjx=luWqNkbxoN1X`Xa5L`QI>n&`_$WS81*&)C8=(|`R(+o^+ZqC8qOmctPxcf8Ct0{Wlx39BQJ6 zO;`aDWMjSPYaLvytl^lAS%7rCVJ)wKWs+=?rxrtaufOvMCRpS!ypu!sEli9!eR!Ys za(DhhaOeI)st*SLo{@?PbN1Zg?47Rdu?dt78yFc(WgRv3`3c?gvt>HQH9cq>lo{Ge zU~D!&v7^2u?1ri70Ac%eb%2sRGD$&^$otJWUb0BnyMQx^-G@+rA;@GuRk9cO5Y$c4 z0Ty8+N*m#TAPJFonju8Q8Xy6J>vzLk9{rq_JN+5Z5-yb&BUlu%LircT`4YMbCF0hQ zZ@W5g!CgilxQedN*OIL;)E+I>7W%vQ!@s-Y9Zz=DI_swAUxcLlfQZsw{!Ma@s50pt z>noNvH>66|!He*-fu}Avf|F@QySNy3>i506^oZtBd>%PCzv+$YxHyI7St?Jt-|sNj z;#gqsoDDp{(25Qv1cwq0ATDVM8s@wew`d#zXa>>N<2FDQxVi2>SCWuKq}KGF5q5t3 z4Z|@T??r+hk9*3=8j4%qZgK+3C{u~iV-2g@? z$$*~ExWPU}rn4rKJ?_wv1kG(sof(j)p#ixC2T0l003u=n37Ue1S9CJc7$UYD>ieC$ z_3U|jAU8^Hs-@mzT8`b#s6wkLeCAVe{!1Wg|0`rQaFBpQCEo47{GpdfnHA5Gz_?rE zrs1TgyQnD_ooIiS;?|+MAGNPiL;{8-2Mud=BtJ54^55kumzPiyY2MvYA?J%hN-RGK z(%4fCvZN{#F|Mk|i1YmN?jQc`yw!0Y3$S_YqxLEMdiKA^YM2rlY^&DaD2a-=P-N$a z{?;(nV)2aen2Ft^&p5R}(NzMXZLc8WerS!0AXn2Y9?{K^)Wl^WY%W{H`Al}S1t3=~ z|2@yEUi7eQG{}c7B8Qs&Sdc?_R;Ug6Tkxa@ePvBWXI8Vaea3nH@hZlK64WSsZt(iU=k_ebl*!E#MI zILuOMWKn3|)_Ox~Nym+diIRXj1IqamkoyTD5+9KJ#S{7^Pp~@V&;6tAW7d=X{OCbf zg3ueC{XD#pu|l!oeps zTKnl6oj7sm=rYUWe_rkm52wEp*f{3h4$bwu6Za_6ue zu=SdaU4B3bF;B26gP`L6G+uV@)lp<>UIK`=W46|n`cav=v7*Hl>`E(3(hkf73*eg$ z{xi)0%W_+G7G*E&U?y}N@dEEiPqZu*H$ifqriXot;roni)9|Yw`W7ZNppzCb$G1(l zVr41qM9hBCanjMMs@2hTaXR&K3;-$o|D*luznuRlcsDpqoL%{($fN*?3TWd92Y~-K zF+Qez56#7Tt#A-L_<1t$i^BUQn_Wtvh@r=%=%h}>fxu92CL0O3gma^(RJyh2gF%Iw zf;$f&xYzV+1lKH;by_RQ^b1mgN)1Jl zfRRXGXsBWm_S(naW#V46c~WEoML?E+#P|kCZ$GQ17|fH(RuWErd*{sME*5hxYvJGA zOp6w?x$d61GbHwXr|^9sy9^1FWeHNSOtdwU-l}rpCStG35dSb_n}+;+i3!FgOEOT{ z%XCV(Z`rVT!6KfM!2pT1C`U?k90sAEZAPYtX=A?y7mskjV-+0?~iIQ#K9-xJ7^R!!WMbl_smjOi+ekqd;J z{UJDC6@O6g`JE!3_{AncH*37aXr-R_JPhb&DhcxLFO~Do+4!ZX=2nkWWRM>cN}N-F z!&#(t`8Rp07k_Nq+k;nY z>{U<*3gCS5DrBm12blZY{?FVn2(`XvbB(?$#-38(g!?UbzoyLnVIBYQ;^_GUGB?BF z(9}|`#_ZBvAQdWlry1ixxRgD${%Nr*@zu>VavJRM`;RVzWZVtdDtF8BhN|-Mm;Hck z9dT)w!lPM*>Z^B(h+?9AW7^KEW5!-A&(|mTx^#RdSlpQ)^~x>;ZH&J{r2QyO`V-yHFYof()y3jEUt5nT7*xsFVx6E z0=|E7C?Nc(6CZvnpzDvkm%`H__6k>PmSwj76TESnaogR!Sw&~Yj2#L#j3$$R~x;8ckpC8rLSQwaV=-!XygU=B#NE}fQ9*skkSrc6sYsMh9Xijf>Y?7`WWv6PV-tuI}0ufH%FiWkNW{h1}s( z^zk4;v&O_xv9{VWsH+O)konXHl#E#X`0O={s}+9w)&3nV=S+XoTMmYjNgVE&(y|pf z!?(wIASG@66Lh}J1bbje!b_mI3C0XC)P)SlbI6O&%C_r4c{n^0nPLP*<>a|`ln77F z>Y4@WEfu-SlY{pxKXbyyk~h~nc@YB#1v5H}_3^oT%a13&v8VwQOiAF9Xs3Nn2|~^7 zO6BN#T3*0Qh9;Mfb3b-I-TVBwGzD)E)Im9H!W8?xJCVIV8GMwn!V}g;MLd4{Jf!U>nv0MxChm6H(-sLBxpi|i_h zMFuX*uu6DDvFG1;>AiGL9hH`Y%hhtgC~)c9_YXnP5YiDX6^9 zC-{z_#i=!AKuhFJzJnH>aYkTitYwRht^$? zIU5bTJ{hSE_oVK1GUousuIwM8G*VD;h*?SHBcg&_@%A>}{(y5SlE3)p$r23-I^v8G zfK93zr-0n1^B(~9{040LW|n-9a?jxAuX@h`l9M6lpPdx?h3ES~WWw_H1FDu?ew3Sk zK$|Na1q4l{@V@WPT4(UoqIXv3W`?-k_x03QYGIZN3*`(Xi~`&z;voBQf5IKnw@il# zJ)64;S|s{MpE&&MOV1Sa()Df9q(Bj`?>Br6r~4tEMLb@Tp}+LQS*Do^xawakfg8uj zGKL-tlhbWyoQef-m>(K#|EPb2MRfK+!K9w=f?q6WT-4^SHqgQ$y_D^jM-vJU-~S__ z8^dD2Jtn%+E5AzGGHPtpJVY|F%={amAoR}ZwvK9g=q5iL>4Zc|CiMRJ8~aU_Td;oJ z19hE9ze1qw@aLKGm_YOl1hmjG^Dsfp?!b4PJKOY8Ur;_}|nM1UfZ%5}P4VB#?U8!FET9gGNo2C~b-vwwGn49D3?2 z@x`n){nO*7@k*mM|G5l)XL~>;%k`c4#tgmVdRIQ6s@S1?r%V?!`J9|;#266iAq=Ao z9PVfO)mwPfC@3}!K+viA^3ld@yA)`aS+2X8j3pCfnv?4aw5rzpDbO3cktv6)6cA^U?gg&5vZqswR&#sHNlH5@87|Ml zaG^e9?c2yC%o(aC;*GSEC>=}W4D*|j&r6-1L89+uY1bM^(fl0kSF`^$PC!1&Cg>x3 zO=^`$(VKjpyWM->nr2bW^B*s%f^Xji>WGRQ0nzI^`8xw3|bATn#7BpK(& z#z#%Nj7ky<+Ne?;B~^!}xyC4x{HMIIcRv#NId*Spw55{H`ma>p9OSR$%eu+sq{2|| zmVJ5h(|4ccoHqH()tVYm)zibw&H#&Lw`(u+?~|GEQosl(Rxln}_|MrjFR4%8t>YfV zvk_Vf_Y&&bZ$;!fZlccv;Aqb0dT=HMGfe!cYtd8bydWCYQ&jjqk*!bo{cxm449Whyf8=VMYHeLD|tcBVUBd772U6Fb|!31+j$JwW~b4H*!mft zL#VRB|B4@gl<=)W!F|8~d3&Vi!;cS08&qB@8Hqn_pW_3{2WS=UB+c-K-^(52g)Ly>d_wMVv_CD~8%Y!v5?&lxB z+hW$$U^O63!lsCQ@7#ZJqG)C%YMu}rj*(0T> zrEYG~l&?OvN^wA)>A$fQKss+sHX z`TdGW8L%;h{>n5?UC~i0^xnv4k4*QU&Mlsci7*l<5kF_F!G=_!CZSz_bse-(@#ssQ z*L!*lS*-Jm9CuV%>fHB~m3_V^Fs)93S456Uf%~ok9kdnY7^VW@lIh58+27B%F!UOI zJi>sWHXwl_8=1W6+9KbS;Zp7l@R*nj+5b@c)n+|NUA*DljreCqpI?pIydsTVhwr-E zOtcNcWxNY_iugE^ZAuJ6p((2VK6`m4cso8MNPyWId4KQ`1{^0&eucfgVAV98uw;_@ zh4HlUjF2!o=yMtUvKoa9u`FB$EzmyHzh_7QIr4_panTFtz0#LW{MzN*4VCSXi7I*x zle$@Hq6w=kEO8Y;!!v(*drQs(W-xat!sPkWAu3bAMzao%LRcF3dPDPOq1_TeS29XibL5=)Y~tA_W>k zK==1Ho8MBV#zEg@PDHXBpbc}q@jT!&KC*i%zo;~J)9$v62)`ut9ko207)4FOhweucY69Ot8L;TyZ-!dTXFAkL6OV!OV95HVsFlB42hnWE5l>n zPX@-zpTAh2XerVa6?nc#EWjc8=x3c-t(xklZPeV`)H@YIaSOvChLat~S#fYNEpNa! z6l+9XE(`iU2a*#J5$MA9BpfpiYb28IqoIKSY6ap7;_%Ofq!3Z$*L4wvqunKmQsjOZ z#!*O0S zUAz?V;3ZhBJAkQqEWrb&X&}ef?>wHZioEx_ObKOa*HUSNZ+g4FBBZY|RB5$sW-GLM zO;8X^yc+oD4%24T0qEG66qNS-i)&lT2qEIzC=$w5vEY69wjoka$rO<{nyKf6J z{^{7@%6**_Usv8~E`U7KWbaR@4#SL%vbRWW{8%8hDuf5x8YU<@`=EF+fq`#;s@do6 z8otiAMy_bMinP}NOh7Ip`c>Y$R;KbRY@0D;U;9qHLqbOI& z-sgrn{LM4{8z%jmXOe^AQcO-b?n6bPunDnr*zFQ!CE}%ssnqeSc5Pla*!?jGIQRCr ziiBJmxKls>|NY-U{D_-}d-SYj0oasF3=C+u|Bf2i6t4S|@hK01xI1GxswW>!Xf*?( zlgJ7lQWKItuRYHpCKce4U|1N9Ay~V@!g3weY;HhptS2wRSc^xjAJQD1W%C%ZIJ+6@ zsN81on&=;_eAEk|5Vgy<3^-EEucsgCphZh5(Yqi~xAcg0k9kkw(HWCEPJCDeZsd^A z$D|;|W1`7VA-S-=ztDtZQ|M)~*tjQPQQ#9e4%oYN=HAAgt{yUnix)IgDzO4I7L{!5 zw8kHvdGjN##OSHh)lg6Wqesg>CB9UK8M9*^xZ+`T-5bX5`m1eMnmHL~>D6#*=fA~! zZ0Cj)B32%0Jn@s{bD<4=^)e{czoO*?2NL|5`00L|x468+%ylSI=(VWS5_`HIQSANi zv*AP+4%%M{y|wMA2@hB0X|fvuR9V|?i^*12EKKy*P9lEkp#`Qd0PPXoNCVY58tfQk zfq#;r{fb&mRu<%goclUnd4`a#Wmx_(<%>QrA}bR}UozY=MUL=O3fuW`7}ghSRw@}9 zVxU%+=7C9%Ll53nC9M-Oe7gOdz^X>nzQiK@1=wvu?7Bk+q(WugXYN|oKxq2Q z!2B)3RP=rQv3TJ>X>Mq1^nsU_MqdJ?hch!P2p3`-V{~QnsehC6s3jw#>nMfHpP3jT zh<-o2D97BxGJgiLu)_NXGeLt9?9q;%INDS6eZ*>Dk#2yGU)=69;W6!VIDxRtq-U$c zRK$qTaGPwkL0uVu{2Q#|R!%JGFov-;9leu@8XM3sywmO47y)R1g`#f8{Evhdi(Trg zL=?{3JF``Kmxp!TjomN29zVGCRyc^I&66!yRK8^Fb;ge%%H_`ZoAA&Fp_CyDOK5WA zML-i=@k-dxMUei89?UXX*+sXPcCH%X~cNv%GBmA%am`tmGGYjmKfw>Ap#blW+?t9Pr_(K?sLCiatJ1gTT zBn#z5AEg#=T{q~<>A!Q&I(GD;(0W&PVqz$qnve;^k(^q-4YJ$fjZJx?pqck~`f*o_ zFz#rvBE?~fa=sltPfj2w{0zNa;RbswXUUe1Dc(f`YrwaL62;}IV?><4kv`N8JwT$j z{@=tFk-#qhbS5$$?y6wKpn{|bG=_6FEz01!o8-$e5SO_;_4pc2BJOI~V7RJ+2Z|JN zDh*D~(iRzH0+(y0J3pL*z@CkNRdcH6u7p}5rX*3PK58vG4FsoMx(#5_{gelnn;5)9 zn`Z{5B*U@WimvG$cEj1+%%wqblB0CNi64&z6Nsu%keI-s2TaI={5-O2dHaEcdx=L` z0bgcBwgk~|$v7@9N|8;>A-@BS7<6m5nwfPNq<+#PaKjT!#6$gVJq3{mM{yQP12V_gV$8CD+XbB&%>cns`JwA^$#Q4 zqX#CXptouRp$#rB`y^O^D>iD9EYQvoN!FJj>7^x`E8*`o6jud`zPM3DDMrsIZF4vJ?3Tae*hn4$L-w-zrx^legAl zZON%jq%1dIkU+{qtzvL#Su$8XLxD{h6%7i}ULw3$%mRF~_M-ZcbmtX*+6Y__N<;CZ z|M}Fo`_Xc}XTg2KvpOy9ewBs6eN0@XEM^HX$#P`#h(Ee}Q;IPxA5Jc?M5NwU*zrns zodz>EI&n7SFpET&U)L_zKfcRX;pl)TboW}|+A+VUm~BDF>pBa;U9{Ps>^T7dk>jWvnf4%I z+XEYTbkUPs1o9xh#+K*HqNR1o(1I<$N(_ z3`{)C+|PeI_Cx}qx5z?v!~2?>SEK?R6Fu=mc;k@*SruuoVFGqic?5u{RNY~_fX(mI z`OcqE&(|W*Xw@r4DCN-1@?0MccUR)wb>0RNqUUyWsMGNukoP4aur01=!G6i*Lul); z+V{f!Gw!erLwNDM*-kLd4^8qoJJi7{NwwGq%DV#R02~YbYQKt_6WphOEl?aibI^qJ zjfDY%PrL?!hTCOwe6sx`qi^`*JU!d0_hl1s1Kyu?pIs^eRr!BiSyQsswC#X>n(jl= ze0yKA5^cpkz=m4yKFzVv3f-s9D|P&bI5Fm(VY8>Ab)xDpZ4pAis$amZ!Lqg0@6UvJzbAlt5)Y#$ zD+&=%d2xwXZ);$5%NU3n;GIJP0ZF1R4+Y_1$()UlL!VjK0FW5sn0Mq&u3(3uJM`{8B}k-XO%oMq|EsuI7E zSDTfEk*z=WX=bG3-$`ZGeR^}sP~&kttHUgdbS~agktRMW2Q&P?&t@nNRx&GH&wzri z{di%yUWE=2$tty3hS}j#4TGlbEBqf~7WE$<2;4YJY5;q4j6ZM5(%cb*oY@KYWdj zilM%EafZp|W>DPsPZ1UTgM3VP*wcd;Tv{%)?L5BKFasqc#MAW!_zzMhr%B%R$+A|1 zr)jw%1eUVJo-z&JQeEuYVp0>}@);_~vR#e0=z^Ml^?o&B{)<&Q^tQzIhG&?!g2a+r zf3dk`NZh>G#mP)dBRC}9!Qvmb{(vaa5VfA^nX-({jLKx7i5X&YqUvU)g}=^}4- z(I90qeZ1uW>sgA2FIEmF{(pZHE^sq(DT>^ddG}-WC1NXeT2Dv1XL;y%!w_8}taOwa zKa~o2$_2N6y(m>l-5!>FJD5a!3>{ALC87)3XEbUs;D)@CvrY_#<57$LHFUirB_!14 zGI6P8l*razsKM^xLwr=SkM@-Dpwb}^s@otm%d!0D1=q)G%zMEXa`C%l#8i)WU$>~F z0vMi_X!&GF!mkwpw<*v&3L?1oC5MYhIthB?_Y-!yRC}EZr%@ zrM9P?Pj0!;bX_uZTcqFN^-+_z6EixE1;(v4QhKt|50^8ufXRA&VYobRE#9r*i=DLH z=;@z)z+?q+O&~TkX|O^wVh!3>tHw_(5?=+1dkLwqe)aCj!p`=-;V7f>PbDK^lzUpVyqXS>=HO4SR4uEt=7CuH|FQW@Y zAL!w1OEUq~pRW7H8SJ8eCIJf_XsM6B>+8N$^kgARlCmsAY6bV}#H9A?tiU+MF&vTG z@VkpiJJ{7{61}z7f&pXhl#}H+YLc_)dGL!~pG`p*B#Pr7*}RGOPG1U9zs<>qX<1)Q zz7w`TzkQTxGc*mg^k`?(nA1G3UgFYW1e2?b*1zRck!;RKfasZB5G0Svd#A(He0{kY z=X$NRG!}M7lBkKrMy*RV%dQKtUdgwj)MB-*7w`L8UByBYmd)EfqrE4Jp*J+dLsl+o zyg1|_YOR9;;bQxCzVQd&l$zZ{fx33SO!qv03bY^j&xPl!eluZe7QKi0VT!~d%k~gH zgSd_v-%M`~;P9?_w^3o-M}-itJzt%;-7sj$igIK8fysPF)Qegg^Oj%K{;Q^3?tyCKygG=tu!*PKKGVZ(_FkZE$XdeWASCV-@6PQM9J z$2gxAPwn}#i32WO?;iz=1p%;K83|%!ry{f8)Z61~xx39L+n;#{LPlW!rnOT z4r}xo=-w_{^(a!VZ7XG1=oI}rZ--=qf$u010J*$woBMf7$sm2!)Dbs*Dz!=upkYq0 zgwHn(FmvAy96R&s)>g*#1UCbR(w$*{el-mJ$7nOlYZm0P?IG^njY}OFVPjT$4n|Dc+Guv0l`l~UJvi;PWYT|$%8wPNV?83&p zBSzHUTidCqKQRWGS>U<%PTC+{Zq_so70NNVbA9PY2D>o{_p!FTBsO&Cs=*W}bew#2 zj@H3;Xglj7?sz>Glu;A*hgbp9XCg9;^-BRcsLSV5p*7#8<2uPd0)8?bqsfx@ac4YF zC5%2pk|Beyzg^8;W*erBGf7Fsp&@<*e}X)8Gy}eLIl@xs*q~BdCF%e)znvc$v1I(_JOySp zqGKj_%B8oPR3h{n6oHIvcQ`lJ1@Cb~P?GqJWO5E%8(qmAMp)z~?0BQB<`hFM2~^C;1tV^eHXL!#MBJ?;9zevN}`dkEkC*k`^ z1BUd3;OW@g-}{eUF-#&5v=UP{HAslJpT!F9rM4qkb9T8OH{kmSl~+u9E)dY?25DtP z+I)5PD`_aWmRy>k;KGYcpzWizZ)G;^epq0OoRur&r z-wO7^`;zn~Qdz(?Dbs(F5J3D8-Hw~bzY7g{5cxJb78e<`1?av1wi0TUK&7N}pDGzW z9!Ocie8_cATCcV+lTxrbLT|~j^v>3oY*#=B9Wa$%|^mM1>N**an80Ndx?WK0^C6JcR7iHvmG1EfLzoVy+5P zqsoB(isN*n?|Gag8~PkQT{FH)tBt9_5w#aioDBSpE>G_6LjQb~78SnC7AFfPMTMe* zszc;Gtbg!>a$|1W*ufnX__D8A{%oT5; zn#)J}ospazGG1efpB<$LOsrhoTCb`{B*K5Pj9@_R;Ro@2;dAM{YZQzdJ)n2R%UDdY zft1q*2Nejh%~-v11tiSYJpWu26cEWbnb+u=AYto4T<%kwufby9xi$Oi3jRvMoHphv-SjhR$)AjR_5Y zPk-E*=iF51axgu^5uL6iB7B0A7352Wj_hqhglR+|-z8m9KMxKU0Ub^M!T@Y6(UQIa z-|vcbxiBgYN<-MXr=@A+xN-VWXkEJsTY?o63ncaadMN0%zT`!eQeu1@%|g60rBqBJ zQ75%qo3@L9D{_66$3{dmxJN2}hJVxns#E{H0C*!(_PZx6sxxa#MFW#My0(2%zhgxF z2SSixH%6+-i1jSCOV?oD>jDP9rL+?Q8A#E^qBqVDq%L591i$ChV+#a?&Q;4NfFxpc z)WuX#YfjFzodFaiKJE8e&yHmC`(_y^kDv}SA0!(+>b7dNpKW$iNxmus{d1JFyN~(5ZJ2-Y6Kd3AZkj;S@B=VGnUm!S-=4Ie?gL2k zx6k*!N{EDmq#O;J_CE zl*IA9yFC;&ZBUc#pnHaT#U6^O!>P+A_sRlBk;bsF6V{bxyELQ%5EF9vGbASlK`dP*jQU+ znMZ`8(|zB~Wr#IjqF-0!X}3EEtZPtKgqYflVhfmRF)OofT^nt_w@1y1X>NTu>j3QhLvYpnEyyP6K&V0>oF2c2m1}H}!w{p+rJNxd2 zn>AH?d7SlW@j&g9=#K4We%6VnXIt|YVPm45-~IArG--gT^&ap+$7Ho&U>meGQD-m-G?M7WJ-O+dvO^2n;O{r2oIcHjFSbXWc0YFfJ9RDhGMeXp2}Ft zl=81C$yC?*XipF%Ks%a5Sf6w5y3=g(t`?N;cMWKe4dZ|;+3$B$)0v`;AP+35&E^16 zq3)EKrh8#v88}FZ!)p6f@rUhs;&!i+)q(n!PbLLr&(`icp;8*Jz=oVEj9jFo5JMnb z$gN3FCyl;v;;?=JKUap%d-m_CA~Wmd zZ=&%J_9u$N6*Oc`{y~U@{PEemNu&&ye;11+Cj%~^%j7h8%=MrP7|Dz9`kTIWnl6h^ zaso9g8$VhKcUdRSn?&6S1_2%M+keR?c~ITjMrsR8QZ&4puUGASf((%Ehxk6HHuxbv z?Wbi`GT;ugYV_`c1a6am{7DfT8*9-Ez;CuL9xgyE`mi`!%Uk=%2fwyeYc8JroaciV zLSq1TAgoH>I$@CX=1@?!_m~+6PVWvMr|iJM*z9#mlD72Bd!-3ef>F2Jh)Y=O z!IaLsu_+Kp$*xus@c#8LH&*cmFs0s;*JcIWk-Cwr+v@nzp<%E1ucfRPU*j|{^c?j9tLp};|{0l4GaJ)glP zpI$NhdGyg1Kq(8407aVSNP`cA0^kuQ7s@jOK<2^x=$KJ9L;}|`qynLSs=X6@JLmrh z+?Xi<^~NAZG&J1dhB!}v#qfXs>)Q&PT#abaRdq&2P${5GXP)nlFynQa?pa4NgCXZ~ zJzHM@4z8>}#sP?gUQky^6NZQ)r*C6p0WYZFFRQl_SuSNAC+8kq3`e z%LrVtvx#AeUX0*b^e?Kw%l6a%w3F3;sRexnuG{DU7RBwC_oyA$Z0NIDHlzZS!r$NL z>b-#FhE;|Ecz{x3*0Z<0iA9ril>Rb9s<}}4_m;hmune{37DbrU_&j1DN8kq+7`kA; z?0h6P@zjnwn%huXP(cki!MB9}k}b;ISUOh#kl`*9Y7+an#=rn3h3q!j^jl@}EINxP z@wP*WRh>5-0dSiW%}zwc&r|`>Rs(%&suIj)Ss}F|n}~vXmZWJE`QpAC_>fbJ=>xU% z@F&eXpuZIa{O(##WCBRsFM-OV8d+2@Adb)$25e$sc*_PHH4HJm&Gp_YRfxvU1h5YQ z)KoR8x}S}oSx}emGz`&`qT?R9<6ZUYY}R=c;n52wp=r7~?te@_Z{Q4jyl>=~1B5U~ zo~J+O*54<4&W)e`Y9_7$uO(1i=!1`ldX{cDe2*5)C2(iZ-S@sd!OZhSev^Nl#|OOf z9jnXS^w|n`_n?QXKl;Yc?^RtzWL~zOXj}@5wS+R^!;4X14F%oD#qh1L>;9evcx(^+ z{T}uaN{2Ac;j9B9l%eZQwf^LUY-)P_r~n~*)J+-yw|A`@YHt)CCY-yed{dph{al5h zFhD437X*RcumXumUNr(bMPQ*+DFQ2XHMZUbomn*{^O?HW&hU=2_qnC-r+{b5kN1JU zA2AL*R%MTH05$fhQ(ZdvDorY4!t6SgPM%o>zk<(9a-^E_eya&O0mrXZrIQc5Zb31#GBR8?%+yT-0Vm!rB~;ANjf{vee=Del40c{!~C zPYKwdn2Qr!#^gU~7N|79KFE0ZYTjw!Ac$jSMDU%Dnh*E|o&Nm=Nd@9mdm5LzpB^QT zSH9{Yj$7Akrr4ElxF!9L;?%6hlT(2OgL)?`ggBwqiN<&~JrQV*Fes>NUUlU9*u;_h z=|g{nJE4GOs4zqn8JUfL+2_mSlGie7eXoE%=Jl;eKhVj1}Y1PM~CtJ4&WvKSsAAE-BY*=m_B+XMLZ+*+W%D zVX^PweAGOe3cwsV=_6RnxnRyvCCh&eDrHWeb13^+UQF}mv+>LU*I-V?aDp zHvI8Dt>S_7e}BBO9R@J8t8XaD0$%u@;w=?^C@(P1Oc-=HSV!KX%q5ECxuZ={I(fy1RXYUIn@nz4-cY%nyI>Z42k}2J~=xYY~y}OmL-W4$-MdUee zu=`6Eeo)3CG0$4RV~I-kLq#g;9I~X3`Ez%Dto7S%@Ov()Od6t}o@mnBL*@>D zUap_VP~2kEdlN3Q-}W;mz0~Ko+uLP4J1NYqCFi=G&#WHIStQVVK$MYm0Jy~Y_+>K% zGGzwJ)YFbjX%uN1Z^srFpcb}_Zt}EnFzM|Zk)x>^rIAXc=R!eh$x~a_YoOD z^I+(pI57bkpTUAAgU&D1mhl#{7onu$e3DYY1s)U$B#rRlqG=&N8uGddupuwVd?!Or zvv-TbvneibmK}G$Bokg+k8|>Y_zW9EnMB&3sOJ8Z?|wdEqtc(|#N=mT+Tu zZh4D?tg@Qc8CI7mEcVM;mt&IL$@y>v+pULN$wIvd&WIMJ^xlZl2)K7A2h89HLx5S0&i@sGl75E?4D@&+8#*g6Ai}r{D8A z-GfLoQ>*mY^?)RVwCJKq5?9{Z*2Y0~-3K>tHK?~th zVXqA7!RqrJ-?hKTTZeOPY5R!^5O7kCI9YpWz3+3A^H!O-L5$?a&XP8b!$OA_m03l^K zsEJFf4_t##N88<-po@F&?V$Mn2O?wwJHw{UT5$yKEc4ncs0I87;!EFTLLjI~uEKKf z(oNK=4HCda^vfF#frDh;P94Z>+a|Qf=lqFs6KJ_d1vJPiQ&X=Y*V#E`|2e$?Q`5S9 z#|jvt{)TjkOD-NoK_sFWY>fBQo(+bU7U{?;y^USgKF0tk;aM;6XJxWwKmPO4xwT;| z9ynOn?{ghBaI4H=YJGd|CJJRh6iQ?=VKf|=#8}A%au03FrDYUa?cY)_W5g2)>^yx% zM&DBam<+U!V0(oyCmoi*WAgv{^3c};?M-5P)`;Fca6|?dR06oS-;qN^#CKu#j;OBk-BHc>sRX?h}vsJ-6K3AK2xx6uNM)27sE}gnEimPb$ zl3JdL>p$U+l5|ZcOJABqoX*;{ul0P)F^`mEoy(Pv8jpJdfum2ldWS>Wjyi3rE*Tu= zN5*HG2JqlH=X2pK=nL^T_#0J3nxB+S6IzAOto*33@7p}4kQ;tz7R8T;fBjuf4UkQw z5EdcMyYg|9w}1hUAR@^fsL0noh4%w~qr#})F@Q4H4c59tJ8CNWj!k=^F{Iqvi@9OZ zXM0`X|HKYZ&yLX5B#vsQny>(XPD|Xf5u8|Uvnj}SD}z{%j6#zc^HX28 z`SMGvGWjL-m849c%oT7wmdv}o=xP7Acb&0>hRgL6a5D?OFo?P@avWy3EIL82ULeTv z**t;Kzn%|yE)>RG4S>e7c)Jd}5R(^jsdUmnrS_n4PNPI2x>7D2dFA&G`5EQi)Fhaw z3kQx#A;J-M-;fBTs&w9qx~~VMv9%1S%$aZa+(mdJAUrQx0GWsKS&uO{p}<^*+D0-9 z)fSLiiwjAwH2q2p$O(#c=_;}0bM=d0cx^KEqFah2u_028&+oU5+2~Q&g(tf8b%dww zdxh<`y8P<=VwYW&{7g`U|Yk$60?5Ax+}v}$p_HUWJ%;gYXIB|17ZL`(p7@50ZfChlc>vE{*@9d)>jBR zfL;C~ORsBM842m>Qe8>@^@hoE=t*W#*oM*V&!iNr^&fPx12~Sq8(F6jvcQ^J?K~#k zAN|^`UV8;^`m_HEe!CM-Z}g?#Wb>G@q$=I@4vl*6Kvq*LUikRF>4u=dadIamxXwZl zadJ$kxO+X%uWx`4%KlHl8BOi{otk}4I{ZTBZ$0{4Y2qI3!lsitNz~GLx>Qx{S?5(~7)zm>?4lL;}st-!;UIjBgH{2)RUf)m%*zBq2&xdve~qjCt;| zlGnQ#3Vh^q4BU|J8K$IOmxXd3y>A9)voA>=y!X}Do1Ui$S;HgWo*A0LTb9pMyqJ&C z0}l3gFC9O2!EQJrPrfx8E@iW7WPd*xUowB^O18x6GS&5t!Sw}NaH7c5-5SAnUh`R7 zqVI)XK!S7j-_LzJKww15ZXH^|FHp4CYICw5wPbDlfq2lK2S+Ue);7^$lYc@_p*udEjv~GVyxKk*fnRKIV zxGXqy;$ZCs&yW)(PoOi?Jb|>VLfU%}MVgLFC-&8;dXtRAR)Y(v%6=zWDJ0y359LBiOBE>G%8uMab=a;za+G{#U##(5!*0 z^I0F3FXeo$>s!v;Ulg88Eer*@d(m0Ro*GkC?^UE*xz&mPLj?fAP@mdFEG`e16{D}6 z(4BQ%xM|i@Wu~FN>73Pi0{w3SQEOzN?8nu@`SOE2H8vy$y4aE|Ni#%Vc$w=6rx6Cw zJj|!E^11atg6Y>1+bv(vv~`(&^|~Jk=33rq>9eiFxR63)w*D1-&w|I;pJ@BOT~~F> zY^$(+hZHH)5@}n|d^cd;?9EPIeTNpRVd_qnfe|cUimw2AzGqP(UanUo-&Vu?Jo}O1 z5QD8Bh!j$JpyNF+y4fpQskDgOQG}R|4`lPhw$<@T@)HwFr0@J@?$Nxfo?tSwZR(0a zA6IdF+{c_=HyeV!v4#YFyUweA7ba*LvoKiwn0m4KM9dCeXHSaR_=!d+u%yd|)*maC z@y31YoqI%3)X#KJZe|l6hhT77c83QI-8Twa3Pzn!p)ku8&}RePacSaYJO#y zLq%=ncfC<-*pAM+wX=vrsM@dHW8T&kO^eXmuW#(|Kqz-pCtLuNYuowrb+1cKW)y@+ zR#e;#Xn&uk_I{I-06o8*d}M@&Iq3YSxdE$U28o&GFbC=_6}LmBB$V83|7jCa;RXYm zy-d|M7p7(}cNevu&AN;aKuZ(W<`?HT?wDsf3In#qU=+Uu-Z@4wBk1SYPhV-QS$68W zH}`2m(}xD8tC}kI_v4v;_V+;&9s&Hvl5Ov==@$UZ{4ojKWBa?MM9?J#t!(JqE%83z zJ(dAeae4c3+S1Yr{7L#d|LGWBXU9KBoU=_j{y`UG{#C|5sWN$;@xMKO6X5~ZTDC>r z%K8W~wgW~K?O$%qs8OvyMR*V92gCr<&K$R~rs*T9Op8jS>4eEF?Q98vvyO+R3pp=f z-#uj#v6gM{Q-%vhCs>&IZ>7xtBM^{Y=6(15Y<}Rs2@xpN?WeJYa^l&7BFQTpqX{B! z*p*=jgX`}Ois8ADxhewL)DiJfu%{9!#{&?d=_*=B+NJDQC7yaQlV$I$9saDS zH-m3+m+HN-9zq>RXeF*N3X&vW*z@I==y_KBK8v?*wjBXtL!n$DPa!x#ms9p_xa7so zwVmk?z%my?Mp+irBb^qaTybmEK@x&{9D2_30Qesn0GU1}R`HRa0jy-$KJ)PyH&-f9 zXqohOr+A}n%NHwGum!qtKiBpa$UyxsxXv5=vP9qqX~y+i4cKgrkscQy8tc(S89>B# z1A(AGLiVf>a)u$W-lmLMS3JxNdGKPtQViI39AsK2KNK-kVG;bfP)a*lTWHP(H>|nYBkk62*k*ba%u333 z=e2Dqo7S7Df(7Jh;0)$XSjUM&T zibGLqIj15F*x&dH@ZE;PTsI>2L<*^sM63$KZgiQS_3*><1>n}$y7}DfaHUE0>qyaP!9L**2?_@PWLO*fr=t3Lg5$(OBz1@R07{!Wr+NJIx5fe`VrBfA!8H zG3Y5smOeP{n|4T?#QnMZfxxb(lh~!B)9R`0rFGq2)tj}}%H_CIhyKeVhq+>d>j~BXXeaHkuXkIu@hU(x={E{pbEdSQO*zm~5&r z4@d$fdshW8!?DjdODSvQLN~nNS7LZ9rilK2levxn*90FP#!Ea)U!GfZ@bYDoMy#T%m~>6?zGsj}h#I(TG#od^iUYrCz$JOKXu9e4CI z-Zy#e0ezc zNjanQX_+N8_jJA1M~8)7E0F+eN2sZBGK!rUqsI7SA;vCl$TUHPo{nJ z*DLz!Kc%C0T5@getas5v@Ukg9^+%l6X}ZO9&BsWG`5s>%rfZ4<8UJkU!NLz?-L7Rl zis-|oTdlSoZ|0t0r5lDtea4fM$IK&Z0A&m~qX6GdIR-Ed09uqUElt&BX91sGgQZlG zDeucW+3IP%!2r~FSBAtp^vA`7EI-g-HzN($Pl^5T*XrgOBj={DhaUw_52Jl*bLw9UM+EogNs(}HhDJ(Bb<3no>c(M z#UBo|;?&-G*GCVLyJJNf0Kl;P`qyfOU&xb&bXaKKpRs^Abp9%3MMDU#A&R^gIi8Wh z`xv(l1JvO(EnA20*}Wn*&gN8&yzE!Ma#K0g9z@A36Q-bJA05_ry+j-|l&LzZ81RgW z3efAuR3r7Xi$NOPO&p(8WVO0umy*5$uLVeUo_|PI5W!t~sF`T;HO*tBc7H?KSC9OQ z2a(Sf-Pu&4_t_(EZbp47D&PfrbJ>k{X7F$$6pr9DUYFgT`7+-C4SX_NYIkqFD9gUs zPQ;6vJ>o!1vM{>nJ2mE&oI;YUhcV0@2tJVDomIb+>5MKrj@KLf0COf8{;*{|@fBXO zr(xKUrQU(pr3T0Z=be(~qz(>xfGraE*X7D26;OYgX{)!nuGB3>%qwVDWrk*vrYZxr zP~l0(g?7;Plo>sm>BMBLpOuGh?>*iiW;3Z~Z{)6_F1Lx;|j+ z?y_`#CBIY{_Gt9Cf7I)e9Y9DQ7IS7=4=$`3iBOp~a_&VBl^=>HqT*S329)AOV(J>! z>j?{K-HK!$_DjNKwZ&FEGB79KPnV}_cPqyFHM_6Le4x0tw4}@B=zubSNdUkM!^z878Dmiy0 zdCt{DJ2vIC^nwTcC`GOq?DwD|T&`KpnZaH^x%EJ<-Be^{+KUVpx_j4Dftd(;@l_K! z;3w*ChUJ}N#^B|eebGka$j(o6U!`IGJ;4KPGP3?97DCNwI3=wZEJ#EG?o-BINW>gN znUuDJGx;uNe(lVIIo!mxb*(T9U}r?0gcak@U&ZzvwvBD2mg0Y?`4f3%BOt%{EgB%3 zJ#5~f>@nqM^S+;f$v+HqpESq9xO&Cuun=wo!?v#se5`l{4sk>Ou>>hBd}ii!ibcWU z;&EF1s=-brWRsS`p2uI0VlpchXJ~+6vx%=L`;T925CH}4&obDYji6>QhinXDWzl7= zxzzkqkTF?vo9c769{QCue6XKjrB<%*HV4Z!~li|7_u7rPn z?Dz|6zT@=_+*$*KB$YB|w1jUxnf7-KbgUVD&8b<} z@Ak7FPW5JO@B2i+J$)hpZ+NL%9)TylRw9x7kZfuac={39(;^UOPO8Q)Nqyi|`-I$* z_lZKvJffsTaG|L1;@{m}ggE4J6dKOow!qpo;za zxr9}elq&Uxl;=PZ@G3nc(MKDsHmDy=Y~iL#4W0j1?JJlBj8w*dDUYm}6c4uSeIEyh zE7H?m5RArrcSD_w6LVh8OrZm6m-X0K{0Q5~W%4!^YGRSRg@iau1|aWPz`B9B8$#Z2 z>^r5E>7vjKCK9EpCFRZ;snc1=c|98openeMiz!nni$wcVqzCQoi$V(XolOZCj+*7y zfE9K?sSYEP)7mZwv7vf9zZD=6c#c{`qEVquUy-~_Ho5=9wQ38NQ@Ir0Q_mhF zj};H2UL3j$hui}Vwh)(1!pkDx=*po#`Lotqd$|FIQ$DNx(2n147Ydkxf&Or6Y`;)v+!DNcrkt{&i>m5wK%+ zc>F*D+A=$!_GX(bUR2w%gNRZy<)?-KTZgj9)r^zle*qk9fGrU2{MGWOK>bf5im0tq zdK{4#4gv~zh5?Yrg*{c+GK1yXv~8j-9q34SrjX-Er0Y>7govV^m4^>WazRBJL!mz; z#dqb_ZQ&#$^?12Ew(HNQaNH+AVa&eR6Biq`|2_K-rP*gd^FaC__&~f;#<%DU6EEMQ zK&7TilX>2tm}qnokJTvPp9)6m#0CU-s__eEVh)ptSFj~j%jY6Kqgy$38t465#m8^tpbP{;XNJlh|6i=UVi%-p`{ z&34Rf)e6CiaaV$zg93Nt%Es|+sW*=R?8y2>-#puS3?<%F0z?q^zr1nG=wfJ#SRtSm0*svmqwD(QSg9nIHKP=rds@tSCg9f|Lq;sBBQUj z<734}CAF7$Jrl*{YDM<6rkg=uAF|U@g0*qA#D=5Xjojs28Vk!rg}VY9$CO}*J2s(E zxUzx-0<&$rX<~qc=H_R|P=g?+1M}_D;g#)zl;Cx>0};5QbL~{3V#^kv{<#{k!K4h} zB~F&~Vf)~7GIS5!Dh*0^ zcXxM}(k%_r-Q8USNOzZX!(M)W?K2NNVP?&GWD-F{zJ%oOePWt1ZYNd&*0&@ zFVzw=-AYDf_~wjss}#$>ixu`yeS#TUVVK?6lbTK4z#W`jNYq#ii$Za#6E~j2vM!Di zK|zI*YPtx zl)LVmEX-Y3xr^b48jKz!xD#R>8d7bp>pDQ*GiF-xan}ejV#DD{8rp*?v z|Ap*=nSjt?Yo{*$I z>g!9-iY>UAT98&OJe?RXw9iy7yeY?;s+f7n$38T#uqhgd%m0x&JP{(jy=7}6*|2B% zE}|!H>nYE*z1>EBgVc9k?z6ZCBADTc^X;akEts*l@Knu6TKAy!lfac$dZL@}ccj9( zuVCikF!`IiyrSjYuds#}Pnhd1N{z!b8`SmWV|pyUEVaJG9tA(#CXfuTvh?7%Q%97F zQ~9rtg57h?|KCT!YY0${4}7Wx-Y~%dNc4s!YYMn>A6s_8KB}mW?~{Cc>@SFL`uFcE z-+BJCo3v#2n&$xFDfrziNKaqiMA5W_$#TB7=~_q-ENkw9?eA_An~Ml7m^#TpJuJwY zR*0%D;g`I+KSZ^{XNt{%3KSc;ZMqkP#%4gZ2|OSGoid{C?GIPRC)I{a zZS9};rF6X;f%PLkGe||JUyZ~l4!Rdt=+TYyk zvGR2~muNYP?O@l%2(eTKvZSgVBbA;;I48=SJB@n|B{ay7M4$0c&kf+b z6Yi+Ra}52ST+sGc+|B=Bc%Tj|CkR$%Y<1ugWfgEd8{VStQj2#K%AM7IsR)$ftrxK2 zjhc44KC)eCvnRwLTTWWIdcktce0+tWrk09q`Dx&7Hif#14O0Vq!0V>&db}KLp0J4u zOC(ovP_(0=NzX#F=~hY#o0&8_QS+G$QEMI=u&hM|Rjm=Ww0^``l25unHPEf9{urJl zOrj-}Us20HVk8%UZ1qv}iE}6GIrV(n2gA^GZGp%1@4|03gR68llRHwFw=Et~MGfMW zrdrZ{$-ubZ2Tn)rbpNKZ#`GrOXRN7Ylp`~Iu9zscT{Ifky!Qa-Sop#iX}Wl-uA*UaR&$9(@Jaga6@I$EF~m1KhtP zAT65L;(B2h9LCvy@HsqCz2)Oc&?pAf_ys@9)PIXkr@@|mn#1I;penB{5&L+^8$n(G z8kPlY)P@=5s)b}pln??!6J>JreE^S($<`~f%{UsYiM{m(%H7^cJuuUaE>8LKpVY$W z372jO6V#c44e|%&#thsU`uF0Nu?1{Lo@TM3Kp6-mwUk-uur}dDB+y7#d-{ZPm3B*T zrLLBaY+2T`k;jA))bK~42ZtG=)4>F0_OI7bPeCqcloc2)`W$(mm^%)|%RP15DY(`T zo9+;U=y80@`Jp~M9b*ZRaRTRhwd3WsHLJX_r0bwW{%hPpX~cwxPJLuGB!a*-24`L@ zpE&=$XfQ+%D2Q5Iiq(_AENo~Gpta~%s&Y~H5V|3FYAi?f*jQ-!pcv`gR$dgHo%};y zi>6xK!YHGdKvc1y^gaI<0a;?f;3%?<%f2d`b*NLu6QT1@$C20AHq5(|9l?(qS2?I^ z?vyqJPTWEnVkrpv2}qAaiBICYg?sEkpDY(>L)taG83*Gt{Hn&Vy*@ITi=x+3cmNgY!P3Honu^PuirAC=9JoiU{cx>u=UQK8EzW@_3 z;J)y001V9sK#%q5Z#PyOo9R@~tA{pc69`+C$x;X!81fO148up+1yJk>-2#=p?1D_M z6nWM5%n{ntG&z_}0={*WXjOmpQsuO`Bn7TNMecVN%SAjc@H~eX z#XZp5Or~-xhhKc4B1(^3m`1#4}enR&caCwU0GK!~QYagGiKmJoHa#<1Z>&FjQ?m%C)L%~qhj`bo@ z&p6;161!(mBiWe~&+sFZc4^_t9Ur=W`eJhMdEU*GXaauFMB*P)0}9 zSbu2gs7$)jPOg)ro#KNbQsHv8Fw9EH)C`&ntv$Ixrq|*Ol<7}@C&Qr`@)W)^lJr$N z)kAuf<1wi1v5A@89bfOkg({!ecZ)?!z7@n71$(612xA1BT;Jk zwG>(Yr;wpI`s2989?I;n&N_?6DJ4%m??P=UFO&0D813zIIHQ36i#Kf>((R+6|9IX> zt;u{^LV3kX_A$x=ev24sG5Mw%Y`**s8ekq6{P>hIJr|<|ux_rEKexC5rE_B-bV8=t z&z|-8va|y-1?fyLIGT%oEDAZRrvJYO44>&1$#?PdzXUF;@z~$;#_B5e&bBu#r$A`i!?9FMI*Q!k8~jElN{a zZC}HDk~uuXN-|QO6H-4svzc1i_}0WTYA1N52di8DKpJTjke#kumNe=369lu}^9C?* z{U&=02W&bb%m>xX&Mojp6AL_r+W}uMZ~K!AkJ_z&P2DU@ZJ!PcZksKA{cg7U6|2>T zmEA=7XAnb)bk6K5u#<@Um9+?()B!Vl!6UC@&MQO!tCh&HQ9@o~szJdgNYK|+Z~FM( zj_mPGyKbNC$ECkrov~e>E4vmR!X66eeulw3zf&AEQS&%zr6xl~Iv`_W#|b-G*OK<~ zi+7DhSGiM{o~H*e_oKub%Ts7rb4PoheyBJGxsc)T+q|0nMycFpF(nEmAQ~m2!td@` zvV?l;(v)hw@%WTE@s{UW;?j z;WJ3Oki-5#SN~B3zcc7c)BqB9jXD=G1SOp7*+G-eQii3Vu07C-vg7Rl#p{Q+!Jc7a zeMQq0Z&ra$WFc=jW1RKv9MS{H0|Drs?a+9@3nJ`dx##hx*J-Ka`c)iKi*u37SvH$j*Z7pvuM;?d#h-vW<3Ch`+-q*8 zFjJAo1|B)wZxd>@W>8XQCOR)Ww4|->1E#;>gR&j3u$h-ob-B+U?=Hd`CUmXwNn{%B z3{4Jd23c~C@WFrDy%}2{PMW9QxDiXdA{V36`4_DTPY=zE0Y^)tg0c_iw09fI6yNh+ zKZUYBm@ITaBOLTR4M~vUF0zayDSr-?{Hg zWWAbpzn`F+OWHN&yX2Rd1!S91 zd(fr>BJ*>j_qi=D9!GxB`gn`ZtDdOUfQ?+@ecI`PJ!$}3JD{$oJQ`)$kF;NDX{07qup-Ioab6X^-iPdYVZHtvjLO6BwK3C zV#<5pK4hS{mWCL?!8?hXqzh2*l&nl2j}BW@;Elo#+v*da9&SD~`}`39_PB+tD~7{F zM0PTLdaI9jMfyPKNN`7RrRhPA@#kC0y~UX1Q~h?qb1Jhh05I8a`$fR_)EoJ2=h@*~ zlQ{n;Wh#{Kg+G!%EybsPT9Oa=^lkWyW5$>;J+e|>CGo*T$f%)MA^QB-x~qgvo!Mv9Mw{y7Z?UbN-1;_41PIXSQl_ihfQLM{Fc8t%bd#R3#U!E;0-!7DJNV0 zsQtWjSzat+{c_!Xs4c*>00-w^FQ0m61ph)M%h38yJ?5Y5tl-3x$5O49<0d!CW@3}hj`sE3g|2G{&xm^MPNGU*4FtKwTVTU2^_0M$dw6a zL1z_h+VGc-S4(6(W3Fe1*_lPtYfUiAAu5>l6)DVE((9m_o(7a84D(hDbwQFEM>5unZoVq-5Udu(aU`!{_bayIJQm+!@Vpl$DyokwywE=_dZ-$;zJ^ zelJ|C(t~K7%O?Ws?DS7zh{m~mao)U2&(c>*e50Ie`!I#-OghEs&gkiy_@_NCaow@> zoKawI!gsUufr@ELUc75lTL3sBze$k(Y!7H(zWxsy1yCA924Fys0dvPE7e#EQ{?ZCA z(y-(@A%BK-`uBCTRX%r$Q-S&b*dUMhdV%eeM+=~Kx$k=q2-1;T1K)eu`Bwd$_ZJIjniI zxjnJM>`e_1no1BI)s&K;^z?$HiEnf3!Y>pLKg<`+Y(&7^yg1Bwn%~r>eT!-%w&BD` zx+gt`*7%NThU6&H$PSVG00#77<6SY^@Lf-bNZVaaftOMAfFcmjnJfrU75|OH=H$wF zMI!za5a))HV>8LVkM$`^9RSEbDFn0^Edl`h(o%MyKdOgJi?7+a&=%6pG+_0Iia)CS`g}i1oxvSvtNr0?A@n@!dvVjz9DyH;<$wZU~n~gC8m^rXWVA|T9 z;-IFo$oBZd)Rl7wa|OvW>u>w5U+xTWGNG+Ie{5i(-81r=-Jhdt5{%YeRlA{H0bF72E=g(4U zWgDu~Ozx{l)kNm#iUi9Ae*LhwlR6!S+PS5CJKlp+_G9?{^=9PpfOd)5(X;(-7Qox+ zG2FmccKBoH+kLBzv(xdJ+rPDL^iREKzmnU=U_alPXmpr&Zll$5q5(@Krxvb6$1UpT z0Hl`?pECe{ghl|#n6KH#($&3PziJOvetb8MG7C;v$#dK2 zih(7yx9}!k80Ky-PvoNxT|9q4!wh%%iYQr^{|-7pyQ!(o67)N#04V^g#UG}jSd{wO$Bl~5%kX__wO3t8 zk{udcvNbOg97H@tNRA}u@2@l+7_T(H2f0}fNbqrNWof0NRr}~xR@V9ew{{$H*;$9h z3gxahlQ#&zC*4Pfr-?C!CxQi(^1)AJ*+Lfw)h@2FeU_d9L6)D!;q%{MEcL+$y^d^A z*~pvQdBkizL%m4>_NZr?Fo&b`%QIQLqLZ86qGzn_{c48VqKn)_6Ico$GF<2{>OT*I z=%6Vye{e0j>RN)CtsKLQw1C$QBd9h#H4u2Dzn13j{F+rfmp>frExh|P1gnsc1|kx8 zq+BijWBt19I~SJ^Cz>_3n{H}N4$P56d_UD{OsK## zf1$pB4hOZtlhx(#8tU2~LHr~eI&`8A3~9omksso;6)yl+CSjGWy}?^(E2pfk~46$2*f5c21K;!wI5zRpq{ zO2P(3-z^3>B+{!Vt;v z9vVE|Cc-ne=xZnYe6#AEbFurJ&2>`a{M?pykNyw^{jd)RA7Zg&+qnK zTBav>j*n4&yK%R~=3nCEV7{1#l+Wo8Hj36e@b%HMbS#bR+lRmWEIw`+m+lgE&1SVc zo|f`!vA|Juk%PD25O;feW8T;mVEbMk*^f^ES0GYPD3^J@{#+IUT>OxpTcF=ZsN^io zWJ=^Wp|1Qkgs|j0yVa6PGS}lH=!iT@TZrrzsa(ePDfStRnGXFh2@kU%x!dKil+$D~ z8;M0;>##V}@(b1fSUZb-d~JkCTzppnC|<7oSf)U`k1N@aK|1p+QFstf7Muvp>D;8g zHXzib1*q^IZFrg5EpHfaKM>QVnRE(k1M;R^dUej>-?aqK9Gw9@r5@PW4|#FJm#rFXnCaq94@UU(11|6HQyaO{)t>+xtPH8w@Xs02_pCF)%S9( zNTZQ73V3Sj9f;*0mT>5eYp55Idh9(Tqpaub+uV#p`%0GqiB=A9URx@f{L5&gYE4qC zv&cqob_~7V*QqrOJd;0t%_g^f?j~FLYHW7)(nM{wP>f}TP-II683c~)06-0MXg{m51AWj*TVijVTi$3#qk-uqMP3bFz4^|2lcKs&pS|^*W1)jZ``Br(uwI+=VNd&Lh9ywOKo2V&g`GI=Uz*)=xn!chDh{9sZMy16G|(g$8?PwJWM z=V6tO5(ZJexhfNtabY77`Ge}pSD+*kh(bw!A$<#cJ`;!_s2<_&p+j2C^i_B=9Pu#A zwn|CduV;c$-LolYMTUcBW|XVt4)s19y1v423Z16vU;BMs`NZ0DmLfv;rqaMwN!3S3 zRi!j2BfX4f;DpGg>7N>M)2*6oHalTwB2F*F(IjZPS2|zt&PeJPd$0^%XT8okFPQGoL|_*$ zj95sS@S2&*~(>~wT3rOe{(#l0q8nX5R{c60-__mn8)Zu9>XE zXnw)#ViqrUqA^YBAtl#`3Bm)BdU?$?{v5Fx!b7o$Bm4hdp}6?Y?@i`x1CNAFEjCAR zkMu-gp~@M;uINFM^y9`~GG+Db*Niv`KKuQVVKY8C>#Uw3;>e_^S|0#9zx#n!vlN@g zMRnt;0*C-0lJuTe=&4{PzfF=( z;WQqYo~E?G^fh(C%wmT8Qti_7pAo~PlYHjCMf8HK*zsZ(r5o5`)`~)4frd8Js|7iq zd%+fqF>_P`$(}WiAGB&xP4)zuoRucJ*fWkIS_e%Gz~MSMe1X0*R*buFxvK@{B}8Gy zS^vH^Sw2)vswGt|>V?xW=@N34J{u!GW-T$Tbd#0W9$9eZ?wx0eqC9=F$+O?F&*yM? zx1c@CJC#4!UvM?g}$L z`^U`JnBvx2uWIdhEd%1$p9Om@LN3p0R}yQyWolQLYSm7)Tf{^8cY2=(Wmiz(6boeN zsUmD*%7I&q#7UT3v+fhO{p`eicG{n45edD8%c3d^fg$oEhs38hA9K9wKEC-b@cieS zXuNWdV8^d9p^krL%`#&+{XTs^my?ESv{IEusiWv`_@XKGp~Q5YRyVR`fpntzo$D-T z)#92`Ew;%n%SPN9lNk%MnbR)^?Dc4l+G+`IB_AnH-yV!n<}X6Q*oVoHcZHnO z&h~Hz;RXH`hWD000G2ZtkkFkZy6xkv%+VCa|b`3LdyDkZVS2Eb1;7D|)*83iJ3TZN`4& zdceLenbL4eqt<9oa=cWZjG4(RTCgcIHTY-KVdv2l>b{QN`%EZOxqBvlcJUV9JxWi% zB;G||Z)5ArdyBIZN~zl(cYmdFE!qohYAFHp;YJnn-eb@E$GW(XCYM*g>@=7#$hF4^CeuNHK+<7rO+1{uT+iv(j0ERKp8GLS?B zU7jo}4xyD@CA`MPV+nIbze32ypkjhf&N8-{2;MX6&i-~*B8_ERu%)mno$oSz?nt#?Y0b-SpIjWK&oLC=Pc2R)L%@Y6XG z(NjS3+XN7tvzc9@67e{_FV(1xh^n^fq}m6{iFp7-VB-GDe6KlZbx7k=E4?44ia2Wo zrm7B{|J~;wh!F|X{wO!otv9n3!+}7!pcVM=x}5?LN3OEYPp@zh&PY)S{>6{}V*~zx z23&Y(xtmV(aij@$1b~u600`*Q;YU!CA`tG@FzbZR?@tS3fSY!V|3LCi@10Il`S1tI ze0&f{CoGA75pp&KvKXbwVR*x^%&~(*La`|_cU7;5U%`M98@uj8p)tF&eS0Cl8{c3V z7Yn5~R!;zDMcLCS9)77U8f~B{8s92689LXhF;7f zM--oPhMr1pk6?q&R-mtm{JLGnc;)P1=RpttmXnkPdH^Pf0?YyoWppX*BbeauaIGaG ziG-$&rD6wjfgYA&52Cu%fyK;kqmUR2kV$z;H6@6EnG}VgLRXI{+J|KQmPV@IxS7GVV2PP*79C7(Q%%Bw#r9! z7(Qt8unJ7Y=&IWA)?i&B1WG?Fkq%as1+$ZTVmXrCP)BOQ0%wo4q=NOFrjrH6U7_wA34nK8 zS|W<%MpFpg*WiZJQ_di`I`bfLzymogt6SP~*BmE`I)NLf!ofS`UWJz>T_ z_&4FY)U-#+%QnfpV3bDI*jL2r!C<$|95;4;{Bw<6pA11x^X5e)iym?y+Du*-?x;h z(z5Onddkb1X469X2@!F`2kt4i@*6h7>KBCWObRWVlF1v4yh*VfT1w=AKw`3T|K+vp zX@Fz4HV8%~2*_G*+N|j6x@VZ8C7esa$R#)8ePt@T8STjPPG=|)A`!mBxNdZngqpNX z3|3h59hXbohiD}vP{t~}bfz@p7%viEP zg^E$Ya)9th*&*|kUN|`aLM_IB@JssKmJx8Pp6mg$b=5tnXh3vK(+*o0FZ^8URrY1M z?<;h-QBzu==e%LsZ~v=L85>NML`Uy>}(**>0C>pG3pQm5Xs^ zTZr2`zp;!^Y;61UE!u_JL+2DecMc3vXhgle!8#P879`JFQahb(Xs;^zx9N~MYi=(N zZWoCxTB}``G*QU>+eEzeBdM$R-UOVh8tu28E}>hO6cpPWUiV?qnqOWzQ!GmFf+CgX zF?(|aY_f}Dlady1gT)n|ed5%K(`zCmnjWrBai8DfY}EO3b$`a&q3jf&mKc1Em~h+q zCi+WIcPDuJm3kzV>oL}U^V(p%@Hv$K>i?GjXhdOqC_a$qq`@Dc7;Jcy19jPWh^j(H zl~2c+c||r-&p>EDY7gjH1JzN)quVAE^0#DMAR+AnrbRXe`1m4W1G$(DAN)*7@u&Rky$wDo;b zgS)uJjh+IEst}&ul|VgnJ(YodVm_ldh@G?Xw!-BI?)XG`_3pIm19&Q>bhvPM0En)} z{e)S*4o}+d^+b~5RO~6K7uR*ueH*l|3&M{m6wFP6?~NWaw|3sEp$_gn(2%mC#)?gZ zmg>P(mwc?v)Q(z^D*t*+%`5Ji?@M!F!Ho#if!r#giLZJ>OG_H|V#tBzFamfH6 zU-6W`)nGaP6G{H8HAxN$nCoqQ_!w507!QOjvXHQYUV+YWdr=pZ4Byl0Z}A;Tg0pX*LBnE z&~e|Jpim_?0Pw2k;W&QC>QZVwP5}Ri&0yfoCyj=`Vy_88FnP7^hv>>DZqGJ9X!N}P ztJ+Sr!q|4}2LyDf&w%L|0lV396MJT~xe?bIwu<3>MA3PIZi&C&V9cw`v*J4O$b)mz zLknQ}Opizd(Bz}KJ5m9hbY#M|8(;8R0^MG7PN*DT>LErr+05G;#ID=_F|~6RJ;`o9 z#mw5(n|F4Qsy2QUmfT^?YV|%!?Cn`WsE4`e6my?-*|0`2P zssV8%C5-~xU;Rr|$e`r1;fAG&L+{&h*h8m#J&Wz&H^yA)a9&>RaNk83rYnydto$Ku*MI3wB1jC~IMDC6 zk)JZerP4|a&YX=J8Dn{$i#j2SgkPvwsVqmHs=p#6`D^pdqmV5`kBJ6(8!j7cjqc3% zBhJUClmF2zm_V)7C|-W2t5YKlATo7m*2TUm^W2V4G+fS2RwyfND*WZ87ydo)>`%k2 z7_cw4+a3I{jaA=q(#nXq;aBRyhj2h`rJnVC>)V7x;ZxAXL}>_o@0|l6L@Gg#3Jh6q zxLR(Uzp41SSi&}AOY=XY&uUS=h&%-Mykw2u9M&KR|MvyuWAd5X|S8NrxhjzSQbyFWyUCo!$x6Zn-`a!U&`vh_d30Kw-2;h(8rYU{WDc;A8U z>4&EKl;RIo0lR)Ycq6hM%`r^5rKG_~U8wU0K+o}SIXenJd1R(mc*D~LPR6Sp{@#L9*iI$P_>Qa&c&a>q$>bGL&SR?u~pob17yfSAiMqySD!KzjNkq#|sN{8Ak9Vdcw>p+rnhsp6p+YJja_xpz$gGEHBjU9P< z7`H6*8(a-O8QTK;l!i`VFO%TS*KdP@-*2`_0!k8S9C;4(SUdF=uCei=-9S(;Nm~03 z|K~g}Ynprbl_>hoSXy}VJ6s>Qot`v)&jgtaE-@4=61~c*h#(BoF-jw3QeKysUI~(P zUe`2g84}s=Cxv^wYNf8K$7MXG%lEY;G>cobRBAyL{+dMH>(i-)Hcw)JxbB@+b=d!1W3Fr+N>iVE+=TBp zyj?q+v%}bS>Bn0aH3_J>(OAH5U~d1OnIGyB8Z>JcMbp&bmOo{kyc(@+U1KiL*Sxpv zqtfc9_a>wK|6MQ+8)czZdBEOjE%U6#&U zcTe}Nvst+!&ZRI56$?vbzWw>0j+57`t+GQ;m9e!4p1P~_V?bok!(lnG%7rvK@z46s z*VxC3pTp{7&&Z;&(#jd_AH(&yHIIxr5FYQ8At1lw8XZ@1GtR%XW;}Ulj#?@K(9!{M zQe~r@F}ibwx$VG09{(?`KlZ9VCGyh3Y{jCOpq1}zqv)}YPb+wNYPFqsYE>2D)YiAd zC0XPbx04G;H%MSkUbbf3IV?|HbsUa_FUX^dTuGRj&yg2Dk-kFYNqP{Kqgm4us?mpK z!Zs1pH=_V#oqm{gwalIG<_@w==JB&P@ z7C|3$Ha=c=X)V;~Q(lo=5!I3?Cqu^>#Yq#5^nGo49MuvMn;`U`f!Ato8J)dYE-RUR zofuj`C_ZYu6N%B{hj(=B!PBKe@0(|g0@aa+9l042&;`UzYk^qjzJ_FM)Wb*td z7>&RuUO$?YM`$=vAFg?x&3UZ6Mz@<9Oj{s20tCcXeq+KRP}pA%FyDL5k)`mO5@8Us z#Bo?HecV1B7uYn}uM)G9#FG86&v+%+@gAb{hCHJO^dH*ff9lOZukzmqkqd_N7yH97 zArJM?W0$_IrL85g#dl2kKI=xiK?x=eKbPwly8{9NyfDK0cuJoi@z=vidGkffKNpKe zvr8~bJG&sTFw@3&thH&Gp=v&^ghhAd_43oMs{8#&$)X)>nZWo-icxs9Pq`qUioBrH zK6N6Y8??W5*P0exu)j1fun&KO#v#5DP12D`b@K8dY4z&d{oBJkm|EgoS!9u#}0126S& z2ABsT0LannP<*_HgO?nm(bTEeV5Xh&PfOl?O2qWoOm~)WRFT3TNqPY!e-IH5<19&1 zVx!P`CVELWn!QdJVnlGvDsD94*z=P+F7Rx1m!DmdVJ!wNF*MdyP&j@nSVzk! znEE2w6=JYs^vj5~O0imdNG^6AORkyOdb(v)e}Au$@2$IUpokPCU7(kA-jq5haITR6 zn~6CsV>->cn4=_zdekeoAmbTp#&ylB=>-sLu$D>xgZI{|y<>UDKXPxFVEanm??a=-@gU9~wEuUVs>b@1;(jx_ zmCbwy0th6qO4Vu=l=k_Y`NhF+d#26q8~A5;I*Is<_&%e3(s_saIOLPS3>b=rFy|yS zPJuQ?H0?W`8qzm#7gHcWLTLUR9mu&n7)q;?FO~e>-l4{lDKO#|e~&r0*L`W_pU&-SHd2jJ$K-=fxtL5QqwyGU`QtC=RQ}R6)X~6Sx%^zzjQQM0)hY3m}K3s<%k`~PTo4_zncpI^d{=B3|D6sch+xoog&f!2FQGhBSW{xAAVEMmhl5p8@vsr8 z@aoY5$h;w&RWsR(0-u*S{ap+ALS^7FW#)ri%Oe*LE_-_VWY+r8V$tN01-6UH;Vv5h`S2xc~J6zM32XIfSs zu^m?qyq693csQQJsn-bpOMr@jkJ8b$H*f97RPsd3QBnYmo5u}NrVvWl%u;ZX?LSF9 zM(HzG0CMm3hMR@w6=n-?aZpuBQ+{6P5m~X zJZMR5xxZER@Ma_*clTOuq_Nw9;hNyd@%n8zKA7nZW2H;feaqDzn=>zs{`eH)iG!Bc z72fY&_?G!L*#Uf$}<4jtzZy$S4vi~D)mvso>NpU+ zvBq`PxpN$89SSfuq^i0O`_p5nbl9cU%ffrGKGy)Itd+T<-;u>Xz=syxN zPgRF1!0}Ktz^ym(o_ui)JhlCg(!`()r~ljuW}9-kku2A0EtH5R`;zT`V|5;W*?iiT z#kuMxqIBR5Jm?l^su$|_U&8z( zXr}n(H>1fP04Oi2+2o){+!V^xRdooIs68ZZBfW36W~W>l0U+;CF=Ma=HZj%TgJSGX zJx|BOS;r23)S@{p_sEs|Rdtpu+_USoOE_s_i??pn7`Ku_Tzu}1yD~LYtvAojRiBd) z3eIZh4&|$jq)j*buHHH`M2!KxHH`Mrf((6uY-<0LJaBtl7Dx4ke6e=5{PbO8G6~Fp z%)75gJ%7Gsv1q>BM_{olZ@**&B3D%*s4GOdBqJ~~KqS7oue$eOnq0IVrvcHblH2@} zT)4lN4YTO*XR|W{EqGfXaJ~Rh!CS7E8v%McRB??4^D%Yxj;Z= zpcv^Ln@lGE;B`bn=FvGYnYNbXD^wo;#2S{6gT;UAv#H5Q6<2ss7PW$$?(sCIg(svF zxe*wH8Q;ka`55fX=6Kra7<%|-2=&0n@3d6CJ{JH~NepogebFq#qP{w47q)JHN{A!A zP{W1M2fXa%U=4ea_mt-lR@EM3!)>Pb3=4NzY%&ow+fE}V8${oSOnzf5)NYV&uvv#s z)NV;yck8qzG~5^mKx-6Necux;YDn+1zUX7KeHLjD^p9x?Lz0pKGvxquhW|>633dFk zofBWVuZ=<~#lf2G5u|zs`Ut?ZeR`Ow>LxM#JhLD(cT}BY@ImzNFkU2x$ktbYDh=pY z4~A7wg{--e1LG(*L6^6c!Tc%D=cTed_y{CbO$MD&5u@<RX54>iQ)(?y4&fX=dbJu+ve+P-%AR3DpjFPcKKR}yAbPzP z9(bj#-(pUYx1Z(!{rp6l9}9JsbjACW)_IT21DTEX#)?1{Hy5HS&s~iGtFl|PtRF;c zz^Br=bi&a3QsI1RRlx9Tsd)&L*#0G!W=M3?yu5n0nE4Qgx-MJmEdV|a!XQ6rngw;; z-^OC4J6ivQ=x|w98;$1zd77|HDRQ_{b(gDwUqT3)UT1nihrKP|k+5^_a*qSa{P}cd z4&q6S`ICpYYQG$#A&&g#wN-`)mlOHW>lYT?cRb7pkWxfeFmJ6cj_hCZEEnsz(wiQk zRm9jHeb0Dw34`G)Ef}StZ6nz5ofbNiO#3awe`az`^>_E*(C{`-MoPJKD;z? zKGY?UlGKN=iW5so7OHN1sw|9V(?rFRZSRn!Y%0@LxA^;%pl%Hq+}x7@Z;!aK9+o0W zdNyBw{p5JNQx5rqfOKT=_gpZLWFp^P8WRo-96VA_zLY|~*9C{isdB5-{7ndy+$1F2 zf7nk(&-xkJmYEVCh}IJpJeaJ~V31o*vz2d6y(F_5H7K)+0TDS4p2>+jnluJ=LoH zEo)fn^aTW}z#uw2B*9QJaXRXlXMgK;9mRDT>$%@4O;qMvd4w~&+Zc9V=hKYtnuqA8 zn!|cNU`pR!{rN5)fGtwm$NV*e+bZ2+-Nm?$|0pj76)N|ctb&L0{~;TP1#@Nf#v=)T zuLJNTGi=duLu^5xHzits-W&QuSxl!G&pFH_zY#i4VLw4fXwMHIF2{de@RC&#NxR9=c;My4Cl znq@4W4h2|o)N9<1DH|gl62v;KQR=4(RgVkjefkUcV|a@8w}dY@Yg%9iZc1P}!oo91 zP~h+ltNp|cs|!zh?{G~7%*2e^tOq`CG7ci8l(lYv3g%pu?%IQ)rM1CmC>ZuY)D(&pjw1;I8J6_d-Tf2PmmIRYFjVD#W7cMYpr|3rsARE|bqeV1ql zaXfq>f%C7B+c9v6eJT=^+w|1J`;-t{(REND&41Dmj73hQWo0RM@@5ubQSJn6)($84 z5ckr*Z$U)$K6wv{wo_n0J1=T1EXdKYn{8#^OzAlG$V)=gN0I0*~|Lh3L zVLr?+k7J>j#W>z$?ITlp&7pKq=S%F4#n^2y4wSC>j7iA9%4qZxq3U0bDC$o-?@6wc ztyPvjvYX!fqyH%OnG~O+`>b3x3V?&NNkegQWvHOC zhe`_k_gVY(HI9oMVUZ8vdJH|2Ve0TchWh`Ku_05CdhM-ooq&i5P0rl za~ZC3bfw{kBz6Z!4Gj!GKcQ^1!@J**{90}&w?Q1aK5n-q)D-zAsRZ&x7gscCk76q# z9c!!p?smGog(mH@H<`3M$W{R;^heDmRR(T>9O69ltLv|9xo{5&Av!dq;>$C9xSJpr}B;c80!c zT(OFo2;JlO=@Ux+(l?Bi`$gbI6JC7E;1?xwW_kOw+Hbiw62}8rveW5`i0!UEaP>rW z*`HN=c~Nr$tC+jE{C*0B*|>Z#4oST2SJxw9_X-J0f3OS#?> zeZfGCsCB2Pl? zJhcHQ`Y{2M{-{-x<)$l29b_!BxKD`a84Hs(J(z7PzW@Bs82!gOr~Z6@x>gCEMx(iz zfHX4Yzt+t=9jTJ97Ev9d8|~xNR`Yb?x*_(t#n5n*q^jKWIzt4!Lm1He5XGDNS9BsCOCiXWRP zJ-En+`$IIX1ej^IloA(@@u!=|j%PmCSr`FQw6eZkQyb-)1_^cAW`aCPcwzNyfTsJ{ zFhE5}y0JsWb)wL^J~3Xe3U)fa_n)WVFr2e?H{Fd|H9edqJ^#pVMS(%a%jAffgy5cj zp5>GT+=+Ch1RHgGb@KnA>c8coHq>W`S#2SCmHLmf{jW3t@JC0u*erSiwbNFRmuo0W zI_t$kaI6#!a?e>az3wZeHfH+JF$jsE)s-Fq);*OoNP3MO(D8h8>^egL3Yt3RnCM-; zE}eW9*o=>wf#^FOD)!jI94@};e<(GcEc|5P`%A{xBUAhwS(s3$6`Cr@pQlP6Ts~T7 z|39YQGAybt{1<*0>FyMeZWsaSkZuq`X&6L7q;seNlsW{ zI`w8-X#cq*@2y)CsM}?bKXTqnvG=zy^mV)Q`>xfE;v>9j7r6L-?b6yNPVC}SRByCl z=@Fg8=kkkh)3CF^NqWE6Er)rlz7J9JEHl#|&6WL(A8DXj zkj;;Vvr`4;hJqeb^iBI zuF^vIF83S~{H&InnfkhNj|qWk*y!9S5w(34S43dlxl|2geL3BU+1!OqqPMdV{6DD$ zbtT^|1Mq7%zC4TJIh@$EwAge=kzVM7A-jtck;$&-2MRQ*4sxeM0#EB^zcRKdVySY% zFjJd}$-y4j{Zwu;avuY~29tk7x9RTFQO;Is)__!63)HcC(MbUT+l&QxZQojNw^^lJ z9;sc0Psf3XZn1w_-+bcFYe1@0l9F|mB0f1dAXHQ-{;$x8p_)eB4L`tfN(bx;V#>g)Q*GPtC zORAY^7c!SFg`kK=aMqP`kHxu=P1%_D?Wwt#>)%*l$H(A4`__F1tfWW804M?h>N>a~ zLRHFXa(L8&Ytgo-fZDyQ-y%@~lTv*{A?-Y)i>B58Zjv0V#|9kDrJbUJ^J#0`NBG0^ z&?2>qzVh<>+D2Lmd z@oS71F_xn}n>&S(f{ijw(C~H> z}=3S*d0SmCvvIeci_J-w{1LhnhJz4H;{(DY_Y z;v;F#Z_!o$qTN}GRLCITNc)0B6~ty%c;IN+dg(4POgwS& zz}eyE6hx^3+h8mFoI;T*%pCqS8gevelMR7MKeFNt_!b0pjKmgh%jJ~=#|Xc#;S zO=D780=M9;ko5X}D8K!=REqc1Fgjiv;hz|<0RH*R1MNxr4CU4@f39#J7EgW4M9OHJ z)!^WX`HMQ&wD@y(uPKFy9b-KsF(7VUmYk_;K}DaUH%myZ1tN_I6pqbr$v@mQbbx_7 zHJ+;yIwo*Ce=;&$uC!h*B`#IIVmf)n4KV-)> z|KH!OPWvh@sNuHeiYt~z+Vy#hLNT6W3~kgG=4`Khtle>YX>V|C%ja=W(@mSVh}4t! zCQy9(>{N}E>BTRi>!!(V`U;9I8tNNj7FCgx$nyxCwV93w?vM8BF0EH;8JpeC`}%ly zw!nLB;q897sGb%43WA~&)kX^-l)FQh!<3HVuvcOfFez?&82>Lqm{X7-Tk0=QtZAV6N)Hgoyz6N6{*UujU zqO+uA*feSD6^5*dURvqHArVAWF4_uYT&6?X9)+P%LKIUXp0 z%Ykq`2JH&a7xkZI=UMc|RDbrcj)?bE_0umc)9O}RBY=GVtdjn;q_$VbB&KR^*ZX_;6Yd1me>nBYM>=GYSg%NDA( zv?%>PuDDqql|0Mp3I;a6-1Ju`+ZUa%5X~rHXY-vW zXPG?2Ynfr9CC_0KrNpqMe011EJ}YdhRSY(;3tOm{fbo9^N2DVz=f@5&?@rY(??R2z zjQ$R4*H6rLR*wnGITW9u@8+M}Cl@+2Pvx~q3+Ej@=uPHsKJ5Js%XdX=If;4RGtaV+ z(^_ebTQ`=w3aOW+-Y(O^wAH`MnI`(+;28LI*OHKmipU!O-*bsv$u9sofuR%i4HV+v%E zFLU+uqYNxGx)FWAd(goNj#4&L0XEbhg**L)|BuRWykTsP0PuAx>N8?d3Wlc`!aqL? zFJA?+jZ)cP(imFXMp*!jBfo6#0Ow)>jnn1v{=WK=WXkb$nH!=yHruK8HsCAtZGh>ky=K!G?Fa^kiM4sV z&zE_}Q{DpvQ}$Edm!1Ardl_xN_e!Ov_aaQm^bv`9eD|cqqYpqD8P*qg-gc>P;a-N+ z_TLOT=tPR0jn0Eq&KN(r+C$7?VSaDSFMm-*HqD&x309inv0p>u7FByn!s%B$d05Ye zon8h-gi~NrRC*B&GxnJJ^2`v5Ia7PVW`K38|Ej^f zlp}Fl6pJ}Jv(~C?I#t}@#~+}2m~sv_WevUw5Hy((|4-QS3YfE`RLeo=p97A1lXxLu z-PKa)XuAgd<7l?V&P&KQ7J!RiaIX8#>KY7LSUx8ik|be&2wsp9B-q>^25n<@{+bRqe( z{Rx6cGe~xB(PK`YB`haj2)2@|*_tudWu0Js)As1PHD@jstevXUtI*YVJ%uIa)?@gW zm)MtyC;a9;QJ`7@QOa!>&Q9BH6x?>D#eh|F^LiWr0c1#6)nh$?+MSc_fj9y2{&ID_ z?BLx4phpoB0-=YtMZmDk=W;k57eg+A;eUYjUzhhCIWa1(J;ORySRkr;wuGlV93kz! zi&CuMgmg;c%_HTwUh(GB{#BfYAkmo8_2zpSMy>Hmo5bS7$;+2tB2Dsp^#4PnQRWMO z@q)IXKA&FfY4_o9$rH?&9Y#HvK8z2V5hfcPSIQscrdEKli@iklH^fa*K@VO4Q>F*``oi!RE?>OgG@604e zdGtl6hm9p>G}6VFqS97IqcW#v@#q!@@t#jkUeQ0A&H4?g*~8iR8f7d@o#c8iog7*h z2U~Af^_G?BW1MPsN63jf*&{;<^ht9W6;V}Rh7a3e1*wVjvXJuT>SHNHQ1Iq@m?PCh zZqUv;X7fEC{`Sx~Oeras^+c4Ub2*vIidOzS@Clc1BbVJ>1>8+U;MPIR)ahfy1rZqe zYM(jr(>dwabl<3^=ZW2@n3Qx3u-!ym%EaFib9B)yx9y#Z3;HJWF`zX-x{9Gsh7A(1qE`YP(i_ z^waM%5H(UXW>1i%5S_@5g{F3|FHh=MSDfwj(_L4cnkA?D`30S($U3TIJ03p1KJ&}87D>zam1`9yZi6fH7@_x$#2_$yY&>xaLd z(4%2#*Y?J%hvOZLQD{v2xsnNmCBlknspV6RLIby3>5^*w#s%4ZXozdNfOoV}m2Fx9 zMP>i{#&@L@gJ+zgHep8BcOU96FBHzbvrFA0JP?__jpaoc2z zp-BEMktizmfKMx&;QIHSB3!rmf=@(GK~)=t$(LE!yHl1(+@2kHP9;LScV*e*wM zM4H8y+3aVxUdzJe?PT<0X6RTU`y?dbm%xvZbj(!8Ko-fLA3&_KN|1`a82EGdIfi>h zGKXyVsnfG%6N1%4I?rSLo9kGLqz6kL`%KH)6Ke<6}I(+%@5U?ne0wEG>J z`K8{Y-&xr9mL1UayFWw6edDygTLk{_?LV3CiHwp1@vJuu|{4P}L)`Qkz18zbZD*fLLD#MF=8%QGS-8j|=y$-i<(O#~JaeQE@$k{Y8WJ_RI5#{Yu96GYq0%0Ld6Wtl}-F-}x17zU`{q zp-D&cF8N`m{z;3X{36qNzrOaR<%m+Fuw1mr1}5~R^=7|d7x2&n*K6t_BVPGT(bfn-66rFI|K-6WC<9eF&NftVC=oKX9_DW&xluYXBk6;HUkEF?G4C#N zo|Ya>HiCzTde@VVf!fAZRmW-OeU^jGo#n(4Q;ftRIZwEh72!zZPpm>k$o{i^B9b%%mHQ_o zp8*snu0bvB=FRoj1E6rop$T|{503qx-HuGAuacg=?OcYgmS0JgW(5Gm^}B)8Df)BG z35|S2-&JOaQMRoiyA zL7x_QA?2eq;xHr6Aq?tdV&;P=M@Zf*bS`_ZN=|6|?f*<3C8=WU_;e);J0y|3Und%S zOD2%(Z_xIoF}VEV-44%G4E;#PAT)5N*}z9l`I>-8=Bm&l#x1MK)g8z%S)y~+^NzrT z&pY$vzvL>g<-b3l($Q)J6bl+?0ranA62ajcLF$IT9J#w9=(X;vv^fx-1{Y?C(#a`2 z`GF)o(;uaO&V^&5JbdI$`G0t1C)Rjg^brKk+8(VjqL_ZXRR+XNQs-xvN+Lvbk!{jUpjr@Z2r6|#GQe3>hC zuT}_EPWDHUQihIqQ#3W7G%rg&E+rhd`Z`3sHsBQHSr4-{M-Hemkb+C4VmfB-P^Kpw z)$Zeay4<#RB`giMdo++!w60wY6`rL#6$WY?7V#-OhQclw^zPpSFC6MWhlN%ojbo4* zpdN>@Wsk*C20oJoY5&2*zU_U@fYc{X!cK|hKIRA&oqX5pxI$>oUJj zkZ$p<+v>xgIMu7}$JLgLxnwO3FsoK|}js zE^_c&4nP|=r;OPZ1)lY~%@`Q2e_O2xaa|5eWy|(3mQLQ$yVh-Q@vFYVlWNcZ6))sX z2#%4u*ZPe&@$Kt6R4il_c|H3HO`SbaxfpD(jmWD#-zClGMH_PJr7ec0xF)aMohPtn ztuP>o;&Yyn2z5m||F&)pJ6N*Af$nYV?K3Y#tNaPXN7#&*MpZ)-M8ZZ zFdmheEUzOIIz9F^S zaw+HxKV<^XkuU6b<`U&I>K=h99C2bMcL>M_h-HhG9VcWq#evTlVUa(cuOv>My4hKrV(Rt7 zm)mh{P3G;c)q%~{{f~g@crhQjP`+%YAr70Dr7Xh_ZHu!&M4LTWLP;+)j1SdN-pOeH zvtXG~zI4GSk#S4y2CCw-bJ=u=SsPCrj+?()h-<~EkafGWi5R_B=b)?*eTy}rr# zl=h#ZVM9jyVfEmp4$4&29nMa3_lJYf7{!J^o#+P+B;Z#p#Q)I&<+2Gu|L3?E+jru| z1z{AQw#4c^86*Xti~F=?iM(eV;@;PQKOcRbIxklI&6Vr2lwbctc9O?k-wW%bM?E4Y zKZh|Nx!Ip~HqaeUtLE-OPa11Cd{`ps>scaVF|)b|EXs|8b(^`}Z119jBHI^+V#@9XB>ZD1eQPP{s>sj(@K193P%;3BIcrE-XMy1Fp}@ z^fw>TW`=;;zo5j#x-v8;4>MMghvb43=f2M?R!sNUEv4;dZ~oM$Q4GX3ah~E~E7OYS z>W#bj)ST#l)^1e0)aSOCm*ASb>Z~Pw5tt!n7j9Jbp)pZLEWg`+?w5H}8@6n)u)nF- z9t+GUNSmq)_d~!q37?{@_69x1nK&u;x)YuDOPQO^80ncfiq~Dga#RX^IM>=9jwh8g zF&_+StQy5n+B%OKZ|IJT^&Y2SLN@4c6`q1N&{El^c8{d&g;8<$Xm(1Kt}CnjiF^zy z1C1&FND*A2?i;~x`FHOow3Sq|@rQ#d&xpO9jkGu`q>$NejF4=<_ltAf-s*5cW8nE0 z)J55(dA2fiHySY-@p_(D`o^5856TH|!f>TrLOWnrB;Qz7VaqD0jg?4totpJgh#&Yw|szE6mqLrC=| zcEyr{NUX@FztZ#k{F4vmruOxc?j{x}n->P{<1D)@=g&ooK~vIIqYpI6DsS2Yn~1>% zZUJ>{We!Wa&sjj0bH5lGv2Ip`9Eyu|?=0~Of^aDQ8YxSaac6u{;$IENO8rKIt8xH_ z*#OCf|7JvWIl8YX)Irddy@R&1sLEzJ0!e+*+coA8I1c(7L{f4j>p=#8`b;**h+;_iC02Kxgmb z=sFn{BcCW9%{cy9>brw4iA&Rc?NPetc>48tOfK3ngx0GdG?UAu{RX4q>ofFSO0Z)r z4fr!8nm`G*l^iklNor{SyM&wus`|waO#?ZPu;Z|i?V4fzeBV*sgXVFj%jlG_coC50 z4CEQZH)&?P%!esiXU_G*(6)~ocj=%{k2j@b5FV)EHw z>f>=Q1FFaSRyOO~T+AuXD`D=0H+rC+2n@w9&8~ZSSKow~de=jCzT;+luZS{ADJgAm z%fTTeX7_Z$ND|>U6G91J=|9gmoOa--B{wd_4GEKgqr%=*eCg+`*EiS$K$~N7UQ;0O zcM_rm*$CGPfFnR+Re(f(_9|s0vtIiCCPh&=xOwznXOUig!Q`1N8&2@W!_`6YYzts& z5t|Ldeykf^S9<=Faa+wytb_KhuygyQvo>GK zn0jC}yiaE6^pT#xPic?H>0;Q=)yVF5kkp6qUJWWh=zmZl#`mpZa$eyqdLnN1(4u>W zLx=T;2RAFk<0yF?ZG_+s;$KjB;@Z^)Xc^^|%tPhUOGsiz7?jpUvq>~XMjr2yrLC#H zGfg(&go-~J$qz2VR$QPfzV+h!eRRjaT)X)w?Aq0CA^e3s?^%)u zdEy>68g9OW@Y1RGY-_J}+$pZg^r-VGEA^BUt4Wu{? z)K5vrB>o|grrsmxGcBPf)4-uz4c5pKGti4J%H9nf^fASy{dr(=cUogxO55)vfKqe( z!*D;SUzLm*M?Q7PtafPFs9|W>!qZ|?~e^+S>Ip)ZqtW9PA)O(+C7%OZsLKndCh0i9+aYIhchp#b5vQpSKPv(T?qT zal_8Uy8QX0FgH;yY_8I2%tPKuCK91YEq(kk4fo(EfSpHw(xT9NC#`ttTHKax_G3st z6J0W=(&6^Th><8mRXgFf3jYe6so?JddpW{W)lssS5@tTF<)9-~VL)1xUu;v)dpsiU zpl7}pvJVqUN1rZTj{nKRh)(BDQ$IiVYO%xs{|Gk_Z^QLS{Bx%gqQ+_j^@OoZ3aTI8Jmtlqe5XrpkjAUFM_NImCRib{F~ zkLE7-Kp67fd-u`z_~>RO#jeYnkrxA>Y9m-+bvvQTzGI5RexYo1Nn%fsg4cvmx3OQK zsIgw5k0BU|D9%`JWpp<6IQE3zWI-Fv9?w(khkEmuv8%rJS`NPFhSsn6W*k&2%=X!L zRS*{HJZBq@Idw2A0(~?q1O*G%A%v3=n-qNm2dJ4Oa+0^_DOyu;&(D`bcF(q}gg`x` zPare8A0fc7NTA@)OXkNh+Fy;=cFa+l-#bfvqDv#>i_oWy8j8$kQ;zAl{ z__=4d9;c)A>!f_>QmQij6hK8mn5mhsRVLLpg5dq%4P06SRxLB^mR`*o=dZ8(P!>?X z)W5r1Jo9GYI|vmLGsca1=cWK*t@#l9$bi_*E2 z0+eIwp@q&6D3%x0T!UCAPf~wro^|h&Xo<-vSxldZw0smTY4t}LP-QP70{egkDRLU@ zZ`-kAGO#yBPnJCCM00pRJCP?@tmdD3Yb55~^%Qgcx-`%tTZ43Mh?&@Nh}Z|0mc)qJ zx4|eR79dvfNYLA)##~HF-v{vyt62*aInRQC9VaYM4^-Ja6?tPw1O~-`7Jl38@;3ct zgavMP!sEVlL6Q(yh-f5I_GxCbT4C*1j0I+@6A4?B)JfZBw&%Ji^kEs=h=D{33xC{l ztpEO{Dm3$5yi}>{F<$A>d1@@t3p(kSe^Qi`r)q;)A)JK_*p#PNd`l^EBUUz`B4;Jq zeq!8%a27^g@^>m(hP6w>M(m+)IBr6V+W?m2e?Bx7N{tS!q%5Zf6$(i)&BJV%ze<)` zF)^JP1*iy+!Z+e`;7&f_qp9m>=klWAZre?22)m^iJBN)>ocnGnzv44wT#rXAl4J`* z*JYu9SW=oKujdzkAB?TMa#)_QTlf)h;Dm5Go)JHB3Zx{mZCxQ zVy8(#?WgMqfoQGI_5d&>1!nq()puha=mNvV+MtD3du0xAWzeZOZU*gD?y%iLa2~(k zI8gFo0JD^X0|zY&GBC0}hlJm}!=pE3H!qm&OJwH=&fJsYD4;GAa(_hx=Fo*7w&V+; zx5;2)(L{v)lKFuZ=hvb*j3D?ejxOFI=yTj?H52a75p)x-gVMH!g*3?Lcp1Xw#vQ2@}qG_4IcRFVk1cjb~c|#@0FGSMq)1|!pPR| z=<^&1y{e-G`vZ&D<)mY`Dmj31P!|Ft(l)g`W)iP3C?9G!(Wu-#ObnJ(fRD|6v7op$ z(3vUn&%FS0n`hG_s_GOWs_Tzy!a~z&{(IywNPP2MV7cfQRtO=f4JSlst|V=&1#^5+ z4M1I7vm@t%{O6z60$$+4Z3M;c!B|Evy1Wp4 ziPP7xf|?>12<77(M2_gC!i$zBa_|E!Gssd7YqeL&SC~Xxw+oZTVPWL)C@y3BM7ps-Ja7Z`%|`~7+$8i0+kmxU z@(n8Pt!hrN!uKML-Gk-?(5<3+Hp(+;$6h*U)++ ztB8!4<|tmO%o>}+!j9@To60{m+kp`G1A1*6z{!b;7N3BUd061Pz=tE+4q3`CUTTzO zpI*8xd=%Ec{$nf}QrkBm=gahy5KK!5j#t#~jh%*j#YfpH?~Y_NOC#33Xss{qNcr9N zNrl}H*?@kj`WY8S#?yH}5OD_&gnzim}kD`7{ajO?iivH?+9#0Ss2)^UVQQHK~f zAs)}W^7CZ%AM53MHSHIV>Y$5u?XC9p^Y-EjH~qqR!XzNThEI+y}w$cf|@@IuRbOn}@s6hmdKh8dsIAgwGVuOg)LLJ(sn``~! zni5ICZ-t3{txe|N?0VWY8HhjbP;KiCp1MzENC2NR>fsMT`>vvI>eKNX{p-Izo(1Yu z3@xsb*z;dXc}yOzGgM6QHiJV|v47~ayM&LJg)L;tvU~dg=`*VD{YE@$sfsanP2BGa zZu%f-kf88=YOW8e7fsrlhS8ks!2`c#C>EcVST&t%Gk zjTjt1k3l>x*gUxaw8@v-l_J3~l@{xQb&C#$sN>(Wrklv?v49V=a-uCfX{fs#1W$6; zPs;%O-=3g&2dX;Dd|uG$xx3wXpPr+J;j1-LSs*>0jE-|A(`31ga!Om$D~}sTXO(re zX>5qH=XX7C)l`Ez!XX?}qP1G@npfOj%5zA`m2bBgwH#+ACVPR6DIF-$Eu?YMF1beM zdwX)c?x!emd4u7Wvs;*g%;)0K8R@g&@D#ng09DgU%b*UKW2Pp@=ZqID2_6Y84`q4o zq}~6vVkHo`mor5<7?(iA_^EpMLH{)vH?JXZSRO}4okm1=w?(v&$WD5D*BVRyDt+5n zTf)}(fcDbu-fs#K0D;)HMR&Ux(6PD{KzzK4%-*W$riuNg>3H2xvVbO(Ob%D5u(t-m9SpQxb zyfwS;ZUC^Dip~YuXio$BJ)Y!OW%IPh9o7YRy+u54>$H(Z%6~fEa_Dm;)KePPec`Pg z3;JD~8&1QGu$+>Y-f3|39m(b%z@`M6AQm0yXZ6G!H{f6|yHl=)>b##%n1vy|pW3Q| zPJC~4O$rl*-BM50de_4?V*EZt*oMiyr-Kg}rmg*Aw%gdno%W zl&8w$49po2YS5hyK+oJ?wHV+(|2tf(N?i^9cOwsNLP0y#gM3Z`mZ$6ee}_Bd>Ar1Q zG{jnnJs*|Y!ky+29?*Ppr>hp;8C5xD&b;aoC6?KJn z=k8w`J6UHUf1pwCGTyp zh7%&8tN1>3x>CD0N{QXnA9!plwUw?}Xov`qPAR)I9CjrI0$UF4F(Y?;es>qtIFyG= zeowF~aZN!^^UN>bDulSRh|~s{AU?fuavc{NYg0PyM?KNB`FJdNZ9wo%=&I!q{I$I3sTupyJ0iNI(Zz!5%EvP`n#k0R4cgj||&DDS-HH7B%mBJdH#Z2(7 zmT);K`J1HU+seG{)FDBs@dOT}uF?RQfd*qHnicZWf`TEAq>?mxouAbv(uZs7iqi>8wlM+Y~FNGd$kW4uR@1tMEL(c6hR1PDapwKBk& zw+_)~bDX8)_y8E_d&f(i2h%Qkamw*|zv95^PO}d?$c1*$8BL zz9A(7-z?wwFZx{Yiv9s{esImJ3_Xo9{EImRCGI4S71UkL?f^%LM@k`y_wX^`i$MoSw%6|lS~B+lfSAuSqT^lT%LJP&dx31qt; z0@njUMZcK(L-2~Tu4!-f0-YB8t?$v01^w8w0$jdx2M6{tksCFb7TOxAml| z667cINvPk{dUuvt=v>lkHADGfRCQleRyFVz>QHNye;680ASk$3C4}A`_>VuS6yj_O zy~tR832Q6_3pM~JI@o<#n!h>yrz1A$M&m)#`+HReTY@^$ts13)|Ac@Ee|8_!_Op^^ zpWtA^Cx^aqCBOctF(u`~1LM|>O>QCZy`V8FE+3UVs4N!P26l@9A{GF9|E<0So95D` zql^%Mq#Z2bR}CN%YRV4uKcjtz&FO9k{}@IIV0?OTh|Y9;_m>nl?q_JBQGlpjn+B!k zBi2D+tixW@+eUv;byVD#*apS34=fSz6+vs7iM4P^S!^`5^izq@0Z&@YR7ySwAU*%# z>oMV*#ORb2o3{G05LJDl4)x5F!A1@q=rnm-IBK4=wpk1czV1g=Px#;9v-t#FC0q4t zno7Md7EE}GQ>j~AOi|XR@Q)7!w;6L7@e}3UB^{g%A|EDK$abWD$ZH@EVG}mDYPIC>9u&)j;3(egBgv%L^jEK zZi(cP7yva#Xoy;9PA5q}hGj?=+oP(B&QPF`bhD*FUuUQLTetkfuKqHChju;IgLYjN zVa$SgyA$TmI*?h=d6k?8MVwj|yKBe;z+!x#T?=UoW5#1^x6b_gQPlmQ+|TJ^ca)4K zUMNW7Zi>V{#RNKYFfDDXHXq~<^eR!`xcbQX}Q>*wiD`;@M1e#dZD}3#FxuGyX@z}7fh*Y zu7HR}Et`?Q`fz^C?Px)R?eBR}TzE7k#}{k|Jf3)qn-xA#k(wSw`4SDuP{2A*L4M5s zI;)S^%Z9dJhw)JLzr2KkD1rdMg82yf#^=CSUS_&&-+nRD;lRKW>%45d!P{=|i;oLA z_Cts5=Ki44Ce>V@VeZdc3~O!FVbAb{FXH6o;d>fzviDJTCi6RqS&N4gO2M-%$Q1nJqAoxe|K`&tU~>?5>g$|M zzw@f~Q;=Ae@$!gja?5z%csV0sqeLx#D!i)Jv=tx0oQ?CF=*Gb!2--8(r21wnE~o zj2txrn@JygJY+!|XrU|pzZcbQL+3wEYLL_>wOEh;{KRa@Kk*gu0d=RF!YuK;?v0&# zr>_V=@UvteU2P^a00ou4s@dn*h*4kUq!#q8f+AF;9D##xRGWA3Yzh@-al*^S_ zeggfaC6T|E3!>mBC0XA`ey4biOyDZ8orPz8NqC;0O)+&sxi5V+Q;F}(8#fsAmy<#y;`y#cBh2%#o8@IdB3E#Q@`Ph2j57J=pZazTfD}QUx$VtJ z;p6ZeV_xGO-gd-WSl4>)KHhBPNN-#J6*lfYs^7jvK^mu@w!Mio;$;i z@mo+(1i!R;-?*w3R`pl+PCfGf zK>hXZZ+_gdaQoxCM4=Cx+bL$*n{3i|VdtIn$TuN1YFLzFO#tEh{-TXi4|$0Vt5s40 z2~xX93k3vO`((Y4(`&;`(L2*+tU3`jgH-9da4M&{R+~G#vMcGV9pcq14_S7{-MOeJ2_^O*^T5^Aw zL<=cSeHVFAs;_jcQcsnrP?08SmFzyW*F-OC>UULYHWQb#)Mpy$mpK&5Cd@H~X8V!F zWacNaYlLKG)h!wh!h=hYi`nh-Sd+V`RP`rAO} zw~O1MwwsUC%Rp$ZmQb}9)YHphFC{aHRW-G(OhDMRPyKEET(RIr9<$~j5LW>6fHQd54km@0ysm%K?; zX#f;Z7CQtM^$m919Y_{rh?=_>9Kbt>kUah4?;BmXZxE?P&mc5fiPN?EdRIXy`BOx( zfdILzEr(I?U!#VojXUlZ^5IpVxTdVoOdQ^(IgKaVMhlb^wB^@P*N0ekO7U9dlb$V^md_W_@Swcy59`onC>q>thq*ATTxLEv5 z5YS!R8H>9wu^lJs0ERN*PCCdR)${q;-*4cz&MSGJ1YpdK>idn!Y*mvaNu{6ZxAB|h zjGTq~JrjGYHhUTb+Mr$|4lx8dO4=C?E8~wF3#HRq6?mIJ*Sj496z;lw%MYBIQQBJP z9G+lq+Jhy$Tl5_FmsWJ7rzOM1HGT!@|8wW%h``qIWIt}5%ziX-l~tgg$)0s&^KpE<&7RmKYh@|g5?wky>^&Bn(a zRznDG%{bZAp(Q{Iv25>sn0o=KMpZ9-!JK-i-mBuvmX(MiJJq7<_WfH|8M`&gv#Cui zlAdNA%}4hl9?$bDuBc=TB2vs}QiWedMzHByjtb$diXYNG=8)07nelk;Hq2KsP$(y( zf6Hd1XiLOl?%7QsEsU|=I@;!Kok3}0G!RGs11te(-2htm19iE77!4nv)V?g7xq};H zy_EK)!LG-Lj2b{RavHKa`byRS+5mf=?gCg-%JJB3>fe-P;MsKl zA7TC+=-1Op{_~+ksZn_+)G{I<9Zh&(bg!}-a6wm?>P=;WwEyg zFu{Gfo5K8P()NVwU@%5-e|$RnhSq!i!c%keXJ*1yZC`uPfa;WXf>Q9ZYQW#{?>;Qn zys{ripvXIlCIjGnF*i}x8`zOgjdJnlb^Y?Sxbi~y>7RB>Mxbckfk^I1+|^Ys1TV#= z#Lu%`;?S(xHB9`Xtj72tYOzE=%rtDIlWTlf7jC?6Ih0OSqz)njJ1{}qQw~zO7-y|| z+9ifWWq@jR4P-uu|ed)q?oBY6|ml61^6vNGWm>#ezoln z@r%QncW}~B3OHoJhbR@g9HJjDsc#D|O>d8^=xJ z8GYqfe-u9SbAa|!hwP!DM)okZRs45$fky<6#P0U%w6~Q)lSMu4 zHd1oC zy+w%nsPA;NrVefBjv}*|B%%g!3Wy=2{AE514wB%c<1<2lV63!~0PAF4qn#14-OMFS zb#fXNgU#Q2)qwfrtG@w>pkJY_;CqzLCS6~Abx{CSp!l6qo@_<}K6v);t&i~U7cQsc z6d;o%en|o_Wh_Zz%})P`k#S0sCF;Bx6(*=i?nn%jC6w_UDDm%@8Tc(*!wu%PkdtLp1anyuJb&9*KIur zlOG`RI;>lj>lFnXwS;_(Pb`L%)H<6VrAK zl6d|e^kMw?YOa-C-I`ASCo!@dR%BOQ8D zmMqPT0N&wZ$A zkf(6pE#C*G6z9jdfs*+dxi^qTJ7U5ok!Qr*E41|xyAB?%dkx3BVjY>>T3?9jHl1l6 zpazp++_ULXvaxnwbL%)oke+3BI8vY`s=LyJZQ6mT{m%KKxA$NKpd4(Vo&=b%!Y4u9 zf5bBXYwUBaT}qYp2C$$#I1CHkrN$;WA2*$p9Hx(M>^aY6J-E$z?!>CiA2Ft`hV$(s zIm0eY?8zB#8mJtK1axk%E@G5>&pbnqugPrdSW04#=}Zd(V+*p}VZ*=g5-FD_kM{cw z??M_+(i?N`htCSs{^3Jd@u#wE0yqQVWTH+GHZdU&Ju))P5cZ5d-J`u(>=Uiev|&C5 zs`er~`q^8p2}EuB8!&=GZYm`JceuEALHC5Rng*p}F&P)jH8_%%>?H*i`K9{o`qG+El#0V3$IUEF1 zd1(`08P_|<^BFe4EW+u5uATHbz9ld7Xz62l4HBkvF5JN-UUSlP+ypPfHFA+Lv}b80 zGTT)2>5DPYKmC}O<}?ahKEW{Z@&nwxUVXb?$PJ{{@l<5iQv=+#6QkAUqDiyb$0_!B zl}8LEinBpAdpsJxub0~+=6?L7mm61Q!bb3jhmOV;?2oiZjPQP&sfs#I5e-zLnD@k< zJ1`qeTLG-;YzJeppT_Z}?=vwbI>99av#e2tTKrFs`#C=5Mg+e0T=FMw8048%7|nG2 z!egy#*?jV0Jc^WNPh78H7GS?#mGSy@UT9M!-sbGnTjyeFGDQfV2emAa2jEUv^j*ms z3e%MTu$Dq#maES)VrSs}jUk~VS|DRK^>DU$qeEQ@8O*AvI2jUX1lDqu z9rX`|Xo+249=qqasKMwGot{UX#IQAW&93Z~RYGZgO)0%izfGB|3fP}%GhQspk`4Zn zrD~nU7dKch?%j6SuJxl;fv{aRYty(|a&-QOfbkU8`J7o*8*J+)YpN#e>umBrXA)HP$-Jd zP5ry?!+0%rD6hL0C6U-B#$oN_j)k3OerS64>&~hC$e?=gLr$@6sgKWt)ho8wMv@eZ zf+5|s`NN$uad}*yUz}cQfh6_IBp!>hwFvK9li&P-@1O+nQTl!wL%HgSe%-H7vtGvb z!=?*a5Wb2maNG&l;8%PHL!&=s&l&~pE!V~!LylLy-yojNoeXbF+`hsD9Z6&m+I;Sc z6u=hNQ#mZOQj^fPnecE!1y}AZzoWE0^H!E7`+{ZUs!VF_OzZ z@)_g@ujSA6U#C^1Je2 z*#lUrVCth&?iv+`Mt9&|4$SCilA>@zeV^hIrn{#QAlco}jwMhBAR-&bbfG$6=ole{ z?{)@4Q|>bjJjKo(QHJ&_j0yxdKU_JHWz^S)4F8^s98&X%5Fp$RRR&KTUx3zcXaei! zabpuYP4wW7Fj$$&HUSP=V#`bD`73_JN|nkm7}EM+?WGs?8W-LZm06r$A`;ZJ8Xm66 zQ4xM3sEOaLa%2+ABas+#=+vkUlU3x>bN5^ zY}rP?dhU6BT$GM|>e^blTOtFG)#+hh`gpBvmm0ud9;qMI1RjySIk@jrZbLk;D+maO znKg#8H^{UK#I8w;!3iQoB9zw3+OZt)86aD#MH+NfPo#{@hSLtP1TS$4P<}hdqg!NR zY~0-~NzX;+^lO}E-vz5>u?A5g4eYy1Au=RC88D9uV!van=|30*8hi7iu~COdL$+v> z0qi$2GyCl;sdNwi5BRZph!sPnm^Lo=cI^lBVaJPvV+WaNQ~e%9e(+XGZv`rDe9AKv zG4CFM_21t}IK`Hk(O3(J#dLB8w&a@fDkJqr!*P%>sZz#a@>em>M1+vH*glgA8z#WUo`(Eh{i#()G6!Z*_QVkcq$d=qoMN2#eWj`lEjNe@xDoH@R^PC0BnRqW|p&%+r zdgYC*n-K~3W8Y!>t@n+Iq6*y4mX%u_!2!I8w#|J)62G$+12cC19@V{F^LpumV29In zl-R?~=YoyrDsVanmbe85XfoJL87si)jDQtx9r%5e1P(~vClG47s>21ZmGL2tOi({# z=X^y`c)m8SNX1m0^;1e;+}|Vbq@Xye%+My_nea;tmc-;`2A`RIWI-`)gP2?JSTS;< zCT>W=ts3ViX8scL82@fSxe9jQ?brIlwd6SC^D^X+*XG@H1``y~eD(gWqxAG#{|Z&=_24nzFOZERxFe=uGiFW)Eg|DoyEI;N#9WKV-t}kH#E&`R!AJ_~G%+KP zpFzR?3Yz|B63-1`6wCA+ZpSwuZNvOlulWtoOvjW2HqY4fq~6@LVWY%Y`K11HsGGUU}9GEwm!!nY55C>}LU6)5UsP zkB|Wg#9SG-GOAm1O`=t!2kh%$Z~Z?lMU(r%D6|kA#Ai*0m3^or6TTMgA3_s9xU3<4 zYw@Q;T>mbPg^#Q9_IP=zde>X{I57+&JoR@8*sYAnuFdWi zzS*VsK3I8_3+h2~q}vnVw@7(A&`VRV>yCL1CxHbrwy<%ZH`(euLDeYYiH);_d2yM2{Yf(?1#6D~p9kDodF0(ogPKa35H zG8E25{!(9LBpAfIHNRgpK)+K_)i>nCfjoVNZNJFBMsTDxDm4|_M2N$Ef3YM@xwNoz z;l-|4@%`&+dj<%aUdJE_~p;ZBGa=l+tk!L zp68a#X`Vw#*U2JIYqz*%^oAvB(Aqz=*h@keb8lY0s~N4~qzDJ4+~dAqiUyhvdTVuA zX3dG%BIHbIYuz?r3Yg9ARJr}ei7cGNxdS(F>nh3xf!T32f~TyaSOPwx;`Q38ij3A- z)1=Fz$P543QaGiMu6HZQPJqA(_IRA`SXfY?mdc}}A6GzND;r8Fzt<$6KJT=sL44E* zv?IB2R`?7aN_v;Y8d!_Mhz7FMJRTA~t&y z`gv*j^l%yu8QQCxn9tEt9j-;IF}r&2tKTLt=!}ShpEHd&xqD5PD@k*8LgHu?r!(_4 zLfV_|>NI$L76|u0BeCP&Xd+{t0qapXce>N8Cvok#rXJl)P*9U+6VZ_6X_HgyPDx{f z{u+P8HO(&j{gQ2?Q|G#zWSNA-WJ%iD?FiL~n;KHJ&d|}jNf7g6A!ggxA^Gn`4gkT% z2d$F#OmVxe#a2dZ7)Dg$_w51CV;b!!X(5a+BWhDjKpfe4zv1vG{35~gu`Hkeg3S6M zA)@d)Gp$8k@hZ#^^F`&_G;e!L;m;h0xUMIg?{sYaxL@`usw-gl;dlx%-0oj5=G*mc zQwy?Y?jtK`^8XS=p;&dhFzacB3<_BwtQ;g;^t2CO8oDf9jTT6KR{T0;yqT)}2DU#Z zyFs3B_w7#Ah@jgV+rsXuNUR<=7iSl9y=Bp(I zcr0jGD5&8Oe(AKxqH*`RYnG%G!;Q-Rmzlt-?Xm zO^rcBrh;DID{y6yZez2r)JtlZ*)B7N-P3VRNo8vWJTiazHf~ zx%>KwQKH4@8lUL@`3MDZB1l;Y(mg!Qh3C*a zQ@)OysS?S7n;HK06o;osN;}(nAO@658#+zXliJKsF7~{^YwsA?9*@nia{mrM>LvJy z4ErR9PiH^TLd7=i9a$zXVLCNdvNlLvvjt1hl%MPTrbocqA$1`JW)x<>il^HlRi3ya zRP8Gc_CZ^^204d?M_O*eP__Tnr%C+_42l;LtGWI1GVyHHjE$HQfTKiA*M4OEl^C)b zvHD{*>p%PNGZnbqb1{EwH>77IzB*OrD!%_dY(@C0D2Qb#cu;sj^*qrNCtgB58Z5|> zz=l$1(gl?Ak*X!XFi4Jg=~#9fX#e*YfDe9z7n~`Aike0=-sh^{5G1?LX|s)?m8F{u z(BsqHvxbs+U&WA1U+XhA=%`bQPjGKTSB#^Vf2@6&DBN%9vSJx6qL^>ml=|h)Z3FcS zB?3mUnSBAid*`dq5%gv&FQa6`2JGI^cX$tZ<-05WTkrO4lOiJJ`1TOL^eJ`sv{~e( zUbB^ZveY^<)hxW0wX*^ym0u3T&iZj|3H zz2$}e<1Hl8$m&sIZ1St^%4VCZ+_5h^s368s!1Y+d-|-`uA0w>)v1@jVMu7@!p{WW( zJrz?g3sP7o@i%ZXuvj!%BbI5F#N+iXJevA3NTi<7CUaZvWAPtCFV1HVWTwW@6M3u~ zruZ~;%8he|5JOm*KUC)j*Pjs8$;PaC81=*FVNUZY=*6o6u<+ecw&n(Vj@myvg<+6eI z3U``SX-=NRUE%+bLSlS;g*~q~e|)&CGAi{uY@<$9gO=vX~C^1upYfueNx0nY9^;81N$N_CpC*ngC0 zZdNjEVyj$UjxiA7(H0rC2X2nu>(saaNY63|b&D(ykGbttRwy3My%`N^`I#l0nxRi5 zJXv)MtkdgCA}d_wCw~x?MD7~*Zx%(`@3to=E!;%t&rMJKP($1u{r|q{;3$#r&e#J! z*Pj?K86->uUF!($=lYN^v%CjSQ)DRwZ1!8O<4Wbpy*7v5-rekjW>tSMQ>-2CM1UrdP*nXj9#Yjz)q)Iq!7=rit?t+$7AjKfzo&qgPHlo$hUm z$Caw5P~sxm!<$!(P@iGaDw}!Tr8m!Libyc$%8!;ha;8eoIWz%yq4JKRK&1UM^-oF(w zvQ757TNsNfuCbooT*)nhK{dv~JR0g3t!{V_xO0qd?ZTAxTyF8y2m`{6(X6$0(Ps%2 zgs=X9<^Thrr_7y^mMnvIMoi`$ZX?1>jUAp6Q`DOotK9~h@|>ON!rF->Ez<)r+zp@inLqDbcl_p?^eM8%pARNl~2G@mRf2Hl`V%V~C0My$fjr9F?mGc5;; zf|EYgt-kD4&x_gaqdR&{f{RJURNzidS3;y@34}u-wU~V^keff9l z+EeE~)?SAe;y`tCcE<@z^FvwU2<1Ww=ef_t=p@3Ibt+|pp4Pe}cWvuw{EeC7Ip5@U#LKdO z0Uwk6-1NtcLNQbof&i6p$bdq}I=RO?Rja)^*N+$1WJ1;H%N5&ld?4VKGe+@>+0u`UnrY>L$Tu@k~Og$>Tn>s&pH?1Q}Vv68Y(B$OVV1`N*R(F-OVlR6iHds`n`dm8#V*O7`Wn$JE7n{lDEJ+hoz+*Fsl!AjQeP%^Xgs@qE@EyN zYNB5TCv#*-xslBFjCR>7Zfi17QXDro4GyN|Z87ayg#Aj2d~n}7)vq3W%ut-P-;iBR zTkRx!3B4qcxS#pZq7mX1cAYD-%I~NONeIO8BU`uSYuowcX3gXw^r4^pJ4m@nx}aM0 z2C6eECV!vIwMLf>RCE3x&Pi|MX?e2B)Z0G-1ze!L3oOX`&Wi;R-lW++Xr$X^YT!gq zGehG)Tw?>1=2H}`KSON&>Bg&Vz!fd=gc_4H)<^aiDxl}^Vop72#ewW$AS=v_OTaJd z-|6K0Yz6yFdx!PA&_Qi_&`8)eqC=9w5vB~SsQOKgpU$ZIo#7yi{h+^k5mu8u7T4

EzmEf??&I_)MUf+Hr4e;YYUQkm{{Pc-(5Xbe0 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 CcYLw{ literal 0 HcmV?d00001 diff --git a/docs/en/_static/zhihu_qrcode.jpg b/docs/en/_static/zhihu_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f71e00615174516f9befa43ef20eff4216bded4c GIT binary patch literal 2471708 zcmbTdXEYq(7B-6LVxrekNAKO}(ME}=(IUzy(HU)Y3Bn)@qqmSCT^XW8)X}>rQKI*V zPP8bwBRS_g-~Dyhx<4#yW?9zz?(*zsKYPFNhWc9Mq)enZI5^}w+8V|39HIqc zLhLsa_11jYU$}n8T534uL%>b!2YhGM`>HrNmC0n6Py*~{5}3B79}W%+;^qf8dF{Xn z2j|ag9Szk7K{ne>&SCl80nLN+{Jq@z_6j?NV0b>*C;yPgC*h;V@vc`q4qc39laY|! z+jsW8nyKGHKXI9%Pxbxna8s$s;^srGajbSvXPx12`bA?-O`Y_fbJ$gZbD<4gc8>dS zK4Yr+9WW4Szca3TGPcZOPr9iaW0iCxY`F3;LaMr*C_BlRz8pSd5W0 za`YGSAFV7!vshSsjS7}ivr$;5KjAxSv{oY;ZQ98;8IS$7Z1(DYR!+b{j@4Azz|kRt z+AGmE;JM=4clVHEuS_Ib48J;%YL;0X!et|@z9Z;YuQO}#W>z153R$&rQnuPvY2cyY zcqFlLTioA}{ zL9GvXDA*&EZ~hBK{vr&l{K^n!=s_{$mqW|^tdJi(_0;^QT2HDUWm42u#IiX*LCgyRbNV`@EG}+XU@$wTFk%R- z8mbSKq@%A}mPN?#>%G6z?-n)1IoYVS>z+J2-2AYftzI^j`&5-rmQU_XkB|(I!3gbz zuEkRSJuLQIbYRR9EFZsCiN^Z{_RDU|=nSS<7)Vh_nUu+?32iX-4bQ`yaH8*IIKzJl zRX20+w2tz0UDoASS6iEm5Z}*^wxWW##ke>`8+_on77`?i5x?uzfq{5U?G#5v``ek> zfJS2o2#$l$?ibP5TLjiYKDj6}c-Kr2{gHg? zJD#Jq`k#zZuS@t7vRzTPj-n_+p&swVo}_clIbB5z6e^|lz%f7W%)b3_H>&tvL&w07 zw^~Sq5*_KC;Jp0~44~2Md-6AFU(ux2A$b*e@0FpyW51H~B=ZQ$dWDT$_G}vN#3&?x zc<`3#Fq^iylIXE726MVy?? zjba*3oej`o%E5E!$(rVS?`2kg!H#bu zR<0bbz5d;ygER>PQz9T*Vv}TEwQ((BZkwsWX~^*|Ch1ApvE@HqiC4D{`iv$admS?@ z!hh71_+8A}fRFkyeJxbqh-jToQq|>c(K*@`vQyGAB$}pP+Unt}8smB)SxV@@Q(cxVl@lp9kHhVd~H& zkKS3PQobg^N9Y2)-?nXyUGX^`u6-xV-G>=b7lgf~t;jmBo*B#}v_qf~r$gFF=vA>f zlcEl|$*aYl3Y4?*3z7wKm2z$56CpH2+BApiu zS<$dxX~IXKfT$IkQ_iLy4POdK=KjMCnrbM3`+fvyckpAU`uTCt@4L*InJ4xRn3r!j?zg0?_!9tA{myd zZ|fUk#%-jD42(!>-R_t3bOjB!b zDu;gc-QRLrc-TGAS{sozSh|r?#dC*f4Fb?M`8p?kRZXLI3p`^rrW}n%qtBfI@Shau=W_XOUexQWb(~5q zEPkYX4B+jLF>?WVz`h!5+;32Ti7(O1G z(z)@FnLBG(3Hg~pNJc2S?mvto=ns0H{$8UeHZ>cT@UbOF+#bD%PV!73*Hm_vW;~I; z2Wq0V0BzX{?sTpYSsmPsP+H%Z04Y`IXfch9XqAkp7<$3*)6sYLA;q$UeMx`;0XwhT zg4~1&1cLO~&w=#7*mqOewlqxuENQs6eHi2mf-4kJ@}ILLz)evXriU|?;5vePhY$Dd zY$PMBzLwzqNUDk`O>?fbF5m#!mQJBfE<_0XUk6Pc|0gcqCf@+b=JMauF3;f;F^|`e z@(p_tN-##U9|>+n1-)-1N^Tm9y?D+fW&qF4n0%UZE}YGsbY*#Not?Ij6ilE5wI|RD z^AXQ8qO2n4CaRN;ik!Q9+su*SoO15ZgO{_0+u~&5RgGF8HT(EF@6y??p>|pH#&$)< zzk+~WW_Ay{+pwYC=iQmw$a5)BN7*9k)%mgeH@X~B0CmE#{5H@TiE9MR#O!td2m7L( z(Nhe1jp4uzk%MN?TeU`q0;RvyNY%Furfhq?ge~EySQ!F@*BFjtue>gK(svhPXn25V zX6EVQX8TUi*V1{%9!n>^O^d8lS zIZ?V@KOTH7?6KWNq(Bug8U{dMzr&A!qk@2DlZK6fVej^~D6`qTg(#v!=7YQk^l z3$wtjDI-r#xgKQ>lY)kIS(LL^k<`$2RO{a>bmut2ZuyHHocQE7bX*|wNe__0CyQ7Q z_{6@P>PaV*f=U>9d*WQU|Mqz~k<968X99!eg;#l*zhDcsinL~FO>ko?2+?BNB+5mX zykjIwuqugMc%xoFM1H5YrY+6mMB{4_8;x}jn!v?hux_rW)fU?DyiQ#!ip z#p^~wMebpb%}N}ZUIjZU<8{et?(K}>(5>hmuaZ?_;(Vs1S3NRe2$Xi77%I@c?z!E` zlRq*2i{ZitwE;IsxZ)pgzTQFQU6`C2H0dwUp|Gx{)95ZwyUcP_%r!6l0(+x#BdWbz z{g|NcOTPHP`;{Ft8?%@j0J{C^P>tyu4KQ(@@54^_^>-T@^HYw(_N)mB-&<3lnQfX{ zDcp}GBUf#ea7BwpqU6WlwL4;UaO7bnRG#DAJx@QO(kOut-`gP~F%VzHRZk2xk-|Zr zxJss3+v>UtA-wm~yfs^^4adhJVgS;vT|`|z_5K-4R~qwgFQOjun>fe%Kv}0l&<`7p z!~Y-0z6q{~^p1u%7Rx(+yZ>Bdh~W_P;UhrQm9uHqG|4-u%OmWIC%D>Yxn_igPnTjq zJ3*^g`Ej+;b5;VAk81bdbWPppamfx*T=eV!U059~FX=lzz(=bWT(Jh9&+X4Wn15mO>tGQD4<+dk5AC`P1qil2yn&gxu8R*h|q!n6OL}g(`+cv=@*{55cB6<|_?XGHoVOo3D zmTu#z8{#a97h8Q!L%kp2u47G#Opd~=4caa5U~8!|)AH5*E^LPS5#8_=NnPUUV^v3K zeAM*qZ7%{DDO~Sw`1@g&Y!RkHNxO~m1O1-kBPw7n0nM)2A{!7mTTfC*cHSDM!F+Nn zzHVn)@7Fv(nBhvI;T_9nr)Rd+Y&lFLm;3PC9NWySF0nTHk0aLBa6LXS@yRjtLJ7L< ze2l)@*?G}Aef@p5K=3c;ygJ+!{{}8HIX37?8rOX72J20wccxf(?n!;34djn04)pNA z%bXxQ=s@W!8qSu~bF8n)Vp}b;^?NH;%&Re@U}t>P2?w-OQamYzv?{c$TF2 z=k3B~D>HXf58qDr`iB(2K|eIiZ|#bP41T@pQFBip9i?uS3?Yw;Ipe9 z%=6%h=ztmymM(KGOVp{e);%Lsr`p@03eYkGA)Q9FmbuU00+1HzZXt&y!>55~UjIyH zfl>8!i~f>$bWsx7cyC>@?_z)Sm6xLNY$P|3gS&#!kJPHwNSU}nj{yT+jU@$mf27K@ z`!$Z=Jsm|!eK6U?{8%M{ydSUP&e3yiSvs2jjb)J=(W0p{O7SAJ>Hg=6m#lY4TNJ(~ zVtet*W}as|0j;dTg`wyA1R#Yr0t0nB_Nv6KqNsK{!_1WymH*OS#L6n{rpKVDw5G=r zN|70}@6k?J>g54dib%6YT=-d`-#wL+3PWk*-G9c|OAd8}lrAn_#^ZOl0)ftgZ+XG? z+(ZNjC#X@f8m7|aNgcb%`Wl}{+vTOakWgtmRs-69=qhSvPFSfqFWJDj<5gP(dbSM# zNn+_Tiuu1?@C~0O{L5-NX@HeR%w}-MNqqDHOrc;!-3u7Tf2j4p z8XL5y5KTmiemzH$7cJxH6c0}n2uo30#M$muL%rkb26>4F)u}d=r>?j%f5`hSz+0xA zA5(vl2ys9!T385eJ)a>6UXK~n7IkUm^ae$k%qBVm0+!1@uusV1&O9tGawrT#Y9pyh z6Q=?yZ_f|?BUaeL*hv5PkPu)ZyfLJ-@G#f`q6%I7|ME^q2D77`1Z5fbs}s32wD z@4?VDw#Mb>z62cgQ~F5d7K@jt<7jbrFYaN9d7RTe{C{3+`sX!hM{G=?r#WrJykOFj z^y{Xe=Fhjt>daS=*~;(nH@v@!nL(}rmfgC;EB}?U`LOeV=kWd{Lf&r{|sj4HZ@GSi4h^MY28Bn zM%!tzyeXHDb=}$$53ji6cNmqOwUB&H5HTRQJr;+Q(`<`qp#&~DW>*$ryC7`TFUDRS zOdS{MDSKcr91a_7V*UKGbSytQi|p4oe@yHOzWHb39109QIQ*NFE)W|ky{LWYz=l7>sgyBKci)+Z!*x`XbfW)7t zcgRi)86dtwj`+yY@_6kmnz|*dq8s$|bmCFpYi@9DIa`+mPHfD^hY9%N=}=L@0r zdSo6wQ&+Q8prj-qM@MshKQN=sYe4V^1}{eiwF+xg+5V(x$N&~;RidL;qKMA$1SIQ5W$N%#Q^hS{Zt4|RlO<%W`3V&n5pgxz<#0&Ou zQUYm!I_WHoYuUB$2?Mv?+7e4;N;do*yqcw|+9`o_a9a)m)r3$d%S%Y(%4*#GDW+u2 zc`u>F`z{}rqfwG9*;ZepV&=^d#hvSn%a%x=*|pqmV!d;th1+Q~Mba^phOQQjln3P{gD zJZIit9RV~xoPI8S$TBrf?BPxbCkb75g}Y_nn&M`c#odoAvgD z?>I6&fgDsLl$pT#0M*qPqYiiFafk(s zW}Fd2d9QIV<3CbmyHEK|)8!M3jsg`&Q35kQUk~2mA?mJ@NOMddb6OLS(?0AYt@yo()Iy|`C7qQG7hJ%&;5l~Tker8hjUY=ybloQI)SI#Ow<@Cx0X!}iuIt`>c2khu8;fM+;Ez~2Bt!)qKefH zN+l>+@_EXHO!*YNW*;Ogz-#Ot*P^g;@&zX)OZ1U%_W2pPZ+9=|5p$)+B>6U-W6|Tp zRd)G&46a3Pb|}_dO%cU^c=SQPTmxX+Lt}LTJ5_ZzF9eD;1J$i=HzxGq*eZ;x=2` zL?Bu9C8fZbTdQ!hJk=W?5x*KI)5@}!oJI>Yk|z`kRN>ajL19`sQPC-}vb4be8;$vB>6I&*aMz5m(*aU*uGB>GfEfr2e-bOFN&AL15YPT4IR zy}%00Rf9hTcD^iIn!ZV0SuZ-V5KLue#-}4OJe>cq7nN`Hx~N?nAR^eFl;`fV;U(GE7saVUM|av^ZNN17 z=6S+>@Xyqw0*(i;>=Cn`s3Lu#Lu3EymF6}X#gxg!?u40rY}YAN@yj7P%vlQeJ-W{4 zsczOLC50Si^lY6GZyF^xA^Cl=r!y_-TOu4M_8rJXV5R%)U4 zBb6uA2Jp)3C!Nm&)Pu4u8p2?c85oTdQHfx~?N1xdRjo5gF)^MN=?hU8*ult5(PPEH zcP!qSaEJQ=Y%-HX=#RY`KL1yNWcX)->1{W$yRgQq@~G%wFrNgKS!_&f>AgoHGo>Gl zK4bOuBOi^1QbXS$3FM}>VBL;Ot5VKRcE(ubbo~qM;j}I|?j{4fyvNGS!F+!CqV{QD zD8=^16w2$DHCDuqu%V_~n^?MTe0Vuzh1dYp*kcDuwPFeC&Fa$uM!u_(;tS%W$rOje zRr3+2+wc+3e{yy{`Kna*Vd0U`1(9S>Xm?KAwOD|!is1obWQsq2{NNV@he_RY%P0Q_ zcpNk}DI{ghp`*-*l*Ur5N1Y^I&k~bik1&4Gi zS|Y=#=8e^JFVKS0i@s~Ri@8K$F$eJ&n9!}3v482H9L7m*NlKPL2H+4i$^0{&gqu?Z zpolWhr2mF9FIGyHeHgZQFeFWQuMpEQ!<#wvW$e8@5_4)dZ{*KZW~&(ymoPm%F}WV44=nZOsjg(lXepsC}Jwn zt;7I{x}LXNk7)z!&3qI_pU;R*&O`;DV;ea%LCeBId>!%^)Pw-7-fYmY+ECqK*=(X_ zb~BRD@M^LpQ;DX@t$8DOFVn-|CJJvP$21~MNa-ryJ8|;K{H_Q`*<%Pk5h5eGCkc%& zzIJ}lt(b)-|3gjbU6{tr$vaP=l-!8GbWBuyexXl<`I0xWfbZ@30Ji_4n-tLOeKE9C z6Hak@s?+*clElJHw6&2w7ntxK(xM(!^#StE7=vo8!i(>}C+51z!6g(*HCg+1eo=+4qv(C`9 z0#Ahx!@p0HZo5LMM%jJWB*}F9lGM(JXuD`UzQ5*PzhHPSj5C}O_4S6fBMnGpblWxD zvI)iegRf{?Dw*Yyl)emjxcB`gUWz?fbSMbz=zA8}?xg@Lj7zsua{Vd=S9nfoY~*qE zb8b;?M~bdlOZRpy=<~eBTJ~Pl)lx#gLuclk?8%g~(rcT-xa2nahV?e4IQ1jBjjm-n zZ1^nPArgX7bvz0bUfuo@IMemFQR&WUl}Rtgs)~L;%dvD;F{9SbKN%WFTSXSk+LPP#u zj!Duii55(wHY?D(Mf4F|<{zRis^s0Vh3$Vr0pBxLMVRJ5d?|)?IaU}(Co-0>mE?1% z_s0Z)!e~OL4)P8HD>NUS^ea%T(*%B86jSfbg*xsHdXMlSiTvDsp1`FetSpjm#0a%! zbLQMg&$3pL90^&XhTuU!C1Q_lL^p$RelWw5IKPn<_5 zioEi%yKM8KaD_Jam4GRE)=3k$9WM^tZBKxmE%n~PcEq254E5UKH<|#E@t2>MJvDe=d(i<;MrQ`3&k&ZsCu zvSt?>WKb&TP-!h}+xf4C1$3s#9P{|`eV52%dzUQh*n>-}&oA?|)=22cBSrE{yGBs{ z9QkY@uMA$7eHP>V#d-GCAiUd~Etm+p9r`tpqtLQ0A%h9^e&XA9!M z2uc<~BnLE@BvrD{XXQ;u22k=-gLE!PNfhGy?8vu67l~;vmY-KS!0!eIPkd@RWaU#! zXsCQ?F=2%<`kHV~Flh0EmNZw)R<}`;fE>FqqoZXR{HmJ1zvS?f8EKnm>6z3$DBpst zu-Mj4j{w9UO)=g#{BqBwWS^YcIxq~n`!61f)tMWQn|i!|sMbO_a5TTQUVngrESMT9 zlib?8$TTLq<<{$?GDtFmW+*OZ?U#Hf;t4fuZu6X+MQ8dwxv=>)hX!;x%zVkF zGlZ5>M^?l z^8Oysw~Yw+z$u*A)52mFNucQ|v5=rCVZH5%xtf1`d2*MzKxw(1t?!}|LTbpvJ_p(^ zyTkdBBX0J~OPZ3Auev4_fJ~AMxlhwL!rS`RplYZ3MMBEwnT!j$$Yp6Ot8QRC6pAoe(cp zIl?__fO6RXjM}2`edZxoQT{0kWUNJ2c<*Oq*xsd=VH9~Y;uBV~!b;=#e<;c6fW7^F z2KQhVspjJV$Jd)*BvN#_%K5ZLb&X${faGtdv&eeBZ?_J8_`r9{$jlxjx4s@|XQS%; zz`v(4A~P0TOuj6=&eBay3$(UabTUuR_7V`^uZN(VcQQ6?$LS*5qJ;!JI+xoXD_VSg zw$L&cIVt$N@?o>PRi0iJEsMU{n}CGT3`3tNzcq@a3F24ox8vOtvFGIMF#c*41^??g?xKiqYSPS=`UYoc3W zS5C`{vBe?y{P2ISs$EICh9VY$w)f5yUJN>Ze~ zD-73Y`b7KJni`52pD&a^%FM~zTyX2#5RVS~7z9Va{nxqxh#y1m2rv1M8=a1{#K-2V z(p{Lvvh*?wFVD&Ji^jztUHL@-O--$AZAT(4D}IlzTWwguT?%(of`3*HV+I_GvH zdWq|FnVaGav*NH0-d+~2kSee&=)aB;+9F~(dIT~rV2r1w&r}Q6H+wL}AEQ-3%6-eJ z%MOF#+J!6ZW{F-_A8iwrqd3jbmGEiys)th&R4^G=Y@%t;Qgnf-_r!v4UwYk^;#yn%NTF)Jm*bb-H z+Sb;Qd9ssByK}_*nFj`*?u=k2E$L|BcE91DozgW`%E=;Lpfvq`c@=DTw9N2Sp zM`4$uuq!6^=WR->o*mTKox+E&**>l|XpOuoF71&rvC|-uL`xbVuKU<&-^P7q(0CBk z@yAQy-{b>k2MP{sl8SqM+gUkj`6oN+#|xAt$SGKMKSU0;r@Xi!dc3^l_hFx&UqSrp z8|msjIa{t(vy0*1w)+cYf|8|+XnW2&$UE|KfJ zs=Y@CcGXD`hiAQSf{0tv@L02|G}gl7N!aPOz9dKRu| z_VFv%so|J+QJ|w`rbqw#rp!;2|8N|^4c3pr?g6IoZQQeXC~)K?Am=q}fz<|OmkOFZ zvtP``{F>E&1;UHzw(F&|b?cBoV&!)bpias^sC>NZ1`CQwFQ+M zjg}^j%=qM{oMO)9PI^v_{rt66%UgiYV!G_MD<}_|C;!8|6)mo-N*~vyMg3$?c)iq5 zxVuZYSQ*_~GaR_|XD)(?Z89-gj&piUr!I}4sXaf9$FG#??2E0bB4jb^5tHmhe=2ohbx@Pi^$_FLhLn6ijcd4cYf<7sKg=sv^w;WU=RwjaFO z_n`pp0ko`MU8ZdI8J9Sw+aG=>ovnV)6u9frrgX@bVGPQ|pnwOjAwnZv=k+~y7#~ik zPtlHkbW-IVdGzf#CnF$)+27P?(QJyLBNO^eX_T^Qne4<`y*XMEl+XnBlTp2}z8}IqS z#MRi%YlTw}uO86@Yd^+wn`uvpd?|fv#YbDUT2DE&Ax$PxAtx3$k>ey~<>}=^$j~oWshFWjLX<7FL{aq25lc*R;Wy4>@kkZ5gE`N1Pcu_IZy>Hs5OWYa zb#?>GXW?7gVFaIlqS&vUePo*j_Wp?OmbS6o=kK(gwRkp@73h!$L`)89rw_=pRsHxJl}PdS#60a@G>=FH*z~kkf%Im4^yZ~ zo<}a*znqP$YntPkn?e3s24L3|ySK54+3VdkJIf=Ko_ZdUqnx|&j2=5_D;iH8JPe;5 zOo7mqM^Q3}M}gi*I6iqDccuKFq}(4l%q~)Uqd9u_@#Ls^$y3xuYv`?fFFyBxOBY=c}=*V z11yOP%)`#6$6kD1u1h)_YBD_=K3_XS{1Ui4{^b_7w5}V*Q$tEk^>A%25Ne@I6#FK? zelFoE2Rhe_tLffwB4Hre;iM*o$>yhV%PxH5~keA3Op66FJ z>b|@CQOxgZHSgbyv)#W zKxwJ=DI6PmGPwrrb`1sDt3^xU_8KDxQN`4sVl1&6Ap_)hL>pedWO?pqwcpwtqL^x$ zyx}-^=x{Z~NwDa3?p1|e7iGZiB5;BofBxGA0XhR@I_{UpdTpZ!x2xA$&wHI1vX)JtwIwAn|g2$If9SXbku^G(YH8lz-LE;`+Dca+ZPhmWs zgro`iBJTxjZYem*Jz;-nORjCo=*@D=MhQ>Rk0Pj%_{^C9Q4V+_Q?=v1ct`K2q8?mQfbIFhh_TZ;6S&2CSqq zi%pm$kLcWIK+V39a4308R!kkv@B$}MFFiI~xA1E;<@@k6e>d7xo87h(x_a4q2#?xY zvN`-gX3+48$G;_<1DmMmFd#l6hp89Uwky!D`@p}X%swkaVz#R0VZ%o;UZOQ@`J*)V zBHq-8X~gv;pwrP&(Gn|Hq{yiiV_yxV<=1$EHtbHKV)jg|tP zDaD2FZpI#OOR*4svLJEUb`V>~iE~oj-^E&_Us~i^(Up%X$)6u~{f;snlJ2*1_kEkv zXZ}dEusV!>7n7)`2N|=I+bx>(-ai}hX0HBtOKYL0JU!g0rHLGv@L=6xNcs%%9M?&u z|5EH$#D377ZE>W6!N6fp@Qxgq4Kd}AzkP0iUo4sZ)DHo4{-oFtK-=2q&{_p*Wkx)m zoX54{BPZX0ZNp&zitzB#eC(8Xy_RmbDJ&2flCl;Eki?}hktt};BHPT|MB zeei4XsBV1ajja6fmHW^g$X?IIMzRGeFf{X@h91WYPR+_-;|22pl^cOTnfE_lu0eey zU~!gX*4%A<##|NhvFV9aAo<#H``-m-EUw&2224NOgdlL5U)n2;=1j}V8BCeeHUK{+ z&u883GUG(lg9nsPnn23wY-9wa$e43A8)iCZ*_E3;S%DUU7Gak*YR$5sa~Qo@#zm!R zbD`ed4|8Ty2Byt*-}lVlY%BD&8MiA~PTQS<+HIWrhT*{;ni^^T(u66~jtF(Xe~RV? zYqzWzzo=e)PnTl9ent9wO;Q90xeI_`f+ZfA&tW2Ckz;sh;Qg^3{r+kcz0(#~9g&#c zwafN;e1*d`U-I|eelO0MquFgW%ny7>l*?*V7>~>d&qj`ORIoxq`^83o&3-P}m#qJ+ zRA5^F%>aukA77(Hl7@QE<>E>eGXkPck+b2##$?^L0#liWq`j)TZVk4y?b&5HtiOA5 z;A?%~?(W?3gQYv*;n2u?dkW8`rs zIPO(%D{(T4!Lfw**-|gArRd(n`J=DtII;b|jbx(K35X`o_vr)2m!QFaEPY#mN{GGZ z_PpQ8&$s`s`rf8AfOR}y1g}InJY9{;V5wS2C~kvdL*xTiH6N6g&o8BA9&t%x9S{+- zkESF_XZ}?3>V=JC9Ivc)BShXOYGoBo$wJphE(n%ND1Ld1>}aME{gU>147YJ;5PJ({ zi?CaliFciY>ua{WRfWER?aOjE3(ymB`?aX3Vv+CRo%RGoEh})h$|#Whd;@l}f$j0Y zf$^DX5SXKE7bVbmmsJ#e*^_w)&yspn@#G6Ny`E<$MY2=^@2BTc222=^%fVk1nT~k( z?nTxCdVjGWo(||ITcf5IP_MD8(4mk`u3ckzRSQys%4Ci8wIzG9uu z;#9Bw#+M{zIqcA11%1Q=Q(D+Ur$^j=y+{FGt1_x8xSg@ZlsZuswU&2UriLoTft{*Sf$}V}?!)C2d(4td zWN|6XMLxFE*dLZ3q%UXFu+!bQSNoV!1-j(g=0Sci@t3Ul)JpQTWV{?R3Wk&Xo&95CrAf9_GBBo53Q825*baG1$(Pc}{i?hQ4 zvoKHnPhaCI2E1C$ooko&oU4}#-^!AZpM6i{S=$<$*-t*LUMyU%S@zz2-=BU3K71Bntj?Hi>erMYg-uhFueAG zM6;e^|Jy-L==bAU+njHlQoV5B-JF0B@(`9U25CTSh0XgG*;4ooDY{@%(S6-jN~IU_ zg*0!id3w-(@klWk`wBsAcO`EVAtqC=s@bvMi`)JnIHEV5KAqu;Ax9`^^%J7Mz2q!F z3H!>49ny2;d`<1u-}8KFTbYWEnub<=6knH2u247S0mQz?xml9)LhLZsi0O;46G<}L zyzNGS+*;hD=({5lkIH=>7~?pk{ub|A8PiT3<_SgZ`y!MD``Eo{VJSt?_Ik|<&Y>&= ze>H1t1#gdwO|Dziw&9+v{+X?Y9n@bED+(sFds;KT@%+&CE8O$DsgsQl+dAFxhwWNUk7L`*uGo%$4ht;4S73olyq; zoykUky0L;|FmEhRju)i^bpt-n$L)CkEOvD&c`?N@tvZ&R@3EDxZS{a?A=*kT)ZRmX|kv0ZHC>i z2XcjP`-#bv)iWr2L%iIWlg4U(-NpL3%?O z1uu-in+++U&RjiW(}Bbwt<`xg9$ANhRl3CN2T4cNKleAef(v!l4)yxPl`EO3sc%y& z()yMf>uK}1vl*1NZ@m4sBI@itX?U0(JkdHh!~l+p^@4SU}JubUy$gaZDSq9ENi}k9rR0GKr7c?3A005gJa9f-EJ?Y5Fz-OAxG;jO`;jQuSn4bYDYN3?{xQPzjD~m*sy$+*QP@p!y&L;zKr>azXQ>Acm&b4djxs&#Ydh;mwAsbFAw0Cho?!};jeFv z*=%*}cppPgK2Xqk;b(5+u=e1y_Td)r;TIg^4YT0eDBf;-h}UT3_64M43fx*_sTAz9 z2{tG#W^vq2KeV9{{~bH`Qh(z-9Peg}4y+zFimxSP2IH!b>V>440mt6Q|KL-n$|@63 z?aP(Wo3n_|3mjh=3Lnfy&0x2XeODa0v>G7|E35HXD!_#u^OP0JebN0=XN^dGVLB^N zZFds+xP)HXPSxjDCUMLBLfqRsfy*_A%BATE-{|1QiA$9`%_Jm5>SrWgJ3P{E<>Ar>EWHgq{u23FEtrCmQLV(PgNu4Z%s*j(mq6T0 zm;M_38Yfw2C8REWbEafufEY>U#n*08kSq~(!JYe_wVO3>G+GbPmp-R55X|^mm2>hg z$=x$cB(zq1jHDnW>|(z7tuXi(qZyI3Y-cX%;TZ)<>MB(N4w>iDh01rd6-^D-Wc#l`G~P;|{L)zMQyZSc{Fv zzR+M}D#X88+)~3%S*@)ez{C%T)hoO@ZCCIM^}h8=BNjTK zPu!#hTO5mo^t^nx9d;DDPV4`1mO%*onAN3y`>ISk>-@Y^*y4w0$8uYU;-m3Itvm3= z^Hk+VOUBVxn{XYD{>tSX*B32(uKt9Ap2jH>9J%*%A9HJI`2Q8JeE?K~;DKb^s(hz+ zcAYAnkjEx1=`Yq1cwXJ*0t4L`34a4-vG4$j!j^gnh#lgqk+iCun9n3JXJi~Ao?q;* z7pr>*&c^t2bE1djzW;kl=EU5T;Y2gy_5fX9;uY^qC!IvM{mld3lIq2y_nkp*EmGyL zIhw40;z&;56@F>Hy+Revpvl1j8&5_7zo|2%5hvc4P|ud2%s9sMv@v4f?Gxz>@r-)o;A6ev_>sj-8)641})O(SY zQ;inE^-zpsb*HZg_N{P?v?@)HbNMi8WnJnVWj;&GmG{58%^9Q!H1&#OJCQe}l!e%gV@87AmA9jPrgYo?cV^t!##Y}iwzrS`sW)Aj& z^Y4hDt=~1OjW$g0v#x9DHn=D4G)RkOLd3c1i3V)NAxy(hLfom9pZIY%!%S$ew=)UD z4&Fe*;BI+vt&wux?V?nwR=ymh!EU>=ao$0FHPhw6>ch)k8mJq$a^Axzl^4bz!hGE1 zt`&E1u4RIGZBhwUDxio*TT1Q>7@yk?Y1szq$bLwpR%WmCm60z|^AFcnTb{|~VUyhb zm}(xm=6nZT+H0vYv!zDPjc)-a_YQJgX&IF20iZYjQAT{}JjH2GNz&X7t~#BjW1&!9QR9Amv{LpN7f05;>F@Yb0$u!Gi=E3K z6&vb_YxN$I_DIVvn&=GXf?}v#G}KghN@|u9c=4uY?3>Ag$*+3Kk2kN=MYj+8{nq;G z58c%HO2zjtFh@rrLg_3tOr3beQVI2iKQ#f?|1K2$ z(+{3-etD-+siRBIBZ}xGz5}N(IlQIEVZjdeM&2m3dK4 z$iUR=SCN=vNZ;P+ttYZg_|zsd(tWDM5{g$0!i9gXu5k*K@fru97CD8gK|*)V7J{uA z(!Q3<@#t}Bi9&d5mqS~y%Z^oZxQoa3OE0H4Ue`sMKbu@Y4L{=9ScO$uy&f5cNE3Ab zB5!@xL6xYzLlWqB;PC7%!ISVn(E4tAxZ@w$gr~A=pS}CUgBr7f6?3SDwwzgQgDiuL zm2H3B7UOx12TBX4#Q0p7JP!La|Ij1-!ud*0rtsvqO%p7%-bcbu zr?|x?8TLdCGF_#f3C+wfjOWuOmM>m0V^rlR@4jkOhfJ^NDlz*?a%jTEEpKwp3fr#vo?1<8Gm^9;VJFfuR!nCVvS# zmJlO_YK69df(ivob4U)8Fk_};dN3S6pYW2=YEx$uXO$u+ZLol;Luk1iQT#{e_Pfk- z0`uH6?yrU_VF7Q~s-IPiQeBk?XZ#mhs{$YaL$xR^?dYYNn#nQfn}8WIH$ye<-@<v&eiC2KY~L+iyPvyO-Wp{t+(40Z z5)3Mp!P9W+n%$XQf3HxKP<kr=o}!1V1QKZ+ z6WXcoO8I7o6E<0&=@K2!&tL#_idUuUDSK?29XLMk+BI-uk6x4x1SdBssXvS5>Ip8L zmE0Oocc)LV)C#Z3*{s9|rVg)=^f!C;Y1dCBShhkr^G7|_iFhu?)QxYHNVt4!aGI^J zj^8}4k!#u!w@nV+UL|TFtkzq1%YFKv>_1L`;*H->G>mXJjM&^F5~*-p$eaq_1>7zi zHa0qN%1KzhSOcyCUM;>WXmZ`de=ZzfT$MXb%ZZbeoQ#rugr5ccR)Hx@l`U!f=A0kM?#$&d}hye?i9-UH@ChHXPO5q-v0k_&wZ|> zIZzJNr>$@A$#%Bz!6yF|b#us*BzdnwUUj>ZB7w}#+7dm*({vsxN+E1M!f5r~-oII1 zcoQ9#iCSd>M3in_XsN6IH5mDYFv;KurRntYdYy!;JV4+XbpmCq?=3OmJJBd?h2~R!bc8~Al~oo`w&wM&)QD>oskil~j=$7xQdaz} z^Xu}&dD`vC+{b8SeZOEEaAJ2s*{4JjH-zGq%6t5`xd6k#%A4Tqj~{wiWT97SoInVJ zEJGWHfghHV2lmyE7_uu>1e4T3X*b0*`|;h)>tn|N2_4US!%9-Dx@vIP4MN3P?kf6R zbVwpi2VN63+m1Vn`MhjNrw66}sCKx-vn5_iSArZ9h8SCP< z=TN6cGp1>qfC!UL#Cs|!!A5Elmgd3w>VYdZva9;6DEI*AZ61}79YLY;=UluaPpqJmdVV;8 zyd)W{UHcU$;9miLher!V?DV1Tgz9iXnKw`RnNof-V6UU#vz96cwHQ&i_`4eAGjD>u zr&;ipf7$s4?Ufy6XT-so+{w^yR(7WR9OP`q5V>gWRtslbX3 z%ubVT*nEX9;039FlHS&Uo{P+Tv@zW(AUqV0#@{`1)%)7V!H+42E!iRE26p#xRvE{W zyPYM2#mmf?OA~`PaHH+A4~u~8rIf0wQ?H%NV*>8_v?W(JuSaqh1Gshjb)p)I?c_<3-!d~4#6%y zHTfaf@5^P2{ojL)3t5Y|Q2v-Sb&;FjP52K0Nbrx4EyvfjxMS%Mn2{ z=mN!0K?9uPgo8q=v_mj8D&iXLRR7C$o9LXW5_}sWgravK<%V5<+F@Cj&by~Z)@_`2 zc=hXJzHFi^VmLm3@4ccgW?)yFk3t#WTLSuGKa=oU*?`)nbzZi{nT_((^w~iu52z1a z&(X(4H|^2y1`Kqaux0kW!5r4ZU$BPS?eGJyDD%0IFE3OaMzRrl4SK++aCfqUw+>b^Gw_ zWsZxV95*7JDfuh3e*fk>@!HL$ zAk0Tw5?T=AiZwrJx11TY(aI9N79LY&^)x-^?~mi;k-6~ISu1(W>bFtGi!@oP1hLLT z2UGB)fkAocehqt+^hC*k<u#Np$Wn>S53x~%l8jK<(h#B#_igQ7&47qjYmvEG?-Vp15x4b zd$^y|y>r|IcJVJD9sv1N3b_T$#>8znDtBDz2EP3Qtm?owp+ zl71xel&j!ZwBx+cA78$}o^D&8rjdX71FY5I`h#7EKh6n85sQ z`)B=vqj%6hDDqLyHsZ6(S+hf7)}<^1Kqmk_B)GSnx|p7Lu9eYDH0v z+_7V%qa_nlg2|H;(4vRe2yxz}@XT97pe!?%tZhO(3*8$%!3E^TXWqN;BT@{y1Q;TjsiM$q`DZI2FumU;Pkz9Av@hT6;2c|i?eIT)xNg!0WA-F)p0=V^wHJpIB7rQWUrZ;Bw0A#)v z8kfuF=f3_Bo1^Na15oX!7VJwhq4n8re$2LGs2x^$;U`m;kV6bMS3}|lXB%*z+hO?q z%2h}t;;!#w4~mblXC>5cT0y3XeqP(`c6r>?=Rk=2p78+d{zt04kDJ#EF3$oI!kt0h zg)I++Ds5PdLlQ-Iw0VE)Hi%v17cXE^=2@&aMO#a1F8?9-si@H)ixN816=D}`O^^*GT`eHxF0xhhAPW*G2 z3O-aDPHo!HB{VC=J@8Tc9ooRADPG1D%dAldE`=Vf-jTu#i1`q`bPNvnBghS!&~KX< z7K?liHQg`!Dd)$sx78)6@f)xtY*F5i=+hM1u%6j6x;mJ~`)BC|y^0KwJO#6g@NH$( zNaYikA$*1l4Nxb`H@|qeD$&KFoyveyq>nufm#0)oV9;`6;BkcrHmX}%LX zcTmk6+~XZ#eG6R`@z5c0P$D?l^4wDXHRiZRIjS)3{LQjGcL+uWWxe?hAPu9O+Dck9l9Hu%5BjQu6@OoDgg{O|O522* zSUzjuEcH2|i1R?_@<)aDam7_)i9YDSC(40aX>Wb_uo?XgZF^D!@TF3L8|pJ)@9 zynY^IE@XOSVj8+f%L?tD#&5Aj5>AjmF|szXX`5l&YI&_5nvWH|6d&3#!~cHdRCrib z&f7;j-`#=oC$_n(b{cbA`yb`A{HICbHqGfyteLkBQYD_utjw;#M5d5@xy{!e9g9}O zFpG&S-Ou?YJXE`18FAv=eJr7pIfH2qNxqO}h@&X?%>v(Y>dquWvLG;s7`&mA#lz6} zs_;=hdAf8kG1zD`J#)8#mvUube?Tc@&bH!IwkkKUkJc>L`$|Hr6>HYn^f#;{`VVS&O$#UWn650y)p?$c$;pmg>!|CGDN&DXj>v*W1VsS)RuJb%1d| zRm=KotmvT3mmK>Rz2T{UbKc`szwC(YW;PptiCsAPPxg-Bi7C3vMBTC|!@pR&aUvEF z>O`3WoVuZanJ>mFg4cxmGLdwReEX-l?35j-%=zXw#^~@bU1aS))Fa6>$zUrd`nDQZ zm5l{~sSJ>Xx{Q$lfPQdhz`%{Y4k1RIyfab5K^ef)cs8ZFlC8D`Dy|>UwvYoRKnHf7%0Q1WK}=E zV#dT&)IzTP>7m@?4GhZnidJ_Vke;YO9Thr{AC>@ryXs`OwzK8AstHz+J;Q`DYm~xo6vD z(wk|n78i%%eh6Hs>1w_wcW41xW7Z%Y3k_=QUAhlAlUw1pZ2|5oNv^k+ubDjD=jaQy z@A&>_SrjiP)2IAT#&^k79sO9JOp&2dYB+l-mVEE#`Q|UXSI^Cj5ik1HaqVe|n2l(1 zf27$?#&&+`z`1;zWO`Y4hzo>V1#hN)qT)hmu z_gM-!nfip1a%|nuFmT9W1U?W8E!e5aTLwX?S9tLeZyN~XshV#3xcJuM<1VJ=^Rp-u+R9J=KJb&F;22fh5rMN2?|=L!ZS&JEdVTC#>e`f>1iTs_bLGwp zc5~=#Z?EmLo7&ZoE6Zj4K*fIfkutGBBma9DGO{9q;bW^z)z9+nrxLAPLEh*gL4Lvd zm{K5(M2@3FTfrN~f5-%`nJ4m>O*gNSS%ek zJ)ccroJBc_*gaNN+V6b@SedH%18AZ@C)^Z#V7GWhFRBld6A26w6-k}343w~4!E8I> zc_QbME5UZtlzC~rCu3@wYrN+r`WL_YVqHi0J4`8&P|oStZkEBcXIGx?o>A|Y&buek zLX$TM4s$v$CJc*SSKIHuI`4TB{{D|fK%EA4fAklte6J|ZEaYPm|0$VhwL>ooK<^INy%>=i zz$SR+;?F{cqF>zJ`yD!G$!VzA~Y{;1n^>tTt)eXvAO#MO(#Cy5ZId}AiXsmOdKV?VUg z^0@W>7$7ZggnziO9G+qLHa&|Q{}_H5iM-zb{Oq9WhY0UzJuzXMAAB=34@gd^&XPyQ zd$&t1{X7^jS$Xa>Ldf72N7uPD6Sc=D<~){3Yn(9|G{V>FJhmWpi+GDU_1@hgMVI0C z@TK%04wds);1|JL?-;eUur2?(TQvWV1B5Xm@cpTV?)a8&7N3^llzEWR_lzp~XuMBf z)At%iJy3Y{LK{2Q?X>Hp}6C%U9~$Eaon?cp9?29e+*VoZ1RInpP~;uj#m50!yt>UhXs;qOPi57KI)(I<8$l>JLIIezoiAdPD}vOuWAuyFBjq zZ?tG5NxmT9g>{zNZAmwzJ;#L1U|dT8PIcy>$@eA)+pa>#efLXU&a!rTL)I~6GJTWQ zh-HoVF2~gK`|ZHj(HcK>k-Ur%%QR1@4Udy-KgqS6N!(ar_&YJ;_J#7l)-2*F<_uLH z>0I~jsH0Bal7Zi{i%^E}vLi_VO>wQ2N5VegNY?s8DjX~*&Km-ZFa>zo=;l5drSJLmRw_TB%6>gXsL zJK}f9Ee{lNR03EZ5ZQwYtkMtJl{pB?H`80c$hx?U4m-ukBj(nv^6_GK;U=#JAJx*& zZDqofpFp7Yy|Tb?N!Z_C`jGA1(ms|h;^y{h>yXH=^+kBOFdE!2l#Zf$cR+#T_6kM4 z7Pc4SMsM8FO2Y5%4hzw3XB9C}wv=(iwR{o3^)6^`>$T_P#J~4)pVL}=FNm+1~ zGB)P2qD%_z8r!XJ$Yssc_UVo2{NN$s-NKa()$6aEdxgZ~p)c|UJ;1amhVBw zx4dhsldZx7378H$6GB)kAckFs8oFsxBa_sw} zFh5l8bM=;_mi=SZK=nnMLqx=D%#%%xT{!*H%1Wg;_5(pj*`q0iXyi9 z<46l1Bk8zO{Y9)saMM?+m(D%m-CVIzA||1jm)%yv7yh*Foq7ym$QYucm9~Q}g&H>0 zXX{`UkCND{r}!^_gk%umJZhAZN(R}m&KGQ1D;e8-7MXh+@;PV{+%$s2gc+8kHgO>D zWeNbPMC(*^5xqkDAJ=#Qqa8a}Hy$ZyQi-5yL#n?0u7znfF1X|FYVxl;C~=*A!YvW8OP|Dv5@ z>&b+q=8qc^FdVInkaYZD^p*ak@BR3r0VCusyta)3)WGi28~r(d2lipQ!`k7q(ufa|i8I3SMdrS`NEu z3v?J_sCwdF-7Kz#?xY--yg>MDAAEBB(XpTA$y_{Eevq;!2ss9{EZ?ej4KmO+74Z$% z|6iAX=k5*<6WP3ElL2!66%wijPqJN1bTKURMF4&Z)QJ)$qx~w)?sSrEkNpATLq?-2 zI}Eeh!2xoM^xSx~&1-$A9iyiMSTl1{%wa;LS7Y--lNJ zDI#6DZ44xPY|$4A+?elwn2X*Y{b!-jz_GcSdUGD|HXb3WNCV>v>)`u_g>Pu8I#-f{ zalmDm`o&~;e!%Paf~pa)&@RGDm9T`<+mT}UQi>JQK_q;yZpY|vdrS_lcBn3{7Bk$gPP1)#97SWhHg2aYgl;!J zUR-s0R;DAV=h$cK4Xdn~+e((;x@RhyaJ-j~p-c^HAb$H}d3kuSe^>lz_NCKS{|y=V zX=_RF`h9K8A5~=2AOeb-xoR{;9STN|vL;%Re*d%Svpo22KMFjsEx@a6bT_xkb>TK2 zn?Jvwc%fkxdaNr|qt>)h%leU(s@-k>$5i=c*G35`aq24__>856tZ*n(FiCQe>)soo zQB;C53UwqKV+>4{iJedP{iG4=S8OK+ldeQ*4%Zuqa95cfwWP1 zkmJGH!|DWwt;^_H|NrGK9`|B_u`!z?#z7bGt&^lre#j8bF@)%F-2(^6z)t|P-o6beehuo!`5_KhaNZne5 z5vIM{*F&Ck2>M>#XMS>5Mk=*fy~U!ayx900Lw^eoqD!kf>T4|j#pB{YBQ*TpKbN!> zue4DM{69bC{=gvqc2JFV<}8$)X98+jEl}hw5cvV$sailEw>)sce3|P^xMLx#^P_1< zZRs~kXE_LP$FV42`9QDy_`tn;Fq%Gx%TDQrN34+$lGw_t-9(i+Q$EC-!RVr-!X2sx z`>bVNAkeP3`ZWgd$r^IssQ-p3A;LcACW&ocNm73N8c~}>ee!Lw{P@(*Jm2^T4<~l- zrK?pufRy-cDvgE8Q--?v%lwW>0o@w2PN=ud=sv-;Zu?yHDKen)En>OyE6n*)Q+Ci@ zJmf83r%vjT9q$vnYSs6M4%OyC=k#E=cj7gssc#R7HtT8SzH7N^+Uz<9S9aT6w<|RH zn^gU5>-;rvr7VS~AuwV429dk;5>(}bW5BU^kaAYHIOL8zTt>uHfKD(!edOy@+@{*9 zO>rIOgGF&JGTu0*zHJJrPC`nE@X z0Q^tjm@5`sM!zDI3li2}u#|pEL#4yP>*`y6|k_QanhK&w^wK zzDKOkX$+Mc%L@_Lj-`BGA)pP#z~80=C8fh5qMDW)@4jwsdH*Qa!B84esMT3YeRa*> zcs0S)c=eaOX)P;C?ARZ7;aK`?;W+nf@r3Td`h4bnB7Noyn0<_A1OA%MMf^2fiur3e z7y6FtO`mX@>$)`gd-lJ`642j{E*94fX^Q4`>BF}PTQqg;B!2-v+u!u%5dV*haT96@ zH|D{(M?n*YIgr&JTPMOFW=EGBe~p%+{mo_q|E5~{DYooN(fPssg}-PGKkh2Yy#X zYuwTFG_CSt{c|JmVOanU5^}0&m~ExT3?p2r7q1+5`%^$-@QY0HTSo<^?W2kw=KCMd zQ-ovr=|FuC7{&(?*Qq-Yvb1K~{W1$LaWXPP?eS(qEhv;~+pRO%f7BC|pm}c%;}7-z z#miR+f;=RZehhpq@S`CP>G`4!#XCEPd6b!2MK?JHK1#;03>KbvH(Sp_;9->$>3J zsD1OE|NF>l*CBc7t&$8#1JV0%O?`Mbm{n&-j&1Ee=^)_4t@MSDibd<9ku-JXA?|EZ zvkhxe@4-Nr!sbAoFJ~E=*s6M&F!KS5(6otG!iALx1coU;^)%oM6Fiv4iqT>hmtEhD z^~3v!7riB=>`TcMc#Sr6122!pwF51xk!xOq}91Pq4p7^WBmW8fIZQ_+>kTG3S zbdGSTe6JgU`o0e#o z4nQt=aPaV~o8IS~V`&rL=--vEw z#c8zBo^-?}I#B-^`9Pbt92Qzgl_3~;^lE&>x5ejbMkqS{dnvKxXg%Uf@zYh)sgPO1 zq53yu=Z3i*|Lr*z=mW?Fg{=-Hs7Vp^Qk093T@x~V57)wk_e!5w4t zrH_;qCLS_p038w1o9e*+s2fhT7Y2~}w4r=d%p<4@A@lxIdmmpY?-!r<`1k9F7(NH% zP@juKFCd5|c^`|daAe=Vx-uEi*-=ho_9YBk&f!>?|JO;OsPEPO*kilsmzH7)CI$uc zTrmzfQ6~{&SLKU~YO+(__9w#ApyT(due}t-@9z)YMKwt7539t~^#2rk2e&z#T!>#< zu9uN3eH)JcoajLcDSRy1D_8p@THU@|*hb&CB(P_DO;d~U#t;R|fjzpR4iq~tOIy^t z-U8RD=Io3Vc1cf^b+v51j#k|pNN3aJwQAkbEvJ#y*NU*k(i7}^29GqA( z&B^^_5@aPNz{Gen(#k{qxTl>p;=vpZnN{6xHBC_h^QC^a8Z7uk%#gj~1~>WwibeEn zMQ6h-43NxD{D}jpd(=5g)kkp?Av@DbU{i{TT=t!BV0Q2`k&-74-S|Ml{h4wr}f@3pinZ}`E2lX1p+4_W!s7Q_oUdI+?IBXSr& zqtj7M33yA_KAoFWq>Na1mVa*os>0l;8kLN7qHZ?lUUGb(dC|2}v|Fu53O->BtHkQN z5l8%+>PZTXSu+pHHsMHDO3sJv66H+&V~fy&!rzFpE*^0T4{^>WKPoRs;L?+AXHvQ# z(tg{EW7u>`S)>0w2`|Hpd27Esr3<1M5Jij0>?NiP5G1fcKP>^fR@%9`MEuj+ykR`M z;f<=qjmpHk!iC@ziLlX5rn8YP598+7v7LHN*0N)51r>CcBTp$m4hI($!KB%1Pk<>5 zF(tyx>u=~Khls8{)@U>8&r^uGs{n}vDQpr4sRdE@HI- ze^&g?*P{F(9z+jRS(6n{L-1KpiLnyDi8m|1z$pVKV+&nAYbY;H&`9_0JzJe*nofL4 z1rNdkO+o&1L<#St(Bt}CGWP5pQC2QAGJ1BtQPK2HOOZAPXK5#HgLR8)!wK#kD*ChN zQ&H(sJZaxDLMp{gD$$2qycFjZVMdHNM5Ig)o(}aXjEpv56=9WX;d1tDRG)a^aYPQ` z8x^N`8-`$#nY}zq_5Kad_=C(o9?*pP3w^764Cdv9x*GL(F1FF#JplMY+;y zjrz0dCagO#`#m!S-eGQGfTl+ejt>;@J?io1*tU2_e(d)@s{0k_C502qA|}af zNwRKKrGnMfQm5Bqr>9>v34CwcZ1GEZY$-7Yd^0bD&@gMako45wh<&*hd)+2{s_a?K~ z=N=lx;wEnKH&XyVwD7TDVlEQ2Y$#T1Bfw9w9p_@s7fE^F1%AFW#5?{{EPA5go8{+X z{mYN(oHs?^&1EyMePpzm#x+u1iUtJ>^auYSI-uQqBHT#zi95EqY_qECCmK(=lpMQk zlR(EmgK=(acW7=eZ`p5|6@MAua`j0Z{l{IJ?!I>s>b)nCCcX`;h!MJG>476tQXY@4 zXjcV7w5ZRL^mWTe&3pSd3kTv`8&m<`gedciYCTrb6*bpm5yllUi$3LcH#&b-zI}mI z)Z#p2k-i7zJd7j(;W5AXeg>xR4kGvP&4lwOy6UXmnoq)-c^7YpvK(iWaAKvN^)HIW z&$$to61R<-TZfND5a${oEt*(_s4XA$NkRDAKc;WJ?HTR10WyWC{X0JHn^D$Z#1F+| z;o`VKEut(R3QQ!gu8W+E8;fXORs8I?F87tC<1(S??JHLkPJYS8!xwl33tg=d<1zmT zb*(r^yYt$l{CG9FKyYhi_(FSj#(Z*xyxs7zqk~{iIsi4heUV*~rE>nx@pv`&;rs&5 zb!2dp{|;HrZ{Kidr$ZaYte0q)oYjKYB+%VwGg%xR(3>w)~QIV-z%8v#i zBYumq7j^hyEQLh#uVz^W1m&ileb-ZN0`oW9e1gx@=N7+1V`il74%Zdsg5Xo~#?M9i z=NJYJ;HX_YRcFo0m&!!Q&ZPv;s+Xc%NT4>3WL3Vj03L!of3qc8*W3!wGziH-sDwUC z#0}4HaKfGxN^D$*z!~d%qh8lb%nxP7W!Ydd_>P35N-aepB4$ zjcbvZfsVbNy;<~Qailc#4t_NUpzS7p--7ET0PnLSok_p9{V224-k5@cf^!%0-^oVK|FKPX zA5CQ2>X%fwlYR8wQ?8}(kS6p&96S!*!M<`}BwprcoIV+a zYyAfpoB9pXTkr?A$OBguK`GH#Lh09w5xHE|a`sR%awRqU4AMFyqyNWI>a-XzkXNVm1=Wx=ebxufB`=7bsi{B0yF4%%0oCXA17|e^HOPk ze6KM-d)G}!ek-&icNFT*!8=RKA=1zM-tIk~dmCle3?(sG2vc#>Gy91|7_?|mGD$UK zmE*Fq>d8on!q~JBfO#-^F4dI zGE9rvWB(pMF_?RKRNCLF2a|!R$R3Z*>xTA9w^#mP03ZWsVPxQ1V(?_YZwpL1+y(G> zsy`QD$gd1;D+hc4_a%e zv+!ZU#B_&mOMX|iiMG?|FNI%Uq!{=2do*0J3;;C`n7KMDL;nJTC-j{r+(+ZPf81Gl zU?4FaMde|iwS%`a5*#Kf;n(z;I7cr~z^*7)30uTJaxS0xlnM3x^^nzjC-~ zsyt;=wEoDDE84&bY9n+4Y*efRSU6bQw(+6Aj|*r4DfVr8t@iM$&~(d0#h$#3&Ld>w zW3}-iC;sGTqp$>yt$O$ClB3kR1@2iQKspijeaZuy(n{ixiHew;zD-8Vuek6tKuHrhsIe>%@*#aj$kZzYfcgra{TDI?bVn zKMP;hrzB2f+G*DG(iDJ~!KE;&rZ1jYW3NlJeISa&Ap>u9`M)UX+AR>{xh~$GP&%;_ z7#5rubU)oUJc1?TSqC3H>%Gjw6H~PEOrLXz2nm#%9g=Dnj)|RYQh5}@{&D7Yb)V*0; zp2?$}b0=w3Ui%uy4JUS)b8zdZ>(D`=p|N2F^4fw$c- zXot_xR*H#yA@K^!$O?oL8zG!*?uw%bxce=$v-fgs(|*)4l28-vXq2waj7*k2)&0U?2_f(!Q2$smA|rASAfEKYoTk&`Yw(FYm$y$r5uM z|I>N!PdI79+uuX{gFmD$PK~>7w7K@lT-n{grF9!dQRTcsh5Bviya_+y8Z693GwX^P zm^D#uxvx1&3SQ6;2zE31>>poKCgf|0u5U#e`&*e-vqTakaZE()o!@l*A%nPHnUwMq zOAkn=)&JWDHQjYDCq;Ii`{~o)+f6!kC>789e1TRrk<{iVvjnON=eH%y(E$6K1` zB|FWu_5JsDqA9)`UOR6Vzb_fe3gXVotz0R@uPXO?wj8`5lOSRgeaVu!K-j1mW67EU zsO!@D{-*A*``eS9SC{KQYSvop-Gu$>%Ft&=+FC4K$n={#o7ZaoJFpTca@KBrR_#gb z*={zs!fa!%D0}p!t%hKSr5UF5L~->Il<~<%qS(n8I*mtpuROJ5a@|#g#M+o#R}(c` z(tLRJ6P&H9{mky(eB{^^*1LTL0Cd9qJNehMLqo!Be_!l=PcL2hXr)t2RqYq|cJ6Gn zDXpOgpFcCmt+l@$tk1$vGaSlOg7~#nSSC)M*u_vL*tE{@bYh|pghcJBw?##BI9 z&i-cT{9aur*R~cMM@6_zI4OpG32?eO_NV0R;#YTtbqr~T3>nV$Z2(up{X1A8!ONFO zln;YywwP2cxwN0k!jn@UkBQ$BA=$$&lP>U_9WtEjihU$9dr;I9A49ZyCZ98zj+DE} zG^ISkG6+Ga|Em`W3E@7>C5vSw0-X8gG}{eO3Afbfih2g{neO_AC#5e(^x(ZX*jXQD zunB-B<{rP;hZx=34kfBKawPhEEje+cNbQ1MbjrmCs0Yfg1G)h?fdn^@M9(C$KpVLI zVK50x9f*u3gu;8})8#iq19q}>o?osV%&ePDN6DuDd>C52-+t1(`6xo%=c+H2>(zP|e5rd;GKChXFJfOZG&VnnrM$9-<$6I_*1x>h>5V}Av zx}s&?n#cB|e*`Xan_KEe*_g#cN9WYiqlllZ^Sr93l--c#0M4yX=m)v!SZZWJm(2 z9gkM|N5sbvq;iX7$m3iEQxh}FPA-08^18UCT%6cvYeu-`y!4G)ZNZa0~4 zH|UA7v4@0!(1!hr@Z;c+AK2B zV`9s(`@v2wK*`Cq;vo4q!{}tz~yWt!n z-3SO2uIbd?wiXW5R?Bbp-H?NSXBQboL*b;qEuemnns?Bgr=`q)IX&0An(wDIZfhcW zRqgbu*7=~-G-m13Qj3M}qqOR?^0iNc0J+4tiMaq$2KcRm8vTr0`f*}Exa-x9__q`Z zGl*0feTxL?>u#jtlNm6t`p4!S{Ws7A7YF`y|8${lS5w9qk0IVxUL#@cgaMV?Pl29P za(pcU*6UJtN1!;v&ubBp5 zPO)$*zl5w zY(L`5Qf-J>k=ySWl6*svV*3G`?X69^LChMKxg&y%%NT)Y1Y{HCfE1F0$h z9zT#urrb19G8M-y9v@S{`>C=>7{X=u^qUm$m9TdGF~DKOYiEt`WMUQ|T*zmR9>z>g z^8eR>W!{TnN)-K@^C0si4I8~DMr8%gzGlMxg#wmJk%V%rB2yv^${hE%hfw2FyyKYb z<*SC`CmSq{78VF1OXiC;?sru^PrU=i5I(7shHiJqLO?KOV;0H>!Aj=`3S0o=VT646 zLxxp)++G(|8;1XWK6ZBS=a-^*oY?&$(-g+vQlrUe0iLE_ATUqxVM3ftC+^Dqc8t5O@V3>Sf*SP}8jp1a`hu!U|W87^F4qG`Uyq^ee!;1emF6BdgFKpfCU>qDm6X%=zL~ zLv0lzpS*NrFQKl2AV-)@L{%V+1XxW6QwRyDUvOKcRWe6u`AB?Ikui`g_4R&gW7QPO z6b4f_ZSyHI*zE$UQ2N{n^ESg7DZZ897}Ao{>%)7K$XR-_8Tey1S2U>@22##Oe+zNc zx4%$YU9D7BI2zpRnUR!Ye0S7SFy?n_A@@icD0qz%4uv<4nnBKH9r1oi^kEkmsFS&NW}z7=or%H&rqP_jW#+FZ%fW4Fw@h zkt>1-qD_7B{^!NjI!RYB5Z*tz;>o-Q3P_`s(EDF*+$=^>A1}bBm1fVrg$k$y>=fgz zxn}u%v4y}_3M?rO3Mq4}dm7wBCCFlf{kV8?GTdwe zhB|)_`#m;d6tSt|gS|VYb_oB^ZCDWxp^9|>ka)|VpU>Tg&%UDNlPa%YmL6c(v7}>B zK>X&=BPL&L*Ne_N58hAG1#?b1NTvNNQ{nGRr+Dn`OUvE&3@7{l0*Zo9H6%ZnoW}Wj z>q$2OJ$WW-()XHEF{@j`uVTa}YDVtL6uTGN z!E7AVs5e0I5I}WC1mO{Z%h@4`L6C|EXz>HeuBnpta^C@!EkPm)lUFRZU|_{#=dsuX zh@>zkpjyc}v=a6V2-gGH+{zja~#h>DkeZT+hwUp|}IlY~taMkKkn3?1L zz=ROm$;O3@aogh-m7>jG`1Hn&yjExftzRFZU?ETm6pS%Uno~60RrmWMT0vd3TwmSD zh#r;6)qI(|>T9i-HsNpU_@&`m@O?WxyTP*m-8HkpVyzf^X^p^xbB5i3@U<=Ek{>B++PO#OE1nKi1B*4o`0Y)P47&p529p&1r&H}LbDN1YP&UfnxC z6S~Mk=NzMD+f!Mkj9i@!#RTxg%f}3RtP&!pxGv$2sn)ZSkO4LO?p>=+s*gFa>w^4A1Y^>pxU8YuQ};V0n04RY2uF4eg4sY$H)H!ER3i3NGx|`W3$ye zH6royyE#J=O;#bH)a#m}1`x*x&=O%sk>gkVlo03$IUJj+F}){vw&H`CW6dN+>NtFg zlR^MF4ssL{x<#(X#)`@9@nU&SQ5Fz@&V7 z)~!XIYJh|(C@?;Os8;lbhb2&IZI2+MIe#Wkn53I5g;4b^w-_~bvBM z0J`4AsBzH;G+s5)JL|o$adPP1OZm@}({tiy4w>VyF1b!Iqpq9k`i(FVtT8ImpnLqq zb%6N)$a>4LsK2Ofl#)&XL1q9E=|(yw1nDjbfdOe4x{gh2*B7yVLB)#n1GRs39VD%!s4b zjb;eBy#Njlql9{AOtjseV!QL>8`HNohWd>1?w-J&ycDn|NX<%?V^WOWF{c1l zdn!=vFO22f7ct>gGZ&Fa1QDVTVNWHVD0j*gojuV^uS z_9)Oo;3RWSJ3W*Rt&iv{O@6XmS_29(A%IU4=C&>mI3p4Qim!WbN-&j;hawhYJgsTi zy&Um*naihP2{+z!F9GzUWdDDkkt{M_p7t{qvqc8(9W!j&@B9mdRsxPG&y zPF;#48=ByzlLNeK(wE{NT%0*p{BQt@SErbo3LWRpy`Sc6%cp{v6L{C{3<7d0pKIBK-V3PRXK^@stEFy8{d7yY9k( zo8Yat4eh#QQH@)7&p)b8L8be1V0n_P)t%?d*MqPzcqZ9tK5pk;K7Z0q#XPm%2dta_ z7b7604Q@!%9!4+6)gNkxq*pkvic`5Bn!TqZs`I{5f!J@Vzl((kQU)5jmV-v(Jy8|4 z&h2lf;%!##x|0v;*MC2j&KALzU?rL{I)3N!r!>EZPc?bqOu)`cqi}qtAHAAMCxAlIizIwyPZ2nKB zv9kU_z+v$4)Q&DbPbaM2IacXgmv`_?*rvAdX3IP&Pg>x@ync605*Y}`dev*JyE`lw zFa^Kt5s(hL6@acgbkSCwtqcFUE~Mj(3t9+HNI5X7NEG8coNz{-TQi_HZ*o05qqJZ< zJbTpDoZ?KV@h5ecz#d;ia~6R4eJ!a)k& zFe1TWB4+)y%UNRwn4!Ub@1J8jtCS1N*G37$al#3nYhzQ~l;ClC`+>THdQ@R8nptYF zl}0LhC;R@usFPr`yWCS}Gf#@2Y4iir){4BIzM0YS(}l5rctd;tWg4zXBM9QN4khwM zMaG@J`iilNP3fo74Aqnw0VN|hvrcxWaocE!P(-Ql8w2eH7k9kO1;FZzrt# zy;q%(r5)8G=0MFQ&8hY;C?D*gY_646h)@wn(%m70_cT?cAB9d zwJ5>I>bg(~%2-@tCynVx3FP4OC3fKr3BOzNW#Mt@44+?L{>PdK`<4a5C?sOtlp=Yo zVQZuI=Kct$re!hVjIzT}Z>#rs%DLUM9OMGtjn30~giwJSANAx3wQH{R#!xay7}NDY z6t9nVe%%>V1nn5BXZ29HaSJG}rWw%Jk#?H}o1+eksz`H*^-ER9-g$Rb~uJLNC8i7+t0atLg; z`l7+8C;)_|QYt+a%wQRhGSyvC1Lkx8rdN?9CxRJvqzeF9UfF1PCr;b|Gnl`DCjUP( zg9L`5z^o-VD|_6W<7s5NM#JyJDx+HIw)*O&Wu~90GhGREF8w)0GnN}fri(LSa#_Sm zXv{?(sIsOsWReM6)ux1Fd);J*+&PN3hMbvpfK{W47*?9!P>^L|3V(5CQBaJt{;~9^ zsgC^!DPx|Ra&yvzw)(val=DeDW>U#B0}A0$VDh%~v4j%~i%Zm~R2pYIpZmf6(ryAb zJ_^tCa=)jR#EOCv_P3PJM~rkzZ8zb)&5`exasXVdw{6-e~yc8R?ee-D5Z z#gDEhiQBzYiwaHgx8HI7?&47Vbu^Vk-0o9PzysbzoLHkv7(D6GQN;9FgG$p$PQ={Q z85cZbn?YF>bNk~Yr_<^GGf;TpYXp=I%ZL(w{CcFk*P#0oZG*I@`UbYn@y1O;NMI3? z73T3?A2fB+`ut-rF7Q6(Jlep1$|?-JRqIsyBbspP+B-7#&(>$#(X?OQU0$7=nKS@h zrt$~{uzHhr2)P=YeyjMQl$1*l0YgTO23E%Zy&boC?% zh#@1H8}uv}Ue>KNS^kg{@d&XbS>clkIYrPadAeXo`w?IM`AbQiKK~4HFjoQ;>5CE!bCG<- zsg11S!LwCrx<&mo9jM8(83DA_R(m`wFmp?JM$`$w|(79JOhHMisH zq|v?_o|1cGFTMRf*tIac_i!&xD}v*4iW)3 zxY2lLqej~|%|?@kR*;G5N-(di>06#$)Ffta7K3V7;t_I3wX!R8ix|C_E$ zvDwnr@)gK^-FMjUUr96DOZJ^*Tc`*bl2}laapxc8H+~q+A2qKJ8U3XIwFuM%^*gYK z#L(OJQ)}eoe@N0PNZS65$VdrNyS`c&B5FQOGTU=Zb{}!|Dc{QqQE=Uu#^qmTvOYH5 z4Uz6_!N_O!G*1EBL?Yl?IyXRY2vKmbH&+@hQTm+Q4=4UFHBYHeMtZ5!r{E|$M%IW$ zZtf*%!AOQ$XUDhF_Z#}=mT##P{KN#Ru;)nB&UbM+dnG9NWReL}Ra4K{YGXeF>2loc zIcEavzuZS^qRt`?>u!-Xp1~)XN&FNt0VL<&uj1=f@Y^m2{gEf*o8qb4E$MxQ1YWMzUWGaX`Y^5jEwuwTZZ8K-ei_JVk-s5Ug zz5U#az)Wl+f@-Cx{V@EuKC5s!lA2Sv`M#e~a#%(2h7f__vk&FT7F~kd#9trvi3j>T zYr?B*OhKm2xIpX&$O-lvTW_vZ`C{lf5TU?4~GNj^8bS!Y!H*AZG}%is}YzfIQ3^`I2Z- zXh!QMpDHmAm&9ehmRZWC@7o9rx^-&<(AR$V<|jYsP=uLD4{qEUdMe1Ek_h$3Q-)SB zJU`R6iPC6%kdQ-I*IZM%oSY~;+iDOd%+hW5smJ|+Y6cZ7+G=zFiT zJXK>Cd4G_4AoU2Yi^VE(sq&b><;hMXec7Gy=4#em+cbt5@^u`hfv2VnAk%+4O8E#6I&D->c@8rQLvte3z zlGK7+fc%D*pJ>fJdE_VyEC+v?dg79NGQNZcIE!5VUV#fZ#>y8;W!Yjb-Rz(kIJPqxE zw+&E)yydkA(nq|SlyC>#|4dp~HVrps0|k5Xs5dvD!T*3Rq3sG3J|($OKttn}fB@`qIF;^+VKu)BQG+3qUuLN`xaU)&F!LRUanqaQlLBg z2biOW!K0*QP9iHi`PGk;@Xq!M!ro*Wz8B$gNfD1i1&ZKI-Y9pSk;F?`g2uYh%@)JT z*@%K}ZqJ1*=Zz6pUBBx1Uzif#=`Sxboi24P#UoyLLIwe6Ds^JJ+DU0}in~F^uJ!tT zjpMg>5*}FTccu90(o2yl!84ID^o|1;2QG-!aa)}ae2&p3IE;Lc3tgr4ij-vHPN@Me z!ADAphjB(Tmnc|8^UenaldE6ECdZnR+`i5D>9|ezANk(KO`0@ch913#W}YIdO0&Eaz8< z&BzBO7mS=^U5mamC+bWr!c-ex{>g-sWSYa|Vzuemv2F_-F3p<9_s*Km@>q%)>s1SU z)PQ_J_6{(0(uh9iF_Gn_X2*?2TJFr{3fAkv79X zLI7@bFZ*Zl#^Al_)uIU#71Q;jxaNiDSN6U7##dGis*4GrX>j$H5q`gM0f`U}^T(HM zW)uz^YP-t-1{XPwr>HCL!2TUUd%;r>Y*ctncm~Hg`e|NY>#vZT(Q&x4&L9*{N}D?FoiL>L~U`pH*74 z9DCbvcyV@BEd5&m0Pw?xoD)G^*!}Kz0&LU#%d||UaUL6m-R1k)LH>ns*mYIcn~k01l08-?-PUjz=qyS%w@!8B+5WM4^@yjc@JB-VfOB{8 zGVlDDW%1`=0~}tBKe)k}`tf*nQnYH;I~!=;*HpQYYJhU?+Dk6A4|v zUcxLY8t&ja`s=gHy?U`&CHvmy`b2zUWxypND8Si`>9N_) z>&o_C4Bzp+742sSLTyqd+X?>`($;Hd&DVf<9t*zydEj0d>_S@;$0^ixN#dDa-N6?& zc82cwG1P(p9#ZkAw{(h*Q*!D9aP>QUC-PD{LR~er9raj{r^>h<{o#9O_+HcA1GNc} z9OfvjH31y@b=^{~8$Jy~`kjXB6#b60jY!ASBMvvnq=VWzabnH|k@06tS?P>Uzhw%z zqzfj&-$qmfrEx4SC_jN;Ds4qY$3or4eEJ+t$Yh@u zsUU#K@svFBZMQ|!P2O-^339@O&f!MT?%UR#A?;WKpZ___~HNP z*WMat*N~~?k)_c*@|>I$nNR#tftO|HBobAa0>5FuNo2I%_OggbX$$uEmt-#TvJ5N6 zQRNhqn2}eE%_NM?nhxPv2KtUo)_!h(h4za6u;}KkP_Vq00}uZv{{r*_MY9GIcsV2m z@x%z>%#-tJshqJOHggu%sZphKrOCQ`yx=4k-yN23bS$b8pEKlFyVt2Q?5QBM)JXz} zss*X}G8tPuEZ*3EBG$Xf1QDZdF6P#oe7pXzFX->*^h6|)ao(I|^qA4*&k7wn* z`|*Fx93?$SewRFropzgy+96H>5f<7&9LsL&7N$wN2K=OFXHFq{zQQYFOYzcR``$9u z=YA#R;~mQ%iqD(YuH+=ix{royq}ti%ZQ}reV-!Gras%|__lYE(Jodei6@7^@2;IrL zuhBhtQ_%>wGq{+FpisUwa7;X-H9)$kQY37MgBTK>B5%hroMPCGGGdBz2Yn+`bTnKO z{xeS7ohPcQ{wDJ)83@J%cn`d&T01R?1`JX@Ik?VcKN+&qWx`?5Ge0E$H;R6I0E8N{@>xDoEMEfjn9?S+nnBNYahc%z zEZepDb@RCKWx#;Y=INMN^zhy?`0>;ELFKGlwVJj6BcY>wPS%IwAB*j?Q0OxkRh)bk zrK!1`utYoZ0~xmVTWu(hhp~JBEPD*b7IjkZRWO_5Cc9OVsv?O&&PUDWL87 zJK|p>cV5Ul`0X@5WV1wI_QZbFx9;tY9+VeHF{xa9aJQ8I>ctA@qkB&UOsV9lX9$jd zlAyVGE|YN!J8OGJQJ;#v%rmnW&?QU>0i71(K(Qy_0-U2J7E(1{(tk=wUc;dG zd_!6CStnm)&!UuQr@;PZtB(X@;ONocnz}z2>}auAymJrTQcR$GgZk-MrEm|_OVOe)BA%1+#TjH;*C_i*Pc>-xkf&~?+x<8o z;~i6#Sjoj_rtywf**Ng~22WbRefiEzzUt=@U@nKcly`qFV*!$7u{=CKn!pBPfywA> zzdr?1SO;3)O3&(E;02X)UZBQ4a?@g@O@b)E<6zs~gF=C?NT2;k$|tBDAb@(Fn@!&_ z#p4r$CCSURd=L+9+TZv=DU6Fv*KDa*c2n`itG}lpQvQbVf%Q~8X*3H*JNN2K=|%~s z6`RfOf3=pHk7<{h|F9O7bBdZl4O{p!xK%Ynn2Em<$}7xkEy zUWd1ch!pN21^y*o$BP$u@dv)c*&jN$P{<~!Bfw-A%rJ&&uV>4465sh5$k02F{q0vX zlFVqWqSEoYN~+DLkNR|T6mu5X90VclTq3-6<2ck&uphkD+l4i|nMzl#kajhILN6z` z5&*CI<$-rL5fD+1?7Y9-5Y?3+|o>OTr zyH;vHnz%Sy2gjU$mWstp@blgKo?yiJ!O#Dd`Ni2@J#lWf7v7;RKOOvrM*L>EuDTWH zwOZi3(Q?d}sY~ncaAO0Y!B=2!Gc_s6wc^NqyrWKgPo4Cni`wX3Q77TKHCwg*j|LSW zR%(-rk@T3Acmte*W5k~`1D4m9%ZVSTeV0Z#wdq;^44`tYKdV} z9CWd#-M!CsrA<||F#&`&0q#+pyGBJeo@nEg=u|6IT{h&qhgWt7$UipXhZ{j`7n}3t z#&t0&`qt9zap-$4r;Np=bAwpfIpfa)MnC@vQHp#E5@3uy47&U*CGUs@kEZ;#`)g8H zWSMKkECA>7yhD&WXCh=0e4YB3F-aTNyLru*VhPJ19y~_b$tv?G6b!c=d!Xu?1lH2W zo6M6x!`Diy-zMHnIr9QrS-A&RUPp$Eg)^Ie`n^L?K zpFAOAbKnFnez+w5WjF?I)kZzkeV5~33>pXT3Gga!ylEn48)1W|3Vvk_S*7%}T#2_| z`hLyp{MHxiXV}nGS9~hibrTy1aHODS6|n@k`*D~v?{+ohdHd{WPcb_H{--PBeaGe-FSiyvwBtl?Q zXg|IYnQIVKtN-~b%zcJ(aS;u}i#h|M!;-PxNfgx1AkD?J>p;RRLyNw02aC#zg;dI6byHLaHOmNd!7L=e?dko=ih@M2{Nj^iXI4Rhi|7^l zah3z+>~Mv1T!1RQN&--9=l~FuW2I-YI``;I-i2K zY&gKstDJ*VP)yIUU2hg9tPc`fv+EJ-s)oeQ;XLu5L!F5Y;49Ah<5^tfXr#)XYit8J(CuL}TC=i@^ zv#gr{@~%hC21;f@)*FF(UHJJS#kAthujQzr%#Js|evynIE+#2 z8V}2H#twS^b5|%rK)V+=?jCmz&;h)_0Rrlr!avF}g(*NYmOv?BeUHPstt}s_?!2&z z7TY+ZV74SD-#v~Ek#y@z*CBR#Ze#1#l3Po)GB2$b2NlU|F>oKvHvz{q{IMG{@X`JL z|JGx#TWs9oS6(xrrQMqbva++c&Md#6w%S4=MkImj)hRa``fF8F(T9j+2R`mXN=We~ zFW{j7(GffR#-?_8oAQ{pf1}34JSL?ob_to_A(5?SZ$F~>E2PoWjC<}4Vdfv9sfk&? z>grM~!`kn3AnV{yFFC{s6Z+d3ZX5{Psf7C2o;Rjr@(edfd?Im7gzP({-u3!QHPZt} ztZSb)3^B`^7U69-c(S<0^?-}=Jn>^=HS;xI83EWzCv0$6Gwr9$D~52gZ=Td?QxTJ3 zOW}nC6q{6ly&J)I-YZ&@D^0;{9%99+VZJ@@4+n^L5aY|en^fh0Ognj~iqS%96zDC*&Fbbp&y8M!oZm*DlO zk{bnScN=w4Fck%N9gv)(x|fIxT*~^n9F)~45VdXvO8Eh`0uyXPv3tDopnaD34FJF% z-amrxfta=443f_3GFX@rX*bm)i#jAT8k?ww#KoX@Y42Y+?!KC;qpCeORfUR<65?ekmwP)V48g&O5 z`Iswzs9aO3XHDpOwBU=#5o<{%#OBjLn(m{zSp65}rTw(VG>4bs$KFh-joqQW_Z5qs zf9E?7<~!GYf-nB#rw1%q7%61tb}l7HB6rej$2@fMmXMJw<;Asp9jCPB1JQIQ=bGgA zHbBxGUlZPgK=Gs1jGyr?(i1U#b06UDA3SGjI|Q=X=ym0*!KrqD5ff-ah$dt=vZb-a zFgI)hOyTCd6*aHTjj&I;t^vbFSeYZQ$exEirv#(7P%$fS>YiImzOA$=-b>~}@M^ta z@Ub2~IWhBf8Ff_@8L$1ao07r*u#R2zeOrGlp6LHBQy}kyPeuo(V@tj#`_gp^ z+QJ95v{VV$HXtO*7hDLr*99ZtSw0atCGm?AT9ea9ams1@eTn21-d$>gcaZN_c|u zSYT|?`NvRAe3^pI&Es4}T*Pza{Pf5E0eyWVbbaAC)R}|b?WGCUs?-vUsqHP_!See@ zw5MB!)gyX_T7UUrU)-|6?p_z>=iEH1;m3rxXwU!wB+@UUnxfaRed3uP!pD+3df~>O z*K}4RE$}^fr?&^f$0?E2wZ}-NS^@5^?Z+2^V$&V=sO}7PA6Kr<=dhs>_u!vw@OD{fm!Qtp z`EQogXgM*6BYHHw4>Z>n5R%i9N_3LAPnDWWIAKhzah)IU zN&wU}J6hLfD^Gs6__!yx{PZeGyD}KrhQ5)?xe$9@(RD6nZj;YZI5Pe>>{OELIR(le zG5!S-d-8eGoe&M-Qi=w}x|SbtLA$aR#`ms+)_(V6q&nJiQ+DoZ|5jU1*>3_uY%rTn zCJkik>nlb90HUFH-p2{;QzZ$+{VtLNyrkdA4jY6R{;c=rg-hl+56>c847?yi zmG3zhyEk;y44doJRE8dV@Jho83|vEC?2o|uGB41;*~Kv=&=UB7A{wzC9@2bhI`hVl z&uHa>&EKD|j6G~Y(K17ya$rNwLUq&4^DSzi9wHhJ`Wa8@?yOq+d}5G&-sdvc0Z*hk z+i!z+vt0yNWE3V>_AN5Q_H+f`;4G}r6ix ziyz&%g7&Ys`vzGwky2rp<+W~^D13qQ%?q85_!|?WNfk^ZlP7!v@+Z0(GUW<2dyvkY zbu{>|B2DYaYKHZ#o}fUxWpx(5C4+h|9H!rHRRDZ^pPWrpG!2cs(=DL~vWi~3fjp?M7c{`v+JuWbvOMDJo^ABnauIIhq<=nNC>N1M%1qqXa-mqY zGX^brbVTc-MR^ry5-Sg6P2YpVj3$^{)5w>n-8`A4mC^mz!CrPTJp@+!u^J2f_HE;e zot)`XL+y_OH2G`0H!-m?%_w9ffnJ^sZh~BMt^ReT-EavD;*;mob|_y&u&8M4HoI8O zVFxzn(oE=8TNYoi4ae4jv(6xj#K3}WVWC!aFfX^)X5)d+K?0d!NDNImwAfH_t&aoFK}H*OJ~y7^nrCprn%yuYFN3A96NHNCzw8;p<)507%>mplfx zM_qhHfsS`~aP8&;^T!uy#nAB&DSo=P$K#k&wZlXADZ{=lq|gnCI2_ubW{Z$@x<*Q3 zz_>z-1j;KBz5)tvds)eK5-Ooj_R~FZYo1qM5Pj3_?^SYanpuCIvo8;VGRH_{^ z?6r-DGXH>qDfpR7Lg9QpfYmp!M!Leijolq(C@@8tT^$;o{xU2ChGL?reSY_Y$XYjR zRejbp#ff732Oovi8~+YaiG`8wL4Yc@Fxbb{j4Op6y0pI<{Nn^O^MO*UVl?$DPR#d< zFe!fNv}C4v^YE12S`xW1pA{;&ui5_HIgF6yJGbffY}-X1ZkO{u`C!$51*F1ris$U% zm0v%XWz+l9s6|H8W`o(|{dCJY--n&}Ez*@rPbpGY4xKF;SFO(<#t05y>;r9@-eoZO9bT3 z$L(F))>g)YS&S_4BXBlOC^|8YC`K1*jt2w0)#0iWOyYbfX)T!aw5^Trr0d!Hy?+~F z*jwujR7bCmM=*6V2YE)2K+NwMUscgGy)M4r&>}QZ>L7llMoGU>Uwcxk3@SJ#xGP^V zH*x)gTzR=Al+g$cj4h;$uBgS0+K~@|F|dV!PSF_Vo6}1-cAq1kEnVgugdLqND@kZF zY-`f>PY2%l6p4jVjuAt7C!a_b6GAB-9CX^h|Mfe6_mkZ8;{P-(nZizo#?jSR%DsRk z@p9r%8-oZqs|hLW>TaLUIN*R|t$v(!!T_B- zNpsCOi09gVeT5GHBAzZ95&GCp)caSF`}$4Sk#q88_GDeSuY!P9x$p&nmqsEaaZ$i+NQV~x&I}!idm5G2CZo|l#J6>ei{^m7o-cY)H<*BtAS$P?W#b$#HrKCV(L!mAw z&W*Z1wu|?moBv~DT#76r=NA;v2?vOp9JuVySHmDrtPyUKC~RF9Q_w)xb)+n=pD}N_ zJb9R(85jimGE45}vzW`kUbq70=8S-buYrf(ex0AENfqs@u3?Hls`=|Qp&#B=N>N^P44yJ=+eq^hk%jho=+N04w$Gm`8y<< zvnkD(QxUwTKQ3Cx$=YYIbO$lB-ak%v$Z#${59v*tt1w*+aH@5L%hk`d>$S`k1Zx!m6INrTW14eJ%9~%S?D=-L~ z*rt)UJ^>2~huyU`bE1k12^IpM>m;zLR4SuKKP|S4IsO2j>_HV?zv}S}&|qEGm|gyE zgBGN&PN>3wReNId+mx$m_e_!{hhdc``+_pN?Z*O4+pBU)V^#cYqWLMbn#A}!i@Gy? zaLy}X4m9wGdt{-oT#Lo$zqC5(-^nFKbuX-33s_(bJPEqDM z5Ngn;9>Y~qpfpHlmD|26UDr34GL>h@PIRY1VP@ph15fl-ftL#K9Wo$>vv^lpg`z3v z6m?J6o)PkO)iiJwhxF2yuBGTF5cLpa5c#=PV{tV!&W5+Pd-{@&Y^K|A<;9M==oqV_ zu(wBitDGav)gTmQH0y?1^u5Msc$`%#YjIgG%vwKob$+JnuEP0pd5zQA|VMf<;d^V@JJpsJ#z{q=Heqhi>q zrEk`1N@M>_mKOLydF@zV4;~FpmJg#LV4HSHr{BOo!L%fGR^>Y%6+x z><64Y zA>0mMZ{6{sfx{@aacYVCpxIu;{2HMw*|3QGL4UdG^#@1Aq6#|n|r8$qYm;5B7K1FVP}g?ME8q-5)ej&(pJ3HPOFBjsQa-s53|2D?N<@`LwI5A&wZP> zn>M7+#a0%6e%Te#O@t$IEx_^!9j8~PC{>ZSj6E(BUYGGUv%BCJi;hdfLi;sMGW$=T za`tUm-T2KJ7!U}8D=d(?lSfF$uCbPfX(!>QX=Y%xT&u4)#IfVELu%qS=~nDNQim@= zSAsz&h9TiY-Q4M>`T_3ezL&1Aiw3$uK)2CJoR=_w{SO?*K>T^BMVi6st$TK@jZfp;U;kE( zLkjcPf$7mjb$!Ae_p#B1eneHU^n=*&z~m~R+uC)F`K7Y`zV@!%<+sp-;cH3+dwlT8 zz4OiG>Q#c+%HNM;TAnd~``v}qrpMD*R_JyN4A4X{mh~5icJ;Gt={w8m9XuU6oQ-UR z@jL94M_wqtDC4Z@KduS`iG%WeilxH-PVq;vN($eGK-^WRKV>P@bpY>ggP4T8K@>OvA}U`BanS;J8wocpl|d(JY_7740t?R zI=oDV57e}Xmj0_&Tv34!wt==Lkx|S9seHG&p^4o{%-3%$DrAUZ^Z`zqJ+lkX= zFhmWMya)dgHQi-(jVd^~D?GQ?sv4F}8}^c8SJvm`Pb4$L@)TaV%cGU%v_6gT@WTtZ zf3=4O`I9}zzR+bLce3sEH1mLeTZvpOFhhju8EhT2=JCTi%`g2U?$ywc3G$t|P}NnY z#a?#yyNpH`+@Bmh_#*FVhuAhUJgo>{#&772BKTgYyR_VX5 zZJw4;>oj+})nI{X)@l<%7`Y+VhiG}DdDKO8;J!M*)K*tnQiOV2#g<`?4;>y#NaDDJ zB_i+j*S+JxjP!p1?tgCr;3x!swYDxMbe_%kwM^;OKvB3IyVO`y5ICvX(rTQWlfJGIxB$5^GUiE9r_S~kjRF=IN$(Uw0K}l@INoBSDkPEYbBe)mba}fE|Y@GJc51&o#A=Bct7oa z2e*3@D!N!{&1@b!?NQ|iySRhJX)Nc>Kt1PKxGQA6K@Ncw#@4hdo!Vg_ELs2-AhTCJ8qDv%3u)mz*=x&#Lh`7OiQPmr;?bZKo*Z2ki4f+I zz7-6p=F3ukno|A>_A+SxPJhxYFXh&9F0L@0)qUJ?b7zpzv&l8IWGxL zVU)s%Dd0>b4*+QrH_Z!vVFW`&;epJ%*OI3Vk)VG#2lm)5gcgeU2-F3nF}`iG^=sW5JI70$=m1R4Iha+0ohcNb@xjQYSzg_%x#A~m%2&++u9J*26!Ul^Y zdg^FDq#|u@9Y|AU61B#1K!T!=_eKpxKjB>Z6>`-^BWPufS|R3K{2Bhb&E@hL!iNX= z4wh)3np;CMgM5LjXz$Y!EWPx=?(qeD7p#&Z{H2+S2;LKF-VsbH&ZjCaxMz!`lDbLS zi85U>X#6Kw6mHN@0Q!HI-Hl1fUBlWTLg;vj!tT}OWI+Tsk70* zOvU9L0>JRBg40)TFHn3U4}^ne8Mkf47w9e73X08ZUbf)&E}-^A>{>1x$i zU_Q`V!JlivzU-_(luU4K9U>>EQ$SB1nf);c-c~oin$(p&E8^AASFQ8b9!`BG-j^6$ z#TL~B(wSdL?3;~{$6I2JHiua%83woIG3bYY4m{%6 zCkOkao)(jp>J`nk=EXYbP*wBO2Q6ilzIYyThpd`i?4rMW1F@2K8B7BYpL_8}#nbw4 z|A61q4T;dEZvK&YPfOqHVfVXRrpqEqo?bFVyZH$E8bc>xixNs2mSKay!~sws|29&= z7yClb3hLtP2S)OiWw~=G3Fz ze9Q2Y3|+DT@)yYN6mx%-CWL}go(ht8 z6YaZyrxM}dLJcHkf9{FC7cZYK${9GdO z6Z4tEE1aITFJ~go<4qU{!^}TGL!lqcyJck^jlbc*Wr#7EfjvWx8Hn@dy7luV$N;t}93~^aRk0%z(5*)ajszs>>4@csgw9Dw#Q#mxbuu_Vy0Za8yRr&37JZ{xG5;JbZJCI=tnQ z<9@Ky4=gddj!I{DhpzjMildKy`@wJ44rzw3XIzttksoVRJ2AV%ga@f=dagsj%2Z1e`dDN7%q z9o^0gku%dk6Ty`gxUzk1hCWho%t|Ls)BlNR9UZ6aYb++Un<>u!?@V0J4-!&$-YUsg z(33yTJ{VayaUo{$cjHdliR07tD4218X+n&3sDFKeO!05@^=RUXeq79&_RnK5OZ-6i zb5{R1<1V3xBLmV_t*kK;S3tEekKx}^=a#=qW(PoZ6nQWpCm?f3{!UMGcF-Y|D9tBu zeUa3xZ5lqubHTA>{xAi3Y&fA(fF`oTCp)M`%F!>v^Z4BQax8jR4qtgzsJX91Re2cV zVm~tEE7Mqfc>9eZpy?}t#-8KAy8mL0hd0iXeaBt^ef&sG++^``zV+r_u}MO`&@(+EeA_rXvb9Y<2+NjCPA&lp?TXz$5AB8&VIA;+kCS;A-w zw$r6&OSu9XIC+S?SXp9>ctpI+8B~w%g5D}4dZfbw+B@8r7X53~z4xHI8=nIUyviy} z5?>!tQXM@knX1l7>t9trI@W!db~EChp-TrCscCVRVGkklymuAc#&ss!S|0cfl`*F7E`j(IZ7=3@~@BTq}Ue9!>?yif9(3i9GT%lH% zD(S8!)W86U>%9hjvy!@K8XO+-o`4Ln^B!J;t=r(uSH zOqfrfA*)F#W#hgP8jIqcZTKKHiAnTZ-Kv8Qh>|}L5xirV$aTg5Q*!Hu`wC^Krr;@l z!GRN)=D~4C5RU^UVtUczv7Q*bKJ+8fWSDC}C-$=@gI1exR(Xex0vG@Py=|`bD1gtt zNl(CbR3%?mz=K;^MNUC*r?j9sF@+C&ForU>!N(E%IsY@Q&%eU8{ikwOOfzc~S8XLO z2RP#}2HNuqM^1pk=gqtQvYV0GZlV)pbr6M|7$KCD^HK(`)WJ#UF#1JPw{{|`~$;ZM~c|8L(**CrR&Ue}0A#w8=Wq>x#J zYZO`6-t!vSBrB2?$`&HTwP&P^B<{8M-t%|*e7}$H?+@_sIQP6?@7L?~T&Ee$l@Kg1 z9U^dCZ@F6mw17=c5MfW4!e+*oV*N!lZVoR{Z z?uHX3_yWJYzkD$_E;j?yA;!;Mw@~1CIm4PF^lVR$81_?#@b)9(lmt4o&8{V1=|>wz zFI{TGcswey#0QPR0aM7H$4*@zXA~b>T~IhnILu-;-H6t&DnNt~)FR7X(mP)r!+XrVu(XlcGrFM@WF-U)j(G&ej?&t$}A#=0{qoPAFc`(+sC(>y- zFse8j8YnK8KMY2O9CX0kQVt^|4WsgNGNGar6$U5IGcRywWbxpn zQpl-henzl-sO*^ipkc2vbwYDwiCsoaFE#QxN4jSYSa#4KgI1+aJaa>j_+yghlRK;% zt}Qiy-GEF%cCY{gfPJ7SUoYqeVz2ZqKZwD6x3x~vPAiTn29057 zU5@Gk)3GsOmhQQ*gPLwnPGq)K)Wc^SVo`U--s(0~x7>~>e^cZPxBdpA`!oPerEVfB>EP2Ber=B!eQ=UN%=`}&GAgI z{0bHif*J82VO8z5E69p^zmdQWa6TnMiJFQ14*VSDEW$qMm36IN#YfbLM2#*JWfI2Y z+wUWLwR-6irY$mmCcSC>lhrnH+<7BJRY9>oF9!zE%LDaZWN45?jm>E`R${mX9qotm%RC{h zQz3@&)+R<--LdKOC)iAsyy;j3pMO?$$kfl6M*pd9!h}ZuuD0304qwCtZS3;!&YQ<= z;!SdqnLV#5kV`=FW-qYpQpn1eh#$Xk82a47k+0H*2dap8Op?wO~=(V=OaX>7D# zPmsw%oLAgZF|gy*MEne~?{pw%F?Zn(F;!a1SU<36LPu4$;|npYpw~~!BX%(7_I;Br zg7SWx3BHU4K37(Bi+=%HtCeb-@Cy-)Oa|z^|5G2ATqO)97oXnR4c-mS{@0O@K9M-< zN;-b;`+B=3Kr1eT-s*zJd1F%>x4DFnmV#IVXfeJF%Xx@2;zw_&U)H zh*9Fo2eiF}+*=+~AmuCRzeid3yN>-V;0l#`C@WI=aQ+{lpMI3;AQ*6c0srP%$n-#1 zu4>_~z|D=~2@TNmZD(qNC>{ChC;onjKpmN)jkF^i&C&@$Pc}U>DNq0z!4yLKxZDQq z6|C(8MY)!#MLa@`iiql=q#ry!3P3evG7>u?iWfYe7z(Z%wyEY!bYC*+HsF~;qbg() zseVUs34cGw+?wf81F5(ZXJ0vgr7&|asV4{91 zuXT|d@yBRfqiVws>|&Pq%8EjErepv&HU$aV3nB>?XR|mRA%|!!u)&?)pLVmI+c+Q6^~$b7Hamvj~OHfibhJm-+STt zw5gsZ>zC}d<%xq7spJwNkp)$fBElup#$5A$zJQ8lQqgVD_my_CtVA)09vBivFxFRC znxHG?A_Amn8bQLq-joH))WR0yys9zq-VSzOU&~xhBtM(=il=vc>(L}|tq4F;XD7WC ze-p3X9d*P++XR}eZ;^M+UWeH<)y?-@4|VxxTF@VoAM6?cJ?c{9?MnOctk22&C&9rf zERt_Fic{&;{8H$wm(_-$LU%qReRvXMoGpWm*&dDn>X)t}+VeB7Yd1A`-td&4L5#fQ;D(c~A?y@I8dkYI{f-m7l{bnMk zCH&l}*3c^42?-qbN9pE7rU2Q*Z!h+g<)%F$E|98?&BhtjNU9rgE6_BmCvOgQRTA-yx zbvEz$_J#qYdF=Czwaz$&XKP*JpPM;uBxqEx*ihWi;jPB0vBW-FtlqJqiq(7>9HPG_MPc5${)#Bl=Fvs2X<&STm=q>a}wgxyQFOOPTes8b`+G2(Y3WT>hG|Nn0<{5bD>^*Rzd@t%-j^PiwAMB!F zdn}Q9Jj|qEq4QzCC6!-p;%=+|KW4zCa5Q$(nWl@itFwkRG3}MD#kVw8Zu%Ib0TX}I z6d&Wb-AyY;7k+euVwluKR2`p>i5S@(QzELc_*AJfmAU@1(WKd53wvsg4#SBlz8-ew zl*!73Tg8UjP&e+Ui+zL%y~s9f6%$c{jMB!$C4}WfK?Z(Z6U=t*%JGFm^+C2wkB@k; zrgmO;%oJ*@|0`|8je}2!ZAy@83_$s{dMJ_^H{@7iW^Vn8j3gN!m-sDst`49%FPjCI zk0YDKT>7BGHaR3PGo3bNSNZR@>K*X3ffqacEwV53zo*PUB^sy@uzgo6<=X5g753g7 z*6m&DV!8V5=HTpD9I4fc*v!vTU5rGpxVL68QOv2;i9SGCa@Tr`e-7pGPOr8M4gzO@tA59D#{1MvmjM10& z!2n%;uh}P)j}g|YEvoFYG{$YaDL3wKY@?}#&Tw;tRG$v8xo91HjZVD+00XuLpH`~2 zJP#xbB}{0qf82K@yq8sp`cxB8EmIIOA7Jq)uQ*JnWy`ktaT{K+0YpOKajvHGATTn0 zJ+tyuq!O+A)VwL2_EEDr8-ZYn*!C8!Vrn}HF@^NEcn7%&9_t4jTG#j66}gF-=Mx0J z!h0lr^hOA_1p$$tP$vDhy);wG!DmknzH1oK<<-9pv^DvHsp>E6LPExUhGa+|V=(Tl zq2Xu0fSB#>71#*N)fc01%E#m~^YxfxJ@I*M6 z>;_l_!e1rT);2Cyahp*&YJY_@0I_>$D#c?G^ezOGYi*ED4jq@~ud3+twTC-4DCS$U zPUFr-=UsnOBPaJRxgZiFHPuoW&pq~X`$txF*`)yO7=YmI3U;P=@^mrKE}?Xy$4w={ zL40iQElJu$S9QK}cd~Wa%RbzPQoW0x(LwV1KSDn=-Knw!*4Ea)k)(HA;2V~Awp$(z z&MLQY4b1085VN^^oqFC@JK>E+V;b*4(1V|#ZTSV_B7Bp`)b7_mnMGu!mOQ?Kkwr%Q zjA-q2TYhFfoX-NFmfIr7UtR91R8ac4&^*o%;UL3C_Pw`x^JgfwgId-=f*nPkN2;ou zZ47FW1S^|SB}Cc8fl5RCsR+F}23NiOJkcVNjk?EM!?+)NBunfuxZ>>>6d|e{CI_MO zOXn1ZeiqgL6uVz9Yu4*5%T6k06T@g;()>X09HqSXf3gjsWYO62^Zo;tnRHXSZKKt5 z1CaJsau4^4+2t#KN#o!?34VWSYHnaY@mu_Wg@1ZwXwJ>$spp5D)u+cpHBRHl9g4-& zYRv+=>5I@eq2Po{cGS01z3jxHA4~ar3J$tg{;_{2CM}LrJ;_Wi&PmQr{w>u(JdEsC z%~={BFG4Wo9L_Y3JFSv0)W_W1KQ$|-A4(p16z(`bATrH3NWnwvc!a_rk*PG=CZ6>C zpgNK~$DxuJblNfO6mNu`-WqP-pj7_&Vo!Hz8qU9LFv3aJqD<8Cx8$^+jP-$(Upxe)GB2h%h=P&Y>(!%s{M?lw2=8B2UQALFbtq4_>g3T zQSqwGgNQ0r&3uM*-Sa{n?b711GIC+$6ESNyN0l2Yl^lXVg^6k7s;6Salaj}?iHOix$OX#>_rC`Ej}(0;C$vbsv368Zb5AjukE z;Y`XF4r_&?1NOK8bYu`1^#=tx+UBfX<%5K7^;@p4UW5bJP%1G@Kk>Pgd_NXXpeDi%YR+@?4yYixH@Ru7)#oN9JI-2ueG#`1!hM3d$XVN1;8jx zfXveEi1>=|P%o{5_4b z6rz@KalR|J6l^)<`R@AJ;u%)+ zEYjaoAVqOGGUTUQ0h0euf74^1O4+bmhaHonh?t@HGPAijj~Ftk6tkD>!=*9WvWj$H={v(Wa#*=YZ7rkb z{BoLZolh{yOM}^MrY9C#{0tQfZPTM_!zj9}Y5gXlkG8T;f<6k|i=v-Z{WdXB88XS)lNRUi1!>12P0<9se`9^oS+NyZFnPk^%t2Mk zlgf!yX|FyYrBP(`2{W#ov3CZTzjL4au)~bZ)1tLFO8ZgfhCnQsQXoAJexW(xJ)5hz z_Kgl$RsR$ajqEJUK93AzCVfeBGOn);H=oovTx!1Fx=BfWZDO$7(1>HFfseTG60;UX zpY2R}kOh4NQ(Vk#f5FBL5dT)OV@8pAeh~QRR9;reaWBsn5ju{APJv?9R>VHJb8ZQK zbn3BuY~w^%uAo9_iWei@o{m2`od|qp zZ+unf1zvwiR#o9;q9C22kBJr;x>w&!FIi-7b_cF32F&S96)L)SE!)B~543WBJnU#q zS_fJQ5c1<^#NdkOD>G=XhA5T@gfC;2U!m}VOI>+fqB+JOWwPVLsK!aC*^*o<7z7q` z%t<47Gw>#q_RkmHXX;BjViYQvFALKq`JSo|H1aU-vanQ2gSbX|-72Xn)M%iZ^cHJ+ z)XvucO9sMZezwES^&>HU_}IRE>aj}aJ{JR*0XHw+e>j_eFi~ZvkmjQl=An};Akr|B zTG;8Xle{|ZMCAMqCf@%tVg0?{PsFE~@rGBe!%4p;F;z<0c{p(bbJI%Kk9c2D)XqXQ zLymlE*C_p?aMsvI3spNLi1&P`#CX(Ha@^1A><0)TfQC{vU>DJONt${ea%Yzyio*>$ zS;bp$oLXEPLqP~ic}@2ca4|$zk|V*=WpWhQNDQlWhKM^iNn@)#rs;@}0X-dtG9UN| z;t){OL>&w9x5J|SJ;>d6^GB#vfr(l_=Yx^W>3Em<-_WgwAdKxr_P@PvAZ8-bg8o>X zcvf&Z#k5C}3i%WsP0YNMrzcSUF;6LUDNjUBQv&+xIRbhgHCddD*2AN379>07-7yWmj*X-=}+F0Ik{7l)jwb>(%>%h*f+w)td zpGJ?{%3DuczNTJmR|D%K<-woF|E-U1GLiXOE(C>N9Z%o0gvINR)?BP7Z;8X!`mDYE ziA-5lCv|1Q4?THIOqb)V_^LOokSsYch!$`m zt*d7CM8&`8DT>*@-(Qb3GEXcq`R*BLtu;JksV=yHUVituSJec2xmt}?46rC+ltMj( zYuUBi9{v1Q7m!FdIoX?({ia@M+l*W!+dKMrX5fMx35nauAdw!7Zy(lFeKl#ZRBP1z zWa16>>&@O5S=fChtCOe>1s^w;8#h}fLP)ozt?^Ax^LGKYI`_(s2kYyItFKn})1!M0 zpS?Y;zh)1|y;H~twqwwF*9*s)xXBkhZg7>4CG81q?CC+A+nFm!n@B}0T4vh3;SwT& z9dE~$fIx&q_(%(C<3*|65`GSa1+DJ1m_RLej|>oqD*{V#NP_p#G$S`T@((vOv|-Kb z4y@4@H;Y)Gr1P5&q+$8iZasu#=sBJh0|=|qUDTXWNP)pW-R24qn}rORD8R-(PTd;t zBw;;Rke}ikCN8&!y_qfg+~V9c8;c3NB+~@mF6r53U(SR}+I6PlGM(GaH`uPLvZZ#k zB~P@l`3V@SqHjUrgt7O46uVmUVzz!r`e}@=P<{}n>9a zB4K85u*Puovi&hLzee3LD*t$}a(A0~F?hE7&pn21Q*6t+_kV7Lc!Or$cQH(L#|ZAo z8_!0D@6D#<&)1moQHw0f)Bth@b5@56YAdH98fi&6OopxAgp_7=kvgx&?phJls9NMx zEd`faH~|$WvN~Ic(#g+{#tn+A+F>BRu@r$C(`DeTJ(K5SVP3+ks87DvII9^TwrU=b zUyqd))eeH92r%7>$L{;A)X1{L;9yfA?}N|Gg`iWJ8YF5orpAaatB6NEd`4>m9R!4Q zp3~hnrI6cPJ~)5WA95~eSk1;+NeoIToO-ZNnep}K`lYJ6h{gw_R35z-l;{l2c>h^5 zBqWbKaZ^b%sEEqLCs5Xc*}0JRQM{axJ!i$CdnkcUcDI$1kW%R&XE z9AA4F=vqs~J0i7V*=^?m$unX9L89i{Id7IGP0D*a--hL*4eX;DU8b7Z8=$$oNjy!> zsbY(*dC0@`kc;i1(8j&qb+v39Z!DTS>PIJ3qlt=RNjHf}4 zreiU*Fo$}0TP4_tzChy3s}?0M4xzE~S*6xn2DORWUbD5A#Fx(hvtMqgd_bw}&Pfyb zp-k8<7nIdY3+~Onw5N_0GU5Bc6R|mD^=l%*QZ>*dCAy}DJl^;ATXHtA6uiRpR-i~W z#vDq*VCy8=z-F0C_^=Hd#2-e4p_%f_Fft^5ShQYj2--o-Gbia5 zSd7y;SBaTQt*Dcc!mk51CV`z@>{T9-E-HvBq05(sv!ti1u4?HEq8Fu$L15XeX0!nWYotZ!;WDq}A05Wy3q@`Zck4BV z8hI}31@S~FJY(M27{qPX^VZkCN*2?Q=!)Sdfl)B7gyQ?|l6E{YQ3#JziVyNb(darl z6?1Lw$L&B|^aYa;ZP-h4*$m__0^-D>YVw=f0ZvueP%@Q>{9;mDyacS{EDIDx#H#ar z<-Dib*R=`Dur)lc1Y+9b+HYdl>&4pS42U-J=9=jwDOV}eScRybn@&d8h65)wZy6BZ z+xa_@3^@Fi_G>OVR>#CChqy@U^J&HwO##XUNyyGTnKb7e%&gIm5lB z;CZUP;Vw1V{U`O zs^^mgskrvykN&cDN+lekVRt3DIW46wiO~D;^q4*I>$cG zt8NMRG>kmF$E^_&r&%zVu>AhPzoL+$h2G?yNaLdzo1G5L4!eIiz9TQi@DjqSCzGUd zd6#HYRnQ}`2$9Rh1(EIJ$?WHOHz+ug`+_tzkvBVEoRr>Ihe9fVZB;-lS0n^v#C8Yzk_U{Ey+7#&K0CkuX8H%J zh25)E7mFj3q#@3(nSk8qn#^4WbzL4dnAb5l?+Y*j-}W+;sjf$)QNKiIl4~>$Ho7Ma z{>Gl30sc68+ay4I=yl!5LQ;JRlSGY%hR~B#i2Ci|Y3$wRsAqPsQFx_=aUfbuT3}i@N`f zc{>La(fh>SZwXUWy3LyqYiR|UgayfE zGO76!6F}g2N4khhm_k8qa9I2hE@>7~g^AXr^n&l~nA3Zi1W|=i9ZqrnO0uQ@^5l^5 zfss~*_@jdhWYVZx)l&uaPTN0^s+8M+)N*Qrq8lOe3a5j!@7pk{*A8?3oIA7bCI56n z2fIHyLok-yi*1om3V4BAfHZ6O1lP=PH^#R_^1!nAL-7v$X zK7W_)7LTAuT+s-l77G4W9hs&sB3oq1!_&|AS#*$>&UgpMAPD|Z@>1lcAsEjzaT)>T zin91n)xjETt=Z8f&0nq)Vcofcr%h>8PfojZi;jz|4Ob;Upwt-o!KCb_BlV+!<=S1U4oi; zDH^eZt@hPcfl#_62iDgXGI*fNDA`YNUJ2V#lnl%5t{x)HDV7)~Ebf>9l#=`nFd6w- z?noWmI_x9tQ0tBg7W!n07jD~_eH>>mXXj*RGqhaxcT}KR21SdQWN@TBgR}GSs+`~b zk<#{%Ff1vCWxR&EMF^SWXW>JxLFou+o_%G(?)6?vRfihvreEDC!~ytGAfxQf{5mrG zK~|XyH|~`XE;r3$-!0h3oYw_Vx|>R=vOMh!H2T%E(>;bTZ(_l&8`Jw-seoq{rs8|N zWl(s3N|yQ>^oy+YtPTq&_1aQ>1-Xl)`4liR2bsxk%s-wQ6Y)UuDdk{tnmM3Cf)m9* z8GZ5HUO<%I$K(-}pL+&a9xPMTr#RT8ynTb1b*T~S`Nr1^5Ullmsz!=YnR>Cq?59n0 zx>^QX^4zTLy3&N~GAKHX*vtAY-PFOuFxF1d({JW5PqIY!XwQEy?(TaL<^{M)l(^ZV z)L&tZ*Yd1@FhUEEtE22eO(8OmC{cY&4@{~S<*tsF4Nt^o{aCM8`zTMkb&lqmnjG|I z1OpGhaUK(hBYbqw!>s=;UowpEXQeJ;TZ`SEH5OuJZ*6LAN4)*U`|{kXWIOSt>;x;% z{R7R>wQ}0MJu?JJcpfJS>!}UPy@nlHKLhy4tMDFStzNE}=sESuc-I_OQtE`q4e+jrTB z9XL-ye{f!G;Tpl+?q3Y@^F%Vb6UmZ>%pd(TR0cVHoQRx;4)+niTAG5AB@AE&P`)9* zXR|u|H(kq#e7A=!18ns3r;DQ zL85j-EZcB|>frp>SK+K#T}iXtWKyOHjX5~gPI1|Uh_|}oH(kc!>@px-Ntr5C6yJw1 zuyA@3*2;lO(&O9PH!1|6oD5t$RcNLyP2H--+ok8}MASL0gw&=koUdfXGfsX2+JW%J zX~ZOUf`lm?N-atGlOqGaZE}DX*-XFY3gm9XBE0~S>2!n0QMa$JMoF5}!Su;*RHLy= zbGW^OC~ED@;lx4=)^WZ5XB#Jc!)Pwp--?aD)fd8A*@bQZA^*PX_$?aQ5QkUMp?cx` z3eR~Q``=Bz9@|<6X-evmmKwEh{`u-fYH}o2@-67K9mk`FegV9s29Ld(wLLFAAV7s& z_VPWZkd_SYZrGutwt_n9`mRH??A3XQ<8JWvMeKH%sfVJ?UR0)FVWj zNQ`G2Wi&FQ8D_ovub+^dZT`=(2E?i=6z)#2)xO+j;ZWkg_8X};u3JR;cX<&|#)xV? z$T?-*-dFx5oCYO65;`oTLO}$6QTx-hO`ey+DdqOo(0o3D+@xO!Mgop-wy^(F_oBLm zC+ds(A6wrn=(=eaS^zhx25)QZyONgf;f~|X9chM2PE}GeLQYf?Xogiga!K$JeB_JL zexYbZ66l6?p7eCLui*3wJV)%jN@*BFQ|J-kmyS@2Iz^cEg7b)5G-0@0FdQtjvWwzW z#fJ`K3UGCJ3`@Nu8nb>;g&D}EUbf|4$%9(u-$$|9C%(?tBUn^7+>4ZbS*Pty(ROiT$B9Hko0G{l4`P{tX>hl9bH_5He}M;L-6xofC{fOo>1hGI-jYJ86FN8OG7j_r z2z?S(@c_pOJSCDL3Ef)2jss{d>zB6RSw->icYA*?@5ZsuJdnIfN2_k#`Vhhs0{936 zFAUD!-y?-ZIHdlW4wf4}TtaJ9I9<`(xZK%kuVyv*y2(;h(G(LkVb;?!pwxLCkjHX; z%Hf5t%$a;udCNSa^=e5&WX9vBt+DFc!V7J0vh4xnnv{^WxJ$_O70omcfPF1~XsvU* z^(@&zYb@oaxGOxxxoAX4BhUr8-mXh0dpK^1)RbeHpkX-t#c8v%prXxPqe#X(U%_W~ z&nHRQRE4sg%-Q|yA%UiAi;QR@s%O80GUo0F0vQ{NdXa6qyf62EErO%PYx$#3>=^KQ zG_R8x=8|hS(y;e<6Tj)++*DeuD(&;=Qz+aF0;a{iZ3)qR*jK zb}Uzm9>gs*uE3mqsG>h6l$2%jUw#K*RoepliI_lReY1D!_`r*P#0+G&8vfR=e(esY zZ&7~xEP_$MuM)u)FJcsqYWT*1`r!Ee$-pi9@zmqZQwTB0`JwJDZ z5{Rp(AnI|%8i1T7vVAW-?!G)vX?URn@!n3DV{K}0u=XbL-i~#UVkCxh3Pn>h69)h{6B3$$enx;ZMOgZuMWITsodlt={=;YY0%KCP9@?S^E<;~(RgRd#9f==tMwn>zJ*ZVz#tg|@=T5zKUsv6-W=P;(Y3@v)_;!k7AN zSPd-&+J7-pm_30j$z3UIB){MxL64kxJ@eCcYZF5Tm3Sg(a#{@yV`MRnrQ@dua7RIU zo*eE4OXno12~9@!DzTJ|sVfK;II0LnmW#DMWu9kTn&Nu!7DYG_!8d8w2b7DFeAn&nV_W#eO?Od(TB?eynhU_T5ehqHgF3 zF3rR5f-o$tpa$hj?lye8zD>>|#^=JWmf+tQj-@aD?6U^hS+KXGN{Hy$e=2H}60cPn z4cJcXGfnn!8ILo6*oMXbE)Hp|Q8JAzqwzy2q(yg-C_ zAiNOpC?@UhpopmU=aPaJD?R}kDNO_V4eNL5j@tu|({-IyEc?<+h0U=4%Ds z?v;Ab5phh<0uO4yf-t+?5B`Ihk*oY|Tod+qr8MHbDy57GPY6nZe`=iM;wRo&d)9;W zxUwbed|Yb2Lh50IOQ6D4&v3$=Qoz1bfNkH?A1nd3_^gwSUmSDzi6hkFxkAZJ46a$; z1pxwWgSJ1L6~ujPD?lg0g&LGd&a6|+gB=6c2Qx&aKKcF~CB{$1XZZ0T^7sc@s5(P{ z<6mI@ae|>kZ_ZxoDD!iBM7kP5WaJ1>JBBT&O*{?4^ByeQke7?GY&ReQs6WcqhIhDd z-42HyLMr>%kb=pZxsfVN#IVs>K%*_KX8ps1(9uqvi5hLwPHUr{nUt-HjB$kXuhX%7 zdmZzfhSFACGD*$Yg&|%+{Fi-KDsRORpQNC0>GuEzT*KHhpgI8Pk&Dm)1vG=<*OmkB z`CzSEH@_JKSR!ZBC&Kf?S+(I>4cGwIJ9knhXKt!KnTJdNN`MDUPMeh(sAO2O!yL(> z_0qP#8j5xwA(iLfp+m`^#t3Jc1s=}(!PmCwKR$sN#L;7PN>xcw=?-4m1fTAjbO0suIHB6%^?Iq)UaB6L7 zMPJZ_{q&u?c^WOy6A}WzjYLFUPbPLC)gs7}@)Fn7%-B`<{;6|n&l~so8b2dRrhU|8 zGx!!mQdMQy=gWqKR6S&x;Uj#Iwo1RakF)I%;H}jXcErh+e@Z@;`U+!*Wu2qV`P(T6 zG*x=5FV1q;h8(B@GA1?8`x?%H_YhS=wTp@c3~LbciiwXMiO&0bbH8tk&}WT3t}ZK@1D5o-CGl$$ z7Wc&Gh;tJ%_mviWD6rCMm)n@f@&Ykt4lDi5Kik^f^KY~@e{PFQX|o<3CIEFj21~N% z$wZZ91t2T$Yre=v_i2{*_Z#>Q(S81D6D+D^(AQb;O+B9|_`ZSk@y zE*Rc$iskx;a9dQzOm*cngXl8|4AP=%PSCoNN$q2J@$Ah$+y;#<8`;%qFXiB*IVS2$ zJGTS0ijbaR~D1H!ED6Zngc@(Vi=0O4%(=bXT=dl>b_-!iMx|xDTnTv!A z(|lwZ*&PUGdqkWbsMF*RkURaAw;jxSo%}UMl!OJM&Rif6wcLoZ z-j!$YQOoa*uw_k2j5G`Ob47SW#EFL z*9Nf5dMh2=Emde@P^8|jTT5@|i2tK0srUY_Iw>ui(bUEBw20c)es)^+%K%zB_U%$xj_I4B)GycdRzY5aVX#_7yiG!_aJ4 zq845-9hhh(c_(e!lQ~RTC&th?s@e$Rc=UHFJ8Abd>8=!^<`a5lEe2Cl+dxwa(?9wY zvixJpCCUHmq<8{rYOHGF6}_L@ zIIeahvMJ)#$Q?|h^q_u+yxgxWwQeaV#~~pc5T*e)Z=6gtR)V&zr$<(8^uJP}z9B5G zL!B@rOKV{F=dEiFl!Se63K!Ye2I|R!yhi6x+_(A8N-n7;cO6-HM^ko|aY9v8qzfbq z7K7&3uW3TpHN8oJt;L1qEuafY_tONG-yLToH^JGgc zJ)H%AO{$t62$v21-BfGK+Y60Mq{sPmgMg-&I`LBIM&b+cZ8-2*Swz$+5IfRr2D_cO z#Nei_l#TUxqB%^(&-HE{=zdSPWheur-YX%}}2fJ+f|Hv?22@Ffp!Ct*}P> zVY)a3Essv(5+1Bf#{O^cAVgnpJKoLsnY!u|n@7j&T0#pWkETA+4;4Kg~ndq z&)!N9OhU?1H2)!_6b`WaDHUL?&vR8@#uohf8@acmUAqG7+OCp$iBa3`VuTAmcHg{* zY3W<|@Q@$-`^=-ji=o6X^K~~`kV41N?ryC>)9CoX#WY*doxLn&6&W_e1DFKAY@GR$ z6W&+{igKaP1^VZ0!tw1QF2gfj35CT>zTA%1~H zB;c>cl5uIiM3&)&0EkD7iqbf`kOsiFJdoj6p|l={lzEN844%X&v(>~oD+|c-*=yjJ zT7G=e+&nzbf2!D%_;@u4Fh3X=5FoF5KU@nQiZZ;`z%XBB@#T?qK~}WsybRbON8X)P z1)dDs^-Wa_L<#YS9TdnFTkOI+?YYJlb;!gS@3`3w>%+06Fp@CJm>D)m6FQGd)#tRG z()ZP>QLnNKg$k9QOVxILecZr1oD=|??%|FH{Q#g=IKwbj*4qs>~XtXlG znvNFE^NloSBj@3Hw;h7dSv+4*k@D$a=awq`ZS-hfRNSChr z^&sN=v_8xl*ss15Uxh#DE&8=Sm)s#M?-$Nz{lv9PIpMsYzM+*{RBJ9YrflsBsIUkw zkwnJl2L6#rQ+2fl|EB-rm0*@)Cvn!xo%qA}ld~ePfI#aTTT{Qn zn@prGXKjAo%iP{5VpH6G#ffE=t0#b4!h5pHfY~y99ghH z$9y;iC&1A4=5ixTB9rQg4H-gCuHIht_D_z;!ckiy zYQVnh?!(SThLkAKE7ai0vAWm$)dn7IfQ&GBgBP+#tiI&UZqtRwDC#ZS!5*sWnXM=G zy`U2dUx{zM*4+v+3}9RF&I88Fq4%6I@Nq15Nx9{sTwQg*tE*b*!-mZxxFOOED%{J zkSXE=WE9;2lT1eC+?-D5M(hyN5yi{cUOMdI-LJyg4k*Oi^ayBb9-&@sH#kyyFf_~A zh=c+E=y-mN+TU>SC-xheAO#xZE+x*ZUO2<;*`*6*kGfpR%pWOIuOC>RVgu}@$4Ub}q~p8u;NP)%wMktH z-k?81gser6+jgf{cmF*>(){jipf}vmi9=y`<(G^T1#uaDBXmnMmOfgxK;jcvdIg*J z!A9Z79aTb2Lk%wC4xN=cWdQUHEQ>K`6D1UEk$#>{w)LB%Z)a(O=!wOpj)P zHk^QC-(Bis_u%%H$wUcWaCY+7r;zyy&$^R!4&%9j*a_UeJ1`P1i*}?hwMGtq_hEmZ zb!8pkw578LnLhvrG`=S=V8$yVEP5?-X+KZ74JkeS-bKC!tTt4KZk*p3c%$ z@xl~Y-V}Sa6lPzg`4yJvTwg@kS8RA%(%1{epqtN4KQ7GhypOp43_17%B+p&lmHP28 zQE2l;H;FA8V>u7wqoyfVAFHYOB$gO6Qzl>5S>0mG0L08yHS&eu0@9#xcCL8tGvwan%;1SD{RGe8En$bj4|dYJez{#9ux>1)>E+!Mua7CaRKef{-hu z?c;Q*ZkaXNJmCP2>oOi*{m)7{)=0s>EOfuUmv|r8hT>!D_J*4 zy;;w3jF6Eo`KokSe9cjIefDP+DwivMkm9Hb-+)Wsba}Q2S5M89WKcj5$*kP3h^{8! zlLbH^#?;?Wxfpgf;QKMX;w~?~)UxAf7(ab_^NGRW;_F)iXWh?72PHTE5}`$8b6inE zFG4;PhjvlO=7wNU01T%ud^^J+r_Gx2{zE_!7_A9-6gZ-03#?;AOg$NmjH=g!j2@>M z0^H!M`5&KZBR>wlw*KLdA()>bc74WwVyQ^w=e={-5%rov9lEvGn9Ki z0zvuSOE}F)FMPw!{qxi348G;FcgL9p0tx!Wr>-HY))6h|$$wKef)-n&T(fS0C;&m` zy_UO+Z>5gCmwIrwJM|ikW>aR5-e;%z|7|ix*bgvHw|=BLc6MxM(-!@j$2e;uw%M(5 zh&!oN`q-Y%RH@zJigRE&Aoi=u1T`~SS^TDPk-25%I#DIryu5kMQG4-C& zaD9K=ww6)C=nO^~z4tO?bV5ROQKLrGFi6qcsKFpaNkkVCq9qZDIx~6~(L%IQBhf~$ z_xb&wwVwNa>6Nu+owN7Z`}_G^m(+0IVQqmUFHHtLGZFb}yH!xb)PHwmAE)j;W@xo#sDvg#Cjf8DvtvDzLrU@lYEUt*Hf0)S|c=A znnoGVQa*Zq><^^^7Pkja^DNkbyk4;hMJq~sV}nC;z{xN(ZJ)s7Q8JaMiN1-tAip<8 zI`puxD*W9$?E1g=pCgNsn2FHpCa)ZL-q`^f04Yd($*#K8!7nFxzl@EeKVPaUr~hB4 z)2TJO$qAaoVrBk#4<@@=*XhaIQH#J6Dx_G4jnCPMaRM-1V(+t(U|vz$ums4d{0WUT zU4Tg}7{mu1)ZbK5UtIL&8qhMA9}{j>(XoH#Ebc3Qv>p^;UE+k}$P{pqpbQm(0T$9pChHWmp1Vmz+>~V?0o2ndA=oc-3lPbW{N5GS-1am zVO7I#^vb~I0NMw0J6aG}4!MyCJTcnc*llm{{azHlFR+8rJz7AmS0)E0tQWmmU1XN$ z|Dpc_*R8A$zEx9%E&aF~DJQjMF@;j~TZ=xOQjv-e^6%~sG~y*`6XMG1+!CoUAWdDE z{i>7Ju`~9Eo>-5?;0|UtM-S}&`I=uDEhwN$eb4J`^oov4SvsWxP3sBa2t3<}bPl!2 zTu`mtD|o2B%t(x0Bv%7YK2jea@=9~0( z*q;9xb!$p#spiYUvd83Vvnnn68V^JQ%XPh(kzo->TPJgWt#IVOyUCS5Lj1lm%HIb5TpNrbtY=D>h*2_l*qc!C;I{C0R^AWZY;Z0eb;F z@&w=ue$&L-0K-05B+lQ3NrjjlAnDy)L}-4)e(LLH>i2*DT3qKiHV{Na z@u?hLXNs)-S{k42kII#L><(-C`;XC2muFr)5}&b2i@WvbbJ^b*&VR3CpNwsD0pmz6 z&YE8@Ht{6zTqg@)ogo5yMSG~VDwn-|&XB8Jo9x<=!dG3rtkWd3=>*Lb%Zyto{p7|i zX@0N~)Wlodu*-bkK2I{7>-|Gn)3rtYkUHK9Y1fzH>d$gD_^M1|&+n;Z_3$z8zjhY= zGn9cT9X$3oJnKV17+jrY(z5h+J-+4d^wHC}-r`d~k~gD9nzUH$Ee&oPF#fKM;Xcub z_N@(iE1LdyNX!X7oB8w_O3&dMXvg&*0Fuv6t@FW~nnm=`;Yl;iVUw$Na){sDr}v!C z{d_R0ZbNZ&%-M;TKVq0qezYhl(Dt~yx2BAYgisc~-DeE*{FAn~^XQT(l0dt)*ZMXG zX@Tycvu!rs$UocvVAf&!!SMj`pMXW{0vx*FdTA885IQ6!m!9b@n^vW5BcHN1#xh(g z^|H%D9HoOOg^7UGQs%2SDCjbhlZ#NiiFC|PTD!g3JyNZFrSl-Bx>R>M5Ky z=*XOEz|A`UGBrK}%6U7ek{gHOgK#C41oEKQuHA9TyuP*B^2xaB^1P@1yCkxUR+2|5Pt z)*z}|$4PH+%AXD4I`4jBxI6j@6JSHf4(w}xewzrb>y+A2pQO43F?!JPN(1|v7C@-R z@3k&k%g^UL;I{10%*E6(wKYDC<*+#<=a|#p3;@kN~0Nz zGaa<(q-BStisR60pb~2e|6^*S_R@SLC1HSb!$~qttA5t+&bigITUU zJyuRg`*l^qG3TX}k1;)Rw;lVxkQZJ|&D;Yl_03o6sGk&}ZR>U^Q=fdKe_kr58uSn! zJojZud(QHH+Vz(<--qRC8oY>D~ z;M7O>CBK2wvHtNB!741bJ@ZSpmF=%WbRww? zm;wn!AIDoev!h{z(y!gwHThoV&H1H}-#*GL$HD(l4sTgo)q}2>7H+a{kr7erEy3k~ zY`(|5tUUN7JwhY)s-KR|p!*Jw2Ch&dH5~X+`!)26(~jr!#HV_*(ba3(OAR+|oZ;w{ z2_|!4&0Z%U2kYwU&GqJ2!1Q$f7=N)?OzxNg;JRKRi@&Eo0;hiZWGL; zY>JM<=Ig)cOszXdUR*W}X<1YFQ~$9Z21}mzEJMVUv#Z^Cf8f?;XGTXZ^iO z)1Y5+2Iyq~J5s-q(8tDxQqE6qd6xI5%^0L+AM50LX5U_3dm*eG$poXN@<9wE~|)i1NbV52&r2 zr;`%taJFmfJQPdMV(4OMVqR_@Fe&F^N>|@&=>kVfSt>Y%0l;RhLd^ybvL)aH3Y=+7 zm4!g`k=35!4~}@qcOD$^{SVrx7O|`lqT5;n)ra$yOs&(`=M}V%qVjgy(r(=^#4LQg zqyylvpvdNW`pB>Kx`&6U_kiunQ2tj+ZSBVi+4{)iN!^PnZqAO#FyEVP4T}=w@U@m` zDJkoCsiAOY$NWQ*Hd%uE$v!ajZC7t*SeWsrY+h9&e4ZmW+OvtTD;_4z;P3(55gSi=Np_{;AJMlr$2HKWPd zARkIJv~5vb--kWLhYx>@EOy66xdOO+T17*U@QZWiv-1`uH7aCNeR9uULWv0ijPsI@ zuKY~>aY;7w{Uf}897n8bETlez;`UjB<=`g_9n;#B(-t|$otZ-5Xw`FX;5;KKMRZYL z*G(BZCNo~#M4(D~M@LouUn2SOIz`RzL?8fd8(mjrt?b`$VE4Q5?>C{KtJ77Wv7|0N z6DPCOwbWM$>q;Q`o+UcBF;LPX7S{@#ntY9&tlSxP8awNNtWQRFA_=(vL$-91yJv4g zG!0=+8n`6M8R1=Xx($>_MC><`3>5nhp_#Q`pRYXO=n;a*IBB8YfTUC1w7`;#I=Km; z;zSGsmNJgX1zv@b1bQA*Zzxo&xqFJ5fb1Hwvjf!C4?C#g$*LO#xCA#i9`6@Cq5H%C z)c#0lk;ejw?6FiV{z{^4A&l0h_o90Qz#pDK=9~t0X}7ht3vRct5kNe`D6+=4W=)uI z#O9uEtQ5kSRWwVK2u!MapaWYGM&o2Q?`2roFlSjR1o+V7tRUT5O`1~Rkm6iD;BsUk zvdxOAMt5+E2846ivq-}R$bPicf7g4am*ENZw{Od0R4yy+e{xhjV$Boc;2)Hx-Xwg z+~B-}I8U$KAV{S`CDpGmIgJ#0@QdPqVP@*hz}xO1h5f%B-WimAw0&P%%zs6yEui{# z?6I6%l8aj$HC`SsFft?RV|p=_4cn^wH9AX?ryUh#tyqf;;TKdF2V08fq$>=qnz$v ztX|bEdu{Xn<&J8rk{8I_gCnU_9Xj!_L^*~!#3wNWEc44U7Ag|_RzCzL#8e#Zh$l|y zr&Wr0+@YDO?ofO!MF~$|JZ-{5=89g-&iPkUS92rj4ww+~W#v=1J&;VLqTr&+4UWFzYB!0r2X;bp!`C2^GDMg96OC&d(RB! zqEq7`jR141RiyZ%C2ZzLz9}&3@ul;~N+Q0S_Z6fWFR=d5+ksxbV1^y)Y>=zT?0iS& zv?9(35>-TOSfnYzNSZ4#RZpv1=j=+CI~~G4Azzc%9KEb|Kvx92mzR@(0Y@50WlRC~ z;ML^cq7upd`<1*Q0!T0!2?)N?rMaQ0{njbQ#p5Oh>m}3Z85Q_jOm@v%{3D&dNFzenFB5so@^1AzbQBa&Q)MrX}>GjZt_n zeEot_i9#M8A6K9CWlerE)ZE~{^G)5TN3I*|LWO%?r*nCU2OrPK98R1p0s|4@Mf3*8 zb@@JgEZbg~nBTF`A%H5$NjMtyMn&P0qO@RLwN;dh@#eHZZ?J2*-xLul8|PQh$4bv2_c5$MgTRV#QQYOmzdH#D(CQJ?fFKj!QCh4{?@e!nrfi`gcZLi$nJOMws)wdoN{8MYl1PpXvsFUcq z8MP5PDO%!BWsX*PEs;F&?Ih?F$kH8!&KU-xl!01jz{|Kcv$TW1qis!Xl#3WOp-cNX zfKMZck%EmI9mh~WEvd7ib{NH1Y-yG&hg+R10t_!4OvPjbUmZP{MCwmwcd7SGv{pnb zI&t*midbh$QHHTHAY%0Gq!NoZj9GPkU~QnNMK4^=RH<|O_Sk|_N=-Dx_AImV-#z?` zX?sanHHx$ALIfY3@XK$WV6;0&r~-&PksUvhHEl^b*kADe&?(u+N46+cz(i~X%2nf! zUuy#-6Th!I3hUiRYq`KeSGP-)fP#XNKE45`3KUAfT}q2Qu+`u!20bzVbSpK}HQ9bj z`*Yx|H!htV=%`>`dWY)gen6JH*0Yx(!owlyH2_sb7YD2SfnF@`d5$tZsT>nKM?ynf zh06fscu$ePPZVldg}@@yx_zgW8kho+U}?~PKq7#iT7NWA$wY(ncd&Br-b2T=mrj*b znncA>AqYC1-PX+Gu_B^l*e=hg@C_&elo|4lhT`Y$VkD!)=rJ-@@sP(SnsB^#c9d6u1;Rk|?9{M4pvC=7)E-S5v0Z*%Q zE~gsTx53Q&ub?05D-vkQ7ZWaqQvmNSFJD~Fx7Gx#6f?~-m6Eq)y$9NiboxM~V` zWm2l9K)UIgL%b9)r}Srn&WS#J7eE^{wv4G&_E90pqqjhO_PKzYjYIa5upAogDVeIf z9xYJtlcS8CO108cR&4+?oCOq&AO!(C^TJ&7g`=Gn=HU3f&U)Ao1{3geUA3baiO(T| zK8yUc3Lt?unx&edFHKd|n%bt@bJHKr zzLP6iY`uBH0lbE1LY5~#@LRiGU1Gbhbj5bdZwvs5W-+RCyx7f!j`c_FvBt*Nlxj*_ z!C`Lm#(VCxYN!Nys;}lBN-@mdB0*hzVL~tuI-y z?3f$Bv^4zSsE3LPKJoF2#j!pq{kP+N>5%-gyfHMHVN-83CTK#R#-O8p-*E&(Lg;#~0_ zW~8);Cohv(hh{Aejd8}YW~=f`k&g}7`hYPepg^qp%+qG0=MkOO}>X+Qq`GmSJQR?=Ie2O*3FHLRB`arcP8@% z*#9IB^18dvaKeoWarIvWVm=PZ)E#Wymyz!gE9ae?=D)o%$s(g4en%(yn__O*%Ow%8 zSMFda4zR{hFs3zF($YzZcVR70LIkwoE1Q5=)ROf@i8PMTVPXuHiJ_FX=Spw7?_8W) zmbE4Rt#VjTl^MFi16j&F7QcjfmhWivQHBWwz0ZIb?CbD4T)UJTBxC z;t0=>bTNd*tGS#31ozR`T^ja7JCz=)Z-PzSJ+kS}u5a7{D~?U0T4U-i&QVtv69Y{% z>FzMJNr0NG9a|of-7dzi>zrs%Xcq0QtgASsxSz*1%~K8A z;8_ehy>y6^&X)p^*^8ZpQQ6Ek)_HLY^lj@$Hb`|XuJ{sU-a0OuXlONjX>qBj(Rm09XM>r99bx{6@e{xji)?30Eq)5EGsIAO#>y~w06_`MIYh$85 zAs7zOeZgLmvq?nVQf9;+DXhhPbE?0o;BCPwsGa-)yq$Ys(6$fPNdEBhH$n$cNe1G% zPel{TD+pA8S+4%%AlGZD4+`WgT#lBQ9^Ds|#!I)}lBH5^GBgI?w<&HiWV>*JB(H8d z!EX`+P2=43EIQOTm8NQy&43_j=%dXWPJ7Cme6wu(*h6S!&4Hdr(lNX zJ79dYs;PwI0DmbENSOgvN{~J=a^rHKt3npv^n2>!Hr3Amr$b$6r=Yj~aM+ZX)L!_$ za%wc|yzxO-_>SW8umlYi97s+qYoZ_JM517#9Cq?c!c)KN*S?dW)g!(5+FG74Uxn@6 z4Rad{xB-nk?DV==#W(nl$%Z*^i=7-)7rs|hz>}Z+P1#wByh66d>}!{5e3>(Vhz4q| zY14w6E9y9(@9Y+&U92+zw~z)G;ZG*aHf|twBgD2=Ll@{lAiM^Do}Stpl=U3lO}mt9 z%@savK)mw5|)AeLep%L0)fRja}UZwFg)#m_e}>8Rak4U{uqEWQ1(&?j4x>;l$Uc97DGfrATuQ6`xk zS`x6Od|46d6tO{Hg6|3%Oc^xjcIO>mf(?yD+p`3p!nMYzzn|khwn~Nc%wRpQ3O;Lr zvrjq6;X0oe?(SGI28WP+w*g+-*nzf_a#o@TZI%samkyKmlEB7 zhu4JXA5(dM0dh@461+BgkLgQCrLd_I)M87Kb6adwFHKwnRxLyBC7Mct-1Dwj=U1Q9 znPdU^EG?RWDIg8_0uVq|7b$@N&pA5&rKjpbw=N#rMv$?gc1K*0!A&?P+j$u z*@7u5D3CYTmjX z|5{GyC3WqP`Rz-jGe5N+(3l72&=y%pl#7e$$GVbJ$$SbW$Oiy(y;6x#TleFYUUE00 zH}lwByd5vy7s|W9d=3>ZxH*z(68n)D9C6*mz0^I~*b;U%H~}=>$kjfZ88K=m{uL`s z6$pGFu(M@HT8;4nK)qFV_ewh{mnWADXw-$3Jv8tzT2ZFX)7AeS~%={wMV@M zz2|b@vVjOb?KS;^_92}MKxki5X=Kv2uI3K(9?WrN>WELAu%e>Vw$-8`?y<^|>~Vk8o*1ccNPeO;9vK^Xi*SB&kiUah zSG%Nol*2jh9_Q*3$hqCOr1QLS5kn8~IU_57#C|_mPInJs?|-b_!NX_zQbSNRKJ2x! z;zM06NegD+&T`gt{h!G}NnIlaEfdel(v8&w4n|^dOr|3{a@xNo+|m~u_w9nD1M?4m z&i~V!SCw5W%w#@=tg5Sw8CiClQh)(`KZti15XZwrb$3#m+SX*xm8ED2L;&MUD85aa zI^KaJ?n01q9fR4gXCHo<k#fC4}D{sijwGAO&E{i~} zLR*D`<)=oDKjm$>R1D2Pxq!9GRyc%WbZcqIyP8h6Xx77Iwn-N^AMDqnYt2L8Z(0maL2>+eoj?kUkEV`e zIvA#t>C}lv8H3cCs);aP+fy-@z@Agfz5WNigHWP?2XWO#PNS4+4?@35uY|Wt;zKEQ zrzQh0n&N**Ckf-cAP(lX%5ht4X1H&AK`M?mYZsJ4K!-CFyMunU|79mR`1h{rTIld) zuw2&vJx8ZZ%pn8k( z?!?70QqwrLaj^#xU@TSq>pCgi{b}|C=@HuaZ^++#G?8F}2dTr6M_v{=pJRrv!IT);7Dud0v0u0Ct)_V)2fQ|RyoE0F- zg>3uX!Mj_gTAMs$$sCYeUizre6luq|{p*(n5%hUZ@IDU^`I}PuycGHIafi~R(lW=E z*RErsdQAJp+M}?4@1LG5mniL3j7P>B-;3mObl6n^c1OFD{$;n5zxg@4wH23i*N@iH z_G;ZPZeHz}wXfR zqGfo*C7PI=I3~mki5MY`TM|janCgU(b3RFI<}ay!$-oJ|)hDZMOd+@tthtNXuPY^m z-QckBkhTvRx*ST@#@T(geL>0*Hnf{louVX&kNTzrA>p6Roz5zMXyY#+8CVV|a#dwj zUh4!p0^`jzB8;6J2l&QvMqV6u_ha*FzY#oNS6**+V!t*C*KopH;0c z5svQb3apb`4ffS(8O;)&XVl*3l))+#S0(~M#H#UkkFaQl-le$k(K`Ngo_ru(j0Lk- zJ<31pdJ5nMv?ytWOo1T}L{carsi%~joW^Hu!AY1h(2b5vI3<0riMxEBTUM$2u&N>n zGW^C(lA|mA5x}BUd9n?1v~`=0rF5Bl0~b`4*@!N=UGMI}7$9w-MToHHFzW>ZRkk4r z={@0feL7dyPvtV(PFiNv;UVzey%kJ)0r#6*pF#|eO6f=HDLAJKO`_(hvIDhYD9CXv zvwXw)Av3tp7$z?q|np9^q2=@ zYk$?DOP!5UJ*#V9?Kse2^ys6Q5XhC#B`psIYs~Ri8NPww|ALKQUNc1q8~-)F|JeyM z93uW}Hs;h2@x21_!DZ29e%nEU?>yOph?5ccz31n-#HSY$D$uchB!I=LKrIuOSZBFgkkdB&--vezbee-8*l%G#z%8s zJ~BTCl=cQUw`cx7d2Uk`U**v-M)MdLJq(?6pM@L(E#{MCKi}>`^?FdD<8C|&`nso# zd+{c4OFETZBOZjj=o>6t9uJH}1AC<7Ze-}+=991EZ3!bo7eW_~3wB96R`$3%^|O*M zPDb8hm9rpZM=cL)NpGAr4YYm2N3fCyH2o~peBem+7R44@sv$|k^XfPyLgss>^9m#E zp{~7TR;*>+l8C6NM*JH~Dn&yjOu_=dHBGd1dRVQc|3XPoRfGc2E|*!eE8#zsQKvY4 zj`#W%7gQK3|hj${6S>p}?8!hvUO; z!LF%T@GzeDPm5${qCgZdkYoQI%l&s`4nhVU?9$x(5_111+9~{je$VvW;Ayix?EY#T z5DjLhPy^bZL2GlAazDLsq!4H(Ph8;ovzkwI%(u83sdMVn+0>nQF6u-DSs1X7<-6J1 zH0$ckQg;4_P8K~*4W)}kY96(!RRW?@3+f#vRbG=xDKk+Ps7jA^T9%0i zGAdtm#8t(F{Lqx-4e106?=*^8~<)mu|wN|{tQuWp2Hx;CpE2;Ipg0XKG$t1N_%9^$ zIzOQiqBB}aH(E=d_ycp6xuPVekl(<-M5AIMR51Qny0FLpYJ~}9xgKx&HF|Vr1=CaA zi3GUQDqj$F3bEzTMLRH(vA_N)_h{A0+!mDWB5V5bCBvhA6D#JpS7uo4gJt9vCF1+6 zUr|MAvx(rdvPcN(QadpgOC`u;LT8<5R$m$7CM_cdM6~ERX<$IBE68?!wk+fcz@?Y* z43iheE$I6f zVA4WqDzfP0t)z$Iu!ZURMh$+_^rMMM?VpGCHv@vWjLy)5vMw+f2;MY| zP^Nx1N{ZDWg~dhRU{qxcLe#A9P4}$1gn#>+z!Y|G!^tV8_LA~0ppXqh_aKozW9+#C~@reBorC zvi6VYvjc$hlFP-tk%63NW1sg)p|-c-fb%LB+1@ngwv~M zxivNSYv!r)uOb20=g&mvoNh41v4^T8b8$33{B2}2KNI)u)*v3R8^W73{jYV&&(s-^ zDJW>ge$f6wE{emwxWg5|i4v0sK0)|XS%c>-y7cO`Rh~H~Z#Nf8 zrFRTL(1BniUtABkYtKWMX&haquo4@rD30jTvJfT#Yh|4VP#@*_i%XpI%be;{nWOs~ zQj~SktD>JfnPLW2^LqZ`J(Z=t0clMQ;Nac^f}h|4>2k|g=55q|k^4aV21XjFqH;@+ zE6ou)0i*B>d)J)rfmEE7N**4qwIgiXg@T5Pm!0zYImWa7CTiSf@95A>Dcpo*Pf`Jw-*x< z2uQjOR}BIkyVl+NzI&?U+}~Y63SaN>UCbPCFOLXbGhPjmE_7a>Oj2Fowg=z>&wdBf zYg@|S*^A1@)rH1?ALTpF=2F%JiF_ReV@O+21?>K}^-hA;LOERHF z)F8oNUYTAh)U8jJv_#L$82w{B28oiukhrDe`Y{Yh6EbM{gI3WHAG#Ri@7*Fmnae>f zm84tpA$Ab5f>{TBAhQKrNKnyjJ8fEDA1Dxv%yGwZSRe{I6QNaAO0n;@ zO@BV=F&WS4o@fh$Ep6O;xr5bN$kb2*l0Dq!r`P7n8GpO=(}35P5P-k6emPZQ+bB0S zsTnLiGnIkeJ|cV8*v$EIh$N%d=(v`%PHE0m=}fQ>Q;XI{-%@IqzhT%t9<3s$qUdoIf0Y0b%PPksKtayp(MP3m`R(L3e@O>_vT9e7*|urP2)qO z?wRN@Amf>CXGAm9TFk{RX&8s>Nbz1KewoSe2>3j1`~rkc7cp3)Cg1#GNr@#8 zF^TR;$Kf`7_!f><>B2-C7AI7*UOzo`#^~F^+g|7M*zx)b1a2B$1a;9d58yC$%)@a zPiYQe|MXrUdC1W0mrVT7gHcg2z(gK&bxAKF&>Wkj_gujlvkhdoe~Ub3UHkX9TLKdd5^U^>K=db) zo7xt+ex=sWvL%j}6dMmH@7MyGSW}2DGLYz=7=H0F8M$`0Mo962LrXCYA%zsZb z>=}?z7|)YhHvi<<&B`K)v&yM933t2NI{7h|vsa!cwHP=a`9l588R^Al)(&27ye&;V zcw_ct|8pc};fi3}GMhivFBt|ni3$U`psj4GLfPY4@5M&<3L}Aa$K3{g78m{b&kqeK z4Jkdfj=BEBp7g$lpY7jgdrs(-1Q5?rAw3Exgjj!>QgKBnU$zk?T*LF##oodDylDmL z_&XDB({n&gbDd6QEdtP@*c&lu6T`F7OulMq6z}w+H({S=ks>vPmp$8GwTYgKX49Jl z{Y11l3dL+;KmEc${&m_|W@lV46LG@8HO8O0p;u8f&ybHd@DJyUqVij@XB;v=kKXye zJ)WP>4;k5;w>wyFIt``Ym;^H6Jr*GN1?_?0z_;RH#WGbs^<}~MGCJR^=WcahRo@p2 z>((tT#*=b@eOn|z=d&&k>z=0bEw#XHlhd_x!lSf{bprouHOCb5Z*gF$WF{xaP9Ewq z9KT*xJi@ox{eq?xH5s)kw(L>+Ank7&10>W-zi@4fB@zq@10rGUkNY-?k2UEgEPLD& zom=!q+$6-P6HGTtf)2XYFU`nFZ(uLs|V{&I^J>z6ZAa-0k)9vxL?}Buf}c})&~2ff>|NDdecEDZ;nG2zrv$lxQ&_{uVw z_rNoRUwQ%IdId~WH)ybG1fx5Vv`9Kh;A%tdQ55Q0WG#GT8whIxsQBkXhrbpN*B=-k z%@v>eh7g*BX@9k_oQ^Q5Ip)*NZa(;?cU9DI!p@dcSSOP4pT;9%Mg~u0)RZoJPCngPz!j>UNL)k~gxpw& z*a`o;Gq@=?W|OC`sw6p}Y(nK70$GnB{I|#USYFJ_K3PJweGV%$Z&FL|OhvL6Td-_W z>P!9WeWV%B3d@{w2Z{$>zW;!L0WMS(LXB({dLyZU*c)eoeJD~u2y7+zkyNgDpP>{ z_DJ){10bvC_yCyc<$D+&QIJ7uh;-d?mUWS|o;2 zeH_an)AE}MbM(mbrW3#&cZqrfT@>zL>}i~=^zwdFai3h3f@aVTt0P5w_{#&*^*toS zD`jIpzB|2IXgV=!Ny2WHQfb*Kj%EAn#~}gnxB4LCpP{9Se+6DrD)DdMHRt8VLrwwFQMZb70+xoBAA%^N_Z^ULq~xTA*11L2 z$Q5ZP@w4jI>34&9hc0ieKK4OM$}gk z8$6qIt^b_->{f5RhZSJ?{M&iK`5^aro@Q_sSScY5%Zu?sc0!^=XcP(v)lx4Y-eNxq znFp=uFpT66F3yX9y_y2 zFJ5_fd2{^7wfOEJ+mxD+D?);I*QpH*e0ucJWh2(!(#b@2FY&*#)Y-ERw$53%aAyva zo{Cqud5@) z{IX(Sw8=iSP8$x|^rxLz2d&y@*Np$6tNX+ewDgxQyUi-CXVMXe<6z%id?z^PI2j+R z_f>kfO+AJZ$*3=jFMOqnW5vrR^DE+epsq%Q(@CRk=62tL0U@i9=J9mJ-8~MTPEPJ8XtBoeU3`j@nfr`6kT~5xIfN7HU zIbFc#zKB@pzaKB|66?_i1Qm-rpuz3=Jqg}4zH}kg?>T>T7RA!u2Tx*6FN#G4wZLoJ zqldD3z!8CV_Ey03{HB&A)sm<~FO}}1=1#_hLN(Fy=MT@w#N+y3R<5xDrOtkYj$tg6 zWfB_!(r)4od^U=Y>4>>4o8t%w^}fl&+g_npWdUpl`K&^!Y$0gvclt3FMJoT7#-5JJ z#C|P={cqSma_YH++HYxWczZ?s?;|->!KLTQCtBhJVq$uLq6$Nr)pMiPvfB(Bj zM#FWvWhTuP>3HN^Mc7;OTenRQ)4M-#oL$jL%sgT*dJzXmeTk zs`vxV$hLP!X7g6Phr8;3c}48o$0cC#>0m%fE=```q31{MF-L-w?%OEQ)~13N+!V*EDLI^ImgNrrj$$@&w3X@wNlR|=zUi#tX5Q7u84m@YRw%FY|8^ZK#v=l!-BvB#=e1uFp zh4g<+krg*w=ELQa{c2XAV;OR0yepI$$#cdU7P5c5yXtuztLHc${n1L#|L(B1s?v1->8JY`86}m6ArhL^P^u81j9+7TMoN9^?kf@^G>n9FsddUvdHFJn+wp?S$3RSHpDE;GTA!v$l318xA~T2a!y)VWNH@7J1(Y{B4+&PZbQ;9C>G z1`<3EsrF(pAMNND%+oQ$ptybcd2760SQ_n-g0)hUc*r$D7?5tA3?P@!D0Zf?GVNV@ zPe-NgN1vB`X9=XLd7Jmo7a0URCOR5+aCB7KTtWLlDP(k3DK;8I2O`IBa2pnfN+&nY zQ`bBf@_*dX-@S%(mVQ2djBQi;UwO>;)4Y|a)kVe^4hNuQk<8FOo$Za!n%hM`DMwa{ zrM}>>p}8}&kk_pyv;X|-tq#m66JZXC!~w_@BNIHaUIPy)^yloq26g9z6gh`GG^8`a z-RFWb(;|ZW<r04>_-T%q#pu}w7tnMnum2JO)!^ARIslJ zON`dow1OX)u;IiV|4!PEY~bCG=|>S%?DNzzuqNqRq7ctfgU(1qwnO+ov$X7&mVH-# z_K$pN*q35SVKRf1avp!jH!AcJNXfH;^>eLAXhKL?!j8@Bjo?iOznGAuE&r| z3!_*b9dJkk`g9@wMF^F=P9yhMdK2N5-NyRDqt$i6LRtWKq5QeFT1gr^n&CEo;lrT| z*#{VHqBjF!;>8!W%Aj>y+wwTVa>zCGG78t8IzSx?n;S)nj&LNx?lCbg`DW~_$E%!5 z%JZ8{zRnDn4Z6Hbp{_QLibVX1cJH^_?QCNK^baL4v4dsn&&?I-38fTr_8$E@fKz8x zxf@F?Axp2 z`93be{6qPKG9m&|>rw;0Y3Gav_iNcwXj#9Q{LmnsuUl0wya>S!{%N^yU)t z2~`Kk#V^9)x%jQ0!gY={ty5B|i~fSlzwJ@v1AqK?zN^G>Jg@b`KH#wRUypw_@%xR6 ze?@is*J_&MoG*#5nF8io-}jNjr`y5DKGptQ&=IR;se<`LDRF!B$Z*7sNZG^Su#h!_ z?-&2U2Mh@FojL2R(NcpE%!P$#ylS^r-6aj(`i*xtJ=MD^9_imARJ_i_f68o6xNbSo zHH`EppKn7@ouV#&HouU*7}=oH_A?8Z2hJQ%&L95&FaFf>VFA>u+1%rgL1`#|S_VA* z?wTqs$@*T$1&8aH>53~3lAM-8n9rp{W_dwZc3Z@R)w6c{x>xHdc_At;yelVe#0l+= ziqIcA#Ti$`_vY^S(U7uINx6vJU}AaX!o@&+orsR7%M7=!*NKj&)q-~{0W@0LWV1Ay zOk&!#J_simXk38K&Sd1JD;+qg?dn~B^8?vVYGev^steMjn+>Anc+GQG&IzS*e!?G* z6pq{V0HbiqPmUhRTdant4|G3b_RZ($_p~Ls{(s(k-y3kluu-A8#YoeWBI73i`w^AK z2dn;-a?zxZ{r`F!yBOPPeHj=B8Q{E?naa`u9WT(xkl)nl@OFGMbI4Ie=Io}QP9|9Xos{i|<|(j_<9|87*V zo2#2qEEMr>6|e=wSG4S7Xj&q^eWfdLaRZ1304zV7Cg8*_1li;z#uqmSCL?Fc@q8#( z0n#M5i~l%Uib_ZItknO8p6#uDfr&TEmJs1SRP8DhcYhZo0o_*vEEfhRcj}z~gR*DV zdRF>v{-@1Fy>*}=g8=(|{AiPqelc7<(u2xzd{@aygKcrK0Yh|m$%Xhl@cQpz_K zzSz}i<3spvLaS*P$VpWdp9AWqjKZpDn#-DA_ePsG(wY(zGXt8OzFfQ4tq9JNL)mNQ zhV9h>*v0NoqBiph3EImc>l24e!0&QLzxA$Y!Fu=q=)b_E6zCpA@8p+SX>%>8yum#m zPFv!Z#A0Y@eLQmeZ7SS{(eEjg3SRwN$Zi|yeWpbdlT7k|So-R)rW*I}jlo7EU8AHC z5Re#M(k+M}At?=`8;1xeN(mB*bV`HLF*>CMBuAHY_j{i2@BLq{%fZfl?)#JI!Xe5T z_8!lM?+;e`61tk;?`Sl15bg{;qZL#RcoMi$n`>>kxr0+#eX7!E`S3 z3eNv5k7`jL9wY_KHCD<`yt}UT!t6!!)zyAtq-VhApZ543M$hMG;aOdC?(F#G)P?w+ zs_ZeQ?u|9yU3v0X&NQtzn(u*nHT8JpfKyzJtIWzA$-k zZ9Z@~8mfTM6Y6A9s{nm}=9FV9owl-bn5yP{I~Zlc`8(aWS=<0g8Aqvw*iK;bp_#Ct z#}gEH$c^)~_Vc4q%(mp$SVXc#JmrnH;r(dO^=O6DJx46`^<|pV)#p0ll4xfShBK&(__;NloJ;wL+@FK zSB@^`?$*DA@HWmB%!-h}j@<-;Itj$G>YT+zd2PabEC!@V>C{=2tLWCJ%#PICVOaP9 z<`1-WvGK9V2#vG;YxC@~)nHRUkS8H|p%u;Dl!wOXkojZ&T4s3r2F& zVL^m!P0gUVrzU-v)th#LM~|I=^rMc)5N4=YN^c@_7f*o;FG`XDt@qsO_g;Wc2p}~7(Oou@Sxx+ z{kPkWWvKP{54bo}D9{)7+Tp`r{=xb2kN$zz0)cK~jIw0^IT^m1o_tH62n@qh8IGxc zm$MI9Y!P7e8u_?VRP8V2saF#WlHz=rVx;>UJI5iM8k+(LfUK;O_^8AQUp4Y@9AsxL z9kQ>|1FT-IQv3t>GTQZN4A`9TVGnN_%t#c_=m3+C2ypDBIRQfLC2+-z=*}vm*zyfu z3+(FRCp@xBF-}F7bhztH9Al8EFpTJb%1pqu@TSbv;-RE}e%$O2EaL8qSGzioKnU5m z9z5gL4d}rP%yMwS2ZzMD?o(u~nA7seb?vX>z1e{xa$eSuy;-)~ z{+GF5f<`;=06BdB z`OKfZ(hqh>D*3kbIXXoClkfeSL|GeqPIB^h09L4}oKy`p{qy?t0))u>M1A?A* z5IVUB*AMZHE3(Fn#&bnPbO50c_WskOaS%8V9PllllwQr!Mj-UA1zTc`(R4A{>wLMb zB#09?jkaugK4CRb?!AmchH^aYo=SXAW4l3CcWX?f_Ptc1sQ-&i*f)Goo`gMCZG1M;Il zw>k?v5t&Yr^r9o<6_5zW@<@t5c6chuG;x6Ng?pdO_X21Zw1-1(w4bZW6kp=M+`Am3 z?_mp+2Bc3b^4hdnzna52H2C{%OAFf%x3}b%6!g?B@f2Uw4Ic6at(|Hp;)~%*{6oBh zCh3Ru2-C=unqEkY5B7?=%ZAZR()C*G>`TTIY9s%mVX>Aw2*yyTv>2i#x>P`MU6DCk zK((`;OxJ!WW+!JRslQ1AR{>X;5J|I|S&KWBdJbKJ4u2m=i+xL!nvnij3C(fs67R1! zOP7Ezxr9A4VB}!Q(}I)^h`d z`5c_=|0+xw-Z2l3XZ0xu1B5Xb@4chHSRp`cQ@ZMolT@ei3T&jDBp?3Lba{^bga=3q z^$Y&LcQy-5Y}HOV!8N@#e)5K5Dxzogk~P%x2pJrJB#c~>2;98^-L+Ja>-U!}g=&e^ zxoME^y{Tn5cX862Z_Ilh3P>#GjS8|j69F=4)t*XxKiVB-ZPv^|dkTqZ4GL&ZddG(Y zPXxz29ty(A$hiB=L4W&s6G#H&~Y8_+q?Bw!47onx*BSS9Ym&Fc>U5 z?T-^VvzE@X(SQFogljjF^%4txq4f3QmVjbYEP=^Y_w1V;pk{bJ6v&!)Kf2E_^rKo) z0=&8`E=TB|%o?^p`VKzWx`cstJg0C4Xs*KZcLj@Bm`p-s3Vu)Jt#mL2Mm079KTdHe zqA9;8y!cc554MMZqaE)49PH66$Su1mP>#<}KX(8j-cz}>j0BSd+$TZQ!9!AwA0>mu zp~MlD6}GbXPVGcd7S=Y1XCV5LG$9@UHz$p+N1$0Yo_u}kClC`FirsLvV!y3}`7!tL z@#w5Ga{JPDtlc54XQCRQkuq8TrC#1hwFuzaT6 ze$?|R<%*Yt zTfnD?4tjDz^z;FeW};$_o}Z1~)X0v7*BMU+(ZYmGX>&z|3Zdml8G*jqrFJG-d^Kn0-Xb{8E867BW1 zG~;WIv@vd(rJor$no4h{yCg1k*0%Bo)FLwBQ;yHJe;@v96XpFokMiIDBQXMi=AP$2 zE$&)~2WK}Fp1;Bi=4EPGi`neaylY451fjs4rZ!5IMD(FL(0H?IRmDF+LFKep; z=*mKg&~VPrMt)M!U7XcM9y|rR?Fr(%Ut~1N`un*w;p!xW0am<6QbOyD!+oNL+I`kT z@x1GB?Vf)+V)|_nVvBYBgDfSGtw_%1tdj6GqbK{TTZ^z=o2`M<6HE%bwUCsp zt4IaPx-aExp~1R*o#3r5*Z=$yhNL#D?v=8|YKX12wu5MbW(QN6K}?fr@}Hx*Lvz@{ zN!d$Yzgkifw-Wa?i(293g<2Ejc@4+huV15&ASUIyD>0`c>5hLC!~6kNA0QzMH)SBS z{X6phx}Q$?>DvAIGAR!HRiH;HfTR^AV#N&q{yg<$v-$7`)_+g61F%F-{G+Dy2y(nS zz8IXy!040QKDoR7mjUFz`!3nR9NlGj&&kEhKjw@PHyqXG30ObWy14`7<=?hmquUmx zVPd>C|0ERk1N1i;`{n;xMl1Jm9QF2$F+LTjYqLqqu}GZ`N)!j2c7)+XRwc2=bIe`` z17U=~x|$7os16G61HoeT@Wl$-E7i}Q{Jp4=)o7(#)eSezOWZstq`B*O8UC(b)G7y? zo>;TchH(8Muxna$kVsK@yrao~b^>%E-lj93y;L;MCic)RdP=utqika01~{R30sE68 z{t}m>Qk|eM&9i+Xn5Y#{Zk*0ArxHu8&it@kC1PchUOhXQIrQrSqU?lC#3pVL@75Lj zJolCQe{a@oC$83#^*;GnBAJnIJ>3pl9nUKMj2U{{RkpG&$ti32Vbuu=Vn%$hCfb_8nw)}VWgJD_7u;&`MVx3%h=g_R~{D@p9`kd)$ z<_POxBa`FJiUW$hT7~qc6vD)jP>ZmKY13nE>O5nwK4}qzTMkT}j3Lb#avC0I;heK# zkk{fsLoc1Mr4w^_dFrFLLTLG6(zitG-3c0^u1vJo}sR%nhOF zKv}p25SM$hP;o$B1CO+PH20d3aS~wHs>6CLos=a*-!gpcmLdwQk%CVBb?R>tuPX=R zDu7#Rg1OIF;Q%6jIG^^>pO^66!Cc+Yy4CDoI$exV55{Qyxs}?>%daa&e<%kU50|^l zn@;32+KGW6AKa{h2!@27Wq947XXT1}h!l0q@Y?dV_Heeas94|mFY)4sn*b84OG)A^ zfc^1bmsthW|k@=|qJ z>(!1r-K#2J!2h~ICQ}I6xTtZce!^xBJia^JO8lrFt-MqVL1J@ z)hIkEP1SO=&j5@};e?Tg$+$D7Pbrl#C)u-aR=mq16wlf;6I{_HJB}4cw*fC>`jTFu z;)ieRzqsSTd1)n!C32XM_*CahsH3&%{IYZ z4Dx@B*YD+HAT>`qGHpj|7#8tEK)4GOsSu;(a@4?Zo+z>s64B6mhYf$p z;nVj&n_`gv(l?yPF>hf#|E36l{d)WrkmJ<+9!Ry7KTS=248RBlukTF3Jp~2Q<#{%( zLbnAMJDiK1?ax(o-606ISV}<(}X*_Sx1o6|h$;=G})gkstsmc*3*&=*dt* zsDk*@9RE&M2Z4R;ESylZQ71POUf+(MO}k?6J7wVvoUG8duq{cBuRsJAJ1Pvl1X#jw z$kPd*C2l8!;s5N8S1&KR)VTq?Y0VH1kfo;uJw_~#MxlW88&~l*J#m;rw zLD(wxK8#2(oCfGHN2zw}_vQkc{lSl6J9WVoZ&Wo}$4tV4@%{^e)dirUT@1+6t+&cv zZm5Hu+7|aCP}JN)%$VFm2y_zCX=OPHgkS9;%6vHS{o~=QH22MT!j)KP_ix^MuE>c? zbN@KIM>|9PB-`A^921DK1jV&zLSnD{%0`hG1})O2S&Ht!-=zQSKWK9SboPfL*WKVH z=I~dhDw&pm85|3~>tL+iCqaEyRmzt&hMiOO_)(!QHY3GSWKtm|Ya$QZqf;q_Q9u$S z^E+1hrp_$F$CVGr*UK$r2x^MyA6n&-*$aSkkNYcx%7vfeiJ4z#zWDX;2-U(tm$g6A0HjLps z7VXGDhAuD&4>|lBFAlvPd$1v~zKML$)yEteULn91wnXdfaH4fx>*RS#qie}z(=Er|m{4=F#*+2oNZTMImKBfjt% zo}HSS{L{d`{fAlf;2xgKJ5ppy!2^xkXK5QdHzEB^lfE{UEy0A3==J?h)oEm#LPU9tG%Cag5VL}2-4Q!LLaH;2yqfR|aDShF zM+n4OKe@U5l(Ez*a|^w*U3~uUi(Pn5u*Vy`M$ZC4hlhg#(<{lX!+z0kWC81k_gcul z6j~6|FY>A({;8G@(7Q}asEmuKvO;~#;#2+!1_S9ij;jv=CzW=NYcS%+!#NrlLb$I0 zMrXx+y2p&o%@yE;UV60;gRe{u+~J_*FVD^g78jW#UnR|UC>Y>!O%N!qt0LN_D&ynS z6^(LbEhAoqloN;3&AqT$xpRt%q2SRVaX z81i&$2T%~Y070NY?eeSe+m{JEzX#+;M&r91&1jqEzjU8z3)0!%O&D$!$K|BviJ4JS zsW;2KbTH*GFa(@kcnEvluhh6*Y~S5XNyA=r+O~gs1{8>Bj}UY;iQxh}G7$b$87uoQ zeA$Wm>++G?2(Bm)7v=l_3AE319UqyG*cX6Z%yBiD9mU1$>&P8P;_RHdrJ~&waN5I5 z%|?<|Qb>nv8H$J2HURe+gb|>`9odt7tsbJ=CYjddb>;SPfmmTF1QTOIk7!-{ivBxN z=lUTjwn2@zx8int8unBAa_@tVW0rq{re40ZA=ld_BH61=P* z`4)j(StF44Q%u*Ul2|oM@j%m`oNCtr-DLJVrMX&*Ja%Yt z>Lce5S17#U-`0MrQ6i;2?h{-Q?Rx>_)yW4Q{4c`e| zBh{PvjV^7vNwJ7H?!15qb_R8eqpY8f{aI}JFY*M=xfD$^pTD4DP;;W4$$QAbY39XK z&PYQrjP;S`&ZEreVbT}geZ^?2=h*0bPXm=l=MTOO)FSZ_sO*uk7YRze_TpZN=PM@o({`5YkVoZKQ4cL{z zF;NMi7>~=XIrYoGQZG9u=~i(wS#yh#a5#M8xXwcDOVIw|?h%O?f70+^P)*`jEQ}m6 zVl&q&&U%b|eI4{V=(Ax}aynNM?WS(9*Icki|3%>1la&y@#kwUt|Gn>2{%-^(o~(#b zXSP4{Hek)_1_;AH_js3!5@GaLEkfr|K80@qYknH#c|4tsM`Ppjc5M>!vbzSMAh7Z~ ze)hIs@ng2B6(yU!abAXOE8IM}K(!mz>Olki4I$<|{}Zk(EaXMNVuZI3;ZW(uCr0bl zn$eZ$#Hq7Pb106&R=Sm$LDW$I-NF@R<`O@#ud9H>>cP+>RE+LGju`6G(}syt>^k74 z$kCLDDk8xfG0vzXkxJl(*YU#0qV-)6kO zGm7n@SSOA$Pn~OJGF*edZ>5Jg=$xnpJ85sGd!{W9mqI4j11OL;?sPct`{dqv`iZ&e ze79xH4DRl$sXyaazg`$l!HloeN@I9@9iOf}VC8Z$(+53(vUt&5-t0r*#G=`Bc;e3f zzg!Edf=^})w?)eB2m7ibN_eC7I)!rDBym*6=_vArjWqj%i14W$kacxYN!9)dlHwq^ z9t_5yTcQ!Qw~~F0C(k~Pj*7=J2MNuExBa{?cw??KIWy1l)}-b`etw-4PWUa2#;)#j zI1DXM1jDjNh5M=r`stOkCPX}fC$$(-a&qW4St}L;T2-I?m#OnJN zW#3RgNh`7~wqC1S6Dz)3f#DNH zBWsc8(0zvV`5c(OM{P*O)=!ViN8VWnn+;G;q-nh%yO`_nKxrdP6CG`GPDD9RuLwmn zL3>Uc(&^w7@MgmTcO*!>Y~t3=g%%1Q7qzqPpEVAn2N9s(7JM>ou$Aj}8QHgF+EAaT~0`}@|A92+gTwfnQB?Bu^kq)_JRu2WlcRz@XuQHA(lvf=&(nfR%b zCzqIocbcX~9M;rReJQr39t+vZ;=XEO;)o$rBTI|rPdG}yi$!}6kN?`{XAE&CWc)5l z9N#eL)$y9&I(AwuAaMNsJG6v9vMu`M^IvJ@R|_kWL`V##;wOcU&M4_LDXM2YU#HsC z`v<>bMtaFgu1aY&P;;ok^d)xZM1@0&tw1wmA}S{2^|JKQ{ZN41>)(MUlbdeuzF&R4 zbY(H}Q+eYl_!3z(pbYLQywmButNd^xElP%r`z+_EpcDx7SB~szo~rpq%#ea@;$pBm zk<>V)FZECiC_+jLNS*;H+Hw{!B0}!l($gF=C9lDkm2a3nae;{+OTC;Mnv%3Qyv;^- z)bRD6OD;{*27muFNL^0a3;uT?Ot!u|Q|+(+=J7xTOJo=k`uzY%g~x8021PVxuHX_2 zC|S2SK!g_1AwoD^WdoF)IcyC@f>O~}tS;LhvE?qVU-~7c8Bp>wU95CCvsBsvmGdNB z6b+tZ)?!yu`Qr6bDD{&~gXh?M&ajkm+`3=JMD3}@mu-6u5F8N%d|0MQF3d%%T%bvW zjoo;rv&&|(Ry2;kbW#G5x3RIwxb>+pq4Q=_C=N(j>vdgCH(pFMiNXgEkJl?AcsztS z60V0P4To=H$GLyD_4&7rIWu~h*QWklo$5t_t);j6x`VE4Bd@Ci&&Qp&M#OWO-%DzL z*n07mZi$>nNCG7)q4eog=r?`M*LYQz4>Or{abAy{je}vwdz~OnOpD)^k#g;>NF8|f zz=d?2AIpv;9WRA+oLCw+)0iX;9SkY~xzdyr?pL3L7sPte4C2bMTE;evO+6t)R(zLaRc`-8?&wF+_7*}cOCk^!SR-H#Cdqja1=M! zLa1F!Nc#HDb%2ktg1Hox732rmSUyboMCZRarUCq502q9e-^`*$LLx zd4}X2v6|k&WO|#KfR|mO18Z(R05^-GJ@GK^DPLsK=OS^kk z-xkdT39P3}9U1XcJaOBquxOBYid_I3=7P|H zm*?AK1t8aJg(*HZ_RaKJN0)nlE^JMod@o+d-0R!TRFUsMBK1NXQDw;A(nZNY;ljCD zQF}g`-GxnQ|5r+7*T728xiGAEd%8(-D}7}>`9_YD*B21NMVAQM$9)qP9dUCY4VHGu zQpB&CNPLJb@ZjJY6e*5~8i+!5)a>4_fFe60xlmkc$+s+M%kg;Y#LlxHWCtU*&O2M& zAt7Zr6`>ko28mt|xr>J0o%r||M-xxt^v3fk5YI7cLf*agv}VKf796iHBhjHLK4{>9 z2f_E2(M6-Wi}qVwnh@zAhKd{*=nH+^Lb?nDPVr!OYv>y*YfcU%CO=>M!^+&|zb^&~ z!=rgXby5H3alZ||gjt*)R`2Lzk=>! z%eDl?SJ5J13#7$ij~wx0%nW_Y_eSX?C%L-1A13S1rjK>MHD$_kyG9>m?EQ4eg2ocd z6UI$MPF4?CHI%o+D2X^2mrSV^8M1-(bEu;n7Kru1@6d&w6 zaK~;PW=Ku44{z>dGp}o0{d+ZGciJTL2u_wZJgz#uINb9KIUiEGH)au-87irL6A)3( zT_-xX){YAgxU1MB(H*hY`?#tWyqlYOaeEy2{y1-SdBmZ{*RQizXwq2Xebn1ZsaG*t z0r%a@lA65B&C zLnX@QlfG;7>Xyw5a=mcfN_bR5Ip{9G`zh4~x_aa?vHYMu z$d2nD(2a-&N+3obS-;wk|M2Y^SQzFFlf!1{UTnGlwQFFEE#v5==7PA0fg}f+qzEb$@@Rca;TWtm_WI^_0NH8D=T|n zVoh)8FTWA&C&ro~8-w=6KHB>Dn=g#)r@Hj%?mNpmNL*c!Y*&SS;(;(IHRptKg6&Vt zRrYra?>vMF>1DV~Wo3TXu$qOB0?mlOL`FhxO*Yy^Rz+T2z^flyiKBAzr8&PBh4eX% z%w@33O<`IiztVRUaY30u*u=C^nQf?0Nv?+gJ=hiSN8ssZ<%-JM4v0h#7g%Xoom*6< z>Z5u#OegLu{D}_ui1H&Rt0YRTB=D8~`6(%7Y4K|XPA5i-e#hHZ^H$^kYs=jEDze}w zv&IVd?`l_sQrDP1ioQ-%RZ9&sjccaaF#hw+uHZ&^D3lWPRw2u!^!wNYr}&7g*A7k} zB8Rvr$oTNZpx5JgU8b}FgErYF5?*F1D#{WkQZ9#|e)@Q6JRE&w_FY`9TioYmVbAE7 z++zHV&Qkpm>k~CQJHwY=*E2Og;Z9mR=g(r{_WRXe)$Us8|MUUZqs-I8uG$x^aBi+E zA7@qbQflMpu+XCWMd=GUOI*7-h2`*a#H;fVI*e2?$ ziLJ!a4Nxx!%QiSF!Qb6BdQ1$8DViG*r;@{JnS@B(>X7^rKixGCo>2yyaPI;60}l-3kh(H;tA#WKZg zV?vOwdqf_%of4jbomZvi(Bb53l*T&)$}|ZyC4{%jNy$`p*Iok^c1)GQH$0C@^GSq?_GOl(w~2azuGjSkbtLEhI?_{gnKL`l8iI~oy;|K{sG zFfsLVb?h|S<1am4y`yKXX|1%~uGLm1)+)#kgy0W+!d<b%ptwv3yOvxrj?QiY5qlVwkIbka?!?; zP_03o*%><}4KRzjJ;l-$?occX1pcHJM{ALcxhKz!$oMNh@L^sy&baueW|i-r1z&yo z0b6ys<Hs6udGGK2ld>yY4`&rbnM>J-DqBpnjqVdp0CC2ca_x14CtH_A& zFd_7Q?L?&9WUlzpSz!2Z#*{a zuvlJ9x@R~##~M(^idnLbIFD_MUbaW&)GdrnoCYhylrmSACYzwYe!|&tax88w73tKG zZYcygl5)6ML1A!GT45TnSR4d*ksqJ(P8tRI0*aI;G`kN3sT2*Vbn;;#53I67;IbJI ze6+ILi{xnB!qIQU))J%K^B>-wDu?Kw=%4MVk`lo>L9PKus7*LjxlY8;38X?WNqO2(lCHM_CiUi? zuNlBZ)QcH_AYsr-%qIb)r7kNv8ia_FYp-GQdHo3+t_K#PBA@%hZX>TW#*A}q5@;Nw z6cq*aO!8=d^GD?3*ed%I*aIXb1QoMa+L=P197U8sf6zI<0MZ{ZtLQ6|xr6qYn`Agz z{=xRWJB$#4@jHAE&Fb+s^Y`tmx7^}U;*4xWI5QEQgtF=|jWL_3JeG6Z;_tGc0n_8g zl};++c@f^%zR3-P_=3T89Ym2-D56Qp)%V(g>Yw&?9uViE1w(PW)lM_5@v{T_$0HjF zc|a8AJmV{gFkcuN0;J%&LYtX#y`}QXsbMhWiaVw~zHW$9J+5P1D;ouIzn!2E#O>JO zdP@M4ZQ;YP^7tY_z;%U=zWgEuV^&Z-Uuxj;>OZ}>oCfMB7?J{>O}TAYeFsyUa&_5t z-D0_p5cQZMMmGZ4*sD)l5OoLf*6zW%OGsI@@zmms;UO9|w1y zze`8XZAULx%wAAUJsV)B-}c?C=J4*4OK(vrNzxQ4(o{UM`qG=wqqHXxmr%U87l-Gx zZSyaRF7?bYa&TtaHg08`PudVU;fSOF_pG@UtVL<1K08k=_Ms@L;Nr6)1)?r~`_~7| zW}3R8tW{sT@b?b#$xjOT)bki>-MFps}S=tBPK6G^Zwia9g!m{wC4vF2^5CK&{fM8Ds)@;hxl- z8#~QPp6zV>_|b}s5H19wJFu$t(1JhoZY_bUK@b0@c2#L9r;=iqTin`J^W|m@RlRNS zFVp4*!+hTI_{xvPYwdZzJnlYU={~lOkKuvC?S7Zz{Ss5v0=qs1^{5sKJ|jk`J{PyP ztiL(Q>o{7wUJynfj;iU<%w2rLi|ywGMoob-2u4ioL@9Yls-Y&>6G2UJI>gPhUt+au z%?U`rW!MU|ufC_{uW$kb=57F|HSw|58@Z5E!_*Qt%D-R7fc2MMWCTT9hge|0m>`uz z3|zz$zN%-+22xYt&qoF_)N2}eUqrXTNDFCTTd z7#BJ1R-%&8aI~fOld3G$!h&oX6iA8!{FLJ9bO6zf88H*#(+eLS7{R?c`Ved{WK};f zyg!BQ)$5zbHk%q3R8@@4edCSX3*rC~Q)jX!XeKfPBC*jKo-IGqfX`|s!-C>e_~RfF zjEd@uLkh|{y7@lFt-XIqUMe#n718er&N><50!Z7Rwd^I#TxL34WR9g~lF!CQ85=Tm z4=CST;wX5_BxI5kC~1VD;AR0glS$h8)MYUS=3l>&kBy9QA0qfkq?Ls@9n8{4k6FL* zW5pP}&?ZxpR<={$mXOG6l4e(#2_!@wG_UUG>3ui-@7$tzWwVNE$$RCjv+oeMv9O!y zZ(B!v1QkzmimUzMipItm87?x78PIuD@g#}%TJA-Y0tTf>#hAD;vQFVBEJ7H)p3>Ci zPo{CSvL0{k6+Im$m9MpB*wNlkg`)b%39|=Wq2QPaXkBIE4nLs8^I`@?QnHn9ex??o z;jCbrCRBn0uY*8T%DSvTb*uvje{KYnEH?#?d_)H#XNHK{GhA;<{yv%xrTXTJ#2Puc zzalr1Tm>OhX2FG)MTAST=W_TkxL#cwO*k#TFSo$&0AD0R7j22*hrk#HWzSqAr2;bN zmE~Z+#8I@58K*$apRzOMU{TRyT6wdMnnt90&F0Va)2DXW0l*?Oy_-m%@tJmZ`BW&D zZrBvaYe~X*e-?{{hQWgw1D@Kcz={jChM+5HRGvBaK2t_M*M(t&!m8iRFx>?JRwU$R zyZDXY-5eZwa6`*rMQbx+rx{H-gg1?(j+7Kfv@E{b`=K{Am2u z$AK^3grK5x&F&kGR;&YM^XX6YK6X4a@F98`)lYP-Koqm%L)`ag_G<0xE<}RinE}@W z^{Iq7b0MyAuk__Cx%XR=op9=(A8*DS0@%| z^KXaNGjt@_cDZ}xwNJZKv%K5t>X=wz^Qc?)M||eap{#P-q?Vf5^R2+5DvQN8*C6^F z;uyW??Zv!!@VP3QG!4e$R|Sd+HlV85Ir_c}sd`k@D)04IW1n+v=*1)3^(s~&|2{!l z$@>)3pM}qcUYW9P@Z+25Al;aKT|r{%z}F46V&icRb>P8;^`sI!THEl9>3_lKry=uZ z?S>44?gC?&rPs#C(*=9w1NsX%q+Rz2K~RAe>lLP-1{4Nw;VX>50d#}{$HbbE&CxT_ z9-D;GXQW?briotq9>qRk`oeVgI_BmoTCu7uOQ**7!$0n~gr@XuOF~A2z9if@to!GM zcXJ{)#^QRMuGBaboT{}9c!=zP*3+<~U}GkbiYj}xYgE_pqf)upUu(Hpd`{qlOz1+c zCjx`J7p;khn;E~wP0X6jBme#(<{+5CMz{4L&nuau6ix_jp0!HSb(5sXTxsaQ+mp|G zXT)34zDdutZi4jC;5v|njf7<0qXm|EGc^eOQ(uj!nzz@q#2g$Bt60KvP0?rjmfU9g z3J+<-qh8hXOkW-OkQ@Z_ega^tqF=wx=GEtQVE+TTGLLBo1mfozP{dgFd;}2>js8vl zoYYOcWv@l|0BkfdS);0@Roponm@D>#t3F-6Z{uxM^X=rr8p%IzurT%-xp^|_aZxcp z!7=Bv$4O(7N4KIs$p3f!{3ZGHu9yC5?d+Qv$$*>Ki~f%5SrO3A7<1_hs^^q84&JT2 zr3?axi&hx0oQ1cdvSC+)>T?17f(5U6fumYx&OG!WGN0U5$Ao8tZ!URaA#1RKO}1 zMTQ&KE?(GNnb|Z=o3}Yr;Yu!I`E!UOw+M(q5tl}2^KEfA`|xH$t-gtS(TmS<3^O^@ zo}~fRiwwLIx44dYPcO?Gc_z)It&+ORdMyh)8W_up*VD)PHckR9`ka2Sy!E*VE8&U=S6`aKM? z&Jv|qPF^PuepWmhst;z)Jnz8&xP3~88S&4I^ffr-=Yc+nIyx5IE$=BGPug-1rPu3$ zx#B(+!k4p1omUJa%Y~fwer^B<>i|!B)LRcTfU!BbgSe#owLV$aRQp@sw2sIBz&8w} zsVayi5ckz;*eF&>os4x$EiLvZO&U3ha;Ub#=<&N1sF-HKJmis);{$wT{yx(}`7eLZ zh&lu`Tp%aPXX)^GXgsjb+o;%h-mWsloOTMFw!Qq`-*53IV&1(aL_{82{f?;> zRoWb-4xb0iU6P%|>{e@}Z#{Zilpw!x*TNf}Jx17go#-UJSv@?(9SQK$rQ6-#D`|4fOom!1GHO@Q@1Yxny4(xPPk zPD^-UVKA`8{}DTPMntgJ9Vph4M{8$0cH#UkLHReWo!H0d=vwc9&^x}%KRate!F?gA zbr-?3wW}$nRX^3c`AZW7HFnnCcAY}Shs+<088j6ZLWpg~kGYt)xw*W6xRp7CVk^89 zvGtZ`CtD$Y)J>{Msm1S9;c_!Cc0i>^Haq+G4y&Q*$xqth6cl|%%7JQMmOO#cR8RM! zn>Mkh=chnj8Huxy%g5C7?Dwq%Z=B**0PH0>Hnw^8WK^)hd9ZxdjdPKm+}uygu=~n3 zx!Y=1BElv%1lC;8IskW_mgbGRetlk1NS@IFj2Y}Yh0$SMU8DUsb|H@oX)1#e>jyvG z0t;kgG2#{2}OtcU?5dGEz?+Qd?bZLggB0sa^;bn0 z+(J%Krsv!8_1>P*HvxeOQg!8uke*L#g^$aaKC=tPcU8(0ksVKlcq=KsG@RtLeO@vv zha&;@xDf(A~&W11Q`-B2QWkBkR|@Z z9e0(F1wm3xtzD)x2!ZL?>#l%EVD!VVMqjc_!2B=fMLlyth>?~3F23;2F;(KDpin(E z2>o0#NYk(U-Gd0RR4 z&ZF4$)<@m-?;pAir8>`l~SQ3}7J_c8<{>%vxqn%BRHWYgfl zbLjrOd3slmD?y8~5Qar+v*JfR^RzB-bb4m`G<*%3?q#bxcx!Qg-EtFLlGBI*1;)V*YLkr#CM!8t1C=ew-KHeQldF8-hJY=lPvgq$s z5VR!$>ajkG*I*P5c5d$g#>a7Wx)@sCE)l?FQD8z-xE#?`52uvH7Ee+Y)(uTyYYfSz zUwL$$xHj#ZjCus2m+6hu+m@L^JMY*#Mn|9WwD0TqLBPyql#5 zX#o$W%DM6!Kk$SXRV>^O)xmWy5J8`o&LaoT?PeEYh<~>@PscrzWE%Oxb>FZqJWj0O zIwAaEbFCC`O(;qc@I(kBfWkBX&mCDI{69j(gt?0H(J+pjA$#`xvLzDAbUab*hfV<4H7Ggs~pHQH)5 zJBLxa?aV4KVr?3b{U>zO0(puWQ_ikvI7MZIVbPD6R7Xd8cEd$02Tnsz#n{k5NF8{> z;$+J-U#CH0Y;57P06JdXCQtGYr}R8R1b-}npT-EUOSNc&)aDn0%-<7yk z((`-ZbGcW@`{GZoEHf*GOThQAvRwX+8C{f1fVo^@HoMXyMw|zySMbgNR(#z)!TXh`r>_K zXIKE1yUr{~0`$19rk>6;hirsvxQ~F+-(S9bbP4*92pcW`{X?=a$QMoOZGtp4UsPj> zgx;llSo84P1$N%mu`tdoase2(=!mtq%1M*Y-m*{D@u!8y%^6KK8!@`YtgJelPJvJF z8zh0rnE9+U{voC!_#{A0I;%#R;K`RoPg3GsL*!SA+oJ(U*io@>8jyx{vUCcd$H*UK;iI$10ynL%0_j10BMruZ0O%T|YDZ zxw(!(AP}#&TIBG@US`KU03=*1{bmnefE7?o64L(1nRx}8^JU{E-T|H&>0)-?2-i8S z+myFWf2G(0XJI8m7yq}P`1zyOkJj!kd7% z_29G&2oQay4+8d&i^4VlpQkSO(~}AOTfIKS%pMK|7%W|^b}nvJ!H8U$^R-q&nLALB zzcT(%<}?`eH|6~1r1^dap(CE5)`<6 z%lIdwAR=SqKdhwpe*I!|1ex0&Xif7HF^3>UZi+HwjqG2$K-d|acN08rO{T|0p8h4; z+GqTnwI@S6Xrt&D3B3>3R8JhEWjK2WYgU z8-kxY&t^G#k=f+`TJY zd|#*soSH99_OgvlVo}wNk~w`z%0JT;%W<0i1ss99*y0#;o4m$U!_{kXpAzL5c+uzn zerQp#(=XBT+#iWCIkO4NW3%6Dg_9RFGZ?7Pl}$VgI%iM5B9diPww*zUs^+kd9RpX1yu7x>XC%kRMpAF2QPwAco97Nd_T>BJkH|oU)jzqtB`?kg z*qzS%627Dw4ygT%N=l1}^ey%mpwZc$CD^kWg2WuwgQ!%2V`G5kD`?Lty5oxrXi}AV#251r>sDLDYq9mfnbmagcfwR(vs2J+wSC0fu=q zrX2#q-NP_F4FBbrZkLdq>!)kBCZ2v_<*k&1DJ(~Au7boC`}X46I09w>U{?@IHL zsc{XqXkqIT3Q{3x0tv}?2Yy9x*E-xQ2INzvk^QJi3>v2`Ag1F~`pmp|>qFRXQdx)p z1A%ugcsG0(vWyLBe&@-Y-dBS2vUQ?w!@`8WjC^3HV9g^SSf*X-$1TH~qm4IU3!`tc zyDCv8`t=wD_j1V+;k$+)vblL;8PVcnuH|jBBUpBfZ(6k&7gWrWL>mpya2(^-$#OSd z#P=_w!mJRQk0u!5$F>>Vs?XLus581$Dw}%^5hTM=S8;uLOn}mmZ8bQ)+pn z0tmm9Pv!p~OXnR=<^TWx>o_>(p|TxClD)}6R%6$K>zMtR!+-~P~&h2_#&)4H|e>|T4xiTUvjiV94RzEzk$t`JnKfzUmoAs|j zYP`*&X*KPgd9}HKX|T?Sys46<;Hg-KrwCYjk#V`0-n=`$cvk9(m>xC?* zb*oe3<$ki@_rGDo)^U@?a*q5@;Mmt zMn+BC1Ti6eO7aoTuNXd${U#7^UCT;v;1suG02fW!WMsF~1YCrAWuG{9s0^^GjJK@X z20DN6s^|FP|MVbA072WWaHBQND`G0~AdYEbY25B0`sgSC%S=hhGDBHZ!O!6lB;U-x z-Au5sEim(I;FRv(?BpFMw|iVS%?Y`s-21gWJ2Q(uip?}>C|X8|eKsp9t$AW*w(g@f z!zQoNF3RtkWjVp1y?b$&y?!_aRi z%AdYy$!|9ABBkz4S+h11IjpRp23Fy48`ugYjXI2p6N^A1`F_c!$G0T+z)4pi)DXaC zB>GuoitIuyqQSpIU4HY$2Lyy%J z0QLG)z5>MSxh5Q0BB`)-li;PVJ8}j29)XW@vMm)?!mR_Zuf9^E37eE6z+EBme#(4S zxkf1b@f_?=@?NmntX$>nCl88}?MC3nNcR;nAH&0vJ0!NkN}nOH1Ip+8A%;j0Sem*3 z!dL$07Ldh-{wCl`+e|MQVd$b-aDE-QNqQwdEb47SRKgQN8T3{a zDtiAKC)L|>3CV$fdA;Q6EdR1z1#(j-kGPNM-%C$9VUx|$ZpB=sBa@F#r7V4;cg-w) zl4Fd2kcx|VXf-&K-@2a+6gHt#mPG7$ z-Qc?~DVSE$T7p#nFpJ?JLTuu8JUcw|;m<$K2N~sh)!xP$)kypt|MTfE7>amFKS%ZG zD&FBg*O{Lx!9t+3{6AKfD^ysPlN~B5D_9>Y^G%lP=WgsOmeBJ2Y;JPKeTO^nM515h zirN47u$@TI##6?ozR@kifl&jwEOV=g9nT@namU8I5(fkOkuq5b>T;b@quhLGOE6ID`ZRKD zqia#f`uaNk`_Y-{=#ZmmHW_NY_QS?+5GWn+*iBNQK(F8dua^P41y6$sxcR72!Q^kEwG+K=ds{(b1^@w(~opiL#Cku%W zdY`3xk-a7OhpDQr{tDfR-_xOa_SdJey%69;s6S?lC?!G40#aH8k1@=gP*Aj06+ZO3 zsi#GJK}IZsdJafPfg)}hyJPOBr$n_QoB;&@%hmVLxPR(OWhKs`B3I# zBgtMjrk0fVX0@2VcIWMRXx>X~4I0Ii*46dnhzXpkW9&5R_-m(b=BkZfK?b&W__v4o zw%Hk~TbW$?rB>dyh#Y4&7(UUnp1c=L32|%2ve!ow)Lf z+-LrzUEM#=Z7&`k_;X^N0TR3sT)|WNQ)D=g@At1f4tFm^HuudK+e+2?I$08EgbAUWDYOeVOpR_MuNK;nK9DS~vQ*CXG zxVobEoxRau39HEOjez%u>R3%v>nYfZGJvSFau&sT>{Vu7qW{BOp5x*a;ChC^S5~U} zdG}%P7(nv8oDL?me!d7rCkk}={}=#^{K02tf$vTX{X1YmCP$OOGi8eB*eR)FV={uB)eoXc-6 zaY-TXyA{JpbPAVaJSN?)${ANkmczQh3}lYOwK>zZO)LRuAMp$jlt0T2d+84#&i$PR zheJ{_5$~uR0OAFP+7Z_bF`HKbzEKt(r)ioN!3F|WXcGYoqx)L|WpQ=J2E#37yOb!4 z_F7#5)9L3s+^OXbNl}q-I7ov;-d%YU3ObgRIbUQ2~E30ODF1*Uc{vYB@K^ z>#`enw4b~jaB}ne7^w(fV1^@Q#jh14y)Unhdbz2FxBC7wx(=Rj$EPF*+9?JtSs-9~ zt4jpPZInl@osc}-@&%^gZ;;r>F3m&#HTU=)@?))W?yyhG9JK$b8ONJF+64eCoXc+i z<4n0h{i&+IM$?X;u8O$`x|xIK-Mx+6_6lRCHPh0lt-?G}-u?H%J0p?D&KQ|A?g1Mf z&MT&G=B|;Nb9#mV6OKfA6LR|lwwqS)Cl76gy zH!-=<%jy{^+1TdBRk6jP^!9VIpNsK7ce);c8aS2i=88^7xg4_CRqAe+-$`!fAES!Q z3!j3_-!D2c57omipZ9p2eGj)qFO_XHxPziU7 zT;>e5c6ta%ei07I$lc}=;=~en5H7mxag!kuLzA@cI5quu3>C)E!g;7yKCMO+O(Ye$ zG8SOzH-oGRcB(u5f@x>zh@b~N5Nf}yIC}^}MI_}&!IIp9>CN4A?b~_gs(Mx>Q?@%Y zL7jIA|IR2CZa+iWtUg=HWK^nF*d=b@&aZ^sX^{vHLO$fe?}*Ep*yBPE331&gf0+Cf zd}7OvgNkRjSYCXQ(IX^ZfMrL~GoF|s-Z(B%J+xn7S^D>vvPNx+u|F>+vxq;CR`u(< zBZD!_t1sW|06BV6YX>Bbd`5gm%VocrPrP@xwj_gCV(;uEFLx}n`?|#rCs*k>7d$Gi zs7P_#V}5?l`;}PYeueuv2H|IM9niMW43@KF3s}1rmIZx(>?c}xh;nrWY2zh+Muo&k z!{5-dbc~b5(0L)mEIVY}ThY!&l~XtV^hN(9{L?qh0}w083r>#jp-lMUSufrzQo@*@ z-s>o`e&O~(+{LQcZE)ywlZc4Fer(G_R2ab3*O^coT12AKpY$YXbE%ppl_k#z7N+E= zu_ulMSoD1XGct6Kn=k6!zvF3FJ043Zd#iZO{yyOf^qg@#w@eXQ{WmwL?{utz{{fdL z)#r`Vlm6%DM___*M;IKMJX%nuMc|dqY{c^R0yBN3n;1^m$onvoxW&P=!=k#-XvEaS z4%5S`LWn{R*gU`8PfXxfeW@aNJNZs0>hrN}7BTAbM-kc+eAxv5`sQ|)(^QorXen*n zNx0CwD>+GD_0k9wgeHk4+lfKo1U#ZpfJAnR;Fka+Svk>WDU>@Q&Ld}MeO=YCWs4BE z8V9BC|Iok0@xk&^L-GnNa9Em+9W<}Fn_>R=bh`r|IMA7B23mlWKnAS#_0HS-S4nd-eLWV4DZ9+7p7*(xk5n4O~e zncO#GWjV{<;Oe+2%R$S+So(=AcQ_-l)z#Q)PTzlLms{1n(VA>A?AcXxJB63NW}W$Y zfVQU6Q>JDG&YQm8)h`PJd%%8u$+0(dH@vG?#YGA5IRE%~1zyz0y;jp%LjqWr;>&>5ocwr4Nx}3QQhO0V-XPm}v|+gkbBFl?=J}Qffi?SDffk1Oz4k*ET=P z#jY%aaDASk4^Uvf34j|DPF zeFQjF?{p_C?2^JMSz)8^w_I7CL@sKjH9GSwDZZ-wp`Ask=Lpbc@**F9x?ta(Nz+#w zQrA;eq;N(JR1GI*zJ8~dIRW{69NQbBiu`O zjZ*g+L?mEi>*{*?K1$*atuHwR-i3bomY(Wp?kQsDS*01!Hm{5!S$W=f8r*_!5NP?e zQP_~);KtYbE{RUV^}F&=q?7%2_Dw(qg%*lVya&XD++7*_`T2jmo?0XUILSQ}VvbW( zyW*pL}`tKCY#;yWvSm19ax zS^D!Y;GtyWm_n)RTlJlmZ#l8o7(rA^xsSWIMXky^aeWdKWu5@S0t9!I^|P7 z*(%@~wy|27wiBM`j z><3~XGIU!$TVPOaD(QMDb8K#!g&7l*xdeqFBq@KfpuvCQ<|0WY7Q)5{fK$Eoi%5G- z93|mHR&gR6HLD^(bub3FGy@107Dgy@bhJmQ`;WNrO|7>LUh0a@kJ3;4A2j%W7h@k~ zXz+PK;q^JOV`8Crz7$EX1$XkuT{+%Pi7CuBuIirD{}Hf1*X9!R$oiFvll-n3IU1SL zK=U~sv;KJCu=~%Yb>jcs+<<dVU$CP`=8sLZPuQJHl$h9h$m zJofHR38GeI$vG7jah_JC$r?*eDbBt{85}rh7L$-Hy{;9+6 zl}xJadP{TYaYq;50~>KmzdOIINV#>-HOu_uwy*rFzUPws@$>QS`Z6;*@0koe8t8Vz zGS7C*IP6=0s4Pifbl$_)Qby-3_0564+44gQ(Yrd>lS*DI=j4n=pTYgM0Q~I51vouX z3~4YHFTgh9bSIgcM=$Zk975iA|^{>YlPWv zEqyUDBNZ1cX@IrLHqTkTn~*_xt1qVAqIfHUq~C<~h~TCT@>}DVsQfwqX0^w;07Ps{hI0 z{m%F;Rx%_I4x791mc1PLmOsy5^&@q;(^OD@lO=9YBWCb*QL@Mj(`bw4X5|s%tR}9h z&$%OgXT!`CXp8E*_qX`Vl08!hn-8OiXo(->W7fBn23Cc7AQ9N;1XXSS!;)yZX;%Qz zl~&e2X15&tJmNBT-e_>yQeqT=KuXBUTnV2|O{u6$*?~t_4QZDsJxt2`=oWge{zDXM zUH7cH@*+cnU!=j|7r0&7Y&o^v5t>6uKyo0k< zOvCdHKl2$qRUWB;!qx(FCzMUeu6L_pzn>n|p!LNuMcQ8I-Ndk^;GLhkx|e#`-`xkn zj9=jDU6F9+!rNjEPB!HsC}-n7f&~G}ZT%g$K`&?AQdxIbQI?m60(4%-M$Ar}r^FbN zB*YrOFKhycuf^rg~N3LgJ;-pgs#C=t0(2rw{2@nBRBX?-G-WHD| zT_C8>8Ri`0b8c16TvdNY<~sHK>TNI)7ZHgZIU^bZ$-L1rq`MwtDc&YHik~h7E5Oa7 zmL?>d0nOE84AcUYkJHW9?(-geXPnT&AdK|cS)A;Vzi=I^n1Tm0_fMj;^gcw2a~8E& z<~X*S=Qx_B&rO^z*_hfotIr{=jb{MT{?%^}Jy+=WpH-BUW=Dz90};|lj8Nf}SAB0$ zov7nHFvfJ!)=^%g4ToBsT!4;U=KpACx!tq%GpE#nWEc~^{A)70kJ+18VkEH6QeYt= z$+O98z~6iwePHg2P9fHp3v96(c`13{*4lXnQ>^GVmyr}0YqwFFuJ9fdu{fg7*^6tI zflzPFQVsLnp@cbsTR1ivhJ67Z8is~?nwjY=t_eMq+uxToD4`Bj=%d+ZGPgwr^7j6{ z`69~d1qhIQ;!04I4N*RCRP1Hy?dDZ+B#C{(!A-S3)?q3*B`+0DOuSHpXlSV`huudj;uZ#q!N*=jY&%FVG# z9GgGY2gtV`G!bpB{O!H?RP*m0|A>6{Dd@^xg*<#Rki-8It8~&VdvqF1%KEOcPc5j? zGQget_WV;6)I_w&M~LR8OlE4^AD=;f_l5yO=H2IgyJm(RUrd-28J(G)f7H^pp1(Ia zBk_tF^$x>KbEo5xTt6Hc{98-mAi!5OxTDKDILKxU1YjlI=CeR8{)Bk{2l(VJ8o2qZ z;AfzBB@SkP#%2+{uW3=a-!;vj+8Lj4=w4_yG2g)fgT<{UNVIOO8Q&B+I7w=eMuDk) zTTi26_d&)q;Gge_{xWA6_dY<&t0miaMxeD85Hgu@ucWRjh5Sl8@&Wj!_88nTMWc~X zT5|;3B-L0qo~iw2tf9MTdNN}F@AQpYkr1jw!AV) zEo#W_GJ%P)sa;FJ%1Dr2pfdS4z0t5gxf4F~Z2G=@|M#e}C-(fG8g$w0zX(cXNmflr z<$`!6x&(n{)zi-(D=7TluYu{YKnU&x*YV=*NAIM#%hrDd`sEg?<*yH0TaNzBb~+qH z>wl2p`Jm}U(6!Z*&9T#xxit!Vx6;K0XE_tf?^U zyR1(My>v|KIT@W$D+?%k*q^~w;%at{ro<7qTay4h>B$zQ%kj1dzTpAN&7{r90vZEh;JTxAtL^m`0d+og_c%!fP#o~qfU@_l?Wd>IKh z)nS}HOM*miFtrOz+RV0))Ql2So*R1Z)rqtjS*t{68|ToE;dY%6@G*jK zI-xgO<@zB8$Q9sCT9jfHQ8j2=p5|@#eVT*3x3;9#vu}nY?iraY=G^GVH=wTIoPeY} zG?TF~64Xm%X7aXF2P}f*_)50UJ*B?3oXGAptg*h8QfsE`(i$0TkqLu+E#v;C+HrH? zc43oW#VreI93_ydAP}V8ybfzVycv^fyMJ_fBU_^_D<|+uZyNK^iuLtI2j+!Z|6EN1VeR=B2=mVt#D=`Y?lR!*CBYfWz`K%6wK%gpF`cZO!oDNqZI zb@K>>Z-=xEI~@M_~Pw?tXoDAWc z3}`OvnHZWmz#Ee7T3@-O^!A%a>SS3)7;wK-<0;b^3L+*jA1_hjv9YAUYZTCPk>{{O z8%RvyX3_vuyC_~suGxDnn!d)guH=Gf8jlBMq9eR{zt#+7E9;OHF-pue35i?AQz zO||A5Tjn4i-q<1^qHw!>Y4!f{nOhhsZk0tBV1hp=8TB|#7<1(ylR~)y4;Wq*4+9AM zFXLC)ay-j^sJ6?lrb;mwEKC3TAe|mxCweDU`$>?h?1LTO`()AAUz>FtrWTlN?vk008TW=+~l(~eS()Q@%iyzruo(>bv}+*S8-gFuNh!t9*F4dHr_JT#Lz zRi7A;klH9KJlQ8OtsoWiPs?Onf0zHZJ`ZI(f z`qP?4yjN%mAeqFgihwj>;r*8?+<(%g*IR}2{D0*^}w#M3J?=- z(?bj59Bh#dBH?>>6g^=7N%6C}L7{dM9!Shm<*QpLzc%9uN3MHL71rKf{i>wsBn)w7 zH0l+4$7)Bbu&7Litpj-bIJQuY({WF)=-#cLGj<&b`%J{li>)jKHmtef-JG;=xVAOw=1lO;(7`T^oUNrAfV`a*xn=q-@t{LglS|}7Cnm*TBR3pw_vzas{e!uAc z47Z^-i=HC$x6Q)(-oShB1x!};oB~jMttIvKue}&1jHTL8&@2S1UZUZBR1aCqi||5r z;d|n)U?bVzJz|#s%c9Bca-TP-cR6snmL=WkK$~d2QhH_5zQkki@XPc3Bh%SI{4EYUtzvj3r< z2>mO)MD5WWJPtdRXdmmnd*VemsUM(OS9W}zw2IiNcP+mvk8~XQD&Dru1;wu{SYWZN z&;PugCA=ID9QobdQCAoO=Wmwv(;kaVlM;ORY9i*C5kWrs86k$WbqdGVU}eyIeZ(zJ zK^0#tEcqu>N{wa)>kTPI{QVg`+%zp0?<^-U)6dNLoi32D(1 zx{?sLFVpLz70Gp*M#H1l$QPLPuEko5PSmu`7e<0N$Uzv85 z(wzrof*rX0O!YmnI+)B|TZTzo2SDHbH+kOkivAH!g@yLwNB!||{AOov@omYE`SWV7 z=CNX4$LcDz+Bdl~nTWXYFuM|WokAhjiCIC#vvvwvG33v^_|BJ2$7RI7r?PYyEw*QN zGT#uNZbojyyB~^kOibCa+B_i;7fBd>O#>cV0?tJ9iMzEi+%xb-^06C0gtrbi0o>Dy z#@Qm1!j1LmJPDpe$Cd&0_+LuvF`FvDfO*G?3!laR)rUkx%~E~?P^>G;Oxu%8sn5;r z2OHww+TSbcmc>Aeq(xf6YN4sM+!cp3pMj@JDuL(sQumw0Xnj$j6h{s9TlJPexdWga zIiLX33E6n(y07Nw;?$HK4Pt!p|jKr8NAe6(u>WzDkm-w9DUDXmr9 z{DzWH)z{aXn-ei=pVBiq_BQF(3yR+7A+~OEIKT!{$uoB+e`5XQ7jw z5XRKb&#j%|2_1L}5TI@_Yq3LKriuMk(Gcen8_>NI8AiZCXY4h&cJ!K5bxpn}FPvOw z4FkCfb<;JRSIzI0z`lv04@<N^1hLn| zbO%E^Vvl)b{XtUXH~>POqK?iyEn)h$_rU7!lmaDKNrOqET40i=&Q+e;SCFBu?Ad!} zq8?cZbpbT_qKinRkjv~p>xZy`O#9x4>FSPRQs|(iC%swhKJZ1VH{f>eMP_1s3ai&r z2#Y-epr7O`|LjF>)oixoJ2Rehsgt0$biK!CvpYePf1FW1$HQyqY?cBdZ2>w~B@A&F zr=K@kXPxjz-n1gNPl_~64cYXKj0Wqcy*CHa8jHup>|AyC?mBV{Oz1z@_L0hGR2sj3 zdd}~tp_qr`a(xD2dPl=(ckjuDG0f||Kv&SuxR4O@Q#jK~vxoK=Wt&o^p=F)(09o|N zLV|>!$B6*Uv!e0WSc-ry#FSVo7Lv6@m^EcEXe9k~^GeU!&9XliKw zg&6g6JR+gOF`kw(2)%q@)N(K_^}e-OOTg4f(AHRNSZO$8BeY0Z@|Bt^nC=t;sbHs# zA4Co4nf!DeXGQTJ6D0{bBfZIa>6YLfx2H(g_4hk_!MB5w8X?TyjX#bh^Af?#Bm$v? zJFJsTCPt2A8*|#X`#l6=GK`1lE3 zwSA-!9)|7NurvfmKIy$oz1@7hDQ;VDQ{4|S9oDj*hcZXKQLp&rIyd}V0P^ zMjII_hRIr1h6HvRho9Gq%3XPR1lw_p+qz8*!s3 zhbiT+(k6ufvQqBC5}Jt~%yZTZ!6FJlMUIAeO3J z<;BtF%80`RaDj$~4IoYJExBvUzd4sn2Sek!NvI)400-*n%2Y|YW4!H#Fn5`Y*dO9w z1v2sCFlyIVA-9?(pFJUUbkS7x6ph2S-c|tO=S(7sIzK<#p8(krv+s@O9n_IinCPI7wcdT`n&7kV z80WDCjSt5R^Dl#kCWc*KTyMTFgD{`)lz7&FIPwP5N@6xa8td2RjzLYNtRcJwgh;MO zAI*vt1Z^O`ge#b<6yx}{n|LDi0)aTLUqY$MH$c<|3|&%a(nyyH5eQ=7BxyAd=_+N+ z%6jr(0QS=d&cZPo+Dx_%k*>Q%{X>Llx`c>vI6vm5F)9}Coh}dZh?R z@xqte!8cZH1mdu2{<~MJZk!geEjq{FNLafizvl$qSz6X3M372b0RpYAVN3KKvdS2W zIOs~Z@MUH&71&T~_G8YV2lqBKk0>aXDD0xJs({aS6qf}mDet2TN(9({pU6Z_+Ic7f z%;#-ZKW8xyeS~;@U1NuzRLu_BmBkJx(W=-DeH8ge;6lTgJZ&`1vEi$I_*a}O&1=!{ z77z2PqC7wZ!#s1lkwo%KN8Yf9`$CQTST2ro9=*BNe1#c^Zi`TlgIabOjEzS&X!c)E&)1qq@ z_LSa#4s*S|)z=X4j`<`VIbs+H+t>|K+&s>8CdXhyKNNngUbf4)*hsOw%J=vxw6YTW z>ka`zO50}ZRlQ2^hZwMrQtR%o$f4BK;50h%_N%vRq6#)wmBHa8KT61JJ``E|aE3qE zK&x7f+hlgJ8F%OjBpRg*7nSX9Bp5zHA0FLrL8*b&V9I$Xd*8`<45vW`-{Xa@Jzt4% zmTZ@Lut=3&@WZA@|A>D8mP-%^`TMu`(V}*2;LO_j&0~@{+h%yg^fn6CpUDJbr^wE0 z+=H`z=G5V>s`OhH2;&ac|NO38u!x+j!`CkZc$6MP2mbzjeSuHB<>B$rCbuUqqURmR zyQ#{GZs}Pis*kmxQxDCFHaLL@Z_nN%GX;{fgA11 zd~v-@;@hJ<-^>1FzS7)x`=sl0WKUyA!bgn1YP^eoBRf3cQ*b^>BP-Fp*nb7~Ec|^3 zAW>p9EK0u1u6v2tio7=trutO|681%v9K4h)lFoZfKY3K8o&-R%v>im}Tort+1u+U( zZ_0_U9eGSYhBFF2v5+5VzG-EPn_UHI4;qIHvIPc0w{7(J#=9#^rftrNi4P%Cdz5Z8 zpf@WZ4`+P~h1*0)-owC}+4HGw30IH`IO@qRN~AhBfBS*KQ1M0Eqd*f+_ig7W0ytPB zW&i2a%nZhN5W0deX@eKH!S{r%aUQ10bL&Y<^C zA<`6Hg{sCo;y48rTC>l3zi2sC@MyrMC`0sFB&~#z;Z`( zWY?>DY0oR|cRm+_Q9k+!PC{ZxG9zPS%Uyg(+p07%$E76oXH|KEyC83B zm4LK>wY9FmvY9FGvehE%vgQ1}<-nHd<8@=R4f`rF)5CF334`HgW1fw37ADo(d&%@4 zVb8T(yF-ucPOgY0%RSYf#Fm$^8FFAKf0l%9*RJJHz8#*0${S5@KKIUwIqAvLRbSM- z%Pp`u!SyJHYx~y*9Qjx97FZuwm|IL-&?df611Wz)hO22diY*Fp!hpE}1*zzvM#yU# z{Tm1u)~dnP;r82DHEeJMEmDFc&I9o42fLvZ-~``h^4{qoQm8{riJm5csm zO^_+nA7Y#Jkt;=Fa1&)S(rr=VxsviftCtSu$TJ1DyDGE}CI3rKT0+tL2MSPz9s6DkV?5VK=`PJwFn#ELNhFcj3XvrOm*ah^~A z?M0(ewGOxwTIZtYPfmk45VJM>*vfqz(|s+pcW2co7!w0RbXVS7gbx38{yBV$VSh2^d8XTQVm)xT>Cj!)!2)#O)YzV)EdxY@JiyH<#%c)H$F13>75y@ma6umA&Zd0 zBkiAlCB?7M?^}1c zM_pb~Ms3s?x8KX@I#QbcZ4`kuNFKF3EzEpyEW%uClKa zAeN5;Ut_H$1z?G`lw`h?VeG59X7FTNKS&XbzDT~D#JAyRINF|fTwmpV+m^j@3xFwQ ztL?N1o!86c{OZ_%gu|8!&PR2Rf9sQNM*d0LvOy{4Kryzj0=s0f5X)swSVmn+g5G38 zqKUbcnG{TngoR5=;+#M3iye%QKa7>RIm9y*V1bCLcHunab>M(7N&fIdTIh`_*tUZD z;9CMd{A*+CZ9vKTYCI;7&ZcmQtGsDIh?qKBF;SuxEqBw9hCK7D z85cTDQ@_~W)`@V2Iz6A0)|7|Ca(;BOaz9Ym+V7e9Pc3v-lLDT@K% zQwt@wK^9ICZ-r*as4`XaVGB!l(hd00jX#OzO*D|z=n}WLkrzZYK`mNZyld#a%N-)vAO7gCpU(2J;rb_kBj(iJ4wq;W*j%72m zr`L zWsd%OP|}p0Rb9)Y@9701}%HxpL-MOJ(Ejl!W^FTbYbtxhJuN7BOfxg5m@dsc4#tW*`f^ zm_;wHc&+-Al$(KbwR?5wvx08O(-6;IA-vEBKr3$T6e+1{>3^Vuq0S~-LlNRIB%P$Y zGEaIeD9#JWs#ivcH0VJ!CDeD~5m=agvl7(SkaTg+9%MZq(kIsaVFpGS*&^B=wBIKY zxcT$)nK#$*UmQ^c!UEeOe;g26_sF`6UGjcXkz?M zt*rmAtontPiYJwU9ab+YD7m>E&gYyw!M>Q{^2+2v=Uv19S}-7?$`VMPSF&B1xlk+0 zJL|fWQnsu$D4sF#ua;(drFmUGuA7p!;@M(1=DSBT|%SU`Tc>cr!FWANU}BTo8%N7u^J{xRpg9x{F>2*(f4 z@0+qM{vTvB(DAeB2-Is(3WQ(Z5(d|WoTLhbih9+0zk2sK^OtSPD3s1l_7>styn*vG z=+W?#1`)+qlG$)Y zc=1&loDNB^Llp6O5G)In=!XF+x?NN#p;K>;CwWWZopdtv1#KeDaC!{;;*3D)%!8e` zzUtYJiULL#96w!kH$d?6Q;1co6bnS*0{*DTfEK5$;@MXJIoNS0EaQ9-br0m?YuBSOu>^6w@R1vBxu0_ zVxwdYe8*!E%0ySnD2Iuk8gZQwr!WyJX=E3w!u8OdDQHvyhO`kxiJJ~#e22;B9 zeya{Q|NZ1d1K(~7Wv@SyOJ-iE`nUik^1WZzpn0b7f8Or&ifZH-)9+B@n4whqpQ%+< zNG@wrACt~n{F|3SgTiO0wd!XFpyzQN9&on0_XND0&f#IqW*dQf=^Jg%=6LD7IsAoS zzw7r{aSQ=Ev&QO`g9FNEycOMoHjlbIl2_0E$e3`(r26ZQ`vNuQjbTGatuk~~oQW_Y zVGU)gCL_;^WX0T?+A}d+vVpyYJ?mj@RD<4_Hm0>V|2ut3O7sk&{fUdqXPi<4z;m%AOLtci}eU(qL8$w`ZABthA z4heh??po1%RMORb0_Y*{Y!OX7e09%l(U$sO@TipWz(yXRuPno}N;28J?WWv}4LiSM z0i*6&4V_)J>1Yx1>X4RZ=sMbro6`EF{%r|Q=Sl=KYE%m;hsaIWoT@H#`Xs(!F_}5RZrl84=K!CeahBn-b zo^NKTwX9XRwFEe8RW2@Z&hB#!oV3C4;b7&~r1agUPWsQs-hlu;QH#;6XwcOX+hp`d zX0O{2WI1s^d>0fP3ui?|UIbb6bVu$OK-7m)le~#%k;6$%b?6;t#zjt7z^-q;gBXcIwSQFTsa*5Tzq(P(`}!K`jk|Fz z1UsXe{RgUaDJK))*8+1!-&RcCY5EB&|G^XbURP3A%!l~S*B1Y&S7@4!4u9Bd};aJ5Wu`B@7v z`;+U3dWHI|D7UwmGVSdabu_TM6hI_HT8MTIRL3yc=Qp{`H0!$PO(xtcgq~3u}F3)|kS9FjFZZlxY>+S$jazXy-vP-Q#+OlWo{+r)`Z5);| zLZGn3%lC8C!Mh|&iK?i;X9B79ot>HwRAaGN_6+s!G7Yn!{_<`UzdfREuktC<1)a0L zpOx_AN9|hqJ4+Vs9fz2ChstP!D$?fhB|5W1GwG$2X3`JDHlYDb^&v!BE0OYEA`pX> z%#w1pua9%wH9n<`pS?bSzl^)ay482Q?3%4rl&veK!8SdOoiwDb+rtvN^01koQt0s zUVc5X44o#OEa$!cDt|3`c-Cd`|07&)qQ0*SE}3xr*ZRZqY^WA{w7~(};MIs7lt?i) zV;jFy8D)AEo#Wz?oYM&cJYYc`&$8L%-DS&Vfo1FE`^%QIta4+yJIATE=)U0-^h~%@ ziwy{VFPR87btNYB^N`Vv-N-d7GoZXSa>l(WX{xb+xb)`FSqhb<_d5Y_ZafEGj*TnODie32(;Nm7kC`3@MubpKWSE>mL zTHUAE^g@}L!~~;HcAUR5e)C&(uqP#JW`;V*M@IHwpTbmzQZjfSdDj}yHhRO}RKeU< zmTc7i2JD(EHtv$7&W!sc`wXppNoU>heEL)j?7*+2fen@msJkELGVg>)c)Yc@E)JX9hQ z{wkvJk*4a_H}Kx8pWQ*5i*wN=xU<0qqa|Bt2fj;F$X|Nl7-$H+M< zL>wXs2@yHS-em7hk`<1GqP7kcF9)uo}tVT{qFbY`}?`WpX{iMsE8ELVOO-=N>U7}PB%b}gq!tbhY^~zx! znD*liGKtV2E5$qV+>Y#Uef_%#Q~mB%GQG!1f9*`Q%hx(T#i=-Cb-7-}Y;5ArDWdP| zKD@zs!v7_Q&;9wqGl^1mru@dKjX^LcsQKxubuO+r%ePsiH{^>oB*-JVUW zLxOZKK;+YL~rPOP7!GZg&3nDs3^cUoqpZ4^Ri2AY@G|n&i zHCZyvYE(ZLUAcK@t-E}%sBWT{c3~1@AD{E87jPPivaAVm7_wCtW;fYl-gYq@i+6j# zV~bEK&o6?PLXbReKW35Cj`!ms(H>$Z1(ax*6 z-yR$6Iy*fkw@2VEoFIqHoMLxW&ke@kr)t3N9l`nd|UZ+ueVHmCrN%ok6U zZ4h8SFAH%v?Z?+F1yySG$w&ulp9|Q^6dhpFK7ca1QYel z!Wp|{INz?Iqy%Aj7It=bv1oe~D^3kXiNZxun1}X2y_BMr5oe98duKX26%z5^Kap)# z$LM*0=!pb`L^ftAi-3&~PweVWwM5(wZSUywnI+sCHy0;ni7XR=dW=)st8X?zm~6O8 zgTy(QshL?onSYB**w{T2o3J`(spr-#@_!HC<9|RYX2>!Q)s?EVH5X^cN zKZ_>j*Kn@Xw|1oP|3@2HJYqlQDw?~KS=x8|yTrEyn$;_qZKJ<^v+<>2>z7$|YgL3f zTzzG9LIBQse`^DC(4>#0kyRP{HtWXJOVS=>b4}zXM!yw#`4dlw%I>qN&(FX9D?UkT zU_ii$ZEd^$rpp*U9g4JbN;!#`05#KiP`2+*a%}W7iZ*WLJPP~v3sV3&wfM%a~-=`N3!;QEWvp0Z~PqfV+(^b6MFYdV^IgxVlR#4Ht^BPjq8ZNc{Whi*Iu`=tMulmvC zz)6yM>Cuy_T&$&bAmRY)xq7fb&$Q#q_!~D_;BF=+Na)fm&_16Nba+tRGJB~TZ(P1$ zv64LA*Ud?{+Bp%$_tN2`aRc9dnunx&QP*@fiieDi1!f6!k0WFg!Fu<>SfjGNvao!# z`^oY)L?(O&CW=M5={twkRY6}xhR}0^W=ieDY;?8b?&|P&)=G`Imk3L6+LPk@AK(n&KkiA8yIMzHQ$>a`CI#?qS-AT9 zy_~jW^>-O%xi4IkF1+RGGW}voTDN&6LHQ1{7u*leX2C*ZmRN5vUW9&iLSNEjyLDkq z*u3JMr<+VhwWbfAh5tb4{BO~f<%2oPi> zS-2eNW($b(B4SVvqdu@uG_d|6fVk9)ak*G{8Ir|6Q6&4J}r)|6u-Tsre^?F znEh%x(Y)D_vI3#0Wphn=NnLH<#&K*T>l@p|`+7IZ|Ft!oSc-ce4$RVjb*3Cbgh=Do z+9UD!NPYo#y45#3{Gm3^T5bidquF*l+ll9s+#HqmiFR`ZjUVNks-imk7UqiMP(?L8wqY`Y>0A z`XEAp*~)5kaLwfq|I$0}8Emo%`mVBrqn5nrnEi{OogdbY3;Sp%1e>=aZ8 zqaE{vfZW1t62^^UXDVQ@^GXfxKqNs0kIw)8A>3~eD7xgmiGhgb3?WP-U^zq+Ai?s^ zAL6oU4|Dlb%kqialsKkCLYmMJ!k^(K&Kg z{35R)jdf>?x;YgMz>(P3ofsODb^1dWABDm9qE2NUMen&#?!EPtbsYZP1ap(!N-ix5 ztzvP?6%mG@rgl*u967ZXHhC3zEwwt#LHQp_FSzMk@dGr2XlRMFXWNA*)@I1~-Vd>- z9q?V2GwSrD-`0CI=IR{P-1wvw-)eEOdCkrMdr!UZ+U zq^W`LYvapB^=sBV<-A4E8VSI42iPLexSjue^3al=7_|oo?dgq0J%r!i6y*5<Bj zTy5Y>dD4&_B#6l+*3Z5Raq7O2^?adiR)Q1*VOuVD7#$h4n}PBj{4hqp-kXWv;tF?U zR8;i1|4L-Y5_z3^3<*3~5F&F3I0n5SWWb7bt(^o#1>R%sHngAn(%H9dy;P#u0imqJ zd(%r(OZR03wekJD4E|oayi(BsKoD=iBAQ>mub;{}eaQvmw3Ea^2j8zRJz21#W{Kf^jXdRs!OdMXKqp6!qn(NAC>`k1l1qm9@# zxoNL_d$!0yl@>(%+&oUx9^%fyxqg?e|plJ#^tTRW|( zv{BAXQ+3Tfm(i3>PAFdb@5={QqKg;3?_XT~pgr?{d~mVJqx0W1aoqG$vby#$@HRY| z7^E<*Omu2BW;HX?Vm31~;aV^>VOucPU^6q)Wic}_usz=n-v(zeFkh+rJ2~LEE|RXi zpcp?_>3GIMgSHDY6W#Ck?~9MGT)whuOs}sqE@;tU6Wmql6P5Q}b0*X2fm;Qc!v4Kw za}OP2x3}|sp`(*rR`xT2TIYQ=`2>WW4~`^BNbVuP=+DPoVo?&qYhW!Aad-R+(|bZ| zX?;d>X$TS!g&|18&QY;R!@gV58wAg@sMB$lJGCwjro^AWN&AEs)_Wn4#1Eb|cXeEg z5*{~yaeFK>!{vDe0xN5Py`8ZK)iw`IXF^NN_JaaWeb~fGQGU5C#$P5oI3nvk)7*QK zhcK^4(GBn+l@3k(H*d@vj7ns{Kdj(0;(8^8u?|w$&qV>^(49q}7#OX@wT%ig8h+mO!OrQwS1CmJkSyL-vy++QMRPwhK$&;uSANsnptQUj_;`hp^IJJ%W97D1Lf z4QDB~#j&Pa3cGwB0!-TDe|{^2qApEzG9;`%SyXG|TZS3)22WYszIc`L)eP6*s;gd` z4Q3_5HrnW%MA&MSg2n9`ADnRv=&He)H1~3=S_ATQWU7%St2cmN`5p_gTfb)@%3p=9knOmC(i0 zNxaOx5D?z(|U2J0l??)pWBfots;vF$DTcNP^%K zzdAGcA=E|vPENieY^UI*EA#cm)06d|Dg7^$qGJ==#1MZ!8YtRg7Dh(0JA6CwW_@9) z)O(AM1Vi>{s5B)2+^cCU2~RNFcRy~jk+2Wy^{B5yKZN$O>8paqIF%69+fKwflmdd+ z*NF;>dR9G{&atcF05?V_=a+9@)j5fc-~3HS*W&nD6rmp6LFZTc8d$Q)r|BK01AA%iGZ(UC-vUsIJcXu z;`U>u9T(x;altxJDWWbFdNO^~szC)D(Dyc-p|sqt+BMr3c`TO4X!b{BA&_wGo+Eu9 zRJ)v2*&LI+mT_fq^Cv>|cG}JROz=m!ToqIAxfMKh%UmhUyT~HzLQ@&XPaf63H5FNI zG7@>r9Gd@_vzEc2v_sP59gZu{Vrzl)67|c3|F0+||4q!_TF?~od*jkB`TN^7)5;_# z$0GiQ-_#R&dJ}zmdgB9A$y23v?rj4{wTS{9RaM!nHQ^>R>Z5{Fd!t zUX40!mo8~R6x&|uzwJJzUnqSci!uGsrg^_jgUgdqbr42}6`w(~AJT=DIYN<9>gxPf zF+eR;)1;L&?m=41eQU}(M3@1BOuxyp1gqw!0jSN)(_;Wa(Sa~R=+H>is~B$AU|ep) z9kT1Jpk>n2Qr+-HblzgD9pM^JReubwQ7FQz_9(y;*3zJ5a0CSutM29ZruE*IXH8MrDdZmx5ZQktf|&UEWaCx9v(J&$t9^L>sq6Y&4K8 ziPFBNU#b;02PBMn81gy$^Ke(fhNW`58$)4?TN(?p#Cvx6wgLBGE6~rtb>AQb|jL zHY{ORDo$}W6uvuq!B9LWkV1#6h~8)Fr8e^U8XKg%ap&;ic}1%gM>h*C)P(?XC!T zXWKiN#=S6Z4~*9pg9yy4G5hIR`;8~BIfBI2hlCRKV;=>QE zk9Oq*O2qYK7xp#ID73FAi5IgR_y!fjNP=e7ZSu=lB%io5uQTo@`Fgl*dTJ%6i`N?u zy)$B=;kHeP0P3xje0O00gY~e&MVd_9r75F@qpZ1#ACQ7?x+@zF7-drDV?w>p#P4WC z9=!^W)hxvY=gGF;P*FVV|LKB5fh251BehGCYG(5X%}Q`n_~&z|>574%Rp0;4^IJOD zSap4zSyht&l(GXL+=B!=Ps#yX;b<{f5fj2n#z1ejPBC(p8EqI}gL zcYRu-)x0&ugpU=4j;l8a+};89=E1VaYUDzBjQ9B|Mvs6dtZxX8D1oY}zz$U7;ee~; zoGbfjP^r2dba?+3f<2-CeYjLdcU?NlaVODoS5z~(PuaeS$-#uMj_yU_#l2iRCq)J6 zDEKFk>zkgvuY&lhX+{sWN#ov3)SV_U2og((4ZhJnGE*8<1C16#%scy1<$ZGML*4nE zge?84VPcTmYab`mGKLRDJJNI9DvpFN`+KCn;42PtEhRd{#cgmSIgGj9$KY0< zx%p5Zrmsw4xtzRa{q7e1v0SMCdc+1*?3PW!He@7l~z2s_o^57b0X>`Ay zE-%4jyH(CX`_)oqdxYDgf0djMR?U)i2B!2T=xhF*Y{Sn^N`%1^+sD<`&()#a&tK)e zpEQhP5q>@iXPDyeuLm&*ky86Ld3(FH!X3M^_dmTWbqDiy5iWDh4lb4OFbRBUlr)?M zU`1Ae96_6UvFEv#FaesN;Y}xTG7RDA)PRE(-Eenr=rYe6YYz&^|3U?oA7@_1S~g~| zpwX`*Qsl;76j4esYpeYL8Ma>(i;GV)fJ;p-j0^%Hf=Ip9+vGTIpKpdBCzNugv? zz2WhN^VZSlZfH8>zJ8F}Vn{^<0R@c7#|%o}aw|}jIq_cp1ppI3f^#<3G8*D>{z{HX zciXdRxxP_&l3n;XYiwgu9#kL1nNFprLf>hzRc9%_zz4Ktpyzo$jo%ps6=M1L=&Of0;w=roby?IHtTs<-0!IpGe+73 zqmz>~8%p27Hs(fWL5>I65g^8Q_&@Me8wbnBIxA)D%CzU_0w@YgF}XC|F6(?K#yet| zRC6Q!HYC#4$*SC(J;ri+J(&7dzAxDxLQ|7G{O9IlEU%?y3E|_-pDxFfrj5GaT)Qe3 zhZ|nXtG;Y`Uu6$-G_K+TJ8ZHk|3fkV)_ug^Fvx!d^QkOPz>V{YzEdvzl|rw8Bd6lA-Kt2m<_ou2zpIkuvUYZfCH}0QBet)NlBqxzCvJ!B zvU~Z=TSiRq@-3y?wD#P~W$E=ra0cvcz7ZBu$9O*l+DR{cG0`PYmu)Xi?Y(#{1%Hb) zB%{ub8U=p#qU9gpWf<&9%0&{_c|Ia+y$F9 zLvE5q5Xd$i)w+B$G@QNUMk_bhDAU3b z`%(ZdyqVMKvu&`L(B23g{)J~pl#{|}9ui|?s+U!fJ1?a4618o9gu_-Za}%rgTXVtT zSdowsOef;DpgrGCI2?RVhkk^?e2y2|dUmWRwU7(BKG{3XH#*D+A)e~;Zbg*mm$_|K zHGw$m=bQd)L?}OQKs@_2xu5o5e+0yextRHQ?z^14COZTDgR`kbFraCxkQ~?3oupg* zGd&=DHoa|lb}&G8c5q+^V_eW@hp3-UV4<9hfH?TPW+Z!-8esr(x4I-)}$Lt{S>p>m`%Jjqz zpGB9rDHb7kBC7Ho5V;`9T08Fw?<~|6mn8z@l&<0j$jH}oyh!wye9aIZB$^h=meC~T zkQC~E34ekml^~tHnOE50i@Om5I6zcC@7oCz472g*eLewm}e=H9| zFf<~Gd0Prb?T5F7tWbiSt`FFQOZLs)*Ku>yO7j((u5N`xz5ghv2Gl-g)@w6l8PjFZ zOB{?8nBcQC`3lwzTlUgq1H?-*5Gt)nc*BjO-VVeRXvD^>ltei<+WMZ7Vqvk>oz*iZ zC;ht@Wb4c9P<$&6)O>@32)CV$0XNhU$wcs>>srLnY-~Iy6d~+CCpIcAbs1%Z2`vKF zPkoKy_c-0_32uq~P9xI-PIGFTMFf8#j`}{N_?x09YiW=9?6s!bd)!41TrNRWv1}vf z`u0~J#6uYN*-T0thts{?bH|*5KHs~ZMG%zQ9Wdh;=)zjQP&XGhKc+bRkHc=3J3n@( zIO!^DOqX93XVcT_fSW{mG!N}$x_O^mM$Y~*EPrOAWhwAv$V?OXyz%dRSC*}KZ+|Kq zV(M*Jb6;Ou!T!4icZ);`Sxv0-(|E2?cuN(sMV! zvrf*ir<#0enY~d^dwcf_CDchmJ&5EI?y zIQz5OyGp6WD9F}N^HP+bELF^t0}LK08^espxGr%1nxjwCvMEbNNpwyZ-*zb;n}6{n%RwI0wPI-CdsGH|m55 z6|7W9R{wkRjK-96b9v%~8*pwYnQkio8?~*vcYEo@^02j=iyv}wfLHyEZRwBfnKAEB zRpz{w;dTC7_T&(lM9ziB#zEZ96jsD6M*DRWGSAY@@RwSuvJG=-@8r(ct>0LB2D+ax zVJtlw44RV|M;S(CY}U4cH;bw-C{#^k5$yMAjcHjV6ezfCVT+5i;{%}d_5_QD3m#23 z{4dwJm-X?PwEwedL&MPJED4gu*MP4afJGzGXrwuAxjgUSL&nrly5kv5|d`daBDxEx-k5$I?eOps&Bz!RtMl{y!d#TVhi|3MWg& z{uJKPHvCk{Qa&1rj~R&Lh9W1~Mq#5F4-};3E5|)=0luR;_&G(t`>zmEq#3S+OG#TU zEgckxpxdhM-dgF7otiR=`2+z5}2DIlf+OI(06E`?)Gydb#Xxv(_vd1$xsHNk7kOQwys*q5pc$LL& zb3+qypMCST;YYasl7wZRT<}{6+iM0!q%fMh0$=0{^9~Q6TBdFMRG;fk4ESzq?m`9{ zl`}i`Su2A#5pg%looQ@`QNh~~@$a{idppC~UyyQ>qhN6KgQMDyt&M!aIgX@t^3PZR z&)njqDxt-#M%naf9J!?o{ON-x1iS$T>%)>91>McdmH}^QgWeN3YxveZ!ha7>g_(>6 zr%*)P#ydCLNj8T48;O5D1}hi!S=Q>J*M~>96Cn2<7ID#T0&n#osrRG2 z$zQ3n9ndU@J~~TZ9enJ*L_C9_Z*876BAYXE8Yo)CKCu-ni>}>1KU_U_CRf%Pu^g)S zVsJ6_V*+u~f^^r?ekMuXX%Uz}+hJnTZLpTMC)#_vmBNJXU^^w6CN(7&LlV&xhkjg*^^>RNpo6TA1ioSY}>I--i%(l1j~d zPdkC4r93Gm;3k?FmuKD|dxi6j+oIgZ7f5Cnywz9np6>rHVJ@6R8t&)GKD(dpmdj1e z`D?FEg~>WjIY95`)Pwov^K*BXsyIe&1;H zvTZc3$uZ?NoUj47$A{4dk|WN_J61nOg(Tk+FQ9~?Qgz-ZYC@$1Z0T_R*Oiv zEUfiXhSK%8HXfG6^MajD@Y>h)d5Dcnww$&Eg{vc#mM;1hb~Tu_)@A5v>pI}5F2#`v zUA_}N5Z^bpWzYtPAL-d<194gVMlV~8=D~-F4)9k0^f+q?i?dbJ04^PQ2ZQnQrDLJl z5sSfa2K}N13p{e$J95fZg`}7>eQZ?!z6NYnL-a)Ypz$`aqw@fM&4qy4pjtq)0^{_p z_+8sejS^?*{h7GY?2f$;adE>Esj2i}(jlpd zI3YdKFcXwudKPadIqWFe2H(qfqY)M7#>)tU)(7Lm!d(t`5y(9_x*EqfEW#8=AH!^p z&3IfM!yxZEp#Bn(Ee1=s0`sxjA`m@srBXJh6O-)u+JnAzzzN6 zdas2j%b}?+tO&RR+a*)UFt88MMTxz-&Aq)T|7$*6{%{VAhWg^;asvLCyHa$d5;-kR z1|_y@;WIg$PTbeVvoBIE2n1!HT5fTUA3(xs6WX&i2yX>^v7|=0ESiV51m+pylX{i1 zaH**D%IsDVY!u1j2e-t@y!W}Gow+_=Uc6Kn)`X1?ONI{sm{&dG&Y7nb6((}~U&F~Z zJtoag(h`7x3;n#k8~^T<*qv>Ihw{`K6)h1^dptkb)uStu2G6Zgy=M|JwTJ^QL=uFa zitW;{N|%^O@l#a}cU}`HmYn29J$w|B^l@Q9okv_>i(A~(Rc1)vQ@iJr4x3VxP`?l5lgJriSL=hN`# zjLHU=U4L2Kij40J;$v`7doUpM_jLXXaCmJO#SM! zz2=!W1LjX{R{k;0hYJROf^lUsC+6UUP-tp_Sd}2-nBcJ%vB<-6!YLvwZUiI~jjm7q zu#d5{u$rHy+)n5(;q4n{wwM^pr|d5m39%rg^RzkE=V!UdOq(z zjqkL+KNOzz^6WcGJ3SWIJYPVOU0-=(LLrg8$lhyxmE5$aSJI3`_UGq&8Ps?0L>6%4J*L$ zl9=SMGR4wce<@D*xIPs^l|s$sGCwLOWbfQcIvkXS+bW7!d4XL)wI*Flo-_#3Xe#=9 zbOt*pUufm}w}Phza2m5m8$C2UfvRnfcK(~KUm`{|L2oS^PCNu+Q+V?APv}G2v(dGt zZ*Fq|nni;hE_N6{b@Wq$pIMy1woD)exjVl9$E4^hFIcx6Em=Jm6dOn@u)fKZ>xiPe>(iU|Bx63bp(9=f8@?;XT}({;!n;s z0-T8s*{YIi6t*nSgD%YPbB@jwb~M3P3=os9t)ny7ib!^if*A7RAcEJAQHH52qcX$O z!}qJsZ`r=tI(Y5zwjRdib1#{6k8D)o{P?@{85psBAa8)K_FdmB9PMb$k`%(^Rw+hL zj8;JHG51pV`+9ewiyw{>=Am2rTY}&V7X=_f)f|w}!Xk1Q-Ubn+&d%=?-WdgvC0H~! z8#O_{G&Q@H#nO(C@#w50Y3OJ}%FI?R6+iwm!y93Hf1VW%yhrUzwhthPFqCOB?1NV7 zlq;t4DMP5Y+O=icH^Kb9R$NAP%{x$^T*x&ZcZ5T2yyglkA3gE zIb(Z=H*imvkTo}Pd2InmpQ!@3{3l2NT z)=%vQG}I}nni+A6n;6~SXf@=Bulu|jZt~UTA_xhR0QD{UDx$B0i4q4(e1pT?xyul* z^4eZ^;n`Pz*%DK-%%SGzCoJS`FLLa=#`6jlVcL-|QJD{^~gwaWx zI|hbh*10^EcS^@J@_Qcy-zbQ6TEQd2;Dl3s40pg4J~MM{@7-MUVk+dp;-*&{2^!<9 zuAX2>i4@a^zhLTP`)~>n&(h;_OO9Z1+sO)Le`gen+~W6%0%4G0j>ae9A411(%dI!o z#W!+b=_T-1Rm}dT&si$KSDQmm3009~v6^N$sVp=aoXx7JFW>Ej3N}RNSq=w}pXxN& zgP8>=+rUM_2{6A>TOG+T;TKKmAjFtLAIeYH+9RYx1bS%1%4Awn2e zh~z^Cx%yg19^qwBPI+T0g2ac-_YVZGTplE~)q{sf(be?lXmvFc^ZA9HlLa(27I!N8 zFaKrpT+>(XiMmOsLGi-JQ%9%R;z4|WgKV$WY_(nE3!P^@oBJ@gj%p=kz3iUu?!3~6 z<5t+WXNfL*!F)n`r$SB|p}@sKB6uViy7RN!O}UueT^Z{5_f>`Jx8ek|FXeF`H>L&~ zuhFmmls$G?51yvT%X@?v|K&zK-FKyZYApkaccqyaFgP4o>+F_DesDIwBC=){a8dnN zyq-Jp+c%&2rb5UQ6wr#pHsIKmn&Jlj;9Q)yoN(#lEW{Cf-!3v*+Q8F8CZj~AzM@6x zKKFT8V=b3*kHRtbH$@t5MQi0w^)xDTso}w>o@(v~j^30%Z%n7+54Jcc`cC(a?tk(t zeKuJi{!?M=aEmrZ)Zwz5Dq(5AY-zt7%&{_=|NUfIUvQ$20mc8~2+9v9%5|RVuYKTF zk8(TOpvYMgx-x6uyko5t%a>MVsiEBz@LS8Hj zzt0j;E+AA#8Otoe$4JnfPb(8w^mmM@d%Mb?KM)ec(nCGIw>b9ta7s;2IAFU_yys1$ z#ip(MR0x$Bg|LLkdCKi%&1$K2X6`@(=EZ z(bxDAVIZ848`#$@R>v-z`sFAwQ|mD|8Rofr@3xXF_Mk9SJ28q8K}AmVsz#GAVP$x} z)+n_&Gn>HX14FM>>gA1If;b4eWLr3|g4b3(w~3e8s@B0rRn$Wn11PhL=j<``iwdT6 zD+a|*JBizMEeZ9Y2p_2YzcwHgpVub^=^YgK?`S;uHaM_0$Z5aIc`m(XmbBeaHV=BB z$$A5VlaqAmj{t_XP!8v3Y4Xue7FJSOQ7j04!?c)*KsC_vpbPO;_=({LHAJ3W*U*al zM%~3pxXalH9g}?i-&fM1>Bn}7#=m^>pG_O{2=4ADu-S#JcAtZ7tu_h483fHYSsOAQ z6N|OH7lKLLeokdUXwH)ALNLoNBpJ@}fQ4F=yY|T!4L$+@VgukgNr~Oz4uTigQo`0Q zpn|t_wrl?c$hJd2V+5fXOF#*W+KZzVQ$wG2hMS72V&O=%f*$jCL3NGWnrJMwnyvQf zk?$@X2J&3cq-Gq>N`eCNI=?<)>#`mqj^-)zji|_FBpIUoEFc8bB!cUkykLdn^4TNc zs=M|Q&aa@=;Vo%LI(BX6y!%=VA3U_P_}bA`vo8RVh^RjmC4veyyk7i5a!O(j-2{!s zite!x)c1$?YKhsk#&{wG&^?X6H!p6Vt*yfw_twZ7pF7BI##J{NzTC9VA$+1ecI?XM z;1JXJU^0yVW;_(Xegi9=Og;545DF@E>Yg~a1fx37K^3Dh7kVH{yjUIb4}GqJoFrx= zZgLGwVJlw~+<%>ucZ#~vsCR6Hq7t5We~4yPU~P2Pn-95I!TaOx|>Je{bTl7rqB#S!F18TO@gi7 zix1yk?5W_6t>;e(@birLqVGJOPM=&+7XKT7XlJ+YH`>USml%R`@=b)^_`3+4RIVk) z_+e4vwROFIZ$NAf?p|}bS{}H$NP@>_x!!^@53JF+4odYVH0I^2)7DJSg67|wcSZS< z9qN_kOWcSs`Y(^KUNIgEih&PCux)P0xbw8p=;~~0XLY|KlP5FZK77EaOVby}e?tOZ ze78^~P+ROV7ZrWC%J0~!)9=FVJqsqk(;nDEY~=*YA3zh7BB2YY)K zcrsJ+b|PxURMXBw{P0`Pe``Q`3)!BUV^>&c{!T*rz;#qkHLXKnmUW@!P}Y0Nrtnox zsglw}@q+a(k$*uq9{zM^`LR5*+AlymFjZlS42%18!{4PPaXI4h<=Qvf7Bk58Bl0&# z%dh*4tZxb@zW^oKyg_Firs1YH>-r&N`_57 z+>o%a<$;6EY^&_`Al!3WaCXEP&-3dOqVm>3hT{@+_C>PYYT5EiqjbwjeYqO=aRFO4O5c8-X>1{@M{NaB@0ObPz ziKyU++=*Fw2$`oTL{fn*TWjE=*M7}Q<)b9h{!WB1PWW~c*RjAhoe1Jp7N4kiw_JQH zZjvu)=s|gZSw+OoZ_Uy1Tcd#F5%z$7jdsI<4Ez;&!{k{Q^fl{RnpjyT91M!bPkj_L zZpTQM1JiOKC*q$dX=ZfRX7wk(|Mq8DKgAN5r?PZGLgBV%lXtlPHC3CowFnoK#8(!z)jb)X zdzAbdt_6TK1_6J_IJnSazy+GTc)ge(O&|kx^RoxN9KGW%_uB0Hy>^$`*+EMNPCYMX zPmqmUHj;a#G~P;;zc~;UnJkyt_qhh`SJo}<~><3DG9R}&MweP z(y@MFt7F((BYD&HRiv9O)qA?Vbxb|+VLKHQ$;Rq;PCMUcoI5_s&&8+|5US)7L|bf; z5Cn|AyM2KHsxd|M{4Cg|RTsRid72az%-)$veqa!8_fm@JpfM3YK&MBnT<^5MOR8~&`a{^U)U$Uv>B7jjTil-7iZjtnZu;K6HPrPxqmnj( zEgIQ3=Q|2wQ*}}m`es%`AlUSTIP zw?PNrLzkV5^q8bzEMs1=dIYRbGF6GnZE+LwifOXy?|klEiX?!+qQ~Q5(EIAA!NHks zrr9LyIgZ4|572z~X;+aA_mDIAQq zQe4*4OX7y!nQ?A#zv<^$AJ=cz3lEc{R*`ik4%?wQ#M$up;xoD`lq;87LVMSGzx|92 zygH^kTdw8lUobrj{(D)=Gq7NC+~T)25K}VjdPP_VpyM>F;itHDGv&T46&bKjsxOjT&P@Fev;tcmIHOt%H8&)4qSc$CNI| zCH~b-Rc1%_Djpthe{Q1^=6*B(m@59JojEg~^eer5trC9kYGG0X5m+hm=WW2ZJHx!~ zjwS_}2)nfJ8wKTN|5V8b+D=-yzYWHoq$kv`5Mb^EPX2nnZrxgAF1TXH$#q! z-2ygK?P;Cwu;J=jcWa*H!-;LFsVJ?c?G+*Vm}n+D%?}jrqU^7MzE~(c*(E?!cZAiV zT>Im>VUzE}xq{&_mYPV0aT-*4+6{=jnX>`pUIRat78RdUnvH+WI5=u5)ue*)CG5Mw z;7>*(x{SSs`OM&ewOad(Vf7kjNs>$;*^VO4Qk9L-CFKtZSYgB5mwUH zm)Ps&n$C9MCRxxnfuf{}CDI1Q3+mA#UYo!)+2Q#_)8Vp)^Np_0dL+9Rt=f{)#z$>fwKM?z8Dp7Z~cFy>}uMX^dLXpR;l2Z)?m^ zYOCTy^XUKklr)ucB?}Y8l3-SvD{BojG?YyY3|PdyYIOpRe477j=qM|m^-Q0u&qz=G zi`auLLel*#twQ~*Rcif=)(*w}@+F6SN=>-Gk8;O*x(|E}^H~kr4t}b)!1mEz;7!GD zT;ef@fv%pL8dY=Z!w9QqH5ikTBB*%r{TuC7+AuR>l$&@JRXqE5j4W88!Jf=AFFRg0 z?hz4Sq1r_AJ=1Q3G(WKs%(Uv7l#QoWH0P+!*7=ClMRx^Yi z5(6lx)qImYoZH2mlG~y1Z7c+_>g>qGM1Y0SLO!RMz16ylMKTc|5}pzsOI)vmg{TvE zPmgWe!mlA+pK@=uGj#_ zJ$%aMzw3I8=Gk=h+OsKi5dXx@bM43ODEgmNh)L1ZH-Tg{^vipgRTVw*3%q9yHmX23wI| zuwRl6_+i`7-IgmNS+U}`l4PXqL8d`@tox~nx|An1S%hifVS7}m zo9|9fPEJfQ4i9-K6?Q8Nc=Qg|uiDReFLzBj4F_B_wTqUZgi!o!H4o3H`Q!=f86Kzl z&C?t>0ig#V^&B>u;b8UN7lGor3%Pz_=cilX9=yR$v62Aru@+HS#A|{PX)-?;5amCg1s_ts6{_6j0T5J1Pqm<}Rwu$*1BG z4Xn!WwFScTqGthre>$F-eKO=SYgm{44_4c^V0xSm#ee#APQ+lA0JuJKVvl#LAUyZQ zU*NB0^;la!Wd@hxStjD*`wc=^x{SI`1qLJ&97G7Fm8d*GH#rDsMqY|1!30y*z0z?z zi_=#gldcC8KIQ+=hZ<*BPV4WkxhmK9;Ui026+GO@2lhOIG5!Tu1jDHSMZn_eqFM9b zfIk}+tF2JXpVL+%7YDlWt&J54U)A|3^CJa$Q~Zvbj<2qvCM<`y{^*EYu}=Qpj3^TW z-FHo89RF+nVM&->Q_c&Hr|$-AF^q(Z5)ueVZwx$F0*L|ik3dGusfOOe$4L*@r6B-Bm-6agGY#F!JM&<_cw=vP?!cRk3YzO&VIkQTkZho z@!~R#=-Rf;JD&FT_b~-Dnr*kuC$pS;l&Un__UbZJ@^Cz^xm*IglGi08n(^ zO`pArGSV=xo`5>KDV1?Jszz{2NH;P4mdX6wOqO&$LjH63RQ0JSI~RjNvHj1u*98gu z^&V-QxP-V|0hQ`cWpXFLyVCLce(}_y#(wBIZC<51XKn?vW32#|e$BmHbFOS7>Qo`O zLRzJX>%;SfY&-9L{r5rCqpIwYMst%a)L(6jUA8>rOO4hPbRtmY4)HARq(ajPNtWfU z2c}wb|HPY_Uf8|ZjlderS7w~NAjnYhD6)2eBWg(VX~U}5kr zHgPWj?uD`6AcFa|1B9akcPMThedDxS%RK5O#jf~P)*D6Phn4E4A-!q~N_}ecku&_= zvZAd-?LqXP?LGYL-J|l${A8mqClV76c8`w_a`os|<>?+~v^72B_Gy)K6po3J7fA6} z#aT1;=8(M7x8Pt0KczS4;38O*DJp@ABG}RO8SUyOcYZSZGc89JoZub+2Cil75$L}a z2B53q>B*f?0I&)^Na(o6B+v1O?aib&F@2pX5MBJFn1wtKnYsyy%paiIP)3p>uAp=p z`khZrRHUpaA&MBM24&ciF;fwREpv9766SF_3HsKK{pW5-A6V8x!@3a7Vy$3cd^)?| zS~v-Eq)=`-4-ehYmi*yC z+8jsY-dA1w3t;9+m|KH|0!a0s?j-70waO_nmDl1#aEbG`?a;(BJLyBz5I`$ri?46l;IQAYHQGDgDea8a;B09&XhYt4XgaJP64{y0R z)M(!%e@NbkmfC+CP&TB0<1ydps^PLAc$b*u2xMJQdjZ~ zop(MOn}!xRYYqIErV;nDuFJ3EFd11{Aqc_k6MUG@n|_Pme@P4ISqy16896rbO_YqLZ6bpwxH1m%=7cC8B4(JRB0nb)mGWGRYv8o2llvLmO zmdcUHV@*6dw%|&t>iC_dq*KlCyCJdJZ0ou(!QBPUY-LyRGOR?Y;$ta?{ZY#%UWDv1 ziaF~1SM&6y!?a~XLu(ftF3+ru-$$O>gM}t-vp7iSCE6Km@Rd`8ha+-JYGh-~Ea3op=Uazo? z^v$dMnZcUu39Q5CgCWRj&)+8Cq^XBrA27{pnD}dOqtUf&#PGcIW zr2SZ43KapgOaf-bz|tWcXiFfk6cfydoM2j2vaom|XknqpYhldP4t9xieQg<4g>M>& z8`u(z>#qmWBD??X9dl&df8dZgoki#$7d?CzkfU@9a!}3LqL+sI+USNqKJeOK$Ie6CDYDrm7rnV z9pgG7@DNH`nN|`UmT?|f>5(3_Ts`&w@Z`Z$(xP|wffx+}ml{dy{J4zjEy4 zSNNn{^DA~9*o!QykkS@a-Rd5E4C-ou#_@+j1xwNuH2T^>z76qnolb9$UhK3 zJ;gbWZo;pP+LwutSyxoxQRQqMAD=AQvlYOY4hHXpu#)vEbLt*c6IExKl5g?V?J)@v z0@+s6CM2vNY46j%A)s0mi{OwtfW~*4!#$N7-0i<&V;#?-{gX|{cX8bxO#>)hwB8D~ z#~zh?_9jc+2TAg2zp0U{T`P_LAT9s<%k*A95L-0vel=Vz=Y=s`j5(c)3!W7uLI5F$ zPyc7~xM$4!_b#8nAj3_Pd0_d0j`Nr^1M5LjlT=-=#Ljoyjzqls`|E$~b&bk*OPnhb zxN;SU5c4g{ECw84QuTX6^rs{uMo;>0&$Dz53q(h7M&=hiBmmb)1=c$!d$YHpWJ$N$!)!#($;Xn z_Srs2UkOT{^fQQ*5CL~U;E*`1pN7t#E5Wa+_l5#>uU*!yj}^-R?KWuV#Qk)|x$<#a zllR>pv)ybY6SYvL8N`pjo99zto28wu1MjyZxx{}{rp9c}pB`8@fjpUKTBg-54W6ML zkiHl(;mB8yzrER;vaC>_l~KKV9*W!7Ql2$wDxo3283F?i?Us~d+$l4kKz~&FD`#E3 z7p^d3ARmfY;~fD#D{bY(Xgxd;oppIgf#JPCP>VqKpa_4p{2zxodd{MKHyiAOmb z#ReeP~X2RRO!XJL_9{p^^&x-%fKDyV5}$azy;qI+%p z7L$fjRktJ~Rr^+abnj9XO9&nf9dmRK^ifU9$7mOJ{?zw0eQub&AQVsHRst0N($~}+ z?@hiqZlSY1#;--L?Y@Y#IcA}A$1l=19B8P#oXGl|OhQpDcz?>cYZ*n1ek2A-<_~-P zf%IJqXn(P5l|<^{LmgleAolGLb8~qpTZkCF$f~@1fEK3&ly?%Oa!@Rtzr2I3^Vj!V zquHwE7Nqk^X7&VNLLniM)>@qQt%VoJ$3{VMIf6fIPab8xnkx#CkN#b+1bSnojaupA z&N%)#7B*?|ok;EX^)+6p$^ErCu3Jb`)0y@^Jo#;YyvkJ+UqfQ1)WDN6G|&2rZG zdAQUYt&0+UQq9ddCn1!8i4qe6r0Zbuc9Qf9Y}ZlFOAF6{S?VPJV->$tIe*Nf$ve+e zd)9vShsl{IBp066DC(qqyjpxZz&a;$CogZJca`p=xUE->Hey1#ySkJEOm}& z+R4cxH0*jW!<2S0^7DWgZa8+=JD~3GS$kH41W<#DBUw1Pj=$B5B^%7DBG+DxD1F@! ztoQRnVq)zpbAvPbRgnDR{{nPtUpBl}A8yRo*8V*lq;&g?JzmzE@Uh0bt<<^SzPoS7 z&r0U&CG6wzXDwVlqkn7^Ls0ty^`e(0Xb`Io5I%u*n;ibqAYC?}Db+5v6`QB^D^0-5 z>c48$f|iVmv#MQ9{||Kc7slR{a=|q)a(xacT+&gHS|xPM*x88Lzr*go?Tx)uRLiy>$wR(*jT?SCDl;D ziV{jnW1#mLHn{W8x50Ljhl`Lt^j+;VBNkm zGtHk57(-uoy{n4|J)`_qUHqZ(!5~nCjq*vc7-ixt?+f{?lqV}leBqrWrCgCjesb68 z7kQQRMOwblmsE{BPlb*A+poh=)SvF!HdV%yJik!x%?{xP(~?P~C1Jk_>s8=#wQGfi ztjHc|TV;a=9{N(&=5>d>4<=;}WAS`<7zA@SYR_hZd#3hQz#3=p%YQ{c#r+$aw!day zC>XM}?TL0K($a7UTqVEuDQu3+vJ6NNzYjGVcPdI2txKiv)r-Mnj+(j;u1XQ5j;+!}P>oYP$ z;xFYpvXRs&&eGOQ)qM@PlyjvJtcV~9d<(4%;j-nAj)*L{df?dkb$7}vwpN4Qc^OK| z@a&U6UY=Zr?B3r#1uxgpY@MmwDz9^&r&>e7Rnqlx8LUIuQ2i_2qQgAxbw|T?WiYs$ zpB~BBE5`GN9Qij~hN+&f`KW*=LBI@s^14p&<5p`4A$;2T1eYTrOpYLflOaTw(%bV{ ztn0H7SxA(OI>^&L)wd=roNKk-Qk9IM>Tg&)YM(MR+Dk-OiZjcSEi#mx$Yz`KWwU9Z3oQ_S3ZbX!JpVJ3HdaX%)I94xwQN1{+Z?+9=kFY@vQkS@#MLA!9)nL zJ@oJdiJdFuuzaBnTEqsE!eub2*cj(&6EcKT+NMo=_HZnG9#;)RV&Gl<9T5CFqc-&` zqh6~F_!kpj)VajeY z;paOLx8}vP_PH`>;GK=3SI?zhI&Zh*ZEp=OCV4o)9Gu8jo;5Vot?|;onXi+G38)Ku z76zBz=mxr6Ci-wcECj0dl8Dj9yE*Q8>T{iyv}?E4b@icrc&o|rNp9fTBQ`g)#yi*D zF)h2Hxh=jI+Pv%V-5;TNVsfFhaWQLG*@A<d-ru8 zm@nl{qghQ7`?R>UpZ3PhynOXBR7WL0T1G?lH^qy8mFe}wZ z6ol&8pHU-Q>larnl&iSoc~CZJIh>T|D+ocZOs1({Tin7_m`FO9>Vw>d+%@_`(tiO@jXJuJ&i&y`tZF7Njd3_Dn~#zO z_b#A5;Bq5zIj%j`5qyEmzjN6^Wn!9R~{pwaRa%(5&t7{+^a zkVk|?*qAE(iclPnjSu{)BlE8Eu1&J7z$~-m6GL?>uF4=`%>-+=fr-aO^kN+7_8j4~ zN9Lv^ko}^}&Q^Uzv-b+&jHj6-W)&{dg^@NaBzG!Xd#QKEbW75a3<4#4T>I@U972Tm4k7qHqHJk@h#0Cu9vU7krG{L-6dk^IjQ?Bn%x~yDh2$kN zlX8D^){=p4JLf62SuGEcjPz)-MH%U~C=<7xbLw<|2ixGdP>=Z$r&;&#K_NbI$O^w2 ze>#$2OLo76OiCnS&m6;9A`^FY@71$N7DHEWeB|8x#TuL9{skf|{Kc*2`S`9maX!00 zSn>^msYaWu=Nd|>4@ImylfRGtQ9@{ILvuKC!ID*~9{0i$TP3rt!vnEuj8`Brv>pNl!C_Z&Ua2pr`WjeJWpOgs0hD-@yv0r0{2Y?f0b zlsOdQcTih(tE)M-0}fq(Gn%0sRUx#oqFoq~lJVQ}J-kQvR~h8eW~+Z27v(V6EA`=H zrd0{@{+*A;Tm@Z1D1GDOj-Xk0S{Fm&C$@jqTB#@17nPe2wmX}|56q<_>TKVZKd80F zCWsasc;Yjkip*CmM$4`ptn3fD&A0G;$Ki&b?nbFNz`9%Ja_a3JIrT*=2eiYWb_+Kz zfm^Rfj%iczg;-djV5HX*c|D0x`(pJYv!OHrD#Um7LnC8Fwqp2?aWC=bFS!pb6~HxF zPOv!mPUql1W38pn22mJ|^{T)wZ*!~H6z@RGAPf6X1J;#`Io8CNGMa`nYAN}`C;d+! z_f>bc)SqiJ>?_Wrm?|k3SmN}FJp_Ab-L(|uLITcx@U5zq2YBvTFWbv8&Uv3KLy4U< zp?h=O^S+0h1a@rOT_~{Z;YET-vmr1CyYFw-h;vF+{2^>7!C|Jy`P;?vM-q1lhUGRI z6mxE}3sB#*h7YWnEY-<;n<^>d4sPMIor4EwnGzhWXzN@L-~X)-(j)NcmB*GI|E2#E z+x8-OmJ-U@R9e{6^{-6> zg`&y!C_k2DuIbp#N-9}}+HS@G69x}_xjBy!5YqWG$s7r{peXY{AshBBStSAYq!xaH z3K-mV_#NYVnm4Q4*jkTc||@53dYC#WlbO^sY}c zr;pYGmfBPIQ%+q1ZdtUR@O+Wl5Ehy-LJ=Rg7}OHe-D*Jh)x@9@w(BW1Rs-^*t&jg4 z`b`%SLOm>;gQ>Q4xg7>$+7sARLRdw`iKF@+Om@+K$xScJ;vo_*%G;dc7(Kk8A(u!? zX#YtZ&MqEx7pGC<@$13L`xx(CoRTc{NKxp!q7F!-BqL+LLB4zoYID!3yOW@?iEFxaY!M{s;j{Wdqhu6lUuw$bTAqXl>B~DAUO&8WElv z7IN7v%xYd$kjA3*S1t9?1%(ez{;)lM@8<~z<}VA$5HmRvw_h8MCTN`%FHH`R0yD0i(-EF*4V&mw!~U8F+Zk>(EPnt4@eQ$D*vQI za*+x*va0Ra+aKw6b1E02qYdkDUtW}wBWAc#;_-i1IEIaPCMC;3$X-WrC2m|6N_ByS zIt9 z9xk9=bk$mEiAYXqgn4c@ZqqVp`wXcEvX}13@Hk*ZppBB`gz9W|^)X3!5)RI*I;6Gj z=&HL>FSfSKkr;m*Ot~q#V5xTehl|{h>;-&2l9a!)1&%XX|M*(znysT<{hgSQHw4$P zO}QR4SeaxuuR9UeBN}w zs;+x50UHl6)QSfvdAoUA%qt#4D*UJ&OG#CmYRl9w50-VC+oyF|`1m8^s*+r8b3VLY%qMfy$TaZ;x5vN-TH^^F}C#6Q>5QJ zd^L4f%I+Y_a($SwU=O|Ax~DU5vNE)j@+wa2-@1RVW1N|fOY&8eML80ezE--8t9RCe z`#3#bnTiz?{qno9hSRJ`BsmgJ@A)^7l$Ci{4#zRWk;YMkv-VcWCKC{<#)NdLK!JfP zGiPU&gDkbhE_Mm=D2=eP|NYl{jvXJ{6l2Ee>6SI`FLpBQzttPiZuMPyMTZ4hfltE& zmVR35cXIR@M`CIAA;UMSA)QZ@`}f*9 z84fOlTL*_lj=wAy-0XC39QjBopj<}+i4_BbC4gA6t|ON}XxUZS6lINEtpRRT|K|u& zgu=JJ5Y_t#_nhMQAw`_>F_KK1mohz^_-9Nd=-igMut)CgKs`b|rHHdVMF%uhssPD- zC+p$Zc5gdeyKvC{ACbihzn+AwWi(_2Mlf4igl|R4#4MyB&^%NEx$$erWB37 z$Yx@57xL7EA+_o4FlJpHkd$JWi)9oO{NLs?yLfc>q?@uv;&3&0y4JVEJ#&o#M<(he z2IYqjzG$C^*Dlx^f7rAM;a*CVWO&lwGbqTk&8G5Jy)Bdt;yCp2hLLX~-xBre(_?$y z6N&Elp-K{4*xqqVzOK+CCMA8))pn)EY5x%K9S4@w4QE(%jPvjudG8cv< zsec~M!s?K4`sSaTem&PkJvLTVLS&+z=J3uXWc9EvH-{(cjiK2x_{A7Kc1-5p_Wa`q z_4p#6u2Fbz`{R1*&GzhWg0uJN3-O{SlsO{zGr{m?!*n7z4e)!L4Irh9>OUlK^|ib_ z6bgvsDRm)*ZpjEg2Ccqd#OM1<1wW&x`Mji2XT) z-4N2W@*@XsZtwzU^3Z}MC^Ds_x0Ou4e#v8%kxY7cxIwP|AX@4Va?60dY-YXZ#b=YF z1JiWmI2*%yiv6L=IKko@*2H&0+N;D<2rwO-kpTPbPKMJOTRiAxZEAt*A8T-kS zGSVxv{gX(@3hr_Ge2oRwu9yEF9V328ri7s4!}qBp5-T6thJWP|!5dL0w?)D*^&uR2@Bp2 zbM#97@JUh;ldo~Xgl6pBT>Q~7p|GuAL9iJseD_ObmQ%Zp34EvP@6TXopcl~pq3m}# za?lSu{{0-h!QpxFslrwUH z!v%~}Fen%FpGpyB&;oOnW{>FACK;QYc!{lu6SZc$*iLVj3}T)2phwW_I78M=w;g-) z>Nz2rKghtAP`zdzte@Xa=cHc{p`F6mk??~IT1R}G6q^biIJLHwC~!Wu99~TBi2Zbx zSZ{9%tD|jl8&8*<7inAYEIndY57G1uIFKX`*;=Xh&Sz;$xO#8;q(fi_SD(!nYEcdW z@~X+Jq{tA#S{j^Oc^IxDj(N;zM?Vp|*+Ay#J}9m1bnR60*S%$s=BqT~kK|>m6FKwbhoE}VmiF|reCkV^xphYdPi*e{0XQPdCqd7 z?srY)8PeYY5m61n>e9<7Y+iHB zYYd2!6DBgX#RdeM?yZC>IJ+8WOh3XJ%*kTWYYV zyVObNv>ys^C+f6nNQ*&g&OEDHGG*{|%^I&{s%jnYibtaqnM_1L1f4q!X~aN5Y)Ug0 z^ZIC3EGrxH%Za^XS;z#g{4bM{dB8pK;T7hCu=!RcW}jTf$L6HhJH}yyrq(C+jz4V( zl1W%T;Ut73G^;a{%F`LiMhLcw82_sFS?YDD;;+X%9VIa$!Zb%eWNc=`)4mvPDRk86 zcp+i#c>z7uVLU<`>|KMgDca1jgbBO3{PXWkEMyLF$R6;+-L#*%dMTNs*fH9DHB>n( zWU(6bp)xsqLBAfJ!76brKeA{apxNuHlmoBd3(u_Eaw+nkJc;h2BUz zFc#O@L6uRy52MlQcb+{J!ex1^=0K=_+1;T+(3UtI<8y`-%xZ_?1ZxA1P|nZ(I%wVx z79MXp2UTbZx5;hb7o1gwfGDM*tW)rPqiq&_Es-T8W6WPC=6ps@65*KaBz1% z<#;v4Kd~yp>(`zzKvS`DO->kji+-p<)g6t_!69GHr-bv;rq=CH3(Z*Sgu{*(og(RF z?oVWh-9o}_jOww^_}fyG&QG_~YTbB%sV8f5#YoMP>#KyS9bJJh_{37R3u7P+VoOaK z@3qHFJZ5+dI*`cs`n=nE9Q@g-N2*{y)`vCMx2Aw9j(ynj3=K1KbTMra*X&dxYDidO ze33zhSgnyWLNLu|4gS4xY1i4rjmD2XX_SnyMseYM8{CMH$R`zAYrjlDiRjmnbY93P zwsN+v+>f0yK_zcUD2gNKkaGP{LFxJ<#<`&sh=36X4!DJ;^EX$0U)G-MM!#c={@#5= z#;HbnUot|>v>=%jPA>f<@(|;M3Q;v}Gx!`6OM0w8-;eie5E1gw?4d(C)E8;7+obeV zaLQ+BDmgVOcZAh-Is!%N4b0>F*zly2)?&qmbJ^j-cLak z-hRld?BoE&nZF{Rc2 z55Y7vLu3#o(WrfhohuCaH(oiL%d|kH9{YOPnnDhEWJB}X^*XCPH9VYVbqX;%Ynh>q z*>_?b*BBq{dcM9N+?Yq0+Tu^Jl=-~90&em7qa&T{KY3D?!d?$S1>V)HVtn!VVrS~U zdCc49)4GeR&qj8~%)r6-nH~kW-GjDWYio~B_KXKgXm91Y{cGHoS{-Y}$hMn*#Yg%!&u$ZJ8y(jADQGHe# z-o;La(IQMyw>=NrPIq0f*n6Dn@tkquy|$ZtP2Weev57P+(AlTFk(9g6qIW$+(t@m% zi8Lj+#4o6N^fc^b>D&)1q!<(a{h)QfBhI=_&bc`%o&ul8xIj~?iu6=}lu*b>lSz>S z+-4XXePG((SP|#aC&rOvCkpjXiAYtTDc`mj$)bh;^9>|c;dwm=Ug52TD!mDM&p7(LCjh9 z_Wqf?>`3G)lqyi-N?{eXW$$}QLdI>QV1 zxj&a3-MRceXN>7#G%v_CPyS#r%cGO7Kd0-nQtqH5MZp+cD_aMh|9F@ocE_H2Hq{DRk{Yd?bs|^CLU;Wi4oq zuuu=<)|3+yDE@L>Riy49>CTXCYGK*=>DwtSGVo*K1eija>KaeL5a)+JUfesT5gU>B%>3 zsSm8u%z!W5dyO5Ll0{ZED>y!<95EEtxNWq?I;LC(U2HMmUg3kDW<^&iAZEkypl)jD9Uw6n~ zfmWMdy-(Dr?c4a$Gx9+xDqo(2D-5o=dY@DDPuA13@u_=rY~3pb%FWud;eVQ}(?q1U z&T0MJeBM*}3^dp`WgT{B==vUl33?V-o{Pxdyk*8&`jL4^0!ST)OGct{0`OfR{C?H| zssSDbFL<<@))D)NE)2wdnTCeSNYnRue@)yQ?K;xff~~{1I#t!LY-K`zMFt!l9t8^( z!8`DkkWe&(dkAWcpOPr!NNlbpeHT)EwOVrp?RSi{S$rqrWeqcec?y+;%19u127SZg zRSOKLSXr=Nay!!up>oFD2l;j+nsB^3{_B-a3d^q~Lg;m&?A!l8EjN%2Uk-#G^V59n zmw#tQRKYFtp-#Zs2$Kt`lB`=f^NOu6t%uYlBi!cv@9i%!VHZq^$q_CucSNDk2DM{< zYq$%DV5wChX6}iK-v)>ftPEa&PnX$&BEW5lTQz|quX_11=oBrMiROM>U*t-@0Hju~ zQBh;&U@tpSJ-mG}BF=@XaB$=JS@VM!kGu>mAO5Q(TZlpRf1?uVoVFJRWPwnsMj)C2ga5i8$olr}fZ#=&Pjdlh-r!ai z87ClFc7wi}`hZzkz8C@|)}BSpq*EDW@22&X=Wpj;Iqqiu=(_^%1qT5q*|KEob^EI? zGI-W6;;QJ^-B%YmT5X~`L4nIypQA2g*JVelR&=q2S?rQQm>Y%#!L@Xdut_Fhohxp{ z{!hRD$d4&ctJNY?C>UhYpW8;ETJ-*Rj>1&&f?g4pWq6PPjL58UqAhpLFYyBM|NO zu!3m@6(i8U_a#nM=AgM{MiaA_831CeL_4KY&NN+(PA-(MG|uurtW{-*QbCs~cs(8M z!nO}-Je+!NU-R%$Q;dz)uo_p&gmu>EFpf|c3gM3l&OdJ{yRi*u32k!V_`=|w|7cz@ ze&e?mv%NddrmA;!8A<0*-SD@_)x9VHWp0;voGv_4vHTr?brWHu9o~`4t;Urd&a?Q{ z$}ri%eany{y9C(XK87DDWh5+=pr?h6bV!)Nw*ju?v0aJ|l+t%F+JW9VA?CZpm#IW* zAE8{!cjnK06|~(VJj4gbze}d*$NZFzxm*ea#?Ej$xQw}esFc$;glDbcoHjY$-RfN>~$7hD1_zB(shm5v7;Yc zx-|>O_=hG9as+Pv3E>+X z1U(Hqp?>XH`U-n$vt%s-@{U`AEHW}oNbU5Ugn={6A2t#$&!El5N5Ni5GXW_LL#No+ z4*Y~Ye|A(&3fxVrkIv>o0L=x#t28TyByP`;Jvy>zr048cNFYCou-j!AAoBJ|Ad)7tA6w&nIM9@hmp!<2S7ccsQ(c zdz>J0q1+2C%8QCe0Y!`gfhEH<(k@A#tQI4^f?>K}ILh6OfQQ^Kjd&8O`jr6Q7z{OF z1V4Ps<~uXYS379^+O#R90LhkG!8L=4SAFF3=v_%tClOVvopPkGRW>jm#ZG_E@vRbh z?~`8n-RJY17n{ceGC?f@!Sj1PenhxlW%kglcz9f!DIqw6eYd?*hD2D?uh5I2+`t?6 z9_2Q;AcDFc;*@Lu{G03E{sQCJAf&htwxURbobkJ%yHpK9WoQG8`rWAxiVyMl@Jq2t zj~Z^@0)M`*BiKKKJHBPZHV&c=o>qUdKoJU@Cq=xr(kjvRpCP!kfs``#bG{khL%hPE z+ziilduM*oc7bJI|9!~l*56}l^Wfk$zV-J;!5x-5>(1I918TGma%M6)uNe7d%jEix z>Bl~&m4CPB)?h!#-?2Z+^lK*NO(%B%j{zL5aT_;~| zve*B$AN{U}hEUb22H(Ft{7rao-O0Htru44auSO}~1rA)jN7X$lgiF%WS(79Qt&3 z=4{svT>TyscDK!+2hh!pUM~pWTRCtIV7l?$a6JJ+6B;%kfm_#g$o}fCi`m~kFFcWf zZkJaVD_YWb!{M%YigAmcx^(%h0*pS6&b2#4#cMJ+eJ`nPYDIQzQT|{gLP?1%6wzyvU z+#|*+HZqX^3rY6Q2%DcR2_Nnz*j_k@=Mo1Jkw(OULUkV6Fpqe0CG1Tkq9Y7==igyE zAfXUJ0H!6Ws;b+zKc9{YjVog#g;yAHQ6Z|GofzVxS&g;MlU2ZAEFmjw9%>F#^K{p$ zcC88N6j-w5DNImMA*Z?hruKEMdK#9#k&}9EvoeM^VTVJtUD;Au2|M!PE6^#L7MQRv zH!o_5a&|Y~w_fy6t7ZAE4m%8|^MoOPpHcQHfD;lAo_ySU(et!e>H|ofY*^cbGgP&} zE0gT|0_TKpN0C?L*lt`0)8lWNC>}mf=h1|*&8V!B;c)9o=OTy0A{JEsU8kle?aCW! z&e7~>CFWM6)KEw$EF~YI!Zg(EKyLQ{Uj1UqG0|DFcZZUar=5d#xsqIFwRxph-hHvc z^oir0;!iBTE8)|=+stcBQ+>O zW?7SZ`!{zo)5CgeO6-~219h zF-3!{cUwCXZLQ-*AN2b#&C&jN;kat2u{f|N`_H$sk*2)vxAiUXnD}UIJ~O<&xT-V7 zyf-9O0805CacCGGGoWmx_KaQuCPy0@)At``rwBqQJf$z23HtTT%X8HNkCW$xQ2e9) z4-aeCMOrMrZ4diug2~=lS75mMHPb_{zgqQxjC}Q<*tkklP88$HYgQI|`Lgg}RLJx~pd213Su#dqKNY>$&a5c+Mo^`UQVQ@b6D9}U`3AbSGxQl!** zv7yFM7#}FIyLp>QufAe%Br%z~S^wAj@T-or20*ix^ml9f;zQ+x#$`gR<_Dhf=co`^ z5k2xa?3?KI?6g_ZY&n#k=_|DjkUn|J{5D`5U!#{yx zHMlU-G)xCPS!@0t-MH0jRNu`+A7t-8_tJ)P^Q|>Mv*CB;^HlKo zZ)VqrSLs6Qd+yf5P({0avRAW`-U%Oy3;J9Si09V)d&>CT6_I!oUKbO4BDHU(tLHcC zUcsa+Ql*e0G6|RXt6Lx9w$|&tf*v+~*KXs#wH&dM#TT{{9ZD{99rT(dxH9j>Dc;r@ zq+N2faZ2&4%v&WPNGEX6Hn{Rjb{>!+Q=Fp|oGGFiuM0G4aamE!IU35iP3}Y8e|@j0sr>lMCf~phYGE}=DL4=J8E+cX1ZZ-%AP+nC520VN#^JP zCC&~D29`l%!1TqAC}a3d8%yR#=jNi5t;MYC5%adrrKO|q&-NU{;GQ0UxVRVSH#=u3 zYq~ukSHN_@znXPzd-)mRwcm8nw=;LRazy6cdm8;q;BV`nmbZ&wuCvSwn-jj2<3p+J zcVB71p5hlCz3umAB+7`Nf|M#(L&_jNeBqK7lx3E>lS0I}ZUaRVbE_d!T-K-ML|RrN zH)xctwD+zhlmxsa^t57)E>H^t*f~>!vO`oshw0_Yk!tqrv$i;(FaaSKe4(Nv{PYuC z3CsJ9CNyh1|}8=_B9L znllB)@`%$~#jvTnD8$7QehWO9YPo%=K03P+F|egBKK9Lz#c7K<&W9smbLt>s`KzbV zL=9+EjW;rIgyfb)S^S5rT;WlGo z`!QThcA0RP!E==b7U%0^8F8~+C$1ci++n6iExh5~O7x`_Y$T06)VoY5*>NiSW|nEGjogyh5bhAXvku%P1@AT>{yx}OykH`Xhi^CeC#{ouhE%wK z57Eamgus_ubi`_2t-P@^>Tt+n$(I9S2hG^5yFcTOk%|J=+(0{K|I6nJ2h()LfJchq zJIwNnR`|(Y*B3<>dgShoXbApN_?cNlErg-mZ8=l|5S;*j77y=WKN4SZn;0=HByN>O zyTEE+a`HjW&n-9`pqQcIEaJdzmQwJgi8IUtA#9gb)VH6Nr0O9f+3Uzsucgh|Ln_|e z>=Zz0*q60?>`d*<8t~5Pq~F=itmgjvfx5dBr)~*OH@bfJ6o28`Sp$g0agSHdo&Q-D z#zDZI7rlI1dmSdFw^V3Dm9pJ~S$*bP9MOSF_Ny`NAR02AAoBb*ws+n;e6p+T2T* zH3aU+Cl}dPnVu#H8>YhMOu@$$m1wBKx;VYdj2Zg;^X%!7cwFGyMM7b{PXusK*{0a4 zra4Ie(nz6jO~JT(>HXR}k&?^Q`JCkGp+`Qq=)0Ylg1erqY`h|c!DTBE-$mu^* zvB8Xt_t+TQpzQoN7g*WI9?a9hFnL={h>x{fmHiyBguWbw~7)W4HT(y;EmycL(5 z*3yakB>Ok5Rke&pHYcq@FgpYv{AX`cE+;mOiEX}mIGkm=kGhM0GA`e9BWX9k`Th41Wj*uph53ET9towcO6gK}ljvK78Rt z44Fi5b@hu!932~BEaA&J^JU>ICS_c4uE_xjrqhv!xjur(?p&6`8tH**x$swy$q9Sv z*i63J3f%bL1YD#xL7D-cP)5Qi^SI3=P=^rwF4D_Q^g%K#^ykl{CW~qQ1qO>x*XTxR zGRf=d*bzr*azaq&)0?$-b%!IK?!CV$#_91Eg>A9-`hI^s@H5vmNb3R4uoPQ^UjC{@ z!*;9?6rz%GP1yPXPyDy-iUBWpf2sQuMaoL11fBbmc$ljDh~eEOua9PUg+1mozrIz> z`48UD>aXjVn0jk^?I&R@DxU;z6;i^gxRsg>K^fFc7ohVcwXZCc)mwd5;vemvgiEqsKt{JKvJ{dwno8=nNa8uZ^C&WK1UU`Lkk$K)OU|`J+m<_!shIQ2cwcz71hm4 zd~%C070z1hp6&+7^h}&DWle2xjAPZ3j89WPXODP$g=5tr)CQI;Reju>(+LC{{ z$AniTaWBZnlzeG!;hm;W9&&MtWccHr`5h^XrG?$jkvbW-a|L#`a*dVJ6a}FZbZF_r zwN{W5?~_qwoX#pc(9Kr+yvevqRJ6DewL0N(k@N}D*zDpeQJYWH^ z=2IB$0u*FrJ8I!&$%8u|M^)F~%HTxNA8VAkDG-c|-<{2a3hs2-y#`P-^oyyBehz9S6TZ2&rzc)_qTY zUpg%x>s=m{L%0`J`D4;GbKtz@NidUv+7*WDXLNoxTi~4oTQ^6kmweAHv5N$D&ZoH6 z(`WOhE4uY=2L)N)Pa5=wtK{y)HwAB(m0GQuHuVo(ytnLh0K~I&O2lRSauJMEwRys8^d~E#z|IyD)p#d?#^Q5N2t!oq+AqS6i8svuoU|dkqT}80=2-ae|GX`{3TS7?V;1Q|iQ4 zbETEAu(6S3&iJD>ypgtyz}$AvV34_hLIKL!iWF0HdwVl0y0Zf!Bh8lRRRTm|_b{II z48G;K$SqYI{`5biXsfS?VeilzfLy&=X-_P0k$ZcGYr0#T%|&a84I9Ji_NiN+$|-i! z>o_x(aA>jKICyCb2dHD~-K;EJ;Suc)=WiP zlpSsUHfiu#R&Y(&IW{+4x%j1CgE*;(z34}29_E7=b*PaTt#BxyTV5}j7yJ$5cn4dJ zK5vVCTfbL#aRVH@g*ToI9uF4ve+fZ%R&Wz`4zS?S3T1%lDkotO(&U`D_!;AK*tG@V z{QHaD4EC+4dn5i-H!>&Y!sZoF^u2y}vxtGK%^tv4eSgNRQ6e3`kj+rc>`zP1izgm5zH7l7iE z2@7MSYH}ZGgVxHBai&m`X->gzO$DP6Isa-Mxoe4tq#&~ zm~li@x-LaTj9Mo($v;A`=ai6GOG~6aAz1Yh(~nO)7|U;J2cnGups`NUQM4$D`a?K+RG&`H@z$`k`{}GWp9Ep74G>8p&){_^{{9 zPjZXuZ(K|)&)+jsomY=J7_HF${PI+pLGTgS-C1i`{4HQQWvo$P8w^@jwOhci6R8Ja z{<^?Br72Y6tyl6ZQiJdMT1^V-Q?!b)DoCFB*u}y4zi-Kq4!afgm=LPdDALr?vFBx3h8s%(BQ@s0f~&ka(C@wLC~ylVcru$# zK^=lGE^u`CxljFFbR0f(?@V3x$)TX`X5#T{qiV5?B~@7!ea`M!;W_b3wEV6U5#6p* z)Wj=bJv4BA?Y@!7KnIwzoZ>b^Dm0ARr#>+`x@^uFt~9HG>f%z1&uvC9fJx9ij8tzQ zJYX*_c3;4G5zDp3c}4OGq&?dQ!;=l_q9DUUZXhym8b`pj52P)JEI8P%)XWo?*N$DJW9_H!)9t z&C;GL(UVdsIMgb+1lKP?|D$)xN19RAW zT!fM<{Bge}`@#+G-K>orPyu$v;c>1Hf?Y-voE+WgJ1)=#z16Ipc7%upVfrEi9bkSeek}4Gwlr5W?eK43WI15sW;mTd8Bfu);7|)pvc6S2u zA}oq5XfsCKrkA_@|1#N^zBoe|aUjKmg4yB^*na+t5jVpROdDlCQcE&7XBL-!4}%Cfa;4I#)lFzl3)K7`RLO7azXzifsL z`q2u_jeS~8G|Uy4FaIy|G_FQiQ3n%uM0ao5Y(%e{_yZ?qs!Vh|QA#=wD!7r4rDmJi z=4||N(R&;$mSc-)8G(>h6ge>o@yH?3+E%MOl;~I7u=8o&G3hdhc}dVeISHn2Y7r$OqdpH z*s~%OvO7c^vSU?3%Sk_+9Cy>;7Ow5l!+YdNr5m^TJv%+=#9t9GFzyZs5wSh2o_HG7u<{L1Xc|AQGJb++<`MBZ|B$(5 zV^gNPG$`%L8%AT_THS0-#?-7>&5c)nhBRxi#bH}@DW`FQ#|^vVfU#KnQK-qOGmKf# z0`XUHSvG^-;ZeUh4NJJo8@+k6b;X({L+vM*T0&LoeHR&1IJ9DPXVq2YA31O0cYT7o zA0DZWJ~GEA&Sq0Fti37WinXpdF5Pxw5c3$iR83zCW~*ShDJe8Ax-cLSA#$)v<-;J$}^bdjq|LR5HMjwElGu;AE_0pA32(MxZBAFKQbJofKQI0=Jh{y!X^;cKmsl#1`X};z&1!qBSHn`R-Vr zC+z>IWl*JofKfe6q$Nw10k^a}j0_3aQp~%(CE+nAgg;#0J0B2YMl`}UFPDGUoweG3 zh&guP_-y=PBO96El>4~G*B8KJ#x73ld&M8O4ay+e~zn`oLcpBx@!rOC^ z)PM|-Y?+8{k;wM8GQ}Z1i87z9d}?$2#(d`r$Hwu~e?lz}Ca#K>v*Bsa*o8zu+x_ZV z1IyF7HqMi!#I9e*$7wYM@+|-5{Y;Ph$6VD=%r>oT&Px#OYFXSqkHdLbSS5jI0AJ_s z9QEBw{iu=~uy+5U*$b zb2e!tJfrJogPg)pJ^Sw2N_TrQIX%EY?R-BXRW+2fKvxC$SkI%y1^=$krv7KWti}l= zLlkoGzFxN!e?et7>Zfa3FoN)bnEIaie{MnrO<{GN|9*eE2^LO4AJ(O8f=Mg7n;1vh`VFhxHL<*vwLPYi-YQ`>*nGh`w}8ocLDyj>H0a~j z-PM#aN`1mEwN+RzV0!0m4<%YGK`v7`Ttw7xGUIVAy#W0_OeLPrL}H3+5B9wioP6?p zIQzBMP^-t^7%UP{JVnMNUH2QLL7-8Rf^k<;`pivT3BEhp&VkDJ(0_i7sy8o102#?G z#Z}+`2mO|~jNU4+utG3NVk6@kby2pXuHz=DN78d#_d~f30$x%1ofj~p6hVEXJ@U{N zR&Z}vGY6C*3Ks$@uW8Yc%qyL%ekEhb1-9oag|735hFGX!z}7?xIH+#RW|OytC2u?d zjBwiqDVT>5VNCFlIIu_9xKK$@8vvqU-3xYQU8@YB_X#qy&nE3xJXiq4iCRVK5Ssid zsepjtm%VXS;W$Lt=NESwz0z#t+*rAq+)cfd*z8`n-;tjfypo(Lck|b#g>I2uRLb{B zvsWN3DPs(}X8Nf~`TGHhaTdQl1`W{xgJ@tXu)ji1;EY*e`*o@sstW zF&=d0y*cbro}%iZn|cA6Gu2es`hEt+la}A^D>CHpy-f%@jYyn5wdAY?pW+1@)JHJx zDaU4h8mC%~u_m6VwB2wCo;>eX?&cFxTB{`;cQ{-^%Y0}Ae?#am=GbqvC9vWm01_*= zsywyN!XRQ?IOOMP&E;4WKBlLQ?&~jFGJqR@X6*x-LZehpv@{91Vptg?*T=k2ucpiuvmLLO`E(jhv?v!VOcL$@vPe+G8-qSCW#Q#K?rXPP@vgVPn3##%^wE#|p~QoG9@#!VTN@|bt2N6u&wONNgPTng zr<1l{SLs1J`bvE`*j^kQ_-{1+_v6K_WF`^Roleyn z!;lYA-`Wc}TS1&lY6u1)1gzajs_%xW!B3RU(q#@6n<{TFo@i%~>8LN=6av#f4avm|euTWsE(1=l(cFcnfY{rgGh`sPQ> zyhsX0I2@5}KJMd(J)YG`U^^Os`|qk-T(WL03dk3wo-fB=7C(`z7F^#zi}hRJm`M0tJG>awU4=GpHkn78REP@sgH@(!M^Cs`20$`!Z2e0F1b7BQb(hu@46yQVwC4oOMMSNxUn3QD!vF-Eos=xi!bkZ zt=I38C!kLbA6cy(g=|_gmk39vG*)|ZbxXX-nEPrMVnn_+)`Bmz`${Y8Cfprna!FURTE^(|NDq2epv#Z@ z#_2_`L~dMixgsB8F(L1xI5FOTy6#DbOjmL)t67$SiBYPLo^FpOuy_D@oLzDy2c zWgnp2mq)}P@Sq2*7lsrJnh`(#zmK-|D3-L37l{xuejEyN{bIQFZVt4L1B*z>8+;2} zMb!vKUaCAXsCE5gz@cim6#ZkiSu6C(=p2wJ438{5w2()CKfg!qdg;F1__Q)5v!-l|{UDk`rjpxbQz>(+ z|9u2g=fZwp#Zq>&Z5-H*1lNizrI&|q#d|_3WV=JK+%qn3UO1d$q690(@0;?Zm607| z1W~UO9bq13PU_&Hq8R6T_T-jGbtok-Ti#N4Hvu7U`BAN(<9fLN_%sdJ*?w+QvJFx= zPMILp5%q?AiO&Yg;giF?6HoN5Eg!({Oq#z~?-gjF3&eBW0b^P>SUO$3Z5#oaXUd4ejY9Zl#4mnkV@Sf

Dx&`@+vy6L7Si1xC8fz{|RPFO->}6 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≦1q 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�TD^aAE0kwlPONa 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 mWx+<~0R6;eQR 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%0ADVJw=YWk(9 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%0DC1xX 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�sZrx-3 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%0As#1)jSF!+1%>N=E3aVd_puY|JeQ*I7FNOO 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 z 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

2x|+h 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

HhBe%O1!#=bUPwfx?(n;(K? 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 Qqbp}G4Cyyg`M#x41YTQFYr2$H@TVFKQIMxmv9 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 HIB&DuXHzy9kLr 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 gD-$Fvt409!5P`q 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

5QT0MqZK{H~Qlg3%0D;Ci3$A$1d zPwagCj9HEa)FZPkx9)%*)t zdflfK&UOGCYpOqHzsLsqysN$(Yf-w@6O75H#u%|A&+8@%E$3JM2vW8bQz^q9Z?aUe zGzPd)R#pKe=VWl)GGo5uGMHH0ZI-G!>%%09b{yy-z*ap_3_2KaW?aGp#J72obt|1# z<|u2CR-tMZtch<$TfY>Ji4-Ey@L<`m)8V+g+7rwVj?sr+|u$dRek?$vm81vV z3p+(m+Q*8tim0A*xEv7&!5PBBiZV%Y;M_mbJ%hhc%E^JPS%~oUqa%by<NE@^0lX7SV@vIf^#G$KRK|o z)^0`-OIy3yleW1(Vgcm`st2k0ITi=4pq>74f#&gU0NH~~*v6UUS)N%A9PPA39>DPc#>o(v0n2bKoI96k zU$~}&@r({yc~>4=l`a4IZHDjG$hgQd84-wgpTI2(wWK39^jM;ReM-rOndS+9+*UUyrV_xg5%DmbX7CmX#MvWc4*xNNJI^Nlmf_ zhSoaR78?_4HBW{G7Oy9?DA>@v8?c$)h^vz~wPb1^uwmtZ4I9eAQmg%`e>m`ef}E-= zxK4kGt93yRdU3p$P$3^CRx0T5Osx^$j9LlJZI!)+T@qc`Ezt#Np#ufoDhoLF=XA)y ztac4gp<#Of#xlcHYjE4P zaei{|92^IO56I0hH^6~by*L7bB*8!E3xFdbH~{kj3OKY}tf!|WczQ@Y6zAokfFsds zw*n3=59>eY`ChfxB(7#xM54nGCYNVgB~2k7ujG1q zNr9K2zJfP+bCE!eQ2qc7l4$d%si z0vyx!H=qcN*};*e1)b z*TLX~0eB)?rW{U}i3f})$LPpp7~C-I{q88>`2I}e!NEKn%(X!cUJ@?<{KhGH(&L62 z@*`lNGyeqhP`nV73L`&LMR;L6G-&)Aj|;*AE+gEa2sRAdNKr8IC$Cr`*f1d}%&S2- zfqfyHtHV?@$&=xG@?=ObJu5O4JWwyt^xixf z6_zQZ2s#zpJz{V{*_7 zFv`yu&kJhm(L$MatVqRN8y0BHKhHcH6`0270Y*IAxiIVv+%V#{vrgUBa2S@Dopz#B zk4Y~MhQrW{Lld(?ShZu9{h?nYx@L)RLLc0G;59>CGv12`N{4SH$(^esnDI0u*8kPg0l z+i3!ipS;-)waL%lXp`@}Oz#YOZxC=0UX*AK4jZOI$f4z6okXDuHQd#Y_r}-JAN94_ zmGZ4Q)$)Ty_43f-Mj40~f5xaYG=*U@%mbp(Lc>!yKI55U;Y|;~VJ?n)@{_l^%=uwC z^*F;$`T!0!o*clTi3ruOGuO^~&(L6{p-=AzN+AKRJK=+k@8|yP&x8>egOPB9;R4n( zgT{{*HK}{%5L=tum-zJ3ORWH zaUCIE8{Q8EN^2X9#|6%jkU_;~0>&lb#-OFRKTB~u7{oO2Y3%cQ>Gk3HJJ(#V0iH8H zUz#sM0S63V7vLalF(E8Hkc7`7t_Q}7esr1q5_tAZ$Ot_= z&Zw)DJpym{H3!)XgWEad15IC!lY)<(cVpuq|%Ki`P&RDAAPI<_z1pj?Si-2ewaoBWRX0mjJB z=0H5B4=pd3$5t1}e|xV~UhuDw;lcSbA_(u4!HLF`BRpNha+w^IfP;xg2_)#5q23q@ zEiz?lM4HUlmnpOGZZk8A%d=$WfgG82Fh^#`EBe$5ECd|wXq%*?72|JhmbMm=N(`Itf!jYXkd0RgW#jF7 z*__-g>ysK_|I}zjMXja?L(3-JWVH~j7~;SS!VL>J+||Fa?=EBb_o%;Z{@){;gtWhP zJijdpf@nb8z$m9OE|2!&5#~Ju>Bed3f?W3O8JU zW77Nbvl;Ix;9!~98)1=hJ2+HBQ{qBG6msFkNb>TQc#qu@M|pXC z!GnY4VN-W|sM2?Ps_4C80EYn}gd0hoj&^Uywgzl`5pZl%rS1MmrAbI3hN%<>1xRT~ zkQ8C81%CdL>)|7LyL~0cJ5aJi_Db@;LvsD-dHLj%I60G2BvC2lvNx_$_Q3w$1KT$Y z_tXLo!U`+G3x=luVeSMQUx5$!NCv|-gCkX z=G)-Bg&HROs7<2NaDSob)K(YZm=c+-g)#^@{>>*t?hDFnm!SM^12_`y%F6h=3N_|l zV=32MS@3zTyh7M{A8O$17> z4Z;rQzF7Eqp?Y61%!K>W>w++XqQ?e3H0ZrC_tRoobmOipybgowYJqxn5K=6-QL2?y zs9B%n%XH@J_&86?+7gm5l!fJCS*e9^UFp{N&T5@QfU;6k87IV=PU6!P)Mx#2DA1wgc3c{w~FqL2`k zk@b>|3T_B$2yUo4iu>#Ug}{RY8?qM`$C*91kjLj#Au2KlIi$jnx&1ZOI>8N9b#dip z)m~@X&Vdxc4V_c!4FL}27E!`c7osA#@yf<@>klb8I;`Ojx`P{AGuX%3X0LJ^DLL9N zkFsht9W9h40i8CoA2%kLf@8*sOdRBw=FNcP)8pxQ?`S6G$9q*&y6{Ke5`6B=L+3p{ zph2g&Bb{0S4uOx(drHu0cQHEb%EwDPRk5SM0LNd}r{LL*X?Te*2TC;BaaXog^bp|a zaje{w1`11Qzg77-lv6@Zxk|;VI*7tkJcqm`cf>wA@SF;8blRS7fJ5p5g{i1Ii31E$ zQMk$`pLLn#u8_Kis_JKTu8t)ua=nBUxo%eU>y!!(Vmy1It$l)C$*DA0m zF{xAyf*ewDC|`xbQ)E347vPOUUY-pB4ka4Z)Tua>lSA`@3f-Jg4hA+;Dc?addXw3Dxx50fz@H9-q#a?HToWWCmZf zXZQmS@1Mn+b6RK{ZL9rm2~eI4<=ZInfeNo|tRRO!;P7BZmN(`4>%c>*4F@+oz@fYw zmVlJ||MNSgxN`&@6FMjN@#VhFIOWig0;3s^DL)9U1#qa1bQr!*b8y48SzyE2b-=;C zv78(1FFHtaG@UcUV*O+m#DI4icvxv3Peu#ZR6?0@?Oem*7+Pv@T#3$H=XNS zjn`-)GGpn)E3d|QUR%q!ky65g2?8CS<4v<`_w~a~fWw&^hptWjki*}+^LWP)ys%?w zJKA+1;Eh|ijmED(;7}W7RswcX10I^vjE6Z^HGMF+5%){!!R@6$Q9cY$si9C04;JWJ zygV3mB;~jZaL_5gF9>D^x^#U49K4TSg$}mI!3KU7;J8Ol{RkSJZRJ9^XJk3IDd)bt zhq?~+HK%H`zXC+#!aIh~N!EDM{iZYP0S-?!p|PRw2+v{mjX$5 zY?ELI+ZD*MYGE$yN56etyWMB+e)-^~-}T9~O#PxhRgzJEz@dB`s-)rohwC3t#o+@S zG=<$bFlH521kBV|K^zyOO7Os_EQ1^!R_5d7Rmlc91TTfu z`DCQ&lr_z`S}nCkHJU4>EK!vg0S>meuG#=cBNtV1(UrV9ETKR1{<&-qRzz1~QY7E= z>BmfrF2iJg4i2Y-ely^R@a4ns0gmZm`uumm@lETl8?V#)>qgM=K0ga|$UdjDyns&Z z^3*1*P6y}?(3-I}xd9te=;)?Mg;8%R3v!ug0;vd}9Rt12q<<{)bBY()D2N8H?bh@Ur~=2cda83dU>s|9cfcK8F18$(pC z1CH3)pCIaskIe))a@eNAwX0FEW)-s7=A^j`kUD!I(iW{i+M3OX+p-(ycOAjWuS0Mk zHVYf0^RR|~{;JDGv=RdxYoaQ!D$2{NAz0x|FvGzO0S~9@&~lep)S0$X?hRF2nSZIk zAcrcmD8Zp=(6dndLc$@)eQt-~XH2bWoB?@g(Vo&X>sXn{B8G;c~Stx|0=dlE+f{Jo+3}NSv z2rILx6dnD}3T)(J5Ibhj6*_dMGtl)&Jh~o=vvs4{Nn_$`TR@49At>TiQ7N>NvO53J zi&?ZxjNr8fh2$FC7{%)!8=jBxk%gELRfOQ!a!iaZ!+5rF4BICq$8erEFr?UOWXpms zvfZb0>0qYg&3*B7zN67&TRb{%h{9hMoW~R6x0-U}dwmw*p`cCprn(mC$7 zolf+o40Ko(XJJ4uEeSJ61C?YuY7Ku0G!^a30%L`5MLZyc#G$J_x9|2!SqMxS5ZlY>`wXB+5HsZ%-W3b%NL z+o%Lz`%aL!8Lt!fxqC%%!fI=W+&~YzQxC0r28v5*PAUi|LZ!|9_hYMX%=!=EL zIHd?pC20GdC_|qUrDkuREHjmZD+B8ii~7$iX{xS4z(#m z@b>9-q!4c%7U)o=6{)du@fPomD#i#Zy?wF>-MPNop<2ASxyeewO1WVU1)Yq0C(xOq z)2f$Kfep#-Z`VJKJ_plt^5~5C96x^t(BC|#(cip%y>;ILI0OM&0EZm^Yj|Wj%q&c0 znx}?vrq3QA;8g3m-J?_GsFcI2bW%*q_rVIm3(hMyhlQ!|v*3oA07oIL%8G@oa9;~e zai(oK9guBRQ~q^CsrPRx9hdvqe*Igo_CLk;D=bCrf0FIcwP=~H>*-)W$ia4dc3t6N z8`)BA(zRFAJV({>)r;P!MJglT@?2*jC3K$U z*ji|T;DnxgOK8h$YB@f~SCF9FbpX(!p5Rm^pKUzJ>^Ro}hZn-4e&c=yIlOjzAj20f zLbH$+DM)xc11B7d>URsV;`MqEm19ZZMb|D6M5o`vS=dH%rrAy<;JiDCW0X?^C+u6n zARW_dvuEDe=eQBvu=`9$T>wx@C#~0Y3j72K!f-n&U3})kLX;TvR$lLIBl-OqRADg5 z0EDSk97MRT`f&H#;DGH@h5G_IE`qA9{W_ijj-YyjG6p%hz1nY((v&-1I|W({TqrjO zO)$f$D(o0`54>~9?0S96{FmFdTCZ>!wnyJTu8N9sa6HcMe0wd9Cwc3^%-RG zV5RP-`bPa^_dK8&kBrU6?`GxjJxP^Syu2Hx;#d`JphFc-DvKPvg5;$JHvmpN_s;GB9y}2EI6!iUaXg zh|ar;s;iB-T3LasSFfVZDw|Y+3k*ECQm{(!c}=BSX)U0l#T>wJrjQg5Ui^1}LzPst zOkl+yaJ+Lg5yOrrV&>QJh~X(qwOLKAcT52eD`QK$T8oDI8Uq|nwat*YBet*x+oN+Z z_evf<4lkwSU53f@O@bpz5gb*9DRjIn#3bUXsWt>Rf+IEcLQif49RHsr0{x!>4*$fR z-?aY!+on7lvYVGXFk}|#mV4K%?UjJ^gUCutLaIC+sm5W`(`9%vkzX(yw z79)B&moHt2=*9EB>MC>RB5L*=4|2?#kGS~@%#@fkc7az$HfF(WgB)fKaLk=`-R6Da zm5H7IxtXWl_!yC&e}w2SKY=Q$x98z#(FJFt?&AX7eeV-{f1UL@H zWn)uZ0XD{zU<03tb-Z`$c<x4CtrQ*H z#*`fNr&q>QSmhJ}4IO`JXb~1)DZolTqXHY76FC-m-*sH&0a2SaM)O>;wfOi0Oj($)y9sBS+ zQ*%hcAz-1ZD}oftts$@>Rfkj>s%oNYCSzhsJrE**pvozcr7in7xS?e(#Kq;=5a>_{ zih~lvLf8g&q)hVzFXZ8!i}?mOWN)2H$7_dT(PeKWdLB8Ly8SS5+xT^NXnZh zlI(b6qRXv~fw~4C*ci=gb2cub028B&5gc2JDe>h9jxWO`_Q!l>u#&P;bf{Lg zY~`TB~dlD=G>0cL~!;=%X;g+`-;K6_m_|=CeEWd_S36@CH zr?!yE$$xD#f5EDFdSNI69Ll{RK%#a!IN}nD3Vgh>kyoTe zO~*Ac=(0WuuWU*|mn~`Nu74;tMB#%|xj39Fz~PmNy$(21G2=)Y7RGykLuF3eZe~9y z55(?5tCS+;h5$#~U3s?rr7by@cSCB8KW|LM3vA!>n=@>x_3hX$K@OFPZNGzUrq-niUCC)V2A>e{xDGc4ohZ5ia0r5UAjHedAwXiFkS#y~PGIob^0ZY9To?g^&nNIKZK)j-zD) z7~KRibRIvzp`@g59xFpHwny{Y*79fg0EdOC==evX}|<{T)lsbR5q~bq=UGjy@;xX279@qH_Kn;P6xqFmNGrfTP7)!aO{{p`@fw35L*_ zY&Et5|4Wrr1T4Tc|8)G*kbGXRoEXon0u0al{a~Jd zk^o0Do}Aujro13Z)+e=zzk6X7{A>aQCChZGr})8nt= z(7)39hq^VLIs+ZNFG|X(swn~tN_Th`$OmP-RGO_#SUUL%QE}tU0LKKc?MkG2 z8_%gWwIsT|X^gq!x%2u14%uDb06EmZZhL1pulK(;9bbLt#;?qcXF2goAo@UXqm?ce z;AlOG_h&pEz;ObFyr*O3>^g^<4x$`bUb~bqnyMd6sla>TO2T@k`{hjF!MBd>Gbo_* z>t4!GwcJ1;4kIRu)hTdOzpw`G-ZeZ8uktE!+om8Vvs}k z(lw;hl)1IsrKTRuwY47Ls8Na7I?EMut**{XKFal~xRPFS z6Noc^zfnYdYdFBMIkC~q0S>FUq7ap&N*~}jj$2=wY;fbww?4H*qj$gYp%!_RBYcrm8jBFSWC`MzEJgfMPM0l3 z?8;@HEn9?`C0=EfzX2Qz7n%u*L@%6Y_DzuEe*!oJH)3ahhLi;gQCW=q)ho?%cpVB+ z$(+9wg=;sXc;^A6?mmRe`%d80nQ#LfTat>gExC$)?uCR%Ik7%gp(d4_YTnDM;lfW` zxQf7r10AN;@F_dowwhPPl=Zxa4sy8aDLS@7VCG-Q!MyX?SRPt@1K`jxR&%_p=RO;G z3@JK3K1)AfO|%bi#NfB|W54rxNWR5DO+250u~)K8sW2(23ghD|FfqOo-3H!Gj!LVo*Vjca>M;N`aZ>(4Y-cvd}YG=>0Xn%+F+^|Ak!i`)GW$Ft7 z9w||}Y><*A!@_kGs^Y>^Ufs;)E)mw&Ov}SzNk>=5aX*@sl}$j$4XR)hi{2Zf@!{z_ z>`iZm0Ea?UR87STQAx$LLn&CC2n3xhL6isG3J!%2umk!Z$-|JZOKrXn z9r)h+Gtrk0zU=J-Iq1DF%a?~EkH^i$Tl>9AEvhuqV^6jv745N)V{?znrKUqUI0Q2U zHJmxH;c|1B^1{zLZ|D8psd*(ORT9r)^gQH)4~I1^Hee$4N9XMd)$z{J0!@4{!}^B( zpvo#*CJW~SiK{)bBN#_>k{AjM5%Q=$V-JBB7Q8Z^vjvJjLEfa9^z!M!O-miNms9)ur z(eWEy=OrxVy}HkLf4yodUS197aGC=ZL}!cJ%W?FodU$4IfXBRjg14W>$E|FKax2_D z-plcE=LA6)I(T+py*7T6d1Jt9zvdly(7gT2t}(=McS~R;?wueChUqU>{u%4Utvj-hc|+PiNgr_Q`gQ zsHYyEd8m>gvbSD-_BJDq18 z&yq*#zSEHvNK>fIUCJRLP@wb5iDg@Em%4}J!kqU2<#lMbwizg}aqPhW0|L5!es)03 zlBSNT^u{gEB~^mPrb_Ed9norJ1&>u>ZT9kz@Ep8%ma~KAU4zCl?~f@g*nVy!04If! zgB+@wBE^J-j|6G#34~n5tqLRI)PsgzTXj$LY$%t;eOCUp9<2f!EP1P!43+By7e=t3 zbxqt)WBE4TGmQxY7GpSGxvv8on!la>rJN$)8Hm zlgc5(F|Gy~R^#s64Eyue`oK*+NjdZ{qtX-&cBUGvKB{iroD@S8Rx#i%ftFA(GbqNe` z)Kt)}gA4~dWd6%<1{?n;fTP*BzmkYn)&pOqRbcGlXbe1&ih+Fp5BMqx3qmpwUD=G1 ztBnRi6ry64UQ|A|rU6YAs`%n5I#fQkxT+DCGt03)stB{_Q+!PSLZK4V!e|j?en7!< z)TcyNBRI0E1#nFJzYRG4f5ZMez~OJxB5QB7D1n<=4|YV<802_Aj22pk4?}2IN-#?a zC=+V2D!mEoXe~+(KQ)I`83s5Ky|SSWa3}%kri6wT$RX!g+ip#&GzEuB(e_;Ag{UYz z<&HPK5S6=nerRw*c3-#8(7M~lc;u~*@alv`*sy9F&aT;jOFqDHe(_>lSh55mi1#n2g5w&=sm5jB-qjTpN&i@i|3uYPIh@I<&r}zVoByN|sXdW_`F1B18QgGxf zS%HG(t5LdP3yQbzNBZ6)h&XZvr_V-Ue_R&(t;qUpYl@fmLV#mKoFGQE!HrD`^)?l7 zkg7te4hJ}7s;(j+;X+gtwjz^)!&Obuynu%tGrq<`U{>&1Ty!xH3+dl4y;8{ID^#W0 zw$*X8&1(Aj8>09e$5!K`Gx_MTE(U*?AAx zS7Sn)lpAvBOE4~~7-MLoql*o2C~Rf;<(w9%A&{YM-Bf@>%Vh!^f*gVy200>1%mf++ zo=LYdt;)rrFc%A3xsnH!eN|YAQ*Q`v2y|#(`8Jeiqt}TPQ)&ooynQyyKu5pxIT(D| zOEN0J(f14;LR$IJR$D)7$dhpsqi!qirVia$HO3IE4FU17j2!W4LSM;wpow_Y@`~@}QECHq*beCU3 z;TX=mJQQ?<{ge|j0RyMx&^i}NBB&rR-~fl_rQDFcup-t>>J23sZMP;F9oMIsDF=s+ zCk2M!hG2#4uRg#bxS>iZQfoNCq3xa*@ZdfI9Dn5C`NQI9{O6od4yXtVqfuyz+NXBP z1Y^2xrUOb7=#Yv-3J!q{2RNMaL~uuN!}W#B#UWGDQH7{jWfY%+qw5yWlz*e`@+h=l z9)XT4Ib9ipwky5Tvh9|ITA5fWIKB;VNWme%5qP2)uWU_$Dsgn&C6G~QVJIHp@bYiG zcBmXZj$TE#!9ICJ)xS^?39IB$C+#6l?<+ms}To{T6H3T!f#Fzpc zF6V~k+iy)b2-0asmMxRXiI?NmlZVB^)@eAYM>bnrq^ZUh^i zdc#v*$OJb8Ap|#G-6d6rFLcD9h6~;Ly}5L+o5qaM0907HZ;41S*w_j^F2a z1&`rXKyi@6DM-|=S9Y_H_hs`sWC~9y#9If8Ex(ADW2DI1_SUf`{9$=99-Wp)hpPnl z(SguQxH+r-fP+qq=kU@AF(+EiG`FL}+yXe{WYBr?B=y%FOLGu-Jm%gH#+AisC_z8}e=_A!)xnb0Xx}$&|QJ z@#<1te4lL>sE~?7pv5H*eRz639-HP}kIL9SIz@Rx=rGIx9-HZHYswEg?{Xw04cEV? zR@#ydsLEH$8I=R!{iE$Usg}EdQ~d)jr_}m(Qlo`8=-+y&8`Q5-=2%=joo|6Dg_H<# zC^4uDDRD^$^^dUKM}t}(*fK|1_n6z>J(2g@w~w4v?I#CU|5%&aM-CUA#s7(2hYCIi zQw}lDBejO-aPd5HkOXFU&9~A))_BwO?uo$nw2hWqK@Yx)4&{U9BEnIMzp+~D=O$|-^!-qbU#e~|am zl}nYW8p%Dp|6UkLB^`aZOk3C~)RiP8i>ENq4MP|xM9!#sfFIsdwD@0ry&wee0ETr8^2Q$fE2sju4=?cmg%3EW?G7k;ZQ%XnI)8J^o#~$H z-U_VR_Zq*Cp4Ru1zGwOU{4mG8k}2z+sIOc4NB2&~{dCPv<)I|6mMB@r=W^Ij%`&1lp7K$S4wkFmyzAvfDO6L`ER!0AoHHqlDAr)QMCEGeB zL@B1dK2J?uWtby-t-#)$KqqSYX^deiN>&T!S!$sVK?ls#SZiJ z97__bup*-oAIH(zr{gXK$CTt6I`$Q&P_S~ToJ#2+$T2cfYK%Ms98z!uURJ0E*V9ye zMBy8@UxZhYMUcZy4T^*n8DLNa6@d*A*a4?AY&z&%wr`nAxGKr1H&uldm96c6J_G&E zrQ_{0sRlU&Fl2%r11~5y2#+08iBYjt7Mdcc@fN@QdLD~I@8bzPPnzWf5p3}kDixT- z>y}DmLUaMfMdlgU7!#gl(+Sae?1utOjxWNLgkl88dD}_dVIYM4U>svg?Ati_4h1#vMw@Qxc5~y0G6ki1uXZCqbyd__?lCT?63~ETZ(S1w0 zl{9;mKiFOLW4<;XT{k7;buLpM3nHmZ>>F#sECW$YQF0Ml{PJbN}K9j0vk$_sbrZ_2?%B=JVgo)0~~a&l_=8z4ms^| z*aw`tYEw&&=@Mkp=~wbkg{!=^KhF|nIt9nDQx$mkWGP<;ys#9(4S@}P*1Xgl208X; z>hfya#)^>`*@2mgB(+!)sZhjMi&8L1cAVvyr#QHv=IMi50)B{X%A!zo*2%DJIF(K!S|y6niXkQp6I z+bY?q+Msr+B(PK`ukPjb?B}%zkQ`864)tfLS4x)W@RFyNv+w!BIwK3M$CvO$l`pLN zw_E_iXRgGkzq2PN&`HqEd`^IzVXvYJU*_dhnUm|;e+M}1pKl-Fc#w|02RNGW*fg&a zib7SCO!Vo=*YN$xjd)@zm(6IfN+qV;pb2XHDEKO#nN*3NPO8O^RVJ3pm9yivfKr1S zo-#vWC;lcyhjMRZ;~%-+w$bOonVc%LMd2s~p3`N|3aIozJ#OGy#%QWOL>TGHWRqvwm+QFY-MBxN~A16kfa0t>q5QWdn36GR8B^$7hVtADFGK5R^UyIpr4 zzj>XmLF2+y1c7pTubH!KiXl353cYa^YXpAo_5lw4D=(+njjNl@#;MQr*(qMkc+Hx+ zv8aBKX}!ske4FkuYugAZ;9LdZ;|L324Y zTG8ozfR6J0Bd=K=6~QS1A1N>_%tWCTbUYP4qG}hd<>YgW+%=KcsppmV#hhb}6<&kd z=)i`6Nh|j0!vYxGMh>o?NlWS~<;BP*JgDmns)9;?YMuJU6au`STX>JX`^WZZnVehQ zJB~@IIRqXa7+Hz?<V29gWQ1cayu(!9MH^t zV5$sD7^?fPWh1?@=Sma1$|^dpvUCxOufQ$wH`qS zJb+`IV@q&D&_M7&ZB%=7@6}E(p{OdfC?v)Ui?Qd$*KUK3Y{xAlfqxy&vBGf;%+`8mcvA_i1)@RRg`-}eWU(Tjw3zG-&182_OVqV;TY0=((&%+@vW3>An&sv zpZcHs-4W=YaFqRSph9Czu#5Mf^VYwD40f(>H-jENz|m%Wy}?!iW6Q(g0~{9Gqw=^s zwtXLIA01osdREw9f^zC#DP3fO9RfspPH*KHQQx&1U5Y0sW})+{O7z^2j<+_(TCR<* zYhn#}D8XJ=zV~(Id*2&An9*Y+f8W-ppvPuz&-aR+8xrx_l2E*|@B*E?vlz1K9KJlB zhCOsdLP~(dG9b062?b@%C@gJ2UO^3t3(C<@T!iNGLZH4DjkQ;;>}uoHazGVJe2~IG zg~CZJM~C-Wa6)!XY7Lt5VVKn_bfoV3dV?OC_ra1%nLx*Nz|qLv@-PNvaU z$i|SbQ!w*lSHh=|lQb0Mdd^=w)lO0U)<%`?DZp(;L$f5l2vtXYrp^_!8sb~B>aZ^e~8NAdNU5bR6H#HQpz0~{OK{}zrS zh~Y~Dsy=lJ4lOtJ22Bt|@X5;a@*W9lIEdi@hg2R?Vt8RIo(XJ79ing)FC?YT0LPc7 zGBEp078YF0H&as5B_V}a6H$Z>F=YlgK0KY{100v|yTuXsEq&JSEKaC2!0}0Z874;+ zT4GHLONlHoU=bvMA?ICT84Bm1338Y^BP0()&Zb-Ck+F30Wn)xoR)E8or$RR5LZ*eZ zIKUwj;P66K@(gbDKb3A%DLMo=1UFP&MN0li*G#|smOH8eyuoc;eh*AR_ zBV!ffQfi6~sX^X8m12NHRa1tCeiA!dNl67h#z$0O93R**AvKoR@%1f9mH<-@yBvDYtuH)a^X5QzBevM4;eJlY_~i>u=e zTD-XWI@l15kO^%3c78a1H!s}g1u|Yx=*+ql100$c^bq9GRB+?Z%i>x9$DbBQT7D1Z z_Rv&-Lm@RX<=>Fm{CY3ZsM>2v6YeXpA;6(NaBxFYH*ck4*Q?Ls4RCZ>pKNgB4aqFG z(%F>~M)^6EbW4C^V**_+o1bD=Q6fc#042Ut!NYht`1( zJI{XsIJ^)Q4{*pd?*PZsQ=0IULOoOpc3QKAg*-t={+BcA@cS8s_{)qe{Ap?)emk|o zV8~BzBt|NL$dzSFP3V1?O$JfA7=h7V>aABPkjgSmb%*A2?26~fBGs$xq2Qrt4A z9QO>bp+mwxqf^ml+*Lfqb_j52DrJe1ib_3VAt^K1#+lb_s%k1yZ&<=nDLvSBnUjGSJ+2b1$CTlopdva(CFTs=JF=AXUP4Iy11(2Rj)I*s52IS7n_lJjt>1 z%!C~LWK|dC2`a_|0l8=$n9b*=+^TqdmyYR;fWrsB*pID)n(<%|+anMq zXPft2WuNVS(D_vkjR*Cw`p8_gp*^U4Cv;HN-dh7I?7H1O`d)ySY*_p0_!^53kIu)B zC*|P>qcZU1sBGL9P-y)ir(NfggZ~h(Um!vu3*NDOjy}yCa9+Q@dlcGn@30ECw;B)9 zF_uGr*GP^7jzL|EIqht(uJ3k%H=3yh=s@e4xMKwShW&H@uv9!VE(JdwpNj8~$;X2M z#k?MUzwtP{2kQ3+0=>S`wJ2AIDJ}c}hXXOLg2^qT*w?&Xt47qKSmU@J-E3+MCEdMk zcr987RO5l+g*;~#+5}|avC+ABcvKvnRajJQ7lx&~q+tN*?i!G8>2B!;VJI28q+#gp z?nXk9ZlnYS1Z4o}8bU(q-`{^a2XoEAp8c+Ot^2uGsbqfy(M=NjC?jZmE^%f^Yupa5 zOx$D9V)80|`|t-5bGKj%<_(Nz_++@d_*Ddl2-?LR#q2xein0{1a_p|lCyEA}esK4u zhv|F4b%dqEq-^kX#n^)6VrwSGekxYdH4Ud;cRUIR-9LEzeVDu+5XImlAEcHQrcUpb zuKG!o^2h5}JqF5M@Z%e-05>j~ISnkRt$Z0XPG&&)vJ$hwO~c+l{k~(?Kz~t@Kzhz# z5!SM~Xs0XF0HQD1MauAK&YVC7n)`!4mb0!(3^Y$2Z7dZeORw0Q(dn`L!T!vYsaPg8 zJUj}v{`7fAF7x`V6ZDFTnZZxgK)Q*hfT|mE6cn~it#R)eAU~n{@l0?AtWArxi-yyn?q3EWmB1#?yHJ6FYdjlFdY)((U za%9djwR3x?ICiuOsvI&?XTU6>!0iyNY5?C!>ZXKD5cN|+*7sMQe@WcGAD|Z;AUcu7 z-;rqT!{r>$NU>4>EQiA`5SSeDn{~lHM}rkAD<{0M>e?#)k%)RH^~i zj-fF5&V}8Nr*(AjZh&n|eMy;3$P$SWAutaHc8P?)zCqe z06;udr^UNVr#Mw*I3}#)RQ6^rqUwX($prTV=YR)}qqYLFrhi)Q%ra-z8$^n2)TDTL z@iEr89g99NdGk05^Ehd4V5|b!O@(XxQ@1LPyoqAJA(jl97%q_9A^r#w_m?_OVqy{gt$N`3 zv1oFC`^?+b3>=?h;D>-a`s*@!y;(BxP0*3$pos_@x^?Z}NnY*N*_FE!WAIB03w%KX zXDow>cv0#7Hn71{(5iLwbGl;=0D(y4gaw$N&iF2qGy$BPjQ zA2a4L0w-O3U_(`&RA3#=FoxmHs7=xne235qOPy7{-{s&d0(Ue7{1 zU4s;InduC$Om;-~yIHV#d6GNQT2xUFf!dOzMCHUPPCT25Y98vYBT-~oU{!2so@Zw@ zjPr~b0&@}VDede}AeQLzC68L@XG%T*IYnrZG*1%W{q(m9vVD5r7!vZjs*4yP(K6R# z?U46;^fEK+@6@FD#~7JdJx?}$MPOcVf0@P>2?7RA(bC+BEiGBI`58Hnb=C4Q>ytlLTGYg?yOm?sm?Z>5or$lT+i4b>2&N(4q%7nD=5i@fc#aUl)Xc`{ArU{r-bNK1YTk0J3P>P0D?&~cJ1QSj4s!_;VvJ>ey*wQO>eZ|sf%qf%{KEXXTnRc-Be@X+zVe6vX7Y zEGLkV^4zW@3ig<3B(-hmIdq3G-BpAaeM2e5-!&`dzsdC};goPpz>lz4k}UCj`)<=? z7b>2<=*D{;BwJyU*@Wiufsqh z0Kf~rmG*H~oDiWc`lzO_ZbJkt=bxPz5eJl3gZ@@h)#Y8t(uKw@^o+^s=uh?#qNi35 z+9!LfxauW}97hLwwn(Q)1J%y>VrP`8bDGSQ6QhVwDq~pap;<&Iw4U(!TNkDue(gx` z@ZV-v=F@7u>lzZ~#qgNOO!yLxsK2?$7o=o#qfLJCA}w^IJW2jmbSp^PjYKOUmxInRC zta1c4Vx@*bLh2J?ax(W&xviJjOj&!b{9Z-kO(y;r)5>F7x*M#5K!H7c&v#-lP|;B- zlk)iY1+8mgR087n#8vYrroUYP6J{L8wiU z-ozz%5xjY~qi%Nb27vO)#k=5dsKw&n$1K6KC_-W%u1C_3_3@G(gEu2)QbMzaWg=hvi@6=SN5k*J~eG)&*NBZ!{|e z-;u^O`Ol>yp;?qag=d$s)D+E@eZ}$QV-3aas+JGc3d#tmQK`j3km&BLk`{9O@cP?Hxwgy(8eXM3B+x9!NFWuYHR~K84eG_x{NJNtS zqnraT*6G1nU2@{dASC_sSO%rcOQ3Ud{;~qweTn){iz>Sij%}%PZr?_QX&X~*U!ec^ zyz2Vv4w7U7&VgiQ2lxgn3;a&&+q|niv&C&2$qoMGK(Or25640>5x9Kk(c-W$^bCyn zb}Y9p`iTO&wg(`;rSnZ-jx3iZ1S-n)*8bhDIVAL;J;oIebZ~FrNv%-R<_{TysdZdY z&uUN1J;ufm7Ui2z-bN*!rgeCMS4*fb0!<4rTa0X&+HqYRUixcrC-N$CvM1i zH9)1NqDt!Hcg~H0uQo{HHqFY3I>boQ{giArYt;*8k%n%0NDSx0ZrdD~43Lbx>LGmM zmo1zWPBLDpq7h3vW9#`en`q#j~0q^^Fr-oYD#qaeZzQw-; zawDm*Nu8Ve`ewOBWf(3|KuO5#!kO<+4;|ok0cc9J@gpV8-?(d^Q?{Kc{J6sL^|5rR z!y*pR^$nIwo9f6uM$qgO@HQ&?t{VI?GFMcvrhLzAZ>s}EcZea|Do@cRaG!52qN*Ax zLk9Vx1K00y5^?w6K#Y%`>-kLm;qF;UZ(?r7!C$i=g0Zd&;7+hArQbYji!iG%GVpK? z`26Oq6_eTudt|5s;cV5luuSTqs4&Ab!yg?6T4j3}_xbKoV2#eg8`xlpzhg;Z<=zP0 z29tIa%jUHYIGl!?7Z;h`-7aW6jm9wTopnT1%?OuC^!}*YOoPPnP!xCAu$*QVx9kY^ zT$#T0sFD3>?jYVNBbWhAWk2E$)9eol2$>0(8oh|wIhl8C>Qbn<47Ru13v$>6Qmr6n z(Bt}lGow`pWE#(QDfx>6-qdOD-3zL;ECkgLH@Vv z#SKF-0dtjj66!qcFs>eRyDEQn5qA+lfAD8sl4wcWfNZr2ocZ|0rOF=(ztGjhxHg=S zndvX^GP?=VGmrW;rx7Q7d&{+PBRaqL7CI`YAM#mtKZ-Wd~R6!?Sz5!WAIY zdGP3$8LB<}5)Je4iJBbU>1X;HdOZX3+^inE8f?ymj~cNT10TN1V(zx&4I3UP?hB$-uB}etR*z`wnjtEBxmk8Gh zmz=s7NNEf!13Q0C=WkxT1Ea-et$q5aiks)gfyWMh>Xn!}CQutXueMJ`7yj9#p@8wU zpWCSR@#MLK?dKA;=AbpRU2vHEnv(@U$)E|E_u=PC!-4Mw={(^B`UgO(5RU&g{~}r? zyzJ=j)M`MOl6Lu;2tckUzn|y-on{Xd8C3vl!UR0Z_-?(u0%RxIN~Y$uC?M=N3nBoI z5$Iz~7JkavWc4!@m}kaJjTW)(CVT_RodCXt7vnX8q*+3GQ}N6AhGo;gZ8|oJlKS0M z#^`>GZYI0US^EFZ7O6$XKKtIO-`gTg31F$C-V#9KWYH8Jtqw0QUm_30S+G`y(WqH- zi1z`X@hQd=h2xXgl@XG%i(0Idcvp73c#$onM<_qr4f4#Vy#OLXh;m+<{3GiQk0c7gAX+O_Rs`fq_WHOTq3rCaC2n}L0TW9{l1y^AEZ)-Qv z!4V}%L%IQMS7UNY_V1dZ9W77&voK+@1w46o2eJ zcd+STvPMFa1~7n8uy(aSB6KdE-6?vs#~R6PHU3`&B2xXvMfuz6P33oz7_AktZ@ zmbY@>)cGaH^*NMAH!SopJ^bu?dZfRvF!AgG9dj|ZB+VZW~l#qW1VJ0WV`5YyOB%Z%;H zIS#}(<FAX8Ik1DQ={$0nQ-2AYD9bO9rQX~7xx$1RXO8^qc2TBbDdJLLFRr} zyseL~@W18;{-dtC9}Uu72mQ0{A+E0Tjwbx*?ruu=QEtRE)}x60grEq9~V$ayypMZycJdZ_ojN9U2J{D=bkNNdaQfHOXIHzegQMI zP&>hp_;5bJM)I_HX~db)G}&X|aeJQvW{5naD*kf^`l<$%0F~rh1<%B2q^y_|X@-4W zqOuYRJjUmJD4BU!vBvC3|IF91c1x1-%j_MBKK$F;7cE7RA-3pUO{_7IGgVHF;Qgi2KWXpyNck_$g1~%D~lN$#ug@LN$$Dz+s z#VDMwT*SajqUH6_b(;qt8<9Tn+`XJ5S1&Exh%y2Oc}V(O>k6fXOUxc_V@#IeBW}vUt~;n9iY37v7W0e)}|`ug8A?w%B;Oe6*5qG>KnO3BmRd}$85-$)vK3?D`3 zP(DGqrA)_o=S5;j_$rOWNPk>#D55KI{T7G)jn#j)Y9XeJm=(Xh^W|BBWUq&2kFtlP4qimzE|xE1k*K6!xkM9b>TslLs$QB1JG{#M5+oI$F=f+mP`WN~Edi#M5WEi8=zt)CxXd%8UOqQ$%zkIEE9#t%=bQB?a1YKc8Z0b#961qgRpPM-7u z{h&Q`ZkzM6qfWch+?~x5F~Ge;qZ`HMUkkXGc5_1Cj+P=wqH3AG-hXQsYjFH;h1g8=+(sOK~bFoq^7N6vqQ@Y7J-b;PYYFo)!P+S6wp*FeN=P?we2co zFo}p>v1$wPN|`6xa#B_-dYUO>gV3xK?RQ2#Lvd_ zi}y~?(mW~1jL4xD725$l{O0z=GdS*;7Hp_Hya~3Z`XB)eusIALh}MdgY-X_jYw)j@ z(rMF+`ff}y^@)V-pboBNBz}d>d(Z)UCp3^6tLfGiRSGukebl3Q545eS;zeFo@ zaofkMn0i~8Q6&9#OYTL)S6sIcV|CgnpwGHgz<_Jne;Hv=ivg|zsSLFFSUrr^?{~6J z%PEk=f3sGmwSaq~@jkUlA%&XKBuh8H8Mq8eC4@pf)!L9?d!pVUuFy0EE_T1Cq!wIbm=nx1N0aw+VfS=^`v=>R=XU6u)~vsO{MU#pt=r$%gw zsZqfyJM^r-K>>ZjoQVo?viCIXS1%L)0o>P((letN1w?3BijzdK>MxH`3<(G&nXHRV z?12;%oSaqC^J@nn@yQ#pq65oZ*O?mUR2Q3F5aZ0N;Ro>6j#>=mf z)c*UvACB;GN-{P_|9*tBfeUAq!o_IP+>VNU3?vEvq#zF$hv4 zjaDYz;{Sp#O-Y<=vKMA2E)dkLh;519#f&UXoo%!ED!HG4_A~CrNp|dbMBDlH0{iVj z4cmjw66u4@mEwcXS4Gw0>f`CGa23K%tiy%9b<0} zM4~F#mkh7bvCMwt}~{Qf&BpQ67EEy0@wGlMDWgE8WiW{B6cIYh`pKmAl0>^HINK3$7m; z3A|`PLfkzH3Q?!0rP5R29ALD)IN#54li(Mp(Mm37lwhanFDQrz%}@JasiihR=fJYr zOgCCSoZY%F#fy(ZW^Z*I(04`4G5k%>^FvBIi}&C7t#k{ioV52_g=!-Jn^u!at7A?zWsj*@UY4gJMVHX@G7Y3C-M66vTUdm z+s3#%in4zXIK<3M3o+1tff92s;M^SO~=wspgSMzjy&cuJ@^UX@FC;; zbL?Yo!~Mv{E>yGY(*OB}-PuV}Vy!PB;=LDjCntTelCs~|9}Evrl77qIb3^fv-^8cn zMkgAPB0JmCRb$(OI{qm(lQOe4_1)>qb)NP7?)HgjR9DBh>cM|CcKeeAf1y;vTmG~K z83JQ%?T0@K9)~YtUN#&){G2PnoEaEnyRNUb1Z%E%RO##H-*N?(CSphFQD^E!ZOrKM zqLFTGVolyY7U25q-j|brzKD8#Vj=r-=YDnl&+cj`P&c$M|7tBGjQ%w-->DV0)a&#} zJbqGe-tVx*hYRU^i%5ANbJ$oW{Kac?EK%~P-R(y`XNo`}B1Zf%>)Rr}pdb#iYC-H2 zbMwTZDJp%#?`2iJRDX92YS`;#G!!ez@pZjFjy5pWd-(!=kAD9{e0QUrS_wN{ABtND zJ%_ntoQl0~P?&4I83|xBC{I?fzKxQ=E!PvgkVA@?bF{Tk;DPOZ597hZ_J4?PQ_a}T zWZ8+MkjA_6|Be2O4nBIBns=9Vf0GZ7uKGlP3~ICb7e(yv!Gh(kFkfA!QHABD zj>kKM`>*0`QL8|4&;N~auGkE^*h>Q{!(C=l-!R+YhCLMzjfSxw71-jV%-mtyv&(?m zL?hGgD*uIY_T+TSPhg*sx#`ET7vq)Rf!&J`Og9A{b2q(6>I8B|_e};~g7Gaybg<2j z2EGBJFK$3tl$n~j+Ut=EkKyv7e0RVgnC-SSqyt2*4wH^5?eK!Qa^7JnqlxvVwOTS* zpSlSG2L&yDRP`T3j!D8UL-GCI#lxgp7QOo~2L)P*@Wnm37C~{!dK*DJNW<220>Je; za^bK$hf{O>I$WZemRG}bR~c=+QfRW zLnw1d{zhZXbQZSH(OHSiiK^P|MjRUEt5q0L9zzGe{aZ#6I{8jyVaC*KIi8pIon|Id%sR}lB)vX;q(i#6kn1k!!ahO4MbpkXhoGl~vI zM~K@2Tg6nl#IL-_qGJ%fsZr=)CAO=mqoqC~^0u$2t{L8Te@J<|#+*V{)e1|U;mlE` z6=rNxDxF%(Y~B1~O%W`AvF|613=MZ{B~%;orY6*|aY~3kvJThPuwBW$7lacM0x@ha zj};%!plN+9B}u)Zg&Z=yQyinM@2Z_me?%mjhV&|a-`;SShs5D`m8tnLXJo^GdKA#x=(vipzk7H_@?syU2rv}7|Lx}Hhyc%YA< z{-ikwbf0=Z)L<{f-Eb5^>Vl{Z>7z8is1DU7ql${xp*Cm@F1)j?LrQW#(&LIVoSVrt z+2v zJhjH)`L`cJ-QSvd-3>3a*#*Bz$_(22ZFw;xz3XSBIq}1Cv!j?#(Jh~TVwi5X_J0ix zIVlI)Q>r2yqtP~{WIQ*3XeSRF_#;iAN=x`gW3U2m!<{kC&)5LJv}OtL zTGOP_3Dl6H0p#+I*tT{t#@A64Ask(?oPp)=$$!A`QqEKvc#%t;er^Y zY(ANhM+V(h!J+R$g+qitUo1NZx0rSM`w1B0P2hL`j zG%dex@;MGxh2Mx0ZUa`*uVM*#QbOl>K%u1B7tLDr-%#OC!D3Tx-7rU;y3tF`=7=eR z>g6p*+im_EP@$Cg>c48v7~VuP+i**?YS|rQx`JMFG#n?Tzp2GT-D9i zPr2w{#n!@B_wxAekA=T(dhQls?7l7W6u(zz+%5JPYSXrQ$JD|?wUUDBrjGK%{zbax zkj-8wxCcoK4MjS~IPSXm+u-J1B@25+<~$O2TZfqLp+XxH`pB7yWjl zZT@}YRN1-43Sxz^yUXc13%*o4nt7>um|`46`iA*qM?m|Z3#AIfDX^s{DP^WcY_Q+T z^otkIS8o(#_4n>C_uSUBlv%eo7yea~8p>{wUANcQlm^o8Da@9DntmX$cQ8p1rX>Dg z{07;GHD8xznDfG%sNirS&4Jy=Tm*WXg7FtOH7mWdOn+iNiIgAp;!1!BZSU9KBjt*k zWNFZ0er?(AqAHs8w%aaB-Fg2^1L^TjT%r*Yhxje@JpKM4u>QvJE0DE|t5r@li@{8@4b#&c8r@GL`%8Zm+p`Azb>#rSN4>ke(A^eQ}qanh- z1fvvJ9s;9ozkjuP@KQ?E2t5xG>yvK8CQz^GAjCwWCcagluhnnU*irM}9Y%lZL^|0s zD4mYb^)WM#E1IrD{J1c^GVv$%Xl{~w7AB?W`^zzQ>N1chKfv0n+%7ho1qo_Ydjae` zYgXM)^afQ!f|%MZ?cekkW9{^wUbw1oxG5=}3)^M?Xg$jxykXRP+uPYqM1YZLT=epu z^=+7Z4?eWmw|S@c(9#D*g80z0o}&!nHequ1u>)OsB^xVK!o!4d%l|7kXfO1!Wk8=9 znb6CjF{3_l{M%)~S!~dQojS*uN3$~eTE2D#Kjv{F($j_1+1-Rq^D)Q0DhJ+BG%S z3p0f!zRLXGIQED_%xBFD5h0J=mZva71?>nwf!UDiwCx769vK{em857XR`jJuHcPw` zki|zr65D#Gl(EHIyi{_8+_(3xVHl$~CV}^&ueDhd(HGU$n2M};++Wd#K0>ZfUt5DT z88pA`FZtjvck>anCa;GW*;hw(b5;8EN<|ih!9SGs9k1QJ9ACtV6gzY@kZw*&W$P)T z5C^PT^vH#ioHRW^Bk#>!pv-~ui|&_N)GVgZt$c!qz}sZKchK!2!ALrDkHbuv-^ACE zFJdzO>of7!QW7LyUli_JxJaW={Indu21q0^5`pr+Zq?xiH~GYHB-ra{S9QcHO<_`T z$jD8CeQj1~Io(F^KX+A;?uFztmA0&YH1v3*p zBQxo0?ZJfRoQ$j?e!SO(cAjPI)Ryj2R#s_g+j@Nq;I>_&^96cZpW`{6SU_`Z!#U;r zm}SJmBE2uu%lDZqIR@?>^;$U?h{;u(7$oXnw7#KK!AwvdSvDf{6bBj2Ds29#WjpT8 ziH$PSJr7YKqdBrs$LAeK75~01&&gK=^J~!><>y|{Tc`=LAZp8El1S^QpU?*u5uJ zHkTB6V7}u3vBkPc=l=ULsq@bvA{QsP)t~mYS091bM9>|0Yi~vbxV_(re)H!t(0P;h zh^D(YD~B{^`N@IiV%c5h-?e0{bO^d5?+0r$1!Ti@jb%5CH(6bsB7kv_=MsXNmEy;UV2(@DR0 z=NJjdmAHqehltvivnQBYxe*Fm^< zE+(!)jdGN1@}@*`1`Xrz7gf#(qG9u=q!hQ_K;~%@P$aKCWp@hRryOT26?<%rRQ9g% z8kHjHsv$Y6e<6iVB5?J#aJIIM1-oK>n(_lt=8-h`UlXyX zMfISw#;4T+t=rqTh}uJ34ahLNWI>yJ%YWLGPbz4{(9)GUeV>gYmrNN83r+($cikUVE1u@~c)38J!(ZcLy4V~Y3x%yNmcU3=O(j&UA9hNi+*~_e3-)Cx}!QSE)Ykv&hq<-0LcRy|y z6|rBp@^GJ#JEJjyCTM!jotR`*mtP*Dc38f2c%$T4FwrK^T78-4$?}<~x-I|QfFChx zM48jgijM=Jmge)$W&%aOCOSQ4I#P&vkC|v_-Y+a%vvXI7Xd6d)IrR1dr9za!o7Gg0 zx@66@%Xv@7km>C*x}LK>Y`BdAl0hQV8?fCq($HdEqIbD=#wh_@HNUakoC{k416Ar+E-=` zdGQXu8H5YgwVJn`KerLYQNF7ix^RbL!vxwxl;gRNcV;4cpti*?6CKLP_X=OimC_aZ zRg@9WHGAXuu$hm3v4AqSFm~SyA`sasFvT$~0E0qe~NNEs~Yv8%lpa z&PlL#X(c9p)-b;9^Yc#%`*z=#jBmO6vGE{=QKdk@6E1ffiRtKdxZb-qCMZtjL-o*= z*%LZncz3qfpCly>e)9_Db|J&z0qQ~=!uN4OPFLS#r}m(wmLri(L6P^@oO7>^0Y%QtdyNrp&tV-^`VhLh@~Bd1H?5CdxL}rzyJl@jVN&Z6Yl{ z`(!wYix&1dX@1WFYwAIdDQ3KTm`=SS7H>NXOn!dwIi>Ds#Fx&=d3O~*@;9r=?^Cg68>#8CwJ4rK)WMjNJSA4JKRH#JTdUFmN&`G4o+57{oJ?p`%2 zPC9t-s0>r9sh*#mWw+DV8+t0J5|KZZ5E48dg(ge|!6t|2B8DNcdkJOb6qbgr&!@bf zjiZ1TV5}p{o@vcDUY0#$@VKC!!1?eS%G>h_HyBD2b#XEVay#PqSiCp1;NG*B>x&QG z<=nD0{oY>jXW;Ic*YY4Im}TKM_VVYJnvVsq_vdL1_`AWH^Z^vvH%`Kx5sxO09K>Ri zX}>mzQ{o3P!cck%N_)pWk3;)nsQyfqEap$zAAoqPx;KMgcBoWWA_9bpC+t748Qi`7i>V=Um41D&9U#pqIIBTpG8Dq0c#22Sg z6)Um;4;px@Ryy=V!M+Too>J<-=uoQ`divt0sXQdyg=kKhI`4-g2eihjhxOT~@~vKE z*gDDy>f0;65wtAGO$?rNd%ac}PYNW~F=D6@2!tJuKcU2T>1z&uj+R#jiKore*7Q3m z)0>wA`{o_RbJ;3VxIy1rjx^!?zRkQ|AydCiAAAB{y3^1m8}~ z-~CqJZ8vR_iEj`ja*caLq(fo}$|UJ}J25*O_X;>9#LGsO*i^MStSaYoUuP^1W$?Ih z-aK2t4T6&O>Tl^QhY&0h;!FfM^8U$p$L!(u=x0V8)w9GnKrj{5Ox4YggCbI~{j1TLqD2aou6S}RBqZ7LPj|^&tg)$3|K~Xt z18d&G`@i%%w+LenrIW+~grp8d3nTKEuBh_oCxDqrnQ~+%V(hXUODx=*4;*5J)*h`v z@4j2?|MSyGtv8!jkU+~(-L}2Y>GHf+c8^JgnrQNlk)9FIxk|> z(b8tK0L|y+vh5j665Mk33jgf&2V0Eft)=s3&$|b-k?0skZV`NwIQEG*n(`qIBJtkd zItAHD5oL0AhQd}JHb^X?nGt}Qk)OSeR*%88v0{Im{DLpPZ?G*z-wiiz{OOXY+lvFW z)$*;s-O33txm#eJ z&+dmz)0`;r-av+jn1|Jv9?y(;sx^`qYc0K*3f{f_-3o=e z>+jQ&oIWb}^yIuXH!bP+@}s=OziSMrFjPvU>36(0waC`PRAzUZ4Vs+u=Cnk51f$og z03i5@M<^x`bwW~S%qFI`j{Jp%cy|EZ%RqELmRCoRMc-FBgN`pJSK#^$W$IZNU*k znPjRhZ9~!(dWI(EgG-}!qq50jn3kniJ;9$DTY|2!6E2DXA=C0;#H1x+L$1~pHUKr+ zldUyZpCD%|Hr+Y3hnxZ}&7E6)mJKYxDOK{8Dky?F-KPF)#aHdy_*XGuA7sWxD4Jbj z>uM)52K4Sk0g=Vo*eFPF2FE86#x?4MZ$6j=j5cjoD$UoF#rP|__x(7q9%or>2k!I* z|D%_1OiHmrFl{EHFTvq%)c}4p2ZM36^O3(sKLNyrnEFz*p*# zK>ijIEFj)|`D%O`d(N0~BGm;O0|Ts{)GC2A*Q_G6*gFtW%M#SG?a$M$O=vl3#Li~^ zkys7=P;d}$^^E+(CIQZ{S=CQX8HF(Uupzw&s0&{3`!_0ua`IurB@>4vuIXM7x zvBg93Cwgm3N=UGcIs8$&y=b%Ugh*=aH>u+C+S`@i#T^o(PA0?~)%Y@}>!~Fvt~A2r zE9X!}go3@(tKs_}Gp9SNjPHzBkEnGu1{Yl4qB?{WCInOZOre4Ws1d$~>5tRQXyY~9 zM8+917<)d<7Qc&-ch;fq`9^q(ka9_y3(dfG4NvR3gtv-Wf^uQ}2L;l>_d_N)@i@Cn36q)%`ZQTBXZr`j^jLcR zD?q_8qtdxJmn*RGR(KLkQMpH$Z43#^fducpab3(?6YY;g%$f!@z(SM@&l-lQHH?e- zGZ~mHKD($szak5QzGflK_zGGp_7F@!X1cm6iiX`?*ubh$B6G(92s4mDG$O3ja7d46 zL7ChOxfFT0QkeWEXBBu;IETZ5bFE)EGC14ehjU zS%*@tYY!P*=Qf;eGN1?w%-l%6|Ah(;pqXx$0J@$YXS{OHD5Lvdv<#eG&e!u?I&#f% zcWCDm8bGSq1hUV^8^YncD4-2gRy+5?ND|R}v$Ny;>wbST?&Upv{ ze5}Ij!Oe}~_iN;W8KlBX7jxC}%H=IN2f^9JS-bCBZr26{(+$IS4dOwC7IA9+e`9y2 zy|FDTW^#GIMC%q+r)2%YY)B3>aMFemW>!89W~e^wq$7VV^A3uFsU?Ea8D1q{X3ofX zz7yO>$rYSv);8budLjuwlLAk^3!GJxZLTzd8{zI2^+b!sOt)T*7;s7GB&@O?^55$d z?-n}`6*Rl@AKBsU7BmPlPqhgOqr2!%HPe?@EIj=U34F^znuIVcWgPB;nVrLXP+u9 zo+@?dD0Z<^NbL3}Z{C`7G2dU5-0CBGck_2T2g^D> zT#cw)g%z9Z6fI4djw^;yBX-{gaXH;aU@HNrbPYqd@&i}Hd(Xf(jg}5p)P-6|Id;XBkY19O<~FFu4(6Jdc&%6Lq7!9@zPoLF!In!! z)_2CJ*`^oD;y1)2@nyClakJ~SLU7KX7O)e8>^#IlYduAKBkC{5%1yt)NjI~s$MUnN zN)>zh$`3aLpT)9380ca_%9D~vLv~t=vDHVrXLjI$U&P>t^}#+@yO)i8gtg2SD=9x^w&$Nt z_EtLfLe+&&sr4c-l&iKx2R)4gqPOFgdBRxt)73u@U8_qVNeD`k5};OW4-O!&OA6un z;lBX_59yGzSi5yeiKK02yvB{B;Tw#?fox?j!olr|i`CdIk3Yz?Hp2J4T4RP88m^h6ZLhzb;a^T1}4+@9^u9 za{A@m`|_6d>0!zY+BsYgJ-zF6+UR2x?{H0qoxCp9i^-l5_dASOwm67xYQ_q>QreJ0 z;cI!e!rd3eJi~>O4@aZEVzUxbLh~1KSTa_p5G7iSVBH=*SUkTAJlmcokQyVW3$_ut zxt!w06jmx}!3!2;rKJAxi zOT+gT7ExHX(rd_$8TM}Yq8-DHCA?BsfQPlSl4*Q^1dAGn+`A%!iUCvyputX0&s$d| zJ%SDP}ng@Z6O=eZLlpnSTwmX*s@;R#GFCb2q zdV5U5Iq!rZzBCXvg;6hvTg65X8}4%tA635vNz577Om8&rExL#aEKpyHWz=7cnTgN;|SGMtt*2H`#>iL zCTEsmrSJcmq)OmToc?ef*K#sTw6mk170-@`^r;k0_Fs#J*rUHtL|#(7Jt43Ion1L0zVo^eAkL~ z?gUgJ$Y_m#HHlPj4}xyMhOi=K&R~1nO2YFDkN{vf+MRKh)^)jK)~CHbA^r|Maze`{ z50n|n?iw<9MI_U5$n5hF*!By1Wyn0Nz6d@xwd&2sz`7 zMEy4KLQ5 z9&N6!+?-o%JAYUrkq|w{Hk{|5F4HqrsLl(Kx@KD1tekW_uV#0?jg-T`I(w?{!Cgap z%6aj6E3EM95KXS&UGm@DUFUp;u*dalaN!T)prYA|dHTxXTrJj|v&D%mpJ0l@Mo)I= zkXN+O_I>&hBA-%tzb{equjVU=nXr`AbMX}NEf375Q)l+?ak((&x&@5>^&wIBM`zLAcsouhqma;GvVw2IEZIV9jvG@Mb-kA zED~-H^>HFA%1;fCbgM5o)xXvOuSsn)6|d>&_ynm*#8QoTf_pLj@V0xPyp7mcg*H)H zm{cA3FA76=Ya9Bq^(*&EJx6aRYrrUmmhGWFmc-bHcnm7F;ONJ558~UvC-(lMtcx2v z9q|C(J-@3hpI+hO{?to7#E*5Rt6X0!Z~PHPrhcM0W{oOzu}lJ76Hs(fJEKPHQlM0* z2f3Z+v$~IEij_;{DUKK7TY-RtfCx<&+U_o00{**E|*^n{qeC@`IyMZTST%;0ne9C`zZp$xos2BBP!_~J4P76jIj)boRZ-htvJPad^7B zIT*$`y1S=q+O+9D4%6L+!?fw{8WWpoj_!?(aX4~1CZ>L$@9*#PhwE}(oag;Kuh)H_ zO>DjO5MB>c2Xu*8lFU%P6DO&WrmsoG1RMT-iZ3wT6Z$2;ZqA1JN&P!kms^+S*z4fM zi@J8SUT#;#xAMYo!qgPSP+8G#Lc~y63UqFuzzAgy?0%FK^r@({g|whm@glcjO~v|g zJlqGrMR@%VHGxmN&}2K@6JfkP@q|*oce_?w!Dc@G`$~TfFFJ(1OjYXjwbu;o`NldA6?2!fV-XLSq_s9FBkvn=UM)rJ58S{V)(B zn9VK7scK0zT0y9c-%k`;(6>&#pLYn=gSY$d%C}Y95MnDu6U;rVO#tv zK@CHklb>DsrlY^oqoa@9|R_`uyJu|2bQCC(U1BMG!5QCS`r+8V?9s~VnZU*vSC?dK)(3R=9|`*TyD|05rorCv zaj~__IpgsLyF2}1)?_Zf7RS$xHa+#0FQ zX%rkRj(n)13mz7m5HDgwv#8>xIW>zSlBC7q(Ry&e(#d^^jcz%$2E75mVS!xICy(m9 zgZ>a5&myzBv`Q^#v-@HCAy>Rjx|cXod*FK+s7KjVb66iw%4s1AvxAvW$39<=RuK8#AF9HGRj`MYr| zTWPPmwODDmK zx<}~&2aA@UElvlq7C`khQbZ$F^q~JZZ zDS4ltnBBbmXkAxqKAQy9ef_J#@!=MkX>U?SdXktb_{)uJ{lT-{F{;xlwUQeRzFsqc zlwhZa{zw~)6IKvBT?sI3lvegX?45fte+f;C_h5`h7Vr)>OOlRO+NNu~Gz1{=)mUQX zYpMI&Pq}IYH)BKK;4lT0P$3agG~+5WRORgr_VV&t6uiCH1`7#@htJ)VOOv_ITDzqL1vuhnPa-TtcY9n)=4HsC_Tljs zs>5R2y0G&K<@lYy=LIXpYB?a$M$zg%86%Hy^6f}OyWYDOxL}Cc<8&VLt6PDaAP?<) za-6ikFV8`G@7V)f(D%9-cR~ttkV#$ZRlQy zUwP9Jw^dM*b)0pits~Pr>}~(-aA~e)ByYGv&!%Z*;1k}bBb)e_mI_sYpG|yeDZBPdSv4}h1T9zwP$shviZg5{gGJPKPaU& zu9N=urGhK5A*)qs^)h`WkdMHcZ&TL6Xmh=42eEXrja-*yA88VMn3}}D_nOD(?qEd; zwrB|o>AT;mcTmQkrC@u5T&@=6_NME*>M%b2MT2**W@+7pp z>VD!E#OlrYm@GRh|1@>!cE55*(OE=TKOPM(-?B7(hl7x2kXI?F%m?8Xe92r_`6v4H zSd1Dh`<(RKF6-uVxNjf}ob05=K%W;KzWJHgyE*YlYKEVf8ToDAV5Ubw_wq#M0axEM z$EC6w#cQ~G*PLN|yJR)%5nG|_p-X`wZpC~nM`|X77kYU9lCk%RkI1i;{@IEK(^RJ%t&8@;`Mn0pS*%dZARtd!NoGM>0NV#rVVTGwnCo^5r|__i77&Fu^QA& z`Xs~mqF|liFXg|i3@gV!CA_^ZLo<;Jw@Fkq)q1knGSV^vIEqH(2!9bs!cmZ?Y_F~I zFye!kQm5^!t{A-E6n#i6i_dn|+|7|YL^PnuSs=b0r%~^M%gSnyY3fLRGRzLkJ9~Ha za24fTIG`P_h}5jG)H(yK48ia;j+wZLzZ<_ciNxF_Du1BGO8u~qkMR$Nibw!Cz>}$5 z>Mz2Cf+@R*3$g$cXgmJI?OJR0N$akFs~1lhtqSS;W?=z5Jnf5uJ!`QMPon-D?m6sb zP@K(58o$3IF6NQC{F6nn%6dUkhu=j=h$q|H&%6=aIGfXfZ+lX9q?UmXT5Vxnf)elC zQrdZYqJ4Qk3tt#Ru`Sy?S0W}PKYsS)EIvCYI91%aI(X4J*FyHi=g|5}y(;?*JacBc z%d@xG*nk4dmS}@pS)C;G7xBV_9OwC?qM(>q=a;Ftlbw1aGZj}ePd*YxMR63?M--1) z`LI{3W1OSnzBn{0jnB_b$YJxIZ$KYm*UaABHWd%KcLV?-5!SoXvGT-$fRsotDFz2K zaeT1M{D_E$;!)^1y)VU%RNS+jYx)Rff@jcO+^~E#g?Z`OYHX8d#{Di_j6MRBY3v4> z4H&xZexdh?{yeF`aHHq~iIRYY!1OGL)!;7W2^kLUr*_c+5=v;RHy0@Sa zHIkP<6||Pu^-Qtfijgft!Ux+gVygB!KVAd%GD!XItzojgVR<&%(6hK>R~IrFX&pv) zccD;OUh-ZG1RALIE%?mF0EcZnVwd;xvpCk-jKHXa$|3&>;3)rEn}Br_1Qq$+ikFLt zpCPFDTCt1YPW`dwb();S6Zq%9t6YOi35FDzs@v_chkpecyS_iEYojZ&KXEN8{Q)oq z+2{roI+#|fqDpaq{|q?Lpi)PIqu%9T?Ek>5nkSx}70Iezq>5!G8zsipEhPNO=lj?v zcz^aSEv|2rG_O`V@&)oOCqK-y9BDhjEd($mmKhEh+jT@ln5k?BFod8aLn48H2pV`r zl;T+Fzx&#-X4x4qfu;TI-*_Y#@8^7dok_@$zHxP zR0mB$cI2WpsQ<{g%5EcPFLxg9QDUE30P<#@CtL&wX}ixtDmkjEfAU6OoafHT%h{`)#$jIW~ewKlAsZsBww(DKBH zbvk39cvcR6aMyX%k1HsT&mnBiVG=>8^-hy@$v{o7U{Jxz*Usx>!Ze5%ir8M%z_78Q zmU8U)-Q}OWGHU5)RuQ@PC2_^8z)<(6N?f7#H@R0&Ww>*rD!nYX)IOhv)cYhxZHkc) zl7fGz64$pP^rIJ}nDiXOsYnWH|2Fa{9RtMgrn-8A`bt!KiJrsche-6=wKP{lr;Jqt zHEsK*j~^A)R5HB>V^+!Eyw%C}H<&PgOgbpx3aC5>K+X<`9qW?6F>g*5q1g68YTofV7se^c}W9{Pt(l?uIf~wx^L?J}vd4aZlA4u_~e#W=^kTO;d zdR;H;F=m`X9rhTVP8gkM?l+=jGawW9N4;iGT9xj-fQIIkQh*>j9>cbQ0~6;0T~|G& zEGRFY;)9Rx9`!;8N(h?9FOF?x9Qua&f6At<{n7Idp7bH8r~CtD@^d%v9^D(uUdZbF zOVsrP`jnHuY9oGkl?balHiXqbWrS7NvDMm_NV9dA2-a4=-@+MRl@0*<@Pxm5YbZu9 z%OIJ(OS-pA{3EFdro+!(BEo5~T?1G%q5^sl;Co0gXie7KUb|zwSb&gvBqqBH3GO_x#hkoGRT&#bpJx@-{6>kbGQ3Qfo@kpk^&%)m0mZ*)ds#}n3)AxiRhbcm z?GSC`(4#L$QH#2@7dPEE+h$-|AnEs#+iMOd-i{SNg0gF&&2+MNViPb5gesRubN6#R zZBZtFW9iCcl#wI10RTjGGnkyy`IUI#nw;5RgNN-1aq_cAIY}Hp>6agctaaIG*|Fa_N!a0pZ@k6l&cI*ah(4sP}hT_n#{ZQmZK6=?Z2{$IdEYM6-93-6^ROZwee>#0P|CKZi*S8fs zy98iPZm+0ADIhq#v=k9=l^3R;egvs(ofmG;w#>-q^?$fY@p9z9UNnr7-FIsmVDFJK znrNYd86jPr47-;AG$kJ+5!S1@4;!B^eqA*mP3#}`e$KMhb}wbA4RWdQ3`l8^z%Ed$ z3l~(L4L>3P4_L{7hwh23>5Iyy4zs878+Z9Tl+f~czHd4i5R^h`KNvtL=6-%(4yqvj z%6!nwUrLhK_N^VyeM{g<_|DR$=yE>Lj&dodEHs|iWo6)IVAR&b{!S!D$eLnTwio|? zCkljy*)hjq^z<3mt+;hP=??Xq-uDh1kL2q`Nxu~K{y~lLeDSt@ts05E(1zz^j386qcGN~CZCOLvx} zr~m7fmM{;zYQbg5%Bi^&d1|<*e-qkG{-ev=FGo#wwUuqJ_jIi>j%jscgA7PUu*g9M zr=m~WB9_1r3)K%0sb<=mdVw+E3-^V0bNED%wvFp{at7ct3ZB(bdL3)zRk({}A?%zAP!h8Yzh3pOG4|qVz{I-M z{&I8hs@so`7I~#)v)m3rKT=ahz{v4eKECe{UZUw1#6xSpcnDUZ{dY1gC;KRKwU+6D z3+toT-Mia%Xgd-F@pj+S{_40cjzTEj`SO;8toU*lE9?*npi9_&T!KEmBZTuCHnAj+G+ZgI~X)aZ&6T^Hrq+~}g9k*Ooa`VRkloji+@lcJbS;E2{Ct=bh8Z44) z^*#&>^dxu(;De{+kl*qq4UK^}HezHbo|My#sgs|-99tjoX9<=Q7sX_~B?*fcd0{oE z-7|Z*69 zFsO-$06KacdZEAi{USta{v^bwp!=Dbk^4x+=L5(XmRPA#!>dX48FV3Z5zy+a04qag z46mibj*JTT-^>h)_Qfa=XI5^YA~B2I&r(V}vljFX&TMArwt%3!t(poI_oadnWwl$q z>{ciLD^`~Xs!~!FeIA%kA+O(*3wga&-2FRO-A)^p_o8kJYvaPIR^6anPSNM@4j5j6 z#G~}7%9>e3DC)?dEwQ|WU^33Xu~2I_2U)ss>vddHcC6S*YpjR;?aRCDc}7b*eUImg zD<0Z#XFI={NN;Q$zG75_$veba7BnBs}()sbtXxj)BrD${D0f~ zRfw8gocUPGt)C*4nAk9SL&|8q)!85E4+<=dS2@ui+XKugik&C%r_B1sN!xTq1Lo*r z$|_X0Za^&*CcnF&ImV;}G$Rpl&tfBzM&Ig(U^im>CppHAk(X|g(`gTHDCm*X0Sa-d>gbX?)^94Qx-;pk^KtridDRX>E z^lu{6Q}aFd`GCQVatR1nknPLI=`c~#8?hEYjGK7>5#}9b5)_WB0qHdi$b zxQx^f+C>u3K31-R=+ftGUEiY+wz~h!@&~wf=)sW6zGrcd0bf#srhuZK?(N|#T4hgI zUw%9rerfvMc^3IZ`Wds;kD~QM^^K~Z&t;}C&DnES&yKqbcc=DCV!pj)HDXx?h? z?xR9CQw~#^;EQG(Wfd#PV4BN(uBiRMBglJi{Z~;;1U&H(6C&2hbN~K`LmxMKVnhl#cbQkKdH(T`wWmG1dfTME$G9*{dP1~A2dr+2K`F_DNzd){@|&$g)! z6hc-SLyF83EKwwmb`j9todRC81t_ozKuV%roE7*%&xp`k&weuv7hVRM zWNs7s2kNng%E%BT4(>_a_NiG)7f6R15fW;I*4hEnX?jGJUZ_Ak}x`_~=46~e^1i5f0vTAyLj+Oktxye9+y$*(e9y zTf5;F7SSY>)f8^Z&4)c^avWcY#mh$*}r;|?2F*qZeYG+Ni&*J2T&0&eUIpQpRt9#ygvG~xB_ zarGJ9dtQs)1T3##f;}Z03t^5-zh)X#5Io_sOw^q)+d!@p3i|GquA>H_8W#r88{Eu< z0`G|HWOqGnnAopfl^ZU6wawQ4N8)B`1F^NOoA(TbEodbay;knaCpAubC&CKKK-yTocXHjR~;mVwa5Z=2e zeSMSbM3Jf(XFT1WeQH3g{ZM_!GdvK&l6bnej4B1nunkw_+ne(ezd4`+@Mwv8Yf+?9 z(e>!{1+yJ@o#V z>2Pf4#%{fqfXe?{l<^B>k6(|-b}}?lijVz=qtr;B#@_UFl5Z?oo3WabrD*Fgt(DKlgDJni?4q;Lf6Inn2O)tc?XaANcl}m zqHFY^Kys2d&mNw|_0(k$-`a#Swwb+#y+O6(F!oACbM`Z!B^)BpiQIh^Oe1pk;JZI2 zG`Y%{(pPXs{Yer7t$cYoGlA(oIn>XQ67yv1?y6A=fAvFDsHDK0r!nTg^KbGZ=XNM; z4B8`kj7Y6BGu*DkMl4?y~ z1WU*T@s>ZoG$$9BHh=Xap;cAF7sF8-Zmpz>DHA^mw-cYY!PV^|6b1OA>rC)4_oogN z6({k^TW}RnZgfWh;p*fL@Wv7C#ZAK+`_6{~(XPke_&i5jp5eXtHl`(3Y|oLroNk~~ zxBW??)#BcUY8Dc13y>yc7W&tQc|llWYlUGTzitVNj^5j!|Lx3xNEgG=6UrB@H}OYx z9h>LB-gR~dvoaeuC|~|D#1tqs_Qz4i5Ec5qyKGq3-AuuVz&2}Z!+<(Rn9DB>Yx}ZvZw05p)$>%+zfSr0-P@2_alD zZ}UP^7x7g1`NQ3Tl}@zG`nU3y`*Q3hJr;@AA(yrVY~;r>d42p$I|zg+b~E4hA>>PL z$R9-PWQ`!YkkM>Yb^{FT{-%TV&5GgYW#y}0;2cPWNd2eiLZtOTL66E%s5YkS_$S#u z*wQe;Udbc@ON_KJ(#rVeGML}ej0O-8wJ;!V1lmbYIG=_qxX{g~-EhXJHB_w7w6<+1 zYMIjK2UtnJcb_|8GhnkNCGqqFEKq%qZf_>ED1)p_!XCL1$?Q)A&`XJ2>r};XTND2h zj+f{x=pwNif92^|htUCT1pe2wDdg_2?q_ibxLBd0!)d<(BUqlZPuGJ@jQMjM4Dg6p z$IBDRh@pZ8Z!4P+O!VXaM|@)bXF=IeHf}|^?)9F2zr=u-0qn-!^o@F zFfn@iLI7)-cJ?0~6>wJa9;7AJ8q||B)(Qw_S>-G0WR^%4$VMb*?;$2WTtANk*Rr3y zqRq%dW+nqlIuBKx58=K(TZZ%BSueV2*l+TFe8puqo?EJW;zF9KN&wp+5#{~5C`3)g*2 zTIBkZNCmJ&*H!!Hyp*`U)WhHh2f*ZHYl^pZDw>&?`EI@Zo{q!vk-)Uc9po+f={Bk$ znrMd7G)=b(0ZeMP9m+QH_O`7^+#(P z#&PHRf7lK43Za!ac|AV`hL!y~@GYG_Y#_FdR(;{mZ>lMt~dehv#5L2=~H)NiN z1>gGTdWPfn5(CsLEY{gWt)RQ-N2<9~6Khhh?P_B>t^$~7puaK=+OB&*mj)D>(lnIs z1#Y6pdnkW)vr=s5wLv|w9k5-xr!KC4rn{DKsPp_g9#a=I)cf#7{tp2M^WjaLVNH2o zZMu(b(AQ5zUs{f&4Nx444Crt7fWsI%S4I&azcu%NpFyK%X2N02U^Y&u?|C>jbP(JE zr7*SoW%=w?F6lq&w5xvvCS8-mIoNf$|l26O(CyU1-sAA5%{W#AH^ zqFDf~W{`dA#=lPHZFRw}eJuWi$$&uM@oN?L_b2C}42kB-E}nLH{`#@r<4o6a7?Ch_ z#k+C+a$$}NK`fN>!>$rUrLz!VNsKdVrA(@o37&5Za3M70;;3^~rYOi_mS6{ueH`BA z&u^@3Js%nhULDUqJHa0n?K{&6X+7%|e}JQ40F&0mx9yWHWLR%rl$i>-|DX6`(l(sN zKB9HrLEfqtZ*8LedQb~RiwNg`O!Vo%?E_uX_dmJ%`?#Pn6!g31S|+cD<|iYAZECFZ z476C^Yfm2FX`EedLGPVh=tIShKKgyr3!Sxj+<1jhNsm~cVQ=qdZt)2hUHKyaa8c)46zL_QN0h|g66R%=T;FVt z8kYazZ5J(=|KtE=Fk`T+3KuWPn7Q;Of0I{k{Fl_vl9t{nA=aoEmzm1J&4%*Nd>eW&g zg#TGPi#b=ONy_*_v&*;3Bk;wH+;TdfBxAf~VqH*LK*-d>?6Wral zY4gV%MP~?l(V3QyQ9y%@TegB2;YEILZmLt406C>Kv7=8}rtZUS2Dyg1Yk1VsOO?As zvOX5YO#(et@#5wjtk_pJ_Z}uUssi*uHRKt+$dr?dwPf%$3c+tz31l~%&~#0tCxWeS zE;z^PGZ zm+n$jqqTheb$<`n!^urnPykgwWsqD>2lJJQNn!?BL!?-HM&4VYCRcy{&*RkoW_7(aH$bTti0wkH*N)S2cL!()~QYdR4#F=2%?l9h_dumn8?NR zQNrZ6$X}X3qF}np%(szq>KV+PYQDSP&=QUu$8uL!RNtRzu5ywRuxJ z$erL>a!yz|xxQbP^~f=8tMgYdzb#S9;8A9o?ff*V=8DQo7f<0>H}@g3{$Yk@(0C}# z$cgTiJKn3)+-Fhxj!w1qg?~1c7tWt>A?#RiqFd>geP?{|jI<<)VO5PcCewFuV{L5_ z@C>zrviWgB59+N_jzzQ~*=-kBH=}99zHu#|a9b=Plr{1;h7x3y z$g%OxKV{)fwnp=|9;UVxOl7lz*e<^-e5rM@E9U!=rd{CA%J`!jV5Z zWcuAbL!H=0H!_n8oWslDZNtkg4tXdr;_criU0*OfqIs=io9#77z8KiBP7rs!r6@IS zXd%vOu9zVCVwXE(blRE)Fw8R3lHYWb^PBG~7)w!%z9sVDGJ9J~5cOQD-GCO1N7s&23=}W>aQeV|NV(ViB2^4eVN^Y(U!+* zLb>}Lao`QPc0Q44UyBqEUR^030PoVN1qM#DkOVpUq0|OI?E7&~0F6q|2cRI8uK~*{ z*t^RqV`Xx><=3i-Q2$Y(-mD1&5u*SDJMAf^SwKEZTA==ysjo%2X9u&d`M%$*)#~ZeIcpv9v_YM{u2$93GF0bO}@8@l&gO)RU;Qu6fhyNX0)_R zUw^;tDni6&;kb!)mbe!{6`A-x8p8;H0a6roP@S0A)D1BB5^_jz(fo-y%-X6^7m$cq zBCmHvCa1dC8raEjQ?ZmSi`u-AGK!4=TqEcf)BJrTqaqWiJQXzeuT^KLWrhZ|v*{42 z67s;Hqz|qyXVHOM682;!Tck((nzJ>}eSmr2eO3d={PF}^^oNk=1O3?C*H$mBfjMgu zF$}c)R$L_AdA%Wu7ZPhzKxZ%(7_r8eU7moT7*M`c@Bpp)zthh`0Rf|27Qnv6J>2_3 z(OyuBmjbHQu$6TO3p=yGY% zN@~DYGnkoRNJyC3E;W{2$J;ahi8xcqOAfKLT`2}wp1M1Q3EVp>21%ojCl!}0FtXwX z(}Iq9+x{@3f@ajbTKUnM4oi_ey_59^J$iWh`?UeR#N=pn)BfB?{#r*J4!^_!I@sal zIbtLt__BE639}$92C7Ohm(0sz5s<_n>3zCm8Dle=zzYCs(zSaB_@ur^4hZ6MML0G6 z-p3RdYRabzp~xx`Xfkgkrr7@Ne{IsWT?8!Q-Yb6B$E4@&Af}kY^EZ)!DOwI_11bTP zXYwwD9Ln9znF@jtcqoMOEPw0zVm0Kz*i5arApwQIB6mr)0M0(*^?;snsF8j@0a2vC zdRA69gB0vpD%2oN?V)0{6n6TM!Ylf_y~(tyAPzU@;B zhFnKudi!qM;c%HOqiTisnZ=zDr&LPjkaJ$&GnTwB@sVL+$%&kvR{hKtn$sEb(P`;SWjksQ@Oo zn)1_j*B)P0&fU_6hs4!7jftHcGVFR{p!afOMqF)mwM6VQxS;JP0*I6Vl9nNFZc=0k*-|5XZywQ}nAq23 zpRu$+8xa-EV|CvhzGNIz6?p(Ch5tI}V2A?KRXC##dSRhIL2qtaB3kf9!cNb>xLbe9 z)2mucDIqDmhW&a@syI;M9Y9aoAfdTA1rd*34J`?=e8R~Y;y>MLBVQHo8Bpg}=Y~w= zI0XCM3$KpL+%Ocla^9-NnH*Gb`THmc2R4>1)FaJf)cz8+5`^UzI))=3Tb3pxx*Y9T zA45#P#Hg~@GuLc>G&J59>Im0<{ehKXk^k?>F>lrOtXhfUG?HT}9Q^V>!0><0hjwCt(z7F;LG?;S}Z z>BcWOO!=V@l1@L>{HnI%g+&KcF46uF6oB6cI~$gNI(}&=w83}xmr8%$YrV6s2PEW1 z1i!XL-h6B3qBCCfxKbovX_#MWh*S9`XlFz2b94N*XzZ9;MTM`E#80QZRiu)v)VY4^b~J)J+%UAx}y>mD_y-yoIGG$Spw`>o;D z&1agiGf@dt&OtGTPAyEh5@FN3IpgG;v1kyUxLzm$nvre)W4FUDF`_dB_2jRZjAt3` zDIz}D=c8eGx|?xlINeI-s8{ajS-51fO$5JStpOTAxNT%=Q;_ zdP~b@+;!$<5cfJSD-g#vV<2O_<<8Rta2w6Uu9F^NVcNNqx=5%ne`Z!v(X?uRN);P& zy;IZ1esBlA;l{R7d1kz5m+AjYOEzL%CwZjF|KuqInpM*pD$bABo0AdY7@2;GbbjLx zRS+*~f=Y?C(=^0VZoXv6+w)A z?+|NUgeT_j2GwnE&po0>k6}<$2CHrIyGeF1YVG1KKz}KP8gZ-(iszq;ncd>c^dA@* ze!Nq*9F#^0Rz^Djs8GG)qZ>p*LdtIWH{4|CzD!_&2!qUM_rW_>jJWVa{Wg_b>57(` z6DIfFeliBZ*$K4yQo=KOD>yl@0#|%C%pr;{RxU?^@XtUZWGfx54`Jk!k`xIAEox#J zX))Y$KX1;Rgep&Phll8OsavE`qRJ{8JquR#{abkUIgsbL1usM2ulpUxQc1R}z~?NIms#ay{~ZJUCJ~r-Isy7?Wr~u5pHKzMI8QANFl3T=;8pyY zm8-<7CUt4${O^{Bd1ph;w8T>Vr!>QD!=QqM=d4K8Kf>B{1kl4uGQ&JfT(2dvcIKOig)%i9>i9(i1vR2#pdK-_d(n?v6L9eaQf&x-fmvFaD`a_YEdC10lSfC}oh%m_c3+zHQ_ z?uaI#n&)TEnD*C9$Ta|=WJ`CJ@Db-iO~pn_n#udovJVu9<@*#Xw@N<&F!u@9GoD_% zj6@dp+Kh?!{7F<5GkTEDU|Lj4y_o7Y*A6rr{|l3(?de&scRYqpEvY%F2Y*P8SUUNc zddQI#i-?x;^Hg!x1aew+Xzj%qx=7@J#+1+rxO#6{yP%Y`rS=6&AHQG&p?*5JLF&+H zZA*79fSUGWM2Yb{z7IM)`xfevVe0>Wzy#mle5|iJ6{Ld#ydivke{=zs%%$^cW5WBB z9a{y(9E>qE1tFYO>bpPDKqUU!Hgqz@B{gU?s8m@^gPyr)Ouvi{K#2d0Ij;@LrX<5R zo+tFRH-uwvG%c6b5#BknZtN{?Qik-{&sfUEG5MIzon#x;4OG?-$Px6?9vBW7}xH zyJsrWG)4KG1CL3rV(Cjsct3-kCp<(j;MrD=wyW(<`VjOGi-bm>POBZFZ_nV~dGlwe zDHZDAqs&A_!`JQh$nQs8{sp`^zcaTkAT{zSS9yZ79{LV=tN!jfEj8knYoXuL-uL5W zrvLuvVXbJxF4D`ouo9N2!>R!P&B>$ze~6z3-XG#OdZOL(RclZU5LozNPy}FtLGa}X zYea#vr*pM>53a-ITDJYpc;7E*6k~w@ZZkNJ+yr%1^t$?^dI^>&%K zU@d_6vJP6?z)O{ji1Ek%2-^07)krJ#G-rYibQ~jT1ioUT;4rA*s0AHP^ygiA*o`AM zWUeLjoYXYF9?kIYm4pB(`?W{QNWB^nKrp2t_lMq?t zyllM%>a%Pf`_f^yr4-F4d$S)djuH2$R^bh-UDJkK|1@pRiafsF%=>ZciTn|k*M(f| zF6!`I!>S$b9quWlqfSk-@mleaKvmD2xjT}xk z1tJK=kgcxgB?5fBy_gpFi9SV#XNY%C=&Y^;142HZD~JJK21&M)mdeO{!;!_VB;#wL zO~LR^@~CZwe0(brdHIHKSC!+@+l4k%tbqhbE)Lp~{b>-GM1ma;ycr7f&EsUdi()2x z{L9o2NZx!8fAA@_{8vrw9-B=~of@e~IP@TIe>1oDimMbkyl#1yEm4v%eHn`{B_a|5 zQxZSk4e4>rfSL&*jjnnpL6+h5d z(7U@m=zS95eWOne-QJLTzdTmQ!ab^#7+cD;It_iMx|B@iGwE!D=V|b{Z@Nx>I1&%v zjD(RJ#iR%8KPcxnGI9Q<{RW?L!$+&trHG5etRtE_W!D+|{Z!m^P(uZHBD5VdA0+S7 z$1qGt2i{Rca{oolkU9htNbzx{g=C}zi5G62u8X$MDKJ`E=_cA9P8cxgJliGS4U>`1 z3qkgyL{N&a>%e&W`nGQ?r9Qk@es0}TTaBMMf`)9`6sh4GS#So;JlwotHRcwIKI(NX zCw1Jh9_Yc$uS%crdx<7wrWawQ72iBxjtbUemEr@V_2y^9|D*~|4G$SA3JVTRMS7^> z9@F<9MgEy{Frod&%{!pGM#q6pu2*V%Ws##C$G6fqNpD+QJe2Vz*2s20_&k(T6H#~; z_@mp^Rrm|3>__uR*^rTw=v(7CFL@dXo=FwBQkRo#Q@Bwyp*QZ?`MrQojs=Y8!ew^< zLLkZHjf1S5SU@=UH5PC$y2(ryjIMA;XH1JTh${qqDn=#qV=}>k>meJ!89mza90W zjka*S=P$_FVul;|yTG7Wrtam9pHY?r49FE_-*dPmeu!5-)AL9&mQ5O<>1Si$O$+g> z$G&+eZ}op`Ake`vga%5y#>y(48U?RPbEV9n-g*1*%;?*lD)DWXe89N*xo1+3jr4cS zBhM=1D=gn+!{bzcyUre_uC7M*N!?{iPyJ&F=s7Aqm?Ll8QLv#KC86Ror2-ioSzVjB z$SIQg#p zF-8h%hN3lueeRo>Z&24;ug&G}=1w+5>8<)T3eZ^#mEzjNl<$0J$}H}vX0-#v@D1Aj z8c@?q+^1-U54w9YaX9dnaL;T^a)_ZzhOYFmtQDSNI26qE#~Ih2TAD~##t7%Uw>4!i z*h!@|ZTJ~?uWJJ7BEEZj?#0SRGncJM5_BcNlTQFQy_$n(>+ydF{3T8RHfNGU)B_W= zbaWD~=-bLX$n96c`H6$XFiXy$(ymm16NAnua{qF0D{Ok}61l7%+|TR#u;0U8Lg~7< z?4jl|P+3i@?{|aqKz>wy)6g6*zb&A z*4n@+?;Pq@b@43`c6Pkw3NRLe-D!{g54=}@-QlhN`{CHxumtaXXh@kn4nDA5y&b`q zI-7?3-<5q|{^o(j(`1=AYUoPx6`EWl%9UG3JI1`0Li^aH6 z5YMV-WD&HHn8o~y2=dB13>ah7jlkQnnymI({Vk9WRjWDDR3E%|XjfnJ5H=)QwdCt> z@0wWKfFtQi@ODl+@d$jPXA11?ZPPoGpR0`2QcyNBPgr#@U;qb1$em32p+tP*oep9v z2HP!Bd-%NxKw}Mz!28Q`=bcCzG0)XsN2K7N>C%|T>Z_Fo9TAMd8*6{LWaAwyEOH*o z3uvsr1N?X3*e2}5l?(gIQZcua>9&}wU{r6KINg8OF!YHK(%l254Kt;Vc`~QoxnxgT_Mc#YE@#GL-;q)E4i|QI zZ%>AJ?UXoRnvuUaVAt6+paZh@3Rh&Kh%@G{7~%?-C1hAeWLtn3`(A~P%~ifMw2@dp zu6%KxSR@)?qAKyPNTaV0PYpY1^lE%qnX{yNAmBZhaa`ZXUb9;iJ(5KO$YkAqEa+t& zrpf|^dCk2WG9){@&%cv$nr~#{?CWrdxaY*u|_+3t;SlcI&4u zOwoLSmYMqLen`8PUth^Mdy@y4udhU)8CQpn3`sOxqrAu%R)0Z2C(+z(hvg9Kz@$mjK+L zBQ)hUZr!s+8VJSVk?$} zVs<=;*+&e~@=eHq11?vR^6m~;2k5$fV$MOL!aA;(Hj~lbQ8(ApK2$EwjX8JR(|N?d zmuOR0^%qAtiN0KjA(4$HmNobNy#0IWPUT04WbQVv^-JShcJe=7ON*35dwb2=pC7&b zn-t`k#lqC-7;@(0u@pa@Zi`FM`@E>ze*wPT6_FT_#hH@t9Xsj_a(NkuX)*MBVc%aH zGjs@c*Za*P`e`X|_-1__41YpSf$vw$GARq84aNnms0QbQl2QI#jbTst2)N)hl4?Ud z=Vjj8373b6fn}geaEdX;|t0tvcJll~5_VoK{_WobAp>JN%Cy0Zfv? z(?%4o)T0+o;SD=pN=QaxQP}I0ph3FR*-JM3$I3N#t@dTo^>u5-5Y9|WLCj|<6h-$6=xM}5IZIHGDf_b zR*fs=;qpH4lCZJQ-Fz)w`yMEtweT@yt;)& zebY-t^|SQKm(YhelRn$!Zc{uB-7ejj=sh}cpBKxD!F0A(C;N&58ygurLk6|-x5tb&!^ z>B#~5M~W*3j-kOcjJwaYa;eP9-z@^GY2%1e;3Drx#eYD1{~Fa^iZnqBHAqh0@E80P zkf@{B+t9byeme3w4O$3=22$f>b%l* z#2c?UHUv%8UuNC?1-HJ=UklCbe3v%h{4qd^ReD=`>lT;o>dN(1Q6Fh{dk@*m?bVC5 zt(K|G8^M^RZYjc>i8$P_QVeklx5kUzpgzYN6(7WQYMqwnS?#BwzvP~NuHo95(M%n>0)>V-cf75SPTYi`GbXwkJk!kBwr=5pOZKcOn1XJmK zyj?xG-H@I_1hAbIzA<@UD1Y4BToQA%=wt&9jGM<`zX^4+sA(z3ek=PU*4ex=|0PXk z@@TD_9HlJzIGO?@?xpu(mp&^?Ki9ukKPdG|*@x8C{3v?EbRZ&+I%_YZXx645mi)d+ zB4#@!k6=$M3#~rFeO`{u>4JMQp>e|9iRnY(BS)VjuuTvo1DBCJ9TQW94FoN5_JJ1|Vj-87=#c*$UMW0^={n}TKR^~V?!?CGS=ldT3 ztU*)0Y4s5dm=KQN4HqA%DY=A%8LOpqv?(!;Sw|z~MrUOMpYF4O4UsdCH~* zI9{Lj1-?9$j}Ido@IiDd9prXQHK@^q8M3JJm=bjX)42TWm}+cEuf@5n5~QSNA~P-p zF)=B0nE5*xoy+aY5hmqEH^A|~LR9{B`)7b-DqqB@iH%)ma6@4z^uLs2L+w93rpyXm ze3fw?bFx~nkPff|H`=fzqa9n5nz4mHnp@%;u{Gg5r!QbLU-r$Z7qKOcPIf{gR!7%h zHTSt8Nuehfu!Z|^)Eh14luLQAHq&vQHz{XBDlOXsI7Us!4X=Lrp8}5i-unb^eY6bQ zS8YMevXw}r8Q@s7^fJH^yJ+!cfI}d}g&eZ@#VgEW7cN8eg2jlLbE%Z9Oi&|s-n=eT ziP)|ZvKlJ)#<$-g?wfDTl!qg3_ADzID+rRL_2+Qf12_`reusoPT<^QDP05kLjD!Oa=3s)FhxTrRK;@)100uf za0qZn!O;acX2#UudatJ6mj(Ok|p;N+n^u$T0qjh4L3rp)SgsAxL7NBu+{T zC#*#4y9yEk5gkLvQVxzVZYLAq@Zs^^JxK@nPzqi>l7_cA{tiEcQgFDc5rw4ad}NcN z%HSKVq^dktB=;Rvim-%ggmPL#sW>9oW0QhIkRvFi3ggb@@fevH87)3~a2-?h4Zp>`;h`Dxtih zPz>5j8|W~v%)|(`lZH}kj9$sMT9RTmlAgu08yvtP6^Ba7zRIBh$LD9Nv4@?^Q{@0} zzf}|H4mf7f;hA`-27^|y{dnx5JF4;Q{ss)+QH~*7OH9FGAtX|8Y@sv0gD(=7DVN6R z?G;dN4!3%W5{*i+p^7RRs!XiREhp=$H#Afpjsa_PZJ835zI?FWO2>}gQ^{$mKJvMr z91L8`_FJE0AsNcM@g|+{*LPQ0h>9wz$duSqNm56tlFZH$gAXbT>*m`K)*KIrsPG(K<6NQ)r8}v%DJnc+Fja!%=Fu zu*5Z2xuMV(JN}k@J1@0KcO{2YVW!&J!g7o3t-;&-dEA4I_|pjoYE5y0ra+#T<}{K|E@+m-9P<8pZ9jOxF7z39C34sS!B=|Dea z?q?@h2}mD^=(HRi8h?1o1w0g##rFXwjjy2NP)J8$6CLSCA_{TGe(TiIg&(O*j^{+=-zbUNvP1<<*ZRG-e+?OvrA z@l7E%WjoHV%AZE^SR=p8L0{!A2mzfMIXkVm-IIV)FzZ@6gL3L`3-7=+YWt8*lZ)Rr zsR)nGD8T1*xD}e9{~*V5e-qbM(do~_&2)}$^smEzOfSaX96F(N(DG{9%=sEJmyTs% z4Q>ge(->5U0iPw|jP}8G}IS<3w|8-8NK>?ou-JcDaPR^EF zCN*;X7CPBg_-$wb7O=hbU;P3(t~}ny`mVg{W+I+yQf;hiNdmdi!woZHxnv{qo! zrX~YYJrqji58Uq4ft!8VmK;~x%JIC-y8#M`=@H;@Kn;F$^87m4Hf^R5=}kwoH``ue zN>&P$PO=i~N-1=wUlsaJD#Z)4>MVI?W=#{F@@5?3?~VZ0ZF*<8o>V(ZZfS}UeM^)y zmX57L7^Kv>#Y^X+Y8+BV@p<&&edjY^&jH&)>Y5bl?J?Wwy7QP}K5abQ`~#SzGY=Rl5joxPZeAQRx@j-pw2Zhv0?_ICM;R zXfTbYeYjvliVcOX_24_yi_b})kXHL%J}`~OZ>NR7M0DV%)2s3Nnp(^}aS?vob1-3J z8pgBF^8TiLjN6ur_qS#m$ar^WF5cPYC^nn~qxpDudlts-&4ZfdnvQ5pJ%W#9hl8@l+S!xCA%;>wrTcDuaf| zxNq9Pp+n3D4I7G~!@2Iz{suUHKV+Bzj?YiznnL4)$QI0qZ1bo#=w!#xffkgBZbU?6 zJwAz~)0@$RsFFtHmer!Ppd6{0McAB_i@!(Zn0mmiq9VZIs15#Cg3*7~{t@7CO-c=c zpy>&Xm`(?FT0)(p+Mvy#fA?WrB|hhm_IJETOY+*WssLESPJ;tC6q3@4z3J`Poz#qN z+{gCh^QPF?sQ>n-D0JmKR>#(2$(b@NJzI*kbd;@3tej{%;Bv@S^+Tmi*JRK!_c+B{ z(&!Xt0k6+Gh8srz5O63oMRxNmpIC^>{qKKjfMdt%t%zT_21(0Tb(Myd32>M#UV``~ zOA)_xg;~O~l{SoByc}^$G;by6tuoVmcYO^7N2CCWUa*j+@~}=$4>u==ActUwg{pW= z>Wx^M!dOxkFX{puiSy=|nnUUhgB-KILE3`3C|JG}MJt!1kV7drik2?1lCjzI<|B*8 z&R@L|nOpZDdfy2gk4(X?%o424uEx6bI!ATEHk1;^NgV2d5gBdRklyN;2W&WS!+{hU zccDjjXrXDR1nhaN#7|yw@^S)%omXB}Okvyc}=@ z9nIs%tQ?cm8W56RkBM=mc=t>$#+=GE6^G@sNT4NFnj%B02@4P5xSJp}fDfrcJOnvp zmW)&ij<|9I3CeFFSfNCpGATC%I5ZTbuzeQ6$RZtP&5Y&*OBP7WwyQ?Ileo-|B zIHceZ#1O!6V21K&5*x`nC;a40FK;D(Zpx@roU#$CYS&UXQa3n*lo zH+&5pJ%vzgEVXbEDJo=w5H8?wL591Z?r=l%v0A@7;E;Ml zCcxpSI2^#?syLK?#7(s7!VM)J72J4nLm^(@US@zp3XWlmlQD2!oB<8N4JkK9EKS3x zRhf8xeGXpSl4pS9xplc+3XbW$&sOSpak2Jw06zd9X*IUK=rP`T9?l|*!}LQ<;ew3l064uOwR zTZ=sTF7nNRA9J)04O*kcGjSA!Pa&0XHz++|n7 z5JyI@${*@*D>q0pdawiBcd9}+1UG<(B0BL1ryu6{gP~3Mad0laIO_n8S`U2KmQDvO zG|iM33a@yGPQXv5bz0twy8_D5YkVqy^iSi)SI^>>H{;NELOLD}%E!;b3h`4qoN_{c z8Cs5?1s3DyK_&QAP%i!$6oaMFKzgf>E$)sc7FQ@^1eT(qwlJkh9v!?$hEB^#vMLhL&JsoMbU0^L9osw<2 zEF`7kuFz_?}etcPir@pMl)88~==y$C=r+kc9P;2WO;GhGojP(K> zH?a*A_8_}Hm~9Z6k9U?88Q_qDLyCeGbg=JzKLLGx>dlE%9-HgK_`XOHqyJ6|Ajqi? z<+JQvhr4`R@EiX^d@l!<$ID<_oZ@iw0-#SYY<*R1c{DHw^G`VnfE-?f@~(Vw_yTSn zpNt+M&3GuJ3SYDB6b8gDhMmi%4B+vZ`REf+jozl@X*Z|*R)5ghb(AqZ`A+xrZ$vNO z2CI0X&%W$7x7DoQP0K0gf6joBm<7O1Mne)Gr_ux;T@tK}PXW8<2w3~uMuu0df>r?d| zt8C-X=V*KmhJBiW1N^O&8iZXt@aF@+3XQ`pN_NV2QIc4FXLL_*;d$LWu^l~qfZp8C zZ3c{Je2=6k>K9OjdxDE`e|RD856;5_!8v$@&&p5zX-&K1jyqlvaCoGb$S_cgfrH(rufc1?BMDQ;47W zrQxT33AlISDf}Wd5kK>e!_WOv@XL^5-0fRz;W+{@H%{Vv?sf48fI}g7F6j8r0EYv> zoDdeNYcy?;Ly8NZCf-X&#UbmpXgJy}ABRX(zcq{G?Eya*Ig$USx9uu|{VLba5W4D%BRh0MmTWoM+dyWB)x6P#H zD8&0a3ove99=wl~SV&6vsq+RmrkrcAsw82NRfvdU-+XsGMopWAzq~d9e;F|fPYoJ~ zfkU43K#l>9T?RM)>wv?78pke>H$?zadU9|FTnBN zW> zUc|1H797lI$38l`yXo}q;{0uC7Y%T%R|O5OvnHVdt704lhvse0RDw}D(AjjL`9m+b zVdYI}=6rK|0gf%1op^Qj4*|#Z9>8(a%O1e-!gM_F-lur`qh;8&$^$r-twz$K}|3W61W2~J3ghJqYYW{f%QC_)56G+z)z>uMW? zmdM^anQ!X~a;SW(!b*H%9mrxiInEV#Rdq4Q;(;Q{?_r9Km~u1a1QDQdb9%@Wf)kun zZRXAMP@+(&H`EqE+>dNZat*@SixTLVoW_qn+e6_hGF4TXcqZEtiYmdVAV)CUuzQ(U zsX~0tRau!><=~J)L#1LJrG}%{(6~VjgC1@^jx2Nfm2gymLt!N{0R+JdnZXQ|j^#Qk z*A<$ILa@Pw4&4!gXP#6IfnF}~%s-~hUDl#{js+)_$1stQ+3UP z?XoNtPqW>Wn`6krL|PI?sNC$DOgyumwkF$v$1|(4og||hGw{jD3X@m63J!IqjUjL5|Ve%N)S5Q)&xG zz0nzI{35~>6pK?znaHT64GMJVIg(G*kkpWaH6Rj;83zrB^E8RkdwFeIQb{W zA8W$6qxGiN=w1fazy?iVKrldx5baY?L*QiG(OQmkyJK~D~3oJC< zoL=5ldKutwO(kPxukWtJ8~f^cEp7Pqta99@Bz<&19KdnuKdAao=&dw2bj5`a|IDt0 z7XKB~_TAxz3pivt7oD3Wr3+xEnGRzwc7*$du>%}Vqto{Qona;8{Bc;bl{fwSIhb=$ zexV(OEx_ia7W_Kk5PlPpjQ3Zb$FyU>Pb2E^=!^?^YX$5-s=*to5w@Wm(>B-QqwN>) z`Oa2+v8xrI?rp+{`x?wXW(WHd+UFeqW^Xypl)y^FDn!Kr937_M5ZEvU$J9>TH@TUP zbp`hF{iI(8`Yx!Vb6VR86f|~N^%YqKw=eU+l5DQ?#rJetCuiZ0)6(!AuSZEIGb>xc zp94hjyK~=LC+Q&Nqt~Q#^!CX_ukq=)ckCJXug%8^zW++XDXIKMI)Q^{#NqC7iB_?q zXJ7@L!AkTD=|ry(l_zbrumvS6?d@N}eHEZ@Knd>jrE&ecC*|RHA&FRc=Dg+N5J>gk zRD_=e$D`-ORP>mXhTl#}#I8J#Q_kbY@VL)@mrf@x4tIGc;tvt=I9|=P z5$+uyi+lVttn6hU?;_kWsfbQmndRHifBpZRPL!&VDD30*06xDPfo(iKKX>?^&f`(q zL5?5e@s9J`r~9GAj+W=3uFXOR;y8Yk+Z@yST=xX+5FO>w^BeHo{7M|R{LK zv#Es!d9L$o!L@YIuBRh=XK*3jSzPLb3h+9#-{pzCzwgK34mp$o7ja!^2YwXdfR0;( z=?qIP2M1%nh_{07jOwg0m7KJ@mlMbB|*2syyE z7HDW}MI75rN|b(MlhE6@)sBCQltn(RxYmd5LZ?=3AXsp#7vF7_?u3v(j%yJ9lsCP z@EWf7ZMSO@IJuGM^CKOX`@el+KA!$E9|!pk32q3O9O896!RJ@yNCjdn)J4x6pS|0H z95~P;fak7nkV0YjTu3P*=UmW74!TM--yT%Owl1afU&d!R2M>=qg#COE*{wq&@1c|# z6PA@)-j*8`p5tA~wyNPfS&1HAd>?(Q@Ni%XR!bGe_bjWV!9q{oUB>rvLLB<|l%OBq zjecWd@Z9Wb3y*v0n=Cvu_9Xhe6Nh{J%5jI1v$DOfogj5g2X3C^fF+%~+PypA5O}x} za5(qok~x6G$%$jr3R98l!n+YY_)JK}A-EwEG?TK!V3WdBG|v0%hNBo9@qi75xb)=n z?y5lUo#IrFQa%q=WzqOu;ZFXIJNYi&6I6u1e3^rZJDV_eGyB#2{;2Hh*zN2~E62um z_M>;?8{BwvXAa)jnTL1xlwurzw|$PYpL&Yl_H*YEe)b~GQ9gu5b6!+Arbe=lz3CMC zd(FUKUVIn*hmFR-f&DR1c{g0Z@t=Z?VII43{^jNZ4k@gbLe$aegIZ95~X3NvY+#@65~e!%C@ zF|VXi07v4|RY+X8%piv>VexV#E?HqADFPd&+*q*+am!b6xEcup8LQWI zS>md-v^54mVwNsN^pYh8Hw$ zq4SxK*txU1Acxc&N;v9PQ%RZqT~`i{+y(QI!*z0GRGi>po8Fq z<=lwpapIH%!>L>%;2?EI2phmHnFj_c;bUw7&Kc$bE#RpSNS{cyAs| z#k)r{EiZ?{W!w-L<@j*GMy2KcP#IfQc?n?;KviF)RtaN|GnC`u>{*5+*O*zdP;L{- zZo=rjH5g?fBP#D&YH&j(Vii)N5~V8r`uyHn zQ)&ouNXapB8`s}nW%lxc^LSxzgDEuxIHc5&4ce5CC)Z|Sz=m8rwT^ARxxgUDNGT6! z0vs}_HeA3VrG^w7&$HvAuoNwOXdD!m#G+>VxSs=@K3t904^-e)w%=>q zk4$+r1Q`Sz+)}YF+;C0Pu98DTnSh4ih2{xrxNkXm>jCbjmF8qQ@*b zVo--AAH5P_xYJiNcb)F*UTxmhw$b?20LKmf916As)07NTl@e>$bZ{uBD8l8iP3)oq=qXa^2wUBCyt=X^wv$oV_y@T#i9Z$GHAq=hM5C%uJE z1ueIg4h9`ZIpT_k&*u94?E!!LY#shi**rP(f)NTesc7jmz_BXU2~lws9QRLAg1jnr zpqr6TN3@~?s65|^YVNDD({a-DuAbmRDKiwlQr!m77s8j{1HTPU!e7HXbU{djNXae4d^vpacjn+$GT&->jooKCrKG2Y|3pQdvw#YJ*etNj;0sjeL< z4V_4?Y(|d22HP=*>txrqS)$R5x=wQx<;*HPM$;K=`xh6KW$CBUJihe5@7caZ})__JrBKTDG2)JLHYoqnqZK_~BeI%Fz`+bf{Xa$4L$2Uh>( z?;B9YeUzKJ=&8xkn8kZL{@YCa#s4&Z8kmiqUU|4PgwAU~27Vn9h1q&0>EsI5C^6-% zebu;kVhnoIiM`V&9}oGb;8%X% zuUd0HrHGJ{#Nfw7I+#B7=sBsF>lWZnuWa=5&ceMuIp&<-?U#>!e#PkPTY$R)a&f13 z2IuAC9-lPaJLWjPQk5P)TUiYqR_b_VOecQsbr$zcssmFPNCg1g?#pk0pbUqCCVjl>4SfA=W+Ap@1F^gh zN~rnDw>-!3*|=p=gDGXM^Qq=@UB$MqKwm$$g?|n2fl3Tlu-|VP^LdKFF?M0> zojcC^`9#1GOU|qNbgOqR`UIDvhfg8*Q)1vlpnOSE+q& z;yO3@Hlj}e@Adez*w5oAG$onGInD72%lOTmm~G(cX73vGQZiH@o||vAxHejZ~s zmt!pZ3h%Lh;lhn~%vAa{7jJCKGSH#&uinRN5qz!zVdvNfj=W%yBlIk%BkK?vU5Nmwi4W!8Gjx#qU-QMbPYa?uEr;kmH2|~ zJ1eOXi?Z4*9A!%>u$8~@yNZCFc^%l1(Sogs_1GL+gN@Nu*b-N3)7$w2xr2`E&g?d` zt#p(HIM#4qW{GuJoluKa^z~Nrqq3UQN@A%H2p4c@+?;Dqh{`3v@d0jl<*P2hapOy$ zT!I@f(Vm-z2j2Mv?|r%wd)916+=|tfN8?Js5x>OAxsl+38!~|n!3-B_2zJDBdDP-% zh+MQ3XBRETnfdc^R!K#dE_L#DEM9sk7ss5rW(q|S z*pXU@4O!I&I201JHpNNs*#$W`R9J~@J^k`4b8cJ-I0Q7bjce|-hO(|um+o+b=0Xss zl8OU3bPNL=GzV~0bSXFM*0D+au$ii%8}yJV z97TX5n7uSX4uK7sn;XL_t;9G(DL7s~mW6ju7jz{SwR{?prDg&duDU}dW3`TJW6qW0 z?UMx<8(D^lu~h~)WWI3aDP}qj5 ztw`x00N?@+SHa=t*KnbR3pQk~dP9KYu~{+r-M3L)N{&CxiZlDmoCN%J?xhfv?r=kZ z!c}$%r09Xs_8JOiC>+HF8XA{rz5_fw$`Vfw5VvBB&RtODNuHZ>ia7I9?b;NIqkJPH zR%aR1cz$D{sW${Wr07t4Ntq!PhfI*e1s$VTW?5NSDL6*0O}BY&4vrT&UkVPliprIM z!$MRxr($jzJ6DHQJtNyfQv^7kTwBQTQViQ(h9O&(5VY6;$MZX@@$&vUg9@s2V(N`; zj#@*?4cFWdm1pSGk0RDlDj7G6 zva8TaxxR9s60aYwF?-{1y_tZ7;6!(@;hMmO8)BntaubI>CpC))X1I{!*6#SAVijoiHQ=Q^?fB^z zMd%S!>wpab4tCs?13>?&RKmZ11~{&S5dS^aeZN<;>;1V-FwZ9hR`EqSBUI@{>XO^k zxt?+!_ePv&XSp2@hF!!jf^+cANjkZ7g6iAaQPa|f;)@QnC~g;w08X*f@$>K`{O+@I z%s$x$_B~J}u)t*{%^Y(5a*kJW9{pw;D%7Q{)tPUhC4w8=rz*8*pM{)W8FxA0czALh zMt@yo%77eg)7gpI3+-s&xQ_S5UOKr`qUfMTW9G(Uq|h1Cew7&Y%cH;_rzB#~Z-!HT51POzV6c`7n^&V@Xl%5tiDg-VwyKSXkU z2a>pMTwRBqhoC_!+w%FjeAnic;%L4DvlQyFgB{YJPb)P=hK{TM;>)?aJBYudi;6A8 zCYi@dU^^|aDk@QYXKHZ+*HP{eB?`SixB$P3$ikz6(RgBV9R55x9*>1Z;<0J5czjwE z224GT(K8}3H2f3>gq^|@VJGm1h_m>8=sEl$@OzA&c@(Rn=-l!+xwFX31je6J9a`jSCkLv_5eD?G=&ZI4lKl9 zzRbhte9s1beGzwg6g`C3Ufx9tb z&N+O~`z&>nO6*3K^I4d>7k~6SV(;N^L(j6Eqwt%cNIV|G?L(9B^Pp_DVF{h}CQG<^ zjc)^P2&|^_Ux!}a9q8c=Q^UDAi+cE1;=V~I!Jk2}>u9Q<)BH^yyQCbqO~^I~cBfA< z9`wnuYAi}H{6JVO?)FN;7l--G3UJhPTBV^+_%8e+G@ZvNL7$1~n7*SKXL-)bW0SyV zb{F6K=a<7u3@h|Z`8T9~GN|AI8?FgxbcY)5^p&7P_Rj!^R5J=wF$D&{b*gH02fxqC z!y%Q1R2+gFF5plF8r@G9Zrl^rf&0TdoZLy%fgek`F}a=dThK39C1M*4$_d2Y?q7yq zew2fEc3i-FTiB=O@AJ5A*?4D5I^Nuxi8r=!8Gq~E-%*6|{LP-UuMqx+`3#<{N7%VW zghbNLU35(20vzmfPt`x`PUql_xm)nN7boD)!(YaLfx|F#;D9c`A^32)xsbxKOMv4) z2OWdCOhDt(yvw&4KFmovD!}pD)Xy>fKniA@t;AHRHX@r4e%1px&Pl=1&;>ZAMb_X; zey}%X)$qA!LRN+H)Lg`goby;5Re~Ax8+5JVvDFBR;rkrrSa_6^e?*|8JM6g9!T-Or z8Q4fXkI8}?vy#-yZ)y&iIo|&Oa9sE5SGeKjOMpXg<93b5r^N0vaxci$j?!2;whUV=1UN7S;lIJs>13O|H+3vDUS(+B?P+pBI?Sk#Y*^e`>p$j#- zLQ_1`1~<4|aK#`;cLfJ+JNqd=1RQDjw*|b(U+~03`4R9Hm{9n}*#avO8xUWCpyV0{ z3UJ&)R^lqV%s*CTTDd%-s!P4$hJOfdNW~!~M)xwUQdmflArK+8hSVGiLD71$u4JGd zIN_a8YvbBR<|;hKaX*tdt`e_a=XBnsJO^&ed6wKXz6#?7S)xj5#Wt?|A}-jN6r&0; zstBVhEqR`6=KfFT!sl$h!HbAQc5G%q${0dqH@|VfeZ(5xTa|*;i!|B!clLeIcf_5f^G^9 zQ*A6v!=IJ-Q+YAwb3RS#4GT}1%}xx5f*ewD2ypy)cD%t2m58;Hv5TEt9)cPQE$Ob_ z&@vZR=y)<$wIR46$l;m*hg%-jz>8;_zs+-DhNB$$E6+!eL(^UA4G-LSdQG+gju$o+ z8RQV)kkZAf%q&XAu%#&$q9TQc3p$i*<7KY<;>J8v$OwdJ{>vMS@cKqRGn=zKRa81W zfTR7gDk_1SQZPH+0UQHXrDFiM>%YkX9DiHO_SjO4{u^@9pXVjW@xq>3I`WN{2-HnJ zI)uj;;E-}d=7y&X+ggs1JFCrxZ7s!6e$iD1R@-VQ8@8>O`^m$A4cXjR4u)>ZGr%FZ zA?1d`W&}4Bn)2+{VpDGz2;fkv4&~~QN%bKBAkbiWEj)n3Rb430ge3+&RAZ_QB@|V1 zQK>ehVt95_wgC<~`_J%v+`JXav7!BR0S@Kz*i(d8RM~_c&+|0p&2V#RD0hbJHSS-g zycjOv=ngk7sW?hKK;x3RU_;xvfWv_s|8&bBInD2d~B!R)k$&{6Qu#?K>i@o0D< z27OkEG0SRjpwv@ErR5@Onp;pU7|{+C(J@sh$dMvC4O24l=tt%F_B4`J{+Bfvp(0mmaD4&bf(xIyd`#M%N zrSjr=)L&>t9oMBlj+wk?znWfx2Lp5IWY(IK?UuIv@;LB^@EAPvX%Z5+E&EO2rx_`9 zXp|sPrYa3mOlZi@z9~Yao={Z{m6Mb+pFzi7|7lODX|?jE{M_J|5s3ykEV*pZMcflo zfGG!B3@~JHzbbJlg-S|&E7I$@f0~kBrq{L`Kq%t!9A1E&+|=3@WHdG#P{?9~2r}fd z!Lw^FAiM4&vbkJp3Z18_l?dYKIuq;LoXQcLmr7?&|E<>b$+`Rc(Kh^SY6-5V6Qwej zJwt)(CzRmXRlxEzb{csN^lRABb4tZ-<@7<0NAX6Q<6YfiY7+M0t-8xP+GaZC3USz) zOozM}81`KaM$aw5VQ!OIPiK;C#McNvpI%|lo>W50#UO|E?!XF+SyEtNL%>ACdHkmK znix%Iyq1n_r~OyImwzeV-NN(ZIUHsCpXRlkrjsf_b)4JC&R*m+m!0LZQ#`+uT&`Rk zC)h6MI8V@s{VM}DYU^B1D_?|Q&~dJJoWm2`?li|$LiGfP-*X*z`i$1&w2Yq%%+3Pt z^2?@^SYx3Is-|+6UpdCDYsML#ivcViCxP3m4C^^gM{!)xN>D6{^K6{+=^t5@kZkTd zx1!zdwGzuJj7DJ?a^{n0?A9R8vp>NrjcYl(LZA--`T~gNdQrMwKHFp0SFw%r_)O9v z_HH(1nH+V20F?+9g!_?SBW?(k8YLfh2NyW12d^eeASx(w+k{&D>60cb=Y2lS_siOp z=W&L|Ji}w@K16a}jLx6O&8+G~MrDWPIMH?Kx{tA)bziI?>~;GYHyP!{2e|-4?`Ko8o}Zz7vzs|BF(~8I#6k z88t14<-XY!;rAmMH+%7YVf$V0TVo0&Qx*ALG)UnB4i{>;!z=S~xXZemk`gOS#bAfc za{$N9UJdBUV+e5EKNV&!dV)$Uo$sxe;>Xgqgbzc&upQ%9j zxjKV1VP~40;kkON{u0D%2F@J9 zag^&EV!wSWe+1X_$4@E(*>*a%J2RUNaIB86r_-(FjW(^&6N4M+PVz~?4Ji#=(BS}% zMr`4a>*lNu0~|Mw`T#e+@})tJn_m7LH@*0Yquij~`mzH!9)9mLO#FN;_O08ADCN~q zf>9+671&s~)XXZSaDLp9<8{p7TVJXSWR#@WFg!xYC z*mOaU*|U*2YqkvqIFjehGss~jW0hD`5M+Uqk0WFGGNdnGVk!Ga$>k4{gE?I`;wOcI7=$V)->`pDgCcZm@LJ9*~&U@-4 z18p!xhT5|`;Mkn4#G_JgoVRfe{}JGj>Z1#mq&Ay6L_^tS`8Q}%d1$@WTK6)*A&}LG z?R;iFKcyTT3Q>u{@8=}rcXLwlZ%fz#`YQPXAJke4(NI1LfeooN!cr8z!H1Y98o`Gm zC_ze%a#MB41U=kb7;Xg>g9~P*9_2?xS3*+FfAdHtUOkX%FhZdw5n0U!EMDQfR}ZEc z01@<%+Cz#9DKXwTm5UelC*qmiv3P!80$w|sZsla96miST>KyDmI8VoR&p|^eQr|tx$X~`Gid%6bCZ%D_$1+h@&6e%^V6zmlW z4k;D1%mE!v@=XB%K@LFz0SUnb%XuLcg;Wy@((%Uyf*cx8HQ4clCI5^!5aKE?q}C8@ z=pLS8stQj|jX}$E%!aI_gS{%>=IK~2(2%*IC>nRqLjc4DA+Fj(#}-8Cek>_aoRYD; zuH~6lMMb$d+zKj6E-F))ikob7l&Y;LSI6RH444;hHfTX21}{v)(8Vbjwj|XOjS6tQ zwyhX1Y{+#0$GUtE;K;N8WPEm73XXP9nbxxSs(V3rvL}a3QFnuo8usXk1A`m1D#5Y-}pQfc1rVYHdEAhK+fDuaWsc?&Z_^w$w1d< z;caGNLEvY#6mOA_8Q1CDl#w;d0EUX0rUE7^H$=FkmIX~ykA z4&ZPgN4r4@sXW{~7%~?=TnR5^?lRW|E~FB;+B#PP4%aT*KByJf1q*UGar!-!^icnm zq+@YINImYJ&gWrKB|bmciam7XRJ|j$jZPN?BRWvl)`F^wG&(#|MJUYV7@e8$-N3`4 zmH5R67cgc6e;=ZNZxeveB7v`?X`EK6&e^oD&H~?X{W}V1s)78Lg40d z3xN=fDWQFK40tRe1@A1Xz$xzA99ZSp;d^~fLpi;C&sEJr|Iw8yh5c4@;Mm_X=U&d8 zR2}?jqm$Kc!`uEHY1xCC(Eq5fZV!fWK}mIy|&f1jiJLRWr$QF^e=2$ zp$=NcpE$5zfhg|lW47(jCRfuzqEn?rmDzWsOn1-hpRAGOC16kBI3I+NJ zpDC55)w62PdjK7;pfbF(G#3fHcNsiKh1)D;JNBCxYq>3y^FhfeZ}rK<#NDkpC`X#t zq)-}_@zgc~M!9@G^Jux;KAZD$xJ)4^8fMTGHX)~0ZJblthN7BQ6w?t`Q1waiWWX=y#HKR+iO39 zS8~`b!E9ZJO)HOvt}}_x`lPj`xGx~z!WYbe7Ay*)Q>@$;{`~Iv@!KIMoer}lO7*Kj z@1Q!X)?y_{eYtF6E&ljP4fweO`<6)IIcD*kRjJ6@gvUxP??55XDXXj*g?di;{3>LL zT{mk#!8gGgU8~!Mf^jNK`yW%Q?7Wnt!;Iqw54>7=uFAL4Xi(~n^N{a&UGK%#^-;+t~xm{eeGCDn_9i|(1gg_4HK`h_)f`n=ga zVQrjlwQ5z$%b_qA?N{Z4RW|n4!1KJvrTEpyd-mP?e1BZ}VKZF=+5`v%y0~VDO;fTsFdBg|p0o9s(Cb2Xp8#C%k3Q zWq_kA2M6~%V)#%D9zM(f$IB5PVd~y^Og&YBX*~aka~B*1hpAC`4LpCD#&uoO_`zSw zkMPm*HdD{#SF|BIw-M{23-M)Cv6U(n&{6J=khAoA&Q>EVs=`zqs;r_?u`^=M zo@AO0U11qlbNv6WWh#MtsSK`rT`K2#xq0SuUD?!xi)NE)5wiI64hV{^vwRyL)4rg6 z#}{~UW;0gjwqrei=mj=Zg=1BEy*a>pa$5{+$o6Nqm>tY(#S!+`4;Qp!KbP;wY{Itm z25ik}#5RuaqysJ6lG132MOQ{w9Gz!8oA29)?JY)ymY{0XUad{l-dpUwt474$YQ+pi z)ZVMqs$F}lt+Xg5u@$v`idxV8f8OK8{fXe8s&Nve4c2HuK3W?=PnSIU|#T$I?wF&k5xms8Um3GzVyZm z>7XL~aU?%E{yom>^CYp#do%kv_z}_IzhLZn3zNT|S+g(tMrQ>Win?UTC_` zaxaBSxT95D4@L0u3v8T{&jfTW>-h}Y&*6&J^K!xxL5oS8ChtB*R+Lm8g_BF=LOgw+CA>``iMu)zdS~a{~ z*=PoZxC^rqdPJYm8CRU7KfV9QDXWYX?jBM)fo3$d(`8MSNyd`Atu`x}rK!o0pKpI1 zTb)nDG}c^uX63@^IC_BiHdWR`0x-a#xt$!yN3 zR87X$cFTBpLF7YJp_(luWXA58NDd?VEIuDYAbLwZfhjcXKc556_1Ze6P*k3Tl%0Y^%`);pa<*v=y82 zfp4xhEk26tYkfT(?a;;t$0QPos&=0awFw2>=DIN4pLUuUz=?v04FBhCk?yX0%=&|N zxxG)tKMPa!B2N);Jyj8vjIC~t;X!E#Sc`yysyv8Y1W?d9i_LmjTDyEV1gd2sj}~C( z$o5%TmnL4P7zSuUD-?y+sWUzW0z7p1pyR=e=~yfg7+punz+dwaNFz01Fy z=AMr*7Q;$n}1KXhd;WsNWT}psqqqaKh-#A`7{TEfuAhK-@#624|-*7f~j% zslJ)#^8@oh3(4YEI18z6QoyAcMxAG;fBHZ)HBcXwcDk6#`AJ$uCFO?p^_-B=Y`+mW zCM-RlgfAu3BvuDx`MNlQG{0`+AIR|AN8a)|oqm;-iPM8PZou6Zht;ETng>j>)B~rj zXTLuDatIUX;cAg)SYvR-44xM@e5Oq|S{Outs*lHAH7%@g3crI-%%H@cIqT~8J)f#0 z7rziBSwo|HnR)w(!zeNu^pPiL4rpWBk2^lAs-uUoXr~&#vu~eiL*Qgrv41aFrSIcG zA=)=PcqiK!zufz)*SI@{Zo`px>~Z5AHflQL+Owt_b#E2?SQ%GcRcdX2Q%ibE_}0ep z_C%NxlAc};YF(w>JY2oz>5=>qS&z&c-9_Y_exK702`wWJmtA|867Z}3lk32pE%{$- zFX&*Zy!_Lhk*AU-A0JzjaeV)V9yT9s2v~c~ z8`R0qmrp&EbtHA#0_p6R^5_rC6?mWjz=z1@8o3h7UQC*AC-;F?!4{EiA9kMADIKYf zW*qPrH!b_ilLg@|Y!X1RieLE6m%U8-6-d>k+3;XjEKNYX1ac+)2XR_{>21>?V2+@O zg1F@)@=15q@C{5tsfJtJE2^kyZ2WOEU!ztyyu$TWiGG)#1mI9bvgwnWJO+(|@0&6g z|0^<<{)fMC^6Sk=i;w0p$g$9Y{5Wyi0Q5rZ$f;QV<wj z)g_l4r@9`d{xWaktOXC>^GK^La-3AUy9E~{8Z!J0m%gOZm=6%XWSH?SS<-&=;|Ip0 zSKd3}Vm+)M=OfmZ;sKL6JEe74p?E05zXh81M7j-3fhfbgdXS&yX<^Gx3AZBMUevqF ztllsY*3Xx!9r0hf9}(nU#I8oet)0m0c_NsP{9YZe(9ZfVSr6O{EUuQaVN*C`wr9MuR(HQ2v5Y~~iFa2R z9c&hp1Mz2KRU7b zN62u>q+3r?;`Y+#aR-m0`;;1j}DuYNyoKfQi)H7r%gdO}KpHt8l1()eI5 zKRdKt^Xaw*9lQJuoM{h4s9Y@0f!mjUz?dDafS=o(zCj4*rSjRCqpBVgQi+tzjdPMM z?4EZ>ATK#u=^U~I3?{Z?o*G&OgePp0io%YB1z$vS1fk#=0OaF{Gi z$%{!$Rhh`{?W0CI@n$8vG4ULA*1tayNofm_u>%$K$B(%kZlqMpM~PO5*@IV%VfK!2 zdtg-rY+!`yf@35SK-C9RT~Gr^`x-gfoF=oSyTbX`H4l*SThc$Hfq7Q>iNeg<`?oBI z$;2?CEuz%NTWFztcs+_p?Nh6*;L5;&mi}8lud2f8Nky>PG-!MMBzamv*NtT$O7C5PO1DB}Fz9n|LLA5RD_?#}4_F|!d~YBN(<33^ zFZ1p-QAhF`ye5(!D=1MLKHb{jHSkjH$CxB!=RRJ58nvIuq2*u-u9Vo1=qy|cql~w5 zA{B@gEwknE~t#scXQ=>9^wCe;^q!W$UKttzk{)v zxs33&?QzWv^>g4fa-s9Hrho8f~;3k6aB?1F!n)$ zIFNr7o&eXA5?oV~Mv_!{F6-kPyS+eJ*1%Q_0Zc|hh)hIrZU99a=T{dA<=Ns)u7}un z$$aeEUyVU3vqB7w29%{g&jQGn&Fo+bn~@BkF{^$jKSDfaT8jqx8cx4qOD?~}Mt+dU z=>A-I-rh67zb5fB?lL8Rlp*hO^~bZMrBwS=%syYo;|?uuQ0vhj`6!6KX;*9SDi$K! zhH#2l?_*0UY7r%7@2qD0#3ZJsYm%u!^EU->0rCU<)OY|34G%YCLf)2%ze zQBQoHG8PqoZUoI<9b-fO*AZm+%(FPxF*cX+C=hq%B1l`~yH}|0qdzB8LtWlTh1}`s zUWgp&M3sli6Gr0gG2Lggj6TYRL`fs8_rn1J>W}{9f192bS;Ay0tVF5|y!Em+A^(4( z=W{Xiy9P;V8a+=Am77rm{-s;O=Zl-~_jgazjO2Iyp_)?pb&yr} z__Mu;m~+dU3YrjiSX^totcRq^_8})O;|YLN)Cyo{`a7d?^24=(!f|&3N)EeqRi|Z& z=iCa+C~ngs_;lw(I6CbUWL>7T+-Qc}H+5d`zcQ%c>dh?A4!YQP%2lJm;rHmiRmC?a$rqZbu3H&4v?ke!C4f$i1EQXbs zw&5n~`njY~?!lY8`i{bShl0?zvZ7mE$L;I&9S;Kb@2Jja%!PHJd%8UY+ac}omug^L zypA%qJ*rhF%FW^;NPs(T$kH@PIo9%1h zDG}eFtf{bn3OzGN5%Ui*rt6;&uZ*g58@E0~?6&0}e_I~VR*4^e!_|EC;$3e@*3e}Y zmdy1bvFP4CiKa;meQS2nXl;+Ip_5PBp9!E%Nn!aNv2*vLulTG12=1IvLuIIDQ|T4r z-EU%>mv3(detJD@X_IPrEk0UGRco0mUnK(Geg74he}zvQY*(&_bM?(lhH>011)mG< z*u3IkvSq$C0Y_?&c{#6NSnx%%*6fcp9W(rjNUh>9@Wdm*1B^<&`^kb>u zN6Ja0eT4|J!M=VFz&*G^L~QEEC6s;xXvhFq=jrGy|E!P$#fQ6}F6LfBG(CM$=^q6ybG z87004f8t(uF2^je0T#PHR8?JYMJ0mu+20*R>u# zENXG1YD_PEEtC+3kQ~wWe&(0`$@PyI8lN6L%RG=hx@|q&64Oi7@1SmVuK zaEinhjR5@}If_*PITB&-9K`D99o$d8EUI0fQs4ij-K>e6_`)buiG`cnxq6k7HV4=% zu&aO=-vZ^iuk%2%)gyRLO}HA~XpDng5&^jA^6`qsugk4ah6_;7cG#fE#9)81`tUe_ zgqAnSHaZ5G&hL&D(tqiedm@`91&>h;1hO zEl1J&y>|@p^p)lC&dK4#)TV$&IZ#X)4X<^=07^smiyar7Zbs#ISB$Dz(-SX5DJ(7Q z$m3rp4kS|fK-i40ql*2lBLffKm}c>_E`N2--#fp6tV&)3%Bk}?i3k;XDRtzo++yhS zl4Mi45Do-o0x^vNdtHE5$6N+?CXJ+8<)}P(nxadMpuFVs(!pVy(J~Vx77Fuoi#wH0Z`E# z=VqxR3%CY4pPzjJehr8tnT+9yt=>Mtp#>c6La!>8)R$dU87vf;_mN?LvN*RraA!gDT>Qho9ka4ImD#5(Lb%}zS#0;gUG}}6gT+~b(iA$qW-deLyTgyZS zb@GC{a*irrzM%s!SeSySh&b+YpeZ*DJS`2Ef0myZRjQMzYR<@DW2?fAIy?|1TP~h< z3u0}{BG%!Ax=sc(OcTxeUEUy8Kx?q+E&O!cN%G^t+3DeLw#1geRA$4KT8?)hBS@`a)v7thX=3-=tX1E^6qKUC^Qf0lqsN zzI!!Mu{jWd;Aje%mPg*p;QPKxs>jY+8- zoQk&5?NRblHp3JQEyP)hir-8De)qf`;rw26fHO7G{PGNAyB~+ z41mzVOyu?ZlaI;?#3yM=*w~4*+)Im}rpg#InL^tTx zGiOa}&#FXhwDWMqA;Yn+W7(?=oIh;-I#S0vT_+KKrrK#AZqJs%9x`fNeGvJu+}MK8YakzSeFyq8PvbixXi#rk7ZkVGWO ze;6YBcrEg#(sv__zf-E~k-tjwX3t0Wc4uL!y_||)V&FZxxq&0Ilk_KASH313w2Iyj zK0)A$XMK&5t>hGh&X|HX4c`!#F`^s02G@`}JSV1Ysj*|*CyXz)v26>9=G(;3ZRtEG zkJdw?-RoNLa)(!qZ3$1Vh0w-S*;i_c#D6I2TiGHr#RltRkMt3_T@pv;@hi1B3SfX| zZ7&7=CQ(&hYNCNC03ij|3nj{TUTQokdiX0~b8{=rHo+~f+FzPhB}OPk%&7IG|F02< z)>}9V?+XNf_+jMk7o|SZT5Dn`M6w*dK{MTui^K$b_c%YVTZW7ZGbvC%`1i`h4+~9) z--AV)Qb6mQFG#(NUrTso8QKSmXkHgR4re+y+ioPnNTZC&E9@CQbG-fqc7Uq40GWp(2i$rQpb(fqCw|Yx1DrtyI!6f z4Q-x`%2SSn>Dr&}&1YV5_?>iIZ#Uz-x=fx9PXXVfbqM(zXgmd`R9+q@V-bep;6h|j z4lmp3#W<}AXZA6_h?+w~dS{SFS5)BaY2s;Mr6;Q;t=+gmSn-g{vYP{!9r|^Qzq+ac9&y5VjoQg-Mi2Wy5+Zo)e7%1}9mtG%rl=0S&*QjgWk=jjt zuhD3S|MDqQI!D;exG=#ZUow+AN7>Ll#Ki64w-Wyax=TfhW^A~5A+VDV{~47TiLusJ zOlcD9frUlvem=PkSbg$es94U8rqa6C8z=v_;gYej_VcjCC9>(6*T?Z637!Z2TVxoT zy*A}1T?dwD=lEZOg1`+j^Gn%fr8B{NzKYW8olipA$WpJtn~MfbrxOt`0$#Gw_L3n7 z1>`qR=ZiRR7anNBcEgG6dlQ@4O7&~2;K*@;l!6Y1-i!4Z>wn=XDpAuI|Mc_|W|q@t zMQQrHBo&+{Sd%~Yu~6aQsju{IkhI`OyzrEb7bDKk3XYrl%v`mkgss7XIe$Jk!84Pg+NNm}?!gL6I{qYAS1n3f z^Il&WZFHP|7MZmEEop7-V`j|;2XmOL)*T#MOw;h$EG^G+wZ)S!yZn9a)E*Y(FpD?8 zun}+h(G3Zlkr0+C0)9L}nn<`#R-dv|rIeR(oFN0F5ucJmKRHxYuON9vi+FzMIOi}D z8`SMDOb9y>>w9<>bl&!Rrm5!i&!0r2d*1=uzl}N>Kmto9QhV-=tfeQ`Yg;a$V@)9O zn;ZrNh>MEHS#cmNK-8uJmsxA{UX{O~P;_*B@cvCiy0wCOaai7Tfn$$%i26eN%mNnCOjl40~?91eSd}46sah1-=i(q=!o4ji((MAbbg#) zQNM&(&$IL#m%s+awC9g|4s1jVhrC{ApTrf#*swh zK%AKR8sD#YjC%l>Onn?67boaC9!?A!sY|J6n(0}EiKq)TK)1m~Lo=~9;@h^k@h!q~_ZorZ_|C`we4pGrSV!+U+l-{gSU4aWIt zXuyEluw@7vE9bbr3w(P)vy}y_qukWqHp8c7=K?Q04wjtJY*27C8C+7(uOn4i#=Hh` zNvyrfbdRvV?GUa~`~)@dLP%F&jhe4J)3@tp#T(p}Eu=*vCDL)BvU$$@2gXg>KFsqW7O4W|1;!n3n3`jE^47V+y7&g*y^VD~;)7m4< zPV8nb2?Nm8E&vU{{pC5a?-bOVQziDP%B2MZ&SMXLP;zIyf+Y$;3QTBO=7m-*mopQ6Po%XvXp$4oBq0#j77b0+&{vIr0;W@~w+G5YLt^Cke$Z|0&RUCK^NI`2qc z4mh%j+O`V_tXGePb3%vjT_uO0KF!xS#2&K+Yx+sHx%jUVCdoWL&4~3CTQCCCD-t)= z4vdk5-tZ$X+1PK_OrK*8JSJP%ig5tU2R%0h0t*50;G)|?lM<+2pZqO0>*}fhcIK4y zGs}MZ3*58IFAllUPeQ8mq=k>Jv~BD0Rw`~iB^kg>c!Zvn<_q@L!M9p7a)9kFYjqHa zH%}UpcWRvcyN8oP-zO;aZT@1t2sn0$LZyIT!X}!&^vPFK_h&h`==2j$&$s{ZPJidR z$1Txp0aPYk+B+mI=6x=28Gb73DuErptZ29y10~YFkr%m8a*lO9f7nB2rNYgw2$!^y z6AMo#qe1&PXPuO5FnO3%8^k|4C=Eo9)Ke)vZBAoF z$$Kp#wL+lK?xxQkJL#da#A355icVp6z!aYn3WXY{qwuG;Zl1pRCn;H)qG(9J)E=rX z6{PcaIP^sX;qv~y7v9NiIkAU$g#1HxNZe+cEl>PfsKK&aA)HFKz$nog zQEB_;S?VG`=iD2x$&Vqah)w?fM>>f6wN#EWuYi?dL}BbUhK{ABYOuRy>&lr{O8>~ZW~PfDM!?Jbj@x@r_P>Ib++_{^DwtbynA68!b_qb0rOO(I3C29b2^ZLah23hw?`&|ud>4cK@4)-*fWu97xe#~f1GNk+8pM|Fu` zaV~klr}B<{=Hg@D{Q2^}!-}d`+Klhz>1~)uc@{E%bh+e3<>%_lE7WGb5|H3C4isKe z!4B8n+f$wws%cQCij0;CAn#_IVYYr}^=P7_>v3p^OPF?t9xAE(MHN#h&Vd)gS|;dv zp=5W6`@hrLk^C@lySKh16KTp|*Sz#|CXH#5JE2Kw!>FE39kUKiD2X0EaxHxvhR^{A z1sQ*vL!nAjjJW^=c_nHCbo}hUt)R?$c{Qf}jJ2Kl1S!0R04;8cRbb2LjxAzzp^#9} z^D4Q0{@~dWPUV5yLwA?@?2Obe?q<&78ut2Hw`Ryw#L`!(0T4?k_LwsRx60Ut>MLvM z#o!Q9FR7XG6oJdBgU-Ru%#nkN3n1ohe!%9kJHe4Pi7cj7o$O|1b~Dz{{Q) z8Zui2o5YFjY@1x^(1&lrmtJwx-E2e>SXEZ%oOFs56LsGu!V*1c>uV{+K5KbwclZ3N zq4Yj+)l`H}kr2acA;&!Q`g)`GCyLkDmjF*3DTQSM6*h7pB`6}P< z24LTXEWh%sz>xNo2Gyn0MC$vl4K%`Q@KZII+A9L2?TuwP7Vj0 zdP+OmFS_ym3lpH|9zA=dZo4&gIa9+FeqBbpl6Fl7%WeKmuq9@tXnTQg5H(9NJb8Rw zd-nCSU~2C3Q<;;E%hclu-^`ja0PuA=R!_C~@5kvXYVVwS2%t>0{|IF?_3!gyU!Bz* zr<9{%2k58C!SYvHwLO zp@)l$pu$9RJ&VEv7l8W%5PR-CeW$y6Gmp_kt06yVATLU$?bR3XYs$Vc!c0IQD-B&A z#(~o6Q;9p|_y54uJU{h@b}Nc1(q|kAe^kr~rEn_^Evv6^L^2=0Y22N9R|uKe=kLR0 zrMvt`jc(6TAN0C^5b1=kJedB#7sc~(iIgDlvGB%53_z)W2mFa-Xt@&XneH3;(0rW6 z(3l0PN{g$T@em<2WVgKB_C;g4Q!pApm6jD$j0HDsJj_3I1d4+i2VvsY2W@uNpf(-P zm%!hWH*78YVJmZ|i;b-PsI^oueQjh}{$z#MO)ddfawIcqvn!_Z@#@%xIND;(vLA4K z72}nP1!9eA3263`!G`M1Q`*13O>GE5VS`Xn(5ratBybJiO>Ko?pBeF$^2x1zj!`v7AIie7&GLQ*Q;$wN*~&^i$9aMSG5;*p z$W{64r#tDc`=-nfUH2nyNr+O6Jr0GXLfvLok!lUVqD05$I@^buC1R7;+P{uDcw>fw zua;GKOjG;f70JlWqzel zk(5ol9X3kSdk5l@%vh1X7B}>DELot3{2N8BNCV8J5q$Bo4c%#w7HKLcSJhJlJ9{$b zrFB+BnIsP`53r#E#Z-0G=P^`z*KWjf7jcHiJ{>K4%p~@O@;GnoH;KyoYJd_H$;e`Q zTeJ(@ucp6askk-vCr4Zf%CbDg}yl%?5e=!CH`n!xwZ%;7Zsia z0iSjxbqcqlQmO(#XHc;&rXMukG0Pe)Vn-4S6Ddmz@eqe!iDK)VDBrv5aS-s&2pQ}p z^n)n=M^6tb4K7F;?MW8JVu8l>#gGa$dya@#Q)`)Z!Fu<1=Hp? zORY}qZODRzAk1~D@VjP%$&#|Dm#)8Y3x(H`1E8@x|XTw2(Fg#`MuD|_;d?oACF zb!>gd9gopVH2%AYS!SHReQ%yX4y)2Uh^rl@E!p4}&u9aP9spo8J!i1Czz)L~$>?)} z|FUc~H35K(@9rn{HW*_bYiC2{a3uC|Af8NBBNI{y z*K1)vy3N`cI@ z)nx-i^3zEr@LuAHSu|ikoi$>H+lmS?t1ea7!j_dbu{8?;fz0*8_9T{b@F=F$4|1f? z^kq!+N5C>OK%F$6H&o&_GlkC-GeLokpb@}eA#v=~mWU?6 zR+t2R?L)Dh^t=X!O)i%OYq6cqpEqU7r|t)DGfnez0L3-Q_Q3g(F<-*4Eu;Hwpk84=bF`cl&@fe}s^C2~7!nz_bW8$@OeADIg9V$& z)QJ?8`<1g&sg9;;kGs1$Po+l=jGqyR$ZM~$7RNm9Y+dG#*z5fs@6%=6V9886GjObs zu6Zv2R@BzY-Hr}$^2293Nl-@r)Yk~8&cjh#bpkWC-7|0Jrmv-s`pP9>^DsTc#u-^W z(sUm09n4^hWYYh$BoSDkmVM^6N^cm`gUv;>>&vt7v@=%Q$vu&a`P+E;ORUcUZqTu; zhDNGOf^xG!2Z^w@f5w=7B>?z*uhCNo+7kfS!-@t!MrJAj^OrVT@MEgT>tE*D6#fbC15eVPk&2nAad&l$AQ>^HzW9kBD zW;<%egKWlqr`YH}$OpS^F-Hyz9p#B*=XE59O|di>aOHI7k2v~3F6x#rWr9bv z%Jzq=k889`w({U(I+?guZ|Pz6o{~ZTj84A%K9v2>l{vrkX`(zQO@dvqOyma-^I18% z!`Z-tD@o@3rXR=P5bWNpoRnd`{EDuzN8b_Wi z6F!gEgWKh-uS66gBhAJ1cG{}Bb-K!3-c>1iTU>ABM~r%aqy&Cj@b}FfHOBV&PVBZ6 zo?%}rk&1wCF9Pz7U({{i(M`U1>III#{FDXsn!bb(`d(_-YX3TkfoF8fV|0Tw1H`r9 z9dJ5u0X(0vgdfH|@C=7R zUxEmSGlZ3`;%8nUpZ8M)F1|%yF$o)YJ$<7X{$Qxn#${AN(^ieG};qK;A?6r{HP~1eOHL*DF>hK}FPsoO7@f-^YK-hFxRW@U0DbQ^gnu-F> zQ6H=Mtubb9af?1G>WPEOl+(EmJKo}OO6Y1N&Z`xr??(ixZD*T*m3*F5ob;3Jil&zW z1J|+r503=e0qq)|n2V@28koFL`w-F@XMVT?)SWjE**iGM{oA++-~iN=;zmAc1TAFI z8b|G)wq$)h)vr?heU*8OB|IrzJ zSt<Y}6Vu_%D>}&Y2&=@x(m>_a`(Y#I5d!sFQ%M{=W^f+p}K+!1KCbpzL%a-}v!K z{@YJqAk-DW(lE#9VWICOZc{3Sjx+Bn)99v>_3V)&;lb7L##TA}~!3+s6u zo0i0_={UE+Z=eM3r$S{wzXLF9(beekHxsn1!51W3wU$x0zHjxq0&&$v;q89-aASU@ zf1kHimm0wD5!0BPJ&XGtF*DOOchjS#wD0fuBp}~>!tr0>@nxjg^BwnQyl`DfKHO`! z8Du;Li9;g#Lj&P&iSiyxW4!Q0$SMM`5SrJrc_*~&d?-o9ODKyFT}QrmZznEt)LF?N z7xLujN;F%*M_88R7HXiXT$DjCgiNo8fX8)M+Kbg$?X|Zt-3A>5qJV;Mb|4l9HRqOhi%cwQAct@Itgtd(~qP8S)Ayl_E zNGaWS&PMZr){j##8v1(+&f={J$ZJ=LQ|%T?V0UK8axpl&-QlE=Nla~_?;(9}S(1I` zPUK2v_C6TEUr*sf_~T}E=OdYaP4s^$w{)am3=!*%)l{c+uiU2huXLpMZ`1p@TwDX! z3KWKGy^ASNGBbBkAY9;lIf4xt2mHgug5dt7KN8{=Xv{R-s-StE9c)lb_+N8n+W7p0 zzMvad<#Gjy^^ATTH|*GSw&SLT#YY#YjsE&tGY&tl@`D+l|Y^csb0A!#fHM;nBvfY7{jZOtrg zt$;U*fgc@EmrD$9*X~u%87KY#5U()9?$<^?pxjAqASmW&@Vn9JmM_ZZmpK68wB_Jm z%?fD7euP}GUo8%bqUV0Z6MXqP8I=g$3P|2P-6;^B_QyiBLbFY?2gLDYY0fYlY`)kC z^RJ4O%6)PPByG1f)n#LNY?|)<7Z#i)M;5*#0NpBoH>Z`VYF3CWr>Z0==@MY^7I0hD zb9Wp542tA2Tf~2cBPdych2XAATB~cwmNy77sYB)$jPtD;KYaIX4_8j#9O4q_M@6uz zrUgspJuqWIro$c@E!}hfI6b&mmb%ZD*RXza^qF<}yT1NZQfYOuwqFY%1#;s6uuHPa zjqlJ7yZvmxRS_<#Zuy*9v5l_f(0M7Z2cMa6Fg}}fF^~T=-anY>`d7Yyh>7DzRaui4 zcq&V3z4m}OIBzZbAuBCDCcc4$i-0}nT}xwa02>>_U3=Yt?SF+6h>F>Pj`~^puAUO& zuOx5w%M{3M&RUgkL(F8D$hZfar!LTyv?%x2PcE;2>7l1Q;i*#>Brdo4KKWj*w z|LV)PvsGPoH1DnM<*7@+^jAahdt8r}nh2wfETuX89k%s$iGM@}TeUJq`Z=7fez&`s ztONObf%vc5Hsavm!p(7)6_UahG_B)fh9wWrR(i3EKh;hB1xbBS$lZy#>tH!ivkgcwy z&af@KFD8l|y482nlJ#O0n)AZsL9f^4K}l@3=x#5NqP$eg`8X5ys*T0RBd~S{J!ebP z+&*7V(p!)hW9poD!-t=c)*kky7ktODg`xEvU8c**AWj%7hCY5D<9*$B7S@t0F^y6B z&rpP#iz2`SUgTL|k|Gr)^%-XG-{1UJ#1Z9x%(7? z^;sOF^LEVT%^+D^&cDpLb7*TOiy=bccP~l3+&(1boR3v+A6syto1U~Eb@OUKYFc&8 z*EWWoT{rNjaf7aXVP-5~x5W7CfPaZ@5R4y*p59mUZH4Q*EuYmtmazv*twGZZ$nLV( ztRcV6|5{d!&94ebU`PS9NL8`BU}U-wh2J&1bX*rHq(! ziK|Vw{|Zd@B82J_uMV2k$!=3;TEeO7R`+!pr`Ujtk zapyH?s;w9f2P_Og1qK%Z;LU$&M{LGZv7TC-_*{LuVJb$DQiXjcV5tn?b9SARAw<-v z{Z8&PVK=JnGyKQbw8xsq@1_hY>=;Nea)A2V7;EG9l++7tYd(3l#H0_?bj+2&8o-8B zmk7(`Ov|o}lUoDJFjU`0ud8un?86*~QtU_JFFPG-D)p+b##^)K&7+=pedeA_su_6> z2~#ppHB3Rlr2!lhU;Qt*8uH0?e|e#zQ61a1^@gyab_sD> zKE;877^C0NKKXGHVE6Y?b&91afxFoRJ0+0BKHIb0!7*OrLsmI&g(bH5hV#^CUApY; z6BBW|j}w_iHk(0)hpQe&?SV2RVs&zue_&3NPU^seMb^+=>>;L<;rJ_@!_t{GMi>!^ z`xH3OrBT1@tHSRRg7^asj92~bu>T>xx;tg2S(M;MQI~Nk+alK1fwV-VY&N2C)ca)m(lp?~p$_}q zA9j0i$=TocFS~+yan~$pGpa&p9SNlI#4`{I9C1&@ffndU9(Ui80nX#`UwYAvm8AKB zm8j9uS!6Nn!=;X6HjaYrOKg3wAyl7O&%y#rBriRQtINYXE)mOds@h{_W7pkh7crWB z1IKRIA@~Xbb?RZ&o6+96L~>bpe*}6~xhnyg><4A68HwmcY7Ub@->4Fe$!B&NZ-%p| ztt0opmR|{WQ!_U$Ug-t#z1m9T>|@ctUt^NAw zz0>hcl;9X&A|f9I11_y2TA=Fm!KQ2MV(~UDPN3Jq*8pB`SPS&#f$%cnQ$SMF4#U97twj)Qv6(L}(YF zz8Qp$HRR3t(Vm+-WGL_pYt#ih`TKG}n7e3!`G@2WqO_Q8Eg#qAR#t$B)}iDqbO&Q% zL~46KtDEenYGwgY?nxHuvCeIoc4I$7$jq{}HUn#C-c^T4_tvB#gSeDEct^&jARefH zB}+vkCwxFMNEd}eDn+#v;N*$Qwm~o;ONxs|=6%Lnexb<&X$zi#5oyUJew@e3{@&OT z+dr3#B8*Ybqbd}O1m@J}0(4d5HH!deG2wT~`ahflE1eT3_xIdM61r2nsS|DB&Ee$0 z01tb9tED{8ztl5w5u5pUDCEGVOFlN}XkAU&%;EJgKEr2cL%Yls)nwa~h+Tm(U^8Y` z&@|p|^kh}HJVVbdcP>|AtI@%dn?jE0kHR8nd8}qNxfZEkyP9%KIG3PBOB{Nn$<6zt z8y>W*%L^M35u3sGv-c^2RI)jLfuUObMcU%C`4H#A@!Ellz)87-x2I@?@1a|PKeZNt zUqHm*cEl$2R=Xs+-E1w1XKMLawzbB6{uh8dAJxlu+YMQPMZp!L0}Kg#Aob;sfb8YG z0BNz$%js_zb%1~^ydKr!)fa{R!RsZh(mOr|Vh!Dq9zuJA2+K6;$B z6I~6`)UAyS!uKZCnsHsJu|+wjg_r4CDl35Z+^wxmMBwrkp@;_f2Z zuL;Brj}+Bu!V2d6HM{Oce?b~`Wh$rIk)Ujv=U+gUDR}`Bu%I6od296jf6F)hgIykZ zP#D#v#PU}jgC4l0=?mgLbtImuLDjwmT3Y{kBiDNx)Bbhkt4ir+wmqj!zhBzNghb?g z)Df#UItlVU=szM%AeRqE^mJ#6!54#--=Tih9u^J0wUSiFcUt$!tKmX_{%Q};7lQ4j zn9ZQ$b4~2fB<|Xz0_)-Psf~->jgK=Lu!QL@XbeX9WAK&faE%7{+@fsyi~;-lrsV45 zF~1`MaWXqVQN-DWSnLN7&Yx$w3Ubl08IbPKw}%qhVR4t)mqMLA{pbR?*X{KtJ^zQ2 zi1p{PR?L@P4EZN394)yQXKxx$@|fgaGc*6y>lquKvnzOBuaLSKyf$Nv;4oh{jS6wo z=r3I9;+OyGf{Ic~Ac`61gbYo~wjWUd=4f8%=+&2Q5}@wOE&LueGo9kk`-D+aNxycrnmp#BFzIX`ISvHvx6UR&h??EYIs@h3F{mF=mvrhUsCvFf5i831`SDN#i4)q_o zn6z^0I<6!3P`x{!*I~Fa|AqV*?|z7|YEGcVoK6|_ypXP#``YdG1zT?Xs~7TaQ}wSW zRA?J=^N*>BO8L3*|KP#X4ZnJv*Ij-QCqbBz>kqy}vE-11${UKl+50@nA*{&qVweKhVdOuTRf)otxcc1bn#==cz`^}hS?^?t zg$YjsMq-)b88g#cc#C<05LA3Vz4gS~`jMn8^~o}wD=#Tk>DS7P(= zkCv2n4QAzt6)3#cFo#Bvi334zTf~3?-U|T4R|wot%7Kn|t3te8Q%3q`SAX&^iK)y9 z1rBxuJeUaXHsLWMI=wQm9ZAoRPQ5e69@VN3b&c3GJ`Rgd6%dn9Qx(Hm4#@(KJPqS&0CJklOhx%QPBfYXp?#n!N~ZEGThhHJxgcgFw%(jYBENQ!iKNQiU|-Q6`H4U*E`B{f5b5~6}q149ZAFob~A zciy$WpZo*X#6El9_jSEzwtJ&5DXZBu@}-j?bgCo@ZBiu^ElhZc#IWvQ!n|A;|}bsnjaUXX_}ua!AX8okOnkn~e*1R4S>eZJ@_XM4|E z&By}>m@Ag;=@7u#>9-0m6j*AK=P3=QKrfnI273FM1&{S47tLjQTA-sYm^3q!wi$MO zOb6?}W26%K_`yy?Hia8)cGVP#B=w z1vj!y&1E*baOqnP47Q9Y>P&=f+SrU}J^R-liPu9P(uzY#vTVEkAy`vtEwRTxdyBec zSvrIlg;N{?oLvn;`ktCH8?pGC66RIZ|EX{SdK5MI7UxNJ9aTeSN&U#IMZ!`4%&#H1 zt4WXrunLEgtJi*xTJ9IVZWp3~r_5$0N^S8(v+GAWNuyKn$YTiuI+%CJs^ZGCmxD z7s&^|wopCXXA1vESL`MwxOcqt!HijB-$6gVc=#dj<6P-u%DQ0Z(zDnRqm#m!prr#b zP4pA7@%RgC)tr#93?~0NVMC^>`S1Q~qFu~#DO0fR_s^^&E9ki^F8XD=ndFG4JIQEw z5kem~Cayk0baXj3EW^>w{*#wXt4W{_wF;*!OiJJ!x1EV6@F|&<205KK%~XYFMRoY@ zyaUT+o_5R(hFgCL_&7=#I(Zx7$coOZ673Yvo0r$S zgKhZN*!C4Yzcp;pWqk`DZ2JT~ioU!gb!xxIBu%JB=2TT7xYj8od4B;8a8Sc1(XM9n z>wk_*=uIyjuX>hvSMYuQ3gVhP*|Uh(;D_D2GMOq)KFqT?*a|T1b{b2;yk7*RsQ^2& zVy!h<%rJ}ttfj+2ogYXRt-?h>G8p%r@Ck3cG9t`O8L)Tv*oBQ}^E% z-#Z6#7XLQ4l&b?t++|nfdD5R;sE=6qT#(H^aLXh-qR~{M%<{=*T^qUrM%7nvdgz~f zgLX;oT84M7J^Tncj0cP7ixs0Q>kp_aT?Ep4m7n1I9lu6vDAMC;O|dEBYlhf^~#JI)d&QfA@4`e9?Jg zEKRJpRCF~Y4VLA1CO1CRjtjv$x1~Y=C~3JexSsg&@=J)^6`rI4$tDvj@FXUV?&dev zy*q4)rbNUWCXWfyhY-=-NSMy0+A1|&Hps`q6Io+~qLt7|;3@D?mF*t^o0G1mY2yd` z)+1Numqb>Xg5KAQd<13f`}lK#?L*mv|W->wlEvtP1cBhSwEVO~#>Jxt!p z#GAeP`42mnfr_;ou{s*-nxA&e#mm%v0)I<=jkpbg*>>pMq0@$iNt@$`Y~gA=61x~| zHnwSBh&Bn$#=)dYAdrH*zPSC^2r`ZS-!@H!477r1z^r`H^cXB^v$^K@ziv2Ev{0-mZ(H#eFKC`+9x2ZiBpgWk zkcoz9n?OluA$Zx(Rf*Xwz$|rqd8`o^IN2v_4jJqL4=%secN)#0sYV(Z-ND3}J*Ub$ zC^}F|&E{+CAlHA&=7invfpQkN0FkLG{DY}uckcXDFb^2)=_66bO4+*LAI*>}Bxa^& zBlugUq4r%hR%OWSZ=34Ask98A_YLwKswERNv{7St`1& zk)WbK0CqxDKw|90SjHzM#Q#Fe2&LH)T?{=ap-Zai>_cP4(vZ~rPd|kuO`B08chlzd z+i4syj-XaRHe*9hDKY^-!o3qew$fAPC5d`g_tr8l-nGSzdn~1Jn3YtJr>;_ko*jGg zf^VrYd8Vdj29nQYJN{WE$BzM#A!E$S3k>hIS7yG^vqCNw9Pv$pV`pjDbbVc8nW;nJ zHvqBJm$~IcE}i!JC8FS!c%Xlayh>LTA&&_E`#9)rO2VJ7SW;MWSQ47+tX-4UimUrh z%qk8-G0-01%8M-IYGs?WA|Q!Di$-51AcB}~qz&5VvMWK9W{4z$4(?Q3h#>%QJ`cy>JuIiz`@DnJhBp_-8-{-SI@syTQ+fHN8By=pM?z|vj*xc zb4q=DSl|sAUDwFb)Vt8@gP?)1<9quIrPhgTkV&nCB^uyF#{1K|N@O;ghtR)sGnc&J<1mdl*{bm0rhWy<*^^W@hcMI$e2_fuU^w&gh@< zg_ZP5@@BY6x@@_TuWr%P4gvp^+ERorbwK!kl^4Bp4IiHukmR4^-J3)z2k4?UKNn+K z7YSjjgf zf>S|$7-Ppp>lq}iPV~UXtYBrB1vfr4GkQA2T-bg&2+N}}`nr%Hu&HJAM*K&9Z!?wE z(F|hnGtQ7JBch|4dE@Ahkh34tguBz|l13D6==|2~=|@=jtK^-rC9mLsAj}iuchabm z8DT?NoVZt(EV|>}Ja4Rr-R^If6tPY}qshLY@yM)p58BwgxR3VlMDCaO^?vPHdqlQ8 zIX(FY^Zea|sgF4P3}8UeN$z6=V~gcWy(XDmS5T(=>qj0j)+g6pU<0LM!JzW7i?ZD` zL~cZeu954`gw@A-rAQV^Xy{SkSSlsxlJt8^U0%(N5MI=KC8kkNdRm$Prwou}2ZbG& z7MA!(mv4PoqJ9PX7$rqf8F74wVIH*$4=1>Beogb{Ysz7^;;vLRin`5Y&kp{bU%=;&VWio ziqn@!^c~iAmTj&P-mvmDR;ZoFv)8=*vKPE9Zu{dQ?ziGMF9;!)M=iWkb72F1@5KKF z<{%f(-rcx;w)tiOs8e}f@*$~+z)GiLn};^)CyUdYL#@(a%(y_-~5mOag-le1mVrOl2; z#U$PbRj>0fjQTzRED2+k7u;F{I%NneUak%>V9$Z)$|C{-;bX!YbCe z-@+?-KhyBXmynH}9nx(--q$>X%}d^^t)6Muxj(i`BHg-8Bu_4r9J%OiOnyE~p22*& zykAm?Y@LT}>b5zZ-!M8ChXl<}GL1mn6f9{ndsQPvky2X2iXx=-o|JaX8gMw z7@V%|p7G(%f^G(e&I~JuWU`JfL>vIl#xtrq2}3r2#8L(7-r{s?yk}#wRc~I>-VV3V z$Ouci2&JHeQ|N5TOB&bTTOGt6Po(^W9s>}efI8lpxfh!4@vxRGUw*kI+m(N@zHL55 z46>dE$yj$Jpm1|Y5vssq7hom&=`Bp}XDsFIl_^zmI?tvf`_B719xw=^;3yYAdJ-8U z7zhAq{D6N1t+#Ii?Yiy6k7ISjncQ07t7yj0oEr5rv?4N#ZHdpjxgLhucIOooTOX+74J_4JG@)_R4Lq*Y{mG&tg+8j8%C7P8ss;_D{`YChzdp-qTNWE{ifL{6?Wem8= zz0)2?2EN<+fu7)P2gIQaLG5X7A+#QVf>D6|NFHj82?Ay@wH$pc{@>4}Z|0exYYWNc{LW_@+A}g6#`v zDp)M9bJU16a_h@USiOw!QeX7!R2Zvq{N!n=AD~so_??4`Y~;gBs!puhCqgtR zRY&9q<^1NA?3Uo4N$0Mc*jEhj)bu{m7^Wnn{1RP{3?!xwGf?}_FB!W{l6kWogjMPa zlkPw4eNnMAzwsxl!|p5_HZ}k}^#G|UbxOQeT@sy~OjbSuAty6t9Km^@38+!*#RIRw zq`+dq;;!r^bIQOsSB0avbns?Rhmznd4wHq!6;JI%v+U(UgbE~ZGA5lnKOsDxI3thHn}LM$W{2e><-$BpHG{64SiBro>LZ%tBx|T76)u5};v$=iu8? z`zc7@4|wiY462;VP#^6&`CrBwPHYg!{j0V{^BCZ5Y7gSHSYencx< z2e}*5)xEBP>+(NBCYLR@)(n>9X|vk;v#RJE+4ZJYBCd$IqLA6Qwo6bp_y~WuG%pDp zJICMXG4=Yd5o4JU$HWOm3`?%GolXHf-7CT66{Lb0N&0Zla~XvNS@bD@ZGr*xzsYGQFH*7J!Zj^rnVxs zYW*#7UtGqQb4OlT^`DiR1Xo1elw{-UWllMn^W52T;t9bUJ6*kM8b-l??a?WsD9lYb zXi5T1=7^z$9s|J{`yq+@d`L-G7EdNa48t^&?W-7CVTe7Ubo%ZA`PiJ0^iwoG259-8 z_}1niBdP-b%3)d4O~|?ZC;3k6)dBb|u_l0y$=Fu!|NYOTW42q*D#j))Ab+&_9{um8 zv4M{m5=RO&sPt!Xo{P~Sy>&@vk}V}yoy*mO>R^Ey5wZVoM#3w=hP~uI-(9$e;qego6Bdp{T+7 zPaPIYlR$jacpQy1e&T(h9#F|=BF;M4zH~TxHhh@js^97S_x1YZ| z;r1_1_Ps?Ee)DLT`lae*hl(y!@pdTDeLEJP0n?<;7XJ+6CmFW8i$j=O(}?Ft79=5n z(}TEvJdIVLm$j4nsfM)pwk)NWy_Y5+n8WTMk3JXk^)>iT5tnHoCc&s6Zy!s&s(eXOxgA)TY@|Qb-s1jr+i#Q5ZlFGQNC`->lmb??R~4(%va{4 zxOAWU=7M=TNz;Ucz-sf8n~`49F%DSDi%CmO?@ESO^2j~3$HQR6aL8cq3u@p5FRFlp zuu4>Lf3Cz+Hc#J|d+hMYz>T&f#!w>KDq=GP{b6H%;=gdAgNi2)jk;&xLvUL2x3cjO zDgMsU`PZQp#ysT&t#wc$`v8r2pk*GrZWhJAynvo_3gLY#>XXzu4hb zDM32f+LRl5_c=51V?EaO%|8A2gVBe-`QM|%*AnU{?)ilXS&mQSsd@~!Gw0quQ*ePY z6+~Vqv)#WCq6pAQRPpqbZ5ap;v%m^yE=D+4pm7=QnTH1i-&o1BoD$pz1(zt`$K|{? z?xv@+7;!wPAy?}a@BOaMbbZ;RIFD~1N;(7SHxc(B-#MdEbskBRP4oRJDO)l>x389) zt{kc5UpW62$?Dh?omStpwqxXcv{6>izjm4yrPT}1Th*!GzpHW))1Ld}iXn(lnPD0A z%p8&TWx_yzbsv}>`s0|WC3(ftBfClI{eV&_-F%UX$FpPEQ86}a` zh*m7Hl<4?8zJbqEmCLa-y)6+R{@F-DeP6UUed$3iasRFq%7R<79ot;hzJyqx@A#D6UEuf z+W&FW)riWwbiSb=&Kz~;4r5;kYW73|*|j64#iWgL;=lu?zvBL=RWe+k&bRxPyH-kv z@`RQ^r7Fh=L;Hyg66@86rUKStr6vF1dzMa(cu)>G8?$&kc>29HOY+$B51|4caNf&y`i%}^7jinolexO|2?PwH8~FzbQS7Co3$_(6Vi=<7pXeaH zOMtCj*an7nA9SFbdPy)+S#?Ji4xZ19(1!NIjshrZ2|P4UaKQKTbhNDOXlPHDYOfUx zQ9XYwC97W>ZxcS|Pnk)*{T5$TPxIbHY}-=rl`&VY4d=s$g{*NLU^Zio!+9X+Mp7w2 z>FPxPH2O9Yf;*4pFhNhrZ>gp3NxL-asXAU;(LUr(Ck^=jQzw9zPH#C*i|1=O`fx;) zNuVq`x?)caY!h~wr9Rn)e}ofrQ0HdqM zM-+&j$HjZQPf-=NOSUmEA{&UHst>?pw`yOTM9=z&!Ap)Gb_VL0-4N-9GX-2z?KWT} zBb}s<9L-FHmbgHW|4fEpT7nVD7FM@dJ-{raXh;M}eV~adZ5)MnNdw6aG?mN3oJ6z# zOfT!H6V3ZTdis#SXOlUcH(piaEv8YuyR#qUHFg5Oog0af%YM(I6I>J!

pyAKYQ&}^cm4cr6J_x{;_WXis}YckI^dXnYenRJFA8gWUO~P2{9>1ysLbw# z(6j&X909h_RkjWDid;L@Mh&6XAgf=Trg}<}S5@Gt8}r7iEY~W_9E3qKiNvp3`2_hm zX{IScy>|W5T767{hyxjUaOn^U=N7Fr>CN-sq?OhbSx9u|A< z>{NiJ;-sHbfCf)SESQhVg^XDDWTQetl1zutS1H9z#6mPelfe84WN;Jz9)KqdHm+3xP znsC%gBb|X4fS3?d4&vlr9y{0IuomA~_mzQ@(1zl90KXk%3WV4;bX^p-m!d7Guf}te zQJMrE2ddN;2g;+VeG@GiwGvc;pV!Ey0H6|z1Mz+D@*QCru_U|4#)h4QZ0BsQ4p)Aq11GvP1b937|)y=zua{cQ~0 zV$5dzgyG5TI&!4Kh{7oTQ`3`UJLbS6VtC$#rL)v$;*q9s1VrApxW&)EWP=TX-IG$E zco9YA%!Tgzz2|~PH)@jU1`bOiY5lEAoTg>!FFdd_CH^j(e$vZvHd3aJ!bc~l6ErkZ z4idqV%+4CEFJEw`-Jv^;0`^;zA6GR{oatPuZ2zlh!in9vV63%Uij=$Cx`C+;Y~DT1SYTy++MHdm>L7`u#SI z9fA~`2#UQjC8R_iEOztnG&1KNZoa|GD}Jp?(>_e7*l{wURAryM>2~%K5GErZ&P%2t+>QPT1u$0jP=nSG}{L7M7e=cnq z6_^@P>+$@Me#Jqa6M?kaz0s|a%a}jkPMO*VB=gdG!9$dn%eo_B3v%cW4Bx#98uOP* zm!|J;cid!zl-2a4i{5{5OK=T+u^lX#>s`Y2qbv`o@g%wL@lSm)1_Irb8jG{i>!6!; z-^T2gXQh*Ry|YM`>;?28RoppD@ImbT-wML~-f^{DI(En0qus^q;n%EOtB0CH9hDTM zHP$<p)S_xcik)OCtcw9MvGO2+I_Px&Y~X#}BLD^rUqyEd62m)!43^#r<`FN|=y zmt)!1BxNymGzG`+_~z|wJ28E*xCs0PeZLqvNJhE;z4DU!$>La^Zv8UdEXIQCJoJ`- zW2+&9b<*s=|18o<|2>DhDif2OV}I*&^o}qKEw{v;aJ+@tL18=2yPFyAOUN94_4f8oq1A7=EgZo)2f3KwbX@&#TEthFOHp=iOEb&TqAd zW}znS!kqF5_ zh0bafEFL{PzaKez_80Z}SJ!I-IV!Fj)R~!a63d;#J0hmPzfjPbZ^WfDyq?PHY6%?E z>xJl=rY7V2w{*-OL$Nd{0-I&_-A>Zqin(b4%iZZAcu{DG^^fjj?{_4_^n;t~N~EXS z8mbLKOi@^X(C=(}=I|sEnc$BP0cXT)Iu~|}Vy6eNdt7+5La6G1!d&Hcugbj4W=Py? zKfrq&&eRJJ`4V85F$%<&j^1zjR~FvbIJ+DNI2OhVh1C_?UnkO*`of$fqq)28I!63B&YUIc#b;T8WXo!mp}R z=apDxD~+qN}Xja71O_~w;nu_cJ&7Z#~^ zGJ=)vEJ{sXBkiR3>%JwNLww_E0=*%=q9Q*rRPdyDy9lKOMx2!v;jCj6PPrW ztMfMF18;rA-~lh=te@D6R@NW!KrGru>Azv&e&PoGLI4~2^L+A0W&&>nL4t_E#*TMk z^&cK%ri5#gRjJ4d;*Z`^uOiv!9$7cB!9zQ0DiJ=?mV z&HxuU>MHJ9JY?0A!&0tyA))+vi(<`KrM&xpa+9db0J0?&BL?H|&G&y3M+`oah=clYho5y4>Ia})tD$#KHR(P z4-$P}pZTf11v7W|-9mCG<6rAPhAM}ie*kv5Mlb90hdewXaM`F9C+`Xn1l)2>;n!4F zCy65YMR`Gqs)?Jvx%foI_-Cb=L5Wj&G9!mT(hDtNZaVITxk)P$Wrn(m8L`s*v1RDE zi0W6OMQ8k9){C8Ky(B%-vOfI@KA^EwjEcF;oi@CgOv+x^4s762Ca_@uNfLeQGNc{vzEwx{eaFBi#o+=+J zpa1WLXk2u|cQRN;L6$b|+v)|vI2)NkR#J9}bKr<}l{oY5vpQ*f@J&Ci*T_=LxA8X>D4IaOpttYknkD;;=({ax3J#>Mu@dKGgY%3)d-5PmW}gB2zwVBJ0u(;XwR8_+)P_&_QMB zSBEs=|Ex9LRrP(~BnxcM%G4ld+SNd7Y37IAV$_1mzT6kqf?MsZ zBR33erqx)I55{7mncS9fV;IinGGFd^1Gwd$)YWztf}!f%bfqNqs*T#J-NnP(13IR^ zhr2f@qMWAPE?yHQ`K+9XfsL9dZCiTgJwF+QQKa;yhH|=>TCck%(aDt>+|EGcY;QZX z_IbmM$&5mJgKNiFdb)PGQr(?af@x;>E>1z~xSl{QarSk2B8dS_4IoUrqkA+;;<4j* zBxJg=P=ww6a=uo{5e`>NfH=zbY_(-e$g3xQ@cFnPouMsTnzxF12*Flouy(An^(;0` zE!7f;W?_2O@I{etJB)W*mt;$iS?&xk@V|YnTdxos;u8Xam}_RKN*TGP3Rm@dPhg?h z444U@8nY*P%YBw@azqWW-~6ztbm@(`zzsLUdaR6Wc~Np#oeC9?D0Nr{tGx+YR|nU< zZmfT4Fmx}%A@@3MHF%ON6_ad39kqyt7X5Yu+djF?#Z^^VCT#c$@!?7d1sxEmCg&#I_xGv z+F!cgTXe4wdF6vdrxh(|@(a|yeEH%u%e}eTJGtg_DlqOG(tI5@be--cP~zI$_tVN8 zSrd|~(2MGgpe!ND@S^4_r4DEQm><2VDV4It;%H~x7sN@p+Mn@kXDi zuMvZs`|}(tbRciQDozTznf5^JjBmp%(PTjBD638;+^0C&{HC!Uejk%ZR!Cg*sY77- zt-s#fDqi;4&=ehH;9*Dh!7H5pq(Hy+8u_=t-CXa0q=m3|G;7QCZLd+d#r=G^U<-|m zxWQw1liT=jEKw*m$U5k6?ZH$Y>U~K*H~sLu4jOX#=eFG5-c}oZ+5v}q8wLS2E&t>{ z#Iei0pBV#m3T0@qL*6?bMmml5_@l=(eD>?NJO)77%{WA}FKZsY|KT0^H~)OgrI$gZ zukA5b`?R4+AN+8=Ti6Wdtk(k7Y(Yk^q{r(L=S~!3k9!2PG{Yy4H(yFR^lM78a7?z# zTzC#1K_-0r%xeAf6i8R7;cHDPJM7j6^V2qCT@@dgKIzkhp(x_n-N$L znd30MtYldxU(Dg^XswbEY|uNb18w#lGNg}Mt=Fby#dfdt9?Mz3#~16pab|osSPJ72 zg72FB*C>bB8}grct)fy8G_XgC45H;o!_6A{519^#RG3Kc?j z)BE|?Kcoi!{RYP|V}bY|)Dz*MjGX)Nb%om{Au&fdL>WGkXt-N5Dc)bork8}hevsT8 z&l`;6XH~Ql5VhC>z5^PLq>GZ3^4TGtru>imkD7|?G$k#gv}%4Uf)S?4yX$%z-uQjz zDu0}Iu^Y*U?QQi3@jboJplI}@+5!kXb&n4(8Obxgu^rX^xp^d`A|&(Z{<^+qJNiUh z?Lu|SUOS}jLP#@pC7{_jdcI?>#rFBdFed9Zt#YoFvhOdWwd#5(N>c0!GR4oSQu)+Bu zF*Y$7qaRwuc2{#$t(?{8_S{!uw-?B`5ZtTG$)BclsV2wD4yM#9xg3y&4po$p<1c;D zD@Cq}GvfI20tkpiGy4}v0wa+Y>vz1be-?D9I4L+*S|>6`w$6!Sr^42GBiu%INIz*b zvAWN^5;bsEISHuk)IbW8pKqZ8&?je7{To%C$JQ#<1FH?4ymgJ`%Y&6D181!1>&0a# z>%}``Io@$inAn)>i&t|l+qk$0aB`X01qZ)!n9+FW4@CzV%;oXz*jN$m?dC&1sg7#n zX<+QU3*AL`bT%Eybmr;$y+QRWkCnHvOc5shc24wdE~75_4jq?n2rL zD?+QzO(KA6Hp70Nz1UPIx<;j3=kEE{tR1bRL@h?FIvMA_S%x3>28t&4?|sYx@QI9^f=5(ab?Yp=6AH*X__Hc63M z#Iv1ebhe-L;uyV=rEhcM_l;}#4g#(IDRAJ}PDGN$7tpoZ+Q!GRtmm)?{nlal!Gy&i z!}660Lgt_gSAe0+V=eD;+5Y#|6RWVCj>i4L{4Ib`1W(-QO_yHm@`#!J8_+jZJ0J)^ zKw_*%Pop_Ie%6Zdby2~NgoGEoK{9U$gNwB7?m@ zN{z6^Pl%}CG*o8uAr2UgE79x_bLs=#)}T|&ujYSqAfr30wYpRA2Ym3G|0*s#4C#q< z${Cc5=9IL=2@jL`ordld@)Ggg6%}K5^?{6lpr8&A197oH2^c zb`Tgw>#@N99n$lJk3d9>9&(?{RWT%wkVQ&zzK-*T%p7f|VE#ayzGB zpBF{Gts);v^nG0jR*|MonbeJFd;@b6F1BKdE2Awlm9^1p~%i1 zCeycEUviaQrJbXg-J5%PNq@)AGRvaj_y+HdBN&%sWCUsBL{?N@7cXIhyU>0#r*W|l z{_w|5^m)u}vhmp=u5o;t8s|Q6P-%&HSsaN@cTozpV!mY-D}!PC{r-TtQ4r)FUz54i zBK@({nANJ=XZRhx;A7r>w&n4CG40v6bA4g~TdNq0@ehx?ZphXn)OL0&#^fpOG8;5f z3CibksF>R+?rV?BeC~j6ganwnLAn#M*O9F$tY|uSdB_;8s}-J8E>8TfSw820q^}9( z(F<1FAm;o~cYK%c$uz`+wsU9oWLK<^!FHXLBW7h*C zK^|VM=kqfA+ppZCY&psUaY-|3(7ldWsS4+p@0A52^Sp9Y?Qhd|FU5_s zn$aG=E{t`*M5%RTlNvq2i(A~5{Ygpoh=I9iDelgpb8DC;0KjfpFM1E|SBBk|D7INr zQZ`YrOwn^n?5|#iBOCldFC+*)h5kyP7mmU+k{tJz-6PvV*?+^`kTb5S za~p~kx!t1a_WM-!P@kK{dB8Tsn|YBvEr~y%E}7%LE5d1e-v7_!RDVsj=_~k83GL;> z(!Oh7K)bs^w+!txXPuYkU-7W!^Ic^)Ma%vC=_=m^%Co~j_~0nm$dfFaUKjT`v+Zxv z!C2{@$*1L1f;HhPYEr$Xmrd9@vta(;LB#vJ;lkFMdJjfa8l@r@JK;a9BSVK~a7E5M zMVHQC-`_~?)u(RS#}S?g#lS}DxqCyUM`J)4qf9QnjHfYCAa9~oZ%h!8f$cbhv1*WN z$*A?M^$`x3xvWt03ln5TS0#>d=nWkBcsVZ#6+$os-wLyya>xvJ;#d6jWqU@LpBIXK zv8(V5fk&|)-aLw`$?`-~`N*(*)P3<~S}&bPWmf3UatuHE>xiM&+BWtPXr{Kq)b9KWdBmG71U14wYHt z2pi+ML3{)Pba}+XK9_Harp|OcjA3nHy`lhm%=rA9=d)MIOD9~*FP}nR$tJgqHlOoN zRYX@*8H9@#gZ0*-Y4`p*%}Vmo$9zb8MEnf{L-hzn9g#BmFq>K^iDWu9XkEQd>e%5K z@~&~e?deI(SPP}&PA*r4nX(gC&0&Ld73V@qIBTu&%MIn9zrg*DMq<1UW1Y);Yk&uT zT~4GVX&7uonR1eoN0&p3#UQpfVG~DbEc1&~_9ryeA&w3=x!Kn9gu}?gbVY$<68`Ol zdsaFBORU}2PMxW(=0DHmw=U(A+_Hun?$kYOxJEhiS6M5*;)81uHnItcYlIBdijI<> z6IpqgIA1Fl9i3u=3_ZvokdjE`Ezc%5VucZuw$plcibm3~-3lAQATc&>`(YHUND`ef z)-;jXGb0OsXYroJ$U_%So}B&F&;wEoLQefEx8-Hj#HL}m@T+VwYsu{kZW4~K0>k39 zMC#Q^+KR4@blLVBlGmVrnDhXEQT%x=9+gU51-BGUA8tC^Zs^Yd^n_5fLNaRF?`7tr z>mE4Z+LdQ(Hm1pn#C=ai9+VXXF)l>BqN#m|cx;emPty$n+s-4dV}MP=z3l)G0{r6! zkTee+5DZOa(UyZxI=(dsTU7H;s>6h~e1$nD^IS`a6%$CcsgVyIRe?{T1=^d^Cdo-j zIr(GnKNY0qvuexzpfjLs=-~O40bGs$4HQX$t)~IG z-5hlM9Me{rdZM6>H#yxBSAe_Ad{nb`%w~EyeRtN|S^L#q&2)FRH-Gkjv7k58i;4E$ z9>34;{f)x-r=7<>t#R__wj{=Rv+vnkjx_qX)3F#p!x_g=)_Jx?fnGP_g5wUn!pTNe z3K^&xK?Bs6<-?n!-=PD&LuB(!a}ym6?Nr)i-UIEzCKpb+U8rxriN0=6Z?OXK>~-eevFy{sw-yCRvkS+L*1ORt}1hjD#!c(P-CjtAohVP94ilvShRn+61yYFe0r$U5w8(A|`2NY^%( zRURs(fGO~siR||(IeLjPHHv+W$DLXO_5F|K)b~0vOng$W8)aA@vvU2zygfdqc7Zn= zWks(kOm~qIL+95Hr`XT^(UZPO#H*&7uBS$nnxx_(|HSr3^1Ley_N5~f0Ni$3&sXTGI>bo*1|@eJCg+jqSZ4h6 z@lhk*{$^T~^TAG>F5atEacccBZ*jH;GyT?TK?Z%$;boE?*YKv+c@!@a&??M%w};px ztly5j?obZ=QbR|2n~e}2CeY%Qc6Y6^qRmRJo*gfSSe#gdg#%g8mH}KmDWcSY*wwwM z{8=CMXOosx!^LKii>`%jdM8GisTL)cu2!SehKX5L-)!b+^|9`4%@R68=*`XSe`5PV zpFR)JPxhs+Rg8Q-s^?D19(vdiq`waN>7uI9!b5!Uq*q})y0tK{yv^Wvf3akxc*bcqX_RukFwem0s@8?6}7vCCl)K;tNNT2 z@q`91sLplOluQ>~-|#(tZbU!-{p0;WEWaVT9&yf32(?*P@xRsQogwyW&`SvorKW*T zg2*p^HVu~Zoj^$c?eEAU<3dAe#XB3J@~;Qa`bto_#HR@Ei(+& zDubzm1sp5Q zT<&Gg&HRhqt%8V0jOe)lZbX^-DENT{wiOAAWhAmjNpfu>xLk#=UQ;`i)aC8s@F(V- z{xlHJAG)IZ7xH3+1$QVu4|j+l9X-P6Xdgupe0>@-#Eb(WI$l!o@gY+rg9wo(#1~yM zranHXe7Y`cqq~G_28It1_{f^2FK%+AMJ^^pW zv-U>D8~FQyYh~_%0DIWATTE`um0CH0GUzh)CBGIK?glXg0?Lo{-3Yq1%1a+Upr9<& z{}xIfl*R-$`w>mtcfS7OQC(hfF#b{(r7&d+eC->o4C!RL>Cjj|@2g-$^wJO9s5El< z-bAc=_-ng<=^HtRed$+#wOLk|I(EKGyGKtVoAh#Y&U<8!%+bbsR=|C!dMJK8{hz$1 zgXp^s^Hzyr%8;EZ>bxKEE5|R7`Fj)Bx3f>PxdE~v&NH9LccoSV%{P&{r{{Toqx4w$w z3bxB13#trQ)-c?i{;Z0mombu7uC>2<+Li14*G_ zF2E5Htfndshmyk`bo_n55u%n9ENyNP+Z2lAjdGk!X#^a!v`xVpuHsZ~FwyAxbqY5! z9DpNpwE-MiYt}hIhe8bp;2`YCUb`M8!6B&G7KQp9F{q7+Ms;iys$#aIJa#*ZW8#p# z|1gryW+>p;m)(lEY!~2&&Ais&XE|4z3vQS)uoh-exxsn6YypQF!%gH~tCe2X zvc9}mYGqdtS?mHFo8?{x%kvgd!ef~9^zQ(Ut@5y~l!tafUK_l{X`h{0j~OX73MeL= zredR56NtWbEDvuS$-&zv3-LjGIVL4lVOm-prl!}yGrI|M#KE5-^OF)QF!7u@mVkl@ zLg&c?86-anzswc|9n8Nm{al5Xnw^nUqhTtuG8*8MD=!h*pQT~_vgO4j>w>acwQp2h zP^mHdTsgc>m%!(Ir7AC26=g}mg>IljlZGBd!EXUM@GI%9b!dtG*mW$O= zv9dn_#~isPnxE|Jn@|e>q;gFdN)-nyqXfvZpRAvkTBQn(59Om%{9QExo9uacCB8`HhUzAw1j8l~KSsZhQsf^eo4miUt95!-)y@sa{aEv>^ z|F#&XoW>9p!VWEUD#tlj$|TIF{(PK zV6dSX!*;V4s%U%?{t$4mGR=rRO$s;&H<;*k)NYx|STHojj7_tSp{h5ej|3dUc&}ngohlBF#h3&2 z7$M{F8gp>$sc?)BL5B%tA>3dagf!!K*QoK@n2Y0WaoqpUSC=%u!96|~z+4wB$;liX zKbcsMpG~R9Et3d3OfHU}OlrlCCmZ|ev^FQ?&~lUFkXUKFaqh$kQ!}vQ`v8ZXx7KaH zxy)xkzyWn4@AhuhoDYOC{78Oq&NWSLIOyvO*eQ-+QYVlq#vBmLVZf4>(enO(c2O=K z_Nq4dDdfYSZ9L-Nh~Ld?7DuxY|I4Quzx6A|Zv#s3zx=B4Z~nEiT#euOl;J=8O7VOD zGW=;lEuLN4h(9f^#50Qv@cjHlEuqT%9P*umVzJHQ#Qn~v2#?RZgr@?#4BQC1j;De; z@koID4k8U`;Qr#%!9Nc8kA;mIe(}oZ)$oeBgrFVrp&ES&!@p_6|5?z4-v(X6qkdNu zaL_^c8UI_)|9Va@!zghaRe3?jv`HK`I%9I(%r79XX`|kdu}G4Ae4>Fr2G)o}(rQ9X z0+<-rcWB*kiFhv}%XO|R$6(^Wm;9dd(af(<%RFw&Hj1$Y`i`;gzyfjlpY*L&fOf0zMf}v~ zB7Pyx+5J9Ec;S;8d@J|++w;KJ@xY9OGKSNNRX4P^pa zI^$F=?UjdeR%n$%H|COIHJbGa+j`($#rtuJyfg6GjWHE z+1-9uHD{0Z#j6RA%kS$CLHU>*(turjP6#@hq4_yr!sVt$qr^7qaEu#Dr>RNU=ZrxiNxpInc=pIm^v-jR7#OxokM@VO`WV|WqQu{^PS zs_40yQ-sPbE)$CKeIehW`a5C>jeOf8TP)|Av_WN;Sk84|i~K&G@~=|B$oC}2`$4aE z{ANa$e9+21ay%hbzT7{CpQK2iQ{*>zQY=WGt*2(C

VczA9jejg<7@eNn;-%D!n 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 z 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

Hzf-;99BYE`K2-FUOFizul38(`lYR}Yo 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

e&;jEMN5;6ve`V1Wm4eU0zQ8 zy+apY?biCk^9w$#tW8(BB6ceYG%g)$dr$%(nw6c$4xgI>yBs%nO#Fq$#;aOJrjy{X zr+b=!x6()f{&bmk&5et7{z46R6zR1 zb4Fr0J37_b^Q|wZXCOwvuX4{mrp%2NfRp@@jCw9R!8AL4%$qWyu$UyXcR+L$8ND88 zX!uf(7P>lj#_Ys6KR0^bd>*Q<#munT*x8h#OFcTmMKbwxjL!J;m!2Q2aRmFc4^CDD zH%Q+FSC`407JwNRO;w{qih$jjgR=cS>Q(3zaG|&8`>%t@NCM_n2+bavs8w)LVr-Dl zqM^hmxAsKoGPiPQ=9v4cjO+Y;k+u8gK?`SbQw3GWRHj)rR+k@1E!xo$92fG2@!`Jx zo*e3fkxsQ*+sAZvrlJP8p=vQ#yvtcQoM7=;CK!1MZ4iVwU_3Ae4yLA>fC zbvf-Rufthkp4ZNp=3fd948u1qAjHQ-*Z{gh0 ze#_{IILcEB`xclzH}vu?E|A~_rg4=~NBOM6pvgx&A&$0{ZO$o41?r=BYZg8u_Ntf5 zF|3ZJ8&sE6n5!rC?AMc#dz&V0j858eo``$cSM0y8_%NDWlqEdpHGbh3;(ITwfo4;sN>t5 z6vwpKy}@zhscNaQ{^Ywsp(jP6HJ;UV_9xSJ(8!dq97krY!&g`l@vxYtKoQBTB{d&P z`d43T6^vUv=(H@ol=R+qC>R?W%jNrS%kdX%W@;dru>KrcxV3u}#0NW4iNn~+;mBOg4Pg=z}zNU2Y0 zBriYSaxlQ~&u)90p8U#dt@TiiYWnYPL;q2MAn83%Les~`qF7cH13Vbn2EmQCE)?GD zzThXNIr+?Wv_wsh?(5RL(1|dSciv-{&+NBFrIII#r$x-k!=$LQVEDgFgdiKgJO+Gnv@ z<@yPeefp=nO4$N6fM|B%M_6lE8D6R7v&s4M29&t%Q#_|=|7IUn0YiPG0Lrv4uR4B&c$zumO{ zlE1`KlxK-*MxHmZ{DCTkF1oHk2%bh`P#lp`t%;#1NI@grS2xz#XK^hp>FK6t%a$8YP;0xP&Zj{mQDUsH~SOTuDR)#o7 zfa>cnl32n`)tp>ZbU_N)WtSb2A`Xfplg#P%1PJ;$X^Y~?W0DR@f zchiDtgNrGOHaB$Iv)Zo(Kfh6B@@~E>vTi*S#7FOfNQ6W*vW97>Immsc?HOQa{JK?k zB1oHOqR0S#xyZ^O(O0Sn6(;vTt4yvh@~*sXxs@KFg�z#mk#e@_26@%jrmTvdp2Mu8qJ@)gX1IR?V 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�156QXI8^;MNXVo?>d=%x%zPeg|BcCjh=3 zPaA2>l)UjwPuO~RwB#YuKm&6}H7LdP#`Hb^z|xAEhiI@St;RcC=ax#*+U%Wx<&%p} zcXNE=POzm^5?49cgp=NAK=1xXTTjEeLME^npZw=MO2!Ay^8DrEl$GA-an6<;_1D@V zalROjLI$g>fN^1+avpAO*#c)4@hH_b+7uQw8IZ&}QGGF(w)lptJ&7-zXI{#*H6MoS z3Jqk1HpELZ@|}U6{I`H{i zEJtsn_RrX54>03>mDFKGXH1vtf|Z5KPmyTmx1-NTcw2{a{on!qB1ig#^Bhafhz<-% zfXI~M^)C!h*id6uA=Dos0^YaqloN0)q?zm4s=yFS|^M{>@3 zN7o;f^2r?c<}TrOl8@icb&{Nrr2JU+`=%NXV02mPXEEXz(6!vF6Z z4ngIx>D|+;^|3tDId=u^b&&<9E|sFUDb9a!@ACTWIwmPgE@6G_pS`};rMgE)Ym0io z^%?ohlv1?c0cSa<{tAenKChtN_2tav^&vHdd2IB_XDgo!k$&74+8(^+6Z9Y-cd;+E Iz3|>> when copying code copybutton_prompt_text = r'>>> |\.\.\. ' copybutton_prompt_is_regexp = True - - -def setup(app): - app.add_config_value('no_underscore_emphasis', False, 'env') - app.add_config_value('m2r_parse_relative_links', False, 'env') - app.add_config_value('m2r_anonymous_references', False, 'env') - app.add_config_value('m2r_disable_inline_math', False, 'env') - app.add_directive('mdinclude', MdInclude) - app.add_config_value('recommonmark_config', { - 'auto_toc_tree_section': 'Contents', - 'enable_eval_rst': True, - }, True) - app.add_transform(AutoStructify) diff --git a/docs/deployment/mmcv_ops_definition.md b/docs/en/deployment/mmcv_ops_definition.md similarity index 80% rename from docs/deployment/mmcv_ops_definition.md rename to docs/en/deployment/mmcv_ops_definition.md index 5696316..d7eabb3 100644 --- a/docs/deployment/mmcv_ops_definition.md +++ b/docs/en/deployment/mmcv_ops_definition.md @@ -1,7 +1,10 @@ -# Definition of custom operators in MMCV +# MMCV Operators + +To make custom operators in MMCV more standard, precise definitions of each operator are listed in this document. -- [Definition of custom operators in MMCV](#definition-of-custom-operators-in-mmcv) + +- [MMCV Operators](#mmcv-operators) - [MMCVBorderAlign](#mmcvborderalign) - [Description](#description) - [Parameters](#parameters) @@ -80,25 +83,26 @@ - [Inputs](#inputs-12) - [Outputs](#outputs-12) - [Type Constraints](#type-constraints-12) -- [torch](#torch) - - [grid_sampler](#grid_sampler) + - [grid_sampler\*](#grid_sampler) - [Description](#description-13) - [Parameters](#parameters-13) - [Inputs](#inputs-13) - [Outputs](#outputs-13) - [Type Constraints](#type-constraints-13) - - [cummax](#cummax) + - [cummax\*](#cummax) - [Description](#description-14) - [Parameters](#parameters-14) - [Inputs](#inputs-14) - [Outputs](#outputs-14) - [Type Constraints](#type-constraints-14) - - [cummin](#cummin) + - [cummin\*](#cummin) - [Description](#description-15) - [Parameters](#parameters-15) - [Inputs](#inputs-15) - [Outputs](#outputs-15) - [Type Constraints](#type-constraints-15) + - [Reminders](#reminders) + ## MMCVBorderAlign @@ -118,9 +122,9 @@ Read [BorderDet: Border Feature for Dense Object Detection](ttps://arxiv.org/abs ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | -| `int` | `pool_size` | number of positions sampled over the boxes' borders(e.g. top, bottom, left, right). | +| Type | Parameter | Description | +| ----- | ----------- | ----------------------------------------------------------------------------------- | +| `int` | `pool_size` | number of positions sampled over the boxes' borders(e.g. top, bottom, left, right). | ### Inputs @@ -152,11 +156,11 @@ Read [CARAFE: Content-Aware ReAssembly of FEatures](https://arxiv.org/abs/1905.0 ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | -| `int` | `kernel_size` | reassemble kernel size, should be odd integer| -| `int` | `group_size` | reassemble group size | -| `float` | `scale_factor` | upsample ratio(>=1) | +| Type | Parameter | Description | +| ------- | -------------- | --------------------------------------------- | +| `int` | `kernel_size` | reassemble kernel size, should be odd integer | +| `int` | `group_size` | reassemble group size | +| `float` | `scale_factor` | upsample ratio(>=1) | ### Inputs @@ -187,8 +191,7 @@ Read [CCNet: Criss-Cross Attention for SemanticSegmentation](https://arxiv.org/p ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | +None ### Inputs @@ -219,8 +222,7 @@ Read [CCNet: Criss-Cross Attention for SemanticSegmentation](https://arxiv.org/p ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | +None ### Inputs @@ -242,7 +244,6 @@ Read [CCNet: Criss-Cross Attention for SemanticSegmentation](https://arxiv.org/p - T:tensor(float32) - ## MMCVCornerPool ### Description @@ -251,9 +252,9 @@ Perform CornerPool on `input` features. Read [CornerNet -- Detecting Objects as ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | ---------------------------------------------------------------- | -| `int` | `mode` | corner pool mode, (0: `top`, 1: `bottom`, 2: `left`, 3: `right`) | +| Type | Parameter | Description | +| ----- | --------- | ---------------------------------------------------------------- | +| `int` | `mode` | corner pool mode, (0: `top`, 1: `bottom`, 2: `left`, 3: `right`) | ### Inputs @@ -283,15 +284,15 @@ Read [Deformable Convolutional Networks](https://arxiv.org/pdf/1703.06211.pdf) f ### Parameters -| Type | Parameter | Description | -| -------------- | ------------------ | ------------------------------------------------------------------------------------- | -| `list of ints` | `stride` | The stride of the convolving kernel, (sH, sW). Defaults to `(1, 1)`. | -| `list of ints` | `padding` | Paddings on both sides of the input, (padH, padW). Defaults to `(0, 0)`. | -| `list of ints` | `dilation` | The spacing between kernel elements (dH, dW). Defaults to `(1, 1)`. | -| `int` | `groups` | Split input into groups. `input_channel` should be divisible by the number of groups. Defaults to `1`.| -| `int` | `deformable_groups` | Groups of deformable offset. Defaults to `1`. | -| `int` | `bias` | Whether to add a learnable bias to the output. `0` stands for `False` and `1` stands for `True`. Defaults to `0`. | -| `int` | `im2col_step` | Groups of deformable offset. Defaults to `32`. | +| Type | Parameter | Description | +| -------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `list of ints` | `stride` | The stride of the convolving kernel, (sH, sW). Defaults to `(1, 1)`. | +| `list of ints` | `padding` | Paddings on both sides of the input, (padH, padW). Defaults to `(0, 0)`. | +| `list of ints` | `dilation` | The spacing between kernel elements (dH, dW). Defaults to `(1, 1)`. | +| `int` | `groups` | Split input into groups. `input_channel` should be divisible by the number of groups. Defaults to `1`. | +| `int` | `deformable_groups` | Groups of deformable offset. Defaults to `1`. | +| `int` | `bias` | Whether to add a learnable bias to the output. `0` stands for `False` and `1` stands for `True`. Defaults to `0`. | +| `int` | `im2col_step` | Groups of deformable offset. Defaults to `32`. | ### Inputs @@ -323,11 +324,11 @@ Perform Modulated Deformable Convolution on input feature, read [Deformable Conv ### Parameters -| Type | Parameter | Description | -| -------------- | ------------------ | ------------------------------------------------------------------------------------- | -| `list of ints` | `stride` | The stride of the convolving kernel. (sH, sW) | -| `list of ints` | `padding` | Paddings on both sides of the input. (padH, padW) | -| `list of ints` | `dilation` | The spacing between kernel elements. (dH, dW) | +| Type | Parameter | Description | +| -------------- | ------------------- | ------------------------------------------------------------------------------------- | +| `list of ints` | `stride` | The stride of the convolving kernel. (sH, sW) | +| `list of ints` | `padding` | Paddings on both sides of the input. (padH, padW) | +| `list of ints` | `dilation` | The spacing between kernel elements. (dH, dW) | | `int` | `deformable_groups` | Groups of deformable offset. | | `int` | `groups` | Split input into groups. `input_channel` should be divisible by the number of groups. | @@ -365,13 +366,13 @@ Deformable roi pooling layer ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | +| Type | Parameter | Description | +| ------- | ---------------- | ------------------------------------------------------------------------------------------------------------- | | `int` | `output_height` | height of output roi | | `int` | `output_width` | width of output roi | | `float` | `spatial_scale` | used to scale the input boxes | | `int` | `sampling_ratio` | number of input samples to take for each output sample. `0` means to take samples densely for current models. | -| `float` | `gamma` | gamma | +| `float` | `gamma` | gamma | ### Inputs @@ -404,10 +405,10 @@ Read [Pixel Recurrent Neural Networks](https://arxiv.org/abs/1601.06759) for mor ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | -| `list of ints` | `stride` | The stride of the convolving kernel. (sH, sW). **Only support stride=1 in mmcv** | -| `list of ints` | `padding` | Paddings on both sides of the input. (padH, padW). Defaults to `(0, 0)`. | +| Type | Parameter | Description | +| -------------- | --------- | -------------------------------------------------------------------------------- | +| `list of ints` | `stride` | The stride of the convolving kernel. (sH, sW). **Only support stride=1 in mmcv** | +| `list of ints` | `padding` | Paddings on both sides of the input. (padH, padW). Defaults to `(0, 0)`. | ### Inputs @@ -443,10 +444,10 @@ Read [PSANet: Point-wise Spatial Attention Network for Scene Parsing](https://hs ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | -| `int` | `psa_type` | `0` means collect and `1` means `distribute` | -| `list of ints` | `mask_size` | The size of mask | +| Type | Parameter | Description | +| -------------- | ----------- | -------------------------------------------- | +| `int` | `psa_type` | `0` means collect and `1` means `distribute` | +| `list of ints` | `mask_size` | The size of mask | ### Inputs @@ -478,9 +479,9 @@ Note this definition is slightly different with [onnx: NonMaxSuppression](https: | Type | Parameter | Description | | ------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| `int` | `center_point_box` | 0 - the box data is supplied as [y1, x1, y2, x2], 1-the box data is supplied as [x_center, y_center, width, height]. | +| `int` | `center_point_box` | 0 - the box data is supplied as \[y1, x1, y2, x2\], 1-the box data is supplied as \[x_center, y_center, width, height\]. | | `int` | `max_output_boxes_per_class` | The maximum number of boxes to be selected per batch per class. Default to 0, number of output boxes equal to number of input boxes. | -| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range [0, 1]. Default to 0. | +| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range \[0, 1\]. Default to 0. | | `float` | `score_threshold` | The threshold for deciding when to remove boxes based on score. | | `int` | `offset` | 0 or 1, boxes' width or height is (x2 - x1 + offset). | @@ -543,7 +544,6 @@ Perform RoIAlign on output feature, used in bbox_head of most two-stage detector - T:tensor(float32) - ## MMCVRoIAlignRotated ### Description @@ -552,15 +552,15 @@ Perform RoI align pooling for rotated proposals ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | -------------------------------------------------------------- | +| Type | Parameter | Description | +| ------- | ---------------- | ------------------------------------------------------------------------------------------------------------- | | `int` | `output_height` | height of output roi | | `int` | `output_width` | width of output roi | | `float` | `spatial_scale` | used to scale the input boxes | | `int` | `sampling_ratio` | number of input samples to take for each output sample. `0` means to take samples densely for current models. | | `str` | `mode` | pooling mode in each bin. `avg` or `max` | | `int` | `aligned` | If `aligned=0`, use the legacy implementation in MMDetection. Else, align the results more perfectly. | -| `int` | `clockwise` | If `aligned=0`, use the legacy implementation in MMDetection. Else, align the results more perfectly. | +| `int` | `clockwise` | If `aligned=0`, use the legacy implementation in MMDetection. Else, align the results more perfectly. | ### Inputs @@ -581,9 +581,7 @@ Perform RoI align pooling for rotated proposals - T:tensor(float32) -# torch - -## grid_sampler +## grid_sampler\* ### Description @@ -619,7 +617,7 @@ Check [torch.nn.functional.grid_sample](https://pytorch.org/docs/stable/generate - T:tensor(float32, Linear) -## cummax +## cummax\* ### Description @@ -627,9 +625,9 @@ Returns a tuple (`values`, `indices`) where `values` is the cumulative maximum e ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | ---------------------------------------------------------------- | -| `int` | `dim` | the dimension to do the operation over | +| Type | Parameter | Description | +| ----- | --------- | -------------------------------------- | +| `int` | `dim` | the dimension to do the operation over | ### Inputs @@ -651,7 +649,7 @@ Returns a tuple (`values`, `indices`) where `values` is the cumulative maximum e - T:tensor(float32) -## cummin +## cummin\* ### Description @@ -659,9 +657,9 @@ Returns a tuple (`values`, `indices`) where `values` is the cumulative minimum e ### Parameters -| Type | Parameter | Description | -| ------- | --------------- | ---------------------------------------------------------------- | -| `int` | `dim` | the dimension to do the operation over | +| Type | Parameter | Description | +| ----- | --------- | -------------------------------------- | +| `int` | `dim` | the dimension to do the operation over | ### Inputs @@ -682,3 +680,7 @@ Returns a tuple (`values`, `indices`) where `values` is the cumulative minimum e ### Type Constraints - T:tensor(float32) + +## Reminders + +- Operators endwith `*` are defined in Torch and are included here for the conversion to ONNX. diff --git a/docs/en/deployment/onnx.md b/docs/en/deployment/onnx.md new file mode 100644 index 0000000..528a9fd --- /dev/null +++ b/docs/en/deployment/onnx.md @@ -0,0 +1,28 @@ +## Introduction of mmcv.onnx module + +### DeprecationWarning + +ONNX support will be deprecated in the future. +Welcome to use the unified model deployment toolbox MMDeploy: https://github.com/open-mmlab/mmdeploy + +### register_extra_symbolics + +Some extra symbolic functions need to be registered before exporting PyTorch model to ONNX. + +#### Example + +```python +import mmcv +from mmcv.onnx import register_extra_symbolics + +opset_version = 11 +register_extra_symbolics(opset_version) +``` + +#### Reminder + +- *Please note that this feature is experimental and may change in the future.* + +#### FAQs + +- None diff --git a/docs/deployment/onnxruntime_custom_ops.md b/docs/en/deployment/onnxruntime_custom_ops.md similarity index 98% rename from docs/deployment/onnxruntime_custom_ops.md rename to docs/en/deployment/onnxruntime_custom_ops.md index baaa576..85df4e2 100644 --- a/docs/deployment/onnxruntime_custom_ops.md +++ b/docs/en/deployment/onnxruntime_custom_ops.md @@ -1,8 +1,8 @@ -## Onnxruntime Custom Ops +## ONNX Runtime Custom Ops -- [Onnxruntime Custom Ops](#onnxruntime-custom-ops) +- [ONNX Runtime Custom Ops](#onnx-runtime-custom-ops) - [SoftNMS](#softnms) - [Description](#description) - [Parameters](#parameters) @@ -143,10 +143,10 @@ Filter out boxes has high IoU overlap with previously selected boxes. #### Parameters -| Type | Parameter | Description | -| ------- | --------------- | ---------------------------------------------------------------------------------------------------------------- | -| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range [0, 1]. Default to 0. | -| `int` | `offset` | 0 or 1, boxes' width or height is (x2 - x1 + offset). | +| Type | Parameter | Description | +| ------- | --------------- | ------------------------------------------------------------------------------------------------------------------ | +| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range \[0, 1\]. Default to 0. | +| `int` | `offset` | 0 or 1, boxes' width or height is (x2 - x1 + offset). | #### Inputs @@ -338,13 +338,13 @@ Perform Modulated Deformable Convolution on input feature, read [Deformable Conv - T:tensor(float32, Linear) -## MMCVDeformConv2d +### MMCVDeformConv2d -### Description +#### Description Perform Deformable Convolution on input feature, read [Deformable Convolutional Network](https://arxiv.org/abs/1703.06211) for detail. -### Parameters +#### Parameters | Type | Parameter | Description | | -------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------- | @@ -355,7 +355,7 @@ Perform Deformable Convolution on input feature, read [Deformable Convolutional | `int` | `group` | Split input into groups. `input_channel` should be divisible by the number of groups. | | `int` | `im2col_step` | DeformableConv2d use im2col to compute convolution. im2col_step is used to split input and offset, reduce memory usage of column. | -### Inputs +#### Inputs

inputs[0]: T
@@ -366,13 +366,13 @@ Perform Deformable Convolution on input feature, read [Deformable Convolutional
Input weight; 4-D tensor of shape (output_channel, input_channel, kH, kW).
-### Outputs +#### Outputs
outputs[0]: T
Output feature; 4-D tensor of shape (N, output_channel, outH, outW).
-### Type Constraints +#### Type Constraints - T:tensor(float32, Linear) diff --git a/docs/deployment/onnxruntime_op.md b/docs/en/deployment/onnxruntime_op.md similarity index 65% rename from docs/deployment/onnxruntime_op.md rename to docs/en/deployment/onnxruntime_op.md index f17b32a..2778ba3 100644 --- a/docs/deployment/onnxruntime_op.md +++ b/docs/en/deployment/onnxruntime_op.md @@ -1,4 +1,9 @@ -## Custom operators for ONNX Runtime in MMCV +## ONNX Runtime Deployment + +### DeprecationWarning + +ONNX support will be deprecated in the future. +Welcome to use the unified model deployment toolbox MMDeploy: https://github.com/open-mmlab/mmdeploy ### Introduction of ONNX Runtime @@ -15,15 +20,15 @@ ### List of operators for ONNX Runtime supported in MMCV -| Operator | CPU | GPU | MMCV Releases | -| :----------------------------------------------------: | :---: | :---: | :-----------: | -| [SoftNMS](onnxruntime_custom_ops.md#softnms) | Y | N | 1.2.3 | -| [RoIAlign](onnxruntime_custom_ops.md#roialign) | Y | N | 1.2.5 | -| [NMS](onnxruntime_custom_ops.md#nms) | Y | N | 1.2.7 | -| [grid_sampler](onnxruntime_custom_ops.md#grid_sampler) | Y | N | 1.3.1 | -| [CornerPool](onnxruntime_custom_ops.md#cornerpool) | Y | N | 1.3.4 | -| [cummax](onnxruntime_custom_ops.md#cummax) | Y | N | master | -| [cummin](onnxruntime_custom_ops.md#cummin) | Y | N | master | +| Operator | CPU | GPU | MMCV Releases | +| :----------------------------------------------------- | :-: | :-: | :-----------: | +| [SoftNMS](onnxruntime_custom_ops.md#softnms) | Y | N | 1.2.3 | +| [RoIAlign](onnxruntime_custom_ops.md#roialign) | Y | N | 1.2.5 | +| [NMS](onnxruntime_custom_ops.md#nms) | Y | N | 1.2.7 | +| [grid_sampler](onnxruntime_custom_ops.md#grid_sampler) | Y | N | 1.3.1 | +| [CornerPool](onnxruntime_custom_ops.md#cornerpool) | Y | N | 1.3.4 | +| [cummax](onnxruntime_custom_ops.md#cummax) | Y | N | 1.3.4 | +| [cummin](onnxruntime_custom_ops.md#cummin) | Y | N | 1.3.4 | ### How to build custom operators for ONNX Runtime @@ -88,7 +93,10 @@ onnx_results = sess.run(None, {'input' : input_data}) #### Reminder +- *Please note that this feature is experimental and may change in the future. Strongly suggest users always try with the latest master branch.* + - The custom operator is not included in [supported operator list](https://github.com/microsoft/onnxruntime/blob/master/docs/OperatorKernels.md) in ONNX Runtime. + - The custom operator should be able to be exported to ONNX. #### Main procedures @@ -96,18 +104,20 @@ onnx_results = sess.run(None, {'input' : input_data}) Take custom operator `soft_nms` for example. 1. Add header `soft_nms.h` to ONNX Runtime include directory `mmcv/ops/csrc/onnxruntime/` + 2. Add source `soft_nms.cpp` to ONNX Runtime source directory `mmcv/ops/csrc/onnxruntime/cpu/` -3. Register `soft_nms` operator in [onnxruntime_register.cpp](../../mmcv/ops/csrc/onnxruntime/cpu/onnxruntime_register.cpp) - ```c++ - #include "soft_nms.h" +3. Register `soft_nms` operator in [onnxruntime_register.cpp](../../../mmcv/ops/csrc/onnxruntime/cpu/onnxruntime_register.cpp) + + ```c++ + #include "soft_nms.h" - SoftNmsOp c_SoftNmsOp; + SoftNmsOp c_SoftNmsOp; - if (auto status = ortApi->CustomOpDomain_Add(domain, &c_SoftNmsOp)) { - return status; - } - ``` + if (auto status = ortApi->CustomOpDomain_Add(domain, &c_SoftNmsOp)) { + return status; + } + ``` 4. Add unit test into `tests/test_ops/test_onnx.py` Check [here](../../tests/test_ops/test_onnx.py) for examples. @@ -117,10 +127,10 @@ Take custom operator `soft_nms` for example. ### Known Issues - "RuntimeError: tuple appears in op that does not forward tuples, unsupported kind: `prim::PythonOp`." - 1. Note generally `cummax` or `cummin` is exportable to ONNX as long as the torch version >= 1.5.0, since `torch.cummax` is only supported with torch >= 1.5.0. But when `cummax` or `cummin` serves as an intermediate component whose outputs is used as inputs for another modules, it's expected that torch version must be >= 1.7.0. Otherwise the above error might arise, when running exported ONNX model with onnxruntime. - 2. Solution: update the torch version to 1.7.0 or higher. + 1. Note generally `cummax` or `cummin` is exportable to ONNX as long as the torch version >= 1.5.0, since `torch.cummax` is only supported with torch >= 1.5.0. But when `cummax` or `cummin` serves as an intermediate component whose outputs is used as inputs for another modules, it's expected that torch version must be >= 1.7.0. Otherwise the above error might arise, when running exported ONNX model with onnxruntime. + 2. Solution: update the torch version to 1.7.0 or higher. ### References - [How to export Pytorch model with custom op to ONNX and run it in ONNX Runtime](https://github.com/onnx/tutorials/blob/master/PyTorchCustomOperator/README.md) -- [How to add a custom operator/kernel in ONNX Runtime](https://github.com/microsoft/onnxruntime/blob/master/docs/AddingCustomOp.md) +- [How to add a custom operator/kernel in ONNX Runtime](https://onnxruntime.ai/docs/reference/operators/add-custom-op.html) diff --git a/docs/deployment/tensorrt_custom_ops.md b/docs/en/deployment/tensorrt_custom_ops.md similarity index 96% rename from docs/deployment/tensorrt_custom_ops.md rename to docs/en/deployment/tensorrt_custom_ops.md index be47e35..37ebb27 100644 --- a/docs/deployment/tensorrt_custom_ops.md +++ b/docs/en/deployment/tensorrt_custom_ops.md @@ -102,7 +102,7 @@ detectors. #### Description -ScatterND takes three inputs `data` tensor of rank r >= 1, `indices` tensor of rank q >= 1, and `updates` tensor of rank q + r - indices.shape[-1] - 1. The output of the operation is produced by creating a copy of the input `data`, and then updating its value to values specified by updates at specific index positions specified by `indices`. Its output shape is the same as the shape of `data`. Note that `indices` should not have duplicate entries. That is, two or more updates for the same index-location is not supported. +ScatterND takes three inputs `data` tensor of rank r >= 1, `indices` tensor of rank q >= 1, and `updates` tensor of rank q + r - indices.shape\[-1\] - 1. The output of the operation is produced by creating a copy of the input `data`, and then updating its value to values specified by updates at specific index positions specified by `indices`. Its output shape is the same as the shape of `data`. Note that `indices` should not have duplicate entries. That is, two or more updates for the same index-location is not supported. The `output` is calculated via the following equation: @@ -151,9 +151,9 @@ Filter out boxes has high IoU overlap with previously selected boxes or low scor | Type | Parameter | Description | | ------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| `int` | `center_point_box` | 0 - the box data is supplied as [y1, x1, y2, x2], 1-the box data is supplied as [x_center, y_center, width, height]. | +| `int` | `center_point_box` | 0 - the box data is supplied as \[y1, x1, y2, x2\], 1-the box data is supplied as \[x_center, y_center, width, height\]. | | `int` | `max_output_boxes_per_class` | The maximum number of boxes to be selected per batch per class. Default to 0, number of output boxes equal to number of input boxes. | -| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range [0, 1]. Default to 0. | +| `float` | `iou_threshold` | The threshold for deciding whether boxes overlap too much with respect to IoU. Value range \[0, 1\]. Default to 0. | | `float` | `score_threshold` | The threshold for deciding when to remove boxes based on score. | | `int` | `offset` | 0 or 1, boxes' width or height is (x2 - x1 + offset). | diff --git a/docs/deployment/tensorrt_plugin.md b/docs/en/deployment/tensorrt_plugin.md similarity index 72% rename from docs/deployment/tensorrt_plugin.md rename to docs/en/deployment/tensorrt_plugin.md index cd8924e..de7809b 100644 --- a/docs/deployment/tensorrt_plugin.md +++ b/docs/en/deployment/tensorrt_plugin.md @@ -1,8 +1,14 @@ -## TensorRT Plugins for custom operators in MMCV (Experimental) +## TensorRT Deployment + +### DeprecationWarning + +TensorRT support will be deprecated in the future. +Welcome to use the unified model deployment toolbox MMDeploy: https://github.com/open-mmlab/mmdeploy -- [TensorRT Plugins for custom operators in MMCV (Experimental)](#tensorrt-plugins-for-custom-operators-in-mmcv-experimental) +- [TensorRT Deployment](#tensorrt-deployment) + - [DeprecationWarning](#deprecationwarning) - [Introduction](#introduction) - [List of TensorRT plugins supported in MMCV](#list-of-tensorrt-plugins-supported-in-mmcv) - [How to build TensorRT plugins in MMCV](#how-to-build-tensorrt-plugins-in-mmcv) @@ -24,17 +30,17 @@ To ease the deployment of trained models with custom operators from `mmcv.ops` u ### List of TensorRT plugins supported in MMCV -| ONNX Operator | TensorRT Plugin | MMCV Releases | -| :-----------------------: | :-----------------------------------------------------------------------------: | :-----------: | -| MMCVRoiAlign | [MMCVRoiAlign](./tensorrt_custom_ops.md#mmcvroialign) | 1.2.6 | -| ScatterND | [ScatterND](./tensorrt_custom_ops.md#scatternd) | 1.2.6 | -| NonMaxSuppression | [NonMaxSuppression](./tensorrt_custom_ops.md#nonmaxsuppression) | 1.3.0 | -| MMCVDeformConv2d | [MMCVDeformConv2d](./tensorrt_custom_ops.md#mmcvdeformconv2d) | 1.3.0 | -| grid_sampler | [grid_sampler](./tensorrt_custom_ops.md#grid-sampler) | 1.3.1 | -| cummax | [cummax](./tensorrt_custom_ops.md#cummax) | 1.3.5 | -| cummin | [cummin](./tensorrt_custom_ops.md#cummin) | 1.3.5 | +| ONNX Operator | TensorRT Plugin | MMCV Releases | +| :------------------------ | :------------------------------------------------------------------------------ | :-----------: | +| MMCVRoiAlign | [MMCVRoiAlign](./tensorrt_custom_ops.md#mmcvroialign) | 1.2.6 | +| ScatterND | [ScatterND](./tensorrt_custom_ops.md#scatternd) | 1.2.6 | +| NonMaxSuppression | [NonMaxSuppression](./tensorrt_custom_ops.md#nonmaxsuppression) | 1.3.0 | +| MMCVDeformConv2d | [MMCVDeformConv2d](./tensorrt_custom_ops.md#mmcvdeformconv2d) | 1.3.0 | +| grid_sampler | [grid_sampler](./tensorrt_custom_ops.md#grid-sampler) | 1.3.1 | +| cummax | [cummax](./tensorrt_custom_ops.md#cummax) | 1.3.5 | +| cummin | [cummin](./tensorrt_custom_ops.md#cummin) | 1.3.5 | | MMCVInstanceNormalization | [MMCVInstanceNormalization](./tensorrt_custom_ops.md#mmcvinstancenormalization) | 1.3.5 | -| MMCVModulatedDeformConv2d | [MMCVModulatedDeformConv2d](./tensorrt_custom_ops.md#mmcvmodulateddeformconv2d) | master | +| MMCVModulatedDeformConv2d | [MMCVModulatedDeformConv2d](./tensorrt_custom_ops.md#mmcvmodulateddeformconv2d) | 1.3.8 | Notes @@ -75,6 +81,10 @@ pip install $TENSORRT_DIR/graphsurgeon/graphsurgeon-0.4.5-py2.py3-none-any.whl For more detailed information of installing TensorRT using tar, please refer to [Nvidia' website](https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-721/install-guide/index.html#installing-tar). +- Install cuDNN + +Install cuDNN 8 following [Nvidia' website](https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar). + #### Build on Linux ```bash @@ -142,27 +152,32 @@ Below are the main steps: **Take RoIAlign plugin `roi_align` for example.** 1. Add header `trt_roi_align.hpp` to TensorRT include directory `mmcv/ops/csrc/tensorrt/` + 2. Add source `trt_roi_align.cpp` to TensorRT source directory `mmcv/ops/csrc/tensorrt/plugins/` + 3. Add cuda kernel `trt_roi_align_kernel.cu` to TensorRT source directory `mmcv/ops/csrc/tensorrt/plugins/` + 4. Register `roi_align` plugin in [trt_plugin.cpp](https://github.com/open-mmlab/mmcv/blob/master/mmcv/ops/csrc/tensorrt/plugins/trt_plugin.cpp) - ```c++ - #include "trt_plugin.hpp" + ```c++ + #include "trt_plugin.hpp" - #include "trt_roi_align.hpp" + #include "trt_roi_align.hpp" - REGISTER_TENSORRT_PLUGIN(RoIAlignPluginDynamicCreator); + REGISTER_TENSORRT_PLUGIN(RoIAlignPluginDynamicCreator); - extern "C" { - bool initLibMMCVInferPlugins() { return true; } - } // extern "C" - ``` + extern "C" { + bool initLibMMCVInferPlugins() { return true; } + } // extern "C" + ``` 5. Add unit test into `tests/test_ops/test_tensorrt.py` Check [here](https://github.com/open-mmlab/mmcv/blob/master/tests/test_ops/test_tensorrt.py) for examples. #### Reminders +- *Please note that this feature is experimental and may change in the future. Strongly suggest users always try with the latest master branch.* + - Some of the [custom ops](https://mmcv.readthedocs.io/en/latest/ops.html) in `mmcv` have their cuda implementations, which could be referred. ### Known Issues diff --git a/docs/en/faq.md b/docs/en/faq.md new file mode 100644 index 0000000..02d31c2 --- /dev/null +++ b/docs/en/faq.md @@ -0,0 +1,93 @@ +## Frequently Asked Questions + +We list some common troubles faced by many users and their corresponding solutions here. +Feel free to enrich the list if you find any frequent issues and have ways to help others to solve them. + +### Installation + +- KeyError: "xxx: 'yyy is not in the zzz registry'" + + The registry mechanism will be triggered only when the file of the module is imported. + So you need to import that file somewhere. More details can be found at [KeyError: "MaskRCNN: 'RefineRoIHead is not in the models registry'"](https://github.com/open-mmlab/mmdetection/issues/5974). + +- "No module named 'mmcv.ops'"; "No module named 'mmcv.\_ext'" + + 1. Uninstall existing mmcv in the environment using `pip uninstall mmcv` + 2. Install mmcv-full following the [installation instruction](https://mmcv.readthedocs.io/en/latest/get_started/installation.html) or [Build MMCV from source](https://mmcv.readthedocs.io/en/latest/get_started/build.html) + +- "invalid device function" or "no kernel image is available for execution" + + 1. Check the CUDA compute capability of you GPU + 2. Run `python mmdet/utils/collect_env.py` to check whether PyTorch, torchvision, and MMCV are built for the correct GPU architecture. You may need to set `TORCH_CUDA_ARCH_LIST` to reinstall MMCV. The compatibility issue could happen when using old GPUS, e.g., Tesla K80 (3.7) on colab. + 3. Check whether the running environment is the same as that when mmcv/mmdet is compiled. For example, you may compile mmcv using CUDA 10.0 bug run it on CUDA9.0 environments + +- "undefined symbol" or "cannot open xxx.so" + + 1. If those symbols are CUDA/C++ symbols (e.g., libcudart.so or GLIBCXX), check + whether the CUDA/GCC runtimes are the same as those used for compiling mmcv + 2. If those symbols are Pytorch symbols (e.g., symbols containing caffe, aten, and TH), check whether the Pytorch version is the same as that used for compiling mmcv + 3. Run `python mmdet/utils/collect_env.py` to check whether PyTorch, torchvision, and MMCV are built by and running on the same environment + +- "RuntimeError: CUDA error: invalid configuration argument" + + This error may be caused by the poor performance of GPU. Try to decrease the value of [THREADS_PER_BLOCK](https://github.com/open-mmlab/mmcv/blob/cac22f8cf5a904477e3b5461b1cc36856c2793da/mmcv/ops/csrc/common_cuda_helper.hpp#L10) + and recompile mmcv. + +- "RuntimeError: nms is not compiled with GPU support" + + This error is because your CUDA environment is not installed correctly. + You may try to re-install your CUDA environment and then delete the build/ folder before re-compile mmcv. + +- "Segmentation fault" + + 1. Check your GCC version and use GCC >= 5.4. This usually caused by the incompatibility between PyTorch and the environment (e.g., GCC \< 4.9 for PyTorch). We also recommend the users to avoid using GCC 5.5 because many feedbacks report that GCC 5.5 will cause "segmentation fault" and simply changing it to GCC 5.4 could solve the problem + 2. Check whether PyTorch is correctly installed and could use CUDA op, e.g. type the following command in your terminal and see whether they could correctly output results + ```shell + python -c 'import torch; print(torch.cuda.is_available())' + ``` + 3. If PyTorch is correctly installed, check whether MMCV is correctly installed. If MMCV is correctly installed, then there will be no issue of the command + ```shell + python -c 'import mmcv; import mmcv.ops' + ``` + 4. If MMCV and PyTorch are correctly installed, you can use `ipdb` to set breakpoints or directly add `print` to debug and see which part leads the `segmentation fault` + +- "libtorch_cuda_cu.so: cannot open shared object file" + + `mmcv-full` depends on the share object but it can not be found. We can check whether the object exists in `~/miniconda3/envs/{environment-name}/lib/python3.7/site-packages/torch/lib` or try to re-install the PyTorch. + +- "fatal error C1189: #error: -- unsupported Microsoft Visual Studio version!" + + If you are building mmcv-full on Windows and the version of CUDA is 9.2, you will probably encounter the error `"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt/host_config.h(133): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!"`, in which case you can use a lower version of Microsoft Visual Studio like vs2017. + +- "error: member "torch::jit::detail::ModulePolicy::all_slots" may not be initialized" + + If your version of PyTorch is 1.5.0 and you are building mmcv-full on Windows, you will probably encounter the error `- torch/csrc/jit/api/module.h(474): error: member "torch::jit::detail::ModulePolicy::all_slots" may not be initialized`. The way to solve the error is to replace all the `static constexpr bool all_slots = false;` with `static bool all_slots = false;` at this file `https://github.com/pytorch/pytorch/blob/v1.5.0/torch/csrc/jit/api/module.h`. More details can be found at [member "torch::jit::detail::AttributePolicy::all_slots" may not be initialized](https://github.com/pytorch/pytorch/issues/39394). + +- "error: a member with an in-class initializer must be const" + + If your version of PyTorch is 1.6.0 and you are building mmcv-full on Windows, you will probably encounter the error `"- torch/include\torch/csrc/jit/api/module.h(483): error: a member with an in-class initializer must be const"`. The way to solve the error is to replace all the `CONSTEXPR_EXCEPT_WIN_CUDA ` with `const` at `torch/include\torch/csrc/jit/api/module.h`. More details can be found at [Ninja: build stopped: subcommand failed](https://github.com/open-mmlab/mmcv/issues/575). + +- "error: member "torch::jit::ProfileOptionalOp::Kind" may not be initialized" + + If your version of PyTorch is 1.7.0 and you are building mmcv-full on Windows, you will probably encounter the error `torch/include\torch/csrc/jit/ir/ir.h(1347): error: member "torch::jit::ProfileOptionalOp::Kind" may not be initialized`. The way to solve the error needs to modify several local files of PyTorch: + + - delete `static constexpr Symbol Kind = ::c10::prim::profile;` and `tatic constexpr Symbol Kind = ::c10::prim::profile_optional;` at `torch/include\torch/csrc/jit/ir/ir.h` + - replace `explicit operator type&() { return *(this->value); }` with `explicit operator type&() { return *((type*)this->value); }` at `torch\include\pybind11\cast.h` + - replace all the `CONSTEXPR_EXCEPT_WIN_CUDA` with `const` at `torch/include\torch/csrc/jit/api/module.h` + + More details can be found at [Ensure default extra_compile_args](https://github.com/pytorch/pytorch/pull/45956). + +- Compatibility issue between MMCV and MMDetection; "ConvWS is already registered in conv layer" + + Please install the correct version of MMCV for the version of your MMDetection following the [installation instruction](https://mmdetection.readthedocs.io/en/latest/get_started.html#installation). + +### Usage + +- "RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one" + + 1. This error indicates that your module has parameters that were not used in producing loss. This phenomenon may be caused by running different branches in your code in DDP mode. More datails at [Expected to have finished reduction in the prior iteration before starting a new one](https://github.com/pytorch/pytorch/issues/55582). + 2. You can set ` find_unused_parameters = True` in the config to solve the above problems or find those unused parameters manually + +- "RuntimeError: Trying to backward through the graph a second time" + + `GradientCumulativeOptimizerHook` and `OptimizerHook` are both set which causes the `loss.backward()` to be called twice so `RuntimeError` was raised. We can only use one of these. More datails at [Trying to backward through the graph a second time](https://github.com/open-mmlab/mmcv/issues/1379). diff --git a/docs/get_started/build.md b/docs/en/get_started/build.md similarity index 61% rename from docs/get_started/build.md rename to docs/en/get_started/build.md index 758a83a..d987c1e 100644 --- a/docs/get_started/build.md +++ b/docs/en/get_started/build.md @@ -9,6 +9,12 @@ git clone https://github.com/open-mmlab/mmcv.git cd mmcv ``` +It is recommended to install `ninja` to speed up the compilation + +```bash +pip install -r requirements/optional.txt +``` + You can either - install the lite version @@ -40,6 +46,7 @@ If you would like to use `opencv-python-headless` instead of `opencv-python`, e.g., in a minimum container environment or servers without GUI, you can first install it before installing MMCV to skip the installation of `opencv-python`. ``` + ### Build on Windows Building MMCV on Windows is a bit more complicated than that on Linux. @@ -68,35 +75,41 @@ You should know how to set up environment variables, especially `Path`, on Windo 1. Launch Anaconda prompt from Windows Start menu - Do not use raw `cmd.exe` s instruction is based on PowerShell syntax. + Do not use raw `cmd.exe` s instruction is based on PowerShell syntax. -1. Create a new conda environment +2. Create a new conda environment - ```shell - conda create --name mmcv python=3.7 # 3.6, 3.7, 3.8 should work too as tested - conda activate mmcv # make sure to activate environment before any operation - ``` + ```shell + conda create --name mmcv python=3.7 # 3.6, 3.7, 3.8 should work too as tested + conda activate mmcv # make sure to activate environment before any operation + ``` -1. Install PyTorch. Choose a version based on your need. +3. Install PyTorch. Choose a version based on your need. - ```shell - conda install pytorch torchvision cudatoolkit=10.2 -c pytorch - ``` + ```shell + conda install pytorch torchvision cudatoolkit=10.2 -c pytorch + ``` - We only tested PyTorch version >= 1.6.0. + We only tested PyTorch version >= 1.6.0. -1. Prepare MMCV source code +4. Prepare MMCV source code - ```shell - git clone https://github.com/open-mmlab/mmcv.git - cd mmcv - ``` + ```shell + git clone https://github.com/open-mmlab/mmcv.git + cd mmcv + ``` -1. Install required Python packages +5. Install required Python packages - ```shell - pip3 install -r requirements.txt - ``` + ```shell + pip3 install -r requirements/runtime.txt + ``` + +6. It is recommended to install `ninja` to speed up the compilation + + ```bash + pip install -r requirements/optional.txt + ``` #### Build and install MMCV @@ -106,11 +119,11 @@ MMCV can be built in three ways: In this way, no custom ops are compiled and mmcv is a pure python package. -1. Full version (CPU ops) +2. Full version (CPU ops) Module `ops` will be compiled as a pytorch extension, but only x86 code will be compiled. The compiled ops can be executed on CPU only. -1. Full version (CUDA ops) +3. Full version (CUDA ops) Both x86 and CUDA codes of `ops` module will be compiled. The compiled version can be run on both CPU and CUDA-enabled GPU (if implemented). @@ -118,19 +131,19 @@ MMCV can be built in three ways: 1. Set up MSVC compiler - Set Environment variable, add `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64` to `PATH`, so that `cl.exe` will be available in prompt, as shown below. + Set Environment variable, add `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64` to `PATH`, so that `cl.exe` will be available in prompt, as shown below. - ```none - (base) PS C:\Users\xxx> cl - Microsoft (R) C/C++ Optimizing Compiler Version 19.27.29111 for x64 - Copyright (C) Microsoft Corporation. All rights reserved. + ```none + (base) PS C:\Users\xxx> cl + Microsoft (R) C/C++ Optimizing Compiler Version 19.27.29111 for x64 + Copyright (C) Microsoft Corporation. All rights reserved. - usage: cl [ option... ] filename... [ / link linkoption... ] - ``` + usage: cl [ option... ] filename... [ / link linkoption... ] + ``` - For compatibility, we use the x86-hosted and x64-targeted compiler. note `Hostx86\x64` in the path. + For compatibility, we use the x86-hosted and x64-targeted compiler. note `Hostx86\x64` in the path. - You may want to change the system language to English because pytorch will parse text output from `cl.exe` to check its version. However only utf-8 is recognized. Navigate to Control Panel -> Region -> Administrative -> Language for Non-Unicode programs and change it to English. + You may want to change the system language to English because pytorch will parse text output from `cl.exe` to check its version. However only utf-8 is recognized. Navigate to Control Panel -> Region -> Administrative -> Language for Non-Unicode programs and change it to English. ##### Option 1: Build MMCV (lite version) @@ -150,32 +163,34 @@ pip list ##### Option 2: Build MMCV (full version with CPU) 1. Finish above common steps -1. Set up environment variables - - ```shell - $env:MMCV_WITH_OPS = 1 - $env:MAX_JOBS = 8 # based on your available number of CPU cores and amount of memory - ``` - -1. Following build steps of the lite version - - ```shell - # activate environment - conda activate mmcv - # change directory - cd mmcv - # build - python setup.py build_ext # if success, cl will be launched to compile ops - # install - python setup.py develop - # check - pip list - ``` + +2. Set up environment variables + + ```shell + $env:MMCV_WITH_OPS = 1 + $env:MAX_JOBS = 8 # based on your available number of CPU cores and amount of memory + ``` + +3. Following build steps of the lite version + + ```shell + # activate environment + conda activate mmcv + # change directory + cd mmcv + # build + python setup.py build_ext # if success, cl will be launched to compile ops + # install + python setup.py develop + # check + pip list + ``` ##### Option 3: Build MMCV (full version with CUDA) 1. Finish above common steps -1. Make sure `CUDA_PATH` or `CUDA_HOME` is already set in `envs` via `ls env:`, desired output is shown as below: + +2. Make sure `CUDA_PATH` or `CUDA_HOME` is already set in `envs` via `ls env:`, desired output is shown as below: ```none (base) PS C:\Users\WRH> ls env: @@ -197,7 +212,7 @@ pip list $env:CUDA_HOME = $env:CUDA_PATH_V10_2 # if CUDA_PATH_V10_2 is in envs: ``` -1. Set CUDA target arch +3. Set CUDA target arch ```shell # Suppose you are using GTX 1080, which is of capability 6.1 @@ -210,7 +225,7 @@ pip list Check your the compute capability of your GPU from [here](https://developer.nvidia.com/cuda-gpus). ``` -1. Launch compiling the same way as CPU +4. Launch compiling the same way as CPU ```shell $env:MMCV_WITH_OPS = 1 @@ -232,3 +247,23 @@ If you are compiling against PyTorch 1.6.0, you might meet some errors from PyTo ``` If you meet issues when running or compiling mmcv, we list some common issues in [Frequently Asked Question](../faq.html). + +## \[Optional\] Build MMCV on IPU machine + +Firstly, you need to apply for an IPU cloud machine, see [here](https://www.graphcore.ai/ipus-in-the-cloud). + +### Option 1: Docker + +1. Pull docker + +```shell + docker pull graphcore/pytorch +``` + +2. Build MMCV under same python environment + +### Option 2: Install from SDK + +1. Build MMCV + +2. Use pip to install sdk according to [IPU PyTorch document](https://docs.graphcore.ai/projects/poptorch-user-guide/en/latest/installation.html). Also, you need to apply for machine and sdk to Graphcore. diff --git a/docs/get_started/installation.md b/docs/en/get_started/installation.md similarity index 75% rename from docs/get_started/installation.md rename to docs/en/get_started/installation.md index 0c64ea8..d9fd1b3 100644 --- a/docs/get_started/installation.md +++ b/docs/en/get_started/installation.md @@ -3,7 +3,7 @@ There are two versions of MMCV: - **mmcv-full**: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build. -- **mmcv**: lite, without CUDA ops but all other features, similar to mmcv<1.0.0. It is useful when you do not need those CUDA ops. +- **mmcv**: lite, without CUDA ops but all other features, similar to mmcv\<1.0.0. It is useful when you do not need those CUDA ops. ```{warning} Do not install both versions in the same environment, otherwise you may encounter errors like `ModuleNotFound`. You need to uninstall one before installing the other. `Installing the full version is highly recommended if CUDA is avaliable`. @@ -13,36 +13,36 @@ a. Install the full version. Before installing mmcv-full, make sure that PyTorch has been successfully installed following the [official guide](https://pytorch.org/). -We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building. In addition, you can run [check_installation.py](.dev_scripts/check_installation.py) to check the installation of mmcv-full after running the installation commands. +We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building for **Linux and Windows systems**. In addition, you can run [check_installation.py](.dev_scripts/check_installation.py) to check the installation of mmcv-full after running the installation commands. i. Install the latest version. -The rule for installing the latest ``mmcv-full`` is as follows: +The rule for installing the latest `mmcv-full` is as follows: ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -Please replace ``{cu_version}`` and ``{torch_version}`` in the url to your desired one. For example, -to install the latest ``mmcv-full`` with ``CUDA 11.1`` and ``PyTorch 1.9.0``, use the following command: +Please replace `{cu_version}` and `{torch_version}` in the url to your desired one. For example, +to install the latest `mmcv-full` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command: ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html ``` -For more details, please refer the the following tables and delete ``=={mmcv_version}``. +For more details, please refer the the following tables and delete `=={mmcv_version}`. ii. Install a specified version. -The rule for installing a specified ``mmcv-full`` is as follows: +The rule for installing a specified `mmcv-full` is as follows: ```shell pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -First of all, please refer to the Releases and replace ``{mmcv_version}`` a specified one. e.g. ``1.3.9``. -Then replace ``{cu_version}`` and ``{torch_version}`` in the url to your desired versions. For example, -to install ``mmcv-full==1.3.9`` with ``CUDA 11.1`` and ``PyTorch 1.9.0``, use the following command: +First of all, please refer to the Releases and replace `{mmcv_version}` a specified one. e.g. `1.3.9`. +Then replace `{cu_version}` and `{torch_version}` in the url to your desired versions. For example, +to install `mmcv-full==1.3.9` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command: ```shell pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html @@ -64,16 +64,28 @@ For more details, please refer the the following tables. CUDA - torch 1.10 - torch 1.9 - torch 1.8 - torch 1.7 - torch 1.6 - torch 1.5 + torch 1.11 + torch 1.10 + torch 1.9 + torch 1.8 + torch 1.7 + torch 1.6 + torch 1.5 + + + 11.5 +
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu115/torch1.11.0/index.html
+ + + + + + 11.3 -
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
+
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
+
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
@@ -82,6 +94,7 @@ For more details, please refer the the following tables. 11.1 +
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
@@ -94,13 +107,15 @@ For more details, please refer the the following tables. +
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2 -
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
+
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html
+
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html
@@ -111,6 +126,7 @@ For more details, please refer the the following tables. 10.1 +
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
@@ -121,12 +137,14 @@ For more details, please refer the the following tables. +
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu +
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.11.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
@@ -138,7 +156,11 @@ For more details, please refer the the following tables. ```{note} -The pre-built packages provided above do not include all versions of mmcv-full, you can click on the corresponding links to see the supported versions. For example, if you click [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html), you can see that `cu102-torch1.8.0` only provides 1.3.0 and above versions of mmcv-full. In addition, We no longer provide `mmcv-full` pre-built packages compiled with `PyTorch 1.3 & 1.4` since v1.3.17. You can find previous versions that compiled with PyTorch 1.3 & 1.4 [here](./docs/get_started/previous_versions.md). The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year. +The pre-built packages provided above do not include all versions of mmcv-full, you can click on the corresponding links to see the supported versions. For example, if you click [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html), you can see that `cu102-torch1.8.0` only provides 1.3.0 and above versions of mmcv-full. In addition, We no longer provide `mmcv-full` pre-built packages compiled with `PyTorch 1.3 & 1.4` since v1.3.17. You can find previous versions that compiled with PyTorch 1.3 & 1.4 [here](./previous_versions.md). The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year. +``` + +```{note} +mmcv-full does not provide pre-built packages for `cu102-torch1.11` and `cu92-torch*` on Windows. ``` Another way is to compile locally by running diff --git a/docs/get_started/introduction.md b/docs/en/get_started/introduction.md similarity index 62% rename from docs/get_started/introduction.md rename to docs/en/get_started/introduction.md index 4ffb59d..9ef6ee9 100644 --- a/docs/get_started/introduction.md +++ b/docs/en/get_started/introduction.md @@ -3,16 +3,24 @@ MMCV is a foundational library for computer vision research and supports many research projects as below: +- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages. - [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark. - [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox. +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark. +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab self-supervised learning toolbox and benchmark. +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark. +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark. - [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. - [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. +- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark. - [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. -- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition and understanding toolbox. - [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox. +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab model deployment framework. It provides the following functionalities. @@ -24,6 +32,12 @@ It provides the following functionalities. - Various CNN architectures - High-quality implementation of common CUDA ops +It supports the following systems. + +- Linux +- Windows +- macOS + ```{note} MMCV requires Python 3.6+. ``` diff --git a/docs/get_started/previous_versions.md b/docs/en/get_started/previous_versions.md similarity index 93% rename from docs/get_started/previous_versions.md rename to docs/en/get_started/previous_versions.md index c91180d..a9c3717 100644 --- a/docs/get_started/previous_versions.md +++ b/docs/en/get_started/previous_versions.md @@ -4,7 +4,7 @@ We no longer provide `mmcv-full` packages compiled under lower versions of `PyTo ### PyTorch 1.4 -| 1.0.0 <= mmcv_version <= 1.2.1 +| 1.0.0 \<= mmcv_version \<= 1.2.1 #### CUDA 10.1 @@ -26,7 +26,7 @@ pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dis ### PyTorch v1.3 -| 1.0.0 <= mmcv_version <= 1.3.16 +| 1.0.0 \<= mmcv_version \<= 1.3.16 #### CUDA 10.1 diff --git a/docs/index.rst b/docs/en/index.rst similarity index 100% rename from docs/index.rst rename to docs/en/index.rst index 6019f10..bccbc37 100644 --- a/docs/index.rst +++ b/docs/en/index.rst @@ -29,12 +29,12 @@ You can switch between Chinese and English documents in the lower-left corner of :maxdepth: 2 :caption: Deployment + deployment/mmcv_ops_definition.md deployment/onnx.md - deployment/onnxruntime_op.md deployment/onnxruntime_custom_ops.md - deployment/tensorrt_plugin.md + deployment/onnxruntime_op.md deployment/tensorrt_custom_ops.md - deployment/mmcv_ops_definition.md + deployment/tensorrt_plugin.md .. toctree:: :maxdepth: 2 diff --git a/docs/make.bat b/docs/en/make.bat similarity index 100% rename from docs/make.bat rename to docs/en/make.bat diff --git a/docs/mmcv-logo.png b/docs/en/mmcv-logo.png similarity index 100% rename from docs/mmcv-logo.png rename to docs/en/mmcv-logo.png diff --git a/docs/en/understand_mmcv/cnn.md b/docs/en/understand_mmcv/cnn.md new file mode 100644 index 0000000..0c401c6 --- /dev/null +++ b/docs/en/understand_mmcv/cnn.md @@ -0,0 +1,583 @@ +## CNN + +We provide some building bricks for CNNs, including layer building, module bundles and weight initialization. + +### Layer building + +We may need to try different layers of the same type when running experiments, +but do not want to modify the code from time to time. +Here we provide some layer building methods to construct layers from a dict, +which can be written in configs or specified via command line arguments. + +#### Usage + +A simplest example is + +```python +cfg = dict(type='Conv3d') +layer = build_conv_layer(cfg, in_channels=3, out_channels=8, kernel_size=3) +``` + +- `build_conv_layer`: Supported types are Conv1d, Conv2d, Conv3d, Conv (alias for Conv2d). +- `build_norm_layer`: Supported types are BN1d, BN2d, BN3d, BN (alias for BN2d), SyncBN, GN, LN, IN1d, IN2d, IN3d, IN (alias for IN2d). +- `build_activation_layer`: Supported types are ReLU, LeakyReLU, PReLU, RReLU, ReLU6, ELU, Sigmoid, Tanh, GELU. +- `build_upsample_layer`: Supported types are nearest, bilinear, deconv, pixel_shuffle. +- `build_padding_layer`: Supported types are zero, reflect, replicate. + +#### Extension + +We also allow extending the building methods with custom layers and operators. + +1. Write and register your own module. + + ```python + from mmcv.cnn import UPSAMPLE_LAYERS + + @UPSAMPLE_LAYERS.register_module() + class MyUpsample: + + def __init__(self, scale_factor): + pass + + def forward(self, x): + pass + ``` + +2. Import `MyUpsample` somewhere (e.g., in `__init__.py`) and then use it. + + ```python + cfg = dict(type='MyUpsample', scale_factor=2) + layer = build_upsample_layer(cfg) + ``` + +### Module bundles + +We also provide common module bundles to facilitate the network construction. +`ConvModule` is a bundle of convolution, normalization and activation layers, +please refer to the [api](api.html#mmcv.cnn.ConvModule) for details. + +```python +# conv + bn + relu +conv = ConvModule(3, 8, 2, norm_cfg=dict(type='BN')) +# conv + gn + relu +conv = ConvModule(3, 8, 2, norm_cfg=dict(type='GN', num_groups=2)) +# conv + relu +conv = ConvModule(3, 8, 2) +# conv +conv = ConvModule(3, 8, 2, act_cfg=None) +# conv + leaky relu +conv = ConvModule(3, 8, 3, padding=1, act_cfg=dict(type='LeakyReLU')) +# bn + conv + relu +conv = ConvModule( + 3, 8, 2, norm_cfg=dict(type='BN'), order=('norm', 'conv', 'act')) +``` + +### Weight initialization + +> Implementation details are available at [mmcv/cnn/utils/weight_init.py](../../mmcv/cnn/utils/weight_init.py) + +During training, a proper initialization strategy is beneficial to speed up the +training or obtain a higher performance. In MMCV, we provide some commonly used +methods for initializing modules like `nn.Conv2d`. Of course, we also provide +high-level APIs for initializing models containing one or more +modules. + +#### Initialization functions + +Initialize a `nn.Module` such as `nn.Conv2d`, `nn.Linear` in a functional way. + +We provide the following initialization methods. + +- constant_init + + Initialize module parameters with constant values. + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import constant_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # constant_init(module, val, bias=0) + >>> constant_init(conv1, 1, 0) + >>> conv1.weight + ``` + +- xavier_init + + Initialize module parameters with values according to the method + described in [Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import xavier_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # xavier_init(module, gain=1, bias=0, distribution='normal') + >>> xavier_init(conv1, distribution='normal') + ``` + +- normal_init + + Initialize module parameters with the values drawn from a normal distribution. + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import normal_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # normal_init(module, mean=0, std=1, bias=0) + >>> normal_init(conv1, std=0.01, bias=0) + ``` + +- uniform_init + + Initialize module parameters with values drawn from a uniform distribution. + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import uniform_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # uniform_init(module, a=0, b=1, bias=0) + >>> uniform_init(conv1, a=0, b=1) + ``` + +- kaiming_init + + Initialize module parameters with the values according to the method + described in [Delving deep into rectifiers: Surpassing human-level + performance on ImageNet classification - He, K. et al. (2015)](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf) + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import kaiming_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # kaiming_init(module, a=0, mode='fan_out', nonlinearity='relu', bias=0, distribution='normal') + >>> kaiming_init(conv1) + ``` + +- caffe2_xavier_init + + The xavier initialization is implemented in caffe2, which corresponds to `kaiming_uniform_` in PyTorch. + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import caffe2_xavier_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # caffe2_xavier_init(module, bias=0) + >>> caffe2_xavier_init(conv1) + ``` + +- bias_init_with_prob + + Initialize conv/fc bias value according to a given probability, as proposed in [Focal Loss for Dense Object Detection](https://arxiv.org/pdf/1708.02002.pdf). + + ```python + >>> from mmcv.cnn import bias_init_with_prob + >>> # bias_init_with_prob is proposed in Focal Loss + >>> bias = bias_init_with_prob(0.01) + >>> bias + -4.59511985013459 + ``` + +#### Initializers and configs + +On the basis of the initialization methods, we define the corresponding initialization classes and register them to `INITIALIZERS`, so we can +use the configuration to initialize the model. + +We provide the following initialization classes. + +- ConstantInit +- XavierInit +- NormalInit +- UniformInit +- KaimingInit +- Caffe2XavierInit +- PretrainedInit + +Let us introduce the usage of `initialize` in detail. + +1. Initialize model by `layer` key + + If we only define `layer`, it just initialize the layer in `layer` key. + + NOTE: Value of `layer` key is the class name with attributes weights and bias of Pytorch, so `MultiheadAttention layer` is not supported. + +- Define `layer` key for initializing module with same configuration. + + ```python + import torch.nn as nn + from mmcv.cnn import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Linear(1, 2) + + model = FooNet() + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d', 'Linear'], val=1) + # initialize whole module with same configuration + initialize(model, init_cfg) + # model.feat.weight + # Parameter containing: + # tensor([[[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]]], requires_grad=True) + ``` + +- Define `layer` key for initializing layer with different configurations. + + ```python + import torch.nn as nn + from mmcv.cnn.utils import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Linear(1,2) + + model = FooNet() + init_cfg = [dict(type='Constant', layer='Conv1d', val=1), + dict(type='Constant', layer='Conv2d', val=2), + dict(type='Constant', layer='Linear', val=3)] + # nn.Conv1d will be initialized with dict(type='Constant', val=1) + # nn.Conv2d will be initialized with dict(type='Constant', val=2) + # nn.Linear will be initialized with dict(type='Constant', val=3) + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + ``` + +2. Initialize model by `override` key + +- When initializing some specific part with its attribute name, we can use `override` key, and the value in `override` will ignore the value in init_cfg. + + ```python + import torch.nn as nn + from mmcv.cnn import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Sequential(nn.Conv1d(3, 1, 3), nn.Linear(1,2)) + + # if we would like to initialize model's weights as 1 and bias as 2 + # but weight in `reg` as 3 and bias 4, we can use override key + model = FooNet() + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, + override=dict(type='Constant', name='reg', val=3, bias=4)) + # self.feat and self.cls will be initialized with dict(type='Constant', val=1, bias=2) + # The module called 'reg' will be initialized with dict(type='Constant', val=3, bias=4) + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[3., 3., 3.], + # [3., 3., 3.], + # [3., 3., 3.]], + # ..., + # [[3., 3., 3.], + # [3., 3., 3.], + # [3., 3., 3.]]]], requires_grad=True) + ``` + +- If `layer` is None in init_cfg, only sub-module with the name in override will be initialized, and type and other args in override can be omitted. + + ```python + model = FooNet() + init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) + # self.feat and self.cls will be initialized by Pytorch + # The module called 'reg' will be initialized with dict(type='Constant', val=1, bias=2) + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]], + # ..., + # [[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]]]], requires_grad=True) + ``` + +- If we don't define `layer` key or `override` key, it will not initialize anything. + +- Invalid usage + + ```python + # It is invalid that override don't have name key + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], + val=1, bias=2, + override=dict(type='Constant', val=3, bias=4)) + + # It is also invalid that override has name and other args except type + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], + val=1, bias=2, + override=dict(name='reg', val=3, bias=4)) + ``` + +3. Initialize model with the pretrained model + + ```python + import torch.nn as nn + import torchvision.models as models + from mmcv.cnn import initialize + + # initialize model with pretrained model + model = models.resnet50() + # model.conv1.weight + # Parameter containing: + # tensor([[[[-6.7435e-03, -2.3531e-02, -9.0143e-03, ..., -2.1245e-03, + # -1.8077e-03, 3.0338e-03], + # [-1.2603e-02, -2.7831e-02, 2.3187e-02, ..., -1.5793e-02, + # 1.1655e-02, 4.5889e-03], + # [-3.7916e-02, 1.2014e-02, 1.3815e-02, ..., -4.2651e-03, + # 1.7314e-02, -9.9998e-03], + # ..., + + init_cfg = dict(type='Pretrained', + checkpoint='torchvision://resnet50') + initialize(model, init_cfg) + # model.conv1.weight + # Parameter containing: + # tensor([[[[ 1.3335e-02, 1.4664e-02, -1.5351e-02, ..., -4.0896e-02, + # -4.3034e-02, -7.0755e-02], + # [ 4.1205e-03, 5.8477e-03, 1.4948e-02, ..., 2.2060e-03, + # -2.0912e-02, -3.8517e-02], + # [ 2.2331e-02, 2.3595e-02, 1.6120e-02, ..., 1.0281e-01, + # 6.2641e-02, 5.1977e-02], + # ..., + + # initialize weights of a sub-module with the specific part of a pretrained model by using 'prefix' + model = models.resnet50() + url = 'http://download.openmmlab.com/mmdetection/v2.0/retinanet/'\ + 'retinanet_r50_fpn_1x_coco/'\ + 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth' + init_cfg = dict(type='Pretrained', + checkpoint=url, prefix='backbone.') + initialize(model, init_cfg) + ``` + +4. Initialize model inherited from BaseModule, Sequential, ModuleList, ModuleDict + + `BaseModule` is inherited from `torch.nn.Module`, and the only different between them is that `BaseModule` implements `init_weights()`. + + `Sequential` is inherited from `BaseModule` and `torch.nn.Sequential`. + + `ModuleList` is inherited from `BaseModule` and `torch.nn.ModuleList`. + + `ModuleDict` is inherited from `BaseModule` and `torch.nn.ModuleDict`. + + ```python + import torch.nn as nn + from mmcv.runner import BaseModule, Sequential, ModuleList, ModuleDict + + class FooConv1d(BaseModule): + + def __init__(self, init_cfg=None): + super().__init__(init_cfg) + self.conv1d = nn.Conv1d(4, 1, 4) + + def forward(self, x): + return self.conv1d(x) + + class FooConv2d(BaseModule): + + def __init__(self, init_cfg=None): + super().__init__(init_cfg) + self.conv2d = nn.Conv2d(3, 1, 3) + + def forward(self, x): + return self.conv2d(x) + + # BaseModule + init_cfg = dict(type='Constant', layer='Conv1d', val=0., bias=1.) + model = FooConv1d(init_cfg) + model.init_weights() + # model.conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + + # Sequential + init_cfg1 = dict(type='Constant', layer='Conv1d', val=0., bias=1.) + init_cfg2 = dict(type='Constant', layer='Conv2d', val=2., bias=3.) + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + seq_model = Sequential(model1, model2) + seq_model.init_weights() + # seq_model[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # seq_model[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + seq_model = Sequential(model1, model2, init_cfg=init_cfg) + seq_model.init_weights() + # seq_model[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # seq_model[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # ModuleList + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + modellist = ModuleList([model1, model2]) + modellist.init_weights() + # modellist[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modellist[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + modellist = ModuleList([model1, model2], init_cfg=init_cfg) + modellist.init_weights() + # modellist[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modellist[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # ModuleDict + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + modeldict = ModuleDict(dict(model1=model1, model2=model2)) + modeldict.init_weights() + # modeldict['model1'].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modeldict['model2'].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + modeldict = ModuleDict(dict(model1=model1, model2=model2), init_cfg=init_cfg) + modeldict.init_weights() + # modeldict['model1'].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modeldict['model2'].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + ``` + +### Model Zoo + +Besides torchvision pre-trained models, we also provide pre-trained models of following CNN: + +- VGG Caffe +- ResNet Caffe +- ResNeXt +- ResNet with Group Normalization +- ResNet with Group Normalization and Weight Standardization +- HRNetV2 +- Res2Net +- RegNet + +#### Model URLs in JSON + +The model zoo links in MMCV are managed by JSON files. +The json file consists of key-value pair of model name and its url or path. +An example json file could be like: + +```json +{ + "model_a": "https://example.com/models/model_a_9e5bac.pth", + "model_b": "pretrain/model_b_ab3ef2c.pth" +} +``` + +The default links of the pre-trained models hosted on OpenMMLab AWS could be found [here](https://github.com/open-mmlab/mmcv/blob/master/mmcv/model_zoo/open_mmlab.json). + +You may override default links by putting `open-mmlab.json` under `MMCV_HOME`. If `MMCV_HOME` is not find in the environment, `~/.cache/mmcv` will be used by default. You may `export MMCV_HOME=/your/path` to use your own path. + +The external json files will be merged into default one. If the same key presents in both external json and default json, the external one will be used. + +#### Load Checkpoint + +The following types are supported for `filename` argument of `mmcv.load_checkpoint()`. + +- filepath: The filepath of the checkpoint. +- `http://xxx` and `https://xxx`: The link to download the checkpoint. The `SHA256` postfix should be contained in the filename. +- `torchvision://xxx`: The model links in `torchvision.models`.Please refer to [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) for details. +- `open-mmlab://xxx`: The model links or filepath provided in default and additional json files. diff --git a/docs/understand_mmcv/config.md b/docs/en/understand_mmcv/config.md similarity index 95% rename from docs/understand_mmcv/config.md rename to docs/en/understand_mmcv/config.md index d0b669b..9626dbe 100644 --- a/docs/understand_mmcv/config.md +++ b/docs/en/understand_mmcv/config.md @@ -196,5 +196,5 @@ _deprecation_ = dict( ```python >>> cfg = Config.fromfile('./deprecated_cfg.py') -UserWarning: The config file deprecated.py will be deprecated in the future. Please use expected_cfg.py instead. More information can be found at https://github.com/open-mmlab/mmcv/pull/1275 +UserWarning: The config file deprecated_cfg.py will be deprecated in the future. Please use expected_cfg.py instead. More information can be found at https://github.com/open-mmlab/mmcv/pull/1275 ``` diff --git a/docs/understand_mmcv/data_process.md b/docs/en/understand_mmcv/data_process.md similarity index 99% rename from docs/understand_mmcv/data_process.md rename to docs/en/understand_mmcv/data_process.md index 79e9281..94a4c54 100644 --- a/docs/understand_mmcv/data_process.md +++ b/docs/en/understand_mmcv/data_process.md @@ -232,7 +232,7 @@ mmcv.resize_video('test.mp4', 'resized2.mp4', ratio=2) - IO - Visualization -- Flow warpping +- Flow warping We provide two options to dump optical flow files: uncompressed and compressed. The uncompressed way just dumps the floating numbers to a binary file. It is diff --git a/docs/understand_mmcv/io.md b/docs/en/understand_mmcv/io.md similarity index 98% rename from docs/understand_mmcv/io.md rename to docs/en/understand_mmcv/io.md index f6c28dd..64fbc8b 100644 --- a/docs/understand_mmcv/io.md +++ b/docs/en/understand_mmcv/io.md @@ -195,8 +195,8 @@ disk_backend = HardDiskBackend() with io.BytesIO(disk_backend.get(filepath1)) as buffer: checkpoint = torch.load(buffer) with io.BytesIO() as buffer: - torch.save(checkpoint, f) - disk_backend.put(f.getvalue(), filepath2) + torch.save(checkpoint, buffer) + disk_backend.put(buffer.getvalue(), filepath2) ``` If we want to implement an interface which automatically select the corresponding diff --git a/docs/en/understand_mmcv/ops.md b/docs/en/understand_mmcv/ops.md new file mode 100644 index 0000000..127f92b --- /dev/null +++ b/docs/en/understand_mmcv/ops.md @@ -0,0 +1,60 @@ +## ops + +We implement common ops used in detection, segmentation, etc. + +| Device | CPU | CUDA | MLU | MPS | +| ---------------------------- | --- | ---- | --- | --- | +| ActiveRotatedFilter | √ | √ | | | +| AssignScoreWithK | | √ | | | +| BallQuery | | √ | | | +| BBoxOverlaps | | √ | √ | √ | +| BorderAlign | | √ | | | +| BoxIouRotated | √ | √ | | | +| CARAFE | | √ | | | +| ChamferDistance | | √ | | | +| CrissCrossAttention | | √ | | | +| ContourExpand | √ | | | | +| ConvexIoU | | √ | | | +| CornerPool | | √ | | | +| Correlation | | √ | | | +| Deformable Convolution v1/v2 | √ | √ | | | +| Deformable RoIPool | | √ | | | +| DiffIoURotated | | √ | | | +| DynamicScatter | | √ | | | +| FurthestPointSample | | √ | | | +| FurthestPointSampleWithDist | | √ | | | +| FusedBiasLeakyrelu | | √ | | | +| GatherPoints | | √ | | | +| GroupPoints | | √ | | | +| Iou3d | | √ | | | +| KNN | | √ | | | +| MaskedConv | | √ | | | +| MergeCells | | √ | | | +| MinAreaPolygon | | √ | | | +| ModulatedDeformConv2d | √ | √ | | | +| MultiScaleDeformableAttn | | √ | | | +| NMS | √ | √ | √ | | +| NMSRotated | √ | √ | | | +| PixelGroup | √ | | | | +| PointsInBoxes | √ | √ | | | +| PointsInPolygons | | √ | | | +| PSAMask | √ | √ | √ | | +| RotatedFeatureAlign | √ | √ | | | +| RoIPointPool3d | | √ | | | +| RoIPool | | √ | √ | | +| RoIAlignRotated | √ | √ | √ | | +| RiRoIAlignRotated | | √ | | | +| RoIAlign | √ | √ | √ | | +| RoIAwarePool3d | | √ | | | +| SAConv2d | | √ | | | +| SigmoidFocalLoss | | √ | √ | | +| SoftmaxFocalLoss | | √ | | | +| SoftNMS | | √ | | | +| Sparse Convolution | | √ | | | +| Synchronized BatchNorm | | √ | | | +| ThreeInterpolate | | √ | | | +| ThreeNN | | √ | | | +| TINShift | | √ | √ | | +| UpFirDn2d | | √ | | | +| Voxelization | √ | √ | | | +| PrRoIPool | | √ | | | diff --git a/docs/understand_mmcv/registry.md b/docs/en/understand_mmcv/registry.md similarity index 74% rename from docs/understand_mmcv/registry.md rename to docs/en/understand_mmcv/registry.md index 2cf1081..824e029 100644 --- a/docs/understand_mmcv/registry.md +++ b/docs/en/understand_mmcv/registry.md @@ -3,11 +3,15 @@ MMCV implements [registry](https://github.com/open-mmlab/mmcv/blob/master/mmcv/utils/registry.py) to manage different modules that share similar functionalities, e.g., backbones, head, and necks, in detectors. Most projects in OpenMMLab use registry to manage modules of datasets and models, such as [MMDetection](https://github.com/open-mmlab/mmdetection), [MMDetection3D](https://github.com/open-mmlab/mmdetection3d), [MMClassification](https://github.com/open-mmlab/mmclassification), [MMEditing](https://github.com/open-mmlab/mmediting), etc. +```{note} +In v1.5.1 and later, the Registry supports registering functions and calling them. +``` + ### What is registry -In MMCV, registry can be regarded as a mapping that maps a class to a string. -These classes contained by a single registry usually have similar APIs but implement different algorithms or support different datasets. -With the registry, users can find and instantiate the class through its corresponding string, and use the instantiated module as they want. +In MMCV, registry can be regarded as a mapping that maps a class or function to a string. +These classes or functions contained by a single registry usually have similar APIs but implement different algorithms or support different datasets. +With the registry, users can find the class or function through its corresponding string, and instantiate the corresponding module or call the function to obtain the result according to needs. One typical example is the config systems in most OpenMMLab projects, which use the registry to create hooks, runners, models, and datasets, through configs. The API reference could be found [here](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.Registry). @@ -17,7 +21,7 @@ To manage your modules in the codebase by `Registry`, there are three steps as b 2. Create a registry. 3. Use this registry to manage the modules. -`build_func` argument of `Registry` is to customize how to instantiate the class instance, the default one is `build_from_cfg` implemented [here](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.build_from_cfg). +`build_func` argument of `Registry` is to customize how to instantiate the class instance or how to call the function to obtain the result, the default one is `build_from_cfg` implemented [here](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.build_from_cfg). ### A Simple Example @@ -31,10 +35,10 @@ In the package, we first create a file to implement builders, named `converters/ ```python from mmcv.utils import Registry # create a registry for converters -CONVERTERS = Registry('converter') +CONVERTERS = Registry('converters') ``` -Then we can implement different converters in the package. For example, implement `Converter1` in `converters/converter1.py` +Then we can implement different converters that is class or function in the package. For example, implement `Converter1` in `converters/converter1.py`, and `converter2` in `converters/converter2.py`. ```python @@ -48,18 +52,38 @@ class Converter1(object): self.b = b ``` +```python +# converter2.py +from .builder import CONVERTERS +from .converter1 import Converter1 + +# 使用注册器管理模块 +@CONVERTERS.register_module() +def converter2(a, b) + return Converter1(a, b) +``` + The key step to use registry for managing the modules is to register the implemented module into the registry `CONVERTERS` through -`@CONVERTERS.register_module()` when you are creating the module. By this way, a mapping between a string and the class is built and maintained by `CONVERTERS` as below +`@CONVERTERS.register_module()` when you are creating the module. By this way, a mapping between a string and the class (function) is built and maintained by `CONVERTERS` as below ```python 'Converter1' -> +'converter2' -> +``` + +```{note} +The registry mechanism will be triggered only when the file where the module is located is imported. +So you need to import that file somewhere. More details can be found at https://github.com/open-mmlab/mmdetection/issues/5974. ``` If the module is successfully registered, you can use this converter through configs as ```python -converter_cfg = dict(type='Converter1', a=a_value, b=b_value) -converter = CONVERTERS.build(converter_cfg) +converter1_cfg = dict(type='Converter1', a=a_value, b=b_value) +converter2_cfg = dict(type='converter2', a=a_value, b=b_value) +converter1 = CONVERTERS.build(converter1_cfg) +# returns the calling result +result = CONVERTERS.build(converter2_cfg) ``` ### Customize Build Function @@ -88,7 +112,7 @@ CONVERTERS = Registry('converter', build_func=build_converter) ```{note} In this example, we demonstrate how to use the `build_func` argument to customize the way to build a class instance. The functionality is similar to the default `build_from_cfg`. In most cases, default one would be sufficient. -`build_model_from_cfg` is also implemented to build PyTorch module in `nn.Sequentail`, you may directly use them instead of implementing by yourself. +`build_model_from_cfg` is also implemented to build PyTorch module in `nn.Sequential`, you may directly use them instead of implementing by yourself. ``` ### Hierarchy Registry diff --git a/docs/understand_mmcv/runner.md b/docs/en/understand_mmcv/runner.md similarity index 88% rename from docs/understand_mmcv/runner.md rename to docs/en/understand_mmcv/runner.md index 2e6e386..eeeb859 100644 --- a/docs/understand_mmcv/runner.md +++ b/docs/en/understand_mmcv/runner.md @@ -8,7 +8,7 @@ The runner class is designed to manage the training. It eases the training proce ### EpochBasedRunner -As its name indicates, workflow in `EpochBasedRunner` should be set based on epochs. For example, [('train', 2), ('val', 1)] means running 2 epochs for training and 1 epoch for validation, iteratively. And each epoch may contain multiple iterations. Currently, MMDetection uses `EpochBasedRunner` by default. +As its name indicates, workflow in `EpochBasedRunner` should be set based on epochs. For example, \[('train', 2), ('val', 1)\] means running 2 epochs for training and 1 epoch for validation, iteratively. And each epoch may contain multiple iterations. Currently, MMDetection uses `EpochBasedRunner` by default. Let's take a look at its core logic: @@ -44,7 +44,7 @@ def train(self, data_loader, **kwargs): ### IterBasedRunner -Different from `EpochBasedRunner`, workflow in `IterBasedRunner` should be set based on iterations. For example, [('train', 2), ('val', 1)] means running 2 iters for training and 1 iter for validation, iteratively. Currently, MMSegmentation uses `IterBasedRunner` by default. +Different from `EpochBasedRunner`, workflow in `IterBasedRunner` should be set based on iterations. For example, \[('train', 2), ('val', 1)\] means running 2 iters for training and 1 iter for validation, iteratively. Currently, MMSegmentation uses `IterBasedRunner` by default. Let's take a look at its core logic: @@ -156,8 +156,8 @@ runner.run(data_loaders, cfg.workflow) Let's take `EpochBasedRunner` for example and go a little bit into details about setting workflow: -- Say we only want to put train in the workflow, then we can set: workflow = [('train', 1)]. The runner will only execute train iteratively in this case. -- Say we want to put both train and val in the workflow, then we can set: workflow = [('train', 3), ('val',1)]. The runner will first execute train for 3 epochs and then switch to val mode and execute val for 1 epoch. The workflow will be repeated until the current epoch hit the max_epochs. -- Workflow is highly flexible. Therefore, you can set workflow = [('val', 1), ('train',1)] if you would like the runner to validate first and train after. +- Say we only want to put train in the workflow, then we can set: workflow = \[('train', 1)\]. The runner will only execute train iteratively in this case. +- Say we want to put both train and val in the workflow, then we can set: workflow = \[('train', 3), ('val',1)\]. The runner will first execute train for 3 epochs and then switch to val mode and execute val for 1 epoch. The workflow will be repeated until the current epoch hit the max_epochs. +- Workflow is highly flexible. Therefore, you can set workflow = \[('val', 1), ('train',1)\] if you would like the runner to validate first and train after. The code we demonstrated above is already in `train.py` in MM repositories. Simply modify the corresponding keys in the configuration files and the script will execute the expected workflow automatically. diff --git a/docs/understand_mmcv/utils.md b/docs/en/understand_mmcv/utils.md similarity index 100% rename from docs/understand_mmcv/utils.md rename to docs/en/understand_mmcv/utils.md diff --git a/docs/understand_mmcv/visualization.md b/docs/en/understand_mmcv/visualization.md similarity index 100% rename from docs/understand_mmcv/visualization.md rename to docs/en/understand_mmcv/visualization.md diff --git a/docs/faq.md b/docs/faq.md deleted file mode 100644 index ab0dd13..0000000 --- a/docs/faq.md +++ /dev/null @@ -1,42 +0,0 @@ -## Frequently Asked Questions - -We list some common troubles faced by many users and their corresponding solutions here. -Feel free to enrich the list if you find any frequent issues and have ways to help others to solve them. - -- Compatibility issue between MMCV and MMDetection; "ConvWS is already registered in conv layer" - - Please install the correct version of MMCV for the version of your MMDetection following the instruction above. - -- "No module named 'mmcv.ops'"; "No module named 'mmcv._ext'". - - 1. Uninstall existing mmcv in the environment using `pip uninstall mmcv`. - 2. Install mmcv-full following the instruction above. - -- "invalid device function" or "no kernel image is available for execution". - - 1. Check the CUDA compute capability of you GPU. - 2. Run `python mmdet/utils/collect_env.py` to check whether PyTorch, torchvision, - and MMCV are built for the correct GPU architecture. - You may need to set `TORCH_CUDA_ARCH_LIST` to reinstall MMCV. - The compatibility issue could happen when using old GPUS, e.g., Tesla K80 (3.7) on colab. - 3. Check whether the running environment is the same as that when mmcv/mmdet is compiled. - For example, you may compile mmcv using CUDA 10.0 bug run it on CUDA9.0 environments. - -- "undefined symbol" or "cannot open xxx.so". - - 1. If those symbols are CUDA/C++ symbols (e.g., libcudart.so or GLIBCXX), check - whether the CUDA/GCC runtimes are the same as those used for compiling mmcv. - 2. If those symbols are Pytorch symbols (e.g., symbols containing caffe, aten, and TH), check whether - the Pytorch version is the same as that used for compiling mmcv. - 3. Run `python mmdet/utils/collect_env.py` to check whether PyTorch, torchvision, - and MMCV are built by and running on the same environment. - -- "RuntimeError: CUDA error: invalid configuration argument". - - This error may be due to your poor GPU. Try to decrease the value of [THREADS_PER_BLOCK](https://github.com/open-mmlab/mmcv/blob/cac22f8cf5a904477e3b5461b1cc36856c2793da/mmcv/ops/csrc/common_cuda_helper.hpp#L10) - and recompile mmcv. - -- "RuntimeError: nms is not compiled with GPU support". - - This error is because your CUDA environment is not installed correctly. - You may try to re-install your CUDA environment and then delete the build/ folder before re-compile mmcv. diff --git a/docs/understand_mmcv/cnn.md b/docs/understand_mmcv/cnn.md deleted file mode 100644 index 749cb95..0000000 --- a/docs/understand_mmcv/cnn.md +++ /dev/null @@ -1,538 +0,0 @@ -## CNN - -We provide some building bricks for CNNs, including layer building, module bundles and weight initialization. - -### Layer building - -We may need to try different layers of the same type when running experiments, -but do not want to modify the code from time to time. -Here we provide some layer building methods to construct layers from a dict, -which can be written in configs or specified via command line arguments. - -#### Usage - -A simplest example is - -```python -cfg = dict(type='Conv3d') -layer = build_conv_layer(cfg, in_channels=3, out_channels=8, kernel_size=3) -``` - -- `build_conv_layer`: Supported types are Conv1d, Conv2d, Conv3d, Conv (alias for Conv2d). -- `build_norm_layer`: Supported types are BN1d, BN2d, BN3d, BN (alias for BN2d), SyncBN, GN, LN, IN1d, IN2d, IN3d, IN (alias for IN2d). -- `build_activation_layer`: Supported types are ReLU, LeakyReLU, PReLU, RReLU, ReLU6, ELU, Sigmoid, Tanh, GELU. -- `build_upsample_layer`: Supported types are nearest, bilinear, deconv, pixel_shuffle. -- `build_padding_layer`: Supported types are zero, reflect, replicate. - -#### Extension - -We also allow extending the building methods with custom layers and operators. - -1. Write and register your own module. - - ```python - from mmcv.cnn import UPSAMPLE_LAYERS - - @UPSAMPLE_LAYERS.register_module() - class MyUpsample: - - def __init__(self, scale_factor): - pass - - def forward(self, x): - pass - ``` - -2. Import `MyUpsample` somewhere (e.g., in `__init__.py`) and then use it. - - ```python - cfg = dict(type='MyUpsample', scale_factor=2) - layer = build_upsample_layer(cfg) - ``` - -### Module bundles - -We also provide common module bundles to facilitate the network construction. -`ConvModule` is a bundle of convolution, normalization and activation layers, -please refer to the [api](api.html#mmcv.cnn.ConvModule) for details. - -```python -# conv + bn + relu -conv = ConvModule(3, 8, 2, norm_cfg=dict(type='BN')) -# conv + gn + relu -conv = ConvModule(3, 8, 2, norm_cfg=dict(type='GN', num_groups=2)) -# conv + relu -conv = ConvModule(3, 8, 2) -# conv -conv = ConvModule(3, 8, 2, act_cfg=None) -# conv + leaky relu -conv = ConvModule(3, 8, 3, padding=1, act_cfg=dict(type='LeakyReLU')) -# bn + conv + relu -conv = ConvModule( - 3, 8, 2, norm_cfg=dict(type='BN'), order=('norm', 'conv', 'act')) -``` - -### Weight initialization - -> Implementation details are available at [mmcv/cnn/utils/weight_init.py](../../mmcv/cnn/utils/weight_init.py) - -During training, a proper initialization strategy is beneficial to speed up the -training or obtain a higher performance. In MMCV, we provide some commonly used -methods for initializing modules like `nn.Conv2d`. Of course, we also provide -high-level APIs for initializing models containing one or more -modules. - -#### Initialization functions - -Initialize a `nn.Module` such as `nn.Conv2d`, `nn.Linear` in a functional way. - -We provide the following initialization methods. - -- constant_init - - Initialize module parameters with constant values. - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import constant_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # constant_init(module, val, bias=0) - >>> constant_init(conv1, 1, 0) - >>> conv1.weight - ``` - -- xavier_init - - Initialize module parameters with values according to the method - described in [Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import xavier_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # xavier_init(module, gain=1, bias=0, distribution='normal') - >>> xavier_init(conv1, distribution='normal') - ``` - -- normal_init - - Initialize module parameters with the values drawn from a normal distribution. - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import normal_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # normal_init(module, mean=0, std=1, bias=0) - >>> normal_init(conv1, std=0.01, bias=0) - ``` - -- uniform_init - - Initialize module parameters with values drawn from a uniform distribution. - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import uniform_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # uniform_init(module, a=0, b=1, bias=0) - >>> uniform_init(conv1, a=0, b=1) - ``` - -- kaiming_init - - Initialize module parameters with the values according to the method - described in [Delving deep into rectifiers: Surpassing human-level - performance on ImageNet classification - He, K. et al. (2015)](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf) - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import kaiming_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # kaiming_init(module, a=0, mode='fan_out', nonlinearity='relu', bias=0, distribution='normal') - >>> kaiming_init(conv1) - ``` - -- caffe2_xavier_init - - The xavier initialization is implemented in caffe2, which corresponds to `kaiming_uniform_` in PyTorch. - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import caffe2_xavier_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # caffe2_xavier_init(module, bias=0) - >>> caffe2_xavier_init(conv1) - ``` - -- bias_init_with_prob - - Initialize conv/fc bias value according to a given probability, as proposed in [Focal Loss for Dense Object Detection](https://arxiv.org/pdf/1708.02002.pdf). - - ```python - >>> from mmcv.cnn import bias_init_with_prob - >>> # bias_init_with_prob is proposed in Focal Loss - >>> bias = bias_init_with_prob(0.01) - >>> bias - -4.59511985013459 - ``` - -#### Initializers and configs - -On the basis of the initialization methods, we define the corresponding initialization classes and register them to `INITIALIZERS`, so we can -use the configuration to initialize the model. - -We provide the following initialization classes. - -- ConstantInit -- XavierInit -- NormalInit -- UniformInit -- KaimingInit -- Caffe2XavierInit -- PretrainedInit - -Let us introduce the usage of `initialize` in detail. - -1. Initialize model by `layer` key - - If we only define `layer`, it just initialize the layer in `layer` key. - - NOTE: Value of `layer` key is the class name with attributes weights and bias of Pytorch, so `MultiheadAttention layer` is not supported. - -- Define `layer` key for initializing module with same configuration. - - ```python - import torch.nn as nn - from mmcv.cnn import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Linear(1, 2) - - model = FooNet() - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d', 'Linear'], val=1) - # initialize whole module with same configuration - initialize(model, init_cfg) - # model.feat.weight - # Parameter containing: - # tensor([[[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]]], requires_grad=True) - ``` - -- Define `layer` key for initializing layer with different configurations. - - ```python - import torch.nn as nn - from mmcv.cnn.utils import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Linear(1,2) - - model = FooNet() - init_cfg = [dict(type='Constant', layer='Conv1d', val=1), - dict(type='Constant', layer='Conv2d', val=2), - dict(type='Constant', layer='Linear', val=3)] - # nn.Conv1d will be initialized with dict(type='Constant', val=1) - # nn.Conv2d will be initialized with dict(type='Constant', val=2) - # nn.Linear will be initialized with dict(type='Constant', val=3) - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - ``` - -2. Initialize model by `override` key - -- When initializing some specific part with its attribute name, we can use `override` key, and the value in `override` will ignore the value in init_cfg. - - ```python - import torch.nn as nn - from mmcv.cnn import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Sequential(nn.Conv1d(3, 1, 3), nn.Linear(1,2)) - - # if we would like to initialize model's weights as 1 and bias as 2 - # but weight in `cls` as 3 and bias 4, we can use override key - model = FooNet() - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, - override=dict(type='Constant', name='reg', val=3, bias=4)) - # self.feat and self.cls will be initialized with dict(type='Constant', val=1, bias=2) - # The module called 'reg' will be initialized with dict(type='Constant', val=3, bias=4) - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[3., 3., 3.], - # [3., 3., 3.], - # [3., 3., 3.]], - # ..., - # [[3., 3., 3.], - # [3., 3., 3.], - # [3., 3., 3.]]]], requires_grad=True) - ``` - -- If `layer` is None in init_cfg, only sub-module with the name in override will be initialized, and type and other args in override can be omitted. - - ```python - model = FooNet() - init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) - # self.feat and self.cls will be initialized by Pytorch - # The module called 'reg' will be initialized with dict(type='Constant', val=1, bias=2) - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]], - # ..., - # [[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]]]], requires_grad=True) - ``` - -- If we don't define `layer` key or `override` key, it will not initialize anything. - -- Invalid usage - - ```python - # It is invalid that override don't have name key - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], - val=1, bias=2, - override=dict(type='Constant', val=3, bias=4)) - - # It is also invalid that override has name and other args except type - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], - val=1, bias=2, - override=dict(name='reg', val=3, bias=4)) - ``` - -3. Initialize model with the pretrained model - - ```python - import torch.nn as nn - import torchvision.models as models - from mmcv.cnn import initialize - - # initialize model with pretrained model - model = models.resnet50() - # model.conv1.weight - # Parameter containing: - # tensor([[[[-6.7435e-03, -2.3531e-02, -9.0143e-03, ..., -2.1245e-03, - # -1.8077e-03, 3.0338e-03], - # [-1.2603e-02, -2.7831e-02, 2.3187e-02, ..., -1.5793e-02, - # 1.1655e-02, 4.5889e-03], - # [-3.7916e-02, 1.2014e-02, 1.3815e-02, ..., -4.2651e-03, - # 1.7314e-02, -9.9998e-03], - # ..., - - init_cfg = dict(type='Pretrained', - checkpoint='torchvision://resnet50') - initialize(model, init_cfg) - # model.conv1.weight - # Parameter containing: - # tensor([[[[ 1.3335e-02, 1.4664e-02, -1.5351e-02, ..., -4.0896e-02, - # -4.3034e-02, -7.0755e-02], - # [ 4.1205e-03, 5.8477e-03, 1.4948e-02, ..., 2.2060e-03, - # -2.0912e-02, -3.8517e-02], - # [ 2.2331e-02, 2.3595e-02, 1.6120e-02, ..., 1.0281e-01, - # 6.2641e-02, 5.1977e-02], - # ..., - - # initialize weights of a sub-module with the specific part of a pretrained model by using 'prefix' - model = models.resnet50() - url = 'http://download.openmmlab.com/mmdetection/v2.0/retinanet/'\ - 'retinanet_r50_fpn_1x_coco/'\ - 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth' - init_cfg = dict(type='Pretrained', - checkpoint=url, prefix='backbone.') - initialize(model, init_cfg) - ``` - -4. Initialize model inherited from BaseModule, Sequential, ModuleList - - `BaseModule` is inherited from `torch.nn.Module`, and the only different between them is that `BaseModule` implements `init_weight`. - - `Sequential` is inherited from `BaseModule` and `torch.nn.Sequential`. - - `ModuleList` is inherited from `BaseModule` and `torch.nn.ModuleList`. - - `````python - import torch.nn as nn - from mmcv.runner import BaseModule, Sequential, ModuleList - - class FooConv1d(BaseModule): - - def __init__(self, init_cfg=None): - super().__init__(init_cfg) - self.conv1d = nn.Conv1d(4, 1, 4) - - def forward(self, x): - return self.conv1d(x) - - class FooConv2d(BaseModule): - - def __init__(self, init_cfg=None): - super().__init__(init_cfg) - self.conv2d = nn.Conv2d(3, 1, 3) - - def forward(self, x): - return self.conv2d(x) - - # BaseModule - init_cfg = dict(type='Constant', layer='Conv1d', val=0., bias=1.) - model = FooConv1d(init_cfg) - model.init_weights() - # model.conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - - # Sequential - init_cfg1 = dict(type='Constant', layer='Conv1d', val=0., bias=1.) - init_cfg2 = dict(type='Constant', layer='Conv2d', val=2., bias=3.) - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - seq_model = Sequential(model1, model2) - seq_model.init_weights() - # seq_model[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # seq_model[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # inner init_cfg has higher priority - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) - seq_model = Sequential(model1, model2, init_cfg=init_cfg) - seq_model.init_weights() - # seq_model[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # seq_model[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # ModuleList - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - modellist = ModuleList([model1, model2]) - modellist.init_weights() - # modellist[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # modellist[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # inner init_cfg has higher priority - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) - modellist = ModuleList([model1, model2], init_cfg=init_cfg) - modellist.init_weights() - # modellist[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # modellist[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - ````` - -### Model Zoo - -Besides torchvision pre-trained models, we also provide pre-trained models of following CNN: - -- VGG Caffe -- ResNet Caffe -- ResNeXt -- ResNet with Group Normalization -- ResNet with Group Normalization and Weight Standardization -- HRNetV2 -- Res2Net -- RegNet - -#### Model URLs in JSON - -The model zoo links in MMCV are managed by JSON files. -The json file consists of key-value pair of model name and its url or path. -An example json file could be like: - -```json -{ - "model_a": "https://example.com/models/model_a_9e5bac.pth", - "model_b": "pretrain/model_b_ab3ef2c.pth" -} -``` - -The default links of the pre-trained models hosted on OpenMMLab AWS could be found [here](https://github.com/open-mmlab/mmcv/blob/master/mmcv/model_zoo/open_mmlab.json). - -You may override default links by putting `open-mmlab.json` under `MMCV_HOME`. If `MMCV_HOME` is not find in the environment, `~/.cache/mmcv` will be used by default. You may `export MMCV_HOME=/your/path` to use your own path. - -The external json files will be merged into default one. If the same key presents in both external json and default json, the external one will be used. - -#### Load Checkpoint - -The following types are supported for `filename` argument of `mmcv.load_checkpoint()`. - -- filepath: The filepath of the checkpoint. -- `http://xxx` and `https://xxx`: The link to download the checkpoint. The `SHA256` postfix should be contained in the filename. -- `torchvision://xxx`: The model links in `torchvision.models`.Please refer to [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) for details. -- `open-mmlab://xxx`: The model links or filepath provided in default and additional json files. diff --git a/docs/understand_mmcv/ops.md b/docs/understand_mmcv/ops.md deleted file mode 100644 index 2729e44..0000000 --- a/docs/understand_mmcv/ops.md +++ /dev/null @@ -1,37 +0,0 @@ -## CUDA ops - -We implement common CUDA ops used in detection, segmentation, etc. - -- AssignScoreWithK -- BallQuery -- BBoxOverlaps -- CARAFE -- CrissCrossAttention -- ContextBlock -- CornerPool -- Deformable Convolution v1/v2 -- Deformable RoIPool -- DynamicScatter -- GatherPoints -- FurthestPointSample -- FurthestPointSampleWithDist -- GeneralizedAttention -- GroupPoints -- KNN -- MaskedConv -- NMS -- PSAMask -- RoIPointPool3d -- RoIPool -- RoIAlign -- RoIAwarePool3d -- SimpleRoIAlign -- SigmoidFocalLoss -- SoftmaxFocalLoss -- SoftNMS -- Synchronized BatchNorm -- Voxelization -- ThreeInterpolate -- ThreeNN -- Weight standardization -- Correlation diff --git a/docs_zh_CN/Makefile b/docs/zh_cn/Makefile similarity index 100% rename from docs_zh_CN/Makefile rename to docs/zh_cn/Makefile diff --git a/docs_zh_CN/_static/css/readthedocs.css b/docs/zh_cn/_static/css/readthedocs.css similarity index 100% rename from docs_zh_CN/_static/css/readthedocs.css rename to docs/zh_cn/_static/css/readthedocs.css diff --git a/docs_zh_CN/_static/image/mmcv-logo.png b/docs/zh_cn/_static/image/mmcv-logo.png similarity index 100% rename from docs_zh_CN/_static/image/mmcv-logo.png rename to docs/zh_cn/_static/image/mmcv-logo.png diff --git a/docs_zh_CN/api.rst b/docs/zh_cn/api.rst similarity index 90% rename from docs_zh_CN/api.rst rename to docs/zh_cn/api.rst index 8ca9118..5d3e623 100644 --- a/docs_zh_CN/api.rst +++ b/docs/zh_cn/api.rst @@ -38,6 +38,11 @@ runner .. automodule:: mmcv.runner :members: +engine +------ +.. automodule:: mmcv.engine + :members: + ops ------ .. automodule:: mmcv.ops diff --git a/docs_zh_CN/community/contributing.md b/docs/zh_cn/community/contributing.md similarity index 68% rename from docs_zh_CN/community/contributing.md rename to docs/zh_cn/community/contributing.md index 30bac87..b7bc1d2 100644 --- a/docs_zh_CN/community/contributing.md +++ b/docs/zh_cn/community/contributing.md @@ -7,7 +7,9 @@ - 添加新功能和新组件 ### 工作流 + | 详细工作流见 [拉取请求](pr.md) + 1. 复刻并拉取最新的 OpenMMLab 算法库 2. 创建新的分支(不建议使用主分支提拉取请求) 3. 提交你的修改 @@ -16,16 +18,18 @@ ```{note} 如果你计划添加新功能并且该功能包含比较大的改动,建议先开 issue 讨论 ``` + ### 代码风格 #### Python [PEP8](https://www.python.org/dev/peps/pep-0008/) 作为 OpenMMLab 算法库首选的代码规范,我们使用以下工具检查和格式化代码 -- [flake8](http://flake8.pycqa.org/en/latest/): Python 官方发布的代码规范检查工具,是多个检查工具的封装 -- [yapf](https://github.com/google/yapf): Google 发布的代码规范检查工具 +- [flake8](https://github.com/PyCQA/flake8): Python 官方发布的代码规范检查工具,是多个检查工具的封装 - [isort](https://github.com/timothycrosley/isort): 自动调整模块导入顺序的工具 -- [markdownlint](https://github.com/markdownlint/markdownlint): 检查 markdown 文件的工具 +- [yapf](https://github.com/google/yapf): Google 发布的代码规范检查工具 +- [codespell](https://github.com/codespell-project/codespell): 检查单词拼写是否有误 +- [mdformat](https://github.com/executablebooks/mdformat): 检查 markdown 文件的工具 - [docformatter](https://github.com/myint/docformatter): 格式化 docstring 的工具 yapf 和 isort 的配置可以在 [setup.cfg](./setup.cfg) 找到 @@ -46,23 +50,7 @@ pip install -U pre-commit pre-commit install ``` -如果安装 markdownlint 遇到了问题,可以尝试使用以下的步骤安装 ruby - -```shell -# install rvm -curl -L https://get.rvm.io | bash -s -- --autolibs=read-fail -[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" -rvm autolibs disable - -# install ruby -rvm install 2.7.1 -``` - -或者参考 [这个代码库](https://github.com/innerlee/setup) 和 [`zzruby.sh`](https://github.com/innerlee/setup/blob/master/zzruby.sh)。 - -至此,每一次 commit 修改都会触发 pre-commit 检查代码格式。 - ->提交拉取请求前,请确保你的代码符合 yapf 的格式 +> 提交拉取请求前,请确保你的代码符合 yapf 的格式 #### C++ and CUDA diff --git a/docs/zh_cn/community/pr.md b/docs/zh_cn/community/pr.md new file mode 100644 index 0000000..720f389 --- /dev/null +++ b/docs/zh_cn/community/pr.md @@ -0,0 +1,114 @@ +## 拉取请求 + +### 什么是拉取请求? + +`拉取请求` (Pull Request), [GitHub 官方文档](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)定义如下。 + +``` +拉取请求是一种通知机制。你修改了他人的代码,将你的修改通知原来作者,希望他合并你的修改。 +``` + +### 基本的工作流: + +1. 获取最新的代码库 +2. 从主分支创建最新的分支进行开发 +3. 提交修改 +4. 推送你的修改并创建一个 `拉取请求` +5. 讨论、审核代码 +6. 将开发分支合并到主分支 + +### 具体步骤 + +#### 1. 获取最新的代码库 + +- 当你第一次提 PR 时 + + 复刻 OpenMMLab 原代码库,点击 GitHub 页面右上角的 **Fork** 按钮即可 + ![avatar](../../en/_static/community/1.png) + + 克隆复刻的代码库到本地 + + ```bash + git clone git@github.com:XXX/mmcv.git + ``` + + 添加原代码库为上游代码库 + + ```bash + git remote add upstream git@github.com:open-mmlab/mmcv + ``` + +- 从第二个 PR 起 + + 检出本地代码库的主分支,然后从最新的原代码库的主分支拉取更新 + + ```bash + git checkout master + git pull upstream master + ``` + +#### 2. 从主分支创建一个新的开发分支 + +```bash +git checkout -b branchname +``` + +```{tip} +为了保证提交历史清晰可读,我们强烈推荐您先检出主分支 (master),再创建新的分支。 +``` + +#### 3. 提交你的修改 + +```bash +# coding +git add [files] +git commit -m 'messages' +``` + +#### 4. 推送你的修改到复刻的代码库,并创建一个`拉取请求` + +- 推送当前分支到远端复刻的代码库 + + ```bash + git push origin branchname + ``` + +- 创建一个`拉取请求` + ![avatar](../../en/_static/community/2.png) + +- 修改`拉取请求`信息模板,描述修改原因和修改内容。还可以在 PR 描述中,手动关联到相关的`议题` (issue),(更多细节,请参考[官方文档](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue))。 + +#### 5. 讨论并评审你的代码 + +- 创建`拉取请求`时,可以关联给相关人员进行评审 + ![avatar](../../en/_static/community/3.png) + +- 根据评审人员的意见修改代码,并推送修改 + +#### 6. `拉取请求`合并之后删除该分支 + +```bash +git branch -d branchname # delete local branch +git push origin --delete branchname # delete remote branch +``` + +### PR 规范 + +1. 使用 [pre-commit hook](https://pre-commit.com),尽量减少代码风格相关问题 + +2. 一个 PR 对应一个短期分支 + +3. 粒度要细,一个PR只做一件事情,避免超大的PR + + - Bad:实现 Faster R-CNN + - Acceptable:给 Faster R-CNN 添加一个 box head + - Good:给 box head 增加一个参数来支持自定义的 conv 层数 + +4. 每次 Commit 时需要提供清晰且有意义 commit 信息 + +5. 提供清晰且有意义的`拉取请求`描述 + + - 标题写明白任务名称,一般格式:\[Prefix\] Short description of the pull request (Suffix) + - prefix: 新增功能 \[Feature\], 修 bug \[Fix\], 文档相关 \[Docs\], 开发中 \[WIP\] (暂时不会被review) + - 描述里介绍`拉取请求`的主要修改内容,结果,以及对其他部分的影响, 参考`拉取请求`模板 + - 关联相关的`议题` (issue) 和其他`拉取请求` diff --git a/docs_zh_CN/compatibility.md b/docs/zh_cn/compatibility.md similarity index 100% rename from docs_zh_CN/compatibility.md rename to docs/zh_cn/compatibility.md diff --git a/docs/conf.py b/docs/zh_cn/conf.py similarity index 62% rename from docs/conf.py rename to docs/zh_cn/conf.py index bea4706..2c14491 100644 --- a/docs/conf.py +++ b/docs/zh_cn/conf.py @@ -15,21 +15,19 @@ import os import sys import pytorch_sphinx_theme -from m2r import MdInclude -from recommonmark.transform import AutoStructify from sphinx.builders.html import StandaloneHTMLBuilder -sys.path.insert(0, os.path.abspath('..')) +sys.path.insert(0, os.path.abspath('../..')) -version_file = '../mmcv/version.py' -with open(version_file, 'r') as f: +version_file = '../../mmcv/version.py' +with open(version_file) as f: exec(compile(f.read(), version_file, 'exec')) __version__ = locals()['__version__'] # -- Project information ----------------------------------------------------- project = 'mmcv' -copyright = '2018-2021, OpenMMLab' +copyright = '2018-2022, OpenMMLab' author = 'MMCV Authors' # The short X.Y version @@ -57,6 +55,8 @@ extensions = [ 'sphinx_copybutton', ] # yapf: disable +myst_heading_anchors = 4 + autodoc_mock_imports = ['mmcv._ext', 'mmcv.utils.ext_loader', 'torchvision'] autosectionlabel_prefix_document = True @@ -79,7 +79,7 @@ master_doc = 'index' # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'zh_CN' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. @@ -108,92 +108,9 @@ html_theme_options = { 'name': 'GitHub', 'url': 'https://github.com/open-mmlab/mmcv' }, - { - 'name': - 'Docs', - 'children': [ - { - 'name': 'MMCV', - 'url': 'https://mmcv.readthedocs.io/en/latest/', - }, - { - 'name': 'MIM', - 'url': 'https://openmim.readthedocs.io/en/latest/' - }, - { - 'name': 'MMAction2', - 'url': 'https://mmaction2.readthedocs.io/en/latest/', - }, - { - 'name': 'MMClassification', - 'url': - 'https://mmclassification.readthedocs.io/en/latest/', - }, - { - 'name': 'MMDetection', - 'url': 'https://mmdetection.readthedocs.io/en/latest/', - }, - { - 'name': 'MMDetection3D', - 'url': 'https://mmdetection3d.readthedocs.io/en/latest/', - }, - { - 'name': 'MMEditing', - 'url': 'https://mmediting.readthedocs.io/en/latest/', - }, - { - 'name': 'MMGeneration', - 'url': 'https://mmgeneration.readthedocs.io/en/latest/', - }, - { - 'name': 'MMOCR', - 'url': 'https://mmocr.readthedocs.io/en/latest/', - }, - { - 'name': 'MMPose', - 'url': 'https://mmpose.readthedocs.io/en/latest/', - }, - { - 'name': 'MMSegmentation', - 'url': 'https://mmsegmentation.readthedocs.io/en/latest/', - }, - { - 'name': 'MMTracking', - 'url': 'https://mmtracking.readthedocs.io/en/latest/', - }, - { - 'name': 'MMFlow', - 'url': 'https://mmflow.readthedocs.io/en/latest/', - }, - { - 'name': 'MMFewShot', - 'url': 'https://mmfewshot.readthedocs.io/en/latest/', - }, - ] - }, - { - 'name': - 'OpenMMLab', - 'children': [ - { - 'name': 'Homepage', - 'url': 'https://openmmlab.com/' - }, - { - 'name': 'GitHub', - 'url': 'https://github.com/open-mmlab/' - }, - { - 'name': 'Twitter', - 'url': 'https://twitter.com/OpenMMLab' - }, - { - 'name': 'Zhihu', - 'url': 'https://zhihu.com/people/openmmlab' - }, - ] - }, - ] + ], + # Specify the language of shared menu + 'menu_lang': 'cn', } # Add any paths that contain custom static files (such as style sheets) here, @@ -286,16 +203,3 @@ StandaloneHTMLBuilder.supported_image_types = [ # Ignore >>> when copying code copybutton_prompt_text = r'>>> |\.\.\. ' copybutton_prompt_is_regexp = True - - -def setup(app): - app.add_config_value('no_underscore_emphasis', False, 'env') - app.add_config_value('m2r_parse_relative_links', False, 'env') - app.add_config_value('m2r_anonymous_references', False, 'env') - app.add_config_value('m2r_disable_inline_math', False, 'env') - app.add_directive('mdinclude', MdInclude) - app.add_config_value('recommonmark_config', { - 'auto_toc_tree_section': 'Contents', - 'enable_eval_rst': True, - }, True) - app.add_transform(AutoStructify) diff --git a/docs_zh_CN/deployment/onnx.md b/docs/zh_cn/deployment/onnx.md similarity index 100% rename from docs_zh_CN/deployment/onnx.md rename to docs/zh_cn/deployment/onnx.md diff --git a/docs_zh_CN/deployment/onnxruntime_custom_ops.md b/docs/zh_cn/deployment/onnxruntime_custom_ops.md similarity index 98% rename from docs_zh_CN/deployment/onnxruntime_custom_ops.md rename to docs/zh_cn/deployment/onnxruntime_custom_ops.md index 594aefb..1150f91 100644 --- a/docs_zh_CN/deployment/onnxruntime_custom_ops.md +++ b/docs/zh_cn/deployment/onnxruntime_custom_ops.md @@ -64,7 +64,7 @@ | 类型 | 参数名 | 描述 | | ------- | --------------- | ------------------------------------------------------- | -| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围[0, 1]。默认值为0 | +| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围\[0, 1\]。默认值为0 | | `float` | `sigma` | 高斯方法的超参数 | | `float` | `min_score` | NMS的score阈值 | | `int` | `method` | NMS的计算方式, (0: `naive`, 1: `linear`, 2: `gaussian`) | @@ -137,10 +137,10 @@ #### 模型参数 -| 类型 | 参数名 | 描述 | -| ------- | --------------- | ----------------------------------------------------- | -| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围[0, 1]。默认值为0 | -| `int` | `offset` | 用来计算候选框的宽高(x2 - x1 + offset)。可选值0或1 | +| 类型 | 参数名 | 描述 | +| ------- | --------------- | ------------------------------------------------------- | +| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围\[0, 1\]。默认值为0 | +| `int` | `offset` | 用来计算候选框的宽高(x2 - x1 + offset)。可选值0或1 | #### 输入 diff --git a/docs_zh_CN/deployment/onnxruntime_op.md b/docs/zh_cn/deployment/onnxruntime_op.md similarity index 78% rename from docs_zh_CN/deployment/onnxruntime_op.md rename to docs/zh_cn/deployment/onnxruntime_op.md index 3898aa1..e559930 100644 --- a/docs_zh_CN/deployment/onnxruntime_op.md +++ b/docs/zh_cn/deployment/onnxruntime_op.md @@ -15,16 +15,16 @@ ### MMCV已支持的算子 -| 算子 | CPU | GPU | MMCV版本 | -| :------------------------------------------------------------------------------: | :---: | :---: | :------: | -| [SoftNMS](onnxruntime_custom_ops.md#softnms) | Y | N | 1.2.3 | -| [RoIAlign](onnxruntime_custom_ops.md#roialign) | Y | N | 1.2.5 | -| [NMS](onnxruntime_custom_ops.md#nms) | Y | N | 1.2.7 | -| [grid_sampler](onnxruntime_custom_ops.md#grid_sampler) | Y | N | 1.3.1 | -| [CornerPool](onnxruntime_custom_ops.md#cornerpool) | Y | N | 1.3.4 | -| [cummax](onnxruntime_custom_ops.md#cummax) | Y | N | 1.3.4 | -| [cummin](onnxruntime_custom_ops.md#cummin) | Y | N | 1.3.4 | -| [MMCVModulatedDeformConv2d](onnxruntime_custom_ops.md#mmcvmodulateddeformconv2d) | Y | N | 1.3.12 | +| 算子 | CPU | GPU | MMCV版本 | +| :------------------------------------------------------------------------------: | :-: | :-: | :------: | +| [SoftNMS](onnxruntime_custom_ops.md#softnms) | Y | N | 1.2.3 | +| [RoIAlign](onnxruntime_custom_ops.md#roialign) | Y | N | 1.2.5 | +| [NMS](onnxruntime_custom_ops.md#nms) | Y | N | 1.2.7 | +| [grid_sampler](onnxruntime_custom_ops.md#grid_sampler) | Y | N | 1.3.1 | +| [CornerPool](onnxruntime_custom_ops.md#cornerpool) | Y | N | 1.3.4 | +| [cummax](onnxruntime_custom_ops.md#cummax) | Y | N | 1.3.4 | +| [cummin](onnxruntime_custom_ops.md#cummin) | Y | N | 1.3.4 | +| [MMCVModulatedDeformConv2d](onnxruntime_custom_ops.md#mmcvmodulateddeformconv2d) | Y | N | 1.3.12 | ### 如何编译ONNX Runtime自定义算子? @@ -97,18 +97,20 @@ onnx_results = sess.run(None, {'input' : input_data}) 以`soft_nms`为例: 1. 在ONNX Runtime头文件目录`mmcv/ops/csrc/onnxruntime/`下添加头文件`soft_nms.h` + 2. 在ONNX Runtime源码目录`mmcv/ops/csrc/onnxruntime/cpu/`下添加算子实现`soft_nms.cpp` -3. 在[onnxruntime_register.cpp](../../mmcv/ops/csrc/onnxruntime/cpu/onnxruntime_register.cpp)中注册实现的算子`soft_nms` - ```c++ - #include "soft_nms.h" +3. 在[onnxruntime_register.cpp](../../../mmcv/ops/csrc/onnxruntime/cpu/onnxruntime_register.cpp)中注册实现的算子`soft_nms` + + ```c++ + #include "soft_nms.h" - SoftNmsOp c_SoftNmsOp; + SoftNmsOp c_SoftNmsOp; - if (auto status = ortApi->CustomOpDomain_Add(domain, &c_SoftNmsOp)) { - return status; - } - ``` + if (auto status = ortApi->CustomOpDomain_Add(domain, &c_SoftNmsOp)) { + return status; + } + ``` 4. 在`tests/test_ops/test_onnx.py`添加单元测试, 可以参考[here](../../tests/test_ops/test_onnx.py)。 @@ -118,10 +120,10 @@ onnx_results = sess.run(None, {'input' : input_data}) ### 已知问题 - "RuntimeError: tuple appears in op that does not forward tuples, unsupported kind: `prim::PythonOp`." - 1. 请注意`cummax`和`cummin`算子是在torch >= 1.5.0被添加的。但他们需要在torch version >= 1.7.0才能正确导出。否则会在导出时发生上面的错误。 - 2. 解决方法:升级PyTorch到1.7.0以上版本 + 1. 请注意`cummax`和`cummin`算子是在torch >= 1.5.0被添加的。但他们需要在torch version >= 1.7.0才能正确导出。否则会在导出时发生上面的错误。 + 2. 解决方法:升级PyTorch到1.7.0以上版本 ### 引用 - [How to export Pytorch model with custom op to ONNX and run it in ONNX Runtime](https://github.com/onnx/tutorials/blob/master/PyTorchCustomOperator/README.md) -- [How to add a custom operator/kernel in ONNX Runtime](https://github.com/microsoft/onnxruntime/blob/master/docs/AddingCustomOp.md) +- [How to add a custom operator/kernel in ONNX Runtime](https://onnxruntime.ai/docs/reference/operators/add-custom-op.html) diff --git a/docs_zh_CN/deployment/tensorrt_custom_ops.md b/docs/zh_cn/deployment/tensorrt_custom_ops.md similarity index 95% rename from docs_zh_CN/deployment/tensorrt_custom_ops.md rename to docs/zh_cn/deployment/tensorrt_custom_ops.md index 123f288..d773154 100644 --- a/docs_zh_CN/deployment/tensorrt_custom_ops.md +++ b/docs/zh_cn/deployment/tensorrt_custom_ops.md @@ -100,7 +100,7 @@ #### 描述 -ScatterND接收三个输入,分别为秩为r >= 1的`data`,秩为q >= 1的`indices`以及秩为 q + r - indices.shape[-1] -1 的`update`。输出的计算方式为:首先创建一个`data`的拷贝,然后根据`indces`的值使用`update`对拷贝的`data`进行更新。注意`indices`中不应该存在相同的条目,也就是说对同一个位置进行一次以上的更新是不允许的。 +ScatterND接收三个输入,分别为秩为r >= 1的`data`,秩为q >= 1的`indices`以及秩为 q + r - indices.shape\[-1\] -1 的`update`。输出的计算方式为:首先创建一个`data`的拷贝,然后根据`indces`的值使用`update`对拷贝的`data`进行更新。注意`indices`中不应该存在相同的条目,也就是说对同一个位置进行一次以上的更新是不允许的。 输出的计算方式可以参考如下代码: @@ -147,13 +147,13 @@ ScatterND接收三个输入,分别为秩为r >= 1的`data`,秩为q >= 1的`i #### 模型参数 -| 类型 | 参数名 | 描述 | -| ------- | ---------------------------- | ---------------------------------------------------------------------------------------- | -| `int` | `center_point_box` | 0 - 候选框的格式为[y1, x1, y2, x2], 1-候选框的格式为[x_center, y_center, width, height] | -| `int` | `max_output_boxes_per_class` | 每一类最大的输出检测框个数。默认为0,输出检测框个数等于输入候选框数 | -| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围[0, 1]。默认值为0 | -| `float` | `score_threshold` | 用来判断候选框是否合法的阈值 | -| `int` | `offset` | 检测框长宽计算方式为(x2 - x1 + offset),可选值0或1 | +| 类型 | 参数名 | 描述 | +| ------- | ---------------------------- | -------------------------------------------------------------------------------------------- | +| `int` | `center_point_box` | 0 - 候选框的格式为\[y1, x1, y2, x2\], 1-候选框的格式为\[x_center, y_center, width, height\] | +| `int` | `max_output_boxes_per_class` | 每一类最大的输出检测框个数。默认为0,输出检测框个数等于输入候选框数 | +| `float` | `iou_threshold` | 用来判断候选框重合度的阈值,取值范围\[0, 1\]。默认值为0 | +| `float` | `score_threshold` | 用来判断候选框是否合法的阈值 | +| `int` | `offset` | 检测框长宽计算方式为(x2 - x1 + offset),可选值0或1 | #### 输入 diff --git a/docs_zh_CN/deployment/tensorrt_plugin.md b/docs/zh_cn/deployment/tensorrt_plugin.md similarity index 79% rename from docs_zh_CN/deployment/tensorrt_plugin.md rename to docs/zh_cn/deployment/tensorrt_plugin.md index 0f385b8..0c29f14 100644 --- a/docs_zh_CN/deployment/tensorrt_plugin.md +++ b/docs/zh_cn/deployment/tensorrt_plugin.md @@ -2,18 +2,18 @@ -- [MMCV中的TensorRT自定义算子 (实验性)](#mmcv中的tensorrt自定义算子-实验性) - - [介绍](#介绍) - - [MMCV中的TensorRT插件列表](#mmcv中的tensorrt插件列表) - - [如何编译MMCV中的TensorRT插件](#如何编译mmcv中的tensorrt插件) - - [准备](#准备) - - [在Linux上编译](#在linux上编译) - - [创建TensorRT推理引擎并在python下进行推理](#创建tensorrt推理引擎并在python下进行推理) - - [如何在MMCV中添加新的TensorRT自定义算子](#如何在mmcv中添加新的tensorrt自定义算子) - - [主要流程](#主要流程) - - [注意](#注意) - - [已知问题](#已知问题) - - [引用](#引用) +- [MMCV中的TensorRT自定义算子 (实验性)](#mmcv%E4%B8%AD%E7%9A%84tensorrt%E8%87%AA%E5%AE%9A%E4%B9%89%E7%AE%97%E5%AD%90-%E5%AE%9E%E9%AA%8C%E6%80%A7) + - [介绍](#%E4%BB%8B%E7%BB%8D) + - [MMCV中的TensorRT插件列表](#mmcv%E4%B8%AD%E7%9A%84tensorrt%E6%8F%92%E4%BB%B6%E5%88%97%E8%A1%A8) + - [如何编译MMCV中的TensorRT插件](#%E5%A6%82%E4%BD%95%E7%BC%96%E8%AF%91mmcv%E4%B8%AD%E7%9A%84tensorrt%E6%8F%92%E4%BB%B6) + - [准备](#%E5%87%86%E5%A4%87) + - [在Linux上编译](#%E5%9C%A8linux%E4%B8%8A%E7%BC%96%E8%AF%91) + - [创建TensorRT推理引擎并在python下进行推理](#%E5%88%9B%E5%BB%BAtensorrt%E6%8E%A8%E7%90%86%E5%BC%95%E6%93%8E%E5%B9%B6%E5%9C%A8python%E4%B8%8B%E8%BF%9B%E8%A1%8C%E6%8E%A8%E7%90%86) + - [如何在MMCV中添加新的TensorRT自定义算子](#%E5%A6%82%E4%BD%95%E5%9C%A8mmcv%E4%B8%AD%E6%B7%BB%E5%8A%A0%E6%96%B0%E7%9A%84tensorrt%E8%87%AA%E5%AE%9A%E4%B9%89%E7%AE%97%E5%AD%90) + - [主要流程](#%E4%B8%BB%E8%A6%81%E6%B5%81%E7%A8%8B) + - [注意](#%E6%B3%A8%E6%84%8F) + - [已知问题](#%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98) + - [引用](#%E5%BC%95%E7%94%A8) @@ -75,6 +75,10 @@ pip install $TENSORRT_DIR/graphsurgeon/graphsurgeon-0.4.5-py2.py3-none-any.whl 想了解更多通过tar包安装TensorRT,请访问[Nvidia' website](https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-721/install-guide/index.html#installing-tar). +- 安装 cuDNN + +参考[Nvidia' website](https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar)安装 cuDNN 8。 + #### 在Linux上编译 ```bash @@ -142,21 +146,24 @@ with torch.no_grad(): **以RoIAlign算子插件`roi_align`举例。** 1. 在TensorRT包含目录`mmcv/ops/csrc/tensorrt/`中添加头文件`trt_roi_align.hpp` + 2. 在TensorRT源码目录`mmcv/ops/csrc/tensorrt/plugins/`中添加头文件`trt_roi_align.cpp` + 3. 在TensorRT源码目录`mmcv/ops/csrc/tensorrt/plugins/`中添加cuda kernel文件`trt_roi_align_kernel.cu` + 4. 在[trt_plugin.cpp](https://github.com/open-mmlab/mmcv/blob/master/mmcv/ops/csrc/tensorrt/plugins/trt_plugin.cpp)中注册`roi_align`插件 - ```c++ - #include "trt_plugin.hpp" + ```c++ + #include "trt_plugin.hpp" - #include "trt_roi_align.hpp" + #include "trt_roi_align.hpp" - REGISTER_TENSORRT_PLUGIN(RoIAlignPluginDynamicCreator); + REGISTER_TENSORRT_PLUGIN(RoIAlignPluginDynamicCreator); - extern "C" { - bool initLibMMCVInferPlugins() { return true; } - } // extern "C" - ``` + extern "C" { + bool initLibMMCVInferPlugins() { return true; } + } // extern "C" + ``` 5. 在`tests/test_ops/test_tensorrt.py`中添加单元测试 diff --git a/docs/zh_cn/faq.md b/docs/zh_cn/faq.md new file mode 100644 index 0000000..6cfb100 --- /dev/null +++ b/docs/zh_cn/faq.md @@ -0,0 +1,91 @@ +## 常见问题 + +在这里我们列出了用户经常遇到的问题以及对应的解决方法。如果您遇到了其他常见的问题,并且知道可以帮到大家的解决办法, +欢迎随时丰富这个列表。 + +### 安装问题 + +- KeyError: "xxx: 'yyy is not in the zzz registry'" + + 只有模块所在的文件被导入时,注册机制才会被触发,所以您需要在某处导入该文件,更多详情请查看 [KeyError: "MaskRCNN: 'RefineRoIHead is not in the models registry'"](https://github.com/open-mmlab/mmdetection/issues/5974)。 + +- "No module named 'mmcv.ops'"; "No module named 'mmcv.\_ext'" + + 1. 使用 `pip uninstall mmcv` 卸载您环境中的 mmcv + 2. 参考 [installation instruction](https://mmcv.readthedocs.io/en/latest/get_started/installation.html) 或者 [Build MMCV from source](https://mmcv.readthedocs.io/en/latest/get_started/build.html) 安装 mmcv-full + +- "invalid device function" 或者 "no kernel image is available for execution" + + 1. 检查 GPU 的 CUDA 计算能力 + 2. 运行 `python mmdet/utils/collect_env.py` 来检查 PyTorch、torchvision 和 MMCV 是否是针对正确的 GPU 架构构建的,您可能需要去设置 `TORCH_CUDA_ARCH_LIST` 来重新安装 MMCV。兼容性问题可能会出现在使用旧版的 GPUs,如:colab 上的 Tesla K80 (3.7) + 3. 检查运行环境是否和 mmcv/mmdet 编译时的环境相同。例如,您可能使用 CUDA 10.0 编译 mmcv,但在 CUDA 9.0 的环境中运行它 + +- "undefined symbol" 或者 "cannot open xxx.so" + + 1. 如果符号和 CUDA/C++ 相关(例如:libcudart.so 或者 GLIBCXX),请检查 CUDA/GCC 运行时的版本是否和编译 mmcv 的一致 + 2. 如果符号和 PyTorch 相关(例如:符号包含 caffe、aten 和 TH),请检查 PyTorch 运行时的版本是否和编译 mmcv 的一致 + 3. 运行 `python mmdet/utils/collect_env.py` 以检查 PyTorch、torchvision 和 MMCV 构建和运行的环境是否相同 + +- "RuntimeError: CUDA error: invalid configuration argument" + + 这个错误可能是由于您的 GPU 性能不佳造成的。尝试降低 [THREADS_PER_BLOCK](https://github.com/open-mmlab/mmcv/blob/cac22f8cf5a904477e3b5461b1cc36856c2793da/mmcv/ops/csrc/common_cuda_helper.hpp#L10) + 的值并重新编译 mmcv。 + +- "RuntimeError: nms is not compiled with GPU support" + + 这个错误是由于您的 CUDA 环境没有正确安装。 + 您可以尝试重新安装您的 CUDA 环境,然后删除 mmcv/build 文件夹并重新编译 mmcv。 + +- "Segmentation fault" + + 1. 检查 GCC 的版本,通常是因为 PyTorch 版本与 GCC 版本不匹配 (例如 GCC \< 4.9 ),我们推荐用户使用 GCC 5.4,我们也不推荐使用 GCC 5.5, 因为有反馈 GCC 5.5 会导致 "segmentation fault" 并且切换到 GCC 5.4 就可以解决问题 + 2. 检查是否正确安装 CUDA 版本的 PyTorc。输入以下命令并检查是否返回 True + ```shell + python -c 'import torch; print(torch.cuda.is_available())' + ``` + 3. 如果 `torch` 安装成功,那么检查 MMCV 是否安装成功。输入以下命令,如果没有报错说明 mmcv-full 安装成。 + ```shell + python -c 'import mmcv; import mmcv.ops' + ``` + 4. 如果 MMCV 与 PyTorch 都安装成功了,则可以使用 `ipdb` 设置断点或者使用 `print` 函数,分析是哪一部分的代码导致了 `segmentation fault` + +- "libtorch_cuda_cu.so: cannot open shared object file" + + `mmcv-full` 依赖 `libtorch_cuda_cu.so` 文件,但程序运行时没能找到该文件。我们可以检查该文件是否存在 `~/miniconda3/envs/{environment-name}/lib/python3.7/site-packages/torch/lib` 也可以尝试重装 PyTorch。 + +- "fatal error C1189: #error: -- unsupported Microsoft Visual Studio version!" + + 如果您在 Windows 上编译 mmcv-full 并且 CUDA 的版本是 9.2,您很可能会遇到这个问题 `"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt/host_config.h(133): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!"`,您可以尝试使用低版本的 Microsoft Visual Studio,例如 vs2017。 + +- "error: member "torch::jit::detail::ModulePolicy::all_slots" may not be initialized" + + 如果您在 Windows 上编译 mmcv-full 并且 PyTorch 的版本是 1.5.0,您很可能会遇到这个问题 `- torch/csrc/jit/api/module.h(474): error: member "torch::jit::detail::ModulePolicy::all_slots" may not be initialized`。解决这个问题的方法是将 `torch/csrc/jit/api/module.h` 文件中所有 `static constexpr bool all_slots = false;` 替换为 `static bool all_slots = false;`。更多细节可以查看 [member "torch::jit::detail::AttributePolicy::all_slots" may not be initialized](https://github.com/pytorch/pytorch/issues/39394)。 + +- "error: a member with an in-class initializer must be const" + + 如果您在 Windows 上编译 mmcv-full 并且 PyTorch 的版本是 1.6.0,您很可能会遇到这个问题 `"- torch/include\torch/csrc/jit/api/module.h(483): error: a member with an in-class initializer must be const"`. 解决这个问题的方法是将 `torch/include\torch/csrc/jit/api/module.h` 文件中的所有 `CONSTEXPR_EXCEPT_WIN_CUDA ` 替换为 `const`。更多细节可以查看 [Ninja: build stopped: subcommand failed](https://github.com/open-mmlab/mmcv/issues/575)。 + +- "error: member "torch::jit::ProfileOptionalOp::Kind" may not be initialized" + + 如果您在 Windows 上编译 mmcv-full 并且 PyTorch 的版本是 1.7.0,您很可能会遇到这个问题 `torch/include\torch/csrc/jit/ir/ir.h(1347): error: member "torch::jit::ProfileOptionalOp::Kind" may not be initialized`. 解决这个问题的方法是修改 PyTorch 中的几个文件: + + - 删除 `torch/include\torch/csrc/jit/ir/ir.h` 文件中的 `static constexpr Symbol Kind = ::c10::prim::profile;` 和 `tatic constexpr Symbol Kind = ::c10::prim::profile_optional;` + - 将 `torch\include\pybind11\cast.h` 文件中的 `explicit operator type&() { return *(this->value); }` 替换为 `explicit operator type&() { return *((type*)this->value); }` + - 将 `torch/include\torch/csrc/jit/api/module.h` 文件中的 所有 `CONSTEXPR_EXCEPT_WIN_CUDA` 替换为 `const` + + 更多细节可以查看 [Ensure default extra_compile_args](https://github.com/pytorch/pytorch/pull/45956)。 + +- MMCV 和 MMDetection 的兼容性问题;"ConvWS is already registered in conv layer" + + 请参考 [installation instruction](https://mmdetection.readthedocs.io/en/latest/get_started.html#installation) 为您的 MMDetection 版本安装正确版本的 MMCV。 + +### 使用问题 + +- "RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one" + + 1. 这个错误是因为有些参数没有参与 loss 的计算,可能是代码中存在多个分支,导致有些分支没有参与 loss 的计算。更多细节见 [Expected to have finished reduction in the prior iteration before starting a new one](https://github.com/pytorch/pytorch/issues/55582)。 + 2. 你可以设置 DDP 中的 `find_unused_parameters` 为 `True`,或者手动查找哪些参数没有用到。 + +- "RuntimeError: Trying to backward through the graph a second time" + + 不能同时设置 `GradientCumulativeOptimizerHook` 和 `OptimizerHook`,这会导致 `loss.backward()` 被调用两次,于是程序抛出 `RuntimeError`。我们只需设置其中的一个。更多细节见 [Trying to backward through the graph a second time](https://github.com/open-mmlab/mmcv/issues/1379)。 diff --git a/docs_zh_CN/get_started/build.md b/docs/zh_cn/get_started/build.md similarity index 50% rename from docs_zh_CN/get_started/build.md rename to docs/zh_cn/get_started/build.md index 77fb86e..ec6ebb8 100644 --- a/docs_zh_CN/get_started/build.md +++ b/docs/zh_cn/get_started/build.md @@ -9,6 +9,12 @@ git clone https://github.com/open-mmlab/mmcv.git cd mmcv ``` +建议安装 `ninja` 以加快编译速度 + +```bash +pip install -r requirements/optional.txt +``` + 你可以安装 lite 版本 ```bash @@ -36,6 +42,7 @@ CC=clang CXX=clang++ CFLAGS='-stdlib=libc++' MMCV_WITH_OPS=1 pip install -e . ```{note} 如果你打算使用 `opencv-python-headless` 而不是 `opencv-python`,例如在一个很小的容器环境或者没有图形用户界面的服务器中,你可以先安装 `opencv-python-headless`,这样在安装 mmcv 依赖的过程中会跳过 `opencv-python` ``` + ### 在 Windows 上编译 MMCV 在 Windows 上编译 MMCV 比 Linux 复杂,本节将一步步介绍如何在 Windows 上编译 MMCV。 @@ -63,32 +70,38 @@ CC=clang CXX=clang++ CFLAGS='-stdlib=libc++' MMCV_WITH_OPS=1 pip install -e . 2. 创建一个新的 Conda 环境 - ```shell - conda create --name mmcv python=3.7 # 经测试,3.6, 3.7, 3.8 也能通过 - conda activate mmcv # 确保做任何操作前先激活环境 - ``` + ```shell + conda create --name mmcv python=3.7 # 经测试,3.6, 3.7, 3.8 也能通过 + conda activate mmcv # 确保做任何操作前先激活环境 + ``` 3. 安装 PyTorch 时,可以根据需要安装支持 CUDA 或不支持 CUDA 的版本 - ```shell - # CUDA version - conda install pytorch torchvision cudatoolkit=10.2 -c pytorch - # CPU version - conda install pytorch torchvision cpuonly -c pytorch - ``` + ```shell + # CUDA version + conda install pytorch torchvision cudatoolkit=10.2 -c pytorch + # CPU version + conda install pytorch torchvision cpuonly -c pytorch + ``` 4. 准备 MMCV 源代码 - ```shell - git clone https://github.com/open-mmlab/mmcv.git - cd mmcv - ``` + ```shell + git clone https://github.com/open-mmlab/mmcv.git + cd mmcv + ``` 5. 安装所需 Python 依赖包 - ```shell - pip3 install -r requirements.txt - ``` + ```shell + pip3 install -r requirements/runtime.txt + ``` + +6. 建议安装 `ninja` 以加快编译速度 + + ```bash + pip install -r requirements/optional.txt + ``` #### 编译与安装 MMCV @@ -96,33 +109,33 @@ MMCV 有三种安装的模式: 1. Lite 版本(不包含算子) - 这种方式下,没有算子被编译,这种模式的 mmcv 是原生的 python 包 + 这种方式下,没有算子被编译,这种模式的 mmcv 是原生的 python 包 2. Full 版本(只包含 CPU 算子) - 编译 CPU 算子,但只有 x86 将会被编译,并且编译版本只能在 CPU only 情况下运行 + 编译 CPU 算子,但只有 x86 将会被编译,并且编译版本只能在 CPU only 情况下运行 3. Full 版本(既包含 CPU 算子,又包含 CUDA 算子) - 同时编译 CPU 和 CUDA 算子,`ops` 模块的 x86 与 CUDA 的代码都可以被编译。同时编译的版本可以在 CUDA 上调用 GPU + 同时编译 CPU 和 CUDA 算子,`ops` 模块的 x86 与 CUDA 的代码都可以被编译。同时编译的版本可以在 CUDA 上调用 GPU ##### 通用步骤 1. 设置 MSVC 编译器 - 设置环境变量。添加 `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64` 到 `PATH`,则 `cl.exe` 可以在命令行中运行,如下所示。 + 设置环境变量。添加 `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64` 到 `PATH`,则 `cl.exe` 可以在命令行中运行,如下所示。 - ```none - (base) PS C:\Users\xxx> cl - Microsoft (R) C/C++ Optimizing Compiler Version 19.27.29111 for x64 - Copyright (C) Microsoft Corporation. All rights reserved. + ```none + (base) PS C:\Users\xxx> cl + Microsoft (R) C/C++ Optimizing Compiler Version 19.27.29111 for x64 + Copyright (C) Microsoft Corporation. All rights reserved. - usage: cl [ option... ] filename... [ / link linkoption... ] - ``` + usage: cl [ option... ] filename... [ / link linkoption... ] + ``` - 为了兼容性,我们使用 x86-hosted 以及 x64-targeted 版本,即路径中的 `Hostx86\x64` 。 + 为了兼容性,我们使用 x86-hosted 以及 x64-targeted 版本,即路径中的 `Hostx86\x64` 。 - 因为 PyTorch 将解析 `cl.exe` 的输出以检查其版本,只有 utf-8 将会被识别,你可能需要将系统语言更改为英语。控制面板 -> 地区-> 管理-> 非 Unicode 来进行语言转换。 + 因为 PyTorch 将解析 `cl.exe` 的输出以检查其版本,只有 utf-8 将会被识别,你可能需要将系统语言更改为英语。控制面板 -> 地区-> 管理-> 非 Unicode 来进行语言转换。 ##### 安装方式一:Lite version(不包含算子) @@ -145,20 +158,20 @@ pip list 2. 设置环境变量 - ```shell - $env:MMCV_WITH_OPS = 1 - $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 - ``` + ```shell + $env:MMCV_WITH_OPS = 1 + $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 + ``` 3. 编译安装 - ```shell - conda activate mmcv # 激活环境 - cd mmcv # 改变路径 - python setup.py build_ext # 如果成功, cl 将被启动用于编译算子 - python setup.py develop # 安装 - pip list # 检查是否安装成功 - ``` + ```shell + conda activate mmcv # 激活环境 + cd mmcv # 改变路径 + python setup.py build_ext # 如果成功, cl 将被启动用于编译算子 + python setup.py develop # 安装 + pip list # 检查是否安装成功 + ``` ##### 安装方式三:Full version(既编译 CPU 算子又编译 CUDA 算子) @@ -166,38 +179,38 @@ pip list 2. 设置环境变量 - ```shell - $env:MMCV_WITH_OPS = 1 - $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 - ``` + ```shell + $env:MMCV_WITH_OPS = 1 + $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 + ``` -3. 检查 `CUDA_PATH` 或者 `CUDA_HOME` 环境变量已经存在在 `envs` 之中 +3. 检查 `CUDA_PATH` 或者 `CUDA_HOME` 环境变量已经存在在 `envs` 之中 - ```none - (base) PS C:\Users\WRH> ls env: + ```none + (base) PS C:\Users\WRH> ls env: - Name Value - ---- ----- - CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 - CUDA_PATH_V10_1 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 - CUDA_PATH_V10_2 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 - ``` + Name Value + ---- ----- + CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 + CUDA_PATH_V10_1 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 + CUDA_PATH_V10_2 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2 + ``` - 如果没有,你可以按照下面的步骤设置 + 如果没有,你可以按照下面的步骤设置 - ```shell - $env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2" - # 或者 - $env:CUDA_HOME = $env:CUDA_PATH_V10_2 # CUDA_PATH_V10_2 已经在环境变量中 - ``` + ```shell + $env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2" + # 或者 + $env:CUDA_HOME = $env:CUDA_PATH_V10_2 # CUDA_PATH_V10_2 已经在环境变量中 + ``` 4. 设置 CUDA 的目标架构 - ```shell - $env:TORCH_CUDA_ARCH_LIST="6.1" # 支持 GTX 1080 - # 或者用所有支持的版本,但可能会变得很慢 - $env:TORCH_CUDA_ARCH_LIST="3.5 3.7 5.0 5.2 6.0 6.1 7.0 7.5" - ``` + ```shell + $env:TORCH_CUDA_ARCH_LIST="6.1" # 支持 GTX 1080 + # 或者用所有支持的版本,但可能会变得很慢 + $env:TORCH_CUDA_ARCH_LIST="3.5 3.7 5.0 5.2 6.0 6.1 7.0 7.5" + ``` ```{note} 我们可以在 [here](https://developer.nvidia.com/cuda-gpus) 查看 GPU 的计算能力 @@ -205,15 +218,15 @@ pip list 5. 编译安装 - ```shell - $env:MMCV_WITH_OPS = 1 - $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 - conda activate mmcv # 激活环境 - cd mmcv # 改变路径 - python setup.py build_ext # 如果成功, cl 将被启动用于编译算子 - python setup.py develop # 安装 - pip list # 检查是否安装成功 - ``` + ```shell + $env:MMCV_WITH_OPS = 1 + $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 + conda activate mmcv # 激活环境 + cd mmcv # 改变路径 + python setup.py build_ext # 如果成功, cl 将被启动用于编译算子 + python setup.py develop # 安装 + pip list # 检查是否安装成功 + ``` ```{note} 如果你的 PyTorch 版本是 1.6.0,你可能会遇到一些这个 [issue](https://github.com/pytorch/pytorch/issues/42467) 提到的错误,则可以参考这个 [pull request](https://github.com/pytorch/pytorch/pull/43380/files) 修改 本地环境的 PyTorch 源代码 diff --git a/docs_zh_CN/get_started/installation.md b/docs/zh_cn/get_started/installation.md similarity index 74% rename from docs_zh_CN/get_started/installation.md rename to docs/zh_cn/get_started/installation.md index 20e8cd5..a6a20b0 100644 --- a/docs_zh_CN/get_started/installation.md +++ b/docs/zh_cn/get_started/installation.md @@ -13,17 +13,17 @@ a. 安装完整版 在安装 mmcv-full 之前,请确保 PyTorch 已经成功安装在环境中,可以参考 PyTorch 官方[文档](https://pytorch.org/)。 -我们提供了不同 PyTorch 和 CUDA 版本的 mmcv-full 预编译包,可以大大简化用户安装编译过程。强烈推荐通过预编译包来安装。另外,安装完成后可以运行 [check_installation.py](https://github.com/open-mmlab/mmcv/.dev_scripts/check_installation.py) 脚本检查 mmcv-full 是否安装成功。 +我们提供了 **Linux 和 Windows 平台** PyTorch 和 CUDA 版本组合的 mmcv-full 预编译包,可以大大简化用户安装编译过程。强烈推荐通过预编译包来安装。另外,安装完成后可以运行 [check_installation.py](https://github.com/open-mmlab/mmcv/.dev_scripts/check_installation.py) 脚本检查 mmcv-full 是否安装成功。 i. 安装最新版本 -如下是安装最新版 ``mmcv-full`` 的命令 +如下是安装最新版 `mmcv-full` 的命令 ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -请将链接中的 ``{cu_version}`` 和 ``{torch_version}`` 根据自身需求替换成实际的版本号,例如想安装和 ``CUDA 11.1``、``PyTorch 1.9.0`` 兼容的最新版 ``mmcv-full``,使用如下替换过的命令 +请将链接中的 `{cu_version}` 和 `{torch_version}` 根据自身需求替换成实际的版本号,例如想安装和 `CUDA 11.1`、`PyTorch 1.9.0` 兼容的最新版 `mmcv-full`,使用如下替换过的命令 ```shell pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html @@ -37,18 +37,18 @@ PyTorch 版本是 1.8.1、CUDA 版本是 11.1,你可以使用以下命令安 `pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html` ``` -如果想知道更多 CUDA 和 PyTorch 版本的命令,可以参考下面的表格,将链接中的 ``=={mmcv_version}`` 删去即可。 +如果想知道更多 CUDA 和 PyTorch 版本的命令,可以参考下面的表格,将链接中的 `=={mmcv_version}` 删去即可。 ii. 安装特定的版本 -如下是安装特定版本 ``mmcv-full`` 的命令 +如下是安装特定版本 `mmcv-full` 的命令 ```shell pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html ``` -首先请参考版本发布信息找到想要安装的版本号,将 ``{mmcv_version}`` 替换成该版本号,例如 ``1.3.9``。 -然后将链接中的 ``{cu_version}`` 和 ``{torch_version}`` 根据自身需求替换成实际的版本号,例如想安装和 ``CUDA 11.1``、``PyTorch 1.9.0`` 兼容的 ``mmcv-full`` 1.3.9 版本,使用如下替换过的命令 +首先请参考版本发布信息找到想要安装的版本号,将 `{mmcv_version}` 替换成该版本号,例如 `1.3.9`。 +然后将链接中的 `{cu_version}` 和 `{torch_version}` 根据自身需求替换成实际的版本号,例如想安装和 `CUDA 11.1`、`PyTorch 1.9.0` 兼容的 `mmcv-full` 1.3.9 版本,使用如下替换过的命令 ```shell pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html @@ -60,15 +60,27 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t CUDA - torch 1.10 - torch 1.9 - torch 1.8 - torch 1.7 - torch 1.6 - torch 1.5 + torch 1.11 + torch 1.10 + torch 1.9 + torch 1.8 + torch 1.7 + torch 1.6 + torch 1.5 + + + 11.5 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu115/torch1.11.0/index.html
+ + + + + + 11.3 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
@@ -78,6 +90,7 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t 11.1 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
@@ -90,12 +103,14 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2 +
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
安装
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
@@ -107,6 +122,7 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t 10.1 +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
@@ -117,12 +133,14 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu +
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.11.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
安装
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
@@ -134,7 +152,11 @@ pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/t ```{note} -以上提供的预编译包并不囊括所有的 mmcv-full 版本,我们可以点击对应链接查看支持的版本。例如,点击 [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html),可以看到 `cu102-torch1.8.0` 只提供了 1.3.0 及以上的 mmcv-full 版本。另外,从 `mmcv v1.3.17` 开始,我们不再提供`PyTorch 1.3 & 1.4` 对应的 mmcv-full 预编译包。你可以在 [这](./docs_zh_CN/get_started/previous_versions.md) 找到 `PyTorch 1.3 & 1.4` 对应的预编包。虽然我们不再提供 `PyTorch 1.3 & 1.4` 对应的预编译包,但是我们依然在 CI 中保证对它们的兼容持续到下一年。 +以上提供的预编译包并不囊括所有的 mmcv-full 版本,我们可以点击对应链接查看支持的版本。例如,点击 [cu102-torch1.8.0](https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html),可以看到 `cu102-torch1.8.0` 只提供了 1.3.0 及以上的 mmcv-full 版本。另外,从 `mmcv v1.3.17` 开始,我们不再提供`PyTorch 1.3 & 1.4` 对应的 mmcv-full 预编译包。你可以在 [这](./previous_versions.md) 找到 `PyTorch 1.3 & 1.4` 对应的预编包。虽然我们不再提供 `PyTorch 1.3 & 1.4` 对应的预编译包,但是我们依然在 CI 中保证对它们的兼容持续到下一年。 +``` + +```{note} +mmcv-full 没有提供 Windows 平台 `cu102-torch1.8.0` 和 `cu92-torch*` 的预编译包。 ``` 除了使用预编译包之外,另一种方式是在本地进行编译,直接运行下述命令 diff --git a/docs_zh_CN/get_started/introduction.md b/docs/zh_cn/get_started/introduction.md similarity index 62% rename from docs_zh_CN/get_started/introduction.md rename to docs/zh_cn/get_started/introduction.md index 0082ae8..9907132 100644 --- a/docs_zh_CN/get_started/introduction.md +++ b/docs/zh_cn/get_started/introduction.md @@ -2,16 +2,24 @@ MMCV 是一个面向计算机视觉的基础库,它支持了很多开源项目,例如: +- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口 - [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱 - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱 - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台 +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准 - [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱 +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具箱 +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱 +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准 +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准 +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准 +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准 - [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱 - [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台 -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱 +- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准 - [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 -- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包 - [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱 +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架 MMCV 提供了如下众多功能: @@ -23,6 +31,12 @@ MMCV 提供了如下众多功能: - 多种 CNN 网络结构 - 高质量实现的常见 CUDA 算子 +MMCV 支持以下的系统: + +- Linux +- Windows +- macOS + 如想了解更多特性和使用,请参考[文档](https://mmcv.readthedocs.io/zh_CN/latest)。 ```{note} diff --git a/docs_zh_CN/get_started/previous_versions.md b/docs/zh_cn/get_started/previous_versions.md similarity index 93% rename from docs_zh_CN/get_started/previous_versions.md rename to docs/zh_cn/get_started/previous_versions.md index 56679d4..d543818 100644 --- a/docs_zh_CN/get_started/previous_versions.md +++ b/docs/zh_cn/get_started/previous_versions.md @@ -1,11 +1,10 @@ - ## 其他版本的 PyTorch 我们不再提供在较低的 `PyTorch` 版本下编译的 `mmcv-full` 包,但为了您的方便,您可以在下面找到它们。 ### PyTorch 1.4 -| 1.0.0 <= mmcv_version <= 1.2.1 +| 1.0.0 \<= mmcv_version \<= 1.2.1 #### CUDA 10.1 @@ -27,7 +26,7 @@ pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dis ### PyTorch v1.3 -| 1.0.0 <= mmcv_version <= 1.3.16 +| 1.0.0 \<= mmcv_version \<= 1.3.16 #### CUDA 10.1 diff --git a/docs_zh_CN/index.rst b/docs/zh_cn/index.rst similarity index 100% rename from docs_zh_CN/index.rst rename to docs/zh_cn/index.rst diff --git a/docs_zh_CN/make.bat b/docs/zh_cn/make.bat similarity index 100% rename from docs_zh_CN/make.bat rename to docs/zh_cn/make.bat diff --git a/docs_zh_CN/mmcv-logo.png b/docs/zh_cn/mmcv-logo.png similarity index 100% rename from docs_zh_CN/mmcv-logo.png rename to docs/zh_cn/mmcv-logo.png diff --git a/docs/zh_cn/understand_mmcv/cnn.md b/docs/zh_cn/understand_mmcv/cnn.md new file mode 100644 index 0000000..aa8584f --- /dev/null +++ b/docs/zh_cn/understand_mmcv/cnn.md @@ -0,0 +1,570 @@ +## 卷积神经网络 + +我们为卷积神经网络提供了一些构建模块,包括层构建、模块组件和权重初始化。 + +### 网络层的构建 + +在运行实验时,我们可能需要尝试同属一种类型但不同配置的层,但又不希望每次都修改代码。于是我们提供一些层构建方法,可以从字典构建层,字典可以在配置文件中配置,也可以通过命令行参数指定。 + +#### 用法 + +一个简单的例子: + +```python +cfg = dict(type='Conv3d') +layer = build_conv_layer(cfg, in_channels=3, out_channels=8, kernel_size=3) +``` + +- `build_conv_layer`: 支持的类型包括 Conv1d、Conv2d、Conv3d、Conv (Conv是Conv2d的别名) +- `build_norm_layer`: 支持的类型包括 BN1d、BN2d、BN3d、BN (alias for BN2d)、SyncBN、GN、LN、IN1d、IN2d、IN3d、IN(IN是IN2d的别名) +- `build_activation_layer`:支持的类型包括 ReLU、LeakyReLU、PReLU、RReLU、ReLU6、ELU、Sigmoid、Tanh、GELU +- `build_upsample_layer`: 支持的类型包括 nearest、bilinear、deconv、pixel_shuffle +- `build_padding_layer`: 支持的类型包括 zero、reflect、replicate + +#### 拓展 + +我们还允许自定义层和算子来扩展构建方法。 + +1. 编写和注册自己的模块: + + ```python + from mmcv.cnn import UPSAMPLE_LAYERS + + @UPSAMPLE_LAYERS.register_module() + class MyUpsample: + + def __init__(self, scale_factor): + pass + + def forward(self, x): + pass + ``` + +2. 在某处导入 `MyUpsample` (例如 `__init__.py` )然后使用它: + + ```python + cfg = dict(type='MyUpsample', scale_factor=2) + layer = build_upsample_layer(cfg) + ``` + +### 模块组件 + +我们还提供了常用的模块组件,以方便网络构建。 +卷积组件 `ConvModule` 由 convolution、normalization以及activation layers 组成,更多细节请参考 [ConvModule api](api.html#mmcv.cnn.ConvModule)。 + +```python +# conv + bn + relu +conv = ConvModule(3, 8, 2, norm_cfg=dict(type='BN')) +# conv + gn + relu +conv = ConvModule(3, 8, 2, norm_cfg=dict(type='GN', num_groups=2)) +# conv + relu +conv = ConvModule(3, 8, 2) +# conv +conv = ConvModule(3, 8, 2, act_cfg=None) +# conv + leaky relu +conv = ConvModule(3, 8, 3, padding=1, act_cfg=dict(type='LeakyReLU')) +# bn + conv + relu +conv = ConvModule( + 3, 8, 2, norm_cfg=dict(type='BN'), order=('norm', 'conv', 'act')) +``` + +### Weight initialization + +> 实现细节可以在 [mmcv/cnn/utils/weight_init.py](../../mmcv/cnn/utils/weight_init.py)中找到 + +在训练过程中,适当的初始化策略有利于加快训练速度或者获得更高的性能。 在MMCV中,我们提供了一些常用的方法来初始化模块,比如 `nn.Conv2d` 模块。当然,我们也提供了一些高级API,可用于初始化包含一个或多个模块的模型。 + +#### Initialization functions + +以函数的方式初始化 `nn.Module` ,例如 `nn.Conv2d` 、 `nn.Linear` 等。 + +我们提供以下初始化方法, + +- constant_init + + 使用给定常量值初始化模型参数 + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import constant_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # constant_init(module, val, bias=0) + >>> constant_init(conv1, 1, 0) + >>> conv1.weight + ``` + +- xavier_init + + 按照 [Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) 描述的方法初始化模型参数 + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import xavier_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # xavier_init(module, gain=1, bias=0, distribution='normal') + >>> xavier_init(conv1, distribution='normal') + ``` + +- normal_init + + 使用正态分布(高斯分布)初始化模型参数 + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import normal_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # normal_init(module, mean=0, std=1, bias=0) + >>> normal_init(conv1, std=0.01, bias=0) + ``` + +- uniform_init + + 使用均匀分布初始化模型参数 + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import uniform_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # uniform_init(module, a=0, b=1, bias=0) + >>> uniform_init(conv1, a=0, b=1) + ``` + +- kaiming_init + + 按照 [Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification - He, K. et al. (2015)](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf) 描述的方法来初始化模型参数。 + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import kaiming_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # kaiming_init(module, a=0, mode='fan_out', nonlinearity='relu', bias=0, distribution='normal') + >>> kaiming_init(conv1) + ``` + +- caffe2_xavier_init + + caffe2中实现的 `xavier initialization`,对应于 PyTorch中的 `kaiming_uniform_` + + ```python + >>> import torch.nn as nn + >>> from mmcv.cnn import caffe2_xavier_init + >>> conv1 = nn.Conv2d(3, 3, 1) + >>> # caffe2_xavier_init(module, bias=0) + >>> caffe2_xavier_init(conv1) + ``` + +- bias_init_with_prob + + 根据给定的概率初始化 `conv/fc`, 这在 [Focal Loss for Dense Object Detection](https://arxiv.org/pdf/1708.02002.pdf) 提出。 + + ```python + >>> from mmcv.cnn import bias_init_with_prob + >>> # bias_init_with_prob is proposed in Focal Loss + >>> bias = bias_init_with_prob(0.01) + >>> bias + -4.59511985013459 + ``` + +#### Initializers and configs + +在初始化方法的基础上,我们定义了相应的初始化类,并将它们注册到 `INITIALIZERS` 中,这样我们就可以使用 `config` 配置来初始化模型了。 + +我们提供以下初始化类: + +- ConstantInit +- XavierInit +- NormalInit +- UniformInit +- KaimingInit +- Caffe2XavierInit +- PretrainedInit + +接下来详细介绍 `initialize` 的使用方法 + +1. 通过关键字 `layer` 来初始化模型 + + 如果我们只定义了关键字 `layer` ,那么只初始化 `layer` 中包含的层。 + + 注意: 关键字 `layer` 支持的模块是带有 weights 和 bias 属性的 PyTorch 模块,所以不支持 `MultiheadAttention layer` + +- 定义关键字 `layer` 列表并使用相同相同配置初始化模块 + + ```python + import torch.nn as nn + from mmcv.cnn import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Linear(1, 2) + + model = FooNet() + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d', 'Linear'], val=1) + # 使用相同的配置初始化整个模块 + initialize(model, init_cfg) + # model.feat.weight + # Parameter containing: + # tensor([[[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]]], requires_grad=True) + ``` + +- 定义关键字 `layer` 用于初始化不同配置的层 + + ```python + import torch.nn as nn + from mmcv.cnn.utils import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Linear(1,2) + + model = FooNet() + init_cfg = [dict(type='Constant', layer='Conv1d', val=1), + dict(type='Constant', layer='Conv2d', val=2), + dict(type='Constant', layer='Linear', val=3)] + # nn.Conv1d 使用 dict(type='Constant', val=1) 初始化 + # nn.Conv2d 使用 dict(type='Constant', val=2) 初始化 + # nn.Linear 使用 dict(type='Constant', val=3) 初始化 + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + ``` + +2. 定义关键字`override`初始化模型 + +- 当用属性名初始化某个特定部分时, 我们可以使用关键字 `override`, 关键字 `override` 对应的Value会替代init_cfg中相应的值 + + ```python + import torch.nn as nn + from mmcv.cnn import initialize + + class FooNet(nn.Module): + def __init__(self): + super().__init__() + self.feat = nn.Conv1d(3, 1, 3) + self.reg = nn.Conv2d(3, 3, 3) + self.cls = nn.Sequential(nn.Conv1d(3, 1, 3), nn.Linear(1,2)) + + # 如果我们想将模型的权重初始化为 1,将偏差初始化为 2 + # 但希望 `reg` 中的权重为 3,偏差为 4,则我们可以使用关键字override + + model = FooNet() + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, + override=dict(type='Constant', name='reg', val=3, bias=4)) + # 使用 dict(type='Constant', val=1, bias=2)来初始化 self.feat and self.cls + # 使用dict(type='Constant', val=3, bias=4)来初始化‘reg’模块。 + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[3., 3., 3.], + # [3., 3., 3.], + # [3., 3., 3.]], + # ..., + # [[3., 3., 3.], + # [3., 3., 3.], + # [3., 3., 3.]]]], requires_grad=True) + ``` + +- 如果 init_cfg 中的关键字`layer`为None,则只初始化在关键字override中的子模块,并且省略override中的 type 和其他参数 + + ```python + model = FooNet() + init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) + # self.feat 和 self.cls 使用pyTorch默认的初始化 + # 将使用 dict(type='Constant', val=1, bias=2) 初始化名为 'reg' 的模块 + initialize(model, init_cfg) + # model.reg.weight + # Parameter containing: + # tensor([[[[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]], + # ..., + # [[1., 1., 1.], + # [1., 1., 1.], + # [1., 1., 1.]]]], requires_grad=True) + ``` + +- 如果我们没有定义关键字`layer`或`override` , 将不会初始化任何东西 + +- 关键字`override`的无效用法 + + ```python + # 没有重写任何子模块 + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], + val=1, bias=2, + override=dict(type='Constant', val=3, bias=4)) + + # 没有指定type,即便有其他参数,也是无效的。 + init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], + val=1, bias=2, + override=dict(name='reg', val=3, bias=4)) + ``` + +3. 用预训练模型初始化 + + ```python + import torch.nn as nn + import torchvision.models as models + from mmcv.cnn import initialize + + # 使用预训练模型来初始化 + model = models.resnet50() + # model.conv1.weight + # Parameter containing: + # tensor([[[[-6.7435e-03, -2.3531e-02, -9.0143e-03, ..., -2.1245e-03, + # -1.8077e-03, 3.0338e-03], + # [-1.2603e-02, -2.7831e-02, 2.3187e-02, ..., -1.5793e-02, + # 1.1655e-02, 4.5889e-03], + # [-3.7916e-02, 1.2014e-02, 1.3815e-02, ..., -4.2651e-03, + # 1.7314e-02, -9.9998e-03], + # ..., + + init_cfg = dict(type='Pretrained', + checkpoint='torchvision://resnet50') + initialize(model, init_cfg) + # model.conv1.weight + # Parameter containing: + # tensor([[[[ 1.3335e-02, 1.4664e-02, -1.5351e-02, ..., -4.0896e-02, + # -4.3034e-02, -7.0755e-02], + # [ 4.1205e-03, 5.8477e-03, 1.4948e-02, ..., 2.2060e-03, + # -2.0912e-02, -3.8517e-02], + # [ 2.2331e-02, 2.3595e-02, 1.6120e-02, ..., 1.0281e-01, + # 6.2641e-02, 5.1977e-02], + # ..., + + # 使用关键字'prefix'用预训练模型的特定部分来初始化子模块权重 + model = models.resnet50() + url = 'http://download.openmmlab.com/mmdetection/v2.0/retinanet/'\ + 'retinanet_r50_fpn_1x_coco/'\ + 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth' + init_cfg = dict(type='Pretrained', + checkpoint=url, prefix='backbone.') + initialize(model, init_cfg) + ``` + +4. 初始化继承自BaseModule、Sequential、ModuleList、ModuleDict的模型 + + `BaseModule` 继承自 `torch.nn.Module`, 它们之间唯一的不同是 `BaseModule` 实现了 `init_weight` + + `Sequential` 继承自 `BaseModule` 和 `torch.nn.Sequential` + + `ModuleList` 继承自 `BaseModule` 和 `torch.nn.ModuleList` + + `ModuleDict` 继承自 `BaseModule` 和 `torch.nn.ModuleDict` + + ```python + import torch.nn as nn + from mmcv.runner import BaseModule, Sequential, ModuleList, ModuleDict + + class FooConv1d(BaseModule): + + def __init__(self, init_cfg=None): + super().__init__(init_cfg) + self.conv1d = nn.Conv1d(4, 1, 4) + + def forward(self, x): + return self.conv1d(x) + + class FooConv2d(BaseModule): + + def __init__(self, init_cfg=None): + super().__init__(init_cfg) + self.conv2d = nn.Conv2d(3, 1, 3) + + def forward(self, x): + return self.conv2d(x) + + # BaseModule + init_cfg = dict(type='Constant', layer='Conv1d', val=0., bias=1.) + model = FooConv1d(init_cfg) + model.init_weights() + # model.conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + + # Sequential + init_cfg1 = dict(type='Constant', layer='Conv1d', val=0., bias=1.) + init_cfg2 = dict(type='Constant', layer='Conv2d', val=2., bias=3.) + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + seq_model = Sequential(model1, model2) + seq_model.init_weights() + # seq_model[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # seq_model[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + seq_model = Sequential(model1, model2, init_cfg=init_cfg) + seq_model.init_weights() + # seq_model[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # seq_model[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # ModuleList + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + modellist = ModuleList([model1, model2]) + modellist.init_weights() + # modellist[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modellist[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + modellist = ModuleList([model1, model2], init_cfg=init_cfg) + modellist.init_weights() + # modellist[0].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modellist[1].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # ModuleDict + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + modeldict = ModuleDict(dict(model1=model1, model2=model2)) + modeldict.init_weights() + # modeldict['model1'].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modeldict['model2'].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + + # inner init_cfg has higher priority + model1 = FooConv1d(init_cfg1) + model2 = FooConv2d(init_cfg2) + init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) + modeldict = ModuleDict(dict(model1=model1, model2=model2), init_cfg=init_cfg) + modeldict.init_weights() + # modeldict['model1'].conv1d.weight + # Parameter containing: + # tensor([[[0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.], + # [0., 0., 0., 0.]]], requires_grad=True) + # modeldict['model2'].conv2d.weight + # Parameter containing: + # tensor([[[[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]], + # ..., + # [[2., 2., 2.], + # [2., 2., 2.], + # [2., 2., 2.]]]], requires_grad=True) + ``` + +### Model Zoo + +除了`torchvision`的预训练模型,我们还提供以下 CNN 的预训练模型: + +- VGG Caffe +- ResNet Caffe +- ResNeXt +- ResNet with Group Normalization +- ResNet with Group Normalization and Weight Standardization +- HRNetV2 +- Res2Net +- RegNet + +#### Model URLs in JSON + +MMCV中的Model Zoo Link 由 JSON 文件管理。 json 文件由模型名称及其url或path的键值对组成,一个json文件可能类似于: + +```json +{ + "model_a": "https://example.com/models/model_a_9e5bac.pth", + "model_b": "pretrain/model_b_ab3ef2c.pth" +} +``` + +可以在[此处](https://github.com/open-mmlab/mmcv/blob/master/mmcv/model_zoo/open_mmlab.json)找到托管在 OpenMMLab AWS 上的预训练模型的默认链接。 + +你可以通过将 `open-mmlab.json` 放在 `MMCV_HOME`下来覆盖默认链接,如果在环境中找不到`MMCV_HOME`,则默认使用 `~/.cache/mmcv`。当然你也可以使用命令 `export MMCV_HOME=/your/path`来设置自己的路径。 + +外部的json文件将被合并为默认文件,如果相同的键出现在外部`json`和默认`json`中,则将使用外部`json`。 + +#### Load Checkpoint + +`mmcv.load_checkpoint()`的参数`filename`支持以下类型: + +- filepath: `checkpoint`路径 +- `http://xxx` and `https://xxx`: 下载checkpoint的链接,文件名中必需包含`SHA256`后缀 +- `torchvision://xxx`: `torchvision.models`中的模型链接,更多细节参考 [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) +- `open-mmlab://xxx`: 默认和其他 json 文件中提供的模型链接或文件路径 diff --git a/docs_zh_CN/understand_mmcv/config.md b/docs/zh_cn/understand_mmcv/config.md similarity index 99% rename from docs_zh_CN/understand_mmcv/config.md rename to docs/zh_cn/understand_mmcv/config.md index c6da308..52d7ab3 100644 --- a/docs_zh_CN/understand_mmcv/config.md +++ b/docs/zh_cn/understand_mmcv/config.md @@ -40,6 +40,7 @@ d = 'string' 这里是一个带有预定义变量的配置文件的例子。 `config_a.py` + ```python a = 1 b = './work_dir/{{ fileBasenameNoExtension }}' @@ -65,6 +66,7 @@ c = '{{ fileExtname }}' a = 1 b = dict(b1=[0, 1, 2], b2=None) ``` + ### 不含重复键值对从基类配置文件继承 `config_b.py` @@ -83,6 +85,7 @@ d = 'string' ... c=(1, 2), ... d='string') ``` + 在`config_b.py`里的新字段与在`config_a.py`里的旧字段拼接 ### 含重复键值对从基类配置文件继承 diff --git a/docs_zh_CN/understand_mmcv/data_process.md b/docs/zh_cn/understand_mmcv/data_process.md similarity index 96% rename from docs_zh_CN/understand_mmcv/data_process.md rename to docs/zh_cn/understand_mmcv/data_process.md index 0885fe0..98f00f1 100644 --- a/docs_zh_CN/understand_mmcv/data_process.md +++ b/docs/zh_cn/understand_mmcv/data_process.md @@ -252,9 +252,9 @@ flow = mmcv.flowread('compressed.jpg', quantize=True, concat_axis=1) mmcv.flowshow(flow) ``` -![progress](../../docs/_static/flow_visualization.png) +![progress](../../en/_static/flow_visualization.png) -3. 流变换 +1. 流变换 ```python img1 = mmcv.imread('img1.jpg') @@ -264,12 +264,12 @@ warpped_img2 = mmcv.flow_warp(img1, flow) img1 (左) and img2 (右) -![raw images](../../docs/_static/flow_raw_images.png) +![raw images](../../en/_static/flow_raw_images.png) 光流 (img2 -> img1) -![optical flow](../../docs/_static/flow_img2toimg1.png) +![optical flow](../../en/_static/flow_img2toimg1.png) 变换后的图像和真实图像的差异 -![warpped image](../../docs/_static/flow_warp_diff.png) +![warpped image](../../en/_static/flow_warp_diff.png) diff --git a/docs_zh_CN/understand_mmcv/io.md b/docs/zh_cn/understand_mmcv/io.md similarity index 99% rename from docs_zh_CN/understand_mmcv/io.md rename to docs/zh_cn/understand_mmcv/io.md index 0e5002f..eb4fe14 100644 --- a/docs_zh_CN/understand_mmcv/io.md +++ b/docs/zh_cn/understand_mmcv/io.md @@ -107,6 +107,7 @@ c d e ``` + #### 从硬盘读取 使用 `list_from_file` 读取 `a.txt` diff --git a/docs/zh_cn/understand_mmcv/ops.md b/docs/zh_cn/understand_mmcv/ops.md new file mode 100644 index 0000000..82c9eb4 --- /dev/null +++ b/docs/zh_cn/understand_mmcv/ops.md @@ -0,0 +1,60 @@ +## 算子 + +MMCV 提供了检测、分割等任务中常用的算子 + +| Device | CPU | CUDA | MLU | MPS | +| ---------------------------- | --- | ---- | --- | --- | +| ActiveRotatedFilter | √ | √ | | | +| AssignScoreWithK | | √ | | | +| BallQuery | | √ | | | +| BBoxOverlaps | | √ | √ | √ | +| BorderAlign | | √ | | | +| BoxIouRotated | √ | √ | | | +| CARAFE | | √ | | | +| ChamferDistance | | √ | | | +| CrissCrossAttention | | √ | | | +| ContourExpand | √ | | | | +| ConvexIoU | | √ | | | +| CornerPool | | √ | | | +| Correlation | | √ | | | +| Deformable Convolution v1/v2 | √ | √ | | | +| Deformable RoIPool | | √ | | | +| DiffIoURotated | | √ | | | +| DynamicScatter | | √ | | | +| FurthestPointSample | | √ | | | +| FurthestPointSampleWithDist | | √ | | | +| FusedBiasLeakyrelu | | √ | | | +| GatherPoints | | √ | | | +| GroupPoints | | √ | | | +| Iou3d | | √ | | | +| KNN | | √ | | | +| MaskedConv | | √ | | | +| MergeCells | | √ | | | +| MinAreaPolygon | | √ | | | +| ModulatedDeformConv2d | √ | √ | | | +| MultiScaleDeformableAttn | | √ | | | +| NMS | √ | √ | √ | | +| NMSRotated | √ | √ | | | +| PixelGroup | √ | | | | +| PointsInBoxes | √ | √ | | | +| PointsInPolygons | | √ | | | +| PSAMask | √ | √ | √ | | +| RotatedFeatureAlign | √ | √ | | | +| RoIPointPool3d | | √ | | | +| RoIPool | | √ | √ | | +| RoIAlignRotated | √ | √ | √ | | +| RiRoIAlignRotated | | √ | | | +| RoIAlign | √ | √ | √ | | +| RoIAwarePool3d | | √ | | | +| SAConv2d | | √ | | | +| SigmoidFocalLoss | | √ | √ | | +| SoftmaxFocalLoss | | √ | | | +| SoftNMS | | √ | | | +| Sparse Convolution | | √ | | | +| Synchronized BatchNorm | | √ | | | +| ThreeInterpolate | | √ | | | +| ThreeNN | | √ | | | +| TINShift | | √ | √ | | +| UpFirDn2d | | √ | | | +| Voxelization | √ | √ | | | +| PrRoIPool | | √ | | | diff --git a/docs_zh_CN/understand_mmcv/registry.md b/docs/zh_cn/understand_mmcv/registry.md similarity index 76% rename from docs_zh_CN/understand_mmcv/registry.md rename to docs/zh_cn/understand_mmcv/registry.md index 3afd0ab..325baa4 100644 --- a/docs_zh_CN/understand_mmcv/registry.md +++ b/docs/zh_cn/understand_mmcv/registry.md @@ -1,11 +1,17 @@ ## 注册器 + MMCV 使用 [注册器](https://github.com/open-mmlab/mmcv/blob/master/mmcv/utils/registry.py) 来管理具有相似功能的不同模块, 例如, 检测器中的主干网络、头部、和模型颈部。 在 OpenMMLab 家族中的绝大部分开源项目使用注册器去管理数据集和模型的模块,例如 [MMDetection](https://github.com/open-mmlab/mmdetection), [MMDetection3D](https://github.com/open-mmlab/mmdetection3d), [MMClassification](https://github.com/open-mmlab/mmclassification), [MMEditing](https://github.com/open-mmlab/mmediting) 等。 +```{note} +在 v1.5.1 版本开始支持注册函数的功能。 +``` + ### 什么是注册器 -在MMCV中,注册器可以看作类到字符串的映射。 -一个注册器中的类通常有相似的接口,但是可以实现不同的算法或支持不同的数据集。 -借助注册器,用户可以通过使用相应的字符串查找并实例化该类,并根据他们的需要实例化对应模块。 + +在MMCV中,注册器可以看作类或函数到字符串的映射。 +一个注册器中的类或函数通常有相似的接口,但是可以实现不同的算法或支持不同的数据集。 +借助注册器,用户可以通过使用相应的字符串查找类或函数,并根据他们的需要实例化对应模块或调用函数获取结果。 一个典型的案例是,OpenMMLab 中的大部分开源项目的配置系统,这些系统通过配置文件来使用注册器创建钩子、执行器、模型和数据集。 可以在[这里](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.Registry)找到注册器接口使用文档。 @@ -15,7 +21,7 @@ MMCV 使用 [注册器](https://github.com/open-mmlab/mmcv/blob/master/mmcv/util 2. 创建注册器 3. 使用此注册器来管理模块 -`Registry`(注册器)的参数 `build_func`(构建函数) 用来自定以如何实例化类的实例,默认使用 [这里](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.build_from_cfg)实现的`build_from_cfg`。 +`Registry`(注册器)的参数 `build_func`(构建函数) 用来自定义如何实例化类的实例或如何调用函数获取结果,默认使用 [这里](https://mmcv.readthedocs.io/en/latest/api.html?highlight=registry#mmcv.utils.build_from_cfg) 实现的`build_from_cfg`。 ### 一个简单的例子 @@ -29,9 +35,10 @@ from mmcv.utils import Registry CONVERTERS = Registry('converter') ``` -然后我们在包中可以实现不同的转换器(converter)。例如,在 `converters/converter1.py` 中实现 `Converter1`。 +然后我们在包中可以实现不同的转换器(converter),其可以为类或函数。例如,在 `converters/converter1.py` 中实现 `Converter1`,在 `converters/converter2.py` 中实现 `converter2`。 ```python +# converter1.py from .builder import CONVERTERS # 使用注册器管理模块 @@ -41,19 +48,39 @@ class Converter1(object): self.a = a self.b = b ``` -使用注册器管理模块的关键步骤是,将实现的模块注册到注册表 `CONVERTERS` 中。通过 `@CONVERTERS.register_module()` 装饰所实现的模块,字符串和类之间的映射就可以由 `CONVERTERS` 构建和维护,如下所示: -通过这种方式,就可以通过 `CONVERTERS` 建立字符串与类之间的映射,如下所示: +```python +# converter2.py +from .builder import CONVERTERS +from .converter1 import Converter1 + +# 使用注册器管理模块 +@CONVERTERS.register_module() +def converter2(a, b) + return Converter1(a, b) +``` + +使用注册器管理模块的关键步骤是,将实现的模块注册到注册表 `CONVERTERS` 中。通过 `@CONVERTERS.register_module()` 装饰所实现的模块,字符串到类或函数之间的映射就可以由 `CONVERTERS` 构建和维护,如下所示: + +通过这种方式,就可以通过 `CONVERTERS` 建立字符串与类或函数之间的映射,如下所示: ```python 'Converter1' -> +'converter2' -> +``` + +```{note} +只有模块所在的文件被导入时,注册机制才会被触发,所以您需要在某处导入该文件。更多详情请查看 https://github.com/open-mmlab/mmdetection/issues/5974。 ``` 如果模块被成功注册了,你可以通过配置文件使用这个转换器(converter),如下所示: ```python -converter_cfg = dict(type='Converter1', a=a_value, b=b_value) -converter = CONVERTERS.build(converter_cfg) +converter1_cfg = dict(type='Converter1', a=a_value, b=b_value) +converter2_cfg = dict(type='converter2', a=a_value, b=b_value) +converter1 = CONVERTERS.build(converter1_cfg) +# returns the calling result +result = CONVERTERS.build(converter2_cfg) ``` ### 自定义构建函数 @@ -84,7 +111,7 @@ CONVERTERS = Registry('converter', build_func=build_converter) 该功能类似于默认的`build_from_cfg`。在大多数情况下,默认就足够了。 ``` -`build_model_from_cfg`也实现了在`nn.Sequentail`中构建PyTorch模块,你可以直接使用它们。 +`build_model_from_cfg`也实现了在`nn.Sequential`中构建PyTorch模块,你可以直接使用它们。 ### 注册器层结构 diff --git a/docs_zh_CN/understand_mmcv/runner.md b/docs/zh_cn/understand_mmcv/runner.md similarity index 88% rename from docs_zh_CN/understand_mmcv/runner.md rename to docs/zh_cn/understand_mmcv/runner.md index 203a5dc..7098eb9 100644 --- a/docs_zh_CN/understand_mmcv/runner.md +++ b/docs/zh_cn/understand_mmcv/runner.md @@ -8,7 +8,7 @@ ### EpochBasedRunner -顾名思义,`EpochBasedRunner` 是指以 epoch 为周期的工作流,例如设置 workflow = [('train', 2), ('val', 1)] 表示循环迭代地训练 2 个 epoch,然后验证 1 个 epoch。MMDetection 目标检测框架默认采用的是 `EpochBasedRunner`。 +顾名思义,`EpochBasedRunner` 是指以 epoch 为周期的工作流,例如设置 workflow = \[('train', 2), ('val', 1)\] 表示循环迭代地训练 2 个 epoch,然后验证 1 个 epoch。MMDetection 目标检测框架默认采用的是 `EpochBasedRunner`。 其抽象逻辑如下所示: @@ -25,6 +25,7 @@ while curr_epoch < max_epochs: for _ in range(epochs): epoch_runner(data_loaders[i], **kwargs) ``` + 目前支持训练和验证两个工作流,以训练函数为例,其抽象逻辑是: ```python @@ -40,7 +41,8 @@ def train(self, data_loader, **kwargs): ``` ### IterBasedRunner -不同于 `EpochBasedRunner`,`IterBasedRunner` 是指以 iter 为周期的工作流,例如设置 workflow = [('train', 2), ('val', 1)] 表示循环迭代的训练 2 个 iter,然后验证 1 个 iter,MMSegmentation 语义分割框架默认采用的是 `EpochBasedRunner`。 + +不同于 `EpochBasedRunner`,`IterBasedRunner` 是指以 iter 为周期的工作流,例如设置 workflow = \[('train', 2), ('val', 1)\] 表示循环迭代的训练 2 个 iter,然后验证 1 个 iter,MMSegmentation 语义分割框架默认采用的是 `IterBasedRunner`。 其抽象逻辑如下所示: @@ -59,6 +61,7 @@ while curr_iter < max_iters: for _ in range(iters): iter_runner(iter_loaders[i], **kwargs) ``` + 目前支持训练和验证两个工作流,以验证函数为例,其抽象逻辑是: ```python @@ -75,6 +78,7 @@ def val(self, data_loader, **kwargs): 除了上述基础功能外,`EpochBasedRunner` 和 `IterBasedRunner` 还提供了 resume 、 save_checkpoint 和注册 hook 功能。 ### 一个简单例子 + 以最常用的分类任务为例详细说明 `runner` 的使用方法。 开启任何一个训练任务,都需要包括如下步骤: **(1) dataloader、model 和优化器等类初始化** @@ -148,8 +152,8 @@ runner.run(data_loaders, cfg.workflow) 关于 workflow 设置,以 `EpochBasedRunner` 为例,详情如下: -- 假设只想运行训练工作流,则可以设置 workflow = [('train', 1)],表示只进行迭代训练 -- 假设想运行训练和验证工作流,则可以设置 workflow = [('train', 3), ('val', 1)],表示先训练 3 个 epoch ,然后切换到 val 工作流,运行 1 个 epoch,然后循环,直到训练 epoch 次数达到指定值 -- 工作流设置还自由定制,例如你可以先验证再训练 workflow = [('val', 1), ('train', 1)] +- 假设只想运行训练工作流,则可以设置 workflow = \[('train', 1)\],表示只进行迭代训练 +- 假设想运行训练和验证工作流,则可以设置 workflow = \[('train', 3), ('val', 1)\],表示先训练 3 个 epoch ,然后切换到 val 工作流,运行 1 个 epoch,然后循环,直到训练 epoch 次数达到指定值 +- 工作流设置还自由定制,例如你可以先验证再训练 workflow = \[('val', 1), ('train', 1)\] 上述代码都已经封装到了各个代码库的 train.py 中,用户只需要设置相应的配置即可,上述流程会自动运行。 diff --git a/docs_zh_CN/understand_mmcv/utils.md b/docs/zh_cn/understand_mmcv/utils.md similarity index 93% rename from docs_zh_CN/understand_mmcv/utils.md rename to docs/zh_cn/understand_mmcv/utils.md index 746c560..c02e520 100644 --- a/docs_zh_CN/understand_mmcv/utils.md +++ b/docs/zh_cn/understand_mmcv/utils.md @@ -17,7 +17,7 @@ mmcv.track_progress(func, tasks) ``` 效果如下 -![progress](../../docs/_static/progress.*) +![progress](../../en/_static/progress.*) 如果你想可视化多进程任务的进度,你可以使用 `track_parallel_progress` 。 @@ -25,7 +25,7 @@ mmcv.track_progress(func, tasks) mmcv.track_parallel_progress(func, tasks, 8) # 8 workers ``` -![progress](../../docs/_static/parallel_progress.*) +![progress](../../_static/parallel_progress.*) 如果你想要迭代或枚举数据列表并可视化进度,你可以使用 `track_iter_progress` 。 @@ -58,7 +58,6 @@ with mmcv.Timer(): 你也可以使用 `since_start()` 和 `since_last_check()` 。前者返回计时器启动后的运行时长,后者返回最近一次查看计时器后的运行时长。 - ```python timer = mmcv.Timer() # code block 1 here diff --git a/docs_zh_CN/understand_mmcv/visualization.md b/docs/zh_cn/understand_mmcv/visualization.md similarity index 100% rename from docs_zh_CN/understand_mmcv/visualization.md rename to docs/zh_cn/understand_mmcv/visualization.md diff --git a/docs_zh_CN/community/pr.md b/docs_zh_CN/community/pr.md deleted file mode 100644 index 219e01d..0000000 --- a/docs_zh_CN/community/pr.md +++ /dev/null @@ -1,90 +0,0 @@ -## 拉取请求 - -### 什么是拉取请求? - -`拉取请求` (Pull Request), [GitHub 官方文档](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)定义如下。 - ->拉取请求是一种通知机制。你修改了他人的代码,将你的修改通知原来作者,希望他合并你的修改。 - -### 基本的工作流: - -1. 获取最新的代码库 -2. 从主分支创建最新的分支进行开发 -3. 提交修改 -4. 推送你的修改并创建一个`拉取请求` -5. 讨论、审核代码 -6. 将开发分支合并到主分支 - -### 具体步骤 - -1. 获取最新的代码库 - + 当你第一次提 PR 时 - - 复刻 OpenMMLab 原代码库,点击 GitHub 页面右上角的 **Fork** 按钮即可 - ![avatar](../../docs/_static/community/1.png) - - - 克隆复刻的代码库到本地 - ```bash - git clone git@github.com:XXX/mmcv.git - ``` - - - 添加原代码库为上游代码库 - ```bash - git remote add upstream git@github.com:open-mmlab/mmcv - ``` - + 从第二个 PR 起 - - 检出本地代码库的主分支,然后从最新的原代码库的主分支拉取更新 - ```bash - git checkout master - git pull upstream master - ``` - -2. 从主分支创建一个新的开发分支 - ```bash - git checkout -b branchname - ``` - 注意:为了保证提交历史清晰可读,我们强烈推荐您先检出主分支 (master),再创建新的分支。 - -3. 提交你的修改 - ```bash - # coding - git add [files] - git commit -m 'messages' - ``` - -4. 推送你的修改到复刻的代码库,并创建一个`拉取请求` - + 推送当前分支到远端复刻的代码库 - ```bash - git push origin branchname - ``` - - + 创建一个`拉取请求` - ![avatar](../../docs/_static/community/2.png) - - + 修改`拉取请求`信息模板,描述修改原因和修改内容。还可以在 PR 描述中,手动关联到相关的`议题` (issue),(更多细节,请参考[官方文档](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue))。 - -5. 讨论并评审你的代码 - + 创建`拉取请求`时,可以关联给相关人员进行评审 - ![avatar](../../docs/_static/community/3.png) - - + 根据评审人员的意见修改代码,并推送修改 - -6. `拉取请求`合并之后删除该分支 -```bash -git branch -d branchname # delete local branch -git push origin --delete branchname # delete remote branch -``` - -### PR 规范 - -1. 使用 [pre-commit hook](https://pre-commit.com),尽量减少代码风格相关问题 -2. 一个PR对应一个短期分支 -3. 粒度要细,一个PR只做一件事情,避免超大的PR - >- Bad:实现Faster R-CNN - >- Acceptable:给 Faster R-CNN 添加一个 box head - >- Good:给 box head 增加一个参数来支持自定义的 conv 层数 -4. 每次 Commit 时需要提供清晰且有意义 commit 信息 -5. 提供清晰且有意义的`拉取请求`描述 - >- 标题写明白任务名称,一般格式:[Prefix] Short description of the pull request (Suffix) - >- prefix: 新增功能 [Feature], 修 bug [Fix], 文档相关 [Docs], 开发中 [WIP] (暂时不会被review) - >- 描述里介绍`拉取请求`的主要修改内容,结果,以及对其他部分的影响, 参考`拉取请求`模板 - >- 关联相关的`议题` (issue) 和其他`拉取请求` diff --git a/docs_zh_CN/faq.md b/docs_zh_CN/faq.md deleted file mode 100644 index e5d6395..0000000 --- a/docs_zh_CN/faq.md +++ /dev/null @@ -1,37 +0,0 @@ -## 常见问题 - -在这里我们列出了用户经常遇到的问题以及对应的解决方法。如果您遇到了其他常见的问题,并且知道可以帮到大家的解决办法, -欢迎随时丰富这个列表。 - -- MMCV 和 MMDetection 的兼容性问题;"ConvWS is already registered in conv layer" - - 请按照上述说明为您的 MMDetection 版本安装正确版本的 MMCV。 - -- "No module named 'mmcv.ops'"; "No module named 'mmcv._ext'" - - 1. 使用 `pip uninstall mmcv` 卸载您环境中的 mmcv - 2. 按照上述说明安装 mmcv-full - -- "invalid device function" 或者 "no kernel image is available for execution" - - 1. 检查 GPU 的 CUDA 计算能力 - 2. 运行 `python mmdet/utils/collect_env.py` 来检查 PyTorch、torchvision 和 MMCV 是否是针对正确的 GPU 架构构建的 - 您可能需要去设置 `TORCH_CUDA_ARCH_LIST` 来重新安装 MMCV - 兼容性问题的可能会出现在使用旧版的 GPUs,如:colab 上的 Tesla K80 (3.7) - 3. 检查运行环境是否和 mmcv/mmdet 编译时的环境相同。例如,您可能使用 CUDA 10.0 编译 mmcv,但在 CUDA 9.0 的环境中运行它 - -- "undefined symbol" 或者 "cannot open xxx.so"。 - - 1. 如果符号和 CUDA/C++ 相关(例如:libcudart.so 或者 GLIBCXX),请检查 CUDA/GCC 运行时的版本是否和编译 mmcv 的一致 - 2. 如果符号和 PyTorch 相关(例如:符号包含 caffe、aten 和 TH),请检查 PyTorch 运行时的版本是否和编译 mmcv 的一致 - 3. 运行 `python mmdet/utils/collect_env.py` 以检查 PyTorch、torchvision 和 MMCV 构建和运行的环境是否相同 - -- "RuntimeError: CUDA error: invalid configuration argument"。 - - 这个错误可能是由于您的 GPU 性能不佳造成的。尝试降低[THREADS_PER_BLOCK](https://github.com/open-mmlab/mmcv/blob/cac22f8cf5a904477e3b5461b1cc36856c2793da/mmcv/ops/csrc/common_cuda_helper.hpp#L10) - 的值并重新编译 mmcv。 - -- "RuntimeError: nms is not compiled with GPU support"。 - - 这个错误是由于您的 CUDA 环境没有正确安装。 - 您可以尝试重新安装您的 CUDA 环境,然后删除 mmcv/build 文件夹并重新编译 mmcv。 diff --git a/docs_zh_CN/understand_mmcv/cnn.md b/docs_zh_CN/understand_mmcv/cnn.md deleted file mode 100644 index 9027cf3..0000000 --- a/docs_zh_CN/understand_mmcv/cnn.md +++ /dev/null @@ -1,525 +0,0 @@ -## 卷积神经网络 - -我们为卷积神经网络提供了一些构建模块,包括层构建、模块组件和权重初始化。 - -### 网络层的构建 - -在运行实验时,我们可能需要尝试同属一种类型但不同配置的层,但又不希望每次都修改代码。于是我们提供一些层构建方法,可以从字典构建层,字典可以在配置文件中配置,也可以通过命令行参数指定。 - -#### 用法 - -一个简单的例子: - -```python -cfg = dict(type='Conv3d') -layer = build_conv_layer(cfg, in_channels=3, out_channels=8, kernel_size=3) -``` - -- `build_conv_layer`: 支持的类型包括 Conv1d、Conv2d、Conv3d、Conv (Conv是Conv2d的别名) -- `build_norm_layer`: 支持的类型包括 BN1d、BN2d、BN3d、BN (alias for BN2d)、SyncBN、GN、LN、IN1d、IN2d、IN3d、IN(IN是IN2d的别名) -- `build_activation_layer`:支持的类型包括 ReLU、LeakyReLU、PReLU、RReLU、ReLU6、ELU、Sigmoid、Tanh、GELU -- `build_upsample_layer`: 支持的类型包括 nearest、bilinear、deconv、pixel_shuffle -- `build_padding_layer`: 支持的类型包括 zero、reflect、replicate - -#### 拓展 - -我们还允许自定义层和算子来扩展构建方法。 - -1. 编写和注册自己的模块: - - ```python - from mmcv.cnn import UPSAMPLE_LAYERS - - @UPSAMPLE_LAYERS.register_module() - class MyUpsample: - - def __init__(self, scale_factor): - pass - - def forward(self, x): - pass - ``` - -2. 在某处导入 `MyUpsample` (例如 `__init__.py` )然后使用它: - - ```python - cfg = dict(type='MyUpsample', scale_factor=2) - layer = build_upsample_layer(cfg) - ``` - -### 模块组件 - -我们还提供了常用的模块组件,以方便网络构建。 -卷积组件 `ConvModule` 由 convolution、normalization以及activation layers 组成,更多细节请参考 [ConvModule api](api.html#mmcv.cnn.ConvModule)。 - -```python -# conv + bn + relu -conv = ConvModule(3, 8, 2, norm_cfg=dict(type='BN')) -# conv + gn + relu -conv = ConvModule(3, 8, 2, norm_cfg=dict(type='GN', num_groups=2)) -# conv + relu -conv = ConvModule(3, 8, 2) -# conv -conv = ConvModule(3, 8, 2, act_cfg=None) -# conv + leaky relu -conv = ConvModule(3, 8, 3, padding=1, act_cfg=dict(type='LeakyReLU')) -# bn + conv + relu -conv = ConvModule( - 3, 8, 2, norm_cfg=dict(type='BN'), order=('norm', 'conv', 'act')) -``` - -### Weight initialization - -> 实现细节可以在 [mmcv/cnn/utils/weight_init.py](../../mmcv/cnn/utils/weight_init.py)中找到 - -在训练过程中,适当的初始化策略有利于加快训练速度或者获得更高的性能。 在MMCV中,我们提供了一些常用的方法来初始化模块,比如 `nn.Conv2d` 模块。当然,我们也提供了一些高级API,可用于初始化包含一个或多个模块的模型。 - -#### Initialization functions - -以函数的方式初始化 `nn.Module` ,例如 `nn.Conv2d` 、 `nn.Linear` 等。 - -我们提供以下初始化方法, - -- constant_init - - 使用给定常量值初始化模型参数 - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import constant_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # constant_init(module, val, bias=0) - >>> constant_init(conv1, 1, 0) - >>> conv1.weight - ``` - -- xavier_init - - 按照 [Understanding the difficulty of training deep feedforward neural networks - Glorot, X. & Bengio, Y. (2010)](http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf) 描述的方法初始化模型参数 - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import xavier_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # xavier_init(module, gain=1, bias=0, distribution='normal') - >>> xavier_init(conv1, distribution='normal') - ``` - -- normal_init - - 使用正态分布(高斯分布)初始化模型参数 - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import normal_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # normal_init(module, mean=0, std=1, bias=0) - >>> normal_init(conv1, std=0.01, bias=0) - ``` - -- uniform_init - - 使用均匀分布初始化模型参数 - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import uniform_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # uniform_init(module, a=0, b=1, bias=0) - >>> uniform_init(conv1, a=0, b=1) - ``` - -- kaiming_init - - 按照 [Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification - He, K. et al. (2015)](https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf) 描述的方法来初始化模型参数。 - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import kaiming_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # kaiming_init(module, a=0, mode='fan_out', nonlinearity='relu', bias=0, distribution='normal') - >>> kaiming_init(conv1) - ``` - -- caffe2_xavier_init - - caffe2中实现的 `xavier initialization`,对应于 PyTorch中的 `kaiming_uniform_` - - ```python - >>> import torch.nn as nn - >>> from mmcv.cnn import caffe2_xavier_init - >>> conv1 = nn.Conv2d(3, 3, 1) - >>> # caffe2_xavier_init(module, bias=0) - >>> caffe2_xavier_init(conv1) - ``` - -- bias_init_with_prob - - 根据给定的概率初始化 `conv/fc`, 这在 [Focal Loss for Dense Object Detection](https://arxiv.org/pdf/1708.02002.pdf) 提出。 - - ```python - >>> from mmcv.cnn import bias_init_with_prob - >>> # bias_init_with_prob is proposed in Focal Loss - >>> bias = bias_init_with_prob(0.01) - >>> bias - -4.59511985013459 - ``` - -#### Initializers and configs - -在初始化方法的基础上,我们定义了相应的初始化类,并将它们注册到 `INITIALIZERS` 中,这样我们就可以使用 `config` 配置来初始化模型了。 - -我们提供以下初始化类: - -- ConstantInit -- XavierInit -- NormalInit -- UniformInit -- KaimingInit -- Caffe2XavierInit -- PretrainedInit - -接下来详细介绍 `initialize` 的使用方法 - -1. 通过关键字 `layer` 来初始化模型 - - 如果我们只定义了关键字 `layer` ,那么只初始化 `layer` 中包含的层。 - - 注意: 关键字 `layer` 支持的模块是带有 weights 和 bias 属性的 PyTorch 模块,所以不支持 `MultiheadAttention layer` - -- 定义关键字 `layer` 列表并使用相同相同配置初始化模块 - - ```python - import torch.nn as nn - from mmcv.cnn import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Linear(1, 2) - - model = FooNet() - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d', 'Linear'], val=1) - # 使用相同的配置初始化整个模块 - initialize(model, init_cfg) - # model.feat.weight - # Parameter containing: - # tensor([[[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]]], requires_grad=True) - ``` - -- 定义关键字 `layer` 用于初始化不同配置的层 - - ```python - import torch.nn as nn - from mmcv.cnn.utils import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Linear(1,2) - - model = FooNet() - init_cfg = [dict(type='Constant', layer='Conv1d', val=1), - dict(type='Constant', layer='Conv2d', val=2), - dict(type='Constant', layer='Linear', val=3)] - # nn.Conv1d 使用 dict(type='Constant', val=1) 初始化 - # nn.Conv2d 使用 dict(type='Constant', val=2) 初始化 - # nn.Linear 使用 dict(type='Constant', val=3) 初始化 - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - ``` - -2. 定义关键字`override`初始化模型 - -- 当用属性名初始化某个特定部分时, 我们可以使用关键字 `override`, 关键字 `override` 对应的Value会替代init_cfg中相应的值 - - ```python - import torch.nn as nn - from mmcv.cnn import initialize - - class FooNet(nn.Module): - def __init__(self): - super().__init__() - self.feat = nn.Conv1d(3, 1, 3) - self.reg = nn.Conv2d(3, 3, 3) - self.cls = nn.Sequential(nn.Conv1d(3, 1, 3), nn.Linear(1,2)) - - # 如果我们想将模型的权重初始化为 1,将偏差初始化为 2 - # 但希望 `cls` 中的权重为 3,偏差为 4,则我们可以使用关键字override - - model = FooNet() - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], val=1, bias=2, - override=dict(type='Constant', name='reg', val=3, bias=4)) - # 使用 dict(type='Constant', val=1, bias=2)来初始化 self.feat and self.cls - # 使用dict(type='Constant', val=3, bias=4)来初始化‘reg’模块。 - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[3., 3., 3.], - # [3., 3., 3.], - # [3., 3., 3.]], - # ..., - # [[3., 3., 3.], - # [3., 3., 3.], - # [3., 3., 3.]]]], requires_grad=True) - ``` - -- 如果 init_cfg 中的关键字`layer`为None,则只初始化在关键字override中的子模块,并且省略override中的 type 和其他参数 - - ```python - model = FooNet() - init_cfg = dict(type='Constant', val=1, bias=2, override=dict(name='reg')) - # self.feat 和 self.cls 使用pyTorch默认的初始化 - # 将使用 dict(type='Constant', val=1, bias=2) 初始化名为 'reg' 的模块 - initialize(model, init_cfg) - # model.reg.weight - # Parameter containing: - # tensor([[[[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]], - # ..., - # [[1., 1., 1.], - # [1., 1., 1.], - # [1., 1., 1.]]]], requires_grad=True) - ``` - -- 如果我们没有定义关键字`layer`或`override` , 将不会初始化任何东西 - -- 关键字`override`的无效用法 - - ```python - # 没有重写任何子模块 - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], - val=1, bias=2, - override=dict(type='Constant', val=3, bias=4)) - - # 没有指定type,即便有其他参数,也是无效的。 - init_cfg = dict(type='Constant', layer=['Conv1d','Conv2d'], - val=1, bias=2, - override=dict(name='reg', val=3, bias=4)) - ``` - -3. 用预训练模型初始化 - - ```python - import torch.nn as nn - import torchvision.models as models - from mmcv.cnn import initialize - - # 使用预训练模型来初始化 - model = models.resnet50() - # model.conv1.weight - # Parameter containing: - # tensor([[[[-6.7435e-03, -2.3531e-02, -9.0143e-03, ..., -2.1245e-03, - # -1.8077e-03, 3.0338e-03], - # [-1.2603e-02, -2.7831e-02, 2.3187e-02, ..., -1.5793e-02, - # 1.1655e-02, 4.5889e-03], - # [-3.7916e-02, 1.2014e-02, 1.3815e-02, ..., -4.2651e-03, - # 1.7314e-02, -9.9998e-03], - # ..., - - init_cfg = dict(type='Pretrained', - checkpoint='torchvision://resnet50') - initialize(model, init_cfg) - # model.conv1.weight - # Parameter containing: - # tensor([[[[ 1.3335e-02, 1.4664e-02, -1.5351e-02, ..., -4.0896e-02, - # -4.3034e-02, -7.0755e-02], - # [ 4.1205e-03, 5.8477e-03, 1.4948e-02, ..., 2.2060e-03, - # -2.0912e-02, -3.8517e-02], - # [ 2.2331e-02, 2.3595e-02, 1.6120e-02, ..., 1.0281e-01, - # 6.2641e-02, 5.1977e-02], - # ..., - - # 使用关键字'prefix'用预训练模型的特定部分来初始化子模块权重 - model = models.resnet50() - url = 'http://download.openmmlab.com/mmdetection/v2.0/retinanet/'\ - 'retinanet_r50_fpn_1x_coco/'\ - 'retinanet_r50_fpn_1x_coco_20200130-c2398f9e.pth' - init_cfg = dict(type='Pretrained', - checkpoint=url, prefix='backbone.') - initialize(model, init_cfg) - ``` - -4. 初始化继承自BaseModule、Sequential、ModuleList的模型 - - `BaseModule` 继承自 `torch.nn.Module`, 它们之间唯一的不同是 `BaseModule` 实现了 `init_weight` - - `Sequential` 继承自 `BaseModule` 和 `torch.nn.Sequential` - - `ModuleList` 继承自 `BaseModule` 和 `torch.nn.ModuleList` - - `````python - import torch.nn as nn - from mmcv.runner import BaseModule, Sequential, ModuleList - - class FooConv1d(BaseModule): - - def __init__(self, init_cfg=None): - super().__init__(init_cfg) - self.conv1d = nn.Conv1d(4, 1, 4) - - def forward(self, x): - return self.conv1d(x) - - class FooConv2d(BaseModule): - - def __init__(self, init_cfg=None): - super().__init__(init_cfg) - self.conv2d = nn.Conv2d(3, 1, 3) - - def forward(self, x): - return self.conv2d(x) - - # BaseModule - init_cfg = dict(type='Constant', layer='Conv1d', val=0., bias=1.) - model = FooConv1d(init_cfg) - model.init_weights() - # model.conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - - # Sequential - init_cfg1 = dict(type='Constant', layer='Conv1d', val=0., bias=1.) - init_cfg2 = dict(type='Constant', layer='Conv2d', val=2., bias=3.) - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - seq_model = Sequential(model1, model2) - seq_model.init_weights() - # seq_model[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # seq_model[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # inner init_cfg has higher priority - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) - seq_model = Sequential(model1, model2, init_cfg=init_cfg) - seq_model.init_weights() - # seq_model[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # seq_model[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # ModuleList - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - modellist = ModuleList([model1, model2]) - modellist.init_weights() - # modellist[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # modellist[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - - # inner init_cfg has higher priority - model1 = FooConv1d(init_cfg1) - model2 = FooConv2d(init_cfg2) - init_cfg = dict(type='Constant', layer=['Conv1d', 'Conv2d'], val=4., bias=5.) - modellist = ModuleList([model1, model2], init_cfg=init_cfg) - modellist.init_weights() - # modellist[0].conv1d.weight - # Parameter containing: - # tensor([[[0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.], - # [0., 0., 0., 0.]]], requires_grad=True) - # modellist[1].conv2d.weight - # Parameter containing: - # tensor([[[[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]], - # ..., - # [[2., 2., 2.], - # [2., 2., 2.], - # [2., 2., 2.]]]], requires_grad=True) - ````` - -### Model Zoo - -除了`torchvision`的预训练模型,我们还提供以下 CNN 的预训练模型: - -- VGG Caffe -- ResNet Caffe -- ResNeXt -- ResNet with Group Normalization -- ResNet with Group Normalization and Weight Standardization -- HRNetV2 -- Res2Net -- RegNet - -#### Model URLs in JSON - -MMCV中的Model Zoo Link 由 JSON 文件管理。 json 文件由模型名称及其url或path的键值对组成,一个json文件可能类似于: - -```json -{ - "model_a": "https://example.com/models/model_a_9e5bac.pth", - "model_b": "pretrain/model_b_ab3ef2c.pth" -} -``` - -可以在[此处](https://github.com/open-mmlab/mmcv/blob/master/mmcv/model_zoo/open_mmlab.json)找到托管在 OpenMMLab AWS 上的预训练模型的默认链接。 - -你可以通过将 `open-mmlab.json` 放在 `MMCV_HOME`下来覆盖默认链接,如果在环境中找不到`MMCV_HOME`,则默认使用 `~/.cache/mmcv`。当然你也可以使用命令 `export MMCV_HOME=/your/path`来设置自己的路径。 - -外部的json文件将被合并为默认文件,如果相同的键出现在外部`json`和默认`json`中,则将使用外部`json`。 - -#### Load Checkpoint - -`mmcv.load_checkpoint()`的参数`filename`支持以下类型: - -- filepath: `checkpoint`路径 -- `http://xxx` and `https://xxx`: 下载checkpoint的链接,文件名中必需包含`SHA256`后缀 -- `torchvision://xxx`: `torchvision.models`中的模型链接,更多细节参考 [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) -- `open-mmlab://xxx`: 默认和其他 json 文件中提供的模型链接或文件路径 diff --git a/docs_zh_CN/understand_mmcv/ops.md b/docs_zh_CN/understand_mmcv/ops.md deleted file mode 100644 index a45bb14..0000000 --- a/docs_zh_CN/understand_mmcv/ops.md +++ /dev/null @@ -1,36 +0,0 @@ -## CUDA 算子 - -MMCV 提供了检测、分割等任务中常用的 CUDA 算子 - -- AssignScoreWithK -- BallQuery -- BBoxOverlaps -- CARAFE -- CrissCrossAttention -- ContextBlock -- CornerPool -- Deformable Convolution v1/v2 -- Deformable RoIPool -- DynamicScatter -- GatherPoints -- FurthestPointSample -- FurthestPointSampleWithDist -- GeneralizedAttention -- KNN -- MaskedConv -- NMS -- PSAMask -- RoIPointPool3d -- RoIPool -- RoIAlign -- RoIAwarePool3d -- SimpleRoIAlign -- SigmoidFocalLoss -- SoftmaxFocalLoss -- SoftNMS -- Synchronized BatchNorm -- Voxelization -- ThreeInterpolate -- ThreeNN -- Weight standardization -- Correlation diff --git a/examples/train.py b/examples/train.py index 2dbdfee..b08d36b 100644 --- a/examples/train.py +++ b/examples/train.py @@ -14,7 +14,7 @@ from mmcv.utils import get_logger class Model(nn.Module): def __init__(self): - super(Model, self).__init__() + super().__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) diff --git a/mmcv/__init__.py b/mmcv/__init__.py index 210a298..14c556a 100644 --- a/mmcv/__init__.py +++ b/mmcv/__init__.py @@ -13,3 +13,4 @@ from .visualization import * # - runner # - parallel # - op +# - device diff --git a/mmcv/arraymisc/quantization.py b/mmcv/arraymisc/quantization.py index 8e47a35..6182710 100644 --- a/mmcv/arraymisc/quantization.py +++ b/mmcv/arraymisc/quantization.py @@ -1,14 +1,20 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Union + import numpy as np -def quantize(arr, min_val, max_val, levels, dtype=np.int64): +def quantize(arr: np.ndarray, + min_val: Union[int, float], + max_val: Union[int, float], + levels: int, + dtype=np.int64) -> tuple: """Quantize an array of (-inf, inf) to [0, levels-1]. Args: arr (ndarray): Input array. - min_val (scalar): Minimum value to be clipped. - max_val (scalar): Maximum value to be clipped. + min_val (int or float): Minimum value to be clipped. + max_val (int or float): Maximum value to be clipped. levels (int): Quantization levels. dtype (np.type): The type of the quantized array. @@ -29,13 +35,17 @@ def quantize(arr, min_val, max_val, levels, dtype=np.int64): return quantized_arr -def dequantize(arr, min_val, max_val, levels, dtype=np.float64): +def dequantize(arr: np.ndarray, + min_val: Union[int, float], + max_val: Union[int, float], + levels: int, + dtype=np.float64) -> tuple: """Dequantize an array. Args: arr (ndarray): Input array. - min_val (scalar): Minimum value to be clipped. - max_val (scalar): Maximum value to be clipped. + min_val (int or float): Minimum value to be clipped. + max_val (int or float): Maximum value to be clipped. levels (int): Quantization levels. dtype (np.type): The type of the dequantized array. diff --git a/mmcv/cnn/alexnet.py b/mmcv/cnn/alexnet.py index 89e36b8..4d45d96 100644 --- a/mmcv/cnn/alexnet.py +++ b/mmcv/cnn/alexnet.py @@ -1,6 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. import logging +from typing import Optional +import torch import torch.nn as nn @@ -11,8 +13,8 @@ class AlexNet(nn.Module): num_classes (int): number of classes for classification. """ - def __init__(self, num_classes=-1): - super(AlexNet, self).__init__() + def __init__(self, num_classes: int = -1): + super().__init__() self.num_classes = num_classes self.features = nn.Sequential( nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2), @@ -40,7 +42,7 @@ class AlexNet(nn.Module): nn.Linear(4096, num_classes), ) - def init_weights(self, pretrained=None): + def init_weights(self, pretrained: Optional[str] = None) -> None: if isinstance(pretrained, str): logger = logging.getLogger() from ..runner import load_checkpoint @@ -51,7 +53,7 @@ class AlexNet(nn.Module): else: raise TypeError('pretrained must be a str or None') - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: x = self.features(x) if self.num_classes > 0: diff --git a/mmcv/cnn/bricks/activation.py b/mmcv/cnn/bricks/activation.py index 79f1988..23e6272 100644 --- a/mmcv/cnn/bricks/activation.py +++ b/mmcv/cnn/bricks/activation.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict + import torch import torch.nn as nn import torch.nn.functional as F @@ -28,12 +30,12 @@ class Clamp(nn.Module): Default to 1. """ - def __init__(self, min=-1., max=1.): - super(Clamp, self).__init__() + def __init__(self, min: float = -1., max: float = 1.): + super().__init__() self.min = min self.max = max - def forward(self, x): + def forward(self, x) -> torch.Tensor: """Forward function. Args: @@ -67,7 +69,7 @@ class GELU(nn.Module): >>> output = m(input) """ - def forward(self, input): + def forward(self, input: torch.Tensor) -> torch.Tensor: return F.gelu(input) @@ -78,11 +80,12 @@ else: ACTIVATION_LAYERS.register_module(module=nn.GELU) -def build_activation_layer(cfg): +def build_activation_layer(cfg: Dict) -> nn.Module: """Build activation layer. Args: cfg (dict): The activation layer config, which should contain: + - type (str): Layer type. - layer args: Args needed to instantiate an activation layer. diff --git a/mmcv/cnn/bricks/context_block.py b/mmcv/cnn/bricks/context_block.py index d60fdb9..15669ca 100644 --- a/mmcv/cnn/bricks/context_block.py +++ b/mmcv/cnn/bricks/context_block.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Union + import torch from torch import nn @@ -6,7 +8,7 @@ from ..utils import constant_init, kaiming_init from .registry import PLUGIN_LAYERS -def last_zero_init(m): +def last_zero_init(m: Union[nn.Module, nn.Sequential]) -> None: if isinstance(m, nn.Sequential): constant_init(m[-1], val=0) else: @@ -34,11 +36,11 @@ class ContextBlock(nn.Module): _abbr_ = 'context_block' def __init__(self, - in_channels, - ratio, - pooling_type='att', - fusion_types=('channel_add', )): - super(ContextBlock, self).__init__() + in_channels: int, + ratio: float, + pooling_type: str = 'att', + fusion_types: tuple = ('channel_add', )): + super().__init__() assert pooling_type in ['avg', 'att'] assert isinstance(fusion_types, (list, tuple)) valid_fusion_types = ['channel_add', 'channel_mul'] @@ -82,7 +84,7 @@ class ContextBlock(nn.Module): if self.channel_mul_conv is not None: last_zero_init(self.channel_mul_conv) - def spatial_pool(self, x): + def spatial_pool(self, x: torch.Tensor) -> torch.Tensor: batch, channel, height, width = x.size() if self.pooling_type == 'att': input_x = x @@ -108,7 +110,7 @@ class ContextBlock(nn.Module): return context - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: # [N, C, 1, 1] context = self.spatial_pool(x) diff --git a/mmcv/cnn/bricks/conv.py b/mmcv/cnn/bricks/conv.py index cf54491..147517e 100644 --- a/mmcv/cnn/bricks/conv.py +++ b/mmcv/cnn/bricks/conv.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict, Optional + from torch import nn from .registry import CONV_LAYERS @@ -9,7 +11,7 @@ CONV_LAYERS.register_module('Conv3d', module=nn.Conv3d) CONV_LAYERS.register_module('Conv', module=nn.Conv2d) -def build_conv_layer(cfg, *args, **kwargs): +def build_conv_layer(cfg: Optional[Dict], *args, **kwargs) -> nn.Module: """Build convolution layer. Args: @@ -35,7 +37,7 @@ def build_conv_layer(cfg, *args, **kwargs): layer_type = cfg_.pop('type') if layer_type not in CONV_LAYERS: - raise KeyError(f'Unrecognized norm type {layer_type}') + raise KeyError(f'Unrecognized layer type {layer_type}') else: conv_layer = CONV_LAYERS.get(layer_type) diff --git a/mmcv/cnn/bricks/conv2d_adaptive_padding.py b/mmcv/cnn/bricks/conv2d_adaptive_padding.py index b45e758..6a7a1d2 100644 --- a/mmcv/cnn/bricks/conv2d_adaptive_padding.py +++ b/mmcv/cnn/bricks/conv2d_adaptive_padding.py @@ -1,6 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. import math +from typing import Tuple, Union +import torch from torch import nn from torch.nn import functional as F @@ -31,18 +33,18 @@ class Conv2dAdaptivePadding(nn.Conv2d): """ def __init__(self, - in_channels, - out_channels, - kernel_size, - stride=1, - padding=0, - dilation=1, - groups=1, - bias=True): + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int]], + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + groups: int = 1, + bias: bool = True): super().__init__(in_channels, out_channels, kernel_size, stride, 0, dilation, groups, bias) - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: img_h, img_w = x.size()[-2:] kernel_h, kernel_w = self.weight.size()[-2:] stride_h, stride_w = self.stride diff --git a/mmcv/cnn/bricks/conv_module.py b/mmcv/cnn/bricks/conv_module.py index 4f19f1d..b5d4a8c 100644 --- a/mmcv/cnn/bricks/conv_module.py +++ b/mmcv/cnn/bricks/conv_module.py @@ -1,6 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. import warnings +from typing import Dict, Optional, Tuple, Union +import torch import torch.nn as nn from mmcv.utils import _BatchNorm, _InstanceNorm @@ -68,22 +70,22 @@ class ConvModule(nn.Module): _abbr_ = 'conv_block' def __init__(self, - in_channels, - out_channels, - kernel_size, - stride=1, - padding=0, - dilation=1, - groups=1, - bias='auto', - conv_cfg=None, - norm_cfg=None, - act_cfg=dict(type='ReLU'), - inplace=True, - with_spectral_norm=False, - padding_mode='zeros', - order=('conv', 'norm', 'act')): - super(ConvModule, self).__init__() + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int]], + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + groups: int = 1, + bias: Union[bool, str] = 'auto', + conv_cfg: Optional[Dict] = None, + norm_cfg: Optional[Dict] = None, + act_cfg: Optional[Dict] = dict(type='ReLU'), + inplace: bool = True, + with_spectral_norm: bool = False, + padding_mode: str = 'zeros', + order: tuple = ('conv', 'norm', 'act')): + super().__init__() assert conv_cfg is None or isinstance(conv_cfg, dict) assert norm_cfg is None or isinstance(norm_cfg, dict) assert act_cfg is None or isinstance(act_cfg, dict) @@ -96,7 +98,7 @@ class ConvModule(nn.Module): self.with_explicit_padding = padding_mode not in official_padding_mode self.order = order assert isinstance(self.order, tuple) and len(self.order) == 3 - assert set(order) == set(['conv', 'norm', 'act']) + assert set(order) == {'conv', 'norm', 'act'} self.with_norm = norm_cfg is not None self.with_activation = act_cfg is not None @@ -143,21 +145,22 @@ class ConvModule(nn.Module): norm_channels = out_channels else: norm_channels = in_channels - self.norm_name, norm = build_norm_layer(norm_cfg, norm_channels) + self.norm_name, norm = build_norm_layer( + norm_cfg, norm_channels) # type: ignore self.add_module(self.norm_name, norm) if self.with_bias: if isinstance(norm, (_BatchNorm, _InstanceNorm)): warnings.warn( 'Unnecessary conv bias before batch/instance norm') else: - self.norm_name = None + self.norm_name = None # type: ignore # build activation layer if self.with_activation: - act_cfg_ = act_cfg.copy() + act_cfg_ = act_cfg.copy() # type: ignore # nn.Tanh has no 'inplace' argument if act_cfg_['type'] not in [ - 'Tanh', 'PReLU', 'Sigmoid', 'HSigmoid', 'Swish' + 'Tanh', 'PReLU', 'Sigmoid', 'HSigmoid', 'Swish', 'GELU' ]: act_cfg_.setdefault('inplace', inplace) self.activate = build_activation_layer(act_cfg_) @@ -193,7 +196,10 @@ class ConvModule(nn.Module): if self.with_norm: constant_init(self.norm, 1, bias=0) - def forward(self, x, activate=True, norm=True): + def forward(self, + x: torch.Tensor, + activate: bool = True, + norm: bool = True) -> torch.Tensor: for layer in self.order: if layer == 'conv': if self.with_explicit_padding: diff --git a/mmcv/cnn/bricks/conv_ws.py b/mmcv/cnn/bricks/conv_ws.py index a3941e2..6569f92 100644 --- a/mmcv/cnn/bricks/conv_ws.py +++ b/mmcv/cnn/bricks/conv_ws.py @@ -1,4 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. +from collections import OrderedDict +from typing import Dict, List, Optional, Tuple, Union + import torch import torch.nn as nn import torch.nn.functional as F @@ -6,14 +9,14 @@ import torch.nn.functional as F from .registry import CONV_LAYERS -def conv_ws_2d(input, - weight, - bias=None, - stride=1, - padding=0, - dilation=1, - groups=1, - eps=1e-5): +def conv_ws_2d(input: torch.Tensor, + weight: torch.Tensor, + bias: Optional[torch.Tensor] = None, + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + groups: int = 1, + eps: float = 1e-5) -> torch.Tensor: c_in = weight.size(0) weight_flat = weight.view(c_in, -1) mean = weight_flat.mean(dim=1, keepdim=True).view(c_in, 1, 1, 1) @@ -26,16 +29,16 @@ def conv_ws_2d(input, class ConvWS2d(nn.Conv2d): def __init__(self, - in_channels, - out_channels, - kernel_size, - stride=1, - padding=0, - dilation=1, - groups=1, - bias=True, - eps=1e-5): - super(ConvWS2d, self).__init__( + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int]], + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + groups: int = 1, + bias: bool = True, + eps: float = 1e-5): + super().__init__( in_channels, out_channels, kernel_size, @@ -46,7 +49,7 @@ class ConvWS2d(nn.Conv2d): bias=bias) self.eps = eps - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: return conv_ws_2d(x, self.weight, self.bias, self.stride, self.padding, self.dilation, self.groups, self.eps) @@ -76,14 +79,14 @@ class ConvAWS2d(nn.Conv2d): """ def __init__(self, - in_channels, - out_channels, - kernel_size, - stride=1, - padding=0, - dilation=1, - groups=1, - bias=True): + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int]], + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + groups: int = 1, + bias: bool = True): super().__init__( in_channels, out_channels, @@ -98,7 +101,7 @@ class ConvAWS2d(nn.Conv2d): self.register_buffer('weight_beta', torch.zeros(self.out_channels, 1, 1, 1)) - def _get_weight(self, weight): + def _get_weight(self, weight: torch.Tensor) -> torch.Tensor: weight_flat = weight.view(weight.size(0), -1) mean = weight_flat.mean(dim=1).view(-1, 1, 1, 1) std = torch.sqrt(weight_flat.var(dim=1) + 1e-5).view(-1, 1, 1, 1) @@ -106,13 +109,16 @@ class ConvAWS2d(nn.Conv2d): weight = self.weight_gamma * weight + self.weight_beta return weight - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: weight = self._get_weight(self.weight) return F.conv2d(x, weight, self.bias, self.stride, self.padding, self.dilation, self.groups) - def _load_from_state_dict(self, state_dict, prefix, local_metadata, strict, - missing_keys, unexpected_keys, error_msgs): + def _load_from_state_dict(self, state_dict: OrderedDict, prefix: str, + local_metadata: Dict, strict: bool, + missing_keys: List[str], + unexpected_keys: List[str], + error_msgs: List[str]) -> None: """Override default load function. AWS overrides the function _load_from_state_dict to recover @@ -124,7 +130,7 @@ class ConvAWS2d(nn.Conv2d): """ self.weight_gamma.data.fill_(-1) - local_missing_keys = [] + local_missing_keys: List = [] super()._load_from_state_dict(state_dict, prefix, local_metadata, strict, local_missing_keys, unexpected_keys, error_msgs) diff --git a/mmcv/cnn/bricks/depthwise_separable_conv_module.py b/mmcv/cnn/bricks/depthwise_separable_conv_module.py index 722d5d8..cf1fe4c 100644 --- a/mmcv/cnn/bricks/depthwise_separable_conv_module.py +++ b/mmcv/cnn/bricks/depthwise_separable_conv_module.py @@ -1,4 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict, Optional, Tuple, Union + +import torch import torch.nn as nn from .conv_module import ConvModule @@ -46,27 +49,27 @@ class DepthwiseSeparableConvModule(nn.Module): """ def __init__(self, - in_channels, - out_channels, - kernel_size, - stride=1, - padding=0, - dilation=1, - norm_cfg=None, - act_cfg=dict(type='ReLU'), - dw_norm_cfg='default', - dw_act_cfg='default', - pw_norm_cfg='default', - pw_act_cfg='default', + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int]], + stride: Union[int, Tuple[int, int]] = 1, + padding: Union[int, Tuple[int, int]] = 0, + dilation: Union[int, Tuple[int, int]] = 1, + norm_cfg: Optional[Dict] = None, + act_cfg: Dict = dict(type='ReLU'), + dw_norm_cfg: Union[Dict, str] = 'default', + dw_act_cfg: Union[Dict, str] = 'default', + pw_norm_cfg: Union[Dict, str] = 'default', + pw_act_cfg: Union[Dict, str] = 'default', **kwargs): - super(DepthwiseSeparableConvModule, self).__init__() + super().__init__() assert 'groups' not in kwargs, 'groups should not be specified' # if norm/activation config of depthwise/pointwise ConvModule is not # specified, use default config. - dw_norm_cfg = dw_norm_cfg if dw_norm_cfg != 'default' else norm_cfg + dw_norm_cfg = dw_norm_cfg if dw_norm_cfg != 'default' else norm_cfg # type: ignore # noqa E501 dw_act_cfg = dw_act_cfg if dw_act_cfg != 'default' else act_cfg - pw_norm_cfg = pw_norm_cfg if pw_norm_cfg != 'default' else norm_cfg + pw_norm_cfg = pw_norm_cfg if pw_norm_cfg != 'default' else norm_cfg # type: ignore # noqa E501 pw_act_cfg = pw_act_cfg if pw_act_cfg != 'default' else act_cfg # depthwise convolution @@ -78,19 +81,19 @@ class DepthwiseSeparableConvModule(nn.Module): padding=padding, dilation=dilation, groups=in_channels, - norm_cfg=dw_norm_cfg, - act_cfg=dw_act_cfg, + norm_cfg=dw_norm_cfg, # type: ignore + act_cfg=dw_act_cfg, # type: ignore **kwargs) self.pointwise_conv = ConvModule( in_channels, out_channels, 1, - norm_cfg=pw_norm_cfg, - act_cfg=pw_act_cfg, + norm_cfg=pw_norm_cfg, # type: ignore + act_cfg=pw_act_cfg, # type: ignore **kwargs) - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: x = self.depthwise_conv(x) x = self.pointwise_conv(x) return x diff --git a/mmcv/cnn/bricks/drop.py b/mmcv/cnn/bricks/drop.py index b0a0266..ea05221 100644 --- a/mmcv/cnn/bricks/drop.py +++ b/mmcv/cnn/bricks/drop.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Any, Dict, Optional + import torch import torch.nn as nn @@ -6,7 +8,9 @@ from mmcv import build_from_cfg from .registry import DROPOUT_LAYERS -def drop_path(x, drop_prob=0., training=False): +def drop_path(x: torch.Tensor, + drop_prob: float = 0., + training: bool = False) -> torch.Tensor: """Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks). @@ -36,11 +40,11 @@ class DropPath(nn.Module): drop_prob (float): Probability of the path to be zeroed. Default: 0.1 """ - def __init__(self, drop_prob=0.1): - super(DropPath, self).__init__() + def __init__(self, drop_prob: float = 0.1): + super().__init__() self.drop_prob = drop_prob - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: return drop_path(x, self.drop_prob, self.training) @@ -56,10 +60,10 @@ class Dropout(nn.Dropout): inplace (bool): Do the operation inplace or not. Default: False. """ - def __init__(self, drop_prob=0.5, inplace=False): + def __init__(self, drop_prob: float = 0.5, inplace: bool = False): super().__init__(p=drop_prob, inplace=inplace) -def build_dropout(cfg, default_args=None): +def build_dropout(cfg: Dict, default_args: Optional[Dict] = None) -> Any: """Builder for drop out layers.""" return build_from_cfg(cfg, DROPOUT_LAYERS, default_args) diff --git a/mmcv/cnn/bricks/generalized_attention.py b/mmcv/cnn/bricks/generalized_attention.py index 988d9ad..118e39c 100644 --- a/mmcv/cnn/bricks/generalized_attention.py +++ b/mmcv/cnn/bricks/generalized_attention.py @@ -45,16 +45,16 @@ class GeneralizedAttention(nn.Module): _abbr_ = 'gen_attention_block' def __init__(self, - in_channels, - spatial_range=-1, - num_heads=9, - position_embedding_dim=-1, - position_magnitude=1, - kv_stride=2, - q_stride=1, - attention_type='1111'): + in_channels: int, + spatial_range: int = -1, + num_heads: int = 9, + position_embedding_dim: int = -1, + position_magnitude: int = 1, + kv_stride: int = 2, + q_stride: int = 1, + attention_type: str = '1111'): - super(GeneralizedAttention, self).__init__() + super().__init__() # hard range means local range for non-local operation self.position_embedding_dim = ( @@ -131,7 +131,7 @@ class GeneralizedAttention(nn.Module): max_len_kv = int((max_len - 1.0) / self.kv_stride + 1) local_constraint_map = np.ones( - (max_len, max_len, max_len_kv, max_len_kv), dtype=np.int) + (max_len, max_len, max_len_kv, max_len_kv), dtype=int) for iy in range(max_len): for ix in range(max_len): local_constraint_map[ @@ -213,7 +213,7 @@ class GeneralizedAttention(nn.Module): return embedding_x, embedding_y - def forward(self, x_input): + def forward(self, x_input: torch.Tensor) -> torch.Tensor: num_heads = self.num_heads # use empirical_attention @@ -351,7 +351,7 @@ class GeneralizedAttention(nn.Module): repeat(n, 1, 1, 1) position_feat_x_reshape = position_feat_x.\ - view(n, num_heads, w*w_kv, self.qk_embed_dim) + view(n, num_heads, w * w_kv, self.qk_embed_dim) position_feat_y_reshape = position_feat_y.\ view(n, num_heads, h * h_kv, self.qk_embed_dim) diff --git a/mmcv/cnn/bricks/hsigmoid.py b/mmcv/cnn/bricks/hsigmoid.py index 30b1a3d..5eb97e8 100644 --- a/mmcv/cnn/bricks/hsigmoid.py +++ b/mmcv/cnn/bricks/hsigmoid.py @@ -1,4 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import torch import torch.nn as nn from .registry import ACTIVATION_LAYERS @@ -8,11 +11,15 @@ from .registry import ACTIVATION_LAYERS class HSigmoid(nn.Module): """Hard Sigmoid Module. Apply the hard sigmoid function: Hsigmoid(x) = min(max((x + bias) / divisor, min_value), max_value) - Default: Hsigmoid(x) = min(max((x + 1) / 2, 0), 1) + Default: Hsigmoid(x) = min(max((x + 3) / 6, 0), 1) + + Note: + In MMCV v1.4.4, we modified the default value of args to align with + PyTorch official. Args: - bias (float): Bias of the input feature map. Default: 1.0. - divisor (float): Divisor of the input feature map. Default: 2.0. + bias (float): Bias of the input feature map. Default: 3.0. + divisor (float): Divisor of the input feature map. Default: 6.0. min_value (float): Lower bound value. Default: 0.0. max_value (float): Upper bound value. Default: 1.0. @@ -20,15 +27,25 @@ class HSigmoid(nn.Module): Tensor: The output tensor. """ - def __init__(self, bias=1.0, divisor=2.0, min_value=0.0, max_value=1.0): - super(HSigmoid, self).__init__() + def __init__(self, + bias: float = 3.0, + divisor: float = 6.0, + min_value: float = 0.0, + max_value: float = 1.0): + super().__init__() + warnings.warn( + 'In MMCV v1.4.4, we modified the default value of args to align ' + 'with PyTorch official. Previous Implementation: ' + 'Hsigmoid(x) = min(max((x + 1) / 2, 0), 1). ' + 'Current Implementation: ' + 'Hsigmoid(x) = min(max((x + 3) / 6, 0), 1).') self.bias = bias self.divisor = divisor assert self.divisor != 0 self.min_value = min_value self.max_value = max_value - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: x = (x + self.bias) / self.divisor return x.clamp_(self.min_value, self.max_value) diff --git a/mmcv/cnn/bricks/hswish.py b/mmcv/cnn/bricks/hswish.py index 7e0c090..6f6cc27 100644 --- a/mmcv/cnn/bricks/hswish.py +++ b/mmcv/cnn/bricks/hswish.py @@ -1,10 +1,11 @@ # Copyright (c) OpenMMLab. All rights reserved. +import torch import torch.nn as nn +from mmcv.utils import TORCH_VERSION, digit_version from .registry import ACTIVATION_LAYERS -@ACTIVATION_LAYERS.register_module() class HSwish(nn.Module): """Hard Swish Module. @@ -21,9 +22,18 @@ class HSwish(nn.Module): Tensor: The output tensor. """ - def __init__(self, inplace=False): - super(HSwish, self).__init__() + def __init__(self, inplace: bool = False): + super().__init__() self.act = nn.ReLU6(inplace) - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: return x * self.act(x + 3) / 6 + + +if (TORCH_VERSION == 'parrots' + or digit_version(TORCH_VERSION) < digit_version('1.7')): + # Hardswish is not supported when PyTorch version < 1.6. + # And Hardswish in PyTorch 1.6 does not support inplace. + ACTIVATION_LAYERS.register_module(module=HSwish) +else: + ACTIVATION_LAYERS.register_module(module=nn.Hardswish, name='HSwish') diff --git a/mmcv/cnn/bricks/non_local.py b/mmcv/cnn/bricks/non_local.py index 92d0015..159db24 100644 --- a/mmcv/cnn/bricks/non_local.py +++ b/mmcv/cnn/bricks/non_local.py @@ -1,5 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. from abc import ABCMeta +from typing import Dict, Optional import torch import torch.nn as nn @@ -33,14 +34,14 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): """ def __init__(self, - in_channels, - reduction=2, - use_scale=True, - conv_cfg=None, - norm_cfg=None, - mode='embedded_gaussian', + in_channels: int, + reduction: int = 2, + use_scale: bool = True, + conv_cfg: Optional[Dict] = None, + norm_cfg: Optional[Dict] = None, + mode: str = 'embedded_gaussian', **kwargs): - super(_NonLocalNd, self).__init__() + super().__init__() self.in_channels = in_channels self.reduction = reduction self.use_scale = use_scale @@ -61,7 +62,7 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): self.inter_channels, kernel_size=1, conv_cfg=conv_cfg, - act_cfg=None) + act_cfg=None) # type: ignore self.conv_out = ConvModule( self.inter_channels, self.in_channels, @@ -96,7 +97,7 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): self.init_weights(**kwargs) - def init_weights(self, std=0.01, zeros_init=True): + def init_weights(self, std: float = 0.01, zeros_init: bool = True) -> None: if self.mode != 'gaussian': for m in [self.g, self.theta, self.phi]: normal_init(m.conv, std=std) @@ -113,7 +114,8 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): else: normal_init(self.conv_out.norm, std=std) - def gaussian(self, theta_x, phi_x): + def gaussian(self, theta_x: torch.Tensor, + phi_x: torch.Tensor) -> torch.Tensor: # NonLocal1d pairwise_weight: [N, H, H] # NonLocal2d pairwise_weight: [N, HxW, HxW] # NonLocal3d pairwise_weight: [N, TxHxW, TxHxW] @@ -121,7 +123,8 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): pairwise_weight = pairwise_weight.softmax(dim=-1) return pairwise_weight - def embedded_gaussian(self, theta_x, phi_x): + def embedded_gaussian(self, theta_x: torch.Tensor, + phi_x: torch.Tensor) -> torch.Tensor: # NonLocal1d pairwise_weight: [N, H, H] # NonLocal2d pairwise_weight: [N, HxW, HxW] # NonLocal3d pairwise_weight: [N, TxHxW, TxHxW] @@ -132,7 +135,8 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): pairwise_weight = pairwise_weight.softmax(dim=-1) return pairwise_weight - def dot_product(self, theta_x, phi_x): + def dot_product(self, theta_x: torch.Tensor, + phi_x: torch.Tensor) -> torch.Tensor: # NonLocal1d pairwise_weight: [N, H, H] # NonLocal2d pairwise_weight: [N, HxW, HxW] # NonLocal3d pairwise_weight: [N, TxHxW, TxHxW] @@ -140,7 +144,8 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): pairwise_weight /= pairwise_weight.shape[-1] return pairwise_weight - def concatenation(self, theta_x, phi_x): + def concatenation(self, theta_x: torch.Tensor, + phi_x: torch.Tensor) -> torch.Tensor: # NonLocal1d pairwise_weight: [N, H, H] # NonLocal2d pairwise_weight: [N, HxW, HxW] # NonLocal3d pairwise_weight: [N, TxHxW, TxHxW] @@ -157,7 +162,7 @@ class _NonLocalNd(nn.Module, metaclass=ABCMeta): return pairwise_weight - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: # Assume `reduction = 1`, then `inter_channels = C` # or `inter_channels = C` when `mode="gaussian"` @@ -224,12 +229,11 @@ class NonLocal1d(_NonLocalNd): """ def __init__(self, - in_channels, - sub_sample=False, - conv_cfg=dict(type='Conv1d'), + in_channels: int, + sub_sample: bool = False, + conv_cfg: Dict = dict(type='Conv1d'), **kwargs): - super(NonLocal1d, self).__init__( - in_channels, conv_cfg=conv_cfg, **kwargs) + super().__init__(in_channels, conv_cfg=conv_cfg, **kwargs) self.sub_sample = sub_sample @@ -258,12 +262,11 @@ class NonLocal2d(_NonLocalNd): _abbr_ = 'nonlocal_block' def __init__(self, - in_channels, - sub_sample=False, - conv_cfg=dict(type='Conv2d'), + in_channels: int, + sub_sample: bool = False, + conv_cfg: Dict = dict(type='Conv2d'), **kwargs): - super(NonLocal2d, self).__init__( - in_channels, conv_cfg=conv_cfg, **kwargs) + super().__init__(in_channels, conv_cfg=conv_cfg, **kwargs) self.sub_sample = sub_sample @@ -289,12 +292,11 @@ class NonLocal3d(_NonLocalNd): """ def __init__(self, - in_channels, - sub_sample=False, - conv_cfg=dict(type='Conv3d'), + in_channels: int, + sub_sample: bool = False, + conv_cfg: Dict = dict(type='Conv3d'), **kwargs): - super(NonLocal3d, self).__init__( - in_channels, conv_cfg=conv_cfg, **kwargs) + super().__init__(in_channels, conv_cfg=conv_cfg, **kwargs) self.sub_sample = sub_sample if sub_sample: diff --git a/mmcv/cnn/bricks/norm.py b/mmcv/cnn/bricks/norm.py index cfb326b..b6281a7 100644 --- a/mmcv/cnn/bricks/norm.py +++ b/mmcv/cnn/bricks/norm.py @@ -1,5 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. import inspect +from typing import Dict, Tuple, Union import torch.nn as nn @@ -69,7 +70,9 @@ def infer_abbr(class_type): return 'norm_layer' -def build_norm_layer(cfg, num_features, postfix=''): +def build_norm_layer(cfg: Dict, + num_features: int, + postfix: Union[int, str] = '') -> Tuple[str, nn.Module]: """Build normalization layer. Args: @@ -83,9 +86,9 @@ def build_norm_layer(cfg, num_features, postfix=''): to create named layer. Returns: - (str, nn.Module): The first element is the layer name consisting of - abbreviation and postfix, e.g., bn1, gn. The second element is the - created norm layer. + tuple[str, nn.Module]: The first element is the layer name consisting + of abbreviation and postfix, e.g., bn1, gn. The second element is the + created norm layer. """ if not isinstance(cfg, dict): raise TypeError('cfg must be a dict') @@ -119,7 +122,8 @@ def build_norm_layer(cfg, num_features, postfix=''): return name, layer -def is_norm(layer, exclude=None): +def is_norm(layer: nn.Module, + exclude: Union[type, tuple, None] = None) -> bool: """Check if a layer is a normalization layer. Args: diff --git a/mmcv/cnn/bricks/padding.py b/mmcv/cnn/bricks/padding.py index e4ac6b2..8412b0c 100644 --- a/mmcv/cnn/bricks/padding.py +++ b/mmcv/cnn/bricks/padding.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict + import torch.nn as nn from .registry import PADDING_LAYERS @@ -8,11 +10,11 @@ PADDING_LAYERS.register_module('reflect', module=nn.ReflectionPad2d) PADDING_LAYERS.register_module('replicate', module=nn.ReplicationPad2d) -def build_padding_layer(cfg, *args, **kwargs): +def build_padding_layer(cfg: Dict, *args, **kwargs) -> nn.Module: """Build padding layer. Args: - cfg (None or dict): The padding layer config, which should contain: + cfg (dict): The padding layer config, which should contain: - type (str): Layer type. - layer args: Args needed to instantiate a padding layer. diff --git a/mmcv/cnn/bricks/plugin.py b/mmcv/cnn/bricks/plugin.py index 07c010d..095ef92 100644 --- a/mmcv/cnn/bricks/plugin.py +++ b/mmcv/cnn/bricks/plugin.py @@ -1,15 +1,19 @@ +# Copyright (c) OpenMMLab. All rights reserved. import inspect import platform +from typing import Dict, Tuple, Union + +import torch.nn as nn from .registry import PLUGIN_LAYERS if platform.system() == 'Windows': - import regex as re + import regex as re # type: ignore else: - import re + import re # type: ignore -def infer_abbr(class_type): +def infer_abbr(class_type: type) -> str: """Infer abbreviation from the class name. This method will infer the abbreviation to map class types to @@ -47,25 +51,27 @@ def infer_abbr(class_type): raise TypeError( f'class_type must be a type, but got {type(class_type)}') if hasattr(class_type, '_abbr_'): - return class_type._abbr_ + return class_type._abbr_ # type: ignore else: return camel2snack(class_type.__name__) -def build_plugin_layer(cfg, postfix='', **kwargs): +def build_plugin_layer(cfg: Dict, + postfix: Union[int, str] = '', + **kwargs) -> Tuple[str, nn.Module]: """Build plugin layer. Args: - cfg (None or dict): cfg should contain: - type (str): identify plugin layer type. - layer args: args needed to instantiate a plugin layer. + cfg (dict): cfg should contain: + + - type (str): identify plugin layer type. + - layer args: args needed to instantiate a plugin layer. postfix (int, str): appended into norm abbreviation to create named layer. Default: ''. Returns: - tuple[str, nn.Module]: - name (str): abbreviation + postfix - layer (nn.Module): created plugin layer + tuple[str, nn.Module]: The first one is the concatenation of + abbreviation and postfix. The second is the created plugin layer. """ if not isinstance(cfg, dict): raise TypeError('cfg must be a dict') diff --git a/mmcv/cnn/bricks/scale.py b/mmcv/cnn/bricks/scale.py index c905fff..dbd07c6 100644 --- a/mmcv/cnn/bricks/scale.py +++ b/mmcv/cnn/bricks/scale.py @@ -13,9 +13,9 @@ class Scale(nn.Module): scale (float): Initial value of scale factor. Default: 1.0 """ - def __init__(self, scale=1.0): - super(Scale, self).__init__() + def __init__(self, scale: float = 1.0): + super().__init__() self.scale = nn.Parameter(torch.tensor(scale, dtype=torch.float)) - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: return x * self.scale diff --git a/mmcv/cnn/bricks/swish.py b/mmcv/cnn/bricks/swish.py index e2ca8ed..b297adf 100644 --- a/mmcv/cnn/bricks/swish.py +++ b/mmcv/cnn/bricks/swish.py @@ -19,7 +19,7 @@ class Swish(nn.Module): """ def __init__(self): - super(Swish, self).__init__() + super().__init__() - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: return x * torch.sigmoid(x) diff --git a/mmcv/cnn/bricks/transformer.py b/mmcv/cnn/bricks/transformer.py index ed32688..f7ba4d9 100644 --- a/mmcv/cnn/bricks/transformer.py +++ b/mmcv/cnn/bricks/transformer.py @@ -1,21 +1,26 @@ # Copyright (c) OpenMMLab. All rights reserved. import copy +import math import warnings +from typing import Sequence import torch import torch.nn as nn +import torch.nn.functional as F -from mmcv import ConfigDict, deprecated_api_warning -from mmcv.cnn import Linear, build_activation_layer, build_norm_layer +from mmcv.cnn import (Linear, build_activation_layer, build_conv_layer, + build_norm_layer) from mmcv.runner.base_module import BaseModule, ModuleList, Sequential -from mmcv.utils import build_from_cfg +from mmcv.utils import (ConfigDict, build_from_cfg, deprecated_api_warning, + to_2tuple) from .drop import build_dropout from .registry import (ATTENTION, FEEDFORWARD_NETWORK, POSITIONAL_ENCODING, TRANSFORMER_LAYER, TRANSFORMER_LAYER_SEQUENCE) # Avoid BC-breaking of importing MultiScaleDeformableAttention from this file try: - from mmcv.ops.multi_scale_deform_attn import MultiScaleDeformableAttention # noqa F401 + from mmcv.ops.multi_scale_deform_attn import \ + MultiScaleDeformableAttention # noqa F401 warnings.warn( ImportWarning( '``MultiScaleDeformableAttention`` has been moved to ' @@ -55,6 +60,349 @@ def build_transformer_layer_sequence(cfg, default_args=None): return build_from_cfg(cfg, TRANSFORMER_LAYER_SEQUENCE, default_args) +class AdaptivePadding(nn.Module): + """Applies padding adaptively to the input. + + This module can make input get fully covered by filter + you specified. It support two modes "same" and "corner". The + "same" mode is same with "SAME" padding mode in TensorFlow, pad + zero around input. The "corner" mode would pad zero + to bottom right. + + Args: + kernel_size (int | tuple): Size of the kernel. Default: 1. + stride (int | tuple): Stride of the filter. Default: 1. + dilation (int | tuple): Spacing between kernel elements. + Default: 1. + padding (str): Support "same" and "corner", "corner" mode + would pad zero to bottom right, and "same" mode would + pad zero around input. Default: "corner". + + Example: + >>> kernel_size = 16 + >>> stride = 16 + >>> dilation = 1 + >>> input = torch.rand(1, 1, 15, 17) + >>> adap_pad = AdaptivePadding( + >>> kernel_size=kernel_size, + >>> stride=stride, + >>> dilation=dilation, + >>> padding="corner") + >>> out = adap_pad(input) + >>> assert (out.shape[2], out.shape[3]) == (16, 32) + >>> input = torch.rand(1, 1, 16, 17) + >>> out = adap_pad(input) + >>> assert (out.shape[2], out.shape[3]) == (16, 32) + """ + + def __init__(self, kernel_size=1, stride=1, dilation=1, padding='corner'): + super().__init__() + assert padding in ('same', 'corner') + + kernel_size = to_2tuple(kernel_size) + stride = to_2tuple(stride) + dilation = to_2tuple(dilation) + + self.padding = padding + self.kernel_size = kernel_size + self.stride = stride + self.dilation = dilation + + def get_pad_shape(self, input_shape): + """Calculate the padding size of input. + + Args: + input_shape (:obj:`torch.Size`): arrange as (H, W). + + Returns: + Tuple[int]: The padding size along the + original H and W directions + """ + input_h, input_w = input_shape + kernel_h, kernel_w = self.kernel_size + stride_h, stride_w = self.stride + output_h = math.ceil(input_h / stride_h) + output_w = math.ceil(input_w / stride_w) + pad_h = max((output_h - 1) * stride_h + + (kernel_h - 1) * self.dilation[0] + 1 - input_h, 0) + pad_w = max((output_w - 1) * stride_w + + (kernel_w - 1) * self.dilation[1] + 1 - input_w, 0) + return pad_h, pad_w + + def forward(self, x): + """Add padding to `x` + + Args: + x (Tensor): Input tensor has shape (B, C, H, W). + + Returns: + Tensor: The tensor with adaptive padding + """ + pad_h, pad_w = self.get_pad_shape(x.size()[-2:]) + if pad_h > 0 or pad_w > 0: + if self.padding == 'corner': + x = F.pad(x, [0, pad_w, 0, pad_h]) + elif self.padding == 'same': + x = F.pad(x, [ + pad_w // 2, pad_w - pad_w // 2, pad_h // 2, + pad_h - pad_h // 2 + ]) + return x + + +class PatchEmbed(BaseModule): + """Image to Patch Embedding. + + We use a conv layer to implement PatchEmbed. + + Args: + in_channels (int): The num of input channels. Default: 3 + embed_dims (int): The dimensions of embedding. Default: 768 + conv_type (str): The type of convolution + to generate patch embedding. Default: "Conv2d". + kernel_size (int): The kernel_size of embedding conv. Default: 16. + stride (int): The slide stride of embedding conv. + Default: 16. + padding (int | tuple | string): The padding length of + embedding conv. When it is a string, it means the mode + of adaptive padding, support "same" and "corner" now. + Default: "corner". + dilation (int): The dilation rate of embedding conv. Default: 1. + bias (bool): Bias of embed conv. Default: True. + norm_cfg (dict, optional): Config dict for normalization layer. + Default: None. + input_size (int | tuple | None): The size of input, which will be + used to calculate the out size. Only works when `dynamic_size` + is False. Default: None. + init_cfg (`mmcv.ConfigDict`, optional): The Config for initialization. + Default: None. + """ + + def __init__(self, + in_channels=3, + embed_dims=768, + conv_type='Conv2d', + kernel_size=16, + stride=16, + padding='corner', + dilation=1, + bias=True, + norm_cfg=None, + input_size=None, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + self.embed_dims = embed_dims + if stride is None: + stride = kernel_size + + kernel_size = to_2tuple(kernel_size) + stride = to_2tuple(stride) + dilation = to_2tuple(dilation) + + if isinstance(padding, str): + self.adaptive_padding = AdaptivePadding( + kernel_size=kernel_size, + stride=stride, + dilation=dilation, + padding=padding) + # disable the padding of conv + padding = 0 + else: + self.adaptive_padding = None + padding = to_2tuple(padding) + + self.projection = build_conv_layer( + dict(type=conv_type), + in_channels=in_channels, + out_channels=embed_dims, + kernel_size=kernel_size, + stride=stride, + padding=padding, + dilation=dilation, + bias=bias) + + if norm_cfg is not None: + self.norm = build_norm_layer(norm_cfg, embed_dims)[1] + else: + self.norm = None + + if input_size: + input_size = to_2tuple(input_size) + # `init_out_size` would be used outside to + # calculate the num_patches + # e.g. when `use_abs_pos_embed` outside + self.init_input_size = input_size + if self.adaptive_padding: + pad_h, pad_w = self.adaptive_padding.get_pad_shape(input_size) + input_h, input_w = input_size + input_h = input_h + pad_h + input_w = input_w + pad_w + input_size = (input_h, input_w) + + # https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html + h_out = (input_size[0] + 2 * padding[0] - dilation[0] * + (kernel_size[0] - 1) - 1) // stride[0] + 1 + w_out = (input_size[1] + 2 * padding[1] - dilation[1] * + (kernel_size[1] - 1) - 1) // stride[1] + 1 + self.init_out_size = (h_out, w_out) + else: + self.init_input_size = None + self.init_out_size = None + + def forward(self, x): + """ + Args: + x (Tensor): Has shape (B, C, H, W). In most case, C is 3. + + Returns: + tuple: Contains merged results and its spatial shape. + + - x (Tensor): Has shape (B, out_h * out_w, embed_dims) + - out_size (tuple[int]): Spatial shape of x, arrange as + (out_h, out_w). + """ + + if self.adaptive_padding: + x = self.adaptive_padding(x) + + x = self.projection(x) + out_size = (x.shape[2], x.shape[3]) + x = x.flatten(2).transpose(1, 2) + if self.norm is not None: + x = self.norm(x) + return x, out_size + + +class PatchMerging(BaseModule): + """Merge patch feature map. + + This layer groups feature map by kernel_size, and applies norm and linear + layers to the grouped feature map ((used in Swin Transformer)). + Our implementation uses `nn.Unfold` to + merge patches, which is about 25% faster than the original + implementation. However, we need to modify pretrained + models for compatibility. + + Args: + in_channels (int): The num of input channels. + to gets fully covered by filter and stride you specified. + out_channels (int): The num of output channels. + kernel_size (int | tuple, optional): the kernel size in the unfold + layer. Defaults to 2. + stride (int | tuple, optional): the stride of the sliding blocks in the + unfold layer. Default: None. (Would be set as `kernel_size`) + padding (int | tuple | string ): The padding length of + embedding conv. When it is a string, it means the mode + of adaptive padding, support "same" and "corner" now. + Default: "corner". + dilation (int | tuple, optional): dilation parameter in the unfold + layer. Default: 1. + bias (bool, optional): Whether to add bias in linear layer or not. + Defaults: False. + norm_cfg (dict, optional): Config dict for normalization layer. + Default: dict(type='LN'). + init_cfg (dict, optional): The extra config for initialization. + Default: None. + """ + + def __init__(self, + in_channels, + out_channels, + kernel_size=2, + stride=None, + padding='corner', + dilation=1, + bias=False, + norm_cfg=dict(type='LN'), + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.in_channels = in_channels + self.out_channels = out_channels + if stride: + stride = stride + else: + stride = kernel_size + + kernel_size = to_2tuple(kernel_size) + stride = to_2tuple(stride) + dilation = to_2tuple(dilation) + + if isinstance(padding, str): + self.adaptive_padding = AdaptivePadding( + kernel_size=kernel_size, + stride=stride, + dilation=dilation, + padding=padding) + # disable the padding of unfold + padding = 0 + else: + self.adaptive_padding = None + + padding = to_2tuple(padding) + self.sampler = nn.Unfold( + kernel_size=kernel_size, + dilation=dilation, + padding=padding, + stride=stride) + + sample_dim = kernel_size[0] * kernel_size[1] * in_channels + + if norm_cfg is not None: + self.norm = build_norm_layer(norm_cfg, sample_dim)[1] + else: + self.norm = None + + self.reduction = nn.Linear(sample_dim, out_channels, bias=bias) + + def forward(self, x, input_size): + """ + Args: + x (Tensor): Has shape (B, H*W, C_in). + input_size (tuple[int]): The spatial shape of x, arrange as (H, W). + Default: None. + + Returns: + tuple: Contains merged results and its spatial shape. + + - x (Tensor): Has shape (B, Merged_H * Merged_W, C_out) + - out_size (tuple[int]): Spatial shape of x, arrange as + (Merged_H, Merged_W). + """ + B, L, C = x.shape + assert isinstance(input_size, Sequence), f'Expect ' \ + f'input_size is ' \ + f'`Sequence` ' \ + f'but get {input_size}' + + H, W = input_size + assert L == H * W, 'input feature has wrong size' + + x = x.view(B, H, W, C).permute([0, 3, 1, 2]) # B, C, H, W + + if self.adaptive_padding: + x = self.adaptive_padding(x) + H, W = x.shape[-2:] + + # Use nn.Unfold to merge patch. About 25% faster than original method, + # but need to modify pretrained model for compatibility + # if kernel_size=2 and stride=2, x should has shape (B, 4*C, H/2*W/2) + x = self.sampler(x) + + out_h = (H + 2 * self.sampler.padding[0] - self.sampler.dilation[0] * + (self.sampler.kernel_size[0] - 1) - + 1) // self.sampler.stride[0] + 1 + out_w = (W + 2 * self.sampler.padding[1] - self.sampler.dilation[1] * + (self.sampler.kernel_size[1] - 1) - + 1) // self.sampler.stride[1] + 1 + + output_size = (out_h, out_w) + x = x.transpose(1, 2) # B, H/2*W/2, 4*C + x = self.norm(x) if self.norm else x + x = self.reduction(x) + return x, output_size + + @ATTENTION.register_module() class MultiheadAttention(BaseModule): """A wrapper for ``torch.nn.MultiheadAttention``. @@ -87,12 +435,13 @@ class MultiheadAttention(BaseModule): init_cfg=None, batch_first=False, **kwargs): - super(MultiheadAttention, self).__init__(init_cfg) + super().__init__(init_cfg) if 'dropout' in kwargs: - warnings.warn('The arguments `dropout` in MultiheadAttention ' - 'has been deprecated, now you can separately ' - 'set `attn_drop`(float), proj_drop(float), ' - 'and `dropout_layer`(dict) ') + warnings.warn( + 'The arguments `dropout` in MultiheadAttention ' + 'has been deprecated, now you can separately ' + 'set `attn_drop`(float), proj_drop(float), ' + 'and `dropout_layer`(dict) ', DeprecationWarning) attn_drop = kwargs['dropout'] dropout_layer['drop_prob'] = kwargs.pop('dropout') @@ -154,9 +503,9 @@ class MultiheadAttention(BaseModule): Returns: Tensor: forwarded results with shape - [num_queries, bs, embed_dims] - if self.batch_first is False, else - [bs, num_queries embed_dims]. + [num_queries, bs, embed_dims] + if self.batch_first is False, else + [bs, num_queries embed_dims]. """ if key is None: @@ -241,7 +590,7 @@ class FFN(BaseModule): add_identity=True, init_cfg=None, **kwargs): - super(FFN, self).__init__(init_cfg) + super().__init__(init_cfg) assert num_fcs >= 2, 'num_fcs should be no less ' \ f'than 2. got {num_fcs}.' self.embed_dims = embed_dims @@ -342,15 +691,15 @@ class BaseTransformerLayer(BaseModule): f'The arguments `{ori_name}` in BaseTransformerLayer ' f'has been deprecated, now you should set `{new_name}` ' f'and other FFN related arguments ' - f'to a dict named `ffn_cfgs`. ') + f'to a dict named `ffn_cfgs`. ', DeprecationWarning) ffn_cfgs[new_name] = kwargs[ori_name] - super(BaseTransformerLayer, self).__init__(init_cfg) + super().__init__(init_cfg) self.batch_first = batch_first - assert set(operation_order) & set( - ['self_attn', 'norm', 'ffn', 'cross_attn']) == \ + assert set(operation_order) & { + 'self_attn', 'norm', 'ffn', 'cross_attn'} == \ set(operation_order), f'The operation_order of' \ f' {self.__class__.__name__} should ' \ f'contains all four operation type ' \ @@ -397,7 +746,7 @@ class BaseTransformerLayer(BaseModule): assert len(ffn_cfgs) == num_ffns for ffn_index in range(num_ffns): if 'embed_dims' not in ffn_cfgs[ffn_index]: - ffn_cfgs['embed_dims'] = self.embed_dims + ffn_cfgs[ffn_index]['embed_dims'] = self.embed_dims else: assert ffn_cfgs[ffn_index]['embed_dims'] == self.embed_dims self.ffns.append( @@ -531,7 +880,7 @@ class TransformerLayerSequence(BaseModule): """ def __init__(self, transformerlayers=None, num_layers=None, init_cfg=None): - super(TransformerLayerSequence, self).__init__(init_cfg) + super().__init__(init_cfg) if isinstance(transformerlayers, dict): transformerlayers = [ copy.deepcopy(transformerlayers) for _ in range(num_layers) diff --git a/mmcv/cnn/bricks/upsample.py b/mmcv/cnn/bricks/upsample.py index a1a3537..d86c5f5 100644 --- a/mmcv/cnn/bricks/upsample.py +++ b/mmcv/cnn/bricks/upsample.py @@ -1,4 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict + +import torch import torch.nn as nn import torch.nn.functional as F @@ -24,9 +27,9 @@ class PixelShufflePack(nn.Module): channels. """ - def __init__(self, in_channels, out_channels, scale_factor, - upsample_kernel): - super(PixelShufflePack, self).__init__() + def __init__(self, in_channels: int, out_channels: int, scale_factor: int, + upsample_kernel: int): + super().__init__() self.in_channels = in_channels self.out_channels = out_channels self.scale_factor = scale_factor @@ -41,13 +44,13 @@ class PixelShufflePack(nn.Module): def init_weights(self): xavier_init(self.upsample_conv, distribution='uniform') - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: x = self.upsample_conv(x) x = F.pixel_shuffle(x, self.scale_factor) return x -def build_upsample_layer(cfg, *args, **kwargs): +def build_upsample_layer(cfg: Dict, *args, **kwargs) -> nn.Module: """Build upsample layer. Args: @@ -55,7 +58,7 @@ def build_upsample_layer(cfg, *args, **kwargs): - type (str): Layer type. - scale_factor (int): Upsample ratio, which is not applicable to - deconv. + deconv. - layer args: Args needed to instantiate a upsample layer. args (argument list): Arguments passed to the ``__init__`` method of the corresponding conv layer. diff --git a/mmcv/cnn/bricks/wrappers.py b/mmcv/cnn/bricks/wrappers.py index 8aebf67..a07eff0 100644 --- a/mmcv/cnn/bricks/wrappers.py +++ b/mmcv/cnn/bricks/wrappers.py @@ -21,19 +21,19 @@ else: TORCH_VERSION = tuple(int(x) for x in torch.__version__.split('.')[:2]) -def obsolete_torch_version(torch_version, version_threshold): +def obsolete_torch_version(torch_version, version_threshold) -> bool: return torch_version == 'parrots' or torch_version <= version_threshold class NewEmptyTensorOp(torch.autograd.Function): @staticmethod - def forward(ctx, x, new_shape): + def forward(ctx, x: torch.Tensor, new_shape: tuple) -> torch.Tensor: ctx.shape = x.shape return x.new_empty(new_shape) @staticmethod - def backward(ctx, grad): + def backward(ctx, grad: torch.Tensor) -> tuple: shape = ctx.shape return NewEmptyTensorOp.apply(grad, shape), None @@ -41,7 +41,7 @@ class NewEmptyTensorOp(torch.autograd.Function): @CONV_LAYERS.register_module('Conv', force=True) class Conv2d(nn.Conv2d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 4)): out_shape = [x.shape[0], self.out_channels] for i, k, p, s, d in zip(x.shape[-2:], self.kernel_size, @@ -62,7 +62,7 @@ class Conv2d(nn.Conv2d): @CONV_LAYERS.register_module('Conv3d', force=True) class Conv3d(nn.Conv3d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 4)): out_shape = [x.shape[0], self.out_channels] for i, k, p, s, d in zip(x.shape[-3:], self.kernel_size, @@ -85,7 +85,7 @@ class Conv3d(nn.Conv3d): @UPSAMPLE_LAYERS.register_module('deconv', force=True) class ConvTranspose2d(nn.ConvTranspose2d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 4)): out_shape = [x.shape[0], self.out_channels] for i, k, p, s, d, op in zip(x.shape[-2:], self.kernel_size, @@ -108,7 +108,7 @@ class ConvTranspose2d(nn.ConvTranspose2d): @UPSAMPLE_LAYERS.register_module('deconv3d', force=True) class ConvTranspose3d(nn.ConvTranspose3d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 4)): out_shape = [x.shape[0], self.out_channels] for i, k, p, s, d, op in zip(x.shape[-3:], self.kernel_size, @@ -128,7 +128,7 @@ class ConvTranspose3d(nn.ConvTranspose3d): class MaxPool2d(nn.MaxPool2d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: # PyTorch 1.9 does not support empty tensor inference yet if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 9)): out_shape = list(x.shape[:2]) @@ -146,7 +146,7 @@ class MaxPool2d(nn.MaxPool2d): class MaxPool3d(nn.MaxPool3d): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: # PyTorch 1.9 does not support empty tensor inference yet if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 9)): out_shape = list(x.shape[:2]) @@ -165,7 +165,7 @@ class MaxPool3d(nn.MaxPool3d): class Linear(torch.nn.Linear): - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: # empty tensor forward of Linear layer is supported in Pytorch 1.6 if x.numel() == 0 and obsolete_torch_version(TORCH_VERSION, (1, 5)): out_shape = [x.shape[0], self.out_features] diff --git a/mmcv/cnn/resnet.py b/mmcv/cnn/resnet.py index 1cb3ac0..fb29e62 100644 --- a/mmcv/cnn/resnet.py +++ b/mmcv/cnn/resnet.py @@ -1,13 +1,18 @@ # Copyright (c) OpenMMLab. All rights reserved. import logging +from typing import Optional, Sequence, Tuple, Union import torch.nn as nn import torch.utils.checkpoint as cp +from torch import Tensor from .utils import constant_init, kaiming_init -def conv3x3(in_planes, out_planes, stride=1, dilation=1): +def conv3x3(in_planes: int, + out_planes: int, + stride: int = 1, + dilation: int = 1): """3x3 convolution with padding.""" return nn.Conv2d( in_planes, @@ -23,14 +28,14 @@ class BasicBlock(nn.Module): expansion = 1 def __init__(self, - inplanes, - planes, - stride=1, - dilation=1, - downsample=None, - style='pytorch', - with_cp=False): - super(BasicBlock, self).__init__() + inplanes: int, + planes: int, + stride: int = 1, + dilation: int = 1, + downsample: Optional[nn.Module] = None, + style: str = 'pytorch', + with_cp: bool = False): + super().__init__() assert style in ['pytorch', 'caffe'] self.conv1 = conv3x3(inplanes, planes, stride, dilation) self.bn1 = nn.BatchNorm2d(planes) @@ -42,7 +47,7 @@ class BasicBlock(nn.Module): self.dilation = dilation assert not with_cp - def forward(self, x): + def forward(self, x: Tensor) -> Tensor: residual = x out = self.conv1(x) @@ -65,19 +70,19 @@ class Bottleneck(nn.Module): expansion = 4 def __init__(self, - inplanes, - planes, - stride=1, - dilation=1, - downsample=None, - style='pytorch', - with_cp=False): + inplanes: int, + planes: int, + stride: int = 1, + dilation: int = 1, + downsample: Optional[nn.Module] = None, + style: str = 'pytorch', + with_cp: bool = False): """Bottleneck block. If style is "pytorch", the stride-two layer is the 3x3 conv layer, if it is "caffe", the stride-two layer is the first 1x1 conv layer. """ - super(Bottleneck, self).__init__() + super().__init__() assert style in ['pytorch', 'caffe'] if style == 'pytorch': conv1_stride = 1 @@ -107,7 +112,7 @@ class Bottleneck(nn.Module): self.dilation = dilation self.with_cp = with_cp - def forward(self, x): + def forward(self, x: Tensor) -> Tensor: def _inner_forward(x): residual = x @@ -140,14 +145,14 @@ class Bottleneck(nn.Module): return out -def make_res_layer(block, - inplanes, - planes, - blocks, - stride=1, - dilation=1, - style='pytorch', - with_cp=False): +def make_res_layer(block: nn.Module, + inplanes: int, + planes: int, + blocks: int, + stride: int = 1, + dilation: int = 1, + style: str = 'pytorch', + with_cp: bool = False) -> nn.Module: downsample = None if stride != 1 or inplanes != planes * block.expansion: downsample = nn.Sequential( @@ -208,22 +213,22 @@ class ResNet(nn.Module): } def __init__(self, - depth, - num_stages=4, - strides=(1, 2, 2, 2), - dilations=(1, 1, 1, 1), - out_indices=(0, 1, 2, 3), - style='pytorch', - frozen_stages=-1, - bn_eval=True, - bn_frozen=False, - with_cp=False): - super(ResNet, self).__init__() + depth: int, + num_stages: int = 4, + strides: Sequence[int] = (1, 2, 2, 2), + dilations: Sequence[int] = (1, 1, 1, 1), + out_indices: Sequence[int] = (0, 1, 2, 3), + style: str = 'pytorch', + frozen_stages: int = -1, + bn_eval: bool = True, + bn_frozen: bool = False, + with_cp: bool = False): + super().__init__() if depth not in self.arch_settings: raise KeyError(f'invalid depth {depth} for resnet') assert num_stages >= 1 and num_stages <= 4 block, stage_blocks = self.arch_settings[depth] - stage_blocks = stage_blocks[:num_stages] + stage_blocks = stage_blocks[:num_stages] # type: ignore assert len(strides) == len(dilations) == num_stages assert max(out_indices) < num_stages @@ -234,7 +239,7 @@ class ResNet(nn.Module): self.bn_frozen = bn_frozen self.with_cp = with_cp - self.inplanes = 64 + self.inplanes: int = 64 self.conv1 = nn.Conv2d( 3, 64, kernel_size=7, stride=2, padding=3, bias=False) self.bn1 = nn.BatchNorm2d(64) @@ -255,14 +260,15 @@ class ResNet(nn.Module): dilation=dilation, style=self.style, with_cp=with_cp) - self.inplanes = planes * block.expansion + self.inplanes = planes * block.expansion # type: ignore layer_name = f'layer{i + 1}' self.add_module(layer_name, res_layer) self.res_layers.append(layer_name) - self.feat_dim = block.expansion * 64 * 2**(len(stage_blocks) - 1) + self.feat_dim = block.expansion * 64 * 2**( # type: ignore + len(stage_blocks) - 1) - def init_weights(self, pretrained=None): + def init_weights(self, pretrained: Optional[str] = None) -> None: if isinstance(pretrained, str): logger = logging.getLogger() from ..runner import load_checkpoint @@ -276,7 +282,7 @@ class ResNet(nn.Module): else: raise TypeError('pretrained must be a str or None') - def forward(self, x): + def forward(self, x: Tensor) -> Union[Tensor, Tuple[Tensor]]: x = self.conv1(x) x = self.bn1(x) x = self.relu(x) @@ -292,8 +298,8 @@ class ResNet(nn.Module): else: return tuple(outs) - def train(self, mode=True): - super(ResNet, self).train(mode) + def train(self, mode: bool = True) -> None: + super().train(mode) if self.bn_eval: for m in self.modules(): if isinstance(m, nn.BatchNorm2d): diff --git a/mmcv/cnn/utils/flops_counter.py b/mmcv/cnn/utils/flops_counter.py index dceeb39..150a559 100644 --- a/mmcv/cnn/utils/flops_counter.py +++ b/mmcv/cnn/utils/flops_counter.py @@ -24,7 +24,9 @@ # SOFTWARE. import sys +import warnings from functools import partial +from typing import Any, Callable, Dict, Optional, TextIO, Tuple import numpy as np import torch @@ -33,13 +35,13 @@ import torch.nn as nn import mmcv -def get_model_complexity_info(model, - input_shape, - print_per_layer_stat=True, - as_strings=True, - input_constructor=None, - flush=False, - ost=sys.stdout): +def get_model_complexity_info(model: nn.Module, + input_shape: tuple, + print_per_layer_stat: bool = True, + as_strings: bool = True, + input_constructor: Optional[Callable] = None, + flush: bool = False, + ost: TextIO = sys.stdout) -> tuple: """Get complexity information of a model. This method can calculate FLOPs and parameter counts of a model with @@ -48,16 +50,16 @@ def get_model_complexity_info(model, Supported layers are listed as below: - Convolutions: ``nn.Conv1d``, ``nn.Conv2d``, ``nn.Conv3d``. - - Activations: ``nn.ReLU``, ``nn.PReLU``, ``nn.ELU``, ``nn.LeakyReLU``, - ``nn.ReLU6``. + - Activations: ``nn.ReLU``, ``nn.PReLU``, ``nn.ELU``, + ``nn.LeakyReLU``, ``nn.ReLU6``. - Poolings: ``nn.MaxPool1d``, ``nn.MaxPool2d``, ``nn.MaxPool3d``, - ``nn.AvgPool1d``, ``nn.AvgPool2d``, ``nn.AvgPool3d``, - ``nn.AdaptiveMaxPool1d``, ``nn.AdaptiveMaxPool2d``, - ``nn.AdaptiveMaxPool3d``, ``nn.AdaptiveAvgPool1d``, - ``nn.AdaptiveAvgPool2d``, ``nn.AdaptiveAvgPool3d``. + ``nn.AvgPool1d``, ``nn.AvgPool2d``, ``nn.AvgPool3d``, + ``nn.AdaptiveMaxPool1d``, ``nn.AdaptiveMaxPool2d``, + ``nn.AdaptiveMaxPool3d``, ``nn.AdaptiveAvgPool1d``, + ``nn.AdaptiveAvgPool2d``, ``nn.AdaptiveAvgPool3d``. - BatchNorms: ``nn.BatchNorm1d``, ``nn.BatchNorm2d``, - ``nn.BatchNorm3d``, ``nn.GroupNorm``, ``nn.InstanceNorm1d``, - ``InstanceNorm2d``, ``InstanceNorm3d``, ``nn.LayerNorm``. + ``nn.BatchNorm3d``, ``nn.GroupNorm``, ``nn.InstanceNorm1d``, + ``InstanceNorm2d``, ``InstanceNorm3d``, ``nn.LayerNorm``. - Linear: ``nn.Linear``. - Deconvolution: ``nn.ConvTranspose2d``. - Upsample: ``nn.Upsample``. @@ -78,8 +80,8 @@ def get_model_complexity_info(model, Returns: tuple[float | str]: If ``as_strings`` is set to True, it will return - FLOPs and parameter counts in a string format. otherwise, it will - return those in a float number format. + FLOPs and parameter counts in a string format. otherwise, it will + return those in a float number format. """ assert type(input_shape) is tuple assert len(input_shape) >= 1 @@ -115,7 +117,9 @@ def get_model_complexity_info(model, return flops_count, params_count -def flops_to_string(flops, units='GFLOPs', precision=2): +def flops_to_string(flops: float, + units: Optional[str] = 'GFLOPs', + precision: int = 2) -> str: """Convert FLOPs number into a string. Note that Here we take a multiply-add counts as one FLOP. @@ -158,7 +162,9 @@ def flops_to_string(flops, units='GFLOPs', precision=2): return str(flops) + ' FLOPs' -def params_to_string(num_params, units=None, precision=2): +def params_to_string(num_params: float, + units: Optional[str] = None, + precision: int = 2) -> str: """Convert parameter number into a string. Args: @@ -195,13 +201,13 @@ def params_to_string(num_params, units=None, precision=2): return str(num_params) -def print_model_with_flops(model, - total_flops, - total_params, - units='GFLOPs', - precision=3, - ost=sys.stdout, - flush=False): +def print_model_with_flops(model: nn.Module, + total_flops: float, + total_params: float, + units: Optional[str] = 'GFLOPs', + precision: int = 3, + ost: TextIO = sys.stdout, + flush: bool = False) -> None: """Print a model with FLOPs for each layer. Args: @@ -276,10 +282,10 @@ def print_model_with_flops(model, return ', '.join([ params_to_string( accumulated_num_params, units='M', precision=precision), - '{:.3%} Params'.format(accumulated_num_params / total_params), + f'{accumulated_num_params / total_params:.3%} Params', flops_to_string( accumulated_flops_cost, units=units, precision=precision), - '{:.3%} FLOPs'.format(accumulated_flops_cost / total_flops), + f'{accumulated_flops_cost / total_flops:.3%} FLOPs', self.original_extra_repr() ]) @@ -304,7 +310,7 @@ def print_model_with_flops(model, model.apply(del_extra_repr) -def get_model_parameters_number(model): +def get_model_parameters_number(model: nn.Module) -> float: """Calculate parameter number of a model. Args: @@ -317,16 +323,16 @@ def get_model_parameters_number(model): return num_params -def add_flops_counting_methods(net_main_module): +def add_flops_counting_methods(net_main_module: nn.Module) -> nn.Module: # adding additional methods to the existing module object, # this is done this way so that each function has access to self object - net_main_module.start_flops_count = start_flops_count.__get__( + net_main_module.start_flops_count = start_flops_count.__get__( # type: ignore # noqa E501 net_main_module) - net_main_module.stop_flops_count = stop_flops_count.__get__( + net_main_module.stop_flops_count = stop_flops_count.__get__( # type: ignore # noqa E501 net_main_module) - net_main_module.reset_flops_count = reset_flops_count.__get__( + net_main_module.reset_flops_count = reset_flops_count.__get__( # type: ignore # noqa E501 net_main_module) - net_main_module.compute_average_flops_cost = compute_average_flops_cost.__get__( # noqa: E501 + net_main_module.compute_average_flops_cost = compute_average_flops_cost.__get__( # type: ignore # noqa E501 net_main_module) net_main_module.reset_flops_count() @@ -334,7 +340,7 @@ def add_flops_counting_methods(net_main_module): return net_main_module -def compute_average_flops_cost(self): +def compute_average_flops_cost(self) -> Tuple[float, float]: """Compute average FLOPs cost. A method to compute average FLOPs cost, which will be available after @@ -352,7 +358,7 @@ def compute_average_flops_cost(self): return flops_sum / batches_count, params_sum -def start_flops_count(self): +def start_flops_count(self) -> None: """Activate the computation of mean flops consumption per image. A method to activate the computation of mean flops consumption per image. @@ -361,7 +367,7 @@ def start_flops_count(self): """ add_batch_counter_hook_function(self) - def add_flops_counter_hook_function(module): + def add_flops_counter_hook_function(module: nn.Module) -> None: if is_supported_instance(module): if hasattr(module, '__flops_handle__'): return @@ -375,7 +381,7 @@ def start_flops_count(self): self.apply(partial(add_flops_counter_hook_function)) -def stop_flops_count(self): +def stop_flops_count(self) -> None: """Stop computing the mean flops consumption per image. A method to stop computing the mean flops consumption per image, which will @@ -386,7 +392,7 @@ def stop_flops_count(self): self.apply(remove_flops_counter_hook_function) -def reset_flops_count(self): +def reset_flops_count(self) -> None: """Reset statistics computed so far. A method to Reset computed statistics, which will be available after @@ -397,11 +403,13 @@ def reset_flops_count(self): # ---- Internal functions -def empty_flops_counter_hook(module, input, output): +def empty_flops_counter_hook(module: nn.Module, input: tuple, + output: Any) -> None: module.__flops__ += 0 -def upsample_flops_counter_hook(module, input, output): +def upsample_flops_counter_hook(module: nn.Module, input: tuple, + output: torch.Tensor) -> None: output_size = output[0] batch_size = output_size.shape[0] output_elements_count = batch_size @@ -410,39 +418,38 @@ def upsample_flops_counter_hook(module, input, output): module.__flops__ += int(output_elements_count) -def relu_flops_counter_hook(module, input, output): +def relu_flops_counter_hook(module: nn.Module, input: tuple, + output: torch.Tensor) -> None: active_elements_count = output.numel() module.__flops__ += int(active_elements_count) -def linear_flops_counter_hook(module, input, output): - input = input[0] +def linear_flops_counter_hook(module: nn.Module, input: tuple, + output: torch.Tensor) -> None: output_last_dim = output.shape[ -1] # pytorch checks dimensions, so here we don't care much - module.__flops__ += int(np.prod(input.shape) * output_last_dim) + module.__flops__ += int(np.prod(input[0].shape) * output_last_dim) -def pool_flops_counter_hook(module, input, output): - input = input[0] - module.__flops__ += int(np.prod(input.shape)) +def pool_flops_counter_hook(module: nn.Module, input: tuple, + output: torch.Tensor) -> None: + module.__flops__ += int(np.prod(input[0].shape)) -def norm_flops_counter_hook(module, input, output): - input = input[0] - - batch_flops = np.prod(input.shape) +def norm_flops_counter_hook(module: nn.Module, input: tuple, + output: torch.Tensor) -> None: + batch_flops = np.prod(input[0].shape) if (getattr(module, 'affine', False) or getattr(module, 'elementwise_affine', False)): batch_flops *= 2 module.__flops__ += int(batch_flops) -def deconv_flops_counter_hook(conv_module, input, output): +def deconv_flops_counter_hook(conv_module: nn.Module, input: tuple, + output: torch.Tensor) -> None: # Can have multiple inputs, getting the first one - input = input[0] - - batch_size = input.shape[0] - input_height, input_width = input.shape[2:] + batch_size = input[0].shape[0] + input_height, input_width = input[0].shape[2:] kernel_height, kernel_width = conv_module.kernel_size in_channels = conv_module.in_channels @@ -458,17 +465,16 @@ def deconv_flops_counter_hook(conv_module, input, output): bias_flops = 0 if conv_module.bias is not None: output_height, output_width = output.shape[2:] - bias_flops = out_channels * batch_size * output_height * output_height + bias_flops = out_channels * batch_size * output_height * output_width overall_flops = overall_conv_flops + bias_flops conv_module.__flops__ += int(overall_flops) -def conv_flops_counter_hook(conv_module, input, output): +def conv_flops_counter_hook(conv_module: nn.Module, input: tuple, + output: torch.Tensor) -> None: # Can have multiple inputs, getting the first one - input = input[0] - - batch_size = input.shape[0] + batch_size = input[0].shape[0] output_dims = list(output.shape[2:]) kernel_dims = list(conv_module.kernel_size) @@ -495,25 +501,23 @@ def conv_flops_counter_hook(conv_module, input, output): conv_module.__flops__ += int(overall_flops) -def batch_counter_hook(module, input, output): +def batch_counter_hook(module: nn.Module, input: tuple, output: Any) -> None: batch_size = 1 if len(input) > 0: # Can have multiple inputs, getting the first one - input = input[0] - batch_size = len(input) + batch_size = len(input[0]) else: - pass - print('Warning! No positional inputs found for a module, ' - 'assuming batch size is 1.') + warnings.warn('No positional inputs found for a module, ' + 'assuming batch size is 1.') module.__batch_counter__ += batch_size -def add_batch_counter_variables_or_reset(module): +def add_batch_counter_variables_or_reset(module: nn.Module) -> None: module.__batch_counter__ = 0 -def add_batch_counter_hook_function(module): +def add_batch_counter_hook_function(module: nn.Module) -> None: if hasattr(module, '__batch_counter_handle__'): return @@ -521,36 +525,36 @@ def add_batch_counter_hook_function(module): module.__batch_counter_handle__ = handle -def remove_batch_counter_hook_function(module): +def remove_batch_counter_hook_function(module: nn.Module) -> None: if hasattr(module, '__batch_counter_handle__'): module.__batch_counter_handle__.remove() del module.__batch_counter_handle__ -def add_flops_counter_variable_or_reset(module): +def add_flops_counter_variable_or_reset(module: nn.Module) -> None: if is_supported_instance(module): if hasattr(module, '__flops__') or hasattr(module, '__params__'): - print('Warning: variables __flops__ or __params__ are already ' - 'defined for the module' + type(module).__name__ + - ' ptflops can affect your code!') + warnings.warn('variables __flops__ or __params__ are already ' + 'defined for the module' + type(module).__name__ + + ' ptflops can affect your code!') module.__flops__ = 0 module.__params__ = get_model_parameters_number(module) -def is_supported_instance(module): +def is_supported_instance(module: nn.Module) -> bool: if type(module) in get_modules_mapping(): return True return False -def remove_flops_counter_hook_function(module): +def remove_flops_counter_hook_function(module: nn.Module) -> None: if is_supported_instance(module): if hasattr(module, '__flops_handle__'): module.__flops_handle__.remove() del module.__flops_handle__ -def get_modules_mapping(): +def get_modules_mapping() -> Dict: return { # convolutions nn.Conv1d: conv_flops_counter_hook, diff --git a/mmcv/cnn/utils/fuse_conv_bn.py b/mmcv/cnn/utils/fuse_conv_bn.py index cb7076f..6ccaab3 100644 --- a/mmcv/cnn/utils/fuse_conv_bn.py +++ b/mmcv/cnn/utils/fuse_conv_bn.py @@ -3,7 +3,7 @@ import torch import torch.nn as nn -def _fuse_conv_bn(conv, bn): +def _fuse_conv_bn(conv: nn.Module, bn: nn.Module) -> nn.Module: """Fuse conv and bn into one module. Args: @@ -24,7 +24,7 @@ def _fuse_conv_bn(conv, bn): return conv -def fuse_conv_bn(module): +def fuse_conv_bn(module: nn.Module) -> nn.Module: """Recursively fuse conv and bn in a module. During inference, the functionary of batch norm layers is turned off diff --git a/mmcv/cnn/utils/sync_bn.py b/mmcv/cnn/utils/sync_bn.py index 8a79ff4..c534fc0 100644 --- a/mmcv/cnn/utils/sync_bn.py +++ b/mmcv/cnn/utils/sync_bn.py @@ -1,9 +1,11 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch +import torch.nn as nn import mmcv -class _BatchNormXd(torch.nn.modules.batchnorm._BatchNorm): +class _BatchNormXd(nn.modules.batchnorm._BatchNorm): """A general BatchNorm layer without input dimension check. Reproduced from @kapily's work: @@ -14,11 +16,11 @@ class _BatchNormXd(torch.nn.modules.batchnorm._BatchNorm): SyncBatchNorm. """ - def _check_input_dim(self, input): + def _check_input_dim(self, input: torch.Tensor): return -def revert_sync_batchnorm(module): +def revert_sync_batchnorm(module: nn.Module) -> nn.Module: """Helper function to convert all `SyncBatchNorm` (SyncBN) and `mmcv.ops.sync_bn.SyncBatchNorm`(MMSyncBN) layers in the model to `BatchNormXd` layers. diff --git a/mmcv/cnn/utils/weight_init.py b/mmcv/cnn/utils/weight_init.py index e1ac999..6e0d293 100644 --- a/mmcv/cnn/utils/weight_init.py +++ b/mmcv/cnn/utils/weight_init.py @@ -2,6 +2,7 @@ import copy import math import warnings +from typing import Dict, List, Optional, Union import numpy as np import torch @@ -13,7 +14,7 @@ from mmcv.utils import Registry, build_from_cfg, get_logger, print_log INITIALIZERS = Registry('initializer') -def update_init_info(module, init_info): +def update_init_info(module: nn.Module, init_info: str) -> None: """Update the `_params_init_info` in the module if the value of parameters are changed. @@ -45,14 +46,17 @@ def update_init_info(module, init_info): module._params_init_info[param]['tmp_mean_value'] = mean_value -def constant_init(module, val, bias=0): +def constant_init(module: nn.Module, val: float, bias: float = 0) -> None: if hasattr(module, 'weight') and module.weight is not None: nn.init.constant_(module.weight, val) if hasattr(module, 'bias') and module.bias is not None: nn.init.constant_(module.bias, bias) -def xavier_init(module, gain=1, bias=0, distribution='normal'): +def xavier_init(module: nn.Module, + gain: float = 1, + bias: float = 0, + distribution: str = 'normal') -> None: assert distribution in ['uniform', 'normal'] if hasattr(module, 'weight') and module.weight is not None: if distribution == 'uniform': @@ -63,7 +67,10 @@ def xavier_init(module, gain=1, bias=0, distribution='normal'): nn.init.constant_(module.bias, bias) -def normal_init(module, mean=0, std=1, bias=0): +def normal_init(module: nn.Module, + mean: float = 0, + std: float = 1, + bias: float = 0) -> None: if hasattr(module, 'weight') and module.weight is not None: nn.init.normal_(module.weight, mean, std) if hasattr(module, 'bias') and module.bias is not None: @@ -82,19 +89,22 @@ def trunc_normal_init(module: nn.Module, nn.init.constant_(module.bias, bias) # type: ignore -def uniform_init(module, a=0, b=1, bias=0): +def uniform_init(module: nn.Module, + a: float = 0, + b: float = 1, + bias: float = 0) -> None: if hasattr(module, 'weight') and module.weight is not None: nn.init.uniform_(module.weight, a, b) if hasattr(module, 'bias') and module.bias is not None: nn.init.constant_(module.bias, bias) -def kaiming_init(module, - a=0, - mode='fan_out', - nonlinearity='relu', - bias=0, - distribution='normal'): +def kaiming_init(module: nn.Module, + a: float = 0, + mode: str = 'fan_out', + nonlinearity: str = 'relu', + bias: float = 0, + distribution: str = 'normal') -> None: assert distribution in ['uniform', 'normal'] if hasattr(module, 'weight') and module.weight is not None: if distribution == 'uniform': @@ -107,7 +117,7 @@ def kaiming_init(module, nn.init.constant_(module.bias, bias) -def caffe2_xavier_init(module, bias=0): +def caffe2_xavier_init(module: nn.Module, bias: float = 0) -> None: # `XavierFill` in Caffe2 corresponds to `kaiming_uniform_` in PyTorch # Acknowledgment to FAIR's internal code kaiming_init( @@ -119,19 +129,23 @@ def caffe2_xavier_init(module, bias=0): distribution='uniform') -def bias_init_with_prob(prior_prob): +def bias_init_with_prob(prior_prob: float) -> float: """initialize conv/fc bias value according to a given probability value.""" bias_init = float(-np.log((1 - prior_prob) / prior_prob)) return bias_init -def _get_bases_name(m): +def _get_bases_name(m: nn.Module) -> List[str]: return [b.__name__ for b in m.__class__.__bases__] -class BaseInit(object): +class BaseInit: - def __init__(self, *, bias=0, bias_prob=None, layer=None): + def __init__(self, + *, + bias: float = 0, + bias_prob: Optional[float] = None, + layer: Union[str, List, None] = None): self.wholemodule = False if not isinstance(bias, (int, float)): raise TypeError(f'bias must be a number, but got a {type(bias)}') @@ -154,7 +168,7 @@ class BaseInit(object): self.bias = bias self.layer = [layer] if isinstance(layer, str) else layer - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}, bias={self.bias}' return info @@ -172,11 +186,11 @@ class ConstantInit(BaseInit): Defaults to None. """ - def __init__(self, val, **kwargs): + def __init__(self, val: Union[int, float], **kwargs): super().__init__(**kwargs) self.val = val - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: def init(m): if self.wholemodule: @@ -191,7 +205,7 @@ class ConstantInit(BaseInit): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: val={self.val}, bias={self.bias}' return info @@ -214,12 +228,15 @@ class XavierInit(BaseInit): Defaults to None. """ - def __init__(self, gain=1, distribution='normal', **kwargs): + def __init__(self, + gain: float = 1, + distribution: str = 'normal', + **kwargs): super().__init__(**kwargs) self.gain = gain self.distribution = distribution - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: def init(m): if self.wholemodule: @@ -234,7 +251,7 @@ class XavierInit(BaseInit): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: gain={self.gain}, ' \ f'distribution={self.distribution}, bias={self.bias}' return info @@ -257,12 +274,12 @@ class NormalInit(BaseInit): """ - def __init__(self, mean=0, std=1, **kwargs): + def __init__(self, mean: float = 0, std: float = 1, **kwargs): super().__init__(**kwargs) self.mean = mean self.std = std - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: def init(m): if self.wholemodule: @@ -277,7 +294,7 @@ class NormalInit(BaseInit): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: mean={self.mean},' \ f' std={self.std}, bias={self.bias}' return info @@ -355,12 +372,12 @@ class UniformInit(BaseInit): Defaults to None. """ - def __init__(self, a=0, b=1, **kwargs): + def __init__(self, a: float = 0., b: float = 1., **kwargs): super().__init__(**kwargs) self.a = a self.b = b - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: def init(m): if self.wholemodule: @@ -375,7 +392,7 @@ class UniformInit(BaseInit): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: a={self.a},' \ f' b={self.b}, bias={self.bias}' return info @@ -409,10 +426,10 @@ class KaimingInit(BaseInit): """ def __init__(self, - a=0, - mode='fan_out', - nonlinearity='relu', - distribution='normal', + a: float = 0, + mode: str = 'fan_out', + nonlinearity: str = 'relu', + distribution: str = 'normal', **kwargs): super().__init__(**kwargs) self.a = a @@ -420,7 +437,7 @@ class KaimingInit(BaseInit): self.nonlinearity = nonlinearity self.distribution = distribution - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: def init(m): if self.wholemodule: @@ -437,7 +454,7 @@ class KaimingInit(BaseInit): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: a={self.a}, mode={self.mode}, ' \ f'nonlinearity={self.nonlinearity}, ' \ f'distribution ={self.distribution}, bias={self.bias}' @@ -456,12 +473,12 @@ class Caffe2XavierInit(KaimingInit): distribution='uniform', **kwargs) - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: super().__call__(module) @INITIALIZERS.register_module(name='Pretrained') -class PretrainedInit(object): +class PretrainedInit: """Initialize module by loading a pretrained model. Args: @@ -475,12 +492,15 @@ class PretrainedInit(object): map_location (str): map tensors into proper locations. """ - def __init__(self, checkpoint, prefix=None, map_location=None): + def __init__(self, + checkpoint: str, + prefix: Optional[str] = None, + map_location: Optional[str] = None): self.checkpoint = checkpoint self.prefix = prefix self.map_location = map_location - def __call__(self, module): + def __call__(self, module: nn.Module) -> None: from mmcv.runner import (_load_checkpoint_with_prefix, load_checkpoint, load_state_dict) logger = get_logger('mmcv') @@ -503,12 +523,14 @@ class PretrainedInit(object): if hasattr(module, '_params_init_info'): update_init_info(module, init_info=self._get_init_info()) - def _get_init_info(self): + def _get_init_info(self) -> str: info = f'{self.__class__.__name__}: load from {self.checkpoint}' return info -def _initialize(module, cfg, wholemodule=False): +def _initialize(module: nn.Module, + cfg: Dict, + wholemodule: bool = False) -> None: func = build_from_cfg(cfg, INITIALIZERS) # wholemodule flag is for override mode, there is no layer key in override # and initializer will give init values for the whole module with the name @@ -517,7 +539,8 @@ def _initialize(module, cfg, wholemodule=False): func(module) -def _initialize_override(module, override, cfg): +def _initialize_override(module: nn.Module, override: Union[Dict, List], + cfg: Dict) -> None: if not isinstance(override, (dict, list)): raise TypeError(f'override must be a dict or a list of dict, \ but got {type(override)}') @@ -547,8 +570,8 @@ def _initialize_override(module, override, cfg): f'but init_cfg is {cp_override}.') -def initialize(module, init_cfg): - """Initialize a module. +def initialize(module: nn.Module, init_cfg: Union[Dict, List[dict]]) -> None: + r"""Initialize a module. Args: module (``torch.nn.Module``): the module will be initialized. @@ -556,6 +579,7 @@ def initialize(module, init_cfg): define initializer. OpenMMLab has implemented 6 initializers including ``Constant``, ``Xavier``, ``Normal``, ``Uniform``, ``Kaiming``, and ``Pretrained``. + Example: >>> module = nn.Linear(2, 3, bias=True) >>> init_cfg = dict(type='Constant', layer='Linear', val =1 , bias =2) diff --git a/mmcv/cnn/vgg.py b/mmcv/cnn/vgg.py index 8778b64..a1d9ba2 100644 --- a/mmcv/cnn/vgg.py +++ b/mmcv/cnn/vgg.py @@ -1,12 +1,14 @@ # Copyright (c) OpenMMLab. All rights reserved. import logging +from typing import List, Optional, Sequence, Tuple, Union import torch.nn as nn +from torch import Tensor from .utils import constant_init, kaiming_init, normal_init -def conv3x3(in_planes, out_planes, dilation=1): +def conv3x3(in_planes: int, out_planes: int, dilation: int = 1) -> nn.Module: """3x3 convolution with padding.""" return nn.Conv2d( in_planes, @@ -16,12 +18,12 @@ def conv3x3(in_planes, out_planes, dilation=1): dilation=dilation) -def make_vgg_layer(inplanes, - planes, - num_blocks, - dilation=1, - with_bn=False, - ceil_mode=False): +def make_vgg_layer(inplanes: int, + planes: int, + num_blocks: int, + dilation: int = 1, + with_bn: bool = False, + ceil_mode: bool = False) -> List[nn.Module]: layers = [] for _ in range(num_blocks): layers.append(conv3x3(inplanes, planes, dilation)) @@ -59,18 +61,18 @@ class VGG(nn.Module): } def __init__(self, - depth, - with_bn=False, - num_classes=-1, - num_stages=5, - dilations=(1, 1, 1, 1, 1), - out_indices=(0, 1, 2, 3, 4), - frozen_stages=-1, - bn_eval=True, - bn_frozen=False, - ceil_mode=False, - with_last_pool=True): - super(VGG, self).__init__() + depth: int, + with_bn: bool = False, + num_classes: int = -1, + num_stages: int = 5, + dilations: Sequence[int] = (1, 1, 1, 1, 1), + out_indices: Sequence[int] = (0, 1, 2, 3, 4), + frozen_stages: int = -1, + bn_eval: bool = True, + bn_frozen: bool = False, + ceil_mode: bool = False, + with_last_pool: bool = True): + super().__init__() if depth not in self.arch_settings: raise KeyError(f'invalid depth {depth} for vgg') assert num_stages >= 1 and num_stages <= 5 @@ -122,7 +124,7 @@ class VGG(nn.Module): nn.Linear(4096, num_classes), ) - def init_weights(self, pretrained=None): + def init_weights(self, pretrained: Optional[str] = None) -> None: if isinstance(pretrained, str): logger = logging.getLogger() from ..runner import load_checkpoint @@ -138,7 +140,7 @@ class VGG(nn.Module): else: raise TypeError('pretrained must be a str or None') - def forward(self, x): + def forward(self, x: Tensor) -> Union[Tensor, Tuple[Tensor, ...]]: outs = [] vgg_layers = getattr(self, self.module_name) for i in range(len(self.stage_blocks)): @@ -156,8 +158,8 @@ class VGG(nn.Module): else: return tuple(outs) - def train(self, mode=True): - super(VGG, self).train(mode) + def train(self, mode: bool = True) -> None: + super().train(mode) if self.bn_eval: for m in self.modules(): if isinstance(m, nn.BatchNorm2d): diff --git a/mmcv/device/__init__.py b/mmcv/device/__init__.py new file mode 100644 index 0000000..ba217b0 --- /dev/null +++ b/mmcv/device/__init__.py @@ -0,0 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from . import ipu, mlu, mps +from .scatter_gather import scatter, scatter_kwargs +from .utils import get_device + +__all__ = ['mlu', 'ipu', 'mps', 'get_device', 'scatter', 'scatter_kwargs'] diff --git a/mmcv/device/_functions.py b/mmcv/device/_functions.py new file mode 100644 index 0000000..462a7e4 --- /dev/null +++ b/mmcv/device/_functions.py @@ -0,0 +1,30 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import List, Union + +import torch + +from mmcv.utils import deprecated_api_warning +from .utils import get_device + + +def scatter(input: Union[List, torch.Tensor], devices: List) -> List: + """scatter copies tensor to devices directly.""" + current_device = get_device() + if isinstance(input, list): + outputs = [scatter(_input, devices) for _input in input] + return outputs + elif isinstance(input, torch.Tensor): + output = input.contiguous() + return output.to(current_device) if devices != [-1] else output + else: + raise Exception(f'Unknown type {type(input)}.') + + +class Scatter: + + @staticmethod + @deprecated_api_warning({'target_mlus': 'target_devices'}, + cls_name='Scatter') + def forward(target_devices, input): + outputs = scatter(input, target_devices) + return tuple(outputs) if isinstance(outputs, list) else (outputs, ) diff --git a/mmcv/device/ipu/__init__.py b/mmcv/device/ipu/__init__.py new file mode 100755 index 0000000..d550865 --- /dev/null +++ b/mmcv/device/ipu/__init__.py @@ -0,0 +1,14 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.utils import IS_IPU_AVAILABLE + +if IS_IPU_AVAILABLE: + from .dataloader import IPUDataLoader + from .hook_wrapper import IPUFp16OptimizerHook + from .model_wrapper import ipu_model_wrapper + from .runner import IPUBaseRunner, IPUEpochBasedRunner, IPUIterBasedRunner + from .utils import cfg2options + __all__ = [ + 'cfg2options', 'ipu_model_wrapper', 'IPUFp16OptimizerHook', + 'IPUDataLoader', 'IPUBaseRunner', 'IPUEpochBasedRunner', + 'IPUIterBasedRunner' + ] diff --git a/mmcv/device/ipu/dataloader.py b/mmcv/device/ipu/dataloader.py new file mode 100755 index 0000000..1485df2 --- /dev/null +++ b/mmcv/device/ipu/dataloader.py @@ -0,0 +1,157 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from collections.abc import Mapping, Sequence +from functools import partial + +import poptorch +from torch.utils.data.dataloader import default_collate + +from mmcv.parallel import DataContainer + + +def collate(batch, samples_per_gpu=1): + """Put each data field into a tensor/DataContainer with outer dimension + batch size. + + TODO support for + :type:`~mmcv.parallel.DataContainer`. Currently, it will be ignored. + There are 3 cases. + + 1. cpu_only = True, e.g., meta data. + 2. cpu_only = False, stack = True, e.g., images tensors. + 3. cpu_only = False, stack = False, e.g., gt bboxes. + """ + + if not isinstance(batch, Sequence): + raise TypeError( + f'`batch` should be a sequence, but got {type(batch)}.') + + if isinstance(batch[0], DataContainer): + # TODO `DataContainer` will be supported in the future. + raise TypeError('DataContainer is not supported in ipu data loader.') + elif isinstance(batch[0], Sequence): + transposed = zip(*batch) + collated_batch = [] + for samples in transposed: + if not isinstance(samples[0], DataContainer): + # At present, we will skip the processing of datacontainer, + # which will reduce the performance of IPU DataLoder + collated_batch.append(collate(samples, samples_per_gpu)) + return collated_batch + elif isinstance(batch[0], Mapping): + collated_batch = {} + for key in batch[0]: + if not isinstance(batch[0][key], DataContainer): + # At present, we will skip the processing of datacontainer, + # which will reduce the performance of IPU DataLoder + collated_batch[key] = collate([d[key] for d in batch]) + return collated_batch + else: + return default_collate(batch) + + +class IPUDataLoader(poptorch.DataLoader): + """Thin wrapper of `torch.utils.data.DataLoader`. + + Compared with the pytorch DataLoder, this DataLoder changes the way of + calculation of batch size and adds the AsynchronousDataAccessor to + load and release data faster in cpu mode. + + If this data loader is used in a distributed execution environment, it will + ensure that each process uses a different subset of the dataset, providing + you first call ``options.randomSeed(N)`` with an integer N which is the + same across all hosts. + + Args: + dataset (torch.utils.data.Dataset): The dataset to get the data from. + options (poptorch.Options): Options that will be used to compile + and run the model. + batch_size (int, optional): This is the batch size in the conventional + sense of being the size that runs through an operation in the model + at any given time. + shuffle (bool, optional): set to ``True`` to have the data reshuffled + at every epoch (default: ``False``). + num_workers (int, optional): how many subprocesses to use for data + loading. ``0`` means that the data will be loaded in the main + process. (default: ``0``) + drop_last (bool, optional): If True and the number of elements in the + dataset is not a multiple of the combined batch size then the + incomplete batch at the end will be dropped. + persistent_workers (bool, optional): Re-use workers between + iterations if True. + auto_distributed_partitioning (bool, optional): If True, partitions the + dataset for distributed execution automatically. Otherwise, it is + assumed that partitioning has been handled manually. + mode (poptorch.DataLoaderMode, optional): If `DataLoaderMode.Async`, + uses an :py:class:`~poptorch.AsynchronousDataAccessor` to access + the dataset. If `DataLoaderMode.Sync`, accesses the dataset + synchronously. + async_options (Dict[str, Any], optional): Options to pass to + :py:class:`~poptorch.AsynchronousDataAccessor`. + rebatched_worker_size (int, optional): When using AsyncRebatched: batch + size of the tensors loaded by the workers. + Default to the combined batch size. + If specified the ``rebatched_worker_size`` must be less than + or equal to the combined batch size. + kwargs (Dict[str, Any], optional): Other options to pass to PyTorch's + ``DataLoader`` constructor. + """ + + def __init__(self, + dataset, + options, + batch_size=1, + shuffle=False, + num_workers=0, + drop_last=True, + persistent_workers=True, + auto_distributed_partitioning=True, + mode='sync', + async_options=None, + rebatched_worker_size=None, + **kwargs): + """Lazy init: + + In many frameworks, the dataloader will be constructed before the + initialization of the ipu options, so the lazy init method is used + here, and the real initialization will not be done until the dataloader + needs to be used and the options are input. + """ + # lazy init: sometimes, we cannot get IPU options when build data + # loader + self.kwargs = { + 'dataset': dataset, + 'batch_size': batch_size, + 'shuffle': shuffle, + 'num_workers': num_workers, + 'drop_last': drop_last, + 'persistent_workers': persistent_workers, + 'auto_distributed_partitioning': auto_distributed_partitioning, + 'mode': mode, + 'collate_fn': partial(collate, samples_per_gpu=batch_size), + 'async_options': async_options, + 'rebatched_worker_size': rebatched_worker_size, + **kwargs + } + self.dataset = dataset + self.initialized = False + if options: + self.init(options=options) + + def init(self, options, **kwargs): + if not self.initialized: + kwargs = {**self.kwargs, **kwargs, 'options': options} + if kwargs['mode'] == 'sync': + kwargs['mode'] = poptorch.DataLoaderMode.Sync + elif kwargs['mode'] == 'async': + kwargs['mode'] = poptorch.DataLoaderMode.AsyncRebatched + if kwargs['async_options'] is None: + kwargs['async_options'] = { + 'load_indefinitely': True, + 'buffer_size': 8 + } + if kwargs['rebatched_worker_size'] is None: + kwargs['rebatched_worker_size'] = 128 + super().__init__(**kwargs) + self.initialized = True + + return self diff --git a/mmcv/device/ipu/hierarchical_data_manager.py b/mmcv/device/ipu/hierarchical_data_manager.py new file mode 100755 index 0000000..a6f3b3c --- /dev/null +++ b/mmcv/device/ipu/hierarchical_data_manager.py @@ -0,0 +1,243 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import numpy as np +import torch + +from mmcv.parallel import DataContainer + +# A customized None type for HierarchicalDataManager +HierarchicalDataNone = object() + + +class HierarchicalDataManager: + """A class manage all the tensors in the hierarchical data. + + At present, the input data structure accepted by IPU is limited, + when the input data structure of mmcv varies. + Here, an intermediate class is needed to get and update tensors + from the original data. + + HierarchicalDataManager will record a hierarchical input/output data in + self._hierarchical_data. For example, we have an input data: + {'img': tensorA, 'label': tensorB, 'img_metas': [tensorC, tensorD]} + To enable IPU to use the input, HierarchicalDataManager will collect + the torch tensors from self._hierarchical_data into a tuple like: + (tensorA, tensorB, tensorC, tensorD). + Meanwhile, the return of IPU is a tuple of tensors, HierarchicalDataManager + also have a function named update_all_tensors to update tensors in + self._hierarchical_data which is the output for upper calls. + + Args: + logger (:obj:`logging.Logger`): Logger used during running. + Defaults to None. + """ + + def __init__(self, logger=None): + self.atomic_types = (int, str, float, np.ndarray, type(None)) + self.warning = warnings.warn if logger is None else logger.warning + # enable or disable input data's shape and value check + self.quick_mode = False + self._hierarchical_data = None + + def quick(self): + self.quick_mode = True + + def compare_atomic_type(self, a, b): + """Compare data, supported datatypes are numpy array and python basic + types.""" + if isinstance(a, np.ndarray): + return np.all(a == b) + else: + return a == b + + def record_hierarchical_data(self, data): + """Record a hierarchical data.""" + if self._hierarchical_data is not None: + if isinstance(data, torch.Tensor): + assert isinstance(self._hierarchical_data, torch.Tensor), \ + 'original hierarchical data is not torch.tensor' + self._hierarchical_data = data + else: + self.update_hierarchical_data(data) + else: + self._hierarchical_data = data + + @property + def hierarchical_data(self): + return self._hierarchical_data + + def update_hierarchical_data(self, + dataA, + dataB=HierarchicalDataNone, + strict=True, + address='data'): + """Update dataB with dataA in-place. + + Args: + dataA (list or dict or tuple): New hierarchical data. + dataB (list or dict or tuple): hierarchical data to update. + if not specified, self.hierarchical_data will be updated then. + strict (bool, optional): If true, an error will be reported + when the following conditions occur: + 1. Non-torch.Tensor data changed. + 2. Torch.Tensor data shape changed. + address (str): Record the address of current data to be updated. + Default: 'data'. + """ + if dataB is HierarchicalDataNone: + dataB = self.hierarchical_data + + # Update with a da ta with the same structure + # but different values(tensors and basic python data types) + if isinstance(dataA, (tuple, list)): + for idx, node in enumerate(dataA): + new_address = '' + if not self.quick_mode: + new_address = address + f'[{str(idx)}]' + assert isinstance(node, type(dataB[idx])),\ + f'data structure changed: {new_address}' + if isinstance(node, torch.Tensor): + dataB[idx] = node + else: + self.update_hierarchical_data( + node, dataB[idx], strict, address=new_address) + elif isinstance(dataA, dict): + for k, v in dataA.items(): + new_address = '' + if not self.quick_mode: + new_address = address + f'[{str(k)}]' + assert isinstance(v, type(dataB[k])),\ + f'data structure changed: {new_address}' + if isinstance(v, torch.Tensor): + dataB[k] = v + else: + self.update_hierarchical_data( + v, dataB[k], strict, address=new_address) + elif isinstance(dataA, self.atomic_types): + if not self.quick_mode: + is_equal = self.compare_atomic_type(dataA, dataB) + if not is_equal: + if strict: + raise ValueError( + 'all data except torch.Tensor should be same, ' + f'but data({address}) is changed.') + else: + self.warning( + f'find a non-torch.Tensor data({type(dataA)}) ' + f'changed, and the address is {address}') + elif isinstance(dataA, DataContainer): + if not self.quick_mode: + assert isinstance(dataB, DataContainer) + new_address = address + '.data' + self.update_hierarchical_data( + dataA.data, dataB.data, False, address=new_address) + else: + raise NotImplementedError( + f'not supported datatype:{type(dataA)}, address is {address}') + + def collect_all_tensors(self, hierarchical_data=None): + """Collect torch.Tensor data from self.hierarchical_data to a list and + return.""" + # get a list of tensor from self._hierarchical_data + if hierarchical_data is None: + hierarchical_data = self._hierarchical_data + tensors = [] + if isinstance(hierarchical_data, torch.Tensor): + tensors = [hierarchical_data] + else: + self._collect_tensors(hierarchical_data, tensors) + return tensors + + def _collect_tensors(self, data, tensors): + if isinstance(data, (tuple, list)): + for node in data: + if isinstance(node, torch.Tensor): + tensors.append(node) + else: + self._collect_tensors(node, tensors) + elif isinstance(data, dict): + for v in data.values(): + if isinstance(v, torch.Tensor): + tensors.append(v) + else: + self._collect_tensors(v, tensors) + elif isinstance(data, self.atomic_types): + pass + elif isinstance(data, DataContainer): + self._collect_tensors(data.data, tensors) + else: + raise NotImplementedError(f'not supported datatype:{type(data)}') + + def update_all_tensors(self, tensors): + """Put tensors from tuple back to self.hierarchical_data.""" + if isinstance(self._hierarchical_data, torch.Tensor): + print(tensors, len(tensors)) + assert len(tensors) == 1 + assert isinstance(tensors[0], torch.Tensor) + self._hierarchical_data = tensors[0] + else: + # convert to list if tensors is tuple + tensors = list(tensors) + self._set_tensors(self._hierarchical_data, tensors) + return self.hierarchical_data + + def _set_tensors(self, data, tensors): + if isinstance(data, tuple): + data = list(data) + for idx in range(len(data)): + if isinstance(data[idx], torch.Tensor): + data[idx] = tensors.pop(0) + else: + self._set_tensors(data[idx], tensors) + data = tuple(data) + elif isinstance(data, list): + for idx in range(len(data)): + if isinstance(data[idx], torch.Tensor): + data[idx] = tensors.pop(0) + else: + self._set_tensors(data[idx], tensors) + elif isinstance(data, dict): + for k, v in data.items(): + if isinstance(v, torch.Tensor): + data[k] = tensors.pop(0) + else: + self._set_tensors(v, tensors) + elif isinstance(data, self.atomic_types): + pass + elif isinstance(data, DataContainer): + self._set_tensors(data.data, tensors) + else: + raise NotImplementedError(f'not supported datatype:{type(data)}') + + def clean_all_tensors(self): + """Delete tensors from self.hierarchical_data.""" + self._clean_tensors(self._hierarchical_data) + + def _clean_tensors(self, data): + if isinstance(data, tuple): + data = list(data) + for idx in range(len(data)): + if isinstance(data[idx], torch.Tensor): + data[idx] = None + else: + self._clean_tensors(data[idx]) + data = tuple(data) + elif isinstance(data, list): + for idx in range(len(data)): + if isinstance(data[idx], torch.Tensor): + data[idx] = None + else: + self._clean_tensors(data[idx]) + elif isinstance(data, dict): + for k, v in data.items(): + if isinstance(v, torch.Tensor): + data[k] = None + else: + self._clean_tensors(v) + elif isinstance(data, self.atomic_types): + pass + elif isinstance(data, DataContainer): + self._clean_tensors(data.data) + else: + raise NotImplementedError(f'not supported datatype:{type(data)}') diff --git a/mmcv/device/ipu/hook_wrapper.py b/mmcv/device/ipu/hook_wrapper.py new file mode 100755 index 0000000..141afb8 --- /dev/null +++ b/mmcv/device/ipu/hook_wrapper.py @@ -0,0 +1,105 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.runner import HOOKS, LrUpdaterHook, OptimizerHook +from mmcv.utils import TORCH_VERSION, digit_version + + +def wrap_lr_updater_hook(lr_hook_class): + """A wrapper function to wrap any subclass of LrUpdaterHook. + + IPU needs extra operations to upload optimizer settings. This wrapper will + override function(_set_lr) of a subclass of LrUpdaterHook. + """ + assert issubclass(lr_hook_class, LrUpdaterHook) + + class ipu_lr_hook_class(lr_hook_class): + + def _set_lr(self, runner, *args, **kwargs): + super()._set_lr(runner, *args, **kwargs) + # convert torch optimizer to poptorch optimizer + runner.model.setOptimizer(runner.optimizer) + + return ipu_lr_hook_class + + +def wrap_optimizer_hook(optimizer_hook_class): + """A wrapper function to wrap OptimizerHook. + + This is an non-intrusive implementation of wrapping optimizer hook (or you + need to change every config file to use IPU optimizer hook) IPU's clip-norm + implementation is different from pytorch, so there should be an error + raised when using clip-norm. + """ + + class ipu_optimizer_hook_class(OptimizerHook): + + def __init__(self, **kwargs): + super().__init__(**kwargs) + if self.grad_clip is not None: + raise NotImplementedError('IPU does not support gradient clip') + + return ipu_optimizer_hook_class + + +if (TORCH_VERSION != 'parrots' + and digit_version(TORCH_VERSION) >= digit_version('1.6.0')): + + @HOOKS.register_module() + class IPUFp16OptimizerHook(OptimizerHook): + """FP16 optimizer hook (using PyTorch's implementation). + + If you are using PyTorch >= 1.6, torch.cuda.amp is used as the backend, + to take care of the optimization procedure. + + Args: + loss_scale (float | str | dict): Scale factor configuration. + If loss_scale is a float, static loss scaling will be used with + the specified scale. If loss_scale is a string, it must be + 'dynamic', then dynamic loss scaling will be used. + It can also be a dict containing arguments of GradScalar. + Defaults to 512. For Pytorch >= 1.6, mmcv uses official + implementation of GradScaler. If you use a dict version of + loss_scale to create GradScaler, please refer to: + https://pytorch.org/docs/stable/amp.html#torch.cuda.amp.GradScaler + for the parameters. + + Examples: + >>> loss_scale = dict( + ... init_scale=65536.0, + ... growth_factor=2.0, + ... backoff_factor=0.5, + ... growth_interval=2000 + ... ) + >>> optimizer_hook = Fp16OptimizerHook(loss_scale=loss_scale) + """ + + def __init__(self, + grad_clip=None, + coalesce=True, + bucket_size_mb=-1, + loss_scale=512., + distributed=True): + assert grad_clip is None,\ + 'IPU mode does not support `grad_clip` currently' + assert coalesce,\ + 'implemented all reduce in distributed training currently' + assert bucket_size_mb == -1,\ + '`bucket_size_mb` should not be set in IPU mode' + self.distributed = distributed + self._scale_update_param = None + if loss_scale == 'dynamic': + raise NotImplementedError( + 'IPU mode does not support dynamic loss scale currently') + elif isinstance(loss_scale, float): + self.loss_scale = loss_scale + elif isinstance(loss_scale, dict): + raise NotImplementedError( + 'IPU mode supports single scale currently') + else: + raise ValueError( + f'loss_scale should be float, but got {loss_scale} ') + + def after_train_iter(self, runner): + pass + +else: + raise RuntimeError('The IPU mode only supports torch 1.6 and above') diff --git a/mmcv/device/ipu/model_wrapper.py b/mmcv/device/ipu/model_wrapper.py new file mode 100755 index 0000000..c345537 --- /dev/null +++ b/mmcv/device/ipu/model_wrapper.py @@ -0,0 +1,721 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import copy +import inspect +from collections import OrderedDict +from typing import Optional, Union + +import poptorch +import torch +import torch.nn as nn +from poptorch import PoplarExecutor, __version__, identity_loss +from poptorch._args_parser import ArgsParser + +from mmcv.runner import auto_fp16 +from .hierarchical_data_manager import HierarchicalDataManager +from .utils import compare_ndarray, model_sharding, recomputation_checkpoint + + +class DictArgsParser(ArgsParser): + """A helper class for handling model input. + + Args: + inputs (list): Inputs of model. + """ + + def __init__(self, inputs): + # Combine args and kwargs: + self._has_variadic_arguments = True + self._varnames = list(inputs.keys()) + self._defaults = [inspect.Parameter.empty for _ in self._varnames] + self._warned_not_contiguous_input = False + + +class WrappedNet(nn.Module): + """A net wrapper for model conversion. + + This wrapper will make some changes and add some extra functions to + training/inference model. + + Args: + model (:obj:`nn.Module`): The model to run. + inputs_manager (:obj:`HierarchicalDataManager`): A parser + converting inputs from tuple to dictionary. + outputs_manager (:obj:`HierarchicalDataManager`): A parser + converting outputs from dictionary to tuple. + inter_outputs_in_cpu (dict): Specify the features to be + recorded. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + """ + + def __init__(self, + model, + inputs_manager, + outputs_manager, + inter_outputs_in_cpu, + modules_to_record=None): + super().__init__() + self.model = model + self.inputs_manager = inputs_manager + self.outputs_manager = outputs_manager + self.training = model.training + # Register a hook function to capture the intermediate features + # generated by the network to align the outputs between ipu and cpu + # Used to confirm whether the implementation of CPU is consistent + # with the implementation of IPU + self.inter_outputs_in_cpu = inter_outputs_in_cpu + if modules_to_record is None: + modules_to_record = [] + + for idx, (name, module) in enumerate(model.named_modules()): + if name in modules_to_record or idx in modules_to_record: + features_hook = self.get_input_output_hook( + name, idx, self.inter_outputs_in_cpu) + module.register_forward_hook(hook=features_hook) + + def get_input_output_hook(self, name, idx, save_dict): + + def input_output_hook(module, fea_in, fea_out): + if isinstance(fea_in, tuple): + fea_in = list(fea_in) + if isinstance(fea_out, tuple): + fea_out = list(fea_out) + save_dict[name] = { + 'fea_in': fea_in, + 'fea_out': fea_out, + 'idx': idx + } + return None + + return input_output_hook + + def forward(self, inputs_tuple): + """This function is used to be compiled to ipu, the inputs and outputs + need to be tuples, so here we need to restore the input back to a + dictionary and convert the output to a tuple.""" + self.inputs_manager.update_all_tensors(inputs_tuple) + kwargs = {**(self.inputs_manager.hierarchical_data)} + if self.training: + outputs = self.forward_train(kwargs) + # tell poptorch which loss will be used finally + identity_loss(outputs['loss'], reduction='none') + else: + outputs = self.forward_eval(kwargs) + + if isinstance(outputs, torch.Tensor): + # currently not support single tensor output, + # need to wrap it with a dictionary, + # use a keyword to identify this case + outputs = {'output of WrappedNet: single tensor': outputs} + + # if there are some features need to be record, add extra outputs + for name in self.inter_outputs_in_cpu: + outputs[name] = self.inter_outputs_in_cpu[name] + + # record all the places of return tensors in the converting stage + # while in the real run stage, all the tensor are changed in-place + # that means the output can be obtained directly outside this function + self.outputs_manager.record_hierarchical_data(outputs) + plain_outputs = self.outputs_manager.collect_all_tensors() + return plain_outputs + + def forward_train(self, kwargs): + optimizer = kwargs.pop('optimizer') + outputs = self.train_step(kwargs, optimizer) + return outputs + + def train_step(self, data, optimizer=None, **kwargs): + """The iteration step during training. + + This method defines an iteration step during training, except for the + back propagation and optimizer updating, which are done in an optimizer + hook. Note that in some complicated cases or models, the whole process + including back propagation and optimizer updating are also defined in + this method, such as GAN. + + Args: + data (dict): The output of dataloader. + optimizer (:obj:`torch.optim.Optimizer`, optional): The + optimizer of runner is passed to ``train_step()``. This + argument is unused and reserved. + + Returns: + dict: Dict of outputs. The following fields are contained. + - loss (torch.Tensor): A tensor for back propagation, which \ + can be a weighted sum of multiple losses. + - log_vars (dict): Dict contains all the variables to be sent \ + to the logger. + - num_samples (int): Indicates the batch size (when the model \ + is DDP, it means the batch size on each GPU), which is \ + used for averaging the logs. + """ + losses = self.model(**data) + loss, log_vars = self._parse_losses(losses) + + outputs = dict( + loss=loss, log_vars=log_vars, num_samples=len(data['img'].data)) + + return outputs + + def _parse_losses(self, losses): + log_vars = OrderedDict() + for loss_name, loss_value in losses.items(): + if isinstance(loss_value, torch.Tensor): + log_vars[loss_name] = loss_value.mean() + elif isinstance(loss_value, list): + log_vars[loss_name] = sum(loss.mean() for loss in loss_value) + elif isinstance(loss_value, dict): + for name, value in loss_value.items(): + log_vars[name] = value + else: + raise TypeError( + f'{loss_name} is not a tensor or list of tensors') + + loss = sum(value for key, value in log_vars.items() if 'loss' in key) + log_vars['loss'] = loss + + return loss, log_vars + + def forward_eval(self, kwargs): + img = kwargs.pop('img') + img_metas = kwargs.pop('img_metas', None) + return_loss = kwargs.pop('return_loss') + assert not return_loss + # TODO Temporarily hard-code to close post_process, + # otherwise, in the third trace(_check_trace), + # post_process will convert output tensor to numpy array automatically, + # resulting in _check_trace failure + outputs = self.model( + img, + img_metas=img_metas, + return_loss=return_loss, + post_process=False) + return outputs + + +class MMPoplarExecutor(PoplarExecutor): + """An executor for inputs/outputs parsing, model compilation, data + alignment and IPU upload/download. + + Args: + model (:obj:`nn.Module`): The model to be compiled. + logger (:obj:`logging.Logger`): Logger used during running. + Defaults to None. + training (bool): Model in training mode or eval mode. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + args (argument list): Arguments passed to the `__init__` + method of PoplarExecutor. + kwargs (keyword arguments): Keyword arguments passed to the `__init__` + method of PoplarExecutor. + """ + + def __init__(self, + model, + logger=None, + training=True, + modules_to_record=None, + *args, + **kwargs): + # self.model == self._user_model: input pytorch model + # self._model: wrapped model which is used to compile + # and update weights, these two models use same weights + # wrapped model only accept and output tuple, so + # HierarchicalDataManager will convert dictionary + # to tuple and convert them back + self.inputs_manager = HierarchicalDataManager(logger=logger) + self.outputs_manager = HierarchicalDataManager(logger=logger) + self.logger = logger + # the features calculated by CPU + self.inter_outputs_in_cpu = {} + # the features calculated by IPU + self.inter_outputs_in_ipu = {} + if modules_to_record is None: + # It is possible that the IPU implementation of some operators + # is inconsistent with the expected (CPU), here you can use + # this method to confirm whether there is a problem + self.compare_with_cpu = False + else: + self.compare_with_cpu = True + # move model.fp16_enabled to self.fp16_enabled, + # modify the position where the input is automatically casted to half + if getattr(model, 'fp16_enabled', False): + model.fp16_enabled = False + self.fp16_enabled = True + # make torch.jit.trace convert self._model + model = WrappedNet( + model, + self.inputs_manager, + self.outputs_manager, + self.inter_outputs_in_cpu, + modules_to_record=modules_to_record) + super().__init__(model, training=training, *args, **kwargs) + # overwrite self._args_parser in train_step or val_step + self._args_parser = None + if training: + assert self.training + else: + assert not self.training + + @property + def training(self): + # If trying to get the attribute(training) of self, + # since the class has no training attribute, + # it will automatically look for the training attribute of self.model. + # However, the real attribute we want to check is self._training, + # self.model.training and self._training are often inconsistent. + # It is not clear whether it is a Poptorch bug or a special design, + # temporarily use this function to fix the problem + return self._training # comes from self.model._training + + @auto_fp16(supported_types=(PoplarExecutor, )) + def run_model(self, data_dict): + # this function is used to parse input_dict + # and convert to output_dict + if self.isCompiled(): + self.inputs_manager.record_hierarchical_data(data_dict) + inputs_tuple = tuple(self.inputs_manager.collect_all_tensors()) + else: + # get tensors out of data and put them in a tuple + self.inputs_manager.record_hierarchical_data(data_dict) + inputs_tuple = tuple(self.inputs_manager.collect_all_tensors()) + # turn logger in data manager off after compilation + self.inputs_manager.quick() + self.outputs_manager.quick() + + # parser args in the first iter + if self._args_parser is None: + self._args_parser = DictArgsParser({'args': inputs_tuple}) + + # run or convert model + # the plain_outputs will be used in converting stage + plain_outputs = self(inputs_tuple) + + self.inputs_manager.clean_all_tensors() + + # put list of tensors back to the output dict + # according to the same order + self.outputs_manager.update_all_tensors(plain_outputs) + # get the real output dictionary from self.outputs_manager + output_dict = self.outputs_manager.hierarchical_data + + # split output_dict into inter_outputs_in_ipu + # and output of the torch model + torch_model_output = {} + for name in output_dict: + if name in self.inter_outputs_in_cpu: + self.inter_outputs_in_ipu[name] = output_dict[name] + else: + torch_model_output[name] = output_dict[name] + + if 'output of WrappedNet: single tensor' in output_dict: + assert len(torch_model_output) == 1 + assert isinstance( + torch_model_output['output of WrappedNet: single tensor'], + torch.Tensor) + torch_model_output = \ + torch_model_output['output of WrappedNet: single tensor'] + + return torch_model_output + + def train_step(self, data, optimizer=None, **kwargs): + # arguments from mmcls/models/classifiers/base.py: + # BaseClassifier.train_step + assert self.training + assert len(kwargs) == 0 # TODO, support later if necessary + + # TODO support datacontainer as input + # currently, auto_fp16 and HierarchicalDataManager take too much + # time on traversing datacontainer + data['img_metas'] = None + num_samples = len(data['img'].data) + + # TODO we will ignore optimizer because it will not be used in model, + # support later if necessary + data['optimizer'] = None + output_dict = self.run_model(data) + + # outputs contained loss, log_vars, num_samples, + # only loss(torch.tensor) has been updated + # remove all unchanged vars, left torch.tensor + neat_output_dict = {'loss': output_dict['loss']} + + # re-parse outputs, get back log_vars and num_samples + loss, log_vars = self.model._parse_losses(neat_output_dict) + final_output_dict = dict( + loss=loss, log_vars=log_vars, num_samples=num_samples) + return final_output_dict + + def eval_call(self, img, img_metas=None, return_loss=True, **kwargs): + # arguments from mmdet/models/detectors/base.py:BaseDetector.forward + # tmp usssage for eval mode + assert not self.training + assert len(kwargs) == 0 # TODO, support later if necessary + assert not return_loss + data = {'img': img, 'img_metas': img_metas, 'return_loss': return_loss} + + output_dict = self.run_model(data) + + return output_dict + + def detachFromDevice(self): + if self.isCompiled() and self._is_attached: + super().detachFromDevice() + + def attachToDevice(self): + if self.isCompiled() and not self._is_attached: + super().attachToDevice() + + +class TrainEvalModel: + """A class maintaining training MMPoplarExecutor and inference + MMPoplarExecutor. + + Args: + train_model (:obj:`nn.Module`): The training model to be compiled. + ``train_model`` can be None if only executing validation. + eval_model (:obj:`nn.Module`): The inference model to be compiled. + options (mmcv.Config, dict): Options that will be used to compile + and run the model. + optimizer (:obj:`torch.optim.Optimizer`, optional): torch + optimizer, necessary if in training mode + logger (:obj:`logging.Logger`): Logger used during running. + Defaults to None. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + """ + + def __init__(self, + train_model, + eval_model, + options, + optimizer, + modules_to_record=None, + logger=None): + if train_model is None: + self._train_executor = None + self.training = False + else: + self._train_executor = get_training_model( + train_model, + options=options['training'], + optimizer=optimizer, + logger=logger, + modules_to_record=modules_to_record) + self.training = True + self._eval_executor = get_inference_model( + eval_model, options=options['inference'], logger=logger) + + @property + def executor(self): + if self.training: + return self._train_executor + else: + return self._eval_executor + + def train(self, mode: bool = True): + """Sets the module in training mode. + + This has any effect only on certain modules. See documentations of + particular modules for details of their behaviors in + training/evaluation mode, if they are affected, + e.g. :class:`Dropout`, :class:`BatchNorm`, etc. + + Args: + mode (bool): whether to set training mode (``True``) or evaluation + mode (``False``). Default: ``True``. + + Returns: + Module: self + """ + if not isinstance(mode, bool): + raise ValueError('training mode is expected to be boolean, ' + f'but got {type(mode)}') + if self._train_executor is None and mode: + raise RuntimeError( + 'The train_executor is not initialized.' + 'If you want to initialize train_executor,' + 'you need to input optimizer when converting pytorch model') + + if mode == self.training: + self.model.train(mode) + return self + else: + if self.isCompiled(): + # copy weights from IPU to cpu before off-load current session + self.copyWeightsToHost() + # detach the current session before change the mode, + # if is training mode and weights are updated, + # poptorch will copy weights from IPU to host + self.detachFromDevice() + + self.training = mode # session will changed with mode changing + self.model.train(mode) + + # after changing mode, attach the current new session, + # and this function will copy weights of model to device + self.attachToDevice() + return self + + def eval(self): + """Sets the module in evaluation mode. + + This has any effect only on certain modules. + See documentations of particular modules + for details of their behaviors in training/evaluation mode, + if they are affected, e.g. :class:`Dropout`, :class:`BatchNorm`, etc. + + This is equivalent with :meth:`self.train(False) + `. + + See :ref:`locally-disable-grad-doc` for a comparison between + `.eval()` and several similar mechanisms that may be confused with it. + + Returns: + Module: self + """ + return self.train(False) + + def compare_data_between_ipu_and_cpu(self, inter_outputs_in_cpu, + inter_outputs_in_ipu): + for key, val in inter_outputs_in_cpu.items(): + is_tensor = isinstance(val['fea_in'], torch.Tensor) + fea_in_cpu = val['fea_in'] + fea_in_cpu_list = [fea_in_cpu] if is_tensor else fea_in_cpu + fea_in_ipu = inter_outputs_in_ipu[key]['fea_in'] + fea_in_ipu_list = [fea_in_ipu] if is_tensor else fea_in_ipu + + is_tensor = isinstance(val['fea_out'], torch.Tensor) + fea_out_cpu = val['fea_out'] + fea_out_cpu_list = [fea_out_cpu] if is_tensor else fea_out_cpu + fea_out_ipu = inter_outputs_in_ipu[key]['fea_out'] + fea_out_ipu_list = [fea_out_ipu] if is_tensor else fea_out_ipu + + print('comparing layer:', key) + for idx, (featA, featB) in \ + enumerate(zip(fea_in_cpu_list, fea_in_ipu_list)): + print('fea_in, tensor ', idx) + compare_ndarray(featA.detach().numpy(), featB.detach().numpy()) + for idx, (featA, featB) in \ + enumerate(zip(fea_out_cpu_list, fea_out_ipu_list)): + print('fea_out, tensor', idx) + compare_ndarray(featA.detach().numpy(), featB.detach().numpy()) + + # TODO Unified training and eval interface, + # merge train_step(train) and __call__(eval) together + def train_step(self, data, optimizer=None, **kwargs): + assert self.training, 'not supported train_step on eval mode' + inter_outputs_in_cpu = {} + if (self._train_executor.isCompiled() + and self._train_executor.compare_with_cpu): + self.copyWeightsToHost() + # run in CPU mode + self._train_executor.model.train_step(data, optimizer, **kwargs) + inter_outputs_in_cpu = { + **(self._train_executor.inter_outputs_in_cpu) + } + # run in IPU mode + result = self._train_executor.train_step(data, optimizer, **kwargs) + if (self._train_executor.isCompiled() + and self._train_executor.compare_with_cpu + and len(inter_outputs_in_cpu) > 0): + self.compare_data_between_ipu_and_cpu( + inter_outputs_in_cpu, + self._train_executor.inter_outputs_in_ipu) + return result + + # TODO Unified training and eval interface, + # merge train_step(train) and __call__(eval) together + def __call__(self, *args, **kwargs): + if self.training: + raise NotImplementedError('use train_step rather than __call__') + else: + return self._eval_executor.eval_call(*args, **kwargs) + + def __getattr__(self, attr): + return getattr(self.executor, attr) + + +def get_training_model(model: nn.Module, + options: Optional[poptorch.Options] = None, + optimizer: Optional[torch.optim.Optimizer] = None, + logger=None, + modules_to_record=None) -> poptorch.PoplarExecutor: + """Create a PopTorch training model from a PyTorch model, running on IPU + hardware in training mode. + + Note: + PopTorch makes a shallow copy of the model. Changes to the + parameters in the returned training model affect the original model + and vice versa. However, primitive variable types are not synced: for + example calling ``model.train()`` on the original model, which + changes the ``training`` bool of the model instance, will not alter the + model returned by this function. You may need to call ``model.train()`` + on your model before you call this function for correct behavior. + + Args: + model (:obj:`nn.Module`): The model to run. + options (poptorch.Options): Options that will be used to compile + and run the model. + optimizer (:obj:`torch.optim.Optimizer`, optional): The optimizers + to apply during training. + logger (:obj:`logging.Logger`): Logger used during running. + Defaults to None. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + + Returns: + The :class:`poptorch.PoplarExecutor` wrapper to use in place + of ``model``. + """ + # Create a copy of the original model in case it needs to be wrapped + maybe_wrapped_model = copy.copy(model) + + return MMPoplarExecutor( + model=maybe_wrapped_model, + logger=logger, + options=options, + training=True, + optimizer=optimizer, + user_model=model, + modules_to_record=modules_to_record, + poptorch_version=__version__) + + +def get_inference_model(model: Union[nn.Module, poptorch.PoplarExecutor], + options: Optional[poptorch.Options] = None, + logger=None) -> poptorch.PoplarExecutor: + """Create a PopTorch inference model from a PyTorch model, running on IPU + hardware in inference mode. + + Note: + PopTorch makes a shallow copy of the model. Changes to the + parameters in the returned inference model affect the original model + and vice versa. However, primitive variable types are not synced: for + example calling ``model.eval()`` on the original model will not alter + the model returned by this function. You may need to call + ``model.eval()`` on your model before you call this function for + correct behavior. + + Args: + model (:obj:`nn.Module`): The model to run. + options (poptorch.Options): Options that will be used to compile + and run the model. + logger (:obj:`logging.Logger`): Logger used during running. + Defaults to None. + + Returns: + The :class:`poptorch.PoplarExecutor` wrapper to use in place of + ``model``. + """ + + return MMPoplarExecutor( + model=copy.copy(model), + logger=logger, + options=options, + training=False, + poptorch_version=__version__) + + +def ipu_model_wrapper(model, + options, + optimizer=None, + logger=None, + modules_to_record=None, + ipu_model_cfg=None, + fp16_cfg=None): + """Convert torch model to IPU model. + + Args: + model (nn.Module): The target model to be converted. + options (dict[str, poptorch.Options]): IPU options, generated + by :func:`cfg2options`. + optimizer (:obj:`torch.optim.Optimizer`, optional): torch + optimizer, necessary if in training mode + logger (:obj:`logging.Logger`): Logger used during training. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + ipu_model_cfg (dict): A dictionary contains train_split_edges and + train_ckpt_nodes, See details in :func:`model_sharding` and + :func:`recomputation_checkpoint` functions. + fp16_cfg (dict): Config for IPU fp16 training. Currently supports + configs: `loss_scale`, `velocity_accum_type` and `accum_type`. + See details in + https://docs.graphcore.ai/projects/poptorch-user-guide/en/latest/index.html + + Returns: + TrainEvalModel: IPU wrapped model. + """ + if ipu_model_cfg is None: + ipu_model_cfg = {} + training = model.training if optimizer is not None else False + # set mixed-precision + if fp16_cfg is not None: + from mmcv.runner import wrap_fp16_model + loss_scale = fp16_cfg['loss_scale'] + wrap_fp16_model(model) + model.half() + # TODO tmp ussage to set loss scaling for torch original optimizer + if optimizer is not None: + optimizer.loss_scaling = loss_scale + if fp16_cfg.get('velocity_accum_type', False): + if fp16_cfg['velocity_accum_type'] == 'half': + optimizer.velocity_accum_type = torch.half + else: + optimizer.velocity_accum_type = torch.float32 + if fp16_cfg.get('accum_type', False): + if fp16_cfg['accum_type'] == 'half': + optimizer.accum_type = torch.half + else: + optimizer.accum_type = torch.float32 + # TODO support feature alignment for fp16 + if modules_to_record is not None: + raise NotImplementedError( + 'Feature alignment for fp16 is not implemented') + + # set model partition + if optimizer is None: + train_model = None + else: + # split model into multi-IPUs if specified + train_model = model_sharding( + copy.copy(model).train(), + ipu_model_cfg.get('train_split_edges', [])) + + recomputation_checkpoint(train_model, + ipu_model_cfg.get('train_ckpt_nodes', [])) + + # TODO support feature alignment for gradient accumulation mode + gradient_accumulation = \ + getattr(options['training'].Training, 'gradient_accumulation', 1) + if gradient_accumulation > 1: + assert modules_to_record is None, \ + 'Feature alignment for grad-accumulation mode not implemented' + + # TODO support feature alignment for multi-replica mode + replication_factor = \ + getattr(options['training'], 'replication_factor', 1) + if replication_factor > 1: + assert modules_to_record is None, \ + 'Feature alignment for multi-replica mode not implemented' + + # TODO supports different model partitions between train and eval mode + assert len(ipu_model_cfg.get('eval_split_edges', [])) == 0,\ + 'Currently, BeginBlock can only be used once on the same model' + eval_model = copy.copy(model).eval() + + # wrap model for compilation + model = TrainEvalModel( + train_model, + eval_model, + options=options, + optimizer=optimizer, + logger=logger, + modules_to_record=modules_to_record) + model.train(training) + return model diff --git a/mmcv/device/ipu/runner.py b/mmcv/device/ipu/runner.py new file mode 100755 index 0000000..e2d4922 --- /dev/null +++ b/mmcv/device/ipu/runner.py @@ -0,0 +1,142 @@ +# Copyright (c) OpenMMLab. All rights reserved. + +from mmcv.runner import (HOOKS, RUNNERS, BaseRunner, EpochBasedRunner, + IterBasedRunner) +from mmcv.utils import IS_IPU_AVAILABLE + +if IS_IPU_AVAILABLE: + from .dataloader import IPUDataLoader + from .hook_wrapper import (IPUFp16OptimizerHook, wrap_lr_updater_hook, + wrap_optimizer_hook) + from .model_wrapper import ipu_model_wrapper + from .utils import build_from_cfg_with_wrapper, cfg2options + + +class IPUBaseRunner(BaseRunner): + """A base runner for IPU. + + This runner has some extra processes for IPU which are shown below: + + 1. Parse options for IPU + 2. wrap pytorch model for IPU + 3. Raise errors while encountering illegal usage + 4. Input IPU options and initialize dataloader if finding an instance + of IPUDataLoader + + Args: + model (:obj:`nn.Module`): The model to run. + options_cfg (mmcv.Config, dict): Options that will be used to compile + and run the model. + modules_to_record (mmcv.Config, list): Index or name of modules which + will be recorded for output. It is necessary to specify output for + static graph of model training or inference. + ipu_model_cfg (mmcv.Config, dict): Config of model partition and + recomputing checkpoint + fp16_cfg (mmcv.Config): Config for fp16 training. + batch_processor (callable): A callable method that process a data + batch. Should be None for IPU runner + kwargs (Dict[str, Any], optional): Keyword arguments will be passed to + ``base_runner.BaseRunner``. + """ + + def __init__(self, + model, + options_cfg=None, + modules_to_record=None, + ipu_model_cfg=None, + fp16_cfg=None, + batch_processor=None, + **kwargs): + assert hasattr(model, 'train_step') and batch_processor is None,\ + 'only support model with train_step' + + if options_cfg is None: + options_cfg = {} + # call BaseRunner.__init__() here + super().__init__(model, **kwargs) + + # process options of ipu + if IS_IPU_AVAILABLE: + self.options = cfg2options(options_cfg) + self.model = ipu_model_wrapper( + self.model, + self.options, + self.optimizer, + self.logger, + modules_to_record=modules_to_record, + ipu_model_cfg=ipu_model_cfg, + fp16_cfg=fp16_cfg) + else: + raise NotImplementedError('cpu mode on IPURunner is not supported') + + def register_lr_hook(self, lr_config): + if lr_config is None: + return + assert isinstance(lr_config, dict) + assert 'policy' in lr_config + policy_type = lr_config.pop('policy') + # If the type of policy is all in lower case, + # e.g., 'cyclic', then its first letter will be capitalized, + # e.g., to be 'Cyclic'. + # This is for the convenient usage of Lr updater. + # Since this is not applicable for ` + # CosineAnnealingLrUpdater`, the string will not be changed + # if it contains capital letters. + if policy_type == policy_type.lower(): + policy_type = policy_type.title() + hook_type = policy_type + 'LrUpdaterHook' + lr_config['type'] = hook_type + hook = build_from_cfg_with_wrapper(lr_config, HOOKS, + wrap_lr_updater_hook) + self.register_hook(hook, priority='VERY_HIGH') + + def register_optimizer_hook(self, optimizer_config): + if optimizer_config is None: + return + assert isinstance(optimizer_config, (dict, IPUFp16OptimizerHook)) + if isinstance(optimizer_config, dict): + optimizer_config.setdefault('type', 'OptimizerHook') + hook = build_from_cfg_with_wrapper(optimizer_config, HOOKS, + wrap_optimizer_hook) + else: + hook = optimizer_config + self.register_hook(hook, priority='ABOVE_NORMAL') + + def run(self, data_loaders, workflow, *args, **kwargs): + for i, flow in enumerate(workflow): + mode, _ = flow + # initialize IPU dataloader if not initialized + assert isinstance(data_loaders[i], IPUDataLoader),\ + 'IPU runner can only work with `IPUDataLoader`' + data_loaders[i].init(options=self.get_options(mode)) + + super().run(data_loaders, workflow, *args, **kwargs) + + def get_options(self, mode): + if mode == 'train': + return self.options['training'] + elif mode == 'val': + return self.options['inference'] + else: + raise ValueError(f'mode should be train or val but got {mode}') + + +@RUNNERS.register_module() +class IPUEpochBasedRunner(IPUBaseRunner, EpochBasedRunner): + """Epoch-based Runner for IPU. + + The Inheritance order(MRO) is: IPUEpochBasedRunner -> IPUBaseRunner -> + EpochBasedRunner -> BaseRunner This runner train models epoch by epoch. + """ + pass + + +@RUNNERS.register_module() +class IPUIterBasedRunner(IPUBaseRunner, IterBasedRunner): + """Iteration-based Runner for IPU. + + The Inheritance order(MRO) is: IPUIterBasedRunner -> IPUBaseRunner -> + IterBasedRunner -> BaseRunner This runner train models iteration by + iteration. + """ + pass diff --git a/mmcv/device/ipu/utils.py b/mmcv/device/ipu/utils.py new file mode 100755 index 0000000..79709db --- /dev/null +++ b/mmcv/device/ipu/utils.py @@ -0,0 +1,244 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import inspect + +import numpy as np +import popart +import poptorch +import torch +import torch.nn as nn + +from mmcv.utils import Registry + + +def _options_assigner(cfg, options_node): + # set popart.options by config + # cfg: dict, python data type + # options_node: python module or function + if isinstance(cfg, dict): + for key in cfg: + _options_assigner(cfg[key], getattr(options_node, key)) + elif isinstance(cfg, (int, float, str, list)): + if callable(options_node): + options_node(cfg) + else: + error_msg = f'options_node type {type(options_node)} not supported' + raise NotImplementedError(error_msg) + else: + error_msg = f'cfg type {type(cfg)} not supported' + raise NotImplementedError(error_msg) + + +def cfg2options(cfg): + """Parse dictionary to ipu options. + + Args: + cfg (dict): A dictionary of ipu settings. + + Returns: + dict[str, poptorch.Options]: Training options and inference options + of IPU. + """ + # set ipu options for inference and training by config + train_cfg = cfg.pop('train_cfg', {}) + eval_cfg = cfg.pop('eval_cfg', {}) + eval_cfg['replicationFactor'] = 1 # eval mode only use one replica + eval_cfg['executionStrategy'] = 'ShardedExecution' + # overwrite default ipu cfg with specified train cfgs + training_ipu_cfg = {**cfg, **train_cfg} + # overwrite default ipu cfg with specified eval cfgs + inference_ipu_cfg = {**cfg, **eval_cfg} + + ipu_options = { + 'training': _cast_to_options(training_ipu_cfg), + 'inference': _cast_to_options(inference_ipu_cfg) + } + + # TODO configure these codes + ipu_options['training']._Popart.set('disableGradAccumulationTensorStreams', + True) + ipu_options['training']._Popart.set( + 'accumulateOuterFragmentSettings.schedule', + int(popart.AccumulateOuterFragmentSchedule.OverlapMemoryOptimized)) + ipu_options['training'].Precision.enableStochasticRounding(True) + + return ipu_options + + +def _cast_to_options(cfg): + # If it cannot be directly assigned, use if statement to parse it, + # and if it can be directly assigned, use _options_assigner to assign + options = poptorch.Options() + + if 'availableMemoryProportion' in cfg: + available_memory_proportion = cfg.pop('availableMemoryProportion') + mem_props = {} + for i, mem_prop in enumerate(available_memory_proportion): + mem_props[f'IPU{i}'] = mem_prop + options.setAvailableMemoryProportion(mem_props) + + if 'executionStrategy' in cfg: + execution_strategy = cfg.pop('executionStrategy') + if execution_strategy == 'SameAsIpu': + options.setExecutionStrategy( + poptorch.PipelinedExecution( + getattr(poptorch.AutoStage, execution_strategy))) + elif execution_strategy == 'ShardedExecution': + options.setExecutionStrategy(poptorch.ShardedExecution()) + else: + raise NotImplementedError( + 'executionStrategy should be "SameAsIpu" or "ShardedExecution"' + f', but got {execution_strategy}') + + if 'partialsType' in cfg: + partials_type = cfg.pop('partialsType') + options.Precision.setPartialsType(getattr( + torch, partials_type)) # half or float + + _options_assigner(cfg, options) + return options + + +def model_sharding(model, split_edges): + """split models in-place into multi-IPUs. + + Args: + model (nn.Module): The target model to be split. + split_edges (list of dict): Model layer names or layer numbers + of split edge. Each item of ``split_edges`` is a dictionary, + which may contain the following key-pairs: + + - layer_to_call: PyTorch module to assign to the block + - user_id (optional): A user defined identifier for the block. + - ipu_id: The id of the IPU to run on. + + Examples: + >>> split_edges = [ + ... dict(layer_to_call='model.conv1', ipu_id=0), + ... dict(layer_to_call='model.conv3', ipu_id=1)] + >>> sharding_model = model_sharding(torch_model, split_edges) + + Returns: + nn.Module: Split model. + """ + if len(split_edges) == 0: + return model + assert isinstance(split_edges, list) + spilt_edges_dict = {edge['layer_to_call']: edge for edge in split_edges} + + for idx, (name, module) in enumerate(model.named_modules()): + if idx in spilt_edges_dict and name in spilt_edges_dict: + raise ValueError( + 'The same layer is referenced twice while doing model' + f' partition: idx is {idx} and name is {name}') + + edge = spilt_edges_dict.pop(name, None) + edge = spilt_edges_dict.pop(idx, edge) + if edge is not None: + poptorch.BeginBlock(module, edge.get('user_id', name), + edge['ipu_id']) + + # ensure all split_edges are used + if len(spilt_edges_dict) > 0: + split_edge_names = list(spilt_edges_dict.keys()) + raise RuntimeError( + f'split_edges: {split_edge_names} are not contained in the model') + return model + + +def recomputation_checkpoint(model: nn.Module, module_names: list): + """Annotates the output of a module to be checkpointed instead of + recomputed. + + If recomputation mode is enabled, ipu will release the activations of + the middle layers to save memory. During the backward of gradient, + the activation of the middle layer will be recalculated again. + This function is used to declare the activations of some intermediate + layers that need to be saved in order to skip the recomputation of + some layers. + + Args: + model (nn.Module): The target model to apply recomputation + checkpoint. + module_names (list): Layer names of module. + """ + + def recompute_outputs(module, inputs, outputs): + if isinstance(outputs, tuple): + return tuple(poptorch.recomputationCheckpoint(y) for y in outputs) + else: + return poptorch.recomputationCheckpoint(outputs) + + for name, module in model.named_modules(): + if name in module_names: + module.register_forward_hook(recompute_outputs) + module_names.remove(name) + + # check all module_names are used + assert len(module_names) == 0,\ + f'recomputed nodes: {module_names} are not contained in the model' + + +def compare_ndarray(featA, featB, rtol=1e-3, atol=1e-5): + """Align data between two activations or weights.""" + try: + np.testing.assert_allclose(featA, featB, rtol=rtol, atol=atol) + except AssertionError as e: + print(e) + + +def build_from_cfg_with_wrapper(cfg, + registry, + wrapper_func=None, + default_args=None): + """Build a module from config dict and wrap module with "wrapper_func". + + Args: + cfg (dict): Config dict. It should at least contain the key "type". + registry (:obj:`Registry`): The registry to search the type from. + default_args (dict, optional): Default initialization arguments. + wrapper_func (function): Used to wrap class + + Returns: + object: The constructed object. + """ + if not isinstance(cfg, dict): + raise TypeError(f'cfg must be a dict, but got {type(cfg)}') + if 'type' not in cfg: + if default_args is None or 'type' not in default_args: + raise KeyError( + '`cfg` or `default_args` must contain the key "type", ' + f'but got {cfg}\n{default_args}') + if not isinstance(registry, Registry): + raise TypeError('registry must be an mmcv.Registry object, ' + f'but got {type(registry)}') + if not (isinstance(default_args, dict) or default_args is None): + raise TypeError('default_args must be a dict or None, ' + f'but got {type(default_args)}') + + args = cfg.copy() + + if default_args is not None: + for name, value in default_args.items(): + args.setdefault(name, value) + + obj_type = args.pop('type') + if isinstance(obj_type, str): + obj_cls = registry.get(obj_type) + if obj_cls is None: + raise KeyError( + f'{obj_type} is not in the {registry.name} registry') + elif inspect.isclass(obj_type): + obj_cls = obj_type + else: + raise TypeError( + f'type must be a str or valid type, but got {type(obj_type)}') + + if wrapper_func is None: + wrapped_obj_cls = obj_cls + else: + wrapped_obj_cls = wrapper_func(obj_cls) + try: + return wrapped_obj_cls(**args) + except Exception as e: + # Normal TypeError does not print class name. + raise type(e)(f'{wrapped_obj_cls.__name__}: {e}') diff --git a/mmcv/device/mlu/__init__.py b/mmcv/device/mlu/__init__.py new file mode 100644 index 0000000..77c71cc --- /dev/null +++ b/mmcv/device/mlu/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .data_parallel import MLUDataParallel +from .distributed import MLUDistributedDataParallel + +__all__ = ['MLUDataParallel', 'MLUDistributedDataParallel'] diff --git a/mmcv/device/mlu/_functions.py b/mmcv/device/mlu/_functions.py new file mode 100644 index 0000000..75660fa --- /dev/null +++ b/mmcv/device/mlu/_functions.py @@ -0,0 +1,24 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import List, Union + +import torch + + +def scatter(input: Union[List, torch.Tensor], devices: List) -> List: + """scatter copies tensor to MLU directly.""" + if isinstance(input, list): + outputs = [scatter(_input, devices) for _input in input] + return outputs + elif isinstance(input, torch.Tensor): + output = input.contiguous() + return output.to('mlu') if devices != [-1] else output + else: + raise Exception(f'Unknown type {type(input)}.') + + +class Scatter: + + @staticmethod + def forward(target_mlus, input): + outputs = scatter(input, target_mlus) + return tuple(outputs) if isinstance(outputs, list) else (outputs, ) diff --git a/mmcv/device/mlu/data_parallel.py b/mmcv/device/mlu/data_parallel.py new file mode 100644 index 0000000..ebe14c0 --- /dev/null +++ b/mmcv/device/mlu/data_parallel.py @@ -0,0 +1,41 @@ +# Copyright (c) OpenMMLab. All rights reserved. + +import torch + +from mmcv.parallel import MMDataParallel +from .scatter_gather import scatter_kwargs + + +class MLUDataParallel(MMDataParallel): + """The MLUDataParallel module that supports DataContainer. + + MLUDataParallel is a class inherited from MMDataParall, which supports + MLU training and inference only. + + The main differences with MMDataParallel: + + - It only supports single-card of MLU, and only use first card to + run training and inference. + + - It uses direct host-to-device copy instead of stream-background + scatter. + + .. warning:: + MLUDataParallel only supports single MLU training, if you need to + train with multiple MLUs, please use MLUDistributedDataParallel + instead. If you have multiple MLUs, you can set the environment + variable ``MLU_VISIBLE_DEVICES=0`` (or any other card number(s)) + to specify the running device. + + Args: + module (:class:`nn.Module`): Module to be encapsulated. + dim (int): Dimension used to scatter the data. Defaults to 0. + """ + + def __init__(self, *args, dim=0, **kwargs): + super().__init__(*args, dim=dim, **kwargs) + self.device_ids = [0] + self.src_device_obj = torch.device('mlu:0') + + def scatter(self, inputs, kwargs, device_ids): + return scatter_kwargs(inputs, kwargs, device_ids, dim=self.dim) diff --git a/mmcv/device/mlu/distributed.py b/mmcv/device/mlu/distributed.py new file mode 100644 index 0000000..3768c75 --- /dev/null +++ b/mmcv/device/mlu/distributed.py @@ -0,0 +1,20 @@ +# Copyright (c) OpenMMLab. All rights reserved. + +from mmcv.parallel import MMDistributedDataParallel +from .scatter_gather import scatter_kwargs + + +class MLUDistributedDataParallel(MMDistributedDataParallel): + """The DDP module supports DataContainer. + + MLUDDP has one difference from MMDDP which moves data to MLU with coping + instead of scattering. + """ + + def to_kwargs(self, inputs, kwargs, device_id): + # Use `self.to_kwargs` instead of `self.scatter` in pytorch1.8 + # to move all tensors to device_id + return scatter_kwargs(inputs, kwargs, [device_id], dim=self.dim) + + def scatter(self, inputs, kwargs, device_ids): + return scatter_kwargs(inputs, kwargs, device_ids, dim=self.dim) diff --git a/mmcv/device/mlu/scatter_gather.py b/mmcv/device/mlu/scatter_gather.py new file mode 100644 index 0000000..0b0c9b9 --- /dev/null +++ b/mmcv/device/mlu/scatter_gather.py @@ -0,0 +1,59 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch + +from mmcv.parallel.data_container import DataContainer +from ._functions import Scatter + + +def scatter(inputs, target_mlus, dim=0): + """Scatter inputs to target mlu. + + The only difference from original :func:`scatter` is to add support for + :type:`~mmcv.parallel.DataContainer`. + """ + + def scatter_map(obj): + if isinstance(obj, torch.Tensor): + if target_mlus != [-1]: + obj = obj.to('mlu') + return [obj] + else: + # for CPU inference we use self-implemented scatter + return Scatter.forward(target_mlus, obj) + if isinstance(obj, DataContainer): + if obj.cpu_only: + return obj.data + else: + return Scatter.forward(target_mlus, obj.data) + if isinstance(obj, tuple) and len(obj) > 0: + return list(zip(*map(scatter_map, obj))) + if isinstance(obj, list) and len(obj) > 0: + out = list(map(list, zip(*map(scatter_map, obj)))) + return out + if isinstance(obj, dict) and len(obj) > 0: + out = list(map(type(obj), zip(*map(scatter_map, obj.items())))) + return out + return [obj for targets in target_mlus] + + # After scatter_map is called, a scatter_map cell will exist. This cell + # has a reference to the actual function scatter_map, which has references + # to a closure that has a reference to the scatter_map cell (because the + # fn is recursive). To avoid this reference cycle, we set the function to + # None, clearing the cell + try: + return scatter_map(inputs) + finally: + scatter_map = None + + +def scatter_kwargs(inputs, kwargs, target_mlus, dim=0): + """Scatter with support for kwargs dictionary.""" + inputs = scatter(inputs, target_mlus, dim) if inputs else [] + kwargs = scatter(kwargs, target_mlus, dim) if kwargs else [] + if len(inputs) < len(kwargs): + inputs.extend([() for _ in range(len(kwargs) - len(inputs))]) + elif len(kwargs) < len(inputs): + kwargs.extend([{} for _ in range(len(inputs) - len(kwargs))]) + inputs = tuple(inputs) + kwargs = tuple(kwargs) + return inputs, kwargs diff --git a/mmcv/device/mps/__init__.py b/mmcv/device/mps/__init__.py new file mode 100644 index 0000000..e28144e --- /dev/null +++ b/mmcv/device/mps/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .data_parallel import MPSDataParallel + +__all__ = ['MPSDataParallel'] diff --git a/mmcv/device/mps/data_parallel.py b/mmcv/device/mps/data_parallel.py new file mode 100644 index 0000000..7ae5396 --- /dev/null +++ b/mmcv/device/mps/data_parallel.py @@ -0,0 +1,34 @@ +# Copyright (c) OpenMMLab. All rights reserved. + +import torch + +from mmcv.parallel import MMDataParallel +from ..scatter_gather import scatter_kwargs + + +class MPSDataParallel(MMDataParallel): + """The MPSDataParallel module that supports DataContainer. + + MPSDataParallel is a class inherited from MMDataParall, which supports + MPS training and inference only. + + The main differences with MMDataParallel: + + - It only supports single-card of MPS, and only use first card to + run training and inference. + + - It uses direct host-to-device copy instead of stream-background + scatter. + + Args: + module (:class:`nn.Module`): Module to be encapsulated. + dim (int): Dimension used to scatter the data. Defaults to 0. + """ + + def __init__(self, *args, dim=0, **kwargs): + super().__init__(*args, dim=dim, **kwargs) + self.device_ids = [0] + self.src_device_obj = torch.device('mps:0') + + def scatter(self, inputs, kwargs, device_ids): + return scatter_kwargs(inputs, kwargs, device_ids, dim=self.dim) diff --git a/mmcv/device/scatter_gather.py b/mmcv/device/scatter_gather.py new file mode 100644 index 0000000..744b0ca --- /dev/null +++ b/mmcv/device/scatter_gather.py @@ -0,0 +1,64 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch + +from mmcv.parallel.data_container import DataContainer +from mmcv.utils import deprecated_api_warning +from ._functions import Scatter +from .utils import get_device + + +@deprecated_api_warning({'target_mlus': 'target_devices'}) +def scatter(inputs, target_devices, dim=0): + """Scatter inputs to target devices. + + The only difference from original :func:`scatter` is to add support for + :type:`~mmcv.parallel.DataContainer`. + """ + current_device = get_device() + + def scatter_map(obj): + if isinstance(obj, torch.Tensor): + if target_devices != [-1]: + obj = obj.to(current_device) + return [obj] + else: + # for CPU inference we use self-implemented scatter + return Scatter.forward(target_devices, obj) + if isinstance(obj, DataContainer): + if obj.cpu_only: + return obj.data + else: + return Scatter.forward(target_devices, obj.data) + if isinstance(obj, tuple) and len(obj) > 0: + return list(zip(*map(scatter_map, obj))) + if isinstance(obj, list) and len(obj) > 0: + out = list(map(list, zip(*map(scatter_map, obj)))) + return out + if isinstance(obj, dict) and len(obj) > 0: + out = list(map(type(obj), zip(*map(scatter_map, obj.items())))) + return out + return [obj for _ in target_devices] + + # After scatter_map is called, a scatter_map cell will exist. This cell + # has a reference to the actual function scatter_map, which has references + # to a closure that has a reference to the scatter_map cell (because the + # fn is recursive). To avoid this reference cycle, we set the function to + # None, clearing the cell + try: + return scatter_map(inputs) + finally: + scatter_map = None + + +@deprecated_api_warning({'target_mlus': 'target_devices'}) +def scatter_kwargs(inputs, kwargs, target_devices, dim=0): + """Scatter with support for kwargs dictionary.""" + inputs = scatter(inputs, target_devices, dim) if inputs else [] + kwargs = scatter(kwargs, target_devices, dim) if kwargs else [] + if len(inputs) < len(kwargs): + inputs.extend([() for _ in range(len(kwargs) - len(inputs))]) + elif len(kwargs) < len(inputs): + kwargs.extend([{} for _ in range(len(inputs) - len(kwargs))]) + inputs = tuple(inputs) + kwargs = tuple(kwargs) + return inputs, kwargs diff --git a/mmcv/device/utils.py b/mmcv/device/utils.py new file mode 100644 index 0000000..e2adec0 --- /dev/null +++ b/mmcv/device/utils.py @@ -0,0 +1,18 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.utils import IS_CUDA_AVAILABLE, IS_MLU_AVAILABLE, IS_MPS_AVAILABLE + + +def get_device() -> str: + """Returns the currently existing device type. + + Returns: + str: cuda | mlu | mps | cpu. + """ + if IS_CUDA_AVAILABLE: + return 'cuda' + elif IS_MLU_AVAILABLE: + return 'mlu' + elif IS_MPS_AVAILABLE: + return 'mps' + else: + return 'cpu' diff --git a/mmcv/engine/test.py b/mmcv/engine/test.py index f236b1c..83546ca 100644 --- a/mmcv/engine/test.py +++ b/mmcv/engine/test.py @@ -4,15 +4,18 @@ import pickle import shutil import tempfile import time +from typing import Optional import torch import torch.distributed as dist +import torch.nn as nn +from torch.utils.data import DataLoader import mmcv from mmcv.runner import get_dist_info -def single_gpu_test(model, data_loader): +def single_gpu_test(model: nn.Module, data_loader: DataLoader) -> list: """Test model with a single gpu. This method tests model with a single gpu and displays test progress bar. @@ -41,7 +44,10 @@ def single_gpu_test(model, data_loader): return results -def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False): +def multi_gpu_test(model: nn.Module, + data_loader: DataLoader, + tmpdir: Optional[str] = None, + gpu_collect: bool = False) -> Optional[list]: """Test model with multiple gpus. This method tests model with multiple gpus and collects the results @@ -82,13 +88,15 @@ def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False): # collect results from all ranks if gpu_collect: - results = collect_results_gpu(results, len(dataset)) + result_from_ranks = collect_results_gpu(results, len(dataset)) else: - results = collect_results_cpu(results, len(dataset), tmpdir) - return results + result_from_ranks = collect_results_cpu(results, len(dataset), tmpdir) + return result_from_ranks -def collect_results_cpu(result_part, size, tmpdir=None): +def collect_results_cpu(result_part: list, + size: int, + tmpdir: Optional[str] = None) -> Optional[list]: """Collect results under cpu mode. On cpu mode, this function will save the results on different gpus to @@ -126,7 +134,8 @@ def collect_results_cpu(result_part, size, tmpdir=None): else: mmcv.mkdir_or_exist(tmpdir) # dump the part result to the dir - mmcv.dump(result_part, osp.join(tmpdir, f'part_{rank}.pkl')) + part_file = osp.join(tmpdir, f'part_{rank}.pkl') # type: ignore + mmcv.dump(result_part, part_file) dist.barrier() # collect all parts if rank != 0: @@ -135,7 +144,7 @@ def collect_results_cpu(result_part, size, tmpdir=None): # load results of all parts from tmp dir part_list = [] for i in range(world_size): - part_file = osp.join(tmpdir, f'part_{i}.pkl') + part_file = osp.join(tmpdir, f'part_{i}.pkl') # type: ignore part_result = mmcv.load(part_file) # When data is severely insufficient, an empty part_result # on a certain gpu could makes the overall outputs empty. @@ -148,11 +157,11 @@ def collect_results_cpu(result_part, size, tmpdir=None): # the dataloader may pad some samples ordered_results = ordered_results[:size] # remove tmp dir - shutil.rmtree(tmpdir) + shutil.rmtree(tmpdir) # type: ignore return ordered_results -def collect_results_gpu(result_part, size): +def collect_results_gpu(result_part: list, size: int) -> Optional[list]: """Collect results under gpu mode. On gpu mode, this function will encode results to gpu tensors and use gpu @@ -200,3 +209,5 @@ def collect_results_gpu(result_part, size): # the dataloader may pad some samples ordered_results = ordered_results[:size] return ordered_results + else: + return None diff --git a/mmcv/fileio/file_client.py b/mmcv/fileio/file_client.py index b2d6228..ee7c316 100644 --- a/mmcv/fileio/file_client.py +++ b/mmcv/fileio/file_client.py @@ -8,7 +8,7 @@ import warnings from abc import ABCMeta, abstractmethod from contextlib import contextmanager from pathlib import Path -from typing import Iterable, Iterator, Optional, Tuple, Union +from typing import Any, Generator, Iterator, Optional, Tuple, Union from urllib.request import urlopen import mmcv @@ -64,7 +64,8 @@ class CephBackend(BaseStorageBackend): raise ImportError('Please install ceph to enable CephBackend.') warnings.warn( - 'CephBackend will be deprecated, please use PetrelBackend instead') + 'CephBackend will be deprecated, please use PetrelBackend instead', + DeprecationWarning) self._client = ceph.S3Client() assert isinstance(path_mapping, dict) or path_mapping is None self.path_mapping = path_mapping @@ -209,9 +210,9 @@ class PetrelBackend(BaseStorageBackend): """ if not has_method(self._client, 'delete'): raise NotImplementedError( - ('Current version of Petrel Python SDK has not supported ' - 'the `delete` method, please use a higher version or dev' - ' branch instead.')) + 'Current version of Petrel Python SDK has not supported ' + 'the `delete` method, please use a higher version or dev' + ' branch instead.') filepath = self._map_path(filepath) filepath = self._format_path(filepath) @@ -229,9 +230,9 @@ class PetrelBackend(BaseStorageBackend): if not (has_method(self._client, 'contains') and has_method(self._client, 'isdir')): raise NotImplementedError( - ('Current version of Petrel Python SDK has not supported ' - 'the `contains` and `isdir` methods, please use a higher' - 'version or dev branch instead.')) + 'Current version of Petrel Python SDK has not supported ' + 'the `contains` and `isdir` methods, please use a higher' + 'version or dev branch instead.') filepath = self._map_path(filepath) filepath = self._format_path(filepath) @@ -246,13 +247,13 @@ class PetrelBackend(BaseStorageBackend): Returns: bool: Return ``True`` if ``filepath`` points to a directory, - ``False`` otherwise. + ``False`` otherwise. """ if not has_method(self._client, 'isdir'): raise NotImplementedError( - ('Current version of Petrel Python SDK has not supported ' - 'the `isdir` method, please use a higher version or dev' - ' branch instead.')) + 'Current version of Petrel Python SDK has not supported ' + 'the `isdir` method, please use a higher version or dev' + ' branch instead.') filepath = self._map_path(filepath) filepath = self._format_path(filepath) @@ -266,13 +267,13 @@ class PetrelBackend(BaseStorageBackend): Returns: bool: Return ``True`` if ``filepath`` points to a file, ``False`` - otherwise. + otherwise. """ if not has_method(self._client, 'contains'): raise NotImplementedError( - ('Current version of Petrel Python SDK has not supported ' - 'the `contains` method, please use a higher version or ' - 'dev branch instead.')) + 'Current version of Petrel Python SDK has not supported ' + 'the `contains` method, please use a higher version or ' + 'dev branch instead.') filepath = self._map_path(filepath) filepath = self._format_path(filepath) @@ -297,7 +298,10 @@ class PetrelBackend(BaseStorageBackend): return '/'.join(formatted_paths) @contextmanager - def get_local_path(self, filepath: Union[str, Path]) -> Iterable[str]: + def get_local_path( + self, + filepath: Union[str, + Path]) -> Generator[Union[str, Path], None, None]: """Download a file from ``filepath`` and return a temporary path. ``get_local_path`` is decorated by :meth:`contxtlib.contextmanager`. It @@ -362,9 +366,9 @@ class PetrelBackend(BaseStorageBackend): """ if not has_method(self._client, 'list'): raise NotImplementedError( - ('Current version of Petrel Python SDK has not supported ' - 'the `list` method, please use a higher version or dev' - ' branch instead.')) + 'Current version of Petrel Python SDK has not supported ' + 'the `list` method, please use a higher version or dev' + ' branch instead.') dir_path = self._map_path(dir_path) dir_path = self._format_path(dir_path) @@ -473,17 +477,16 @@ class LmdbBackend(BaseStorageBackend): readahead=False, **kwargs): try: - import lmdb + import lmdb # NOQA except ImportError: raise ImportError('Please install lmdb to enable LmdbBackend.') self.db_path = str(db_path) - self._client = lmdb.open( - self.db_path, - readonly=readonly, - lock=lock, - readahead=readahead, - **kwargs) + self.readonly = readonly + self.lock = lock + self.readahead = readahead + self.kwargs = kwargs + self._client = None def get(self, filepath): """Get values according to the filepath. @@ -491,14 +494,29 @@ class LmdbBackend(BaseStorageBackend): Args: filepath (str | obj:`Path`): Here, filepath is the lmdb key. """ - filepath = str(filepath) + if self._client is None: + self._client = self._get_client() + with self._client.begin(write=False) as txn: - value_buf = txn.get(filepath.encode('ascii')) + value_buf = txn.get(str(filepath).encode('utf-8')) return value_buf def get_text(self, filepath, encoding=None): raise NotImplementedError + def _get_client(self): + import lmdb + + return lmdb.open( + self.db_path, + readonly=self.readonly, + lock=self.lock, + readahead=self.readahead, + **self.kwargs) + + def __del__(self): + self._client.close() + class HardDiskBackend(BaseStorageBackend): """Raw hard disks storage backend.""" @@ -531,7 +549,7 @@ class HardDiskBackend(BaseStorageBackend): Returns: str: Expected text reading from ``filepath``. """ - with open(filepath, 'r', encoding=encoding) as f: + with open(filepath, encoding=encoding) as f: value_buf = f.read() return value_buf @@ -598,7 +616,7 @@ class HardDiskBackend(BaseStorageBackend): Returns: bool: Return ``True`` if ``filepath`` points to a directory, - ``False`` otherwise. + ``False`` otherwise. """ return osp.isdir(filepath) @@ -610,7 +628,7 @@ class HardDiskBackend(BaseStorageBackend): Returns: bool: Return ``True`` if ``filepath`` points to a file, ``False`` - otherwise. + otherwise. """ return osp.isfile(filepath) @@ -631,7 +649,9 @@ class HardDiskBackend(BaseStorageBackend): @contextmanager def get_local_path( - self, filepath: Union[str, Path]) -> Iterable[Union[str, Path]]: + self, + filepath: Union[str, + Path]) -> Generator[Union[str, Path], None, None]: """Only for unified API and do nothing.""" yield filepath @@ -700,7 +720,8 @@ class HTTPBackend(BaseStorageBackend): return value_buf.decode(encoding) @contextmanager - def get_local_path(self, filepath: str) -> Iterable[str]: + def get_local_path( + self, filepath: str) -> Generator[Union[str, Path], None, None]: """Download a file from ``filepath``. ``get_local_path`` is decorated by :meth:`contxtlib.contextmanager`. It @@ -770,19 +791,16 @@ class FileClient: 'petrel': PetrelBackend, 'http': HTTPBackend, } - # This collection is used to record the overridden backends, and when a - # backend appears in the collection, the singleton pattern is disabled for - # that backend, because if the singleton pattern is used, then the object - # returned will be the backend before overwriting - _overridden_backends = set() + _prefix_to_backends = { 's3': PetrelBackend, 'http': HTTPBackend, 'https': HTTPBackend, } - _overridden_prefixes = set() - _instances = {} + _instances: dict = {} + + client: Any def __new__(cls, backend=None, prefix=None, **kwargs): if backend is None and prefix is None: @@ -802,10 +820,7 @@ class FileClient: for key, value in kwargs.items(): arg_key += f':{key}:{value}' - # if a backend was overridden, it will create a new object - if (arg_key in cls._instances - and backend not in cls._overridden_backends - and prefix not in cls._overridden_prefixes): + if arg_key in cls._instances: _instance = cls._instances[arg_key] else: # create a new object and put it to _instance @@ -839,8 +854,8 @@ class FileClient: 's3' Returns: - str | None: Return the prefix of uri if the uri contains '://' - else ``None``. + str | None: Return the prefix of uri if the uri contains '://' else + ``None``. """ assert is_filepath(uri) uri = str(uri) @@ -899,7 +914,9 @@ class FileClient: 'add "force=True" if you want to override it') if name in cls._backends and force: - cls._overridden_backends.add(name) + for arg_key, instance in list(cls._instances.items()): + if isinstance(instance.client, cls._backends[name]): + cls._instances.pop(arg_key) cls._backends[name] = backend if prefixes is not None: @@ -911,7 +928,12 @@ class FileClient: if prefix not in cls._prefix_to_backends: cls._prefix_to_backends[prefix] = backend elif (prefix in cls._prefix_to_backends) and force: - cls._overridden_prefixes.add(prefix) + overridden_backend = cls._prefix_to_backends[prefix] + if isinstance(overridden_backend, list): + overridden_backend = tuple(overridden_backend) + for arg_key, instance in list(cls._instances.items()): + if isinstance(instance.client, overridden_backend): + cls._instances.pop(arg_key) cls._prefix_to_backends[prefix] = backend else: raise KeyError( @@ -987,7 +1009,7 @@ class FileClient: Returns: bytes | memoryview: Expected bytes object or a memory view of the - bytes object. + bytes object. """ return self.client.get(filepath) @@ -1060,7 +1082,7 @@ class FileClient: Returns: bool: Return ``True`` if ``filepath`` points to a directory, - ``False`` otherwise. + ``False`` otherwise. """ return self.client.isdir(filepath) @@ -1072,7 +1094,7 @@ class FileClient: Returns: bool: Return ``True`` if ``filepath`` points to a file, ``False`` - otherwise. + otherwise. """ return self.client.isfile(filepath) @@ -1092,7 +1114,10 @@ class FileClient: return self.client.join_path(filepath, *filepaths) @contextmanager - def get_local_path(self, filepath: Union[str, Path]) -> Iterable[str]: + def get_local_path( + self, + filepath: Union[str, + Path]) -> Generator[Union[str, Path], None, None]: """Download data from ``filepath`` and write the data to local path. ``get_local_path`` is decorated by :meth:`contxtlib.contextmanager`. It diff --git a/mmcv/fileio/handlers/base.py b/mmcv/fileio/handlers/base.py index 288878b..0c9cc15 100644 --- a/mmcv/fileio/handlers/base.py +++ b/mmcv/fileio/handlers/base.py @@ -21,10 +21,10 @@ class BaseFileHandler(metaclass=ABCMeta): def dump_to_str(self, obj, **kwargs): pass - def load_from_path(self, filepath, mode='r', **kwargs): + def load_from_path(self, filepath: str, mode: str = 'r', **kwargs): with open(filepath, mode) as f: return self.load_from_fileobj(f, **kwargs) - def dump_to_path(self, obj, filepath, mode='w', **kwargs): + def dump_to_path(self, obj, filepath: str, mode: str = 'w', **kwargs): with open(filepath, mode) as f: self.dump_to_fileobj(obj, f, **kwargs) diff --git a/mmcv/fileio/handlers/pickle_handler.py b/mmcv/fileio/handlers/pickle_handler.py index b37c79b..073856f 100644 --- a/mmcv/fileio/handlers/pickle_handler.py +++ b/mmcv/fileio/handlers/pickle_handler.py @@ -12,8 +12,7 @@ class PickleHandler(BaseFileHandler): return pickle.load(file, **kwargs) def load_from_path(self, filepath, **kwargs): - return super(PickleHandler, self).load_from_path( - filepath, mode='rb', **kwargs) + return super().load_from_path(filepath, mode='rb', **kwargs) def dump_to_str(self, obj, **kwargs): kwargs.setdefault('protocol', 2) @@ -24,5 +23,4 @@ class PickleHandler(BaseFileHandler): pickle.dump(obj, file, **kwargs) def dump_to_path(self, obj, filepath, **kwargs): - super(PickleHandler, self).dump_to_path( - obj, filepath, mode='wb', **kwargs) + super().dump_to_path(obj, filepath, mode='wb', **kwargs) diff --git a/mmcv/fileio/handlers/yaml_handler.py b/mmcv/fileio/handlers/yaml_handler.py index c5aa2ee..1c1b077 100644 --- a/mmcv/fileio/handlers/yaml_handler.py +++ b/mmcv/fileio/handlers/yaml_handler.py @@ -2,9 +2,10 @@ import yaml try: - from yaml import CLoader as Loader, CDumper as Dumper + from yaml import CDumper as Dumper + from yaml import CLoader as Loader except ImportError: - from yaml import Loader, Dumper + from yaml import Loader, Dumper # type: ignore from .base import BaseFileHandler # isort:skip diff --git a/mmcv/fileio/io.py b/mmcv/fileio/io.py index aaefde5..9119210 100644 --- a/mmcv/fileio/io.py +++ b/mmcv/fileio/io.py @@ -1,11 +1,14 @@ # Copyright (c) OpenMMLab. All rights reserved. from io import BytesIO, StringIO from pathlib import Path +from typing import Any, Callable, Dict, List, Optional, TextIO, Union -from ..utils import is_list_of, is_str +from ..utils import is_list_of from .file_client import FileClient from .handlers import BaseFileHandler, JsonHandler, PickleHandler, YamlHandler +FileLikeObject = Union[TextIO, StringIO, BytesIO] + file_handlers = { 'json': JsonHandler(), 'yaml': YamlHandler(), @@ -15,7 +18,10 @@ file_handlers = { } -def load(file, file_format=None, file_client_args=None, **kwargs): +def load(file: Union[str, Path, FileLikeObject], + file_format: Optional[str] = None, + file_client_args: Optional[Dict] = None, + **kwargs): """Load data from json/yaml/pickle files. This method provides a unified api for loading data from serialized files. @@ -45,13 +51,14 @@ def load(file, file_format=None, file_client_args=None, **kwargs): """ if isinstance(file, Path): file = str(file) - if file_format is None and is_str(file): + if file_format is None and isinstance(file, str): file_format = file.split('.')[-1] if file_format not in file_handlers: raise TypeError(f'Unsupported format: {file_format}') handler = file_handlers[file_format] - if is_str(file): + f: FileLikeObject + if isinstance(file, str): file_client = FileClient.infer_client(file_client_args, file) if handler.str_like: with StringIO(file_client.get_text(file)) as f: @@ -66,7 +73,11 @@ def load(file, file_format=None, file_client_args=None, **kwargs): return obj -def dump(obj, file=None, file_format=None, file_client_args=None, **kwargs): +def dump(obj: Any, + file: Optional[Union[str, Path, FileLikeObject]] = None, + file_format: Optional[str] = None, + file_client_args: Optional[Dict] = None, + **kwargs): """Dump data to json/yaml/pickle strings or files. This method provides a unified api for dumping data as strings or to files, @@ -96,18 +107,18 @@ def dump(obj, file=None, file_format=None, file_client_args=None, **kwargs): if isinstance(file, Path): file = str(file) if file_format is None: - if is_str(file): + if isinstance(file, str): file_format = file.split('.')[-1] elif file is None: raise ValueError( 'file_format must be specified since file is None') if file_format not in file_handlers: raise TypeError(f'Unsupported format: {file_format}') - + f: FileLikeObject handler = file_handlers[file_format] if file is None: return handler.dump_to_str(obj, **kwargs) - elif is_str(file): + elif isinstance(file, str): file_client = FileClient.infer_client(file_client_args, file) if handler.str_like: with StringIO() as f: @@ -123,7 +134,8 @@ def dump(obj, file=None, file_format=None, file_client_args=None, **kwargs): raise TypeError('"file" must be a filename str or a file-object') -def _register_handler(handler, file_formats): +def _register_handler(handler: BaseFileHandler, + file_formats: Union[str, List[str]]) -> None: """Register a handler for some file extensions. Args: @@ -142,7 +154,7 @@ def _register_handler(handler, file_formats): file_handlers[ext] = handler -def register_handler(file_formats, **kwargs): +def register_handler(file_formats: Union[str, list], **kwargs) -> Callable: def wrap(cls): _register_handler(cls(**kwargs), file_formats) diff --git a/mmcv/fileio/parse.py b/mmcv/fileio/parse.py index f60f0d6..f28e591 100644 --- a/mmcv/fileio/parse.py +++ b/mmcv/fileio/parse.py @@ -1,16 +1,18 @@ # Copyright (c) OpenMMLab. All rights reserved. from io import StringIO +from pathlib import Path +from typing import Dict, List, Optional, Union from .file_client import FileClient -def list_from_file(filename, - prefix='', - offset=0, - max_num=0, - encoding='utf-8', - file_client_args=None): +def list_from_file(filename: Union[str, Path], + prefix: str = '', + offset: int = 0, + max_num: int = 0, + encoding: str = 'utf-8', + file_client_args: Optional[Dict] = None) -> List: """Load a text file and parse the content as a list of strings. Note: @@ -52,10 +54,10 @@ def list_from_file(filename, return item_list -def dict_from_file(filename, - key_type=str, - encoding='utf-8', - file_client_args=None): +def dict_from_file(filename: Union[str, Path], + key_type: type = str, + encoding: str = 'utf-8', + file_client_args: Optional[Dict] = None) -> Dict: """Load a text file and parse the content as a dict. Each line of the text file will be two or more columns split by diff --git a/mmcv/image/__init__.py b/mmcv/image/__init__.py index d0051d6..92ecec4 100644 --- a/mmcv/image/__init__.py +++ b/mmcv/image/__init__.py @@ -9,10 +9,10 @@ from .geometric import (cutout, imcrop, imflip, imflip_, impad, from .io import imfrombytes, imread, imwrite, supported_backends, use_backend from .misc import tensor2imgs from .photometric import (adjust_brightness, adjust_color, adjust_contrast, - adjust_lighting, adjust_sharpness, auto_contrast, - clahe, imdenormalize, imequalize, iminvert, - imnormalize, imnormalize_, lut_transform, posterize, - solarize) + adjust_hue, adjust_lighting, adjust_sharpness, + auto_contrast, clahe, imdenormalize, imequalize, + iminvert, imnormalize, imnormalize_, lut_transform, + posterize, solarize) __all__ = [ 'bgr2gray', 'bgr2hls', 'bgr2hsv', 'bgr2rgb', 'gray2bgr', 'gray2rgb', @@ -24,5 +24,6 @@ __all__ = [ 'solarize', 'rgb2ycbcr', 'bgr2ycbcr', 'ycbcr2rgb', 'ycbcr2bgr', 'tensor2imgs', 'imshear', 'imtranslate', 'adjust_color', 'imequalize', 'adjust_brightness', 'adjust_contrast', 'lut_transform', 'clahe', - 'adjust_sharpness', 'auto_contrast', 'cutout', 'adjust_lighting' + 'adjust_sharpness', 'auto_contrast', 'cutout', 'adjust_lighting', + 'adjust_hue' ] diff --git a/mmcv/image/colorspace.py b/mmcv/image/colorspace.py index 8145339..08f9952 100644 --- a/mmcv/image/colorspace.py +++ b/mmcv/image/colorspace.py @@ -1,9 +1,11 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Callable, Union + import cv2 import numpy as np -def imconvert(img, src, dst): +def imconvert(img: np.ndarray, src: str, dst: str) -> np.ndarray: """Convert an image from the src colorspace to dst colorspace. Args: @@ -19,7 +21,7 @@ def imconvert(img, src, dst): return out_img -def bgr2gray(img, keepdim=False): +def bgr2gray(img: np.ndarray, keepdim: bool = False) -> np.ndarray: """Convert a BGR image to grayscale image. Args: @@ -36,7 +38,7 @@ def bgr2gray(img, keepdim=False): return out_img -def rgb2gray(img, keepdim=False): +def rgb2gray(img: np.ndarray, keepdim: bool = False) -> np.ndarray: """Convert a RGB image to grayscale image. Args: @@ -53,7 +55,7 @@ def rgb2gray(img, keepdim=False): return out_img -def gray2bgr(img): +def gray2bgr(img: np.ndarray) -> np.ndarray: """Convert a grayscale image to BGR image. Args: @@ -67,7 +69,7 @@ def gray2bgr(img): return out_img -def gray2rgb(img): +def gray2rgb(img: np.ndarray) -> np.ndarray: """Convert a grayscale image to RGB image. Args: @@ -81,7 +83,7 @@ def gray2rgb(img): return out_img -def _convert_input_type_range(img): +def _convert_input_type_range(img: np.ndarray) -> np.ndarray: """Convert the type and range of the input image. It converts the input image to np.float32 type and range of [0, 1]. @@ -109,7 +111,8 @@ def _convert_input_type_range(img): return img -def _convert_output_type_range(img, dst_type): +def _convert_output_type_range( + img: np.ndarray, dst_type: Union[np.uint8, np.float32]) -> np.ndarray: """Convert the type and range of the image according to dst_type. It converts the image to desired type and range. If `dst_type` is np.uint8, @@ -140,7 +143,7 @@ def _convert_output_type_range(img, dst_type): return img.astype(dst_type) -def rgb2ycbcr(img, y_only=False): +def rgb2ycbcr(img: np.ndarray, y_only: bool = False) -> np.ndarray: """Convert a RGB image to YCbCr image. This function produces the same results as Matlab's `rgb2ycbcr` function. @@ -160,7 +163,7 @@ def rgb2ycbcr(img, y_only=False): Returns: ndarray: The converted YCbCr image. The output image has the same type - and range as input image. + and range as input image. """ img_type = img.dtype img = _convert_input_type_range(img) @@ -174,7 +177,7 @@ def rgb2ycbcr(img, y_only=False): return out_img -def bgr2ycbcr(img, y_only=False): +def bgr2ycbcr(img: np.ndarray, y_only: bool = False) -> np.ndarray: """Convert a BGR image to YCbCr image. The bgr version of rgb2ycbcr. @@ -194,7 +197,7 @@ def bgr2ycbcr(img, y_only=False): Returns: ndarray: The converted YCbCr image. The output image has the same type - and range as input image. + and range as input image. """ img_type = img.dtype img = _convert_input_type_range(img) @@ -208,7 +211,7 @@ def bgr2ycbcr(img, y_only=False): return out_img -def ycbcr2rgb(img): +def ycbcr2rgb(img: np.ndarray) -> np.ndarray: """Convert a YCbCr image to RGB image. This function produces the same results as Matlab's ycbcr2rgb function. @@ -227,7 +230,7 @@ def ycbcr2rgb(img): Returns: ndarray: The converted RGB image. The output image has the same type - and range as input image. + and range as input image. """ img_type = img.dtype img = _convert_input_type_range(img) * 255 @@ -240,7 +243,7 @@ def ycbcr2rgb(img): return out_img -def ycbcr2bgr(img): +def ycbcr2bgr(img: np.ndarray) -> np.ndarray: """Convert a YCbCr image to BGR image. The bgr version of ycbcr2rgb. @@ -259,7 +262,7 @@ def ycbcr2bgr(img): Returns: ndarray: The converted BGR image. The output image has the same type - and range as input image. + and range as input image. """ img_type = img.dtype img = _convert_input_type_range(img) * 255 @@ -272,11 +275,11 @@ def ycbcr2bgr(img): return out_img -def convert_color_factory(src, dst): +def convert_color_factory(src: str, dst: str) -> Callable: code = getattr(cv2, f'COLOR_{src.upper()}2{dst.upper()}') - def convert_color(img): + def convert_color(img: np.ndarray) -> np.ndarray: out_img = cv2.cvtColor(img, code) return out_img diff --git a/mmcv/image/geometric.py b/mmcv/image/geometric.py index cf97c20..eecd795 100644 --- a/mmcv/image/geometric.py +++ b/mmcv/image/geometric.py @@ -37,15 +37,27 @@ cv2_interp_codes = { 'lanczos': cv2.INTER_LANCZOS4 } +# Pillow >=v9.1.0 use a slightly different naming scheme for filters. +# Set pillow_interp_codes according to the naming scheme used. if Image is not None: - pillow_interp_codes = { - 'nearest': Image.NEAREST, - 'bilinear': Image.BILINEAR, - 'bicubic': Image.BICUBIC, - 'box': Image.BOX, - 'lanczos': Image.LANCZOS, - 'hamming': Image.HAMMING - } + if hasattr(Image, 'Resampling'): + pillow_interp_codes = { + 'nearest': Image.Resampling.NEAREST, + 'bilinear': Image.Resampling.BILINEAR, + 'bicubic': Image.Resampling.BICUBIC, + 'box': Image.Resampling.BOX, + 'lanczos': Image.Resampling.LANCZOS, + 'hamming': Image.Resampling.HAMMING + } + else: + pillow_interp_codes = { + 'nearest': Image.NEAREST, + 'bilinear': Image.BILINEAR, + 'bicubic': Image.BICUBIC, + 'box': Image.BOX, + 'lanczos': Image.LANCZOS, + 'hamming': Image.HAMMING + } def imresize(img, @@ -70,7 +82,7 @@ def imresize(img, Returns: tuple | ndarray: (`resized_img`, `w_scale`, `h_scale`) or - `resized_img`. + `resized_img`. """ h, w = img.shape[:2] if backend is None: @@ -130,7 +142,7 @@ def imresize_to_multiple(img, Returns: tuple | ndarray: (`resized_img`, `w_scale`, `h_scale`) or - `resized_img`. + `resized_img`. """ h, w = img.shape[:2] if size is not None and scale_factor is not None: @@ -145,7 +157,7 @@ def imresize_to_multiple(img, size = _scale_size((w, h), scale_factor) divisor = to_2tuple(divisor) - size = tuple([int(np.ceil(s / d)) * d for s, d in zip(size, divisor)]) + size = tuple(int(np.ceil(s / d)) * d for s, d in zip(size, divisor)) resized_img, w_scale, h_scale = imresize( img, size, @@ -175,7 +187,7 @@ def imresize_like(img, Returns: tuple or ndarray: (`resized_img`, `w_scale`, `h_scale`) or - `resized_img`. + `resized_img`. """ h, w = dst_img.shape[:2] return imresize(img, (w, h), return_scale, interpolation, backend=backend) @@ -460,18 +472,17 @@ def impad(img, areas when padding_mode is 'constant'. Default: 0. padding_mode (str): Type of padding. Should be: constant, edge, reflect or symmetric. Default: constant. - - constant: pads with a constant value, this value is specified - with pad_val. + with pad_val. - edge: pads with the last value at the edge of the image. - - reflect: pads with reflection of image without repeating the - last value on the edge. For example, padding [1, 2, 3, 4] - with 2 elements on both sides in reflect mode will result - in [3, 2, 1, 2, 3, 4, 3, 2]. - - symmetric: pads with reflection of image repeating the last - value on the edge. For example, padding [1, 2, 3, 4] with - 2 elements on both sides in symmetric mode will result in - [2, 1, 1, 2, 3, 4, 4, 3] + - reflect: pads with reflection of image without repeating the last + value on the edge. For example, padding [1, 2, 3, 4] with 2 + elements on both sides in reflect mode will result in + [3, 2, 1, 2, 3, 4, 3, 2]. + - symmetric: pads with reflection of image repeating the last value + on the edge. For example, padding [1, 2, 3, 4] with 2 elements on + both sides in symmetric mode will result in + [2, 1, 1, 2, 3, 4, 4, 3] Returns: ndarray: The padded image. @@ -479,7 +490,9 @@ def impad(img, assert (shape is not None) ^ (padding is not None) if shape is not None: - padding = (0, 0, shape[1] - img.shape[1], shape[0] - img.shape[0]) + width = max(shape[1] - img.shape[1], 0) + height = max(shape[0] - img.shape[0], 0) + padding = (0, 0, width, height) # check pad_val if isinstance(pad_val, tuple): diff --git a/mmcv/image/io.py b/mmcv/image/io.py index d47aaa8..ae81b56 100644 --- a/mmcv/image/io.py +++ b/mmcv/image/io.py @@ -1,6 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. import io import os.path as osp +import warnings from pathlib import Path import cv2 @@ -8,7 +9,8 @@ import numpy as np from cv2 import (IMREAD_COLOR, IMREAD_GRAYSCALE, IMREAD_IGNORE_ORIENTATION, IMREAD_UNCHANGED) -from mmcv.utils import check_file_exist, is_str, mkdir_or_exist +from mmcv.fileio import FileClient +from mmcv.utils import is_filepath, is_str try: from turbojpeg import TJCS_RGB, TJPF_BGR, TJPF_GRAY, TurboJPEG @@ -137,9 +139,16 @@ def _pillow2array(img, flag='color', channel_order='bgr'): return array -def imread(img_or_path, flag='color', channel_order='bgr', backend=None): +def imread(img_or_path, + flag='color', + channel_order='bgr', + backend=None, + file_client_args=None): """Read an image. + Note: + In v1.4.1 and later, add `file_client_args` parameters. + Args: img_or_path (ndarray or str or Path): Either a numpy array or str or pathlib.Path. If it is a numpy array (loaded image), then @@ -157,44 +166,42 @@ def imread(img_or_path, flag='color', channel_order='bgr', backend=None): `cv2`, `pillow`, `turbojpeg`, `tifffile`, `None`. If backend is None, the global imread_backend specified by ``mmcv.use_backend()`` will be used. Default: None. + file_client_args (dict | None): Arguments to instantiate a + FileClient. See :class:`mmcv.fileio.FileClient` for details. + Default: None. Returns: ndarray: Loaded image array. + + Examples: + >>> import mmcv + >>> img_path = '/path/to/img.jpg' + >>> img = mmcv.imread(img_path) + >>> img = mmcv.imread(img_path, flag='color', channel_order='rgb', + ... backend='cv2') + >>> img = mmcv.imread(img_path, flag='color', channel_order='bgr', + ... backend='pillow') + >>> s3_img_path = 's3://bucket/img.jpg' + >>> # infer the file backend by the prefix s3 + >>> img = mmcv.imread(s3_img_path) + >>> # manually set the file backend petrel + >>> img = mmcv.imread(s3_img_path, file_client_args={ + ... 'backend': 'petrel'}) + >>> http_img_path = 'http://path/to/img.jpg' + >>> img = mmcv.imread(http_img_path) + >>> img = mmcv.imread(http_img_path, file_client_args={ + ... 'backend': 'http'}) """ - if backend is None: - backend = imread_backend - if backend not in supported_backends: - raise ValueError(f'backend: {backend} is not supported. Supported ' - "backends are 'cv2', 'turbojpeg', 'pillow'") if isinstance(img_or_path, Path): img_or_path = str(img_or_path) if isinstance(img_or_path, np.ndarray): return img_or_path elif is_str(img_or_path): - check_file_exist(img_or_path, - f'img file does not exist: {img_or_path}') - if backend == 'turbojpeg': - with open(img_or_path, 'rb') as in_file: - img = jpeg.decode(in_file.read(), - _jpegflag(flag, channel_order)) - if img.shape[-1] == 1: - img = img[:, :, 0] - return img - elif backend == 'pillow': - img = Image.open(img_or_path) - img = _pillow2array(img, flag, channel_order) - return img - elif backend == 'tifffile': - img = tifffile.imread(img_or_path) - return img - else: - flag = imread_flags[flag] if is_str(flag) else flag - img = cv2.imread(img_or_path, flag) - if flag == IMREAD_COLOR and channel_order == 'rgb': - cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) - return img + file_client = FileClient.infer_client(file_client_args, img_or_path) + img_bytes = file_client.get(img_or_path) + return imfrombytes(img_bytes, flag, channel_order, backend) else: raise TypeError('"img" must be a numpy array or a str or ' 'a pathlib.Path object') @@ -206,29 +213,45 @@ def imfrombytes(content, flag='color', channel_order='bgr', backend=None): Args: content (bytes): Image bytes got from files or other streams. flag (str): Same as :func:`imread`. + channel_order (str): The channel order of the output, candidates + are 'bgr' and 'rgb'. Default to 'bgr'. backend (str | None): The image decoding backend type. Options are - `cv2`, `pillow`, `turbojpeg`, `None`. If backend is None, the - global imread_backend specified by ``mmcv.use_backend()`` will be - used. Default: None. + `cv2`, `pillow`, `turbojpeg`, `tifffile`, `None`. If backend is + None, the global imread_backend specified by ``mmcv.use_backend()`` + will be used. Default: None. Returns: ndarray: Loaded image array. + + Examples: + >>> img_path = '/path/to/img.jpg' + >>> with open(img_path, 'rb') as f: + >>> img_buff = f.read() + >>> img = mmcv.imfrombytes(img_buff) + >>> img = mmcv.imfrombytes(img_buff, flag='color', channel_order='rgb') + >>> img = mmcv.imfrombytes(img_buff, backend='pillow') + >>> img = mmcv.imfrombytes(img_buff, backend='cv2') """ if backend is None: backend = imread_backend if backend not in supported_backends: - raise ValueError(f'backend: {backend} is not supported. Supported ' - "backends are 'cv2', 'turbojpeg', 'pillow'") + raise ValueError( + f'backend: {backend} is not supported. Supported ' + "backends are 'cv2', 'turbojpeg', 'pillow', 'tifffile'") if backend == 'turbojpeg': img = jpeg.decode(content, _jpegflag(flag, channel_order)) if img.shape[-1] == 1: img = img[:, :, 0] return img elif backend == 'pillow': - buff = io.BytesIO(content) - img = Image.open(buff) - img = _pillow2array(img, flag, channel_order) + with io.BytesIO(content) as buff: + img = Image.open(buff) + img = _pillow2array(img, flag, channel_order) + return img + elif backend == 'tifffile': + with io.BytesIO(content) as buff: + img = tifffile.imread(buff) return img else: img_np = np.frombuffer(content, np.uint8) @@ -239,20 +262,53 @@ def imfrombytes(content, flag='color', channel_order='bgr', backend=None): return img -def imwrite(img, file_path, params=None, auto_mkdir=True): +def imwrite(img, + file_path, + params=None, + auto_mkdir=None, + file_client_args=None): """Write image to file. + Note: + In v1.4.1 and later, add `file_client_args` parameters. + + Warning: + The parameter `auto_mkdir` will be deprecated in the future and every + file clients will make directory automatically. + Args: img (ndarray): Image array to be written. file_path (str): Image file path. params (None or list): Same as opencv :func:`imwrite` interface. auto_mkdir (bool): If the parent folder of `file_path` does not exist, - whether to create it automatically. + whether to create it automatically. It will be deprecated. + file_client_args (dict | None): Arguments to instantiate a + FileClient. See :class:`mmcv.fileio.FileClient` for details. + Default: None. Returns: bool: Successful or not. + + Examples: + >>> # write to hard disk client + >>> ret = mmcv.imwrite(img, '/path/to/img.jpg') + >>> # infer the file backend by the prefix s3 + >>> ret = mmcv.imwrite(img, 's3://bucket/img.jpg') + >>> # manually set the file backend petrel + >>> ret = mmcv.imwrite(img, 's3://bucket/img.jpg', file_client_args={ + ... 'backend': 'petrel'}) """ - if auto_mkdir: - dir_name = osp.abspath(osp.dirname(file_path)) - mkdir_or_exist(dir_name) - return cv2.imwrite(file_path, img, params) + assert is_filepath(file_path) + file_path = str(file_path) + if auto_mkdir is not None: + warnings.warn( + 'The parameter `auto_mkdir` will be deprecated in the future and ' + 'every file clients will make directory automatically.') + file_client = FileClient.infer_client(file_client_args, file_path) + img_ext = osp.splitext(file_path)[-1] + # Encode image according to image suffix. + # For example, if image path is '/path/your/img.jpg', the encode + # format is '.jpg'. + flag, img_buff = cv2.imencode(img_ext, img, params) + file_client.put(img_buff.tobytes(), file_path) + return flag diff --git a/mmcv/image/misc.py b/mmcv/image/misc.py index dfc4a9c..43934a6 100644 --- a/mmcv/image/misc.py +++ b/mmcv/image/misc.py @@ -9,18 +9,21 @@ except ImportError: torch = None -def tensor2imgs(tensor, mean=(0, 0, 0), std=(1, 1, 1), to_rgb=True): - """Convert tensor to 3-channel images. +def tensor2imgs(tensor, mean=None, std=None, to_rgb=True): + """Convert tensor to 3-channel images or 1-channel gray images. Args: tensor (torch.Tensor): Tensor that contains multiple images, shape ( - N, C, H, W). - mean (tuple[float], optional): Mean of images. Defaults to (0, 0, 0). - std (tuple[float], optional): Standard deviation of images. - Defaults to (1, 1, 1). + N, C, H, W). :math:`C` can be either 3 or 1. + mean (tuple[float], optional): Mean of images. If None, + (0, 0, 0) will be used for tensor with 3-channel, + while (0, ) for tensor with 1-channel. Defaults to None. + std (tuple[float], optional): Standard deviation of images. If None, + (1, 1, 1) will be used for tensor with 3-channel, + while (1, ) for tensor with 1-channel. Defaults to None. to_rgb (bool, optional): Whether the tensor was converted to RGB format in the first place. If so, convert it back to BGR. - Defaults to True. + For the tensor with 1 channel, it must be False. Defaults to True. Returns: list[np.ndarray]: A list that contains multiple images. @@ -29,8 +32,14 @@ def tensor2imgs(tensor, mean=(0, 0, 0), std=(1, 1, 1), to_rgb=True): if torch is None: raise RuntimeError('pytorch is not installed') assert torch.is_tensor(tensor) and tensor.ndim == 4 - assert len(mean) == 3 - assert len(std) == 3 + channels = tensor.size(1) + assert channels in [1, 3] + if mean is None: + mean = (0, ) * channels + if std is None: + std = (1, ) * channels + assert (channels == len(mean) == len(std) == 3) or \ + (channels == len(mean) == len(std) == 1 and not to_rgb) num_imgs = tensor.size(0) mean = np.array(mean, dtype=np.float32) diff --git a/mmcv/image/photometric.py b/mmcv/image/photometric.py index 5085d01..b41cea7 100644 --- a/mmcv/image/photometric.py +++ b/mmcv/image/photometric.py @@ -426,3 +426,46 @@ def clahe(img, clip_limit=40.0, tile_grid_size=(8, 8)): clahe = cv2.createCLAHE(clip_limit, tile_grid_size) return clahe.apply(np.array(img, dtype=np.uint8)) + + +def adjust_hue(img: np.ndarray, hue_factor: float) -> np.ndarray: + """Adjust hue of an image. + + The image hue is adjusted by converting the image to HSV and cyclically + shifting the intensities in the hue channel (H). The image is then + converted back to original image mode. + + `hue_factor` is the amount of shift in H channel and must be in the + interval `[-0.5, 0.5]`. + + Modified from + https://github.com/pytorch/vision/blob/main/torchvision/ + transforms/functional.py + + Args: + img (ndarray): Image to be adjusted. + hue_factor (float): How much to shift the hue channel. Should be in + [-0.5, 0.5]. 0.5 and -0.5 give complete reversal of hue channel in + HSV space in positive and negative direction respectively. + 0 means no shift. Therefore, both -0.5 and 0.5 will give an image + with complementary colors while 0 gives the original image. + + Returns: + ndarray: Hue adjusted image. + """ + + if not (-0.5 <= hue_factor <= 0.5): + raise ValueError(f'hue_factor:{hue_factor} is not in [-0.5, 0.5].') + if not (isinstance(img, np.ndarray) and (img.ndim in {2, 3})): + raise TypeError('img should be ndarray with dim=[2 or 3].') + + dtype = img.dtype + img = img.astype(np.uint8) + hsv_img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV_FULL) + h, s, v = cv2.split(hsv_img) + h = h.astype(np.uint8) + # uint8 addition take cares of rotation across boundaries + with np.errstate(over='ignore'): + h += np.uint8(hue_factor * 255) + hsv_img = cv2.merge([h, s, v]) + return cv2.cvtColor(hsv_img, cv2.COLOR_HSV2RGB_FULL).astype(dtype) diff --git a/mmcv/model_zoo/torchvision_0.12.json b/mmcv/model_zoo/torchvision_0.12.json new file mode 100644 index 0000000..06defe6 --- /dev/null +++ b/mmcv/model_zoo/torchvision_0.12.json @@ -0,0 +1,57 @@ +{ + "alexnet": "https://download.pytorch.org/models/alexnet-owt-7be5be79.pth", + "densenet121": "https://download.pytorch.org/models/densenet121-a639ec97.pth", + "densenet169": "https://download.pytorch.org/models/densenet169-b2777c0a.pth", + "densenet201": "https://download.pytorch.org/models/densenet201-c1103571.pth", + "densenet161": "https://download.pytorch.org/models/densenet161-8d451a50.pth", + "efficientnet_b0": "https://download.pytorch.org/models/efficientnet_b0_rwightman-3dd342df.pth", + "efficientnet_b1": "https://download.pytorch.org/models/efficientnet_b1_rwightman-533bc792.pth", + "efficientnet_b2": "https://download.pytorch.org/models/efficientnet_b2_rwightman-bcdf34b7.pth", + "efficientnet_b3": "https://download.pytorch.org/models/efficientnet_b3_rwightman-cf984f9c.pth", + "efficientnet_b4": "https://download.pytorch.org/models/efficientnet_b4_rwightman-7eb33cd5.pth", + "efficientnet_b5": "https://download.pytorch.org/models/efficientnet_b5_lukemelas-b6417697.pth", + "efficientnet_b6": "https://download.pytorch.org/models/efficientnet_b6_lukemelas-c76e70fd.pth", + "efficientnet_b7": "https://download.pytorch.org/models/efficientnet_b7_lukemelas-dcc49843.pth", + "googlenet": "https://download.pytorch.org/models/googlenet-1378be20.pth", + "inception_v3_google": "https://download.pytorch.org/models/inception_v3_google-0cc3c7bd.pth", + "mobilenet_v2": "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth", + "mobilenet_v3_large": "https://download.pytorch.org/models/mobilenet_v3_large-8738ca79.pth", + "mobilenet_v3_small": "https://download.pytorch.org/models/mobilenet_v3_small-047dcff4.pth", + "regnet_y_400mf": "https://download.pytorch.org/models/regnet_y_400mf-c65dace8.pth", + "regnet_y_800mf": "https://download.pytorch.org/models/regnet_y_800mf-1b27b58c.pth", + "regnet_y_1_6gf": "https://download.pytorch.org/models/regnet_y_1_6gf-b11a554e.pth", + "regnet_y_3_2gf": "https://download.pytorch.org/models/regnet_y_3_2gf-b5a9779c.pth", + "regnet_y_8gf": "https://download.pytorch.org/models/regnet_y_8gf-d0d0e4a8.pth", + "regnet_y_16gf": "https://download.pytorch.org/models/regnet_y_16gf-9e6ed7dd.pth", + "regnet_y_32gf": "https://download.pytorch.org/models/regnet_y_32gf-4dee3f7a.pth", + "regnet_x_400mf": "https://download.pytorch.org/models/regnet_x_400mf-adf1edd5.pth", + "regnet_x_800mf": "https://download.pytorch.org/models/regnet_x_800mf-ad17e45c.pth", + "regnet_x_1_6gf": "https://download.pytorch.org/models/regnet_x_1_6gf-e3633e7f.pth", + "regnet_x_3_2gf": "https://download.pytorch.org/models/regnet_x_3_2gf-f342aeae.pth", + "regnet_x_8gf": "https://download.pytorch.org/models/regnet_x_8gf-03ceed89.pth", + "regnet_x_16gf": "https://download.pytorch.org/models/regnet_x_16gf-2007eb11.pth", + "regnet_x_32gf": "https://download.pytorch.org/models/regnet_x_32gf-9d47f8d0.pth", + "resnet18": "https://download.pytorch.org/models/resnet18-f37072fd.pth", + "resnet34": "https://download.pytorch.org/models/resnet34-b627a593.pth", + "resnet50": "https://download.pytorch.org/models/resnet50-0676ba61.pth", + "resnet101": "https://download.pytorch.org/models/resnet101-63fe2227.pth", + "resnet152": "https://download.pytorch.org/models/resnet152-394f9c45.pth", + "resnext50_32x4d": "https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth", + "resnext101_32x8d": "https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth", + "wide_resnet50_2": "https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth", + "wide_resnet101_2": "https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth", + "shufflenetv2_x0.5": "https://download.pytorch.org/models/shufflenetv2_x0.5-f707e7126e.pth", + "shufflenetv2_x1.0": "https://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pth", + "shufflenetv2_x1.5": null, + "shufflenetv2_x2.0": null, + "squeezenet1_0": "https://download.pytorch.org/models/squeezenet1_0-b66bff10.pth", + "squeezenet1_1": "https://download.pytorch.org/models/squeezenet1_1-b8a52dc0.pth", + "vgg11": "https://download.pytorch.org/models/vgg11-8a719046.pth", + "vgg13": "https://download.pytorch.org/models/vgg13-19584684.pth", + "vgg16": "https://download.pytorch.org/models/vgg16-397923af.pth", + "vgg19": "https://download.pytorch.org/models/vgg19-dcbb9e9d.pth", + "vgg11_bn": "https://download.pytorch.org/models/vgg11_bn-6002323d.pth", + "vgg13_bn": "https://download.pytorch.org/models/vgg13_bn-abd245e5.pth", + "vgg16_bn": "https://download.pytorch.org/models/vgg16_bn-6c64b313.pth", + "vgg19_bn": "https://download.pytorch.org/models/vgg19_bn-c79401a0.pth" +} diff --git a/mmcv/onnx/info.py b/mmcv/onnx/info.py index e599973..b8325a9 100644 --- a/mmcv/onnx/info.py +++ b/mmcv/onnx/info.py @@ -1,10 +1,24 @@ # Copyright (c) OpenMMLab. All rights reserved. import os +import warnings import torch -def is_custom_op_loaded(): +def is_custom_op_loaded() -> bool: + + # Following strings of text style are from colorama package + bright_style, reset_style = '\x1b[1m', '\x1b[0m' + red_text, blue_text = '\x1b[31m', '\x1b[34m' + white_background = '\x1b[107m' + + msg = white_background + bright_style + red_text + msg += 'DeprecationWarning: This function will be deprecated in future. ' + msg += blue_text + 'Welcome to use the unified model deployment toolbox ' + msg += 'MMDeploy: https://github.com/open-mmlab/mmdeploy' + msg += reset_style + warnings.warn(msg) + flag = False try: from ..tensorrt import is_tensorrt_plugin_loaded diff --git a/mmcv/onnx/onnx_utils/symbolic_helper.py b/mmcv/onnx/onnx_utils/symbolic_helper.py index a9a31eb..cc9e96f 100644 --- a/mmcv/onnx/onnx_utils/symbolic_helper.py +++ b/mmcv/onnx/onnx_utils/symbolic_helper.py @@ -59,7 +59,7 @@ def _parse_arg(value, desc): raise RuntimeError( "ONNX symbolic doesn't know to interpret ListConstruct node") - raise RuntimeError('Unexpected node type: {}'.format(value.node().kind())) + raise RuntimeError(f'Unexpected node type: {value.node().kind()}') def _maybe_get_const(value, desc): @@ -328,4 +328,4 @@ cast_pytorch_to_onnx = { # Global set to store the list of quantized operators in the network. # This is currently only used in the conversion of quantized ops from PT # -> C2 via ONNX. -_quantized_ops = set() +_quantized_ops: set = set() diff --git a/mmcv/onnx/symbolic.py b/mmcv/onnx/symbolic.py index 94cc1c6..3599b3f 100644 --- a/mmcv/onnx/symbolic.py +++ b/mmcv/onnx/symbolic.py @@ -1,6 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. """Modified from https://github.com/pytorch/pytorch.""" import os +import warnings import numpy as np import torch @@ -409,8 +410,8 @@ def cummin(g, input, dim): @parse_args('v', 'v', 'is') def roll(g, input, shifts, dims): - from torch.onnx.symbolic_opset9 import squeeze from packaging import version + from torch.onnx.symbolic_opset9 import squeeze input_shape = g.op('Shape', input) need_flatten = len(dims) == 0 @@ -467,6 +468,18 @@ def roll(g, input, shifts, dims): def register_extra_symbolics(opset=11): + # Following strings of text style are from colorama package + bright_style, reset_style = '\x1b[1m', '\x1b[0m' + red_text, blue_text = '\x1b[31m', '\x1b[34m' + white_background = '\x1b[107m' + + msg = white_background + bright_style + red_text + msg += 'DeprecationWarning: This function will be deprecated in future. ' + msg += blue_text + 'Welcome to use the unified model deployment toolbox ' + msg += 'MMDeploy: https://github.com/open-mmlab/mmdeploy' + msg += reset_style + warnings.warn(msg) + register_op('one_hot', one_hot, '', opset) register_op('im2col', im2col, '', opset) register_op('topk', topk, '', opset) diff --git a/mmcv/ops/__init__.py b/mmcv/ops/__init__.py old mode 100644 new mode 100755 index 999e090..a65f14f --- a/mmcv/ops/__init__.py +++ b/mmcv/ops/__init__.py @@ -1,4 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. +from .active_rotated_filter import active_rotated_filter from .assign_score_withk import assign_score_withk from .ball_query import ball_query from .bbox import bbox_overlaps @@ -6,7 +7,9 @@ from .border_align import BorderAlign, border_align from .box_iou_rotated import box_iou_rotated from .carafe import CARAFE, CARAFENaive, CARAFEPack, carafe, carafe_naive from .cc_attention import CrissCrossAttention +from .chamfer_distance import chamfer_distance from .contour_expand import contour_expand +from .convex_iou import convex_giou, convex_iou from .corner_pool import CornerPool from .correlation import Correlation from .deform_conv import DeformConv2d, DeformConv2dPack, deform_conv2d @@ -16,6 +19,7 @@ from .deprecated_wrappers import Conv2d_deprecated as Conv2d from .deprecated_wrappers import ConvTranspose2d_deprecated as ConvTranspose2d from .deprecated_wrappers import Linear_deprecated as Linear from .deprecated_wrappers import MaxPool2d_deprecated as MaxPool2d +from .diff_iou_rotated import diff_iou_rotated_2d, diff_iou_rotated_3d from .focal_loss import (SigmoidFocalLoss, SoftmaxFocalLoss, sigmoid_focal_loss, softmax_focal_loss) from .furthest_point_sample import (furthest_point_sample, @@ -25,9 +29,11 @@ from .gather_points import gather_points from .group_points import GroupAll, QueryAndGroup, grouping_operation from .info import (get_compiler_version, get_compiling_cuda_version, get_onnxruntime_op_path) -from .iou3d import boxes_iou_bev, nms_bev, nms_normal_bev +from .iou3d import (boxes_iou3d, boxes_iou_bev, boxes_overlap_bev, nms3d, + nms3d_normal, nms_bev, nms_normal_bev) from .knn import knn from .masked_conv import MaskedConv2d, masked_conv2d +from .min_area_polygons import min_area_polygons from .modulated_deform_conv import (ModulatedDeformConv2d, ModulatedDeformConv2dPack, modulated_deform_conv2d) @@ -38,15 +44,25 @@ from .point_sample import (SimpleRoIAlign, point_sample, rel_roi_point_to_rel_img_point) from .points_in_boxes import (points_in_boxes_all, points_in_boxes_cpu, points_in_boxes_part) +from .points_in_polygons import points_in_polygons from .points_sampler import PointsSampler +from .prroi_pool import PrRoIPool, prroi_pool from .psa_mask import PSAMask +from .riroi_align_rotated import RiRoIAlignRotated, riroi_align_rotated from .roi_align import RoIAlign, roi_align from .roi_align_rotated import RoIAlignRotated, roi_align_rotated from .roi_pool import RoIPool, roi_pool from .roiaware_pool3d import RoIAwarePool3d from .roipoint_pool3d import RoIPointPool3d +from .rotated_feature_align import rotated_feature_align from .saconv import SAConv2d from .scatter_points import DynamicScatter, dynamic_scatter +from .sparse_conv import (SparseConv2d, SparseConv3d, SparseConvTranspose2d, + SparseConvTranspose3d, SparseInverseConv2d, + SparseInverseConv3d, SubMConv2d, SubMConv3d) +from .sparse_modules import SparseModule, SparseSequential +from .sparse_pool import SparseMaxPool2d, SparseMaxPool3d +from .sparse_structure import SparseConvTensor, scatter_nd from .sync_bn import SyncBatchNorm from .three_interpolate import three_interpolate from .three_nn import three_nn @@ -70,12 +86,21 @@ __all__ = [ 'SAConv2d', 'TINShift', 'tin_shift', 'assign_score_withk', 'box_iou_rotated', 'RoIPointPool3d', 'nms_rotated', 'knn', 'ball_query', 'upfirdn2d', 'FusedBiasLeakyReLU', 'fused_bias_leakyrelu', + 'rotated_feature_align', 'RiRoIAlignRotated', 'riroi_align_rotated', 'RoIAlignRotated', 'roi_align_rotated', 'pixel_group', 'QueryAndGroup', 'GroupAll', 'grouping_operation', 'contour_expand', 'three_nn', 'three_interpolate', 'MultiScaleDeformableAttention', 'BorderAlign', 'border_align', 'gather_points', 'furthest_point_sample', 'furthest_point_sample_with_dist', 'PointsSampler', 'Correlation', - 'boxes_iou_bev', 'nms_bev', 'nms_normal_bev', 'Voxelization', - 'voxelization', 'dynamic_scatter', 'DynamicScatter', 'RoIAwarePool3d', - 'points_in_boxes_part', 'points_in_boxes_cpu', 'points_in_boxes_all' + 'boxes_iou3d', 'boxes_iou_bev', 'boxes_overlap_bev', 'nms_bev', + 'nms_normal_bev', 'nms3d', 'nms3d_normal', 'Voxelization', 'voxelization', + 'dynamic_scatter', 'DynamicScatter', 'RoIAwarePool3d', 'SparseConv2d', + 'SparseConv3d', 'SparseConvTranspose2d', 'SparseConvTranspose3d', + 'SparseInverseConv2d', 'SparseInverseConv3d', 'SubMConv2d', 'SubMConv3d', + 'SparseModule', 'SparseSequential', 'SparseMaxPool2d', 'SparseMaxPool3d', + 'SparseConvTensor', 'scatter_nd', 'points_in_boxes_part', + 'points_in_boxes_cpu', 'points_in_boxes_all', 'points_in_polygons', + 'min_area_polygons', 'active_rotated_filter', 'convex_iou', 'convex_giou', + 'diff_iou_rotated_2d', 'diff_iou_rotated_3d', 'chamfer_distance', + 'PrRoIPool', 'prroi_pool' ] diff --git a/mmcv/ops/active_rotated_filter.py b/mmcv/ops/active_rotated_filter.py new file mode 100644 index 0000000..46c2aa7 --- /dev/null +++ b/mmcv/ops/active_rotated_filter.py @@ -0,0 +1,64 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Tuple + +import torch +from torch.autograd import Function +from torch.autograd.function import once_differentiable + +from ..utils import ext_loader + +ext_module = ext_loader.load_ext( + '_ext', + ['active_rotated_filter_forward', 'active_rotated_filter_backward']) + + +class ActiveRotatedFilterFunction(Function): + """Encoding the orientation information and generating orientation- + sensitive features. + + The details are described in the paper `Align Deep Features for Oriented + Object Detection _`. + """ + + @staticmethod + def forward(ctx, input: torch.Tensor, + indices: torch.Tensor) -> torch.Tensor: + """ + Args: + input (torch.Tensor): Input features with shape + [num_output_planes, num_input_planes, num_orientations, H, W]. + indices (torch.Tensor): Indices with shape + [num_orientations, H, W, num_rotations]. + + Returns: + torch.Tensor: Refined features with shape [num_output_planes * + num_rotations, num_input_planes * num_orientations, H, W]. + """ + ctx.save_for_backward(input, indices) + op, ip, o, h, w = input.size() + o, h, w, r = indices.size() + output = input.new_zeros((op * r, ip * o, h, w)) + ext_module.active_rotated_filter_forward(input, indices, output) + + return output + + @staticmethod + @once_differentiable + def backward(ctx, grad_out: torch.Tensor) -> Tuple[torch.Tensor, None]: + """ + Args: + grad_output (torch.Tensor): The gradiant of output features + with shape [num_output_planes * num_rotations, + num_input_planes * num_orientations, H, W]. + + Returns: + torch.Tensor: The gradiant of input features with shape + [num_output_planes, num_input_planes, num_orientations, H, W]. + """ + input, indices = ctx.saved_tensors + grad_in = torch.zeros_like(input) + ext_module.active_rotated_filter_backward(grad_out, indices, grad_in) + return grad_in, None + + +active_rotated_filter = ActiveRotatedFilterFunction.apply diff --git a/mmcv/ops/assign_score_withk.py b/mmcv/ops/assign_score_withk.py index 4906ada..deca089 100644 --- a/mmcv/ops/assign_score_withk.py +++ b/mmcv/ops/assign_score_withk.py @@ -1,3 +1,6 @@ +from typing import Tuple + +import torch from torch.autograd import Function from ..utils import ext_loader @@ -27,11 +30,11 @@ class AssignScoreWithK(Function): @staticmethod def forward(ctx, - scores, - point_features, - center_features, - knn_idx, - aggregate='sum'): + scores: torch.Tensor, + point_features: torch.Tensor, + center_features: torch.Tensor, + knn_idx: torch.Tensor, + aggregate: str = 'sum') -> torch.Tensor: """ Args: scores (torch.Tensor): (B, npoint, K, M), predicted scores to @@ -78,15 +81,20 @@ class AssignScoreWithK(Function): return output @staticmethod - def backward(ctx, grad_out): + def backward( + ctx, grad_out: torch.Tensor + ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor, None, None]: """ Args: grad_out (torch.Tensor): (B, out_dim, npoint, K) Returns: - grad_scores (torch.Tensor): (B, npoint, K, M) - grad_point_features (torch.Tensor): (B, N, M, out_dim) - grad_center_features (torch.Tensor): (B, N, M, out_dim) + tuple[torch.Tensor]: A tuple contains five elements. The first one + is the gradient of ``scores`` whose shape is (B, npoint, K, M). The + second is the gradient of ``point_features`` whose shape is + (B, N, M, out_dim). The third is the gradient of + ``center_features`` with the shape of (B, N, M, out_dim). The last + two are ``None``. """ _, point_features, center_features, scores, knn_idx = ctx.saved_tensors diff --git a/mmcv/ops/ball_query.py b/mmcv/ops/ball_query.py index d046684..d24e044 100644 --- a/mmcv/ops/ball_query.py +++ b/mmcv/ops/ball_query.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Tuple + import torch from torch.autograd import Function @@ -18,12 +20,13 @@ class BallQuery(Function): min_radius (float): minimum radius of the balls. max_radius (float): maximum radius of the balls. sample_num (int): maximum number of features in the balls. - xyz (Tensor): (B, N, 3) xyz coordinates of the features. - center_xyz (Tensor): (B, npoint, 3) centers of the ball query. + xyz (torch.Tensor): (B, N, 3) xyz coordinates of the features. + center_xyz (torch.Tensor): (B, npoint, 3) centers of the ball + query. Returns: - Tensor: (B, npoint, nsample) tensor with the indices of - the features that form the query balls. + torch.Tensor: (B, npoint, nsample) tensor with the indices of the + features that form the query balls. """ assert center_xyz.is_contiguous() assert xyz.is_contiguous() @@ -48,7 +51,7 @@ class BallQuery(Function): return idx @staticmethod - def backward(ctx, a=None): + def backward(ctx, a=None) -> Tuple[None, None, None, None]: return None, None, None, None diff --git a/mmcv/ops/bbox.py b/mmcv/ops/bbox.py index 0c4d58b..bf6bd43 100644 --- a/mmcv/ops/bbox.py +++ b/mmcv/ops/bbox.py @@ -1,10 +1,57 @@ # Copyright (c) OpenMMLab. All rights reserved. +import torch + from ..utils import ext_loader ext_module = ext_loader.load_ext('_ext', ['bbox_overlaps']) -def bbox_overlaps(bboxes1, bboxes2, mode='iou', aligned=False, offset=0): +def _bbox_overlaps_cpu(bboxes1: torch.Tensor, + bboxes2: torch.Tensor, + mode: str = 'iou', + aligned: bool = False, + offset: int = 0) -> torch.Tensor: + assert mode in ['iou', 'iof'] + + if aligned: + lt = torch.max(bboxes1[:, :2], bboxes2[:, :2]) # [rows, 2] + rb = torch.min(bboxes1[:, 2:], bboxes2[:, 2:]) # [rows, 2] + + wh = (rb - lt + offset).clamp(min=0) # [rows, 2] + overlap = wh[:, 0] * wh[:, 1] + area1 = (bboxes1[:, 2] - bboxes1[:, 0] + offset) * ( + bboxes1[:, 3] - bboxes1[:, 1] + offset) + + if mode == 'iou': + area2 = (bboxes2[:, 2] - bboxes2[:, 0] + offset) * ( + bboxes2[:, 3] - bboxes2[:, 1] + offset) + ious = overlap / (area1 + area2 - overlap) + else: + ious = overlap / area1 + else: + lt = torch.max(bboxes1[:, None, :2], bboxes2[:, :2]) # [rows, cols, 2] + rb = torch.min(bboxes1[:, None, 2:], bboxes2[:, 2:]) # [rows, cols, 2] + + wh = (rb - lt + offset).clamp(min=0) # [rows, cols, 2] + overlap = wh[:, :, 0] * wh[:, :, 1] + area1 = (bboxes1[:, 2] - bboxes1[:, 0] + offset) * ( + bboxes1[:, 3] - bboxes1[:, 1] + offset) + + if mode == 'iou': + area2 = (bboxes2[:, 2] - bboxes2[:, 0] + offset) * ( + bboxes2[:, 3] - bboxes2[:, 1] + offset) + ious = overlap / (area1[:, None] + area2 - overlap) + else: + ious = overlap / (area1[:, None]) + + return ious + + +def bbox_overlaps(bboxes1: torch.Tensor, + bboxes2: torch.Tensor, + mode: str = 'iou', + aligned: bool = False, + offset: int = 0) -> torch.Tensor: """Calculate overlap between two set of bboxes. If ``aligned`` is ``False``, then calculate the ious between each bbox @@ -12,14 +59,16 @@ def bbox_overlaps(bboxes1, bboxes2, mode='iou', aligned=False, offset=0): bboxes1 and bboxes2. Args: - bboxes1 (Tensor): shape (m, 4) in format or empty. - bboxes2 (Tensor): shape (n, 4) in format or empty. - If aligned is ``True``, then m and n must be equal. + bboxes1 (torch.Tensor): shape (m, 4) in format or + empty. + bboxes2 (torch.Tensor): shape (n, 4) in format or + empty. If aligned is ``True``, then m and n must be equal. mode (str): "iou" (intersection over union) or iof (intersection over foreground). Returns: - ious(Tensor): shape (m, n) if aligned == False else shape (m, 1) + torch.Tensor: Return the ious betweens boxes. If ``aligned`` is + ``False``, the shape of ious is (m, n) else (m, 1). Example: >>> bboxes1 = torch.FloatTensor([ @@ -63,10 +112,19 @@ def bbox_overlaps(bboxes1, bboxes2, mode='iou', aligned=False, offset=0): if rows * cols == 0: return bboxes1.new(rows, 1) if aligned else bboxes1.new(rows, cols) - if aligned: - ious = bboxes1.new_zeros(rows) + if bboxes1.device.type == 'cpu': + return _bbox_overlaps_cpu( + bboxes1, bboxes2, mode=mode, aligned=aligned, offset=offset) else: - ious = bboxes1.new_zeros((rows, cols)) - ext_module.bbox_overlaps( - bboxes1, bboxes2, ious, mode=mode_flag, aligned=aligned, offset=offset) - return ious + if aligned: + ious = bboxes1.new_zeros(rows) + else: + ious = bboxes1.new_zeros((rows, cols)) + ext_module.bbox_overlaps( + bboxes1, + bboxes2, + ious, + mode=mode_flag, + aligned=aligned, + offset=offset) + return ious diff --git a/mmcv/ops/border_align.py b/mmcv/ops/border_align.py index ff305be..c09501b 100644 --- a/mmcv/ops/border_align.py +++ b/mmcv/ops/border_align.py @@ -2,6 +2,8 @@ # modified from # https://github.com/Megvii-BaseDetection/cvpods/blob/master/cvpods/layers/border_align.py +from typing import Tuple + import torch import torch.nn as nn from torch.autograd import Function @@ -21,7 +23,8 @@ class BorderAlignFunction(Function): 'mmcv::MMCVBorderAlign', input, boxes, pool_size_i=pool_size) @staticmethod - def forward(ctx, input, boxes, pool_size): + def forward(ctx, input: torch.Tensor, boxes: torch.Tensor, + pool_size: int) -> torch.Tensor: ctx.pool_size = pool_size ctx.input_shape = input.size() @@ -45,7 +48,8 @@ class BorderAlignFunction(Function): @staticmethod @once_differentiable - def backward(ctx, grad_output): + def backward(ctx, + grad_output: torch.Tensor) -> Tuple[torch.Tensor, None, None]: boxes, argmax_idx = ctx.saved_tensors grad_input = grad_output.new_zeros(ctx.input_shape) # complex head architecture may cause grad_output uncontiguous @@ -72,24 +76,25 @@ class BorderAlign(nn.Module): For each border line (e.g. top, left, bottom or right) of each box, border_align does the following: - 1. uniformly samples `pool_size`+1 positions on this line, involving \ - the start and end points. - 2. the corresponding features on these points are computed by \ - bilinear interpolation. - 3. max pooling over all the `pool_size`+1 positions are used for \ - computing pooled feature. + + 1. uniformly samples ``pool_size`` +1 positions on this line, involving + the start and end points. + 2. the corresponding features on these points are computed by bilinear + interpolation. + 3. max pooling over all the ``pool_size`` +1 positions are used for + computing pooled feature. Args: pool_size (int): number of positions sampled over the boxes' borders (e.g. top, bottom, left, right). - """ - def __init__(self, pool_size): - super(BorderAlign, self).__init__() + def __init__(self, pool_size: int): + super().__init__() self.pool_size = pool_size - def forward(self, input, boxes): + def forward(self, input: torch.Tensor, + boxes: torch.Tensor) -> torch.Tensor: """ Args: input: Features with shape [N,4C,H,W]. Channels ranged in [0,C), @@ -98,8 +103,8 @@ class BorderAlign(nn.Module): boxes: Boxes with shape [N,H*W,4]. Coordinate format (x1,y1,x2,y2). Returns: - Tensor: Pooled features with shape [N,C,H*W,4]. The order is - (top,left,bottom,right) for the last dimension. + torch.Tensor: Pooled features with shape [N,C,H*W,4]. The order is + (top,left,bottom,right) for the last dimension. """ return border_align(input, boxes, self.pool_size) diff --git a/mmcv/ops/box_iou_rotated.py b/mmcv/ops/box_iou_rotated.py index 2d78015..2443af2 100644 --- a/mmcv/ops/box_iou_rotated.py +++ b/mmcv/ops/box_iou_rotated.py @@ -1,10 +1,16 @@ # Copyright (c) OpenMMLab. All rights reserved. +import torch + from ..utils import ext_loader ext_module = ext_loader.load_ext('_ext', ['box_iou_rotated']) -def box_iou_rotated(bboxes1, bboxes2, mode='iou', aligned=False): +def box_iou_rotated(bboxes1: torch.Tensor, + bboxes2: torch.Tensor, + mode: str = 'iou', + aligned: bool = False, + clockwise: bool = True) -> torch.Tensor: """Return intersection-over-union (Jaccard index) of boxes. Both sets of boxes are expected to be in @@ -14,18 +20,110 @@ def box_iou_rotated(bboxes1, bboxes2, mode='iou', aligned=False): of bboxes1 and bboxes2, otherwise the ious between each aligned pair of bboxes1 and bboxes2. - Arguments: - boxes1 (Tensor): rotated bboxes 1. \ - It has shape (N, 5), indicating (x, y, w, h, theta) for each row. - Note that theta is in radian. - boxes2 (Tensor): rotated bboxes 2. \ - It has shape (M, 5), indicating (x, y, w, h, theta) for each row. - Note that theta is in radian. + .. note:: + The operator assumes: + + 1) The positive direction along x axis is left -> right. + + 2) The positive direction along y axis is top -> down. + + 3) The w border is in parallel with x axis when angle = 0. + + However, there are 2 opposite definitions of the positive angular + direction, clockwise (CW) and counter-clockwise (CCW). MMCV supports + both definitions and uses CW by default. + + Please set ``clockwise=False`` if you are using the CCW definition. + + The coordinate system when ``clockwise`` is ``True`` (default) + + .. code-block:: none + + 0-------------------> x (0 rad) + | A-------------B + | | | + | | box h + | | angle=0 | + | D------w------C + v + y (pi/2 rad) + + In such coordination system the rotation matrix is + + .. math:: + \\begin{pmatrix} + \\cos\\alpha & -\\sin\\alpha \\\\ + \\sin\\alpha & \\cos\\alpha + \\end{pmatrix} + + The coordinates of the corner point A can be calculated as: + + .. math:: + P_A= + \\begin{pmatrix} x_A \\\\ y_A\\end{pmatrix} + = + \\begin{pmatrix} x_{center} \\\\ y_{center}\\end{pmatrix} + + \\begin{pmatrix}\\cos\\alpha & -\\sin\\alpha \\\\ + \\sin\\alpha & \\cos\\alpha\\end{pmatrix} + \\begin{pmatrix} -0.5w \\\\ -0.5h\\end{pmatrix} \\\\ + = + \\begin{pmatrix} x_{center}-0.5w\\cos\\alpha+0.5h\\sin\\alpha + \\\\ + y_{center}-0.5w\\sin\\alpha-0.5h\\cos\\alpha\\end{pmatrix} + + + The coordinate system when ``clockwise`` is ``False`` + + .. code-block:: none + + 0-------------------> x (0 rad) + | A-------------B + | | | + | | box h + | | angle=0 | + | D------w------C + v + y (-pi/2 rad) + + In such coordination system the rotation matrix is + + .. math:: + \\begin{pmatrix} + \\cos\\alpha & \\sin\\alpha \\\\ + -\\sin\\alpha & \\cos\\alpha + \\end{pmatrix} + + The coordinates of the corner point A can be calculated as: + + .. math:: + P_A= + \\begin{pmatrix} x_A \\\\ y_A\\end{pmatrix} + = + \\begin{pmatrix} x_{center} \\\\ y_{center}\\end{pmatrix} + + \\begin{pmatrix}\\cos\\alpha & \\sin\\alpha \\\\ + -\\sin\\alpha & \\cos\\alpha\\end{pmatrix} + \\begin{pmatrix} -0.5w \\\\ -0.5h\\end{pmatrix} \\\\ + = + \\begin{pmatrix} x_{center}-0.5w\\cos\\alpha-0.5h\\sin\\alpha + \\\\ + y_{center}+0.5w\\sin\\alpha-0.5h\\cos\\alpha\\end{pmatrix} + + Args: + boxes1 (torch.Tensor): rotated bboxes 1. It has shape (N, 5), + indicating (x, y, w, h, theta) for each row. Note that theta is in + radian. + boxes2 (torch.Tensor): rotated bboxes 2. It has shape (M, 5), + indicating (x, y, w, h, theta) for each row. Note that theta is in + radian. mode (str): "iou" (intersection over union) or iof (intersection over foreground). + clockwise (bool): flag indicating whether the positive angular + orientation is clockwise. default True. + `New in version 1.4.3.` Returns: - ious(Tensor): shape (N, M) if aligned == False else shape (N,) + torch.Tensor: Return the ious betweens boxes. If ``aligned`` is + ``False``, the shape of ious is (N, M) else (N,). """ assert mode in ['iou', 'iof'] mode_dict = {'iou': 0, 'iof': 1} @@ -35,7 +133,12 @@ def box_iou_rotated(bboxes1, bboxes2, mode='iou', aligned=False): if aligned: ious = bboxes1.new_zeros(rows) else: - ious = bboxes1.new_zeros((rows * cols)) + ious = bboxes1.new_zeros(rows * cols) + if not clockwise: + flip_mat = bboxes1.new_ones(bboxes1.shape[-1]) + flip_mat[-1] = -1 + bboxes1 = bboxes1 * flip_mat + bboxes2 = bboxes2 * flip_mat bboxes1 = bboxes1.contiguous() bboxes2 = bboxes2.contiguous() ext_module.box_iou_rotated( diff --git a/mmcv/ops/carafe.py b/mmcv/ops/carafe.py index 5154cb3..18230c0 100644 --- a/mmcv/ops/carafe.py +++ b/mmcv/ops/carafe.py @@ -1,7 +1,10 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Tuple + import torch import torch.nn as nn import torch.nn.functional as F +from torch import Tensor from torch.autograd import Function from torch.nn.modules.module import Module @@ -17,7 +20,8 @@ ext_module = ext_loader.load_ext('_ext', [ class CARAFENaiveFunction(Function): @staticmethod - def symbolic(g, features, masks, kernel_size, group_size, scale_factor): + def symbolic(g, features: Tensor, masks: Tensor, kernel_size: int, + group_size: int, scale_factor: int) -> Tensor: return g.op( 'mmcv::MMCVCARAFENaive', features, @@ -27,7 +31,8 @@ class CARAFENaiveFunction(Function): scale_factor_f=scale_factor) @staticmethod - def forward(ctx, features, masks, kernel_size, group_size, scale_factor): + def forward(ctx, features: Tensor, masks: Tensor, kernel_size: int, + group_size: int, scale_factor: int) -> Tensor: assert scale_factor >= 1 assert masks.size(1) == kernel_size * kernel_size * group_size assert masks.size(-1) == features.size(-1) * scale_factor @@ -50,12 +55,15 @@ class CARAFENaiveFunction(Function): group_size=group_size, scale_factor=scale_factor) - if features.requires_grad or masks.requires_grad: + if features.requires_grad or masks.requires_grad or \ + torch.__version__ == 'parrots': ctx.save_for_backward(features, masks) return output @staticmethod - def backward(ctx, grad_output): + def backward( + ctx, + grad_output: Tensor) -> Tuple[Tensor, Tensor, None, None, None]: assert grad_output.is_cuda features, masks = ctx.saved_tensors @@ -83,8 +91,8 @@ carafe_naive = CARAFENaiveFunction.apply class CARAFENaive(Module): - def __init__(self, kernel_size, group_size, scale_factor): - super(CARAFENaive, self).__init__() + def __init__(self, kernel_size: int, group_size: int, scale_factor: int): + super().__init__() assert isinstance(kernel_size, int) and isinstance( group_size, int) and isinstance(scale_factor, int) @@ -92,7 +100,7 @@ class CARAFENaive(Module): self.group_size = group_size self.scale_factor = scale_factor - def forward(self, features, masks): + def forward(self, features: Tensor, masks: Tensor) -> Tensor: return carafe_naive(features, masks, self.kernel_size, self.group_size, self.scale_factor) @@ -100,7 +108,8 @@ class CARAFENaive(Module): class CARAFEFunction(Function): @staticmethod - def symbolic(g, features, masks, kernel_size, group_size, scale_factor): + def symbolic(g, features: Tensor, masks: Tensor, kernel_size: int, + group_size: int, scale_factor: int) -> Tensor: return g.op( 'mmcv::MMCVCARAFE', features, @@ -110,7 +119,8 @@ class CARAFEFunction(Function): scale_factor_f=scale_factor) @staticmethod - def forward(ctx, features, masks, kernel_size, group_size, scale_factor): + def forward(ctx, features: Tensor, masks: Tensor, kernel_size: int, + group_size: int, scale_factor: int) -> Tensor: assert scale_factor >= 1 assert masks.size(1) == kernel_size * kernel_size * group_size assert masks.size(-1) == features.size(-1) * scale_factor @@ -139,12 +149,15 @@ class CARAFEFunction(Function): group_size=group_size, scale_factor=scale_factor) - if features.requires_grad or masks.requires_grad: + if features.requires_grad or masks.requires_grad or \ + torch.__version__ == 'parrots': ctx.save_for_backward(features, masks, rfeatures) return output @staticmethod - def backward(ctx, grad_output): + def backward( + ctx, + grad_output: Tensor) -> Tuple[Tensor, Tensor, None, None, None]: assert grad_output.is_cuda features, masks, rfeatures = ctx.saved_tensors @@ -180,7 +193,8 @@ carafe = CARAFEFunction.apply class CARAFE(Module): """ CARAFE: Content-Aware ReAssembly of FEatures - Please refer to https://arxiv.org/abs/1905.02188 for more details. + Please refer to `CARAFE: Content-Aware ReAssembly of FEatures + `_ for more details. Args: kernel_size (int): reassemble kernel size @@ -191,8 +205,8 @@ class CARAFE(Module): upsampled feature map """ - def __init__(self, kernel_size, group_size, scale_factor): - super(CARAFE, self).__init__() + def __init__(self, kernel_size: int, group_size: int, scale_factor: int): + super().__init__() assert isinstance(kernel_size, int) and isinstance( group_size, int) and isinstance(scale_factor, int) @@ -200,7 +214,7 @@ class CARAFE(Module): self.group_size = group_size self.scale_factor = scale_factor - def forward(self, features, masks): + def forward(self, features: Tensor, masks: Tensor) -> Tensor: return carafe(features, masks, self.kernel_size, self.group_size, self.scale_factor) @@ -211,8 +225,8 @@ class CARAFEPack(nn.Module): compressor 2) content encoder 3) CARAFE op. Official implementation of ICCV 2019 paper - CARAFE: Content-Aware ReAssembly of FEatures - Please refer to https://arxiv.org/abs/1905.02188 for more details. + `CARAFE: Content-Aware ReAssembly of FEatures + `_. Args: channels (int): input feature channels @@ -228,14 +242,14 @@ class CARAFEPack(nn.Module): """ def __init__(self, - channels, - scale_factor, - up_kernel=5, - up_group=1, - encoder_kernel=3, - encoder_dilation=1, - compressed_channels=64): - super(CARAFEPack, self).__init__() + channels: int, + scale_factor: int, + up_kernel: int = 5, + up_group: int = 1, + encoder_kernel: int = 3, + encoder_dilation: int = 1, + compressed_channels: int = 64): + super().__init__() self.channels = channels self.scale_factor = scale_factor self.up_kernel = up_kernel @@ -261,7 +275,7 @@ class CARAFEPack(nn.Module): xavier_init(m, distribution='uniform') normal_init(self.content_encoder, std=0.001) - def kernel_normalizer(self, mask): + def kernel_normalizer(self, mask: Tensor) -> Tensor: mask = F.pixel_shuffle(mask, self.scale_factor) n, mask_c, h, w = mask.size() # use float division explicitly, @@ -274,11 +288,11 @@ class CARAFEPack(nn.Module): return mask - def feature_reassemble(self, x, mask): + def feature_reassemble(self, x: Tensor, mask: Tensor) -> Tensor: x = carafe(x, mask, self.up_kernel, self.up_group, self.scale_factor) return x - def forward(self, x): + def forward(self, x: Tensor) -> Tensor: compressed_x = self.channel_compressor(x) mask = self.content_encoder(compressed_x) mask = self.kernel_normalizer(mask) diff --git a/mmcv/ops/cc_attention.py b/mmcv/ops/cc_attention.py index ff8dd4c..9e5d332 100644 --- a/mmcv/ops/cc_attention.py +++ b/mmcv/ops/cc_attention.py @@ -6,7 +6,7 @@ import torch.nn.functional as F from mmcv.cnn import PLUGIN_LAYERS, Scale -def NEG_INF_DIAG(n, device): +def NEG_INF_DIAG(n: int, device: torch.device) -> torch.Tensor: """Returns a diagonal matrix of size [n, n]. The diagonal are all "-inf". This is for avoiding calculating the @@ -41,7 +41,7 @@ class CrissCrossAttention(nn.Module): in_channels (int): Channels of the input feature map. """ - def __init__(self, in_channels): + def __init__(self, in_channels: int) -> None: super().__init__() self.query_conv = nn.Conv2d(in_channels, in_channels // 8, 1) self.key_conv = nn.Conv2d(in_channels, in_channels // 8, 1) @@ -49,14 +49,15 @@ class CrissCrossAttention(nn.Module): self.gamma = Scale(0.) self.in_channels = in_channels - def forward(self, x): + def forward(self, x: torch.Tensor) -> torch.Tensor: """forward function of Criss-Cross Attention. Args: - x (Tensor): Input feature. \ - shape (batch_size, in_channels, height, width) + x (torch.Tensor): Input feature with the shape of + (batch_size, in_channels, height, width). + Returns: - Tensor: Output of the layer, with shape of \ + torch.Tensor: Output of the layer, with the shape of (batch_size, in_channels, height, width) """ B, C, H, W = x.size() @@ -77,7 +78,7 @@ class CrissCrossAttention(nn.Module): return out - def __repr__(self): + def __repr__(self) -> str: s = self.__class__.__name__ s += f'(in_channels={self.in_channels})' return s diff --git a/mmcv/ops/chamfer_distance.py b/mmcv/ops/chamfer_distance.py new file mode 100644 index 0000000..d68eafb --- /dev/null +++ b/mmcv/ops/chamfer_distance.py @@ -0,0 +1,95 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence, Tuple + +import torch +from torch import Tensor +from torch.autograd import Function +from torch.autograd.function import once_differentiable + +from ..utils import ext_loader + +ext_module = ext_loader.load_ext( + '_ext', ['chamfer_distance_forward', 'chamfer_distance_backward']) + + +class ChamferDistanceFunction(Function): + """This is an implementation of the 2D Chamfer Distance. + + It has been used in the paper `Oriented RepPoints for Aerial Object + Detection (CVPR 2022) _`. + """ + + @staticmethod + def forward(ctx, xyz1: Tensor, xyz2: Tensor) -> Sequence[Tensor]: + """ + Args: + xyz1 (Tensor): Point set with shape (B, N, 2). + xyz2 (Tensor): Point set with shape (B, N, 2). + + Returns: + Sequence[Tensor]: + + - dist1 (Tensor): Chamfer distance (xyz1 to xyz2) with + shape (B, N). + - dist2 (Tensor): Chamfer distance (xyz2 to xyz1) with + shape (B, N). + - idx1 (Tensor): Index of chamfer distance (xyz1 to xyz2) + with shape (B, N), which be used in compute gradient. + - idx2 (Tensor): Index of chamfer distance (xyz2 to xyz2) + with shape (B, N), which be used in compute gradient. + """ + batch_size, n, _ = xyz1.size() + _, m, _ = xyz2.size() + device = xyz1.device + xyz1 = xyz1.contiguous() + xyz2 = xyz2.contiguous() + + dist1 = torch.zeros(batch_size, n).to(device) + dist2 = torch.zeros(batch_size, m).to(device) + idx1 = torch.zeros(batch_size, n).type(torch.IntTensor).to(device) + idx2 = torch.zeros(batch_size, m).type(torch.IntTensor).to(device) + + ext_module.chamfer_distance_forward(xyz1, xyz2, dist1, dist2, idx1, + idx2) + ctx.save_for_backward(xyz1, xyz2, idx1, idx2) + return dist1, dist2, idx1, idx2 + + @staticmethod + @once_differentiable + def backward(ctx, grad_dist1: Tensor, grad_dist2: Tensor, + grad_idx1: Tensor, + grad_idx2: Tensor) -> Tuple[Tensor, Tensor]: + """ + + Args: + grad_dist1 (Tensor): Gradient of chamfer distance + (xyz1 to xyz2) with shape (B, N). + grad_dist2 (Tensor): Gradient of chamfer distance + (xyz2 to xyz1) with shape (B, N). + grad_idx1 (Tensor): Index of chamfer distance (xyz1 to xyz2) + with shape (B, N), which be used in compute gradient. + grad_idx2 (Tensor): Index of chamfer distance (xyz2 to xyz2) + with shape (B, N), which be used in compute gradient. + + Returns: + Tuple[Tensor, Tensor]: + + - grad_xyz1 (Tensor): Gradient of the point set with shape \ + (B, N, 2). + - grad_xyz2 (Tensor):Gradient of the point set with shape \ + (B, N, 2). + """ + xyz1, xyz2, idx1, idx2 = ctx.saved_tensors + device = grad_dist1.device + grad_dist1 = grad_dist1.contiguous() + grad_dist2 = grad_dist2.contiguous() + grad_xyz1 = torch.zeros(xyz1.size()).to(device) + grad_xyz2 = torch.zeros(xyz2.size()).to(device) + + ext_module.chamfer_distance_backward(xyz1, xyz2, grad_xyz1, grad_xyz2, + grad_dist1, grad_dist2, idx1, + idx2) + return grad_xyz1, grad_xyz2 + + +chamfer_distance = ChamferDistanceFunction.apply diff --git a/mmcv/ops/contour_expand.py b/mmcv/ops/contour_expand.py index ea1111e..7184609 100644 --- a/mmcv/ops/contour_expand.py +++ b/mmcv/ops/contour_expand.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Union + import numpy as np import torch @@ -7,21 +9,22 @@ from ..utils import ext_loader ext_module = ext_loader.load_ext('_ext', ['contour_expand']) -def contour_expand(kernel_mask, internal_kernel_label, min_kernel_area, - kernel_num): +def contour_expand(kernel_mask: Union[np.array, torch.Tensor], + internal_kernel_label: Union[np.array, torch.Tensor], + min_kernel_area: int, kernel_num: int) -> list: """Expand kernel contours so that foreground pixels are assigned into instances. - Arguments: - kernel_mask (np.array or Tensor): The instance kernel mask with + Args: + kernel_mask (np.array or torch.Tensor): The instance kernel mask with size hxw. - internal_kernel_label (np.array or Tensor): The instance internal + internal_kernel_label (np.array or torch.Tensor): The instance internal kernel label with size hxw. min_kernel_area (int): The minimum kernel area. kernel_num (int): The instance kernel number. Returns: - label (list): The instance index map with size hxw. + list: The instance index map with size hxw. """ assert isinstance(kernel_mask, (torch.Tensor, np.ndarray)) assert isinstance(internal_kernel_label, (torch.Tensor, np.ndarray)) @@ -42,7 +45,7 @@ def contour_expand(kernel_mask, internal_kernel_label, min_kernel_area, internal_kernel_label, min_kernel_area=min_kernel_area, kernel_num=kernel_num) - label = label.tolist() + label = label.tolist() # type: ignore else: label = ext_module.contour_expand(kernel_mask, internal_kernel_label, min_kernel_area, kernel_num) diff --git a/mmcv/ops/convex_iou.py b/mmcv/ops/convex_iou.py new file mode 100644 index 0000000..5005036 --- /dev/null +++ b/mmcv/ops/convex_iou.py @@ -0,0 +1,52 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Tuple + +import torch + +from ..utils import ext_loader + +ext_module = ext_loader.load_ext('_ext', ['convex_iou', 'convex_giou']) + + +def convex_giou(pointsets: torch.Tensor, + polygons: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]: + """Return generalized intersection-over-union (Jaccard index) between point + sets and polygons. + + Args: + pointsets (torch.Tensor): It has shape (N, 18), + indicating (x1, y1, x2, y2, ..., x9, y9) for each row. + polygons (torch.Tensor): It has shape (N, 8), + indicating (x1, y1, x2, y2, x3, y3, x4, y4) for each row. + + Returns: + tuple[torch.Tensor, torch.Tensor]: The first element is the gious + between point sets and polygons with the shape (N,). The second + element is the gradient of point sets with the shape (N, 18). + """ + output = pointsets.new_zeros((pointsets.size(0), 19)) + ext_module.convex_giou(pointsets, polygons, output) + convex_giou = output[:, -1] + points_grad = output[:, 0:-1] + return convex_giou, points_grad + + +def convex_iou(pointsets: torch.Tensor, + polygons: torch.Tensor) -> torch.Tensor: + """Return intersection-over-union (Jaccard index) between point sets and + polygons. + + Args: + pointsets (torch.Tensor): It has shape (N, 18), + indicating (x1, y1, x2, y2, ..., x9, y9) for each row. + polygons (torch.Tensor): It has shape (K, 8), + indicating (x1, y1, x2, y2, x3, y3, x4, y4) for each row. + + Returns: + torch.Tensor: Return the ious between point sets and polygons with the + shape (N, K). + """ + N, K = pointsets.size(0), polygons.size(0) + ious = pointsets.new_zeros((N, K)) + ext_module.convex_iou(pointsets, polygons, ious) + return ious diff --git a/mmcv/ops/corner_pool.py b/mmcv/ops/corner_pool.py index a33d798..17ce249 100644 --- a/mmcv/ops/corner_pool.py +++ b/mmcv/ops/corner_pool.py @@ -1,101 +1,90 @@ # Copyright (c) OpenMMLab. All rights reserved. import torch -from torch import nn +from torch import Tensor, nn from torch.autograd import Function -from ..utils import ext_loader +_mode_dict = {'top': 0, 'bottom': 1, 'left': 2, 'right': 3} -ext_module = ext_loader.load_ext('_ext', [ - 'top_pool_forward', 'top_pool_backward', 'bottom_pool_forward', - 'bottom_pool_backward', 'left_pool_forward', 'left_pool_backward', - 'right_pool_forward', 'right_pool_backward' -]) -_mode_dict = {'top': 0, 'bottom': 1, 'left': 2, 'right': 3} +def _corner_pool(x: Tensor, dim: int, flip: bool) -> Tensor: + size = x.size(dim) + output = x.clone() + + ind = 1 + while ind < size: + if flip: + cur_start = 0 + cur_len = size - ind + next_start = ind + next_len = size - ind + else: + cur_start = ind + cur_len = size - ind + next_start = 0 + next_len = size - ind + + # max_temp should be cloned for backward computation + max_temp = output.narrow(dim, cur_start, cur_len).clone() + cur_temp = output.narrow(dim, cur_start, cur_len) + next_temp = output.narrow(dim, next_start, next_len) + + cur_temp[...] = torch.where(max_temp > next_temp, max_temp, next_temp) + + ind = ind << 1 + + return output class TopPoolFunction(Function): @staticmethod - def symbolic(g, input): + def symbolic(g, input: Tensor) -> Tensor: output = g.op( 'mmcv::MMCVCornerPool', input, mode_i=int(_mode_dict['top'])) return output @staticmethod - def forward(ctx, input): - output = ext_module.top_pool_forward(input) - ctx.save_for_backward(input) - return output - - @staticmethod - def backward(ctx, grad_output): - input, = ctx.saved_tensors - output = ext_module.top_pool_backward(input, grad_output) - return output + def forward(ctx, input: Tensor) -> Tensor: + return _corner_pool(input, 2, True) class BottomPoolFunction(Function): @staticmethod - def symbolic(g, input): + def symbolic(g, input: Tensor) -> Tensor: output = g.op( 'mmcv::MMCVCornerPool', input, mode_i=int(_mode_dict['bottom'])) return output @staticmethod - def forward(ctx, input): - output = ext_module.bottom_pool_forward(input) - ctx.save_for_backward(input) - return output - - @staticmethod - def backward(ctx, grad_output): - input, = ctx.saved_tensors - output = ext_module.bottom_pool_backward(input, grad_output) - return output + def forward(ctx, input: Tensor) -> Tensor: + return _corner_pool(input, 2, False) class LeftPoolFunction(Function): @staticmethod - def symbolic(g, input): + def symbolic(g, input: Tensor) -> Tensor: output = g.op( 'mmcv::MMCVCornerPool', input, mode_i=int(_mode_dict['left'])) return output @staticmethod - def forward(ctx, input): - output = ext_module.left_pool_forward(input) - ctx.save_for_backward(input) - return output - - @staticmethod - def backward(ctx, grad_output): - input, = ctx.saved_tensors - output = ext_module.left_pool_backward(input, grad_output) - return output + def forward(ctx, input: Tensor) -> Tensor: + return _corner_pool(input, 3, True) class RightPoolFunction(Function): @staticmethod - def symbolic(g, input): + def symbolic(g, input: Tensor) -> Tensor: output = g.op( 'mmcv::MMCVCornerPool', input, mode_i=int(_mode_dict['right'])) return output @staticmethod - def forward(ctx, input): - output = ext_module.right_pool_forward(input) - ctx.save_for_backward(input) - return output - - @staticmethod - def backward(ctx, grad_output): - input, = ctx.saved_tensors - output = ext_module.right_pool_backward(input, grad_output) - return output + def forward(ctx, input: Tensor) -> Tensor: + return _corner_pool(input, 3, False) class CornerPool(nn.Module): @@ -104,11 +93,13 @@ class CornerPool(nn.Module): Corner Pooling is a new type of pooling layer that helps a convolutional network better localize corners of bounding boxes. - Please refer to https://arxiv.org/abs/1808.01244 for more details. + Please refer to `CornerNet: Detecting Objects as Paired Keypoints + `_ for more details. + Code is modified from https://github.com/princeton-vl/CornerNet-Lite. Args: - mode(str): Pooling orientation for the pooling layer + mode (str): Pooling orientation for the pooling layer - 'bottom': Bottom Pooling - 'left': Left Pooling @@ -133,13 +124,13 @@ class CornerPool(nn.Module): 'top': (2, True), } - def __init__(self, mode): - super(CornerPool, self).__init__() + def __init__(self, mode: str): + super().__init__() assert mode in self.pool_functions self.mode = mode - self.corner_pool = self.pool_functions[mode] + self.corner_pool: Function = self.pool_functions[mode] - def forward(self, x): + def forward(self, x: Tensor) -> Tensor: if torch.__version__ != 'parrots' and torch.__version__ >= '1.5.0': if torch.onnx.is_in_onnx_export(): assert torch.__version__ >= '1.7.0', \ @@ -158,4 +149,8 @@ class CornerPool(nn.Module): pool_tensor = pool_tensor.flip(dim) return pool_tensor else: - return self.corner_pool.apply(x) + if torch.onnx.is_in_onnx_export(): + return self.corner_pool.apply(x) + else: + dim, flip = self.cummax_dim_flip[self.mode] + return _corner_pool(x, dim, flip) diff --git a/mmcv/ops/correlation.py b/mmcv/ops/correlation.py index 3d0b79c..319b764 100644 --- a/mmcv/ops/correlation.py +++ b/mmcv/ops/correlation.py @@ -1,4 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +from typing import Tuple + import torch from torch import Tensor, nn from torch.autograd import Function @@ -15,14 +17,14 @@ class CorrelationFunction(Function): @staticmethod def forward(ctx, - input1, - input2, - kernel_size=1, - max_displacement=1, - stride=1, - padding=1, - dilation=1, - dilation_patch=1): + input1: Tensor, + input2: Tensor, + kernel_size: int = 1, + max_displacement: int = 1, + stride: int = 1, + padding: int = 1, + dilation: int = 1, + dilation_patch: int = 1) -> Tensor: ctx.save_for_backward(input1, input2) @@ -60,7 +62,9 @@ class CorrelationFunction(Function): @staticmethod @once_differentiable - def backward(ctx, grad_output): + def backward( + ctx, grad_output: Tensor + ) -> Tuple[Tensor, Tensor, None, None, None, None, None, None]: input1, input2 = ctx.saved_tensors kH, kW = ctx.kernel_size diff --git a/mmcv/ops/csrc/README.md b/mmcv/ops/csrc/README.md index 3bc0200..dbc82b5 100644 --- a/mmcv/ops/csrc/README.md +++ b/mmcv/ops/csrc/README.md @@ -13,11 +13,19 @@ This folder contains all non-python code for MMCV custom ops. Please follow the │ ├── pytorch_cpp_helper.hpp │ ├── pytorch_cuda_helper.hpp │ ├── pytorch_device_registry.hpp -│   └── cuda -│   ├── common_cuda_helper.hpp -│   ├── parrots_cudawarpfunction.cuh -│   ├── ... -│   └── ops_cuda_kernel.cuh +│   ├── cuda +│   │ ├── common_cuda_helper.hpp +│   │ ├── parrots_cudawarpfunction.cuh +│   │ ├── ... +│   │ └── ops_cuda_kernel.cuh +|   ├── mps +│   │ ├── MPSLibrary.h +│   │ ├── ... +│   │ └── MPSUtils.h +|   ├── mlu +│   │ └── ... +|   └── utils +│   │ └── ... ├── onnxruntime │   ├── onnxruntime_register.h │   ├── onnxruntime_session_options_config_keys.h @@ -41,9 +49,15 @@ This folder contains all non-python code for MMCV custom ops. Please follow the │   ├── cuda │   │   ├── ... │   │   └── ops_cuda.cu -│   └── cpu +│   ├── cpu +│   │   ├── ... +│   │   └── ops.cpp +│   ├── mps +│   │   ├── ... +│   |   └── op_mps.mm +│   └── mlu │      ├── ... -│      └── ops.cpp +│      └── op_mlu.cpp └── tensorrt ├── trt_cuda_helper.cuh ├── trt_plugin_helper.hpp @@ -63,108 +77,113 @@ This folder contains all non-python code for MMCV custom ops. Please follow the - `common`: This directory contains all tools and shared codes. - `cuda`: The cuda kernels which can be shared by all backends. **HIP** kernel is also here since they have similar syntax. -- `onnxruntime`: **ONNX Runtime** support for custom ops. + - `mps`: The tools used to support MPS ops. **NOTE** that MPS support is **experimental**. + - `mlu`: The MLU kernels used to support [Cambricon](https://www.cambricon.com/) device. + - `utils`: The kernels and utils of spconv. +- `onnxruntime`: **ONNX Runtime** support for custom ops. Has been deprecated, please try the latest custom ops in [MMDeploy](https://github.com/open-mmlab/mmdeploy). - `cpu`: CPU implementation of supported ops. - `parrots`: **Parrots** is a deep learning frame for model training and inference. Parrots custom ops are placed in this directory. - `pytorch`: **PyTorch** custom ops are supported by binding C++ to Python with **pybind11**. The ops implementation and binding codes are placed in this directory. - `cuda`: This directory contains cuda kernel launchers, which feed memory pointers of tensor to the cuda kernel in `common/cuda`. The launchers provide c++ interface of cuda implementation of corresponding custom ops. - `cpu`: This directory contain cpu implementations of corresponding custom ops. -- `tensorrt`: **TensorRT** support for custom ops. + - `mlu`: This directory contain launchers of each MLU kernels. + - `mps`: MPS ops implementation and launchers. +- `tensorrt`: **TensorRT** support for custom ops. Has been deprecated, please try the latest custom ops in [MMDeploy](https://github.com/open-mmlab/mmdeploy). - `plugins`: This directory contains the implementation of the supported custom ops. Some ops might also use shared cuda kernel in `common/cuda`. ## How to add new PyTorch ops? 1. (Optional) Add shared kernel in `common` to support special hardware platform. - ```c++ - // src/common/cuda/new_ops_cuda_kernel.cuh - - template - __global__ void new_ops_forward_cuda_kernel(const T* input, T* output, ...) { - // forward here - } - - ``` - - Add cuda kernel launcher in `pytorch/cuda`. - - ```c++ - // src/pytorch/cuda - #include - - void NewOpsForwardCUDAKernelLauncher(Tensor input, Tensor output, ...){ - // initialize - at::cuda::CUDAGuard device_guard(input.device()); - cudaStream_t stream = at::cuda::getCurrentCUDAStream(); - ... - AT_DISPATCH_FLOATING_TYPES_AND_HALF( - input.scalar_type(), "new_ops_forward_cuda_kernel", ([&] { - new_ops_forward_cuda_kernel - <<>>( - input.data_ptr(), output.data_ptr(),...); - })); - AT_CUDA_CHECK(cudaGetLastError()); - } - ``` + ```c++ + // src/common/cuda/new_ops_cuda_kernel.cuh + + template + __global__ void new_ops_forward_cuda_kernel(const T* input, T* output, ...) { + // forward here + } + + ``` + + Add cuda kernel launcher in `pytorch/cuda`. + + ```c++ + // src/pytorch/cuda + #include + + void NewOpsForwardCUDAKernelLauncher(Tensor input, Tensor output, ...){ + // initialize + at::cuda::CUDAGuard device_guard(input.device()); + cudaStream_t stream = at::cuda::getCurrentCUDAStream(); + ... + AT_DISPATCH_FLOATING_TYPES_AND_HALF( + input.scalar_type(), "new_ops_forward_cuda_kernel", ([&] { + new_ops_forward_cuda_kernel + <<>>( + input.data_ptr(), output.data_ptr(),...); + })); + AT_CUDA_CHECK(cudaGetLastError()); + } + ``` 2. Register implementation for different devices. - ```c++ - // src/pytorch/cuda/cudabind.cpp - ... + ```c++ + // src/pytorch/cuda/cudabind.cpp + ... - Tensor new_ops_forward_cuda(Tensor input, Tensor output, ...){ - // implement cuda forward here - // use `NewOpsForwardCUDAKernelLauncher` here - } - // declare interface here. - Tensor new_ops_forward_impl(Tensor input, Tensor output, ...); - // register the implementation for given device (CUDA here). - REGISTER_DEVICE_IMPL(new_ops_forward_impl, CUDA, new_ops_forward_cuda); - ``` + Tensor new_ops_forward_cuda(Tensor input, Tensor output, ...){ + // implement cuda forward here + // use `NewOpsForwardCUDAKernelLauncher` here + } + // declare interface here. + Tensor new_ops_forward_impl(Tensor input, Tensor output, ...); + // register the implementation for given device (CUDA here). + REGISTER_DEVICE_IMPL(new_ops_forward_impl, CUDA, new_ops_forward_cuda); + ``` 3. Add ops implementation in `pytorch` directory. Select different implementations according to device type. - ```c++ - // src/pytorch/new_ops.cpp - Tensor new_ops_forward_impl(Tensor input, Tensor output, ...){ - // dispatch the implementation according to the device type of input. - DISPATCH_DEVICE_IMPL(new_ops_forward_impl, input, output, ...); - } - ... + ```c++ + // src/pytorch/new_ops.cpp + Tensor new_ops_forward_impl(Tensor input, Tensor output, ...){ + // dispatch the implementation according to the device type of input. + DISPATCH_DEVICE_IMPL(new_ops_forward_impl, input, output, ...); + } + ... - Tensor new_ops_forward(Tensor input, Tensor output, ...){ - return new_ops_forward_impl(input, output, ...); - } - ``` + Tensor new_ops_forward(Tensor input, Tensor output, ...){ + return new_ops_forward_impl(input, output, ...); + } + ``` 4. Binding the implementation in `pytorch/pybind.cpp` - ```c++ - // src/pytorch/pybind.cpp + ```c++ + // src/pytorch/pybind.cpp - ... + ... - Tensor new_ops_forward(Tensor input, Tensor output, ...); + Tensor new_ops_forward(Tensor input, Tensor output, ...); - ... + ... - // bind with pybind11 - m.def("new_ops_forward", &new_ops_forward, "new_ops_forward", - py::arg("input"), py::arg("output"), ...); + // bind with pybind11 + m.def("new_ops_forward", &new_ops_forward, "new_ops_forward", + py::arg("input"), py::arg("output"), ...); - ... + ... - ``` + ``` 5. Build MMCV again. Enjoy new ops in python - ```python - from ..utils import ext_loader - ext_module = ext_loader.load_ext('_ext', ['new_ops_forward']) + ```python + from ..utils import ext_loader + ext_module = ext_loader.load_ext('_ext', ['new_ops_forward']) - ... + ... - ext_module.new_ops_forward(input, output, ...) + ext_module.new_ops_forward(input, output, ...) - ``` + ``` diff --git a/mmcv/ops/csrc/common/box_iou_rotated_utils.hpp b/mmcv/ops/csrc/common/box_iou_rotated_utils.hpp index 67190dc..243200e 100644 --- a/mmcv/ops/csrc/common/box_iou_rotated_utils.hpp +++ b/mmcv/ops/csrc/common/box_iou_rotated_utils.hpp @@ -220,6 +220,10 @@ HOST_DEVICE_INLINE int convex_hull_graham(const Point (&p)[24], return temp > 0; } }); + // compute distance to origin after sort, since the points are now different. + for (int i = 0; i < num_in; i++) { + dist[i] = dot_2d(q[i], q[i]); + } #endif // Step 4: diff --git a/mmcv/ops/csrc/common/cuda/active_rotated_filter_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/active_rotated_filter_cuda_kernel.cuh new file mode 100644 index 0000000..36e4110 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/active_rotated_filter_cuda_kernel.cuh @@ -0,0 +1,59 @@ +// Copyright (c) OpenMMLab. All rights reserved. +// Modified from +// https://github.com/csuhan/s2anet/blob/master/mmdet/ops/orn/src/cuda/ActiveRotatingFilter_cuda.cu +#ifndef ACTIVE_ROTATED_FILTER_CUDA_KERNEL_CUH +#define ACTIVE_ROTATED_FILTER_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +template +__global__ void active_rotated_filter_forward_cuda_kernel( + const int nthreads, const scalar_t* weight_data, const int* indices_data, + const int num_input_planes, const int num_output_planes, + const int num_orientations, const int num_rotations, const int nEntry, + scalar_t* output_data) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + int l = index % nEntry; + int j = (index / nEntry) % num_input_planes; + int i = index / nEntry / num_input_planes; + int k; + scalar_t val = *(weight_data + index); + for (k = 0; k < num_rotations; k++) { + int idx = (int)(*(indices_data + l * num_rotations + k)) - 1; + scalar_t* target = output_data + + i * (num_rotations * num_input_planes * nEntry) + + k * (num_input_planes * nEntry) + j * (nEntry) + idx; + *target = val; + } + } +} + +template +__global__ void active_rotated_filter_backward_cuda_kernel( + const int nthreads, const scalar_t* gradWeight_data, + const int* indices_data, const int num_input_planes, + const int num_output_planes, const int num_orientations, + const int num_rotations, const int nEntry, scalar_t* weight_data) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + int l = index % nEntry; + int j = (index / nEntry) % num_input_planes; + int i = index / nEntry / num_input_planes; + int k; + scalar_t* val = weight_data + index; + *val = 0; + scalar_t tmp = 0; + for (k = 0; k < num_rotations; k++) { + int idx = (int)(*(indices_data + l * num_rotations + k)) - 1; + scalar_t target = + *(gradWeight_data + i * (num_rotations * num_input_planes * nEntry) + + k * (num_input_planes * nEntry) + j * (nEntry) + idx); + tmp = tmp + target; + } + *val = tmp; + } +} +#endif // ACTIVE_ROTATED_FILTER_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/assign_score_withk_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/assign_score_withk_cuda_kernel.cuh index 056d123..9f92508 100644 --- a/mmcv/ops/csrc/common/cuda/assign_score_withk_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/assign_score_withk_cuda_kernel.cuh @@ -22,34 +22,34 @@ __global__ void assign_score_withk_forward_cuda_kernel( const int O, const int aggregate, const T* points, const T* centers, const T* scores, const int64_t* knn_idx, T* output) { // ----- parallel loop for B, N1, K and O --------- - long i = blockIdx.x * blockDim.x + threadIdx.x; - if (i >= B * N1 * K * O) return; - // ------- loop for M ---------- - const int b = (int)(i / (O * N1 * K)); - const int o = (int)(i % (O * N1 * K) / (N1 * K)); - const int n = (int)(i % (N1 * K) / K); - const int k = (int)(i % K); - const int cn = (int)knn_idx[b * K * N1 + n * K + - 0]; // The first neighbor is the center point - const int kn = (int)knn_idx[b * K * N1 + n * K + k]; - if (kn >= N0 || - kn < 0) { // if index overflows, it is out of the neighborhood range - return; - } - assert(b < B); - assert(kn < N0); - assert(cn < N0); - assert(o < O); - assert(n < N1); - const int out_idx = b * N1 * O * K + o * N1 * K + n * K + k; - T val = output[out_idx]; - for (int m = 0; m < M; m++) { - val += points[b * N0 * M * O + kn * M * O + m * O + o] * - scores[b * N1 * K * M + n * K * M + k * M + m] - - centers[b * N0 * M * O + cn * M * O + m * O + o] * - scores[b * N1 * K * M + n * K * M + k * M + m]; + CUDA_1D_KERNEL_LOOP(i, B * O * N1 * K) { + // ------- loop for M ---------- + const int b = (int)(i / (O * N1 * K)); + const int o = (int)(i % (O * N1 * K) / (N1 * K)); + const int n = (int)(i % (N1 * K) / K); + const int k = (int)(i % K); + const int cn = (int)knn_idx[b * K * N1 + n * K + + 0]; // The first neighbor is the center point + const int kn = (int)knn_idx[b * K * N1 + n * K + k]; + if (kn >= N0 || + kn < 0) { // if index overflows, it is out of the neighborhood range + return; + } + assert(b < B); + assert(kn < N0); + assert(cn < N0); + assert(o < O); + assert(n < N1); + const int out_idx = b * N1 * O * K + o * N1 * K + n * K + k; + T val = output[out_idx]; + for (int m = 0; m < M; m++) { + val += points[b * N0 * M * O + kn * M * O + m * O + o] * + scores[b * N1 * K * M + n * K * M + k * M + m] - + centers[b * N0 * M * O + cn * M * O + m * O + o] * + scores[b * N1 * K * M + n * K * M + k * M + m]; + } + output[out_idx] = val; } - output[out_idx] = val; } template @@ -58,27 +58,27 @@ __global__ void assign_score_withk_points_backward_cuda_kernel( const int O, const int aggregate, const T* grad_out, const T* scores, const int64_t* knn_idx, T* grad_points, T* grad_centers) { // ----- parallel loop for B, M, O --------- - long i = blockIdx.x * blockDim.x + threadIdx.x; - if (i >= B * M * O) return; - int b = (int)(i / (M * O)); - int m = (int)(i % (M * O) / O); - int o = (int)(i % O); + CUDA_1D_KERNEL_LOOP(i, B * M * O) { + int b = (int)(i / (M * O)); + int m = (int)(i % (M * O) / O); + int o = (int)(i % O); - // ----- loop for N,K --------- - for (int n = 0; n < N; n++) { - for (int k = 0; k < K; k++) { - int kn = knn_idx[b * N * K + n * K + k]; - int cn = knn_idx[b * N * K + n * K + 0]; - if (kn >= N0 || - kn < 0) { // if index overflows, it is out of the neighborhood range - continue; + // ----- loop for N,K --------- + for (int n = 0; n < N; n++) { + for (int k = 0; k < K; k++) { + int kn = knn_idx[b * N * K + n * K + k]; + int cn = knn_idx[b * N * K + n * K + 0]; + if (kn >= N0 || kn < 0) { // if index overflows, it is out of the + // neighborhood range + continue; + } + atomicAdd(grad_points + b * N0 * M * O + kn * M * O + m * O + o, + scores[b * N * K * M + n * K * M + k * M + m] * + grad_out[b * O * N * K + o * N * K + n * K + k]); + atomicAdd(grad_centers + b * N0 * M * O + cn * M * O + m * O + o, + -scores[b * N * K * M + n * K * M + k * M + m] * + grad_out[b * O * N * K + o * N * K + n * K + k]); } - atomicAdd(grad_points + b * N0 * M * O + kn * M * O + m * O + o, - scores[b * N * K * M + n * K * M + k * M + m] * - grad_out[b * O * N * K + o * N * K + n * K + k]); - atomicAdd(grad_centers + b * N0 * M * O + cn * M * O + m * O + o, - -scores[b * N * K * M + n * K * M + k * M + m] * - grad_out[b * O * N * K + o * N * K + n * K + k]); } } } @@ -89,28 +89,28 @@ __global__ void assign_score_withk_scores_backward_cuda_kernel( const int O, const int aggregate, const T* grad_out, const T* points, const T* centers, const int64_t* knn_idx, T* grad_scores) { // ----- parallel loop for B, N, K, M --------- - long i = blockIdx.x * blockDim.x + threadIdx.x; - if (i >= B * N * K * M) return; - const int b = (int)(i / (N * M * K)); - const int n = (int)(i % (N * M * K) / M / K); - const int k = (int)(i % (M * K) / M); - const int m = (int)(i % M); - const int cn = knn_idx[b * N * K + n * K + 0]; - const int kn = knn_idx[b * N * K + n * K + k]; - if (kn >= N0 || - kn < 0) { // if index overflows, it is out of the neighborhood range - return; - } + CUDA_1D_KERNEL_LOOP(i, B * N * K * M) { + const int b = (int)(i / (N * M * K)); + const int n = (int)(i % (N * M * K) / M / K); + const int k = (int)(i % (M * K) / M); + const int m = (int)(i % M); + const int cn = knn_idx[b * N * K + n * K + 0]; + const int kn = knn_idx[b * N * K + n * K + k]; + if (kn >= N0 || + kn < 0) { // if index overflows, it is out of the neighborhood range + return; + } - // -------------- loop for O ------------------------ - const int out_idx = b * N * K * M + n * K * M + k * M + m; - T val = grad_scores[out_idx]; - for (int o = 0; o < O; o++) { - val += (points[b * N0 * M * O + kn * M * O + m * O + o] - - centers[b * N0 * M * O + cn * M * O + m * O + o]) * - grad_out[b * O * N * K + o * N * K + n * K + k]; + // -------------- loop for O ------------------------ + const int out_idx = b * N * K * M + n * K * M + k * M + m; + T val = grad_scores[out_idx]; + for (int o = 0; o < O; o++) { + val += (points[b * N0 * M * O + kn * M * O + m * O + o] - + centers[b * N0 * M * O + cn * M * O + m * O + o]) * + grad_out[b * O * N * K + o * N * K + n * K + k]; + } + grad_scores[out_idx] = val; } - grad_scores[out_idx] = val; } #endif // ASSIGN_SCORE_WITHK_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/ball_query_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/ball_query_cuda_kernel.cuh index ba2af01..632b5c4 100644 --- a/mmcv/ops/csrc/common/cuda/ball_query_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/ball_query_cuda_kernel.cuh @@ -21,35 +21,36 @@ __global__ void ball_query_forward_cuda_kernel(int b, int n, int m, // output: // idx: (B, M, nsample) int bs_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= b || pt_idx >= m) return; + CUDA_1D_KERNEL_LOOP(pt_idx, m) { + if (bs_idx >= b) return; - new_xyz += bs_idx * m * 3 + pt_idx * 3; - xyz += bs_idx * n * 3; - idx += bs_idx * m * nsample + pt_idx * nsample; + new_xyz += bs_idx * m * 3 + pt_idx * 3; + xyz += bs_idx * n * 3; + idx += bs_idx * m * nsample + pt_idx * nsample; - float max_radius2 = max_radius * max_radius; - float min_radius2 = min_radius * min_radius; - T new_x = new_xyz[0]; - T new_y = new_xyz[1]; - T new_z = new_xyz[2]; + float max_radius2 = max_radius * max_radius; + float min_radius2 = min_radius * min_radius; + T new_x = new_xyz[0]; + T new_y = new_xyz[1]; + T new_z = new_xyz[2]; - int cnt = 0; - for (int k = 0; k < n; ++k) { - T x = xyz[k * 3 + 0]; - T y = xyz[k * 3 + 1]; - T z = xyz[k * 3 + 2]; - T d2 = (new_x - x) * (new_x - x) + (new_y - y) * (new_y - y) + - (new_z - z) * (new_z - z); - if (d2 == 0 || (d2 >= min_radius2 && d2 < max_radius2)) { - if (cnt == 0) { - for (int l = 0; l < nsample; ++l) { - idx[l] = k; + int cnt = 0; + for (int k = 0; k < n; ++k) { + T x = xyz[k * 3 + 0]; + T y = xyz[k * 3 + 1]; + T z = xyz[k * 3 + 2]; + T d2 = (new_x - x) * (new_x - x) + (new_y - y) * (new_y - y) + + (new_z - z) * (new_z - z); + if (d2 == 0 || (d2 >= min_radius2 && d2 < max_radius2)) { + if (cnt == 0) { + for (int l = 0; l < nsample; ++l) { + idx[l] = k; + } } + idx[cnt] = k; + ++cnt; + if (cnt >= nsample) break; } - idx[cnt] = k; - ++cnt; - if (cnt >= nsample) break; } } } diff --git a/mmcv/ops/csrc/common/cuda/bbox_overlaps_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/bbox_overlaps_cuda_kernel.cuh index 249c9e8..15bd91e 100644 --- a/mmcv/ops/csrc/common/cuda/bbox_overlaps_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/bbox_overlaps_cuda_kernel.cuh @@ -8,6 +8,27 @@ #include "pytorch_cuda_helper.hpp" #endif +template +__device__ __forceinline__ void load_bbox(const T* bbox, const int base, T& x1, + T& y1, T& x2, T& y2) { + x1 = bbox[base]; + y1 = bbox[base + 1]; + x2 = bbox[base + 2]; + y2 = bbox[base + 3]; +} + +template <> +__device__ __forceinline__ void load_bbox(const float* bbox, + const int base, float& x1, + float& y1, float& x2, + float& y2) { + const float4 bbox_offset = reinterpret_cast(bbox + base)[0]; + x1 = bbox_offset.x; + y1 = bbox_offset.y; + x2 = bbox_offset.z; + y2 = bbox_offset.w; +} + template __global__ void bbox_overlaps_cuda_kernel(const T* bbox1, const T* bbox2, T* ious, const int num_bbox1, @@ -16,69 +37,111 @@ __global__ void bbox_overlaps_cuda_kernel(const T* bbox1, const T* bbox2, const int offset) { if (aligned) { CUDA_1D_KERNEL_LOOP(index, num_bbox1) { - int b1 = index; - int b2 = index; - - int base1 = b1 * 4; - T b1_x1 = bbox1[base1]; - T b1_y1 = bbox1[base1 + 1]; - T b1_x2 = bbox1[base1 + 2]; - T b1_y2 = bbox1[base1 + 3]; - T b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset); - - int base2 = b2 * 4; - T b2_x1 = bbox2[base2]; - T b2_y1 = bbox2[base2 + 1]; - T b2_x2 = bbox2[base2 + 2]; - T b2_y2 = bbox2[base2 + 3]; - T b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset); - - T left = fmaxf(b1_x1, b2_x1), right = fminf(b1_x2, b2_x2); - T top = fmaxf(b1_y1, b2_y1), bottom = fminf(b1_y2, b2_y2); - T width = fmaxf(right - left + offset, 0.f); - T height = fmaxf(bottom - top + offset, 0.f); - T interS = width * height; - T baseS = 1.0; - if (mode == 0) { - baseS = fmaxf(b1_area + b2_area - interS, T(offset)); - } else if (mode == 1) { - baseS = fmaxf(b1_area, T(offset)); - } + const int b1 = index; + const int b2 = index; + + const int base1 = b1 << 2; // b1 * 4 + T b1_x1, b1_y1, b1_x2, b1_y2; + load_bbox(bbox1, base1, b1_x1, b1_y1, b1_x2, b1_y2); + const T b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset); + + const int base2 = b2 << 2; // b2 * 4 + T b2_x1, b2_y1, b2_x2, b2_y2; + load_bbox(bbox2, base2, b2_x1, b2_y1, b2_x2, b2_y2); + const T b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset); + + const T left = fmaxf(b1_x1, b2_x1), right = fminf(b1_x2, b2_x2); + const T top = fmaxf(b1_y1, b2_y1), bottom = fminf(b1_y2, b2_y2); + const T width = fmaxf(right - left + offset, 0.f); + const T height = fmaxf(bottom - top + offset, 0.f); + const T interS = width * height; + + const T baseS = + fmaxf(mode == 0 ? b1_area + b2_area - interS : b1_area, T(offset)); ious[index] = interS / baseS; } } else { CUDA_1D_KERNEL_LOOP(index, num_bbox1 * num_bbox2) { - int b1 = index / num_bbox2; - int b2 = index % num_bbox2; - - int base1 = b1 * 4; - T b1_x1 = bbox1[base1]; - T b1_y1 = bbox1[base1 + 1]; - T b1_x2 = bbox1[base1 + 2]; - T b1_y2 = bbox1[base1 + 3]; - T b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset); - - int base2 = b2 * 4; - T b2_x1 = bbox2[base2]; - T b2_y1 = bbox2[base2 + 1]; - T b2_x2 = bbox2[base2 + 2]; - T b2_y2 = bbox2[base2 + 3]; - T b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset); - - T left = fmaxf(b1_x1, b2_x1), right = fminf(b1_x2, b2_x2); - T top = fmaxf(b1_y1, b2_y1), bottom = fminf(b1_y2, b2_y2); - T width = fmaxf(right - left + offset, 0.f); - T height = fmaxf(bottom - top + offset, 0.f); - T interS = width * height; - T baseS = 1.0; - if (mode == 0) { - baseS = fmaxf(b1_area + b2_area - interS, T(offset)); - } else if (mode == 1) { - baseS = fmaxf(b1_area, T(offset)); - } + const int b1 = index / num_bbox2; + const int b2 = index % num_bbox2; + + const int base1 = b1 << 2; // b1 * 4 + T b1_x1, b1_y1, b1_x2, b1_y2; + load_bbox(bbox1, base1, b1_x1, b1_y1, b1_x2, b1_y2); + const T b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset); + + const int base2 = b2 << 2; // b2 * 4 + T b2_x1, b2_y1, b2_x2, b2_y2; + load_bbox(bbox2, base2, b2_x1, b2_y1, b2_x2, b2_y2); + const T b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset); + + const T left = fmaxf(b1_x1, b2_x1), right = fminf(b1_x2, b2_x2); + const T top = fmaxf(b1_y1, b2_y1), bottom = fminf(b1_y2, b2_y2); + const T width = fmaxf(right - left + offset, 0.f); + const T height = fmaxf(bottom - top + offset, 0.f); + const T interS = width * height; + + const T baseS = + fmaxf(mode == 0 ? b1_area + b2_area - interS : b1_area, T(offset)); ious[index] = interS / baseS; } } } +#if __CUDA_ARCH__ >= 530 +__device__ __forceinline__ __half __half_area(const __half x1, const __half y1, + const __half x2, const __half y2, + const __half offset) { + const __half half_w = __hadd(__hsub(x2, x1), offset); + const __half half_h = __hadd(__hsub(y2, y1), offset); + return __hmul(half_w, half_h); +} + +__device__ __forceinline__ __half __half_max(const __half a, const __half b) { + return __hge(a, b) ? a : b; +} + +__device__ __forceinline__ __half __half_min(const __half a, const __half b) { + return __hle(a, b) ? a : b; +} + +// fp16 won't provide much increase when aligned==true. It is useful when +// aligned==false, which would give you ~40% bonus. +__device__ void bbox_overlaps_cuda_kernel_half( + const __half* bbox1, const __half* bbox2, __half* ious, const int num_bbox1, + const int num_bbox2, const int mode, const bool aligned, const int offset) { + const int num_output = aligned ? num_bbox1 : num_bbox1 * num_bbox2; + const __half h_offset = __int2half_rn(offset); + CUDA_1D_KERNEL_LOOP(index, num_output) { + const int b1 = aligned ? index : index / num_bbox2; + const int b2 = aligned ? index : index % num_bbox2; + + const int base1 = b1 << 2; + __half b1_x1, b1_y1, b1_x2, b1_y2; + load_bbox<__half>(bbox1, base1, b1_x1, b1_y1, b1_x2, b1_y2); + const __half b1_area = __half_area(b1_x1, b1_y1, b1_x2, b1_y2, h_offset); + + const int base2 = b2 << 2; + __half b2_x1, b2_y1, b2_x2, b2_y2; + load_bbox<__half>(bbox2, base2, b2_x1, b2_y1, b2_x2, b2_y2); + const __half b2_area = __half_area(b2_x1, b2_y1, b2_x2, b2_y2, h_offset); + + const __half left = __half_max(b1_x1, b2_x1), + right = __half_min(b1_x2, b2_x2); + const __half top = __half_max(b1_y1, b2_y1), + bottom = __half_min(b1_y2, b2_y2); + const __half width = + __half_max(__hadd(__hsub(right, left), h_offset), __float2half(0.f)); + const __half height = + __half_max(__hadd(__hsub(bottom, top), h_offset), __float2half(0.f)); + const __half interS = __hmul(width, height); + + const __half baseS = __half_max( + mode == 0 ? __hsub(__hadd(b1_area, b2_area), interS) : b1_area, + h_offset); + ious[index] = __hdiv(interS, baseS); + } +} +#endif // __CUDA_ARCH__ >= 530 + #endif // BBOX_OVERLAPS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/carafe_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/carafe_cuda_kernel.cuh index 07beeda..e7fa990 100644 --- a/mmcv/ops/csrc/common/cuda/carafe_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/carafe_cuda_kernel.cuh @@ -32,12 +32,12 @@ __device__ inline int Loc2Index(const int n, const int c, const int h, #ifndef HIP_DIFF /* TODO: move this to a common place */ template -__device__ inline scalar_t mmcv_min(scalar_t a, scalar_t b) { +__device__ inline scalar_t min(scalar_t a, scalar_t b) { return a < b ? a : b; } template -__device__ inline scalar_t mmcv_max(scalar_t a, scalar_t b) { +__device__ inline scalar_t max(scalar_t a, scalar_t b) { return a > b ? a : b; } #endif diff --git a/mmcv/ops/csrc/common/cuda/chamfer_distance_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/chamfer_distance_cuda_kernel.cuh new file mode 100644 index 0000000..89feea4 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/chamfer_distance_cuda_kernel.cuh @@ -0,0 +1,101 @@ +// Copyright (c) OpenMMLab. All rights reserved. +// Modified from +// https://github.com/chrdiller/pyTorchChamferDistance/blob/master/chamfer_distance/chamfer_distance.cu +#ifndef CHAMFER_DISTANCE_CUDA_KERNEL_CUH +#define CHAMFER_DISTANCE_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +#define MAX_SHARED_SCALAR_T 6144 // 49152 / 8 = 6144 + +template +__global__ void chamfer_distance_forward_cuda_kernel(int b, int n, + const scalar_t* xyz, int m, + const scalar_t* xyz2, + scalar_t* result, + int* result_i) { + __shared__ scalar_t buf[MAX_SHARED_SCALAR_T]; + for (int i = blockIdx.x; i < b; i += gridDim.x) { + for (int k2 = 0; k2 < m; k2 += THREADS_PER_BLOCK) { + int end_k = min(m, k2 + THREADS_PER_BLOCK) - k2; + for (int j = threadIdx.x; j < end_k * 2; j += blockDim.x) { + buf[j] = xyz2[(i * m + k2) * 2 + j]; + } + __syncthreads(); + for (int j = threadIdx.x; j < n; j += blockDim.x * gridDim.y) { + scalar_t x1 = xyz[(i * n + j) * 2 + 0]; + scalar_t y1 = xyz[(i * n + j) * 2 + 1]; + int best_i = 0; + scalar_t best = 1e10; + int end_ka = end_k & (~2); + if (end_ka == THREADS_PER_BLOCK) { + for (int k = 0; k < THREADS_PER_BLOCK; k += 4) { +#pragma unroll + for (int j = 0; j < 4; ++j) { + scalar_t x2 = buf[(k + j) * 2] - x1; + scalar_t y2 = buf[(k + j) * 2 + 1] - y1; + scalar_t d = x2 * x2 + y2 * y2; + if (d < best) { + best = d; + best_i = k + k2 + j; + } + } + } + } else { + for (int k = 0; k < end_ka; k += 4) { +#pragma unroll + for (int j = 0; j < 4; ++j) { + scalar_t x2 = buf[(k + j) * 2] - x1; + scalar_t y2 = buf[(k + j) * 2 + 1] - y1; + scalar_t d = x2 * x2 + y2 * y2; + if (d < best) { + best = d; + best_i = k + k2 + j; + } + } + } + } + for (int k = end_ka; k < end_k; k++) { + scalar_t x2 = buf[k * 2 + 0] - x1; + scalar_t y2 = buf[k * 2 + 1] - y1; + scalar_t d = x2 * x2 + y2 * y2; + if (k == 0 || d < best) { + best = d; + best_i = k + k2; + } + } + if (k2 == 0 || result[(i * n + j)] > best) { + result[(i * n + j)] = best; + result_i[(i * n + j)] = best_i; + } + } + __syncthreads(); + } + } +} + +template +__global__ void chamfer_distance_backward_cuda_kernel( + int b, int n, const scalar_t* xyz1, int m, const scalar_t* xyz2, + const scalar_t* grad_dist1, const int* idx1, scalar_t* grad_xyz1, + scalar_t* grad_xyz2) { + for (int i = blockIdx.x; i < b; i += gridDim.x) { + for (int j = threadIdx.x; j < n; j += blockDim.x * gridDim.y) { + scalar_t x1 = xyz1[(i * n + j) * 2 + 0]; + scalar_t y1 = xyz1[(i * n + j) * 2 + 1]; + int j2 = idx1[i * n + j]; + scalar_t x2 = xyz2[(i * m + j2) * 2 + 0]; + scalar_t y2 = xyz2[(i * m + j2) * 2 + 1]; + scalar_t g = grad_dist1[i * n + j] * 2; + atomicAdd(&(grad_xyz1[(i * n + j) * 2 + 0]), g * (x1 - x2)); + atomicAdd(&(grad_xyz1[(i * n + j) * 2 + 1]), g * (y1 - y2)); + atomicAdd(&(grad_xyz2[(i * m + j2) * 2 + 0]), -(g * (x1 - x2))); + atomicAdd(&(grad_xyz2[(i * m + j2) * 2 + 1]), -(g * (y1 - y2))); + } + } +} +#endif // CHAMFER_DISTANCE_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/common_cuda_helper.hpp b/mmcv/ops/csrc/common/cuda/common_cuda_helper.hpp index dc5df17..b12aa9a 100644 --- a/mmcv/ops/csrc/common/cuda/common_cuda_helper.hpp +++ b/mmcv/ops/csrc/common/cuda/common_cuda_helper.hpp @@ -7,12 +7,20 @@ for (int i = blockIdx.x * blockDim.x + threadIdx.x; i < (n); \ i += blockDim.x * gridDim.x) -#define THREADS_PER_BLOCK 512 +#define CUDA_2D_KERNEL_LOOP(i, n, j, m) \ + for (size_t i = blockIdx.x * blockDim.x + threadIdx.x; i < (n); \ + i += blockDim.x * gridDim.x) \ + for (size_t j = blockIdx.y * blockDim.y + threadIdx.y; j < (m); \ + j += blockDim.y * gridDim.y) + +#define CUDA_2D_KERNEL_BLOCK_LOOP(i, n, j, m) \ + for (size_t i = blockIdx.x; i < (n); i += gridDim.x) \ + for (size_t j = blockIdx.y; j < (m); j += gridDim.y) -#define DIVUP(m, n) ((m) / (n) + ((m) % (n) > 0)) +#define THREADS_PER_BLOCK 512 -inline int GET_BLOCKS(const int N) { - int optimal_block_num = (N + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK; +inline int GET_BLOCKS(const int N, const int num_threads = THREADS_PER_BLOCK) { + int optimal_block_num = (N + num_threads - 1) / num_threads; int max_block_num = 4096; return min(optimal_block_num, max_block_num); } diff --git a/mmcv/ops/csrc/common/cuda/convex_iou_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/convex_iou_cuda_kernel.cuh new file mode 100644 index 0000000..2af96f7 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/convex_iou_cuda_kernel.cuh @@ -0,0 +1,831 @@ +// Copyright (c) OpenMMLab. All rights reserved +#ifndef CONVEX_IOU_CUDA_KERNEL_CUH +#define CONVEX_IOU_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +#define MAXN 100 +#define NMAX 512 +__device__ const double EPS = 1E-8; + +__device__ inline int sig(double d) { return (d > EPS) - (d < -EPS); } + +struct Point { + double x, y; + __device__ Point() {} + __device__ Point(double x, double y) : x(x), y(y) {} +}; + +__device__ inline bool point_same(Point& a, Point& b) { + return sig(a.x - b.x) == 0 && sig(a.y - b.y) == 0; +} + +__device__ inline void swap1(Point* a, Point* b) { + Point temp; + temp.x = a->x; + temp.y = a->y; + + a->x = b->x; + a->y = b->y; + + b->x = temp.x; + b->y = temp.y; +} + +__device__ inline void reverse1(Point* a, const int n) { + for (int i = 0; i < (n - 1) / 2.0; i++) { + Point* j = &(a[i]); + Point* k = &(a[n - 1 - i]); + swap1(j, k); + } +} + +__device__ inline double cross(Point o, Point a, Point b) { + return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y); +} + +__device__ inline double dis(Point a, Point b) { + return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); +} +__device__ inline double area(Point* ps, int n) { + ps[n] = ps[0]; + double res = 0; + for (int i = 0; i < n; i++) { + res += ps[i].x * ps[i + 1].y - ps[i].y * ps[i + 1].x; + } + return res / 2.0; +} +__device__ inline double polygon_area_grad(Point* ps, int n, + int* polygon_to_pred_index, + int n_pred, double* grad_C) { + ps[n] = ps[0]; + double partion_grad[4 * 30 + 2]; + double res = 0; + for (int i = 0; i < n; i++) { + res += ps[i].x * ps[i + 1].y - ps[i].y * ps[i + 1].x; + partion_grad[i * 4 + 2] = ps[i + 1].y; + partion_grad[i * 4 + 3] = -ps[i + 1].x; + if (i != n - 1) { + partion_grad[i * 4 + 4] = -ps[i].y; + partion_grad[i * 4 + 5] = ps[i].x; + } else { + partion_grad[0] = -ps[i].y; + partion_grad[1] = ps[i].x; + } + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < n_pred; j++) { + if (i == polygon_to_pred_index[j]) { + grad_C[2 * polygon_to_pred_index[j + n_pred]] = + (partion_grad[i * 4] + partion_grad[i * 4 + 2]) / 2; + break; + } + } + for (int j = 0; j < n_pred; j++) { + if (i == polygon_to_pred_index[j]) { + grad_C[2 * polygon_to_pred_index[j + n_pred] + 1] = + (partion_grad[i * 4 + 1] + partion_grad[i * 4 + 1 + 2]) / 2; + break; + } + } + } + + return res / 2.0; +} + +__device__ inline int lineCross(Point a, Point b, Point c, Point d, Point& p, + double* cut_grad, int m, int n, int i) { + double s1, s2; + double s2_s1_2; + double ds1_dxc, ds1_dyc, ds2_dxd, ds2_dyd; + double dxp_dxc, dxp_dyc, dxp_dxd, dxp_dyd, dyp_dxc, dyp_dyc, dyp_dxd, dyp_dyd; + s1 = cross(a, b, c); + s2 = cross(a, b, d); + + ds1_dxc = -(b.y - a.y); + ds1_dyc = b.x - a.x; + ds2_dxd = ds1_dxc; + ds2_dyd = ds1_dyc; + s2_s1_2 = (s2 - s1) * (s2 - s1); + + if (sig(s1) == 0 && sig(s2) == 0) return 2; + if (sig(s2 - s1) == 0) return 0; + + dxp_dxc = + ((s2 - d.x * ds1_dxc) * (s2 - s1) - (c.x * s2 - d.x * s1) * (-ds1_dxc)) / + (s2_s1_2); + dxp_dyc = + ((0 - d.x * ds1_dyc) * (s2 - s1) - (c.x * s2 - d.x * s1) * (-ds1_dyc)) / + (s2_s1_2); + dxp_dxd = + ((c.x * ds2_dxd - s1) * (s2 - s1) - (c.x * s2 - d.x * s1) * (ds2_dxd)) / + (s2_s1_2); + dxp_dyd = + ((c.x * ds2_dyd - 0) * (s2 - s1) - (c.x * s2 - d.x * s1) * (ds2_dyd)) / + (s2_s1_2); + + dyp_dxc = + ((0 - d.y * ds1_dxc) * (s2 - s1) - (c.y * s2 - d.y * s1) * (-ds1_dxc)) / + (s2_s1_2); + dyp_dyc = + ((s2 - d.y * ds1_dyc) * (s2 - s1) - (c.y * s2 - d.y * s1) * (-ds1_dyc)) / + (s2_s1_2); + dyp_dxd = + ((c.y * ds2_dxd - 0) * (s2 - s1) - (c.y * s2 - d.y * s1) * (ds2_dxd)) / + (s2_s1_2); + dyp_dyd = + ((c.y * ds2_dyd - s1) * (s2 - s1) - (c.y * s2 - d.y * s1) * (ds2_dyd)) / + (s2_s1_2); + + p.x = (c.x * s2 - d.x * s1) / (s2 - s1); + p.y = (c.y * s2 - d.y * s1) / (s2 - s1); + if (i == n - 1) { + cut_grad[4 * n * m + 4 * i] = dxp_dxc; // + dyp_dxc; + cut_grad[4 * n * m + 4 * i + 1] = dyp_dxc; + cut_grad[4 * n * m + 4 * i + 2] = dxp_dyc; // + dyp_dyc; + cut_grad[4 * n * m + 4 * i + 3] = dyp_dyc; + cut_grad[4 * n * m + 0] = dxp_dxd; // + dyp_dxd; + cut_grad[4 * n * m + 1] = dyp_dxd; + cut_grad[4 * n * m + 2] = dxp_dyd; // + dyp_dyd; + cut_grad[4 * n * m + 3] = dyp_dyd; + } else { + cut_grad[4 * n * m + 4 * i] = dxp_dxc; // + dyp_dxc; + cut_grad[4 * n * m + 4 * i + 1] = dyp_dxc; + cut_grad[4 * n * m + 4 * i + 2] = dxp_dyc; // + dyp_dyc; + cut_grad[4 * n * m + 4 * i + 3] = dyp_dyc; + cut_grad[4 * n * m + 4 * (i + 1)] = dxp_dxd; // + dyp_dxd; + cut_grad[4 * n * m + 4 * (i + 1) + 1] = dyp_dxd; + cut_grad[4 * n * m + 4 * (i + 1) + 2] = dxp_dyd; // + dyp_dyd; + cut_grad[4 * n * m + 4 * (i + 1) + 3] = dyp_dyd; + } + + return 1; +} +__device__ inline void polygon_cut(Point* p, int& n, Point a, Point b, + double* cut_grad) { + Point pp[MAXN]; + double ccur_grad[MAXN] = {}; + int m = 0; + p[n] = p[0]; + int k = n; + for (int i = 0; i < n; i++) { + if (sig(cross(a, b, p[i])) > 0) { + pp[m] = p[i]; + ccur_grad[4 * n * m + 4 * i] = 1.0; + ccur_grad[4 * n * m + 4 * i + 3] = 1.0; + m++; + } + if (sig(cross(a, b, p[i])) != sig(cross(a, b, p[i + 1]))) { + lineCross(a, b, p[i], p[i + 1], pp[m], ccur_grad, m, n, i); + m++; + } + } + + n = 0; + for (int i = 0; i < m; i++) { + if (!i || !(point_same(pp[i], pp[i - 1]))) { + p[n] = pp[i]; + for (int j = 0; j < 4 * k; j++) { + cut_grad[4 * k * n + j] = ccur_grad[4 * k * i + j]; + } + n++; + } + } + + while (n > 1 && point_same(p[n - 1], p[0])) n--; +} + +__device__ inline double intersectArea(Point a, Point b, Point c, Point d, + double* grad_AB, int order, + int convex_n) { + Point o(0, 0); + int res_flag = 0; + int s1 = sig(cross(o, a, b)); + int s2 = sig(cross(o, c, d)); + if (s1 == 0 || s2 == 0) return 0.0; + if (s1 == -1) { + Point* i = &a; + Point* j = &b; + swap1(i, j); + res_flag = 1; + } + if (s2 == -1) { + Point* i = &c; + Point* j = &d; + swap1(i, j); + } + Point p[10] = {o, a, b}; + int n = 3, n0 = 3, n1, n2, n3; + double cut_grad1[MAXN] = {}; + double cut_grad2[MAXN] = {}; + double cut_grad3[MAXN] = {}; + double p1_p_grad[10][10] = {}; + double p2_p1_grad[10][10] = {}; + double p3_p2_grad[10][10] = {}; + + double p3_p1_grad[10][10] = {}; + double p3_p_grad[10][10] = {}; + + // 1 + polygon_cut(p, n, o, c, cut_grad1); + n1 = n; + for (int i = 0; i < n; i++) { + for (int j = 0; j < 4 * n0; j++) { + if (!(j % 2)) { + p1_p_grad[2 * i][j / 2] = cut_grad1[4 * n0 * i + j]; + } else { + p1_p_grad[2 * i + 1][j / 2] = cut_grad1[4 * n0 * i + j]; + } + } + } + + // 2 + polygon_cut(p, n, c, d, cut_grad2); + n2 = n; + for (int i = 0; i < n; i++) { + for (int j = 0; j < 4 * n1; j++) { + if (!(j % 2)) { + p2_p1_grad[2 * i][j / 2] = cut_grad2[4 * n1 * i + j]; + } else { + p2_p1_grad[2 * i + 1][j / 2] = cut_grad2[4 * n1 * i + j]; + } + } + } + // 3 + polygon_cut(p, n, d, o, cut_grad3); + n3 = n; + for (int i = 0; i < n; i++) { + for (int j = 0; j < 4 * n2; j++) { + if (!(j % 2)) { + p3_p2_grad[2 * i][j / 2] = cut_grad3[4 * n2 * i + j]; + } else { + p3_p2_grad[2 * i + 1][j / 2] = cut_grad3[4 * n2 * i + j]; + } + } + } + + // mul + // p3_p2(n3 * n2) * p2_p1(n2 * n1) = p3_p1 (n3 * n1) + for (int i = 0; i < 2 * n3; i++) { + for (int j = 0; j < 2 * n1; j++) { + double sum = 0.0; + for (int m = 0; m < 2 * n2; m++) { + sum = sum + p3_p2_grad[i][m] * p2_p1_grad[m][j]; + } + p3_p1_grad[i][j] = sum; + } + } + + // p3_p1 (n3 * n1) * p1_p (n1 * n0) = p3_p (n3 * n0) + for (int i = 0; i < 2 * n3; i++) { + for (int j = 0; j < 2 * n0; j++) { + double sum = 0.0; + for (int m = 0; m < 2 * n1; m++) { + sum = sum + p3_p1_grad[i][m] * p1_p_grad[m][j]; + } + p3_p_grad[i][j] = sum; + } + } + + // calculate S_grad + int polygon_index_box_index[20]; + double grad_polygon[20]; + double S_grad[6]; + + for (int i = 0; i < n3; i++) { + polygon_index_box_index[i] = i; + polygon_index_box_index[i + n3] = i; + } + + double res = + polygon_area_grad(p, n3, polygon_index_box_index, n3, grad_polygon); + + if (s1 * s2 == -1) { + for (int j = 0; j < 2 * 3; j++) { + double sum = 0.0; + for (int m = 0; m < 2 * n3; m++) { + sum = sum - grad_polygon[m] * p3_p_grad[m][j]; + } + S_grad[j] = sum; + } + + if (order != convex_n - 1) { + if (res_flag) { + grad_AB[2 * order] += S_grad[4]; + grad_AB[2 * order + 1] += S_grad[5]; + grad_AB[2 * order + 2] += S_grad[2]; + grad_AB[2 * order + 3] += S_grad[3]; + + } else { + grad_AB[2 * order] += S_grad[2]; + grad_AB[2 * order + 1] += S_grad[3]; + grad_AB[2 * order + 2] += S_grad[4]; + grad_AB[2 * order + 3] += S_grad[5]; + } + } else { + if (res_flag) { + grad_AB[2 * order] += S_grad[4]; + grad_AB[2 * order + 1] += S_grad[5]; + grad_AB[0] += S_grad[2]; + grad_AB[1] += S_grad[3]; + + } else { + grad_AB[2 * order] += S_grad[2]; + grad_AB[2 * order + 1] += S_grad[3]; + grad_AB[0] += S_grad[4]; + grad_AB[1] += S_grad[5]; + } + } + res = -res; + } else { + for (int j = 0; j < 2 * 3; j++) { + double sum = 0.0; + for (int m = 0; m < 2 * n3; m++) { + sum = sum + grad_polygon[m] * p3_p_grad[m][j]; + } + S_grad[j] = sum; + } + + if (order != convex_n - 1) { + if (res_flag) { + grad_AB[2 * order] += S_grad[4]; + grad_AB[2 * order + 1] += S_grad[5]; + grad_AB[2 * order + 2] += S_grad[2]; + grad_AB[2 * order + 3] += S_grad[3]; + } else { + grad_AB[2 * order] += S_grad[2]; + grad_AB[2 * order + 1] += S_grad[3]; + grad_AB[2 * order + 2] += S_grad[4]; + grad_AB[2 * order + 3] += S_grad[5]; + } + } else { + if (res_flag) { + grad_AB[2 * order] += S_grad[4]; + grad_AB[2 * order + 1] += S_grad[5]; + grad_AB[0] += S_grad[2]; + grad_AB[1] += S_grad[3]; + } else { + grad_AB[2 * order] += S_grad[2]; + grad_AB[2 * order + 1] += S_grad[3]; + grad_AB[0] += S_grad[4]; + grad_AB[1] += S_grad[5]; + } + } + } + return res; +} + +__device__ inline double intersectAreaO(Point* ps1, int n1, Point* ps2, int n2, + double* grad_AB) { + if (area(ps1, n1) < 0) reverse1(ps1, n1); + if (area(ps2, n2) < 0) reverse1(ps2, n2); + ps1[n1] = ps1[0]; + ps2[n2] = ps2[0]; + double res = 0; + for (int i = 0; i < n1; i++) { + for (int j = 0; j < n2; j++) { + res += + intersectArea(ps1[i], ps1[i + 1], ps2[j], ps2[j + 1], grad_AB, i, n1); + } + } + return res; +} + +__device__ inline void Jarvis(Point* in_poly, int& n_poly) { + Point p_max, p_k; + int max_index, k_index; + int Stack[NMAX] = {}, top1, top2; + double sign; + Point right_point[10], left_point[10]; + + for (int i = 0; i < n_poly; i++) { + if (in_poly[i].y < in_poly[0].y || + in_poly[i].y == in_poly[0].y && in_poly[i].x < in_poly[0].x) { + Point* j = &(in_poly[0]); + Point* k = &(in_poly[i]); + swap1(j, k); + } + if (i == 0) { + p_max = in_poly[0]; + max_index = 0; + } + if (in_poly[i].y > p_max.y || + in_poly[i].y == p_max.y && in_poly[i].x > p_max.x) { + p_max = in_poly[i]; + max_index = i; + } + } + + if (max_index == 0) { + max_index = 1; + p_max = in_poly[max_index]; + } + + k_index = 0, Stack[0] = 0, top1 = 0; + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top1]], in_poly[i], p_k); + if ((sign > 0) || ((sign == 0) && (dis(in_poly[Stack[top1]], in_poly[i]) > + dis(in_poly[Stack[top1]], p_k)))) { + p_k = in_poly[i]; + k_index = i; + } + } + top1++; + Stack[top1] = k_index; + } + for (int i = 0; i <= top1; i++) right_point[i] = in_poly[Stack[i]]; + + k_index = 0, Stack[0] = 0, top2 = 0; + + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top2]], in_poly[i], p_k); + if ((sign < 0) || (sign == 0) && (dis(in_poly[Stack[top2]], in_poly[i]) > + dis(in_poly[Stack[top2]], p_k))) { + p_k = in_poly[i]; + k_index = i; + } + } + top2++; + Stack[top2] = k_index; + } + for (int i = top2 - 1; i >= 0; i--) left_point[i] = in_poly[Stack[i]]; + + for (int i = 0; i < top1 + top2; i++) { + if (i <= top1) { + in_poly[i] = right_point[i]; + } else { + in_poly[i] = left_point[top2 - (i - top1)]; + } + } + n_poly = top1 + top2; +} + +__device__ inline double intersectAreaPoly(Point* ps1, int n1, Point* ps2, + int n2, double* grad_C) { + Point polygon[MAXN]; + int n = n1 + n2, n_poly = 0; + for (int i = 0; i < n1; i++) { + for (int j = 0; j < n - n1; j++) { + if (point_same(ps1[i], ps2[j])) { + for (int k = j; k < n - n1 - 1; k++) { + ps2[k] = ps2[k + 1]; + } + n2--; + break; + } + } + } + n_poly = n1 + n2; + for (int i = 0; i < n_poly; i++) { + if (i < n1) { + polygon[i] = ps1[i]; + } else { + polygon[i] = ps2[i - n1]; + } + } + + Jarvis(polygon, n_poly); + + int polygon_to_pred_index[18] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1}; + int n_pred = 0; + for (int i = 0; i < n_poly; i++) { + for (int j = 0; j < n1; j++) { + if (polygon[i].x == ps1[j].x && polygon[i].y == ps1[j].y) { + polygon_to_pred_index[n_pred] = i; + polygon_to_pred_index[n_pred + n1] = j; + n_pred += 1; + break; + } + } + } + if (n_pred == 0) { + double polygon_area = fabs(area(polygon, n_poly)); + for (int i = 0; i < 18; i++) { + grad_C[i] = 0.0; + } + return polygon_area; + } else { + double polygon_area = + polygon_area_grad(polygon, n_poly, polygon_to_pred_index, n1, grad_C); + if (polygon_area < 0) { + for (int i = 0; i < 18; i++) { + grad_C[i] = -grad_C[i]; + } + } + return fabs(polygon_area); + } +} + +// convex_find and get the polygon_index_box_index +__device__ inline void Jarvis_and_index(Point* in_poly, int& n_poly, + int* points_to_convex_ind) { + int n_input = n_poly; + Point input_poly[20]; + for (int i = 0; i < n_input; i++) { + input_poly[i].x = in_poly[i].x; + input_poly[i].y = in_poly[i].y; + } + Point p_max, p_k; + int max_index, k_index; + int Stack[20], top1, top2; + double sign; + Point right_point[10], left_point[10]; + + for (int i = 0; i < n_poly; i++) { + if (in_poly[i].y < in_poly[0].y || + in_poly[i].y == in_poly[0].y && in_poly[i].x < in_poly[0].x) { + Point* j = &(in_poly[0]); + Point* k = &(in_poly[i]); + swap1(j, k); + } + if (i == 0) { + p_max = in_poly[0]; + max_index = 0; + } + if (in_poly[i].y > p_max.y || + in_poly[i].y == p_max.y && in_poly[i].x > p_max.x) { + p_max = in_poly[i]; + max_index = i; + } + } + if (max_index == 0) { + max_index = 1; + p_max = in_poly[max_index]; + } + + k_index = 0, Stack[0] = 0, top1 = 0; + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top1]], in_poly[i], p_k); + if ((sign > 0) || ((sign == 0) && (dis(in_poly[Stack[top1]], in_poly[i]) > + dis(in_poly[Stack[top1]], p_k)))) { + p_k = in_poly[i]; + k_index = i; + } + } + top1++; + Stack[top1] = k_index; + } + for (int i = 0; i <= top1; i++) { + right_point[i] = in_poly[Stack[i]]; + } + + k_index = 0, Stack[0] = 0, top2 = 0; + + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top2]], in_poly[i], p_k); + if ((sign < 0) || (sign == 0) && (dis(in_poly[Stack[top2]], in_poly[i]) > + dis(in_poly[Stack[top2]], p_k))) { + p_k = in_poly[i]; + k_index = i; + } + } + top2++; + Stack[top2] = k_index; + } + + for (int i = top2 - 1; i >= 0; i--) { + left_point[i] = in_poly[Stack[i]]; + } + + for (int i = 0; i < top1 + top2; i++) { + if (i <= top1) { + in_poly[i] = right_point[i]; + } else { + in_poly[i] = left_point[top2 - (i - top1)]; + } + } + n_poly = top1 + top2; + for (int i = 0; i < n_poly; i++) { + for (int j = 0; j < n_input; j++) { + if (point_same(in_poly[i], input_poly[j])) { + points_to_convex_ind[i] = j; + break; + } + } + } +} + +template +__device__ inline float devrIoU(T const* const p, T const* const q, + T* point_grad, const int idx) { + Point ps1[MAXN], ps2[MAXN]; + + Point convex[MAXN]; + for (int i = 0; i < 9; i++) { + convex[i].x = (double)p[i * 2]; + convex[i].y = (double)p[i * 2 + 1]; + } + int n_convex = 9; + int points_to_convex_ind[9] = {-1, -1, -1, -1, -1, -1, -1, -1, -1}; + Jarvis_and_index(convex, n_convex, points_to_convex_ind); + + int n1 = n_convex; + int n2 = 4; + + for (int i = 0; i < n1; i++) { + ps1[i].x = (double)convex[i].x; + ps1[i].y = (double)convex[i].y; + } + + for (int i = 0; i < n2; i++) { + ps2[i].x = (double)q[i * 2]; + ps2[i].y = (double)q[i * 2 + 1]; + } + + int polygon_index_box_index[18]; + for (int i = 0; i < n1; i++) { + polygon_index_box_index[i] = i; + polygon_index_box_index[i + n1] = i; + } + + double grad_A[18] = {}; + double grad_AB[18] = {}; + double grad_C[18] = {}; + + double inter_area = intersectAreaO(ps1, n1, ps2, n2, grad_AB); + double S_pred = + polygon_area_grad(ps1, n1, polygon_index_box_index, n1, grad_A); + if (S_pred < 0) { + for (int i = 0; i < n_convex * 2; i++) { + grad_A[i] = -grad_A[i]; + } + } + double union_area = fabs(S_pred) + fabs(area(ps2, n2)) - inter_area; + + double iou = inter_area / union_area; + double polygon_area = intersectAreaPoly(ps1, n1, ps2, n2, grad_C); + + // printf("%d:live\n", idx); + double rot_giou = iou - (polygon_area - union_area) / polygon_area; + + float grad_point_temp[18] = {}; + + for (int i = 0; i < n_convex; i++) { + int grad_point = points_to_convex_ind[i]; + grad_point_temp[2 * grad_point] = + (float)((union_area + inter_area) / (union_area * union_area) * + grad_AB[2 * i] - + iou / union_area * grad_A[2 * i] - + 1 / polygon_area * (grad_AB[2 * i] - grad_A[2 * i]) - + (union_area) / polygon_area / polygon_area * grad_C[2 * i]); + grad_point_temp[2 * grad_point + 1] = + (float)((union_area + inter_area) / (union_area * union_area) * + grad_AB[2 * i + 1] - + iou / union_area * grad_A[2 * i + 1] - + 1 / polygon_area * (grad_AB[2 * i + 1] - grad_A[2 * i + 1]) - + (union_area) / polygon_area / polygon_area * grad_C[2 * i + 1]); + } + + for (int i = 0; i < 9; i++) { + point_grad[2 * i] = grad_point_temp[2 * i]; + point_grad[2 * i + 1] = grad_point_temp[2 * i + 1]; + } + return (float)rot_giou; +} + +template +__global__ void convex_giou_cuda_kernel(const int ex_n_boxes, + const int gt_n_boxes, const T* ex_boxes, + const T* gt_boxes, T* point_grad) { + CUDA_1D_KERNEL_LOOP(index, ex_n_boxes) { + const T* cur_box = ex_boxes + index * 18; + const T* cur_gt_box = gt_boxes + index * 8; + T* cur_grad = point_grad + index * 19; + T giou = devrIoU(cur_box, cur_gt_box, cur_grad, threadIdx.x); + cur_grad[18] = giou; + } +} + +__device__ inline int lineCross(Point a, Point b, Point c, Point d, Point& p) { + double s1, s2; + s1 = cross(a, b, c); + s2 = cross(a, b, d); + if (sig(s1) == 0 && sig(s2) == 0) return 2; + if (sig(s2 - s1) == 0) return 0; + p.x = (c.x * s2 - d.x * s1) / (s2 - s1); + p.y = (c.y * s2 - d.y * s1) / (s2 - s1); + return 1; +} + +__device__ inline void polygon_cut(Point* p, int& n, Point a, Point b) { + Point pp[MAXN]; + int m = 0; + p[n] = p[0]; + for (int i = 0; i < n; i++) { + if (sig(cross(a, b, p[i])) > 0) { + pp[m] = p[i]; + m++; + } + if (sig(cross(a, b, p[i])) != sig(cross(a, b, p[i + 1]))) { + lineCross(a, b, p[i], p[i + 1], pp[m]); + m++; + } + } + n = 0; + for (int i = 0; i < m; i++) { + if (!i || !(point_same(pp[i], pp[i - 1]))) { + p[n] = pp[i]; + n++; + } + } + + while (n > 1 && point_same(p[n - 1], p[0])) n--; +} + +__device__ inline double intersectArea(Point a, Point b, Point c, Point d) { + Point o(0, 0); + int s1 = sig(cross(o, a, b)); + int s2 = sig(cross(o, c, d)); + if (s1 == 0 || s2 == 0) return 0.0; + if (s1 == -1) { + Point* i = &a; + Point* j = &b; + swap1(i, j); + } + if (s2 == -1) { + Point* i = &c; + Point* j = &d; + swap1(i, j); + } + Point p[10] = {o, a, b}; + int n = 3; + + polygon_cut(p, n, o, c); + polygon_cut(p, n, c, d); + polygon_cut(p, n, d, o); + double res = area(p, n); + if (s1 * s2 == -1) res = -res; + return res; +} +__device__ inline double intersectAreaO(Point* ps1, int n1, Point* ps2, + int n2) { + if (area(ps1, n1) < 0) reverse1(ps1, n1); + if (area(ps2, n2) < 0) reverse1(ps2, n2); + ps1[n1] = ps1[0]; + ps2[n2] = ps2[0]; + double res = 0; + for (int i = 0; i < n1; i++) { + for (int j = 0; j < n2; j++) { + res += intersectArea(ps1[i], ps1[i + 1], ps2[j], ps2[j + 1]); + } + } + return res; +} + +template +__device__ inline float devrIoU(T const* const p, T const* const q) { + Point ps1[MAXN], ps2[MAXN]; + Point convex[MAXN]; + for (int i = 0; i < 9; i++) { + convex[i].x = (double)p[i * 2]; + convex[i].y = (double)p[i * 2 + 1]; + } + int n_convex = 9; + int points_to_convex_ind[9] = {-1, -1, -1, -1, -1, -1, -1, -1, -1}; + Jarvis_and_index(convex, n_convex, points_to_convex_ind); + int n1 = n_convex; + for (int i = 0; i < n1; i++) { + ps1[i].x = (double)convex[i].x; + ps1[i].y = (double)convex[i].y; + } + int n2 = 4; + for (int i = 0; i < n2; i++) { + ps2[i].x = (double)q[i * 2]; + ps2[i].y = (double)q[i * 2 + 1]; + } + double inter_area = intersectAreaO(ps1, n1, ps2, n2); + double S_pred = area(ps1, n1); + double union_area = fabs(S_pred) + fabs(area(ps2, n2)) - inter_area; + double iou = inter_area / union_area; + return (float)iou; +} + +template +__global__ void convex_iou_cuda_kernel(const int ex_n_boxes, + const int gt_n_boxes, const T* ex_boxes, + const T* gt_boxes, T* iou) { + CUDA_1D_KERNEL_LOOP(index, ex_n_boxes) { + const T* cur_box = ex_boxes + index * 18; + for (int i = 0; i < gt_n_boxes; i++) { + iou[index * gt_n_boxes + i] = devrIoU(cur_box, gt_boxes + i * 8); + } + } +} +#endif // CONVEX_IOU_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/correlation_cuda.cuh b/mmcv/ops/csrc/common/cuda/correlation_cuda.cuh index 75ea4ad..2f7f112 100644 --- a/mmcv/ops/csrc/common/cuda/correlation_cuda.cuh +++ b/mmcv/ops/csrc/common/cuda/correlation_cuda.cuh @@ -29,8 +29,8 @@ using namespace torch; #define TensorAcc5R PackedTensorAccessor32 #define WITHIN_BOUNDS(x, y, H, W) (x >= 0 && x < H && y >= 0 && y < W) -#define THREADS_FORWARD 32 -#define THREADS_BACKWARD 16 +#define WARP_SIZE 32 +#define FULL_MASK 0xffffffff template __global__ void correlation_forward_cuda_kernel( @@ -42,8 +42,8 @@ __global__ void correlation_forward_cuda_kernel( const int C = rInput1.size(3); const int n = blockIdx.x; - const int h = blockIdx.y; - const int w = blockIdx.z; + const int h = blockIdx.y * blockDim.y + threadIdx.y; + const int w = blockIdx.z * blockDim.z + threadIdx.z; const int thread = threadIdx.x; const int start_i = -padH + h * dH; @@ -52,13 +52,11 @@ __global__ void correlation_forward_cuda_kernel( const int patchRadH = dilation_patchH * (patchH - 1) / 2; const int patchRadW = dilation_patchW * (patchW - 1) / 2; - __shared__ scalar_t prod_sum[THREADS_FORWARD]; - for (int ph = 0; ph < patchH; ++ph) { int ph_dilated = ph * dilation_patchH - patchRadH; for (int pw = 0; pw < patchW; ++pw) { int pw_dilated = pw * dilation_patchW - patchRadW; - prod_sum[thread] = 0; + scalar_t prod_sum = 0.0f; for (int i = 0; i < kH; ++i) { int i1 = start_i + i * dilationH; int i2 = i1 + ph_dilated; @@ -69,23 +67,20 @@ __global__ void correlation_forward_cuda_kernel( int j2 = j1 + pw_dilated; if WITHIN_BOUNDS(j1, j2, iW, iW) { - for (int c = thread; c < C; c += THREADS_FORWARD) { + for (int c = thread; c < C; c += WARP_SIZE) { scalar_t v1 = rInput1[n][i1][j1][c]; scalar_t v2 = rInput2[n][i2][j2][c]; - prod_sum[thread] += v1 * v2; + prod_sum += v1 * v2; } } } } } // accumulate - __syncthreads(); + for (int offset = 16; offset > 0; offset /= 2) + prod_sum += __shfl_down_sync(FULL_MASK, float(prod_sum), offset); if (thread == 0) { - scalar_t reduce_sum = 0; - for (int index = 0; index < THREADS_FORWARD; ++index) { - reduce_sum += prod_sum[index]; - } - output[n][ph][pw][h][w] = reduce_sum; + output[n][ph][pw][h][w] = prod_sum; } } } @@ -97,9 +92,10 @@ __global__ void correlation_backward_cuda_kernel_input1( TensorAcc4R grad_input1, const int kH, const int kW, const int patchH, const int patchW, const int padH, const int padW, const int dilationH, const int dilationW, const int dilation_patchH, const int dilation_patchW, - const int dH, const int dW, const int batch) { - const int iH = input2.size(2); - const int iW = input2.size(3); + const int dH, const int dW) { + const int iH = input2.size(1); + const int iW = input2.size(2); + const int C = input2.size(3); const int H = grad_output.size(3); const int W = grad_output.size(4); @@ -107,54 +103,53 @@ __global__ void correlation_backward_cuda_kernel_input1( const int patchRadH = (patchH - 1) / 2; const int patchRadW = (patchW - 1) / 2; - const int n = batch; - const int c = blockIdx.x; + const int n = blockIdx.x; const int h = blockIdx.y; const int w = blockIdx.z; - const int ph_off = threadIdx.x; - const int pw_off = threadIdx.y; const int h_2 = h + padH; const int w_2 = w + padW; const int min_h = h_2 - kH * dilationH; const int min_w = w_2 - kW * dilationW; - __shared__ scalar_t prod_sum[THREADS_BACKWARD][THREADS_BACKWARD]; - prod_sum[ph_off][pw_off] = 0; - - for (int ph = ph_off; ph < patchH; ph += THREADS_BACKWARD) { + extern __shared__ __align__(sizeof(4)) unsigned char grad_cache_char[]; + scalar_t *grad_cache = reinterpret_cast(grad_cache_char); + for (int i = threadIdx.x; i < patchH * patchW; i += blockDim.x) { + const int ph = i / patchW; + const int pw = i % patchW; int i1 = h + dilation_patchH * (ph - patchRadH); - for (int pw = pw_off; pw < patchW; pw += THREADS_BACKWARD) { - int j1 = w + dilation_patchW * (pw - patchRadW); - if (WITHIN_BOUNDS(i1, j1, iH, iW)) { - scalar_t val = input2[n][c][i1][j1]; - for (int h_3 = h_2; h_3 > min_h; h_3 -= dilationH) { - int i2 = (h_3) / dH; - if (i2 * dH != h_3) continue; - for (int w_3 = w_2; w_3 > min_w; w_3 -= dilationW) { - int j2 = (w_3) / dW; - if (j2 * dW != w_3) continue; - if - WITHIN_BOUNDS(i2, j2, H, W) { - prod_sum[ph_off][pw_off] += - grad_output[n][ph][pw][i2][j2] * val; - } + int j1 = w + dilation_patchW * (pw - patchRadW); + + if (WITHIN_BOUNDS(i1, j1, iH, iW)) { + scalar_t grad_val = 0.0f; + for (int h_3 = h_2; h_3 > min_h; h_3 -= dilationH) { + int i2 = (h_3) / dH; + if (i2 * dH != h_3) continue; + for (int w_3 = w_2; w_3 > min_w; w_3 -= dilationW) { + int j2 = (w_3) / dW; + if (j2 * dW != w_3) continue; + if (WITHIN_BOUNDS(i2, j2, H, W)) { + grad_val += grad_output[n][ph][pw][i2][j2]; } } } + grad_cache[i] = grad_val; } } - __syncthreads(); - if (ph_off == 0 && pw_off == 0) { - scalar_t reduce_sum = 0; - for (int ph = 0; ph < THREADS_BACKWARD; ++ph) { - for (int pw = 0; pw < THREADS_BACKWARD; ++pw) { - reduce_sum += prod_sum[ph][pw]; + for (int c = threadIdx.x; c < C; c += blockDim.x) { + scalar_t grad_input_val = 0.0f; + for (int ph = 0; ph < patchH; ++ph) { + int i1 = h + dilation_patchH * (ph - patchRadH); + for (int pw = 0; pw < patchW; ++pw) { + int j1 = w + dilation_patchW * (pw - patchRadW); + if (WITHIN_BOUNDS(i1, j1, iH, iW)) { + grad_input_val += input2[n][i1][j1][c] * grad_cache[ph * patchW + pw]; + } } } - grad_input1[n][c][h][w] = reduce_sum; + grad_input1[n][c][h][w] = grad_input_val; } } @@ -163,9 +158,10 @@ __global__ void correlation_backward_cuda_kernel_input2( const TensorAcc5R grad_output, const TensorAcc4R input1, TensorAcc4R grad_input2, int kH, int kW, int patchH, int patchW, int padH, int padW, int dilationH, int dilationW, int dilation_patchH, - int dilation_patchW, int dH, int dW, int batch) { - const int iH = input1.size(2); - const int iW = input1.size(3); + int dilation_patchW, int dH, int dW) { + const int iH = input1.size(1); + const int iW = input1.size(2); + const int C = input1.size(3); const int patchRadH = (patchH - 1) / 2; const int patchRadW = (patchW - 1) / 2; @@ -176,56 +172,54 @@ __global__ void correlation_backward_cuda_kernel_input2( const int dilatedKH = kH * dilationH; const int dilatedKW = kW * dilationW; - const int n = batch; - const int c = blockIdx.x; + const int n = blockIdx.x; const int h = blockIdx.y; const int w = blockIdx.z; - const int ph_off = threadIdx.x; - const int pw_off = threadIdx.y; - - __shared__ scalar_t prod_sum[THREADS_BACKWARD][THREADS_BACKWARD]; - prod_sum[ph_off][pw_off] = 0; - for (int ph = ph_off; ph < patchH; ph += THREADS_BACKWARD) { + extern __shared__ __align__(sizeof(4)) unsigned char grad_cache_char[]; + scalar_t *grad_cache = reinterpret_cast(grad_cache_char); + for (int i = threadIdx.x; i < patchH * patchW; i += blockDim.x) { + const int ph = i / patchW; + const int pw = i % patchW; int i1 = h - dilation_patchH * (ph - patchRadH); - for (int pw = pw_off; pw < patchW; pw += THREADS_BACKWARD) { - int j1 = w - dilation_patchW * (pw - patchRadW); - if - WITHIN_BOUNDS(i1, j1, iH, iW) { - scalar_t val = input1[n][c][i1][j1]; - - const int h_2 = i1 + padH; - const int w_2 = j1 + padW; - const int min_h = h_2 - dilatedKH; - const int min_w = w_2 - dilatedKW; - - for (int h_3 = h_2; h_3 > min_h; h_3 -= dilationH) { - int i2 = (h_3) / dH; - if (i2 * dH != h_3) continue; - for (int w_3 = w_2; w_3 > min_w; w_3 -= dilationW) { - int j2 = (w_3) / dW; - if (j2 * dW != w_3) continue; - if - WITHIN_BOUNDS(i2, j2, H, W) { - prod_sum[ph_off][pw_off] += - grad_output[n][ph][pw][i2][j2] * val; - } - } + int j1 = w - dilation_patchW * (pw - patchRadW); + + if (WITHIN_BOUNDS(i1, j1, iH, iW)) { + scalar_t grad_val = 0.0f; + + const int h_2 = i1 + padH; + const int w_2 = j1 + padW; + const int min_h = h_2 - dilatedKH; + const int min_w = w_2 - dilatedKW; + + for (int h_3 = h_2; h_3 > min_h; h_3 -= dilationH) { + int i2 = (h_3) / dH; + if (i2 * dH != h_3) continue; + for (int w_3 = w_2; w_3 > min_w; w_3 -= dilationW) { + int j2 = (w_3) / dW; + if (j2 * dW != w_3) continue; + if (WITHIN_BOUNDS(i2, j2, H, W)) { + grad_val += grad_output[n][ph][pw][i2][j2]; } } + } + grad_cache[i] = grad_val; } } - __syncthreads(); - if (ph_off == 0 && pw_off == 0) { - scalar_t reduce_sum = 0; - for (int ph = 0; ph < THREADS_BACKWARD; ++ph) { - for (int pw = 0; pw < THREADS_BACKWARD; ++pw) { - reduce_sum += prod_sum[ph][pw]; + for (int c = threadIdx.x; c < C; c += blockDim.x) { + scalar_t grad_input_val = 0.0f; + for (int ph = 0; ph < patchH; ++ph) { + int i1 = h - dilation_patchH * (ph - patchRadH); + for (int pw = 0; pw < patchW; ++pw) { + int j1 = w - dilation_patchW * (pw - patchRadW); + if (WITHIN_BOUNDS(i1, j1, iH, iW)) { + grad_input_val += input1[n][i1][j1][c] * grad_cache[ph * patchW + pw]; + } } } - grad_input2[n][c][h][w] = reduce_sum; + grad_input2[n][c][h][w] = grad_input_val; } } #endif diff --git a/mmcv/ops/csrc/common/cuda/diff_iou_rotated_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/diff_iou_rotated_cuda_kernel.cuh new file mode 100644 index 0000000..3ee1814 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/diff_iou_rotated_cuda_kernel.cuh @@ -0,0 +1,136 @@ +// Copyright (c) OpenMMLab. All rights reserved +// Adapted from +// https://github.com/lilanxiao/Rotated_IoU/cuda_op/sort_vert_kernel.cu # noqa +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +#define MAX_NUM_VERT_IDX 9 +#define INTERSECTION_OFFSET 8 +#define EPSILON 1e-8 + +inline int opt_n_thread(int work_size) { + const int pow_2 = std::log(static_cast(work_size)) / std::log(2.0); + return max(min(1 << pow_2, THREADS_PER_BLOCK), 1); +} + +/* +compare normalized vertices (vertices around (0,0)) +if vertex1 < vertex2 return true. +order: minimum at x-aixs, become larger in anti-clockwise direction +*/ +__device__ bool compare_vertices(float x1, float y1, float x2, float y2) { + if (fabs(x1 - x2) < EPSILON && fabs(y2 - y1) < EPSILON) + return false; // if equal, return false + + if (y1 > 0 && y2 < 0) return true; + if (y1 < 0 && y2 > 0) return false; + + float n1 = x1 * x1 + y1 * y1 + EPSILON; + float n2 = x2 * x2 + y2 * y2 + EPSILON; + float diff = fabs(x1) * x1 / n1 - fabs(x2) * x2 / n2; + + if (y1 > 0 && y2 > 0) { + if (diff > EPSILON) + return true; + else + return false; + } + if (y1 < 0 && y2 < 0) { + if (diff < EPSILON) + return true; + else + return false; + } +} + +__global__ void diff_iou_rotated_sort_vertices_forward_cuda_kernel( + int b, int n, int m, const float *__restrict__ vertices, + const bool *__restrict__ mask, const int *__restrict__ num_valid, + int *__restrict__ idx) { + int batch_idx = blockIdx.x; + vertices += batch_idx * n * m * 2; + mask += batch_idx * n * m; + num_valid += batch_idx * n; + idx += batch_idx * n * MAX_NUM_VERT_IDX; + + int index = threadIdx.x; // index of polygon + int stride = blockDim.x; + for (int i = index; i < n; i += stride) { + int pad; // index of arbitrary invalid intersection point (not box corner!) + for (int j = INTERSECTION_OFFSET; j < m; ++j) { + if (!mask[i * m + j]) { + pad = j; + break; + } + } + if (num_valid[i] < 3) { + // not enough vertices, take an invalid intersection point + // (zero padding) + for (int j = 0; j < MAX_NUM_VERT_IDX; ++j) { + idx[i * MAX_NUM_VERT_IDX + j] = pad; + } + } else { + // sort the valid vertices + // note the number of valid vertices is known + // note: check that num_valid[i] < MAX_NUM_VERT_IDX + for (int j = 0; j < num_valid[i]; ++j) { + // initialize with a "big" value + float x_min = 1; + float y_min = -EPSILON; + int i_take = 0; + int i2; + float x2, y2; + if (j != 0) { + i2 = idx[i * MAX_NUM_VERT_IDX + j - 1]; + x2 = vertices[i * m * 2 + i2 * 2 + 0]; + y2 = vertices[i * m * 2 + i2 * 2 + 1]; + } + for (int k = 0; k < m; ++k) { + float x = vertices[i * m * 2 + k * 2 + 0]; + float y = vertices[i * m * 2 + k * 2 + 1]; + if (mask[i * m + k] && compare_vertices(x, y, x_min, y_min)) { + if ((j == 0) || (j != 0 && compare_vertices(x2, y2, x, y))) { + x_min = x; + y_min = y; + i_take = k; + } + } + } + idx[i * MAX_NUM_VERT_IDX + j] = i_take; + } + // duplicate the first idx + idx[i * MAX_NUM_VERT_IDX + num_valid[i]] = idx[i * MAX_NUM_VERT_IDX + 0]; + + // pad zeros + for (int j = num_valid[i] + 1; j < MAX_NUM_VERT_IDX; ++j) { + idx[i * MAX_NUM_VERT_IDX + j] = pad; + } + + // for corner case: the two boxes are exactly the same. + // in this case, idx would have duplicate elements, which makes the + // shoelace formula broken because of the definition, the duplicate + // elements only appear in the first 8 positions (they are "corners in + // box", not "intersection of edges") + if (num_valid[i] == 8) { + int counter = 0; + for (int j = 0; j < 4; ++j) { + int check = idx[i * MAX_NUM_VERT_IDX + j]; + for (int k = 4; k < INTERSECTION_OFFSET; ++k) { + if (idx[i * MAX_NUM_VERT_IDX + k] == check) counter++; + } + } + if (counter == 4) { + idx[i * MAX_NUM_VERT_IDX + 4] = idx[i * MAX_NUM_VERT_IDX + 0]; + for (int j = 5; j < MAX_NUM_VERT_IDX; ++j) { + idx[i * MAX_NUM_VERT_IDX + j] = pad; + } + } + } + + // TODO: still might need to cover some other corner cases :( + } + } +} diff --git a/mmcv/ops/csrc/common/cuda/gather_points_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/gather_points_cuda_kernel.cuh index c8fc615..6d93243 100644 --- a/mmcv/ops/csrc/common/cuda/gather_points_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/gather_points_cuda_kernel.cuh @@ -22,13 +22,14 @@ __global__ void gather_points_forward_cuda_kernel(int b, int c, int n, int m, int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= b || c_idx >= c || pt_idx >= m) return; - - out += bs_idx * c * m + c_idx * m + pt_idx; - idx += bs_idx * m + pt_idx; - points += bs_idx * c * n + c_idx * n; - out[0] = points[idx[0]]; + CUDA_1D_KERNEL_LOOP(pt_idx, m) { + if (bs_idx >= b || c_idx >= c) return; + + out += bs_idx * c * m + c_idx * m + pt_idx; + idx += bs_idx * m + pt_idx; + points += bs_idx * c * n + c_idx * n; + out[0] = points[idx[0]]; + } } template @@ -43,14 +44,15 @@ __global__ void gather_points_backward_cuda_kernel(int b, int c, int n, int m, int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= b || c_idx >= c || pt_idx >= m) return; + CUDA_1D_KERNEL_LOOP(pt_idx, m) { + if (bs_idx >= b || c_idx >= c) return; - grad_out += bs_idx * c * m + c_idx * m + pt_idx; - idx += bs_idx * m + pt_idx; - grad_points += bs_idx * c * n + c_idx * n; + grad_out += bs_idx * c * m + c_idx * m + pt_idx; + idx += bs_idx * m + pt_idx; + grad_points += bs_idx * c * n + c_idx * n; - atomicAdd(grad_points + idx[0], grad_out[0]); + atomicAdd(grad_points + idx[0], grad_out[0]); + } } #endif // GATHER_POINTS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/group_points_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/group_points_cuda_kernel.cuh index 9cfc2dc..dfad66f 100644 --- a/mmcv/ops/csrc/common/cuda/group_points_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/group_points_cuda_kernel.cuh @@ -22,18 +22,19 @@ __global__ void group_points_forward_cuda_kernel(int b, int c, int n, // out: (B, C, npoints, nsample) int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int index = blockIdx.x * blockDim.x + threadIdx.x; - int pt_idx = index / nsample; - if (bs_idx >= b || c_idx >= c || pt_idx >= npoints) return; + CUDA_1D_KERNEL_LOOP(index, npoints * nsample) { + if (bs_idx >= b || c_idx >= c) return; - int sample_idx = index % nsample; + int pt_idx = index / nsample; + int sample_idx = index % nsample; - idx += bs_idx * npoints * nsample + pt_idx * nsample + sample_idx; - int in_idx = bs_idx * c * n + c_idx * n + idx[0]; - int out_idx = bs_idx * c * npoints * nsample + c_idx * npoints * nsample + - pt_idx * nsample + sample_idx; + idx += bs_idx * npoints * nsample + pt_idx * nsample + sample_idx; + int in_idx = bs_idx * c * n + c_idx * n + idx[0]; + int out_idx = bs_idx * c * npoints * nsample + c_idx * npoints * nsample + + pt_idx * nsample + sample_idx; - out[out_idx] = points[in_idx]; + out[out_idx] = points[in_idx]; + } } template @@ -48,16 +49,17 @@ __global__ void group_points_backward_cuda_kernel(int b, int c, int n, // grad_points: (B, C, N) int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int index = blockIdx.x * blockDim.x + threadIdx.x; - int pt_idx = index / nsample; - if (bs_idx >= b || c_idx >= c || pt_idx >= npoints) return; + CUDA_1D_KERNEL_LOOP(index, npoints * nsample) { + int pt_idx = index / nsample; + if (bs_idx >= b || c_idx >= c) return; - int sample_idx = index % nsample; - grad_out += bs_idx * c * npoints * nsample + c_idx * npoints * nsample + - pt_idx * nsample + sample_idx; - idx += bs_idx * npoints * nsample + pt_idx * nsample + sample_idx; + int sample_idx = index % nsample; + grad_out += bs_idx * c * npoints * nsample + c_idx * npoints * nsample + + pt_idx * nsample + sample_idx; + idx += bs_idx * npoints * nsample + pt_idx * nsample + sample_idx; - atomicAdd(grad_points + bs_idx * c * n + c_idx * n + idx[0], grad_out[0]); + atomicAdd(grad_points + bs_idx * c * n + c_idx * n + idx[0], grad_out[0]); + } } #endif // GROUP_POINTS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/iou3d_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/iou3d_cuda_kernel.cuh index 4e261cb..9ebdcad 100644 --- a/mmcv/ops/csrc/common/cuda/iou3d_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/iou3d_cuda_kernel.cuh @@ -50,21 +50,17 @@ __device__ int check_rect_cross(const Point &p1, const Point &p2, } __device__ inline int check_in_box2d(const float *box, const Point &p) { - // params: box (5) [x1, y1, x2, y2, angle] - const float MARGIN = 1e-5; - - float center_x = (box[0] + box[2]) / 2; - float center_y = (box[1] + box[3]) / 2; - float angle_cos = cos(-box[4]), - angle_sin = - sin(-box[4]); // rotate the point in the opposite direction of box - float rot_x = - (p.x - center_x) * angle_cos - (p.y - center_y) * angle_sin + center_x; - float rot_y = - (p.x - center_x) * angle_sin + (p.y - center_y) * angle_cos + center_y; - - return (rot_x > box[0] - MARGIN && rot_x < box[2] + MARGIN && - rot_y > box[1] - MARGIN && rot_y < box[3] + MARGIN); + // params: box (7) [x, y, z, dx, dy, dz, heading] + const float MARGIN = 1e-2; + + float center_x = box[0], center_y = box[1]; + // rotate the point in the opposite direction of box + float angle_cos = cos(-box[6]), angle_sin = sin(-box[6]); + float rot_x = (p.x - center_x) * angle_cos + (p.y - center_y) * (-angle_sin); + float rot_y = (p.x - center_x) * angle_sin + (p.y - center_y) * angle_cos; + + return (fabs(rot_x) < box[3] / 2 + MARGIN && + fabs(rot_y) < box[4] / 2 + MARGIN); } __device__ inline int intersection(const Point &p1, const Point &p0, @@ -116,16 +112,19 @@ __device__ inline int point_cmp(const Point &a, const Point &b, } __device__ inline float box_overlap(const float *box_a, const float *box_b) { - // params: box_a (5) [x1, y1, x2, y2, angle] - // params: box_b (5) [x1, y1, x2, y2, angle] + // params box_a: [x, y, z, dx, dy, dz, heading] + // params box_b: [x, y, z, dx, dy, dz, heading] - float a_x1 = box_a[0], a_y1 = box_a[1], a_x2 = box_a[2], a_y2 = box_a[3], - a_angle = box_a[4]; - float b_x1 = box_b[0], b_y1 = box_b[1], b_x2 = box_b[2], b_y2 = box_b[3], - b_angle = box_b[4]; + float a_angle = box_a[6], b_angle = box_b[6]; + float a_dx_half = box_a[3] / 2, b_dx_half = box_b[3] / 2, + a_dy_half = box_a[4] / 2, b_dy_half = box_b[4] / 2; + float a_x1 = box_a[0] - a_dx_half, a_y1 = box_a[1] - a_dy_half; + float a_x2 = box_a[0] + a_dx_half, a_y2 = box_a[1] + a_dy_half; + float b_x1 = box_b[0] - b_dx_half, b_y1 = box_b[1] - b_dy_half; + float b_x2 = box_b[0] + b_dx_half, b_y2 = box_b[1] + b_dy_half; - Point center_a((a_x1 + a_x2) / 2, (a_y1 + a_y2) / 2); - Point center_b((b_x1 + b_x2) / 2, (b_y1 + b_y2) / 2); + Point center_a(box_a[0], box_a[1]); + Point center_b(box_b[0], box_b[1]); Point box_a_corners[5]; box_a_corners[0].set(a_x1, a_y1); @@ -209,10 +208,10 @@ __device__ inline float box_overlap(const float *box_a, const float *box_b) { } __device__ inline float iou_bev(const float *box_a, const float *box_b) { - // params: box_a (5) [x1, y1, x2, y2, angle] - // params: box_b (5) [x1, y1, x2, y2, angle] - float sa = (box_a[2] - box_a[0]) * (box_a[3] - box_a[1]); - float sb = (box_b[2] - box_b[0]) * (box_b[3] - box_b[1]); + // params box_a: [x, y, z, dx, dy, dz, heading] + // params box_b: [x, y, z, dx, dy, dz, heading] + float sa = box_a[3] * box_a[4]; + float sb = box_b[3] * box_b[4]; float s_overlap = box_overlap(box_a, box_b); return s_overlap / fmaxf(sa + sb - s_overlap, EPS); } @@ -220,149 +219,148 @@ __device__ inline float iou_bev(const float *box_a, const float *box_b) { __global__ void iou3d_boxes_overlap_bev_forward_cuda_kernel( const int num_a, const float *boxes_a, const int num_b, const float *boxes_b, float *ans_overlap) { - const int a_idx = blockIdx.y * THREADS_PER_BLOCK + threadIdx.y; - const int b_idx = blockIdx.x * THREADS_PER_BLOCK + threadIdx.x; - - if (a_idx >= num_a || b_idx >= num_b) { - return; - } - const float *cur_box_a = boxes_a + a_idx * 5; - const float *cur_box_b = boxes_b + b_idx * 5; - float s_overlap = box_overlap(cur_box_a, cur_box_b); - ans_overlap[a_idx * num_b + b_idx] = s_overlap; -} - -__global__ void iou3d_boxes_iou_bev_forward_cuda_kernel(const int num_a, - const float *boxes_a, - const int num_b, - const float *boxes_b, - float *ans_iou) { - const int a_idx = blockIdx.y * THREADS_PER_BLOCK + threadIdx.y; - const int b_idx = blockIdx.x * THREADS_PER_BLOCK + threadIdx.x; + // params boxes_a: (N, 7) [x, y, z, dx, dy, dz, heading] + // params boxes_b: (M, 7) [x, y, z, dx, dy, dz, heading] + CUDA_2D_KERNEL_LOOP(b_idx, num_b, a_idx, num_a) { + if (a_idx >= num_a || b_idx >= num_b) { + return; + } - if (a_idx >= num_a || b_idx >= num_b) { - return; + const float *cur_box_a = boxes_a + a_idx * 7; + const float *cur_box_b = boxes_b + b_idx * 7; + float cur_overlap = box_overlap(cur_box_a, cur_box_b); + ans_overlap[a_idx * num_b + b_idx] = cur_overlap; } - - const float *cur_box_a = boxes_a + a_idx * 5; - const float *cur_box_b = boxes_b + b_idx * 5; - float cur_iou_bev = iou_bev(cur_box_a, cur_box_b); - ans_iou[a_idx * num_b + b_idx] = cur_iou_bev; } -__global__ void nms_forward_cuda_kernel(const int boxes_num, - const float nms_overlap_thresh, - const float *boxes, - unsigned long long *mask) { - // params: boxes (N, 5) [x1, y1, x2, y2, ry] +__global__ void iou3d_nms3d_forward_cuda_kernel(const int boxes_num, + const float nms_overlap_thresh, + const float *boxes, + unsigned long long *mask) { + // params: boxes (N, 7) [x, y, z, dx, dy, dz, heading] // params: mask (N, N/THREADS_PER_BLOCK_NMS) + const int blocks = + (boxes_num + THREADS_PER_BLOCK_NMS - 1) / THREADS_PER_BLOCK_NMS; + CUDA_2D_KERNEL_BLOCK_LOOP(col_start, blocks, row_start, blocks) { + // if (row_start > col_start) return; + + const int row_size = fminf(boxes_num - row_start * THREADS_PER_BLOCK_NMS, + THREADS_PER_BLOCK_NMS); + const int col_size = fminf(boxes_num - col_start * THREADS_PER_BLOCK_NMS, + THREADS_PER_BLOCK_NMS); + + __shared__ float block_boxes[THREADS_PER_BLOCK_NMS * 7]; + + if (threadIdx.x < col_size) { + block_boxes[threadIdx.x * 7 + 0] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 0]; + block_boxes[threadIdx.x * 7 + 1] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 1]; + block_boxes[threadIdx.x * 7 + 2] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 2]; + block_boxes[threadIdx.x * 7 + 3] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 3]; + block_boxes[threadIdx.x * 7 + 4] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 4]; + block_boxes[threadIdx.x * 7 + 5] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 5]; + block_boxes[threadIdx.x * 7 + 6] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 6]; + } + __syncthreads(); - const int row_start = blockIdx.y; - const int col_start = blockIdx.x; - - // if (row_start > col_start) return; - - const int row_size = fminf(boxes_num - row_start * THREADS_PER_BLOCK_NMS, - THREADS_PER_BLOCK_NMS); - const int col_size = fminf(boxes_num - col_start * THREADS_PER_BLOCK_NMS, - THREADS_PER_BLOCK_NMS); - - __shared__ float block_boxes[THREADS_PER_BLOCK_NMS * 5]; - - if (threadIdx.x < col_size) { - block_boxes[threadIdx.x * 5 + 0] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 0]; - block_boxes[threadIdx.x * 5 + 1] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 1]; - block_boxes[threadIdx.x * 5 + 2] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 2]; - block_boxes[threadIdx.x * 5 + 3] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 3]; - block_boxes[threadIdx.x * 5 + 4] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 4]; - } - __syncthreads(); - - if (threadIdx.x < row_size) { - const int cur_box_idx = THREADS_PER_BLOCK_NMS * row_start + threadIdx.x; - const float *cur_box = boxes + cur_box_idx * 5; + if (threadIdx.x < row_size) { + const int cur_box_idx = THREADS_PER_BLOCK_NMS * row_start + threadIdx.x; + const float *cur_box = boxes + cur_box_idx * 7; - int i = 0; - unsigned long long t = 0; - int start = 0; - if (row_start == col_start) { - start = threadIdx.x + 1; - } - for (i = start; i < col_size; i++) { - if (iou_bev(cur_box, block_boxes + i * 5) > nms_overlap_thresh) { - t |= 1ULL << i; + int i = 0; + unsigned long long t = 0; + int start = 0; + if (row_start == col_start) { + start = threadIdx.x + 1; } + for (i = start; i < col_size; i++) { + if (iou_bev(cur_box, block_boxes + i * 7) > nms_overlap_thresh) { + t |= 1ULL << i; + } + } + const int col_blocks = + (boxes_num + THREADS_PER_BLOCK_NMS - 1) / THREADS_PER_BLOCK_NMS; + mask[cur_box_idx * col_blocks + col_start] = t; } - const int col_blocks = DIVUP(boxes_num, THREADS_PER_BLOCK_NMS); - mask[cur_box_idx * col_blocks + col_start] = t; } } __device__ inline float iou_normal(float const *const a, float const *const b) { - float left = fmaxf(a[0], b[0]), right = fminf(a[2], b[2]); - float top = fmaxf(a[1], b[1]), bottom = fminf(a[3], b[3]); + // params: a: [x, y, z, dx, dy, dz, heading] + // params: b: [x, y, z, dx, dy, dz, heading] + + float left = fmaxf(a[0] - a[3] / 2, b[0] - b[3] / 2), + right = fminf(a[0] + a[3] / 2, b[0] + b[3] / 2); + float top = fmaxf(a[1] - a[4] / 2, b[1] - b[4] / 2), + bottom = fminf(a[1] + a[4] / 2, b[1] + b[4] / 2); float width = fmaxf(right - left, 0.f), height = fmaxf(bottom - top, 0.f); float interS = width * height; - float Sa = (a[2] - a[0]) * (a[3] - a[1]); - float Sb = (b[2] - b[0]) * (b[3] - b[1]); + float Sa = a[3] * a[4]; + float Sb = b[3] * b[4]; return interS / fmaxf(Sa + Sb - interS, EPS); } -__global__ void nms_normal_forward_cuda_kernel(const int boxes_num, - const float nms_overlap_thresh, - const float *boxes, - unsigned long long *mask) { - // params: boxes (N, 5) [x1, y1, x2, y2, ry] +__global__ void iou3d_nms3d_normal_forward_cuda_kernel( + const int boxes_num, const float nms_overlap_thresh, const float *boxes, + unsigned long long *mask) { + // params: boxes (N, 7) [x, y, z, dx, dy, dz, heading] // params: mask (N, N/THREADS_PER_BLOCK_NMS) - const int row_start = blockIdx.y; - const int col_start = blockIdx.x; - - // if (row_start > col_start) return; - - const int row_size = fminf(boxes_num - row_start * THREADS_PER_BLOCK_NMS, - THREADS_PER_BLOCK_NMS); - const int col_size = fminf(boxes_num - col_start * THREADS_PER_BLOCK_NMS, - THREADS_PER_BLOCK_NMS); - - __shared__ float block_boxes[THREADS_PER_BLOCK_NMS * 5]; - - if (threadIdx.x < col_size) { - block_boxes[threadIdx.x * 5 + 0] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 0]; - block_boxes[threadIdx.x * 5 + 1] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 1]; - block_boxes[threadIdx.x * 5 + 2] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 2]; - block_boxes[threadIdx.x * 5 + 3] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 3]; - block_boxes[threadIdx.x * 5 + 4] = - boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 5 + 4]; - } - __syncthreads(); + const int blocks = + (boxes_num + THREADS_PER_BLOCK_NMS - 1) / THREADS_PER_BLOCK_NMS; + CUDA_2D_KERNEL_BLOCK_LOOP(col_start, blocks, row_start, blocks) { + // if (row_start > col_start) return; + + const int row_size = fminf(boxes_num - row_start * THREADS_PER_BLOCK_NMS, + THREADS_PER_BLOCK_NMS); + const int col_size = fminf(boxes_num - col_start * THREADS_PER_BLOCK_NMS, + THREADS_PER_BLOCK_NMS); + + __shared__ float block_boxes[THREADS_PER_BLOCK_NMS * 7]; + + if (threadIdx.x < col_size) { + block_boxes[threadIdx.x * 7 + 0] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 0]; + block_boxes[threadIdx.x * 7 + 1] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 1]; + block_boxes[threadIdx.x * 7 + 2] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 2]; + block_boxes[threadIdx.x * 7 + 3] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 3]; + block_boxes[threadIdx.x * 7 + 4] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 4]; + block_boxes[threadIdx.x * 7 + 5] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 5]; + block_boxes[threadIdx.x * 7 + 6] = + boxes[(THREADS_PER_BLOCK_NMS * col_start + threadIdx.x) * 7 + 6]; + } + __syncthreads(); - if (threadIdx.x < row_size) { - const int cur_box_idx = THREADS_PER_BLOCK_NMS * row_start + threadIdx.x; - const float *cur_box = boxes + cur_box_idx * 5; + if (threadIdx.x < row_size) { + const int cur_box_idx = THREADS_PER_BLOCK_NMS * row_start + threadIdx.x; + const float *cur_box = boxes + cur_box_idx * 7; - int i = 0; - unsigned long long t = 0; - int start = 0; - if (row_start == col_start) { - start = threadIdx.x + 1; - } - for (i = start; i < col_size; i++) { - if (iou_normal(cur_box, block_boxes + i * 5) > nms_overlap_thresh) { - t |= 1ULL << i; + int i = 0; + unsigned long long t = 0; + int start = 0; + if (row_start == col_start) { + start = threadIdx.x + 1; + } + for (i = start; i < col_size; i++) { + if (iou_normal(cur_box, block_boxes + i * 7) > nms_overlap_thresh) { + t |= 1ULL << i; + } } + const int col_blocks = + (boxes_num + THREADS_PER_BLOCK_NMS - 1) / THREADS_PER_BLOCK_NMS; + mask[cur_box_idx * col_blocks + col_start] = t; } - const int col_blocks = DIVUP(boxes_num, THREADS_PER_BLOCK_NMS); - mask[cur_box_idx * col_blocks + col_start] = t; } } diff --git a/mmcv/ops/csrc/common/cuda/knn_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/knn_cuda_kernel.cuh index 3181aa6..3cf52bb 100644 --- a/mmcv/ops/csrc/common/cuda/knn_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/knn_cuda_kernel.cuh @@ -51,40 +51,41 @@ __global__ void knn_forward_cuda_kernel(int b, int n, int m, int nsample, const T *xyz, const T *new_xyz, int *__restrict__ idx, T *dist2) { int bs_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= b || pt_idx >= m) return; + CUDA_1D_KERNEL_LOOP(pt_idx, m) { + if (bs_idx >= b) return; - new_xyz += bs_idx * m * 3 + pt_idx * 3; - xyz += bs_idx * n * 3; - idx += bs_idx * m * nsample + pt_idx * nsample; - dist2 += bs_idx * m * nsample + pt_idx * nsample; + new_xyz += bs_idx * m * 3 + pt_idx * 3; + xyz += bs_idx * n * 3; + idx += bs_idx * m * nsample + pt_idx * nsample; + dist2 += bs_idx * m * nsample + pt_idx * nsample; - T new_x = new_xyz[0]; - T new_y = new_xyz[1]; - T new_z = new_xyz[2]; + T new_x = new_xyz[0]; + T new_y = new_xyz[1]; + T new_z = new_xyz[2]; - float best_dist[100]; - int best_idx[100]; - for (int i = 0; i < nsample; i++) { - best_dist[i] = 1e10; - best_idx[i] = 0; - } - for (int i = 0; i < n; i++) { - T x = xyz[i * 3 + 0]; - T y = xyz[i * 3 + 1]; - T z = xyz[i * 3 + 2]; - T d2 = (new_x - x) * (new_x - x) + (new_y - y) * (new_y - y) + - (new_z - z) * (new_z - z); - if (d2 < best_dist[0]) { - best_dist[0] = d2; - best_idx[0] = i; - reheap(best_dist, best_idx, nsample); + float best_dist[100]; + int best_idx[100]; + for (int i = 0; i < nsample; i++) { + best_dist[i] = 1e10; + best_idx[i] = 0; + } + for (int i = 0; i < n; i++) { + T x = xyz[i * 3 + 0]; + T y = xyz[i * 3 + 1]; + T z = xyz[i * 3 + 2]; + T d2 = (new_x - x) * (new_x - x) + (new_y - y) * (new_y - y) + + (new_z - z) * (new_z - z); + if (d2 < best_dist[0]) { + best_dist[0] = d2; + best_idx[0] = i; + reheap(best_dist, best_idx, nsample); + } + } + heap_sort(best_dist, best_idx, nsample); + for (int i = 0; i < nsample; i++) { + idx[i] = best_idx[i]; + dist2[i] = best_dist[i]; } - } - heap_sort(best_dist, best_idx, nsample); - for (int i = 0; i < nsample; i++) { - idx[i] = best_idx[i]; - dist2[i] = best_dist[i]; } } diff --git a/mmcv/ops/csrc/common/cuda/min_area_polygons_cuda.cuh b/mmcv/ops/csrc/common/cuda/min_area_polygons_cuda.cuh new file mode 100644 index 0000000..df56e74 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/min_area_polygons_cuda.cuh @@ -0,0 +1,300 @@ +// Copyright (c) OpenMMLab. All rights reserved +#ifndef MIN_AREA_POLYGONS_CUDA_KERNEL_CUH +#define MIN_AREA_POLYGONS_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +#define MAXN 20 +__device__ const float PI = 3.1415926; + +struct Point { + float x, y; + __device__ Point() {} + __device__ Point(float x, float y) : x(x), y(y) {} +}; + +__device__ inline void swap1(Point *a, Point *b) { + Point temp; + temp.x = a->x; + temp.y = a->y; + + a->x = b->x; + a->y = b->y; + + b->x = temp.x; + b->y = temp.y; +} +__device__ inline float cross(Point o, Point a, Point b) { + return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y); +} + +__device__ inline float dis(Point a, Point b) { + return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); +} +__device__ inline void minBoundingRect(Point *ps, int n_points, float *minbox) { + float convex_points[2][MAXN]; + for (int j = 0; j < n_points; j++) { + convex_points[0][j] = ps[j].x; + } + for (int j = 0; j < n_points; j++) { + convex_points[1][j] = ps[j].y; + } + + Point edges[MAXN]; + float edges_angles[MAXN]; + float unique_angles[MAXN]; + int n_edges = n_points - 1; + int n_unique = 0; + int unique_flag = 0; + + for (int i = 0; i < n_edges; i++) { + edges[i].x = ps[i + 1].x - ps[i].x; + edges[i].y = ps[i + 1].y - ps[i].y; + } + for (int i = 0; i < n_edges; i++) { + edges_angles[i] = atan2((double)edges[i].y, (double)edges[i].x); + if (edges_angles[i] >= 0) { + edges_angles[i] = fmod((double)edges_angles[i], (double)PI / 2); + } else { + edges_angles[i] = + edges_angles[i] - (int)(edges_angles[i] / (PI / 2) - 1) * (PI / 2); + } + } + unique_angles[0] = edges_angles[0]; + n_unique += 1; + for (int i = 1; i < n_edges; i++) { + for (int j = 0; j < n_unique; j++) { + if (edges_angles[i] == unique_angles[j]) { + unique_flag += 1; + } + } + if (unique_flag == 0) { + unique_angles[n_unique] = edges_angles[i]; + n_unique += 1; + unique_flag = 0; + } else { + unique_flag = 0; + } + } + + float minarea = 1e12; + for (int i = 0; i < n_unique; i++) { + float R[2][2]; + float rot_points[2][MAXN]; + R[0][0] = cos(unique_angles[i]); + R[0][1] = sin(unique_angles[i]); + R[1][0] = -sin(unique_angles[i]); + R[1][1] = cos(unique_angles[i]); + // R x Points + for (int m = 0; m < 2; m++) { + for (int n = 0; n < n_points; n++) { + float sum = 0.0; + for (int k = 0; k < 2; k++) { + sum = sum + R[m][k] * convex_points[k][n]; + } + rot_points[m][n] = sum; + } + } + + // xmin; + float xmin, ymin, xmax, ymax; + xmin = 1e12; + for (int j = 0; j < n_points; j++) { + if (isinf(rot_points[0][j]) || isnan(rot_points[0][j])) { + continue; + } else { + if (rot_points[0][j] < xmin) { + xmin = rot_points[0][j]; + } + } + } + // ymin + ymin = 1e12; + for (int j = 0; j < n_points; j++) { + if (isinf(rot_points[1][j]) || isnan(rot_points[1][j])) { + continue; + } else { + if (rot_points[1][j] < ymin) { + ymin = rot_points[1][j]; + } + } + } + // xmax + xmax = -1e12; + for (int j = 0; j < n_points; j++) { + if (isinf(rot_points[0][j]) || isnan(rot_points[0][j])) { + continue; + } else { + if (rot_points[0][j] > xmax) { + xmax = rot_points[0][j]; + } + } + } + // ymax + ymax = -1e12; + for (int j = 0; j < n_points; j++) { + if (isinf(rot_points[1][j]) || isnan(rot_points[1][j])) { + continue; + } else { + if (rot_points[1][j] > ymax) { + ymax = rot_points[1][j]; + } + } + } + float area = (xmax - xmin) * (ymax - ymin); + if (area < minarea) { + minarea = area; + minbox[0] = unique_angles[i]; + minbox[1] = xmin; + minbox[2] = ymin; + minbox[3] = xmax; + minbox[4] = ymax; + } + } +} + +// convex_find +__device__ inline void Jarvis(Point *in_poly, int &n_poly) { + int n_input = n_poly; + Point input_poly[20]; + for (int i = 0; i < n_input; i++) { + input_poly[i].x = in_poly[i].x; + input_poly[i].y = in_poly[i].y; + } + Point p_max, p_k; + int max_index, k_index; + int Stack[20], top1, top2; + // float sign; + double sign; + Point right_point[10], left_point[10]; + + for (int i = 0; i < n_poly; i++) { + if (in_poly[i].y < in_poly[0].y || + in_poly[i].y == in_poly[0].y && in_poly[i].x < in_poly[0].x) { + Point *j = &(in_poly[0]); + Point *k = &(in_poly[i]); + swap1(j, k); + } + if (i == 0) { + p_max = in_poly[0]; + max_index = 0; + } + if (in_poly[i].y > p_max.y || + in_poly[i].y == p_max.y && in_poly[i].x > p_max.x) { + p_max = in_poly[i]; + max_index = i; + } + } + if (max_index == 0) { + max_index = 1; + p_max = in_poly[max_index]; + } + + k_index = 0, Stack[0] = 0, top1 = 0; + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top1]], in_poly[i], p_k); + if ((sign > 0) || ((sign == 0) && (dis(in_poly[Stack[top1]], in_poly[i]) > + dis(in_poly[Stack[top1]], p_k)))) { + p_k = in_poly[i]; + k_index = i; + } + } + top1++; + Stack[top1] = k_index; + } + + for (int i = 0; i <= top1; i++) { + right_point[i] = in_poly[Stack[i]]; + } + + k_index = 0, Stack[0] = 0, top2 = 0; + + while (k_index != max_index) { + p_k = p_max; + k_index = max_index; + for (int i = 1; i < n_poly; i++) { + sign = cross(in_poly[Stack[top2]], in_poly[i], p_k); + if ((sign < 0) || (sign == 0) && (dis(in_poly[Stack[top2]], in_poly[i]) > + dis(in_poly[Stack[top2]], p_k))) { + p_k = in_poly[i]; + k_index = i; + } + } + top2++; + Stack[top2] = k_index; + } + + for (int i = top2 - 1; i >= 0; i--) { + left_point[i] = in_poly[Stack[i]]; + } + + for (int i = 0; i < top1 + top2; i++) { + if (i <= top1) { + in_poly[i] = right_point[i]; + } else { + in_poly[i] = left_point[top2 - (i - top1)]; + } + } + n_poly = top1 + top2; +} + +template +__device__ inline void Findminbox(T const *const p, T *minpoints) { + Point ps1[MAXN]; + Point convex[MAXN]; + for (int i = 0; i < 9; i++) { + convex[i].x = p[i * 2]; + convex[i].y = p[i * 2 + 1]; + } + int n_convex = 9; + Jarvis(convex, n_convex); + int n1 = n_convex; + for (int i = 0; i < n1; i++) { + ps1[i].x = convex[i].x; + ps1[i].y = convex[i].y; + } + ps1[n1].x = convex[0].x; + ps1[n1].y = convex[0].y; + + float minbbox[5] = {0}; + minBoundingRect(ps1, n1 + 1, minbbox); + float angle = minbbox[0]; + float xmin = minbbox[1]; + float ymin = minbbox[2]; + float xmax = minbbox[3]; + float ymax = minbbox[4]; + float R[2][2]; + + R[0][0] = cos(angle); + R[0][1] = sin(angle); + R[1][0] = -sin(angle); + R[1][1] = cos(angle); + + minpoints[0] = xmax * R[0][0] + ymin * R[1][0]; + minpoints[1] = xmax * R[0][1] + ymin * R[1][1]; + minpoints[2] = xmin * R[0][0] + ymin * R[1][0]; + minpoints[3] = xmin * R[0][1] + ymin * R[1][1]; + minpoints[4] = xmin * R[0][0] + ymax * R[1][0]; + minpoints[5] = xmin * R[0][1] + ymax * R[1][1]; + minpoints[6] = xmax * R[0][0] + ymax * R[1][0]; + minpoints[7] = xmax * R[0][1] + ymax * R[1][1]; +} + +template +__global__ void min_area_polygons_cuda_kernel(const int ex_n_boxes, + const T *ex_boxes, T *minbox) { + CUDA_1D_KERNEL_LOOP(index, ex_n_boxes) { + const T *cur_box = ex_boxes + index * 18; + T *cur_min_box = minbox + index * 8; + Findminbox(cur_box, cur_min_box); + } +} + +#endif // MIN_AREA_POLYGONS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/ms_deform_attn_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/ms_deform_attn_cuda_kernel.cuh index aff1ea2..12225ff 100644 --- a/mmcv/ops/csrc/common/cuda/ms_deform_attn_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/ms_deform_attn_cuda_kernel.cuh @@ -14,11 +14,6 @@ #include "common_cuda_helper.hpp" #include "pytorch_cuda_helper.hpp" -const int CUDA_NUM_THREADS = 1024; -inline int GET_BLOCKS(const int N, const int num_threads) { - return (N + num_threads - 1) / num_threads; -} - template __device__ scalar_t ms_deform_attn_im2col_bilinear( const scalar_t *&bottom_data, const int &height, const int &width, @@ -267,10 +262,11 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v1( const int channels, const int num_levels, const int num_query, const int num_point, scalar_t *grad_value, scalar_t *grad_sampling_loc, scalar_t *grad_attn_weight) { + __shared__ scalar_t cache_grad_sampling_loc[blockSize * 2]; + __shared__ scalar_t cache_grad_attn_weight[blockSize]; + unsigned int tid = threadIdx.x; + const int qid_stride = num_heads * channels; CUDA_1D_KERNEL_LOOP(index, n) { - __shared__ scalar_t cache_grad_sampling_loc[blockSize * 2]; - __shared__ scalar_t cache_grad_attn_weight[blockSize]; - unsigned int tid = threadIdx.x; int _temp = index; const int c_col = _temp % channels; _temp /= channels; @@ -285,11 +281,11 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v1( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; - const int qid_stride = num_heads * channels; const int data_value_ptr_init_offset = b_col * spatial_size * qid_stride; for (int l_col = 0; l_col < num_levels; ++l_col) { @@ -326,23 +322,23 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v1( _grad_h = cache_grad_sampling_loc[1], _grad_a = cache_grad_attn_weight[0]; int sid = 2; - for (unsigned int tid = 1; tid < blockSize; ++tid) { + for (unsigned int _tid = 1; _tid < blockSize; ++_tid) { _grad_w += cache_grad_sampling_loc[sid]; _grad_h += cache_grad_sampling_loc[sid + 1]; - _grad_a += cache_grad_attn_weight[tid]; + _grad_a += cache_grad_attn_weight[_tid]; sid += 2; } - *grad_sampling_loc = _grad_w; - *(grad_sampling_loc + 1) = _grad_h; - *grad_attn_weight = _grad_a; + *grad_sampling_loc_out = _grad_w; + *(grad_sampling_loc_out + 1) = _grad_h; + *grad_attn_weight_out = _grad_a; } __syncthreads(); data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } @@ -357,10 +353,10 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v2( const int channels, const int num_levels, const int num_query, const int num_point, scalar_t *grad_value, scalar_t *grad_sampling_loc, scalar_t *grad_attn_weight) { + __shared__ scalar_t cache_grad_sampling_loc[blockSize * 2]; + __shared__ scalar_t cache_grad_attn_weight[blockSize]; + unsigned int tid = threadIdx.x; CUDA_1D_KERNEL_LOOP(index, n) { - __shared__ scalar_t cache_grad_sampling_loc[blockSize * 2]; - __shared__ scalar_t cache_grad_attn_weight[blockSize]; - unsigned int tid = threadIdx.x; int _temp = index; const int c_col = _temp % channels; _temp /= channels; @@ -375,8 +371,9 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v2( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; const int qid_stride = num_heads * channels; @@ -425,16 +422,16 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_blocksize_aware_reduce_v2( } if (tid == 0) { - *grad_sampling_loc = cache_grad_sampling_loc[0]; - *(grad_sampling_loc + 1) = cache_grad_sampling_loc[1]; - *grad_attn_weight = cache_grad_attn_weight[0]; + *grad_sampling_loc_out = cache_grad_sampling_loc[0]; + *(grad_sampling_loc_out + 1) = cache_grad_sampling_loc[1]; + *grad_attn_weight_out = cache_grad_attn_weight[0]; } __syncthreads(); data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } @@ -449,11 +446,11 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v1( const int channels, const int num_levels, const int num_query, const int num_point, scalar_t *grad_value, scalar_t *grad_sampling_loc, scalar_t *grad_attn_weight) { + extern __shared__ int _s[]; + scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); + scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; + unsigned int tid = threadIdx.x; CUDA_1D_KERNEL_LOOP(index, n) { - extern __shared__ int _s[]; - scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); - scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; - unsigned int tid = threadIdx.x; int _temp = index; const int c_col = _temp % channels; _temp /= channels; @@ -468,8 +465,9 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v1( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; const int qid_stride = num_heads * channels; @@ -509,23 +507,23 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v1( _grad_h = cache_grad_sampling_loc[1], _grad_a = cache_grad_attn_weight[0]; int sid = 2; - for (unsigned int tid = 1; tid < blockDim.x; ++tid) { + for (unsigned int _tid = 1; _tid < blockDim.x; ++_tid) { _grad_w += cache_grad_sampling_loc[sid]; _grad_h += cache_grad_sampling_loc[sid + 1]; - _grad_a += cache_grad_attn_weight[tid]; + _grad_a += cache_grad_attn_weight[_tid]; sid += 2; } - *grad_sampling_loc = _grad_w; - *(grad_sampling_loc + 1) = _grad_h; - *grad_attn_weight = _grad_a; + *grad_sampling_loc_out = _grad_w; + *(grad_sampling_loc_out + 1) = _grad_h; + *grad_attn_weight_out = _grad_a; } __syncthreads(); data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } @@ -540,11 +538,11 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2( const int channels, const int num_levels, const int num_query, const int num_point, scalar_t *grad_value, scalar_t *grad_sampling_loc, scalar_t *grad_attn_weight) { + extern __shared__ int _s[]; + scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); + scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; + unsigned int tid = threadIdx.x; CUDA_1D_KERNEL_LOOP(index, n) { - extern __shared__ int _s[]; - scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); - scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; - unsigned int tid = threadIdx.x; int _temp = index; const int c_col = _temp % channels; _temp /= channels; @@ -559,8 +557,9 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; const int qid_stride = num_heads * channels; @@ -618,16 +617,16 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2( } if (tid == 0) { - *grad_sampling_loc = cache_grad_sampling_loc[0]; - *(grad_sampling_loc + 1) = cache_grad_sampling_loc[1]; - *grad_attn_weight = cache_grad_attn_weight[0]; + *grad_sampling_loc_out = cache_grad_sampling_loc[0]; + *(grad_sampling_loc_out + 1) = cache_grad_sampling_loc[1]; + *grad_attn_weight_out = cache_grad_attn_weight[0]; } __syncthreads(); data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } @@ -642,11 +641,11 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2_multi_blocks( const int channels, const int num_levels, const int num_query, const int num_point, scalar_t *grad_value, scalar_t *grad_sampling_loc, scalar_t *grad_attn_weight) { + extern __shared__ int _s[]; + scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); + scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; + unsigned int tid = threadIdx.x; CUDA_1D_KERNEL_LOOP(index, n) { - extern __shared__ int _s[]; - scalar_t *cache_grad_sampling_loc = reinterpret_cast(_s); - scalar_t *cache_grad_attn_weight = cache_grad_sampling_loc + 2 * blockDim.x; - unsigned int tid = threadIdx.x; int _temp = index; const int c_col = _temp % channels; _temp /= channels; @@ -661,8 +660,9 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2_multi_blocks( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; const int qid_stride = num_heads * channels; @@ -720,16 +720,16 @@ __global__ void ms_deformable_col2im_gpu_kernel_shm_reduce_v2_multi_blocks( } if (tid == 0) { - atomicAdd(grad_sampling_loc, cache_grad_sampling_loc[0]); - atomicAdd(grad_sampling_loc + 1, cache_grad_sampling_loc[1]); - atomicAdd(grad_attn_weight, cache_grad_attn_weight[0]); + atomicAdd(grad_sampling_loc_out, cache_grad_sampling_loc[0]); + atomicAdd(grad_sampling_loc_out + 1, cache_grad_sampling_loc[1]); + atomicAdd(grad_attn_weight_out, cache_grad_attn_weight[0]); } __syncthreads(); data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } @@ -759,8 +759,9 @@ __global__ void ms_deformable_col2im_gpu_kernel_gm( int data_weight_ptr = sampling_index * num_levels * num_point; int data_loc_w_ptr = data_weight_ptr << 1; const int grad_sampling_ptr = data_weight_ptr; - grad_sampling_loc += grad_sampling_ptr << 1; - grad_attn_weight += grad_sampling_ptr; + scalar_t *grad_sampling_loc_out = + grad_sampling_loc + (grad_sampling_ptr << 1); + scalar_t *grad_attn_weight_out = grad_attn_weight + grad_sampling_ptr; const int grad_weight_stride = 1; const int grad_loc_stride = 2; const int qid_stride = num_heads * channels; @@ -787,12 +788,12 @@ __global__ void ms_deformable_col2im_gpu_kernel_gm( ms_deform_attn_col2im_bilinear_gm( data_value_ptr, spatial_h, spatial_w, num_heads, channels, h_im, w_im, m_col, c_col, top_grad, weight, grad_value_ptr, - grad_sampling_loc, grad_attn_weight); + grad_sampling_loc_out, grad_attn_weight_out); } data_weight_ptr += 1; data_loc_w_ptr += 2; - grad_attn_weight += grad_weight_stride; - grad_sampling_loc += grad_loc_stride; + grad_attn_weight_out += grad_weight_stride; + grad_sampling_loc_out += grad_loc_stride; } } } diff --git a/mmcv/ops/csrc/common/cuda/nms_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/nms_cuda_kernel.cuh index 40a2f46..0a5c250 100644 --- a/mmcv/ops/csrc/common/cuda/nms_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/nms_cuda_kernel.cuh @@ -30,45 +30,88 @@ __device__ inline bool devIoU(float const *const a, float const *const b, __global__ void nms_cuda(const int n_boxes, const float iou_threshold, const int offset, const float *dev_boxes, unsigned long long *dev_mask) { - const int row_start = blockIdx.y; - const int col_start = blockIdx.x; - const int tid = threadIdx.x; + int blocks = (n_boxes + threadsPerBlock - 1) / threadsPerBlock; + CUDA_2D_KERNEL_BLOCK_LOOP(col_start, blocks, row_start, blocks) { + const int tid = threadIdx.x; + + if (row_start > col_start) return; + + const int row_size = + fminf(n_boxes - row_start * threadsPerBlock, threadsPerBlock); + const int col_size = + fminf(n_boxes - col_start * threadsPerBlock, threadsPerBlock); + + __shared__ float block_boxes[threadsPerBlock * 4]; + if (tid < col_size) { + block_boxes[tid * 4 + 0] = + dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 0]; + block_boxes[tid * 4 + 1] = + dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 1]; + block_boxes[tid * 4 + 2] = + dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 2]; + block_boxes[tid * 4 + 3] = + dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 3]; + } + __syncthreads(); + + if (tid < row_size) { + const int cur_box_idx = threadsPerBlock * row_start + tid; + const float *cur_box = dev_boxes + cur_box_idx * 4; + int i = 0; + unsigned long long int t = 0; + int start = 0; + if (row_start == col_start) { + start = tid + 1; + } + for (i = start; i < col_size; i++) { + if (devIoU(cur_box, block_boxes + i * 4, offset, iou_threshold)) { + t |= 1ULL << i; + } + } + dev_mask[cur_box_idx * gridDim.y + col_start] = t; + } + } +} - if (row_start > col_start) return; +__global__ void gather_keep_from_mask(bool *keep, + const unsigned long long *dev_mask, + const int n_boxes) { + const int col_blocks = (n_boxes + threadsPerBlock - 1) / threadsPerBlock; + const int tid = threadIdx.x; - const int row_size = - fminf(n_boxes - row_start * threadsPerBlock, threadsPerBlock); - const int col_size = - fminf(n_boxes - col_start * threadsPerBlock, threadsPerBlock); + // mark the bboxes which have been removed. + extern __shared__ unsigned long long removed[]; - __shared__ float block_boxes[threadsPerBlock * 4]; - if (tid < col_size) { - block_boxes[tid * 4 + 0] = - dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 0]; - block_boxes[tid * 4 + 1] = - dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 1]; - block_boxes[tid * 4 + 2] = - dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 2]; - block_boxes[tid * 4 + 3] = - dev_boxes[(threadsPerBlock * col_start + tid) * 4 + 3]; + // initialize removed. + for (int i = tid; i < col_blocks; i += blockDim.x) { + removed[i] = 0; } __syncthreads(); - if (tid < row_size) { - const int cur_box_idx = threadsPerBlock * row_start + tid; - const float *cur_box = dev_boxes + cur_box_idx * 4; - int i = 0; - unsigned long long int t = 0; - int start = 0; - if (row_start == col_start) { - start = tid + 1; - } - for (i = start; i < col_size; i++) { - if (devIoU(cur_box, block_boxes + i * 4, offset, iou_threshold)) { - t |= 1ULL << i; + for (int nblock = 0; nblock < col_blocks; ++nblock) { + auto removed_val = removed[nblock]; + __syncthreads(); + const int i_offset = nblock * threadsPerBlock; +#pragma unroll + for (int inblock = 0; inblock < threadsPerBlock; ++inblock) { + const int i = i_offset + inblock; + if (i >= n_boxes) break; + // select a candidate, check if it should kept. + if (!(removed_val & (1ULL << inblock))) { + if (tid == 0) { + // mark the output. + keep[i] = true; + } + auto p = dev_mask + i * col_blocks; + // remove all bboxes which overlap the candidate. + for (int j = tid; j < col_blocks; j += blockDim.x) { + if (j >= nblock) removed[j] |= p[j]; + } + __syncthreads(); + removed_val = removed[nblock]; } } - dev_mask[cur_box_idx * gridDim.y + col_start] = t; } } + #endif // NMS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/nms_rotated_cuda.cuh b/mmcv/ops/csrc/common/cuda/nms_rotated_cuda.cuh index 80bed96..747327a 100644 --- a/mmcv/ops/csrc/common/cuda/nms_rotated_cuda.cuh +++ b/mmcv/ops/csrc/common/cuda/nms_rotated_cuda.cuh @@ -43,18 +43,16 @@ __global__ void nms_rotated_cuda_kernel(const int n_boxes, // (x_center, y_center, width, height, angle_degrees) here. __shared__ T block_boxes[threadsPerBlock * 5]; if (threadIdx.x < col_size) { - block_boxes[threadIdx.x * 6 + 0] = + block_boxes[threadIdx.x * 5 + 0] = dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 0]; - block_boxes[threadIdx.x * 6 + 1] = + block_boxes[threadIdx.x * 5 + 1] = dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 1]; - block_boxes[threadIdx.x * 6 + 2] = + block_boxes[threadIdx.x * 5 + 2] = dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 2]; - block_boxes[threadIdx.x * 6 + 3] = + block_boxes[threadIdx.x * 5 + 3] = dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 3]; - block_boxes[threadIdx.x * 6 + 4] = + block_boxes[threadIdx.x * 5 + 4] = dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 4]; - block_boxes[threadIdx.x * 6 + 5] = - dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 6 + 5]; } __syncthreads(); @@ -71,7 +69,7 @@ __global__ void nms_rotated_cuda_kernel(const int n_boxes, // Instead of devIoU used by original horizontal nms, here // we use the single_box_iou_rotated function from // box_iou_rotated_utils.h - if (single_box_iou_rotated(cur_box, block_boxes + i * 6, 0) > + if (single_box_iou_rotated(cur_box, block_boxes + i * 5, 0) > iou_threshold) { t |= 1ULL << i; } diff --git a/mmcv/ops/csrc/common/cuda/points_in_boxes_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/points_in_boxes_cuda_kernel.cuh index 12182cc..3423620 100644 --- a/mmcv/ops/csrc/common/cuda/points_in_boxes_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/points_in_boxes_cuda_kernel.cuh @@ -45,20 +45,21 @@ __global__ void points_in_boxes_part_forward_cuda_kernel( // (B, npoints), default -1 int bs_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= batch_size || pt_idx >= pts_num) return; + CUDA_1D_KERNEL_LOOP(pt_idx, pts_num) { + if (bs_idx >= batch_size) return; - boxes += bs_idx * boxes_num * 7; - pts += bs_idx * pts_num * 3 + pt_idx * 3; - box_idx_of_points += bs_idx * pts_num + pt_idx; + boxes += bs_idx * boxes_num * 7; + pts += bs_idx * pts_num * 3 + pt_idx * 3; + box_idx_of_points += bs_idx * pts_num + pt_idx; - T local_x = 0, local_y = 0; - int cur_in_flag = 0; - for (int k = 0; k < boxes_num; k++) { - cur_in_flag = check_pt_in_box3d(pts, boxes + k * 7, local_x, local_y); - if (cur_in_flag) { - box_idx_of_points[0] = k; - break; + T local_x = 0, local_y = 0; + int cur_in_flag = 0; + for (int k = 0; k < boxes_num; k++) { + cur_in_flag = check_pt_in_box3d(pts, boxes + k * 7, local_x, local_y); + if (cur_in_flag) { + box_idx_of_points[0] = k; + break; + } } } } @@ -73,19 +74,20 @@ __global__ void points_in_boxes_all_forward_cuda_kernel( // (B, npoints), default -1 int bs_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= batch_size || pt_idx >= pts_num) return; + CUDA_1D_KERNEL_LOOP(pt_idx, pts_num) { + if (bs_idx >= batch_size) return; - boxes += bs_idx * boxes_num * 7; - pts += bs_idx * pts_num * 3 + pt_idx * 3; - box_idx_of_points += bs_idx * pts_num * boxes_num + pt_idx * boxes_num; + boxes += bs_idx * boxes_num * 7; + pts += bs_idx * pts_num * 3 + pt_idx * 3; + box_idx_of_points += bs_idx * pts_num * boxes_num + pt_idx * boxes_num; - T local_x = 0, local_y = 0; - for (int k = 0; k < boxes_num; k++) { - const int cur_in_flag = - check_pt_in_box3d(pts, boxes + k * 7, local_x, local_y); - if (cur_in_flag) { - box_idx_of_points[k] = 1; + T local_x = 0, local_y = 0; + for (int k = 0; k < boxes_num; k++) { + const int cur_in_flag = + check_pt_in_box3d(pts, boxes + k * 7, local_x, local_y); + if (cur_in_flag) { + box_idx_of_points[k] = 1; + } } } } diff --git a/mmcv/ops/csrc/common/cuda/points_in_polygons_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/points_in_polygons_cuda_kernel.cuh new file mode 100644 index 0000000..a0769d7 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/points_in_polygons_cuda_kernel.cuh @@ -0,0 +1,79 @@ +// Copyright (c) OpenMMLab. All rights reserved +#ifndef POINTS_IN_POLYGONS_CUDA_KERNEL_CUH +#define POINTS_IN_POLYGONS_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +struct point { + float x, y; +}; + +template +__global__ void points_in_polygons_forward_cuda_kernel( + const int nthreads, const scalar_t *vertex1, const scalar_t *vertex2, + const int rows, const int cols, scalar_t *inside_flag) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + int row = index / cols; + int col = index % cols; + + const scalar_t *offset_vertex1 = vertex1 + row * 2; + const scalar_t *offset_vertex2 = vertex2 + col * 8; + + point point_[1]; + point polygon[4]; + + point_[0].x = offset_vertex1[0]; + point_[0].y = offset_vertex1[1]; + + polygon[0].x = offset_vertex2[0]; + polygon[0].y = offset_vertex2[1]; + polygon[1].x = offset_vertex2[2]; + polygon[1].y = offset_vertex2[3]; + polygon[2].x = offset_vertex2[4]; + polygon[2].y = offset_vertex2[5]; + polygon[3].x = offset_vertex2[6]; + polygon[3].y = offset_vertex2[7]; + + int nCross = 0; + int i, j; + float sx, sy, tx, ty, px, py, x; + for (i = 0, j = 3; i < 4; j = i, i++) { + sx = polygon[i].x; + sy = polygon[i].y; + tx = polygon[j].x; + ty = polygon[j].y; + + px = point_[0].x; + py = point_[0].y; + + if (py < min(sy, ty)) continue; + if (py > max(sy, ty)) continue; + + if ((sx == px && sy == py) || (tx == px && ty == py)) { + break; + } else { + if ((sy < py && ty >= py) || (sy >= py && ty < py)) { + x = sx + (py - sy) * (tx - sx) / (ty - sy); + if (x == px) { + break; + } + if (x > px) { + nCross++; + } + } + } + } + if (nCross % 2 == 1) { + inside_flag[index] = 1.0; + } else { + inside_flag[index] = 0.0; + } + return; + } +} + +#endif // POINTS_IN_POLYGONS_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/prroi_pool_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/prroi_pool_cuda_kernel.cuh new file mode 100644 index 0000000..ea8c37e --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/prroi_pool_cuda_kernel.cuh @@ -0,0 +1,381 @@ +// Copyright (c) OpenMMLab. All rights reserved +// Modified from +// https://github.com/vacancy/PreciseRoIPooling/blob/master/src/prroi_pooling_gpu_impl.cu +// Distributed under terms of the MIT license. +#ifndef PRROI_POOL_CUDA_KERNEL_CUH +#define PRROI_POOL_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +template +__device__ static __forceinline__ T PrRoIPoolingGetData(const T *data, + const int h, + const int w, + const int height, + const int width) { + bool overflow = (h < 0) || (w < 0) || (h >= height) || (w >= width); + T retVal = overflow ? 0.0f : data[h * width + w]; + return retVal; +} + +template +__device__ static __forceinline__ T PrRoIPoolingGetCoeff(T dh, T dw) { + return (1.0f - abs(dh)) * (1.0f - abs(dw)); +} + +template +__device__ static __forceinline__ T PrRoIPoolingSingleCoorIntegral(T s, T t, + T c1, T c2) { + return 0.5 * (t * t - s * s) * (c2 - c1) + (t - s) * c1; +} + +template +__device__ static T PrRoIPoolingInterpolation(const T *data, const T h, + const T w, const int height, + const int width) { + T retVal = 0.0f; + int h1 = floorf(h); + int w1 = floorf(w); + retVal += PrRoIPoolingGetData(data, h1, w1, height, width) * + PrRoIPoolingGetCoeff(h - T(h1), w - T(w1)); + h1 = floorf(h) + 1; + w1 = floorf(w); + retVal += PrRoIPoolingGetData(data, h1, w1, height, width) * + PrRoIPoolingGetCoeff(h - T(h1), w - T(w1)); + h1 = floorf(h); + w1 = floorf(w) + 1; + retVal += PrRoIPoolingGetData(data, h1, w1, height, width) * + PrRoIPoolingGetCoeff(h - T(h1), w - T(w1)); + h1 = floorf(h) + 1; + w1 = floorf(w) + 1; + retVal += PrRoIPoolingGetData(data, h1, w1, height, width) * + PrRoIPoolingGetCoeff(h - T(h1), w - T(w1)); + return retVal; +} + +template +__device__ static T PrRoIPoolingMatCalculation(const T *this_data, + const int s_h, const int s_w, + const int e_h, const int e_w, + const T y0, const T x0, + const T y1, const T x1, + const int h0, const int w0) { + T alpha, beta, lim_alpha, lim_beta, tmp; + T sum_out = 0; + + alpha = x0 - T(s_w); + beta = y0 - T(s_h); + lim_alpha = x1 - T(s_w); + lim_beta = y1 - T(s_h); + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + sum_out += PrRoIPoolingGetData(this_data, s_h, s_w, h0, w0) * tmp; + + alpha = T(e_w) - x1; + lim_alpha = T(e_w) - x0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + sum_out += PrRoIPoolingGetData(this_data, s_h, e_w, h0, w0) * tmp; + + alpha = x0 - T(s_w); + beta = T(e_h) - y1; + lim_alpha = x1 - T(s_w); + lim_beta = T(e_h) - y0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + sum_out += PrRoIPoolingGetData(this_data, e_h, s_w, h0, w0) * tmp; + + alpha = T(e_w) - x1; + lim_alpha = T(e_w) - x0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + sum_out += PrRoIPoolingGetData(this_data, e_h, e_w, h0, w0) * tmp; + + return sum_out; +} + +template +__device__ static void PrRoIPoolingDistributeDiff(T *diff, const T top_diff, + const int h, const int w, + const int height, + const int width, + const T coeff) { + bool overflow = (h < 0) || (w < 0) || (h >= height) || (w >= width); + if (!overflow) atomicAdd(diff + h * width + w, top_diff * coeff); +} + +template +__device__ static void PrRoIPoolingMatDistributeDiff( + T *diff, const T top_diff, const int s_h, const int s_w, const int e_h, + const int e_w, const T y0, const T x0, const T y1, const T x1, const int h0, + const int w0) { + T alpha, beta, lim_alpha, lim_beta, tmp; + + alpha = x0 - T(s_w); + beta = y0 - T(s_h); + lim_alpha = x1 - T(s_w); + lim_beta = y1 - T(s_h); + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + PrRoIPoolingDistributeDiff(diff, top_diff, s_h, s_w, h0, w0, tmp); + + alpha = T(e_w) - x1; + lim_alpha = T(e_w) - x0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + PrRoIPoolingDistributeDiff(diff, top_diff, s_h, e_w, h0, w0, tmp); + + alpha = x0 - T(s_w); + beta = T(e_h) - y1; + lim_alpha = x1 - T(s_w); + lim_beta = T(e_h) - y0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + PrRoIPoolingDistributeDiff(diff, top_diff, e_h, s_w, h0, w0, tmp); + + alpha = T(e_w) - x1; + lim_alpha = T(e_w) - x0; + tmp = (lim_alpha - 0.5f * lim_alpha * lim_alpha - alpha + + 0.5f * alpha * alpha) * + (lim_beta - 0.5f * lim_beta * lim_beta - beta + 0.5f * beta * beta); + PrRoIPoolingDistributeDiff(diff, top_diff, e_h, e_w, h0, w0, tmp); +} + +template +__global__ void prroi_pool_forward_cuda_kernel( + const int nthreads, const T *input, const T *rois, T *output, + const int pooled_height, const int pooled_width, const T spatial_scale, + const int channels, const int height, const int width) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + // (n, c, ph, pw) is an element in the pooled output + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int c = (index / pooled_width / pooled_height) % channels; + int n = index / pooled_width / pooled_height / channels; + + const T *offset_rois = rois + n * 5; + int roi_batch_ind = offset_rois[0]; + + T roi_x1 = offset_rois[1] * spatial_scale; + T roi_y1 = offset_rois[2] * spatial_scale; + T roi_x2 = offset_rois[3] * spatial_scale; + T roi_y2 = offset_rois[4] * spatial_scale; + + T roi_width = max(roi_x2 - roi_x1, ((T)0.0)); + T roi_height = max(roi_y2 - roi_y1, ((T)0.0)); + T bin_size_h = roi_height / static_cast(pooled_height); + T bin_size_w = roi_width / static_cast(pooled_width); + + const T *this_data = + input + (roi_batch_ind * channels + c) * height * width; + T *this_out = output + index; + + T bin_x1 = roi_x1 + bin_size_w * pw; + T bin_y1 = roi_y1 + bin_size_h * ph; + T bin_x2 = bin_x1 + bin_size_w; + T bin_y2 = bin_y1 + bin_size_h; + + T bin_size = max(T(0.0), bin_size_w * bin_size_h); + if (bin_size == 0) { + *this_out = 0; + continue; + } + + T sum_out = 0; + + int start_x, start_y, end_x, end_y; + + start_x = floorf(bin_x1); + end_x = ceilf(bin_x2); + start_y = floorf(bin_y1); + end_y = ceilf(bin_y2); + + for (int bin_x = start_x; bin_x < end_x; ++bin_x) + for (int bin_y = start_y; bin_y < end_y; ++bin_y) + sum_out += PrRoIPoolingMatCalculation( + this_data, bin_y, bin_x, bin_y + 1, bin_x + 1, + max(bin_y1, T(bin_y)), max(bin_x1, T(bin_x)), + min(bin_y2, T(bin_y) + 1.0f), min(bin_x2, T(bin_x + 1.0f)), height, + width); + *this_out = sum_out / bin_size; + } +} + +template +__global__ void prroi_pool_backward_cuda_kernel( + const int nthreads, const T *grad_output, const T *rois, T *grad_input, + const int pooled_height, const int pooled_width, const T spatial_scale, + const int channels, const int height, const int width) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + // (n, c, ph, pw) is an element in the pooled output + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int c = (index / pooled_width / pooled_height) % channels; + int n = index / pooled_width / pooled_height / channels; + rois += n * 5; + + int roi_batch_ind = rois[0]; + T roi_x1 = rois[1] * spatial_scale; + T roi_y1 = rois[2] * spatial_scale; + T roi_x2 = rois[3] * spatial_scale; + T roi_y2 = rois[4] * spatial_scale; + + T roi_width = max(roi_x2 - roi_x1, (T)0); + T roi_height = max(roi_y2 - roi_y1, (T)0); + T bin_size_h = roi_height / static_cast(pooled_height); + T bin_size_w = roi_width / static_cast(pooled_width); + + const T *this_out_grad = grad_output + index; + T *this_data_grad = + grad_input + (roi_batch_ind * channels + c) * height * width; + + T bin_x1 = roi_x1 + bin_size_w * pw; + T bin_y1 = roi_y1 + bin_size_h * ph; + T bin_x2 = bin_x1 + bin_size_w; + T bin_y2 = bin_y1 + bin_size_h; + + T bin_size = max(T(0.0), bin_size_w * bin_size_h); + + T sum_out = bin_size == T(0) ? T(0) : *this_out_grad / bin_size; + + int start_x, start_y, end_x, end_y; + + start_x = floorf(bin_x1); + end_x = ceilf(bin_x2); + start_y = floorf(bin_y1); + end_y = ceilf(bin_y2); + + for (int bin_x = start_x; bin_x < end_x; ++bin_x) + for (int bin_y = start_y; bin_y < end_y; ++bin_y) + PrRoIPoolingMatDistributeDiff( + this_data_grad, sum_out, bin_y, bin_x, bin_y + 1, bin_x + 1, + max(bin_y1, T(bin_y)), max(bin_x1, T(bin_x)), + min(bin_y2, T(bin_y) + 1.0f), min(bin_x2, T(bin_x + 1.0f)), height, + width); + } +} + +template +__global__ void prroi_pool_coor_backward_cuda_kernel( + const int nthreads, const T *output, const T *grad_output, const T *input, + const T *rois, T *grad_rois, const int pooled_height, + const int pooled_width, const T spatial_scale, const int channels, + const int height, const int width) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + // (n, c, ph, pw) is an element in the pooled output + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int c = (index / pooled_width / pooled_height) % channels; + int n = index / pooled_width / pooled_height / channels; + rois += n * 5; + + int roi_batch_ind = rois[0]; + T roi_x1 = rois[1] * spatial_scale; + T roi_y1 = rois[2] * spatial_scale; + T roi_x2 = rois[3] * spatial_scale; + T roi_y2 = rois[4] * spatial_scale; + + T roi_width = max(roi_x2 - roi_x1, (T)0); + T roi_height = max(roi_y2 - roi_y1, (T)0); + T bin_size_h = roi_height / static_cast(pooled_height); + T bin_size_w = roi_width / static_cast(pooled_width); + + const T output_grad_val = grad_output[index]; + const T *this_input_data = + input + (roi_batch_ind * channels + c) * height * width; + const T output_val = output[index]; + T *this_rois_grad = grad_rois + n * 5; + + T bin_x1 = roi_x1 + bin_size_w * pw; + T bin_y1 = roi_y1 + bin_size_h * ph; + T bin_x2 = bin_x1 + bin_size_w; + T bin_y2 = bin_y1 + bin_size_h; + + T bin_size = max(T(0.0), bin_size_w * bin_size_h); + + T sum_out = bin_size == T(0) ? T(0) : output_grad_val / bin_size; + + // WARNING: to be discussed + if (sum_out == 0) return; + + int start_x, start_y, end_x, end_y; + + start_x = floorf(bin_x1); + end_x = ceilf(bin_x2); + start_y = floorf(bin_y1); + end_y = ceilf(bin_y2); + + T grad_x1_y = 0, grad_x2_y = 0, grad_x_y1 = 0, grad_x_y2 = 0; + for (int bin_y = start_y; bin_y < end_y; ++bin_y) { + grad_x1_y += PrRoIPoolingSingleCoorIntegral( + max(bin_y1, T(bin_y)) - bin_y, min(bin_y2, T(bin_y + 1)) - bin_y, + PrRoIPoolingInterpolation(this_input_data, float(bin_y), bin_x1, + height, width), + PrRoIPoolingInterpolation(this_input_data, float(bin_y + 1), bin_x1, + height, width)); + + grad_x2_y += PrRoIPoolingSingleCoorIntegral( + max(bin_y1, T(bin_y)) - bin_y, min(bin_y2, T(bin_y + 1)) - bin_y, + PrRoIPoolingInterpolation(this_input_data, float(bin_y), bin_x2, + height, width), + PrRoIPoolingInterpolation(this_input_data, float(bin_y + 1), bin_x2, + height, width)); + } + + for (int bin_x = start_x; bin_x < end_x; ++bin_x) { + grad_x_y1 += PrRoIPoolingSingleCoorIntegral( + max(bin_x1, T(bin_x)) - bin_x, min(bin_x2, T(bin_x + 1)) - bin_x, + PrRoIPoolingInterpolation(this_input_data, bin_y1, float(bin_x), + height, width), + PrRoIPoolingInterpolation(this_input_data, bin_y1, float(bin_x + 1), + height, width)); + + grad_x_y2 += PrRoIPoolingSingleCoorIntegral( + max(bin_x1, T(bin_x)) - bin_x, min(bin_x2, T(bin_x + 1)) - bin_x, + PrRoIPoolingInterpolation(this_input_data, bin_y2, float(bin_x), + height, width), + PrRoIPoolingInterpolation(this_input_data, bin_y2, float(bin_x + 1), + height, width)); + } + + T partial_x1 = -grad_x1_y + (bin_y2 - bin_y1) * output_val; + T partial_y1 = -grad_x_y1 + (bin_x2 - bin_x1) * output_val; + T partial_x2 = grad_x2_y - (bin_y2 - bin_y1) * output_val; + T partial_y2 = grad_x_y2 - (bin_x2 - bin_x1) * output_val; + + partial_x1 = partial_x1 / bin_size * spatial_scale; + partial_x2 = partial_x2 / bin_size * spatial_scale; + partial_y1 = partial_y1 / bin_size * spatial_scale; + partial_y2 = partial_y2 / bin_size * spatial_scale; + + // (index, x1, y1, x2, y2) + this_rois_grad[0] = 0; + atomicAdd(this_rois_grad + 1, + (partial_x1 * (1.0f - T(pw) / pooled_width) + + partial_x2 * (1.0f - T(pw + 1) / pooled_width)) * + output_grad_val); + atomicAdd(this_rois_grad + 2, + (partial_y1 * (1.0f - T(ph) / pooled_height) + + partial_y2 * (1.0f - T(ph + 1) / pooled_height)) * + output_grad_val); + atomicAdd(this_rois_grad + 3, (partial_x2 * T(pw + 1) / pooled_width + + partial_x1 * T(pw) / pooled_width) * + output_grad_val); + atomicAdd(this_rois_grad + 4, (partial_y2 * T(ph + 1) / pooled_height + + partial_y1 * T(ph) / pooled_height) * + output_grad_val); + } +} + +#endif // ROI_POOL_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/riroi_align_rotated_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/riroi_align_rotated_cuda_kernel.cuh new file mode 100644 index 0000000..4383d9e --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/riroi_align_rotated_cuda_kernel.cuh @@ -0,0 +1,242 @@ +// Modified from +// https://github.com/csuhan/ReDet/blob/master/mmdet/ops/riroi_align/src/riroi_align_kernel.cu +#ifndef RIROI_ALIGN_ROTATED_CUDA_KERNEL_CUH +#define RIROI_ALIGN_ROTATED_CUDA_KERNEL_CUH + +#include +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else // MMCV_USE_PARROTS +#include "pytorch_cuda_helper.hpp" +#endif // MMCV_USE_PARROTS + +/*** Forward ***/ +template +__global__ void riroi_align_rotated_forward_cuda_kernel( + const int nthreads, const scalar_t *bottom_data, + const scalar_t *bottom_rois, const scalar_t spatial_scale, + const int num_samples, const bool clockwise, const int channels, + const int height, const int width, const int pooled_height, + const int pooled_width, const int num_orientations, scalar_t *top_data) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + // (n, c, ph, pw) is an element in the pooled output + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int o = (index / pooled_width / pooled_height) % num_orientations; + int c = + (index / pooled_width / pooled_height / num_orientations) % channels; + int n = index / pooled_width / pooled_height / num_orientations / channels; + + const scalar_t *offset_bottom_rois = bottom_rois + n * 6; + int roi_batch_ind = offset_bottom_rois[0]; + + // Do not using rounding; this implementation detail is critical + scalar_t roi_center_w = offset_bottom_rois[1] * spatial_scale; + scalar_t roi_center_h = offset_bottom_rois[2] * spatial_scale; + scalar_t roi_width = offset_bottom_rois[3] * spatial_scale; + scalar_t roi_height = offset_bottom_rois[4] * spatial_scale; + // scalar_t theta = offset_bottom_rois[5] * M_PI / 180.0; + scalar_t theta = offset_bottom_rois[5]; + // Force malformed ROIs to be 1x1 + roi_width = max(roi_width, (scalar_t)1.); + roi_height = max(roi_height, (scalar_t)1.); + scalar_t bin_size_h = static_cast(roi_height) / + static_cast(pooled_height); + scalar_t bin_size_w = + static_cast(roi_width) / static_cast(pooled_width); + + // find aligned index + scalar_t ind_float = theta * num_orientations / (2 * M_PI); + int ind = floorf(ind_float); + scalar_t l_var = ind_float - (scalar_t)ind; + scalar_t r_var = 1.0 - l_var; + // correct start channel + ind = (ind + num_orientations) % num_orientations; + // rotated channel + int ind_rot = (o - ind + num_orientations) % num_orientations; + int ind_rot_plus = (ind_rot + 1 + num_orientations) % num_orientations; + const scalar_t *offset_bottom_data = + bottom_data + (roi_batch_ind * channels * num_orientations + + c * num_orientations + ind_rot) * + height * width; + + const scalar_t *offset_bottom_data_plus = + bottom_data + (roi_batch_ind * channels * num_orientations + + c * num_orientations + ind_rot_plus) * + height * width; + // We use roi_bin_grid to sample the grid and mimic integral + int roi_bin_grid_h = (num_samples > 0) + ? num_samples + : ceilf(roi_height / pooled_height); // e.g., = 2 + int roi_bin_grid_w = + (num_samples > 0) ? num_samples : ceilf(roi_width / pooled_width); + + // roi_start_h and roi_start_w are computed wrt the center of RoI (x, y). + // Appropriate translation needs to be applied after. + if (clockwise) { + theta = -theta; // If clockwise, the angle needs to be reversed. + } + scalar_t roi_start_h = -roi_height / 2.0; + scalar_t roi_start_w = -roi_width / 2.0; + scalar_t cosscalar_theta = cos(theta); + scalar_t sinscalar_theta = sin(theta); + + // We do average (integral) pooling inside a bin + const scalar_t count = max(roi_bin_grid_h * roi_bin_grid_w, 1); // e.g. = 4 + + scalar_t output_val = 0.; + for (int iy = 0; iy < roi_bin_grid_h; iy++) { // e.g., iy = 0, 1 + const scalar_t yy = + roi_start_h + ph * bin_size_h + + static_cast(iy + .5f) * bin_size_h / + static_cast(roi_bin_grid_h); // e.g., 0.5, 1.5 + for (int ix = 0; ix < roi_bin_grid_w; ix++) { + const scalar_t xx = roi_start_w + pw * bin_size_w + + static_cast(ix + .5f) * bin_size_w / + static_cast(roi_bin_grid_w); + + // Rotate by theta (counterclockwise) around the center and translate + scalar_t y = yy * cosscalar_theta - xx * sinscalar_theta + roi_center_h; + scalar_t x = yy * sinscalar_theta + xx * cosscalar_theta + roi_center_w; + + scalar_t val = bilinear_interpolate( + offset_bottom_data, height, width, y, x, index); + scalar_t val_plus = bilinear_interpolate( + offset_bottom_data_plus, height, width, y, x, index); + output_val += r_var * val + l_var * val_plus; + } + } + output_val /= count; + + top_data[index] = output_val; + } +} + +/*** Backward ***/ +template +__global__ void riroi_align_rotated_backward_cuda_kernel( + const int nthreads, const scalar_t *top_diff, const scalar_t *bottom_rois, + const scalar_t spatial_scale, const int num_samples, const bool clockwise, + const int channels, const int height, const int width, + const int pooled_height, const int pooled_width, const int num_orientations, + scalar_t *bottom_diff) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + // (n, c, ph, pw) is an element in the pooled output + int pw = index % pooled_width; + int ph = (index / pooled_width) % pooled_height; + int o = (index / pooled_width / pooled_height) % num_orientations; + int c = + (index / pooled_width / pooled_height / num_orientations) % channels; + int n = index / pooled_width / pooled_height / num_orientations / channels; + + const scalar_t *offset_bottom_rois = bottom_rois + n * 6; + int roi_batch_ind = offset_bottom_rois[0]; + + // Do not round + scalar_t roi_center_w = offset_bottom_rois[1] * spatial_scale; + scalar_t roi_center_h = offset_bottom_rois[2] * spatial_scale; + scalar_t roi_width = offset_bottom_rois[3] * spatial_scale; + scalar_t roi_height = offset_bottom_rois[4] * spatial_scale; + // scalar_t theta = offset_bottom_rois[5] * M_PI / 180.0; + scalar_t theta = offset_bottom_rois[5]; + // Force malformed ROIs to be 1x1 + roi_width = max(roi_width, (scalar_t)1.); + roi_height = max(roi_height, (scalar_t)1.); + + scalar_t bin_size_h = static_cast(roi_height) / + static_cast(pooled_height); + scalar_t bin_size_w = + static_cast(roi_width) / static_cast(pooled_width); + + // find aligned index + scalar_t ind_float = theta * num_orientations / (2 * M_PI); + int ind = floorf(ind_float); + scalar_t l_var = ind_float - (scalar_t)ind; + scalar_t r_var = 1.0 - l_var; + // correct start channel + ind = (ind + num_orientations) % num_orientations; + // rotated channel + int ind_rot = (o - ind + num_orientations) % num_orientations; + int ind_rot_plus = (ind_rot + 1 + num_orientations) % num_orientations; + scalar_t *offset_bottom_diff = + bottom_diff + (roi_batch_ind * channels * num_orientations + + c * num_orientations + ind_rot) * + height * width; + scalar_t *offset_bottom_diff_plus = + bottom_diff + (roi_batch_ind * channels * num_orientations + + c * num_orientations + ind_rot_plus) * + height * width; + int top_offset = + (n * channels * num_orientations + c * num_orientations + o) * + pooled_height * pooled_width; + const scalar_t *offset_top_diff = top_diff + top_offset; + const scalar_t top_diff_this_bin = offset_top_diff[ph * pooled_width + pw]; + + // We use roi_bin_grid to sample the grid and mimic integral + int roi_bin_grid_h = (num_samples > 0) + ? num_samples + : ceilf(roi_height / pooled_height); // e.g., = 2 + int roi_bin_grid_w = + (num_samples > 0) ? num_samples : ceilf(roi_width / pooled_width); + + // roi_start_h and roi_start_w are computed wrt the center of RoI (x, y). + // Appropriate translation needs to be applied after. + if (clockwise) { + theta = -theta; // If clockwise, the angle needs to be reversed. + } + scalar_t roi_start_h = -roi_height / 2.0; + scalar_t roi_start_w = -roi_width / 2.0; + scalar_t cosTheta = cos(theta); + scalar_t sinTheta = sin(theta); + + // We do average (integral) pooling inside a bin + const scalar_t count = roi_bin_grid_h * roi_bin_grid_w; // e.g. = 4 + + for (int iy = 0; iy < roi_bin_grid_h; iy++) { // e.g., iy = 0, 1 + const scalar_t yy = + roi_start_h + ph * bin_size_h + + static_cast(iy + .5f) * bin_size_h / + static_cast(roi_bin_grid_h); // e.g., 0.5, 1.5 + for (int ix = 0; ix < roi_bin_grid_w; ix++) { + const scalar_t xx = roi_start_w + pw * bin_size_w + + static_cast(ix + .5f) * bin_size_w / + static_cast(roi_bin_grid_w); + + // Rotate by theta around the center and translate + scalar_t y = yy * cosTheta - xx * sinTheta + roi_center_h; + scalar_t x = yy * sinTheta + xx * cosTheta + roi_center_w; + + scalar_t w1, w2, w3, w4; + int x_low, x_high, y_low, y_high; + + bilinear_interpolate_gradient(height, width, y, x, w1, w2, w3, + w4, x_low, x_high, y_low, + y_high, index); + + scalar_t g1 = top_diff_this_bin * w1 / count; + scalar_t g2 = top_diff_this_bin * w2 / count; + scalar_t g3 = top_diff_this_bin * w3 / count; + scalar_t g4 = top_diff_this_bin * w4 / count; + + if (x_low >= 0 && x_high >= 0 && y_low >= 0 && y_high >= 0) { + atomicAdd(offset_bottom_diff + y_low * width + x_low, g1 * r_var); + atomicAdd(offset_bottom_diff + y_low * width + x_high, g2 * r_var); + atomicAdd(offset_bottom_diff + y_high * width + x_low, g3 * r_var); + atomicAdd(offset_bottom_diff + y_high * width + x_high, g4 * r_var); + + atomicAdd(offset_bottom_diff_plus + y_low * width + x_low, + g1 * l_var); + atomicAdd(offset_bottom_diff_plus + y_low * width + x_high, + g2 * l_var); + atomicAdd(offset_bottom_diff_plus + y_high * width + x_low, + g3 * l_var); + atomicAdd(offset_bottom_diff_plus + y_high * width + x_high, + g4 * l_var); + + } // if + } // ix + } // iy + } // CUDA_1D_KERNEL_LOOP +} // RiRoIAlignBackward + +#endif // RIROI_ALIGN_ROTATED_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/roi_align_rotated_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/roi_align_rotated_cuda_kernel.cuh index 33571f2..8274dc5 100644 --- a/mmcv/ops/csrc/common/cuda/roi_align_rotated_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/roi_align_rotated_cuda_kernel.cuh @@ -20,7 +20,7 @@ template __global__ void roi_align_rotated_forward_cuda_kernel( const int nthreads, const scalar_t *bottom_data, const scalar_t *bottom_rois, const scalar_t spatial_scale, - const int sample_num, const bool aligned, const bool clockwise, + const int sampling_ratio, const bool aligned, const bool clockwise, const int channels, const int height, const int width, const int pooled_height, const int pooled_width, scalar_t *top_data) { CUDA_1D_KERNEL_LOOP(index, nthreads) { @@ -58,11 +58,11 @@ __global__ void roi_align_rotated_forward_cuda_kernel( bottom_data + (roi_batch_ind * channels + c) * height * width; // We use roi_bin_grid to sample the grid and mimic integral - int roi_bin_grid_h = (sample_num > 0) - ? sample_num + int roi_bin_grid_h = (sampling_ratio > 0) + ? sampling_ratio : ceilf(roi_height / pooled_height); // e.g., = 2 int roi_bin_grid_w = - (sample_num > 0) ? sample_num : ceilf(roi_width / pooled_width); + (sampling_ratio > 0) ? sampling_ratio : ceilf(roi_width / pooled_width); // roi_start_h and roi_start_w are computed wrt the center of RoI (x, y). // Appropriate translation needs to be applied after. @@ -104,7 +104,7 @@ __global__ void roi_align_rotated_forward_cuda_kernel( template __global__ void roi_align_rotated_backward_cuda_kernel( const int nthreads, const scalar_t *top_diff, const scalar_t *bottom_rois, - const scalar_t spatial_scale, const int sample_num, const bool aligned, + const scalar_t spatial_scale, const int sampling_ratio, const bool aligned, const bool clockwise, const int channels, const int height, const int width, const int pooled_height, const int pooled_width, scalar_t *bottom_diff) { CUDA_1D_KERNEL_LOOP(index, nthreads) { @@ -146,11 +146,11 @@ __global__ void roi_align_rotated_backward_cuda_kernel( const scalar_t top_diff_this_bin = offset_top_diff[ph * pooled_width + pw]; // We use roi_bin_grid to sample the grid and mimic integral - int roi_bin_grid_h = (sample_num > 0) - ? sample_num + int roi_bin_grid_h = (sampling_ratio > 0) + ? sampling_ratio : ceilf(roi_height / pooled_height); // e.g., = 2 int roi_bin_grid_w = - (sample_num > 0) ? sample_num : ceilf(roi_width / pooled_width); + (sampling_ratio > 0) ? sampling_ratio : ceilf(roi_width / pooled_width); // roi_start_h and roi_start_w are computed wrt the center of RoI (x, y). // Appropriate translation needs to be applied after. diff --git a/mmcv/ops/csrc/common/cuda/roiaware_pool3d_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/roiaware_pool3d_cuda_kernel.cuh index 3b95dc7..fc0aacf 100644 --- a/mmcv/ops/csrc/common/cuda/roiaware_pool3d_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/roiaware_pool3d_cuda_kernel.cuh @@ -44,37 +44,38 @@ __global__ void generate_pts_mask_for_box3d(int boxes_num, int pts_num, // coordinate params pts: (npoints, 3) [x, y, z] params pts_mask: (N, // npoints): -1 means point does not in this box, otherwise: encode (x_idxs, // y_idxs, z_idxs) by binary bit - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; int box_idx = blockIdx.y; - if (pt_idx >= pts_num || box_idx >= boxes_num) return; + CUDA_1D_KERNEL_LOOP(pt_idx, pts_num) { + if (box_idx >= boxes_num) return; - pts += pt_idx * 3; - rois += box_idx * 7; - pts_mask += box_idx * pts_num + pt_idx; + pts += pt_idx * 3; + rois += box_idx * 7; + pts_mask += box_idx * pts_num + pt_idx; - T local_x = 0, local_y = 0; - int cur_in_flag = check_pt_in_box3d(pts, rois, local_x, local_y); + T local_x = 0, local_y = 0; + int cur_in_flag = check_pt_in_box3d(pts, rois, local_x, local_y); - pts_mask[0] = -1; - if (cur_in_flag > 0) { - T local_z = pts[2] - rois[2]; - T x_size = rois[3], y_size = rois[4], z_size = rois[5]; + pts_mask[0] = -1; + if (cur_in_flag > 0) { + T local_z = pts[2] - rois[2]; + T x_size = rois[3], y_size = rois[4], z_size = rois[5]; - T x_res = x_size / out_x; - T y_res = y_size / out_y; - T z_res = z_size / out_z; + T x_res = x_size / out_x; + T y_res = y_size / out_y; + T z_res = z_size / out_z; - unsigned int x_idx = int((local_x + x_size / 2) / x_res); - unsigned int y_idx = int((local_y + y_size / 2) / y_res); - unsigned int z_idx = int(local_z / z_res); + unsigned int x_idx = int((local_x + x_size / 2) / x_res); + unsigned int y_idx = int((local_y + y_size / 2) / y_res); + unsigned int z_idx = int(local_z / z_res); - x_idx = min(max(x_idx, 0), out_x - 1); - y_idx = min(max(y_idx, 0), out_y - 1); - z_idx = min(max(z_idx, 0), out_z - 1); + x_idx = min(max(x_idx, 0), out_x - 1); + y_idx = min(max(y_idx, 0), out_y - 1); + z_idx = min(max(z_idx, 0), out_z - 1); - unsigned int idx_encoding = (x_idx << 16) + (y_idx << 8) + z_idx; + unsigned int idx_encoding = (x_idx << 16) + (y_idx << 8) + z_idx; - pts_mask[0] = idx_encoding; + pts_mask[0] = idx_encoding; + } } } @@ -86,26 +87,24 @@ __global__ void collect_inside_pts_for_box3d(int boxes_num, int pts_num, T *pts_idx_of_voxels) { // params pts_mask: (N, npoints) 0 or 1 // params pts_idx_of_voxels: (N, out_x, out_y, out_z, max_pts_each_voxel) - - int box_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (box_idx >= boxes_num) return; - - int max_num_pts = max_pts_each_voxel - 1; // index 0 is the counter - pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel; - - for (int k = 0; k < pts_num; k++) { - if (pts_mask[box_idx * pts_num + k] != -1) { - unsigned int idx_encoding = pts_mask[box_idx * pts_num + k]; - unsigned int x_idx = (idx_encoding >> 16) & 0xFF; - unsigned int y_idx = (idx_encoding >> 8) & 0xFF; - unsigned int z_idx = idx_encoding & 0xFF; - unsigned int base_offset = x_idx * out_y * out_z * max_pts_each_voxel + - y_idx * out_z * max_pts_each_voxel + - z_idx * max_pts_each_voxel; - unsigned int cnt = pts_idx_of_voxels[base_offset]; - if (cnt < max_num_pts) { - pts_idx_of_voxels[base_offset + cnt + 1] = k; - pts_idx_of_voxels[base_offset]++; + CUDA_1D_KERNEL_LOOP(box_idx, boxes_num) { + int max_num_pts = max_pts_each_voxel - 1; // index 0 is the counter + pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel; + + for (int k = 0; k < pts_num; k++) { + if (pts_mask[box_idx * pts_num + k] != -1) { + unsigned int idx_encoding = pts_mask[box_idx * pts_num + k]; + unsigned int x_idx = (idx_encoding >> 16) & 0xFF; + unsigned int y_idx = (idx_encoding >> 8) & 0xFF; + unsigned int z_idx = idx_encoding & 0xFF; + unsigned int base_offset = x_idx * out_y * out_z * max_pts_each_voxel + + y_idx * out_z * max_pts_each_voxel + + z_idx * max_pts_each_voxel; + unsigned int cnt = pts_idx_of_voxels[base_offset]; + if (cnt < max_num_pts) { + pts_idx_of_voxels[base_offset + cnt + 1] = k; + pts_idx_of_voxels[base_offset]++; + } } } } @@ -124,39 +123,38 @@ __global__ void roiaware_maxpool3d(int boxes_num, int pts_num, int channels, int box_idx = blockIdx.z; int channel_idx = blockIdx.y; - int voxel_idx_flat = blockIdx.x * blockDim.x + threadIdx.x; - - int x_idx = voxel_idx_flat / (out_y * out_z); - int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; - int z_idx = voxel_idx_flat % out_z; - if (box_idx >= boxes_num || channel_idx >= channels || x_idx >= out_x || - y_idx >= out_y || z_idx >= out_z) - return; - - int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; - pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + - offset_base * max_pts_each_voxel; - pooled_features += box_idx * out_x * out_y * out_z * channels + - offset_base * channels + channel_idx; - argmax += box_idx * out_x * out_y * out_z * channels + - offset_base * channels + channel_idx; - - int argmax_idx = -1; - float max_val = -1e50; - - int total_pts = pts_idx_of_voxels[0]; - - for (int k = 1; k <= total_pts; k++) { - if (pts_feature[pts_idx_of_voxels[k] * channels + channel_idx] > max_val) { - max_val = pts_feature[pts_idx_of_voxels[k] * channels + channel_idx]; - argmax_idx = pts_idx_of_voxels[k]; + CUDA_1D_KERNEL_LOOP(voxel_idx_flat, out_x * out_y * out_z) { + int x_idx = voxel_idx_flat / (out_y * out_z); + int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; + int z_idx = voxel_idx_flat % out_z; + if (box_idx >= boxes_num || channel_idx >= channels) return; + + int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; + pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + + offset_base * max_pts_each_voxel; + pooled_features += box_idx * out_x * out_y * out_z * channels + + offset_base * channels + channel_idx; + argmax += box_idx * out_x * out_y * out_z * channels + + offset_base * channels + channel_idx; + + int argmax_idx = -1; + float max_val = -1e50; + + int total_pts = pts_idx_of_voxels[0]; + + for (int k = 1; k <= total_pts; k++) { + if (pts_feature[pts_idx_of_voxels[k] * channels + channel_idx] > + max_val) { + max_val = pts_feature[pts_idx_of_voxels[k] * channels + channel_idx]; + argmax_idx = pts_idx_of_voxels[k]; + } } - } - if (argmax_idx != -1) { - pooled_features[0] = max_val; + if (argmax_idx != -1) { + pooled_features[0] = max_val; + } + argmax[0] = argmax_idx; } - argmax[0] = argmax_idx; } template @@ -172,30 +170,28 @@ __global__ void roiaware_avgpool3d(int boxes_num, int pts_num, int channels, int box_idx = blockIdx.z; int channel_idx = blockIdx.y; - int voxel_idx_flat = blockIdx.x * blockDim.x + threadIdx.x; - - int x_idx = voxel_idx_flat / (out_y * out_z); - int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; - int z_idx = voxel_idx_flat % out_z; - if (box_idx >= boxes_num || channel_idx >= channels || x_idx >= out_x || - y_idx >= out_y || z_idx >= out_z) - return; - - int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; - pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + - offset_base * max_pts_each_voxel; - pooled_features += box_idx * out_x * out_y * out_z * channels + - offset_base * channels + channel_idx; - - float sum_val = 0; - int total_pts = pts_idx_of_voxels[0]; - - for (int k = 1; k <= total_pts; k++) { - sum_val += pts_feature[pts_idx_of_voxels[k] * channels + channel_idx]; - } + CUDA_1D_KERNEL_LOOP(voxel_idx_flat, out_x * out_y * out_z) { + int x_idx = voxel_idx_flat / (out_y * out_z); + int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; + int z_idx = voxel_idx_flat % out_z; + if (box_idx >= boxes_num || channel_idx >= channels) return; + + int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; + pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + + offset_base * max_pts_each_voxel; + pooled_features += box_idx * out_x * out_y * out_z * channels + + offset_base * channels + channel_idx; + + float sum_val = 0; + int total_pts = pts_idx_of_voxels[0]; + + for (int k = 1; k <= total_pts; k++) { + sum_val += pts_feature[pts_idx_of_voxels[k] * channels + channel_idx]; + } - if (total_pts > 0) { - pooled_features[0] = sum_val / total_pts; + if (total_pts > 0) { + pooled_features[0] = sum_val / total_pts; + } } } @@ -210,24 +206,22 @@ __global__ void roiaware_maxpool3d_backward(int boxes_num, int channels, int box_idx = blockIdx.z; int channel_idx = blockIdx.y; - int voxel_idx_flat = blockIdx.x * blockDim.x + threadIdx.x; - - int x_idx = voxel_idx_flat / (out_y * out_z); - int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; - int z_idx = voxel_idx_flat % out_z; - if (box_idx >= boxes_num || channel_idx >= channels || x_idx >= out_x || - y_idx >= out_y || z_idx >= out_z) - return; - - int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; - argmax += box_idx * out_x * out_y * out_z * channels + - offset_base * channels + channel_idx; - grad_out += box_idx * out_x * out_y * out_z * channels + + CUDA_1D_KERNEL_LOOP(voxel_idx_flat, out_x * out_y * out_z) { + int x_idx = voxel_idx_flat / (out_y * out_z); + int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; + int z_idx = voxel_idx_flat % out_z; + if (box_idx >= boxes_num || channel_idx >= channels) return; + + int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; + argmax += box_idx * out_x * out_y * out_z * channels + offset_base * channels + channel_idx; + grad_out += box_idx * out_x * out_y * out_z * channels + + offset_base * channels + channel_idx; - if (argmax[0] == -1) return; + if (argmax[0] == -1) return; - atomicAdd(grad_in + argmax[0] * channels + channel_idx, grad_out[0] * 1); + atomicAdd(grad_in + argmax[0] * channels + channel_idx, grad_out[0] * 1); + } } template @@ -242,26 +236,24 @@ __global__ void roiaware_avgpool3d_backward(int boxes_num, int channels, int box_idx = blockIdx.z; int channel_idx = blockIdx.y; - int voxel_idx_flat = blockIdx.x * blockDim.x + threadIdx.x; - - int x_idx = voxel_idx_flat / (out_y * out_z); - int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; - int z_idx = voxel_idx_flat % out_z; - if (box_idx >= boxes_num || channel_idx >= channels || x_idx >= out_x || - y_idx >= out_y || z_idx >= out_z) - return; - - int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; - pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + - offset_base * max_pts_each_voxel; - grad_out += box_idx * out_x * out_y * out_z * channels + - offset_base * channels + channel_idx; - - int total_pts = pts_idx_of_voxels[0]; - float cur_grad = 1 / fmaxf(float(total_pts), 1.0); - for (int k = 1; k <= total_pts; k++) { - atomicAdd(grad_in + pts_idx_of_voxels[k] * channels + channel_idx, - grad_out[0] * cur_grad); + CUDA_1D_KERNEL_LOOP(voxel_idx_flat, out_x * out_y * out_z) { + int x_idx = voxel_idx_flat / (out_y * out_z); + int y_idx = (voxel_idx_flat - x_idx * (out_y * out_z)) / out_z; + int z_idx = voxel_idx_flat % out_z; + if (box_idx >= boxes_num || channel_idx >= channels) return; + + int offset_base = x_idx * out_y * out_z + y_idx * out_z + z_idx; + pts_idx_of_voxels += box_idx * out_x * out_y * out_z * max_pts_each_voxel + + offset_base * max_pts_each_voxel; + grad_out += box_idx * out_x * out_y * out_z * channels + + offset_base * channels + channel_idx; + + int total_pts = pts_idx_of_voxels[0]; + float cur_grad = 1 / fmaxf(float(total_pts), 1.0); + for (int k = 1; k <= total_pts; k++) { + atomicAdd(grad_in + pts_idx_of_voxels[k] * channels + channel_idx, + grad_out[0] * cur_grad); + } } } diff --git a/mmcv/ops/csrc/common/cuda/roipoint_pool3d_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/roipoint_pool3d_cuda_kernel.cuh index 7597719..545f6ff 100644 --- a/mmcv/ops/csrc/common/cuda/roipoint_pool3d_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/roipoint_pool3d_cuda_kernel.cuh @@ -42,23 +42,23 @@ __global__ void assign_pts_to_box3d(int batch_size, int pts_num, int boxes_num, // params boxes3d: (B, M, 7) // params pts_assign: (B, N, M): idx of the corresponding box3d, -1 means // background points - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; int box_idx = blockIdx.y; int bs_idx = blockIdx.z; + CUDA_1D_KERNEL_LOOP(pt_idx, pts_num) { + if (box_idx >= boxes_num || bs_idx >= batch_size) return; - if (pt_idx >= pts_num || box_idx >= boxes_num || bs_idx >= batch_size) { - return; - } - int assign_idx = bs_idx * pts_num * boxes_num + pt_idx * boxes_num + box_idx; - pts_assign[assign_idx] = 0; + int assign_idx = + bs_idx * pts_num * boxes_num + pt_idx * boxes_num + box_idx; + pts_assign[assign_idx] = 0; - int box_offset = bs_idx * boxes_num * 7 + box_idx * 7; - int pt_offset = bs_idx * pts_num * 3 + pt_idx * 3; + int box_offset = bs_idx * boxes_num * 7 + box_idx * 7; + int pt_offset = bs_idx * pts_num * 3 + pt_idx * 3; - T local_x = 0, local_y = 0; - int cur_in_flag = check_pt_in_box3d(xyz + pt_offset, boxes3d + box_offset, - local_x, local_y); - pts_assign[assign_idx] = cur_in_flag; + T local_x = 0, local_y = 0; + int cur_in_flag = check_pt_in_box3d(xyz + pt_offset, boxes3d + box_offset, + local_x, local_y); + pts_assign[assign_idx] = cur_in_flag; + } } __global__ void get_pooled_idx(int batch_size, int pts_num, int boxes_num, @@ -69,35 +69,32 @@ __global__ void get_pooled_idx(int batch_size, int pts_num, int boxes_num, // params pts_assign: (B, N) // params pts_idx: (B, M, 512) // params pooled_empty_flag: (B, M) - - int boxes_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (boxes_idx >= boxes_num) { - return; - } - - int bs_idx = blockIdx.y; - - int cnt = 0; - for (int k = 0; k < pts_num; k++) { - if (pts_assign[bs_idx * pts_num * boxes_num + k * boxes_num + boxes_idx]) { - if (cnt < sampled_pts_num) { - pts_idx[bs_idx * boxes_num * sampled_pts_num + - boxes_idx * sampled_pts_num + cnt] = k; - cnt++; - } else - break; + CUDA_1D_KERNEL_LOOP(boxes_idx, boxes_num) { + int bs_idx = blockIdx.y; + + int cnt = 0; + for (int k = 0; k < pts_num; k++) { + if (pts_assign[bs_idx * pts_num * boxes_num + k * boxes_num + + boxes_idx]) { + if (cnt < sampled_pts_num) { + pts_idx[bs_idx * boxes_num * sampled_pts_num + + boxes_idx * sampled_pts_num + cnt] = k; + cnt++; + } else + break; + } } - } - if (cnt == 0) { - pooled_empty_flag[bs_idx * boxes_num + boxes_idx] = 1; - } else if (cnt < sampled_pts_num) { - // duplicate same points for sampling - for (int k = cnt; k < sampled_pts_num; k++) { - int duplicate_idx = k % cnt; - int base_offset = - bs_idx * boxes_num * sampled_pts_num + boxes_idx * sampled_pts_num; - pts_idx[base_offset + k] = pts_idx[base_offset + duplicate_idx]; + if (cnt == 0) { + pooled_empty_flag[bs_idx * boxes_num + boxes_idx] = 1; + } else if (cnt < sampled_pts_num) { + // duplicate same points for sampling + for (int k = cnt; k < sampled_pts_num; k++) { + int duplicate_idx = k % cnt; + int base_offset = + bs_idx * boxes_num * sampled_pts_num + boxes_idx * sampled_pts_num; + pts_idx[base_offset + k] = pts_idx[base_offset + duplicate_idx]; + } } } } @@ -112,33 +109,26 @@ __global__ void roipoint_pool3d_forward( // params pts_feature: (B, N, C) // params pooled_features: (B, M, 512, 3+C) // params pooled_empty_flag: (B, M) - - int sample_pt_idx = blockIdx.x * blockDim.x + threadIdx.x; int box_idx = blockIdx.y; int bs_idx = blockIdx.z; - - if (sample_pt_idx >= sampled_pts_num || box_idx >= boxes_num || - bs_idx >= batch_size) { - return; - } - - if (pooled_empty_flag[bs_idx * boxes_num + box_idx]) { - return; + CUDA_1D_KERNEL_LOOP(sample_pt_idx, sampled_pts_num) { + if (box_idx >= boxes_num || bs_idx >= batch_size) return; + if (pooled_empty_flag[bs_idx * boxes_num + box_idx]) return; + + int temp_idx = bs_idx * boxes_num * sampled_pts_num + + box_idx * sampled_pts_num + sample_pt_idx; + int src_pt_idx = pts_idx[temp_idx]; + int dst_feature_offset = temp_idx * (3 + feature_in_len); + + for (int j = 0; j < 3; j++) + pooled_features[dst_feature_offset + j] = + xyz[bs_idx * pts_num * 3 + src_pt_idx * 3 + j]; + + int src_feature_offset = + bs_idx * pts_num * feature_in_len + src_pt_idx * feature_in_len; + memcpy(pooled_features + dst_feature_offset + 3, + pts_feature + src_feature_offset, feature_in_len * sizeof(T)); } - - int temp_idx = bs_idx * boxes_num * sampled_pts_num + - box_idx * sampled_pts_num + sample_pt_idx; - int src_pt_idx = pts_idx[temp_idx]; - int dst_feature_offset = temp_idx * (3 + feature_in_len); - - for (int j = 0; j < 3; j++) - pooled_features[dst_feature_offset + j] = - xyz[bs_idx * pts_num * 3 + src_pt_idx * 3 + j]; - - int src_feature_offset = - bs_idx * pts_num * feature_in_len + src_pt_idx * feature_in_len; - memcpy(pooled_features + dst_feature_offset + 3, - pts_feature + src_feature_offset, feature_in_len * sizeof(T)); } #endif // ROIPOINT_POOL3D_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/rotated_feature_align_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/rotated_feature_align_cuda_kernel.cuh new file mode 100644 index 0000000..ffcc658 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/rotated_feature_align_cuda_kernel.cuh @@ -0,0 +1,129 @@ +// Copyright (c) OpenMMLab. All rights reserved. +// Modified from +// https://github.com/SJTU-Thinklab-Det/r3det-on-mmdetection/blob/master/mmdet/ops/fr/src/feature_refine_kernel.cu +#ifndef ROTATED_FEATURE_ALIGN_CUDA_KERNEL_CUH +#define ROTATED_FEATURE_ALIGN_CUDA_KERNEL_CUH + +#ifdef MMCV_USE_PARROTS +#include "parrots_cuda_helper.hpp" +#else +#include "pytorch_cuda_helper.hpp" +#endif + +template +__global__ void rotated_feature_align_forward_kernel( + const int nthreads, const int points, const scalar_t* bottom_data, + const scalar_t* best_bboxes, const scalar_t spatial_scale, + const int channels, const int height, const int width, scalar_t* top_data) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + int w = index % width; + int h = (index / width) % height; + int c = (index / width / height) % channels; + int n = index / width / height / channels; + + const scalar_t* bbox_offset = + best_bboxes + ((n * height + h) * width + w) * 5; + scalar_t roi_y = bbox_offset[0] * spatial_scale; + scalar_t roi_x = bbox_offset[1] * spatial_scale; + + scalar_t px[5] = {roi_x, 0, 0, 0, 0}; + scalar_t py[5] = {roi_y, 0, 0, 0, 0}; + + if (points > 1) { + scalar_t roi_w = bbox_offset[2] * spatial_scale; + scalar_t roi_h = bbox_offset[3] * spatial_scale; + scalar_t roi_a = bbox_offset[4]; + + scalar_t w_2 = roi_w / 2, h_2 = roi_h / 2; + scalar_t cosa = cosf(roi_a), sina = sinf(roi_a); + scalar_t wx = cosa * w_2, wy = sina * w_2; + scalar_t hx = -sina * h_2, hy = cosa * h_2; + + px[1] = roi_x + wx + hx; + py[1] = roi_y + wy + hy; + px[2] = roi_x - wx + hx; + py[2] = roi_y - wy + hy; + px[3] = roi_x - wx - hx; + py[3] = roi_y - wy - hy; + px[4] = roi_x + wx - hx; + py[4] = roi_y + wy - hy; + } + + const scalar_t* offset_bottom_data = + bottom_data + (n * channels + c) * height * width; + + scalar_t output_val = bottom_data[index]; + for (int i = 0; i < points; i++) { + output_val += bilinear_interpolate(offset_bottom_data, height, + width, py[i], px[i], i); + } + top_data[index] = output_val; + } +} + +template +__global__ void rotated_feature_align_backward_kernel( + const int nthreads, const int points, const scalar_t* top_diff, + const scalar_t* best_bboxes, const scalar_t spatial_scale, + const int channels, const int height, const int width, + scalar_t* bottom_diff) { + CUDA_1D_KERNEL_LOOP(index, nthreads) { + int w = index % width; + int h = (index / width) % height; + int c = (index / width / height) % channels; + int n = index / width / height / channels; + + const scalar_t* bbox_offset = + best_bboxes + ((n * height + h) * width + w) * 5; + scalar_t roi_y = bbox_offset[0] * spatial_scale; + scalar_t roi_x = bbox_offset[1] * spatial_scale; + + scalar_t px[5] = {roi_x, 0, 0, 0, 0}; + scalar_t py[5] = {roi_y, 0, 0, 0, 0}; + + if (points > 1) { + scalar_t roi_w = bbox_offset[2] * spatial_scale; + scalar_t roi_h = bbox_offset[3] * spatial_scale; + scalar_t roi_a = bbox_offset[4]; + + scalar_t w_2 = roi_w / 2, h_2 = roi_h / 2; + scalar_t cosa = cosf(roi_a), sina = sinf(roi_a); + scalar_t wx = cosa * w_2, wy = sina * w_2; + scalar_t hx = -sina * h_2, hy = cosa * h_2; + + px[1] = roi_x + wx + hx; + py[1] = roi_y + wy + hy; + px[2] = roi_x - wx + hx; + py[2] = roi_y - wy + hy; + px[3] = roi_x - wx - hx; + py[3] = roi_y - wy - hy; + px[4] = roi_x + wx - hx; + py[4] = roi_y + wy - hy; + } + + scalar_t* offset_bottom_diff = + bottom_diff + (n * channels + c) * height * width; + scalar_t value_top_diff = top_diff[index]; + + atomicAdd(bottom_diff + index, value_top_diff); + for (int i = 0; i < points; i++) { + scalar_t w1, w2, w3, w4; + int x_low, x_high, y_low, y_high; + + bilinear_interpolate_gradient(height, width, py[i], px[i], w1, + w2, w3, w4, x_low, x_high, y_low, + y_high, i); + scalar_t g1 = value_top_diff * w1; + scalar_t g2 = value_top_diff * w2; + scalar_t g3 = value_top_diff * w3; + scalar_t g4 = value_top_diff * w4; + if (x_low >= 0 && x_high >= 0 && y_low >= 0 && y_high >= 0) { + atomicAdd(offset_bottom_diff + y_low * width + x_low, g1); + atomicAdd(offset_bottom_diff + y_low * width + x_high, g2); + atomicAdd(offset_bottom_diff + y_high * width + x_low, g3); + atomicAdd(offset_bottom_diff + y_high * width + x_high, g4); + } + } + } +} +#endif // ROTATED_FEATURE_ALIGN_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/spconv/indice.cuh b/mmcv/ops/csrc/common/cuda/spconv/indice.cuh new file mode 100644 index 0000000..5ef0009 --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/spconv/indice.cuh @@ -0,0 +1,236 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef INDICE_CU_H_ +#define INDICE_CU_H_ +#include +#include + +#include + +template +__global__ void prepareIndicePairsKernel( + tv::TensorView indicesIn, tv::TensorView indicesOut, + tv::TensorView gridsOut, tv::TensorView indicePairs, + tv::TensorView indiceNum, tv::TensorView indicePairUnique, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape) { + auto numActIn = indicesIn.dim(0); + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index kernelVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + kernelVolume *= kernelSize[i]; + } + Index numValidPoints = 0; + Index validPoints[KernelMaxVolume * (NDim + 1)]; + Index *pointPtr = nullptr; + auto indicePairsDim2 = indicePairs.dim(2); + Index index; + for (int ix : tv::KernelLoopX(numActIn)) { + numValidPoints = getValidOutPos( + indicesIn.data() + ix * (NDim + 1) + 1, kernelSize.data(), + stride.data(), padding.data(), dilation.data(), outSpatialShape.data(), + validPoints); + for (Index i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + auto oldNum = atomicAdd(indiceNum.data() + offset, Index(1)); + indicePairs(offset, 0, oldNum) = ix; + index = tv::rowArrayIdx(pointPtr, outSpatialShape.data()) + + spatialVolume * indicesIn(ix, 0); + indicePairs(offset, 1, oldNum) = index; + indicePairUnique[offset * indicePairsDim2 + oldNum] = index; + } + } +} + +template +__global__ void prepareDeConvIndicePairsKernel( + tv::TensorView indicesIn, tv::TensorView indicesOut, + tv::TensorView gridsOut, tv::TensorView indicePairs, + tv::TensorView indiceNum, tv::TensorView indicePairUnique, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape) { + auto numActIn = indicesIn.dim(0); + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index kernelVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + kernelVolume *= kernelSize[i]; + } + Index numValidPoints = 0; + Index validPoints[KernelMaxVolume * (NDim + 1)]; + Index *pointPtr = nullptr; + auto indicePairsDim2 = indicePairs.dim(2); + Index index; + for (int ix : tv::KernelLoopX(numActIn)) { + numValidPoints = getValidOutPosTranspose( + indicesIn.data() + ix * (NDim + 1) + 1, kernelSize.data(), + stride.data(), padding.data(), dilation.data(), outSpatialShape.data(), + validPoints); + for (Index i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + auto oldNum = atomicAdd(indiceNum.data() + offset, Index(1)); + indicePairs(offset, 0, oldNum) = ix; + index = tv::rowArrayIdx(pointPtr, outSpatialShape.data()) + + spatialVolume * indicesIn(ix, 0); + indicePairs(offset, 1, oldNum) = index; + indicePairUnique[offset * indicePairsDim2 + oldNum] = index; + } + } +} + +template +__global__ void assignGridAndIndiceOutKernel( + tv::TensorView indicesOut, tv::TensorView gridsOut, + int numAct, tv::TensorView indicePairs, + tv::TensorView indicePairUnique, + const tv::SimpleVector outSpatialShape, int batchSize) { + Index index; + auto indicesOutPtr = indicesOut.data(); + for (int ix : tv::KernelLoopX(numAct)) { + index = indicePairUnique[ix]; + gridsOut[index] = ix; + index = tv::rowArrayIdxInv( + index, indicesOutPtr + ix * (NDim + 1) + 1, outSpatialShape.data()); + indicesOut[ix * (NDim + 1)] = index % batchSize; + } +} + +template +__global__ void assignIndicePairsKernel( + tv::TensorView indicesOut, tv::TensorView gridsOut, + int numActIn, tv::TensorView indicePairs, + tv::TensorView indicePairUnique, + const tv::SimpleVector outSpatialShape) { + Index index; + int kernelVolume = indicePairs.dim(0); + for (int ix : tv::KernelLoopX(numActIn)) { + for (int i = 0; i < kernelVolume; ++i) { + index = indicePairs(i, 1, ix); + if (index > -1) { + indicePairs(i, 1, ix) = gridsOut[index]; + } + } + } +} + +template +__global__ void prepareSubMGridKernel( + tv::TensorView indicesIn, tv::TensorView gridsOut, + const tv::SimpleVector outSpatialShape) { + auto numActIn = indicesIn.dim(0); + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index index = 0; + for (int ix : tv::KernelLoopX(numActIn)) { + index = tv::rowArrayIdx(indicesIn.data() + ix * (NDim + 1) + 1, + outSpatialShape.data()) + + spatialVolume * indicesIn(ix, 0); + gridsOut[index] = ix; + } +} + +template +__global__ void getSubMIndicePairsKernel( + tv::TensorView indicesIn, tv::TensorView gridsOut, + tv::TensorView indicePairs, tv::TensorView indiceNum, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape) { + auto numActIn = indicesIn.dim(0); + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index numValidPoints = 0; + Index validPoints[KernelMaxVolume * (NDim + 1)]; + Index *pointPtr = nullptr; + Index index = 0; + for (int ix : tv::KernelLoopX(numActIn)) { + numValidPoints = getValidOutPos( + indicesIn.data() + ix * (NDim + 1) + 1, kernelSize.data(), + stride.data(), padding.data(), dilation.data(), outSpatialShape.data(), + validPoints); + for (int i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + index = tv::rowArrayIdx(pointPtr, outSpatialShape.data()) + + spatialVolume * indicesIn(ix, 0); + if (gridsOut[index] > -1) { + auto oldNum = atomicAdd(indiceNum.data() + offset, Index(1)); + indicePairs(offset, 1, oldNum) = gridsOut[index]; + indicePairs(offset, 0, oldNum) = ix; + } + } + } +} + +template +__global__ void resetGridKernel(const Index *indicePairUnique, + tv::TensorView gridsOut, + int numAct) { + for (int ix : tv::KernelLoopX(numAct)) { + gridsOut[indicePairUnique[ix]] = -1; + } +} + +template +__global__ void resetGridSubMKernel( + const Index *indices, tv::TensorView gridsOut, + const tv::SimpleVector outSpatialShape, int numAct) { + int outSpatialShapeReg[NDim]; + for (int i = 0; i < NDim; ++i) { + outSpatialShapeReg[i] = outSpatialShape[i]; + } + Index spatialVolume = 1; + auto indsPtr = indices; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index index; + for (int ix : tv::KernelLoopX(numAct)) { + indsPtr = indices + ix * (NDim + 1); + index = tv::rowArrayIdx(indsPtr + 1, outSpatialShapeReg); + gridsOut[index + spatialVolume * indsPtr[0]] = -1; + } +} + +#endif diff --git a/mmcv/ops/csrc/common/cuda/spconv/reordering.cuh b/mmcv/ops/csrc/common/cuda/spconv/reordering.cuh new file mode 100644 index 0000000..e3ec68b --- /dev/null +++ b/mmcv/ops/csrc/common/cuda/spconv/reordering.cuh @@ -0,0 +1,160 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef REORDERING_CU_H_ +#define REORDERING_CU_H_ +#include + +template +__global__ void gatherGenericKernel(scalar_t *buffer, const scalar_t *features, + const Index *indices, int size, + int numPlanes) { + int ILPStrideX[NumILP]; + Index inds[NumILP]; +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) + ILPStrideX[ilp] = ilp * gridDim.x * blockDim.x; + + for (int ix : tv::KernelLoopX(size)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) { + if (ix + ILPStrideX[ilp] < size) + inds[ilp] = indices[ix + ILPStrideX[ilp]] * numPlanes; + } + for (int iy : tv::KernelLoopY(numPlanes)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ++ilp) { + if (ix + ILPStrideX[ilp] < size) + buffer[(ix + ILPStrideX[ilp]) * numPlanes + iy] = + features[inds[ilp] + iy]; + } + } + } +} + +template +__global__ void gatherVecKernel(scalar_t *buffer, const scalar_t *features, + const Index *indices, int size, int numPlanes) { + int ILPStrideX[NumILP]; + Index inds[NumILP]; +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) + ILPStrideX[ilp] = ilp * gridDim.x * blockDim.x; + + for (int ix : tv::KernelLoopX(size)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) { + if (ix + ILPStrideX[ilp] < size) + inds[ilp] = indices[ix + ILPStrideX[ilp]] * numPlanes; + } + for (int iy : tv::KernelLoopY(numPlanes)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ++ilp) { + if (ix + ILPStrideX[ilp] < size) + reinterpret_cast( + buffer)[(ix + ILPStrideX[ilp]) * numPlanes + iy] = + reinterpret_cast(features)[inds[ilp] + iy]; + } + } + } +} + +template +__global__ void gatherVecBlockKernel(scalar_t *buffer, const scalar_t *features, + const Index *indices, int size, + int numPlanes) { + int ILPStrideY[NumILP]; +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) + ILPStrideY[ilp] = ilp * gridDim.y * blockDim.y; + features += blockIdx.x * NumTLP; + buffer += blockIdx.x * NumTLP; + + for (int iy : tv::KernelLoopY(size)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ++ilp) { + reinterpret_cast( + buffer)[(iy + ILPStrideY[ilp]) * numPlanes + threadIdx.x] = + reinterpret_cast( + features)[indices[iy + ILPStrideY[ilp]] * numPlanes + + threadIdx.x]; + } + } +} + +template +__global__ void scatterAddGenericKernel(scalar_t *outFeatures, + const scalar_t *buffer, + const Index *indices, int size, + int numPlanes) { + int ILPStrideX[NumILP]; + Index inds[NumILP]; +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) + ILPStrideX[ilp] = ilp * gridDim.x * blockDim.x; + for (int ix : tv::KernelLoopX(size)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) { + if (ix + ILPStrideX[ilp] < size) + inds[ilp] = indices[ix + ILPStrideX[ilp]] * numPlanes; + } + for (int iy : tv::KernelLoopY(numPlanes)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ++ilp) { + if (ix + ILPStrideX[ilp] < size) { + outFeatures[inds[ilp] + iy] += + buffer[(ix + ILPStrideX[ilp]) * numPlanes + iy]; + } + } + } + } +} + +template +__global__ void scatterAddVecBlockKernel(scalar_t *outFeatures, + const scalar_t *buffer, + const Index *indices, int size, + int numPlanes) { + int ILPStrideY[NumILP]; + constexpr int vecloadFactor = sizeof(VecType) / sizeof(scalar_t); +#pragma unroll + for (int ilp = 0; ilp < NumILP; ilp++) + ILPStrideY[ilp] = ilp * gridDim.y * blockDim.y; + outFeatures += blockIdx.x * NumTLP; + buffer += blockIdx.x * NumTLP; + scalar_t buf[vecloadFactor]; + scalar_t buf2[vecloadFactor]; + Index idx; + for (int iy : tv::KernelLoopY(size)) { +#pragma unroll + for (int ilp = 0; ilp < NumILP; ++ilp) { + idx = indices[iy + ILPStrideY[ilp]] * numPlanes + threadIdx.x; + reinterpret_cast(buf)[0] = + reinterpret_cast(outFeatures)[idx]; + reinterpret_cast(buf2)[0] = reinterpret_cast( + buffer)[(iy + ILPStrideY[ilp]) * numPlanes + threadIdx.x]; +#pragma unroll + for (int i = 0; i < vecloadFactor; i++) { + buf[i] += buf2[i]; + } + reinterpret_cast(outFeatures)[idx] = + reinterpret_cast(buf)[0]; + } + } +} + +#endif diff --git a/mmcv/ops/csrc/common/cuda/three_interpolate_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/three_interpolate_cuda_kernel.cuh index 43aecb3..971b496 100644 --- a/mmcv/ops/csrc/common/cuda/three_interpolate_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/three_interpolate_cuda_kernel.cuh @@ -20,17 +20,17 @@ __global__ void three_interpolate_forward_cuda_kernel( int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; + CUDA_1D_KERNEL_LOOP(pt_idx, n) { + if (bs_idx >= b || c_idx >= c) return; - if (bs_idx >= b || c_idx >= c || pt_idx >= n) return; + weight += bs_idx * n * 3 + pt_idx * 3; + points += bs_idx * c * m + c_idx * m; + idx += bs_idx * n * 3 + pt_idx * 3; + out += bs_idx * c * n + c_idx * n; - weight += bs_idx * n * 3 + pt_idx * 3; - points += bs_idx * c * m + c_idx * m; - idx += bs_idx * n * 3 + pt_idx * 3; - out += bs_idx * c * n + c_idx * n; - - out[pt_idx] = weight[0] * points[idx[0]] + weight[1] * points[idx[1]] + - weight[2] * points[idx[2]]; + out[pt_idx] = weight[0] * points[idx[0]] + weight[1] * points[idx[1]] + + weight[2] * points[idx[2]]; + } } template @@ -44,18 +44,18 @@ __global__ void three_interpolate_backward_cuda_kernel( int bs_idx = blockIdx.z; int c_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - - if (bs_idx >= b || c_idx >= c || pt_idx >= n) return; - - grad_out += bs_idx * c * n + c_idx * n + pt_idx; - weight += bs_idx * n * 3 + pt_idx * 3; - grad_points += bs_idx * c * m + c_idx * m; - idx += bs_idx * n * 3 + pt_idx * 3; - - atomicAdd(grad_points + idx[0], grad_out[0] * weight[0]); - atomicAdd(grad_points + idx[1], grad_out[0] * weight[1]); - atomicAdd(grad_points + idx[2], grad_out[0] * weight[2]); + CUDA_1D_KERNEL_LOOP(pt_idx, n) { + if (bs_idx >= b || c_idx >= c) return; + + grad_out += bs_idx * c * n + c_idx * n + pt_idx; + weight += bs_idx * n * 3 + pt_idx * 3; + grad_points += bs_idx * c * m + c_idx * m; + idx += bs_idx * n * 3 + pt_idx * 3; + + atomicAdd(grad_points + idx[0], grad_out[0] * weight[0]); + atomicAdd(grad_points + idx[1], grad_out[0] * weight[1]); + atomicAdd(grad_points + idx[2], grad_out[0] * weight[2]); + } } #endif // THREE_INTERPOLATE_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/three_nn_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/three_nn_cuda_kernel.cuh index 824da4c..1543412 100644 --- a/mmcv/ops/csrc/common/cuda/three_nn_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/three_nn_cuda_kernel.cuh @@ -19,48 +19,49 @@ __global__ void three_nn_forward_cuda_kernel(int b, int n, int m, // idx: (B, N, 3) int bs_idx = blockIdx.y; - int pt_idx = blockIdx.x * blockDim.x + threadIdx.x; - if (bs_idx >= b || pt_idx >= n) return; + CUDA_1D_KERNEL_LOOP(pt_idx, n) { + if (bs_idx >= b) return; - unknown += bs_idx * n * 3 + pt_idx * 3; - known += bs_idx * m * 3; - dist2 += bs_idx * n * 3 + pt_idx * 3; - idx += bs_idx * n * 3 + pt_idx * 3; + unknown += bs_idx * n * 3 + pt_idx * 3; + known += bs_idx * m * 3; + dist2 += bs_idx * n * 3 + pt_idx * 3; + idx += bs_idx * n * 3 + pt_idx * 3; - T ux = unknown[0]; - T uy = unknown[1]; - T uz = unknown[2]; + T ux = unknown[0]; + T uy = unknown[1]; + T uz = unknown[2]; - double best1 = 1e40, best2 = 1e40, best3 = 1e40; - int besti1 = 0, besti2 = 0, besti3 = 0; - for (int k = 0; k < m; ++k) { - T x = known[k * 3 + 0]; - T y = known[k * 3 + 1]; - T z = known[k * 3 + 2]; - T d = (ux - x) * (ux - x) + (uy - y) * (uy - y) + (uz - z) * (uz - z); - if (d < best1) { - best3 = best2; - besti3 = besti2; - best2 = best1; - besti2 = besti1; - best1 = d; - besti1 = k; - } else if (d < best2) { - best3 = best2; - besti3 = besti2; - best2 = d; - besti2 = k; - } else if (d < best3) { - best3 = d; - besti3 = k; + double best1 = 1e40, best2 = 1e40, best3 = 1e40; + int besti1 = 0, besti2 = 0, besti3 = 0; + for (int k = 0; k < m; ++k) { + T x = known[k * 3 + 0]; + T y = known[k * 3 + 1]; + T z = known[k * 3 + 2]; + T d = (ux - x) * (ux - x) + (uy - y) * (uy - y) + (uz - z) * (uz - z); + if (d < best1) { + best3 = best2; + besti3 = besti2; + best2 = best1; + besti2 = besti1; + best1 = d; + besti1 = k; + } else if (d < best2) { + best3 = best2; + besti3 = besti2; + best2 = d; + besti2 = k; + } else if (d < best3) { + best3 = d; + besti3 = k; + } } + dist2[0] = best1; + dist2[1] = best2; + dist2[2] = best3; + idx[0] = besti1; + idx[1] = besti2; + idx[2] = besti3; } - dist2[0] = best1; - dist2[1] = best2; - dist2[2] = best3; - idx[0] = besti1; - idx[1] = besti2; - idx[2] = besti3; } #endif // THREE_NN_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/cuda/voxelization_cuda_kernel.cuh b/mmcv/ops/csrc/common/cuda/voxelization_cuda_kernel.cuh index 62e118b..021b488 100644 --- a/mmcv/ops/csrc/common/cuda/voxelization_cuda_kernel.cuh +++ b/mmcv/ops/csrc/common/cuda/voxelization_cuda_kernel.cuh @@ -23,20 +23,20 @@ __global__ void dynamic_voxelize_kernel( // To save some computation auto points_offset = points + index * num_features; auto coors_offset = coors + index * NDim; - int c_x = floor((points_offset[0] - coors_x_min) / voxel_x); + int c_x = floorf((points_offset[0] - coors_x_min) / voxel_x); if (c_x < 0 || c_x >= grid_x) { coors_offset[0] = -1; continue; } - int c_y = floor((points_offset[1] - coors_y_min) / voxel_y); + int c_y = floorf((points_offset[1] - coors_y_min) / voxel_y); if (c_y < 0 || c_y >= grid_y) { coors_offset[0] = -1; coors_offset[1] = -1; continue; } - int c_z = floor((points_offset[2] - coors_z_min) / voxel_z); + int c_z = floorf((points_offset[2] - coors_z_min) / voxel_z); if (c_z < 0 || c_z >= grid_z) { coors_offset[0] = -1; coors_offset[1] = -1; @@ -101,7 +101,7 @@ __global__ void point_to_voxelidx_kernel(const T_int* coor, CUDA_1D_KERNEL_LOOP(index, num_points) { auto coor_offset = coor + index * NDim; // skip invalid points - if ((index >= num_points) || (coor_offset[0] == -1)) return; + if (coor_offset[0] == -1) continue; int num = 0; int coor_x = coor_offset[0]; @@ -122,7 +122,7 @@ __global__ void point_to_voxelidx_kernel(const T_int* coor, point_to_pointidx[index] = i; } else if (num >= max_points) { // out of boundary - return; + break; } } } @@ -166,4 +166,51 @@ __global__ void determin_voxel_num( } } +__global__ void nondeterministic_get_assign_pos( + const int nthreads, const int32_t* coors_map, int32_t* pts_id, + int32_t* coors_count, int32_t* reduce_count, int32_t* coors_order) { + CUDA_1D_KERNEL_LOOP(thread_idx, nthreads) { + int coors_idx = coors_map[thread_idx]; + if (coors_idx > -1) { + int32_t coors_pts_pos = atomicAdd(&reduce_count[coors_idx], 1); + pts_id[thread_idx] = coors_pts_pos; + if (coors_pts_pos == 0) { + coors_order[coors_idx] = atomicAdd(coors_count, 1); + } + } + } +} + +template +__global__ void nondeterministic_assign_point_voxel( + const int nthreads, const T* points, const int32_t* coors_map, + const int32_t* pts_id, const int32_t* coors_in, const int32_t* reduce_count, + const int32_t* coors_order, T* voxels, int32_t* coors, int32_t* pts_count, + const int max_voxels, const int max_points, const int num_features, + const int NDim) { + CUDA_1D_KERNEL_LOOP(thread_idx, nthreads) { + int coors_idx = coors_map[thread_idx]; + int coors_pts_pos = pts_id[thread_idx]; + if (coors_idx > -1 && coors_pts_pos < max_points) { + int coors_pos = coors_order[coors_idx]; + if (coors_pos < max_voxels) { + auto voxels_offset = + voxels + (coors_pos * max_points + coors_pts_pos) * num_features; + auto points_offset = points + thread_idx * num_features; + for (int k = 0; k < num_features; k++) { + voxels_offset[k] = points_offset[k]; + } + if (coors_pts_pos == 0) { + pts_count[coors_pos] = min(reduce_count[coors_idx], max_points); + auto coors_offset = coors + coors_pos * NDim; + auto coors_in_offset = coors_in + coors_idx * NDim; + for (int k = 0; k < NDim; k++) { + coors_offset[k] = coors_in_offset[k]; + } + } + } + } + } +} + #endif // VOXELIZATION_CUDA_KERNEL_CUH diff --git a/mmcv/ops/csrc/common/mlu/bbox_overlaps_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/bbox_overlaps_mlu_kernel.mlu new file mode 100644 index 0000000..58e695a --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/bbox_overlaps_mlu_kernel.mlu @@ -0,0 +1,322 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include + +#include "common_mlu_helper.hpp" + +#define COORD_NUM 4 + +__nram__ char nmem_buf[MAX_NRAM_SIZE]; + +template +__mlu_func__ void computeDiv(void *nram_dst, void *nram_src0, void *nram_src1, + void *nram_addition, const int32_t deal_num) { + __bang_active_reciphp((T *)nram_dst, (T *)nram_src1, deal_num); + __bang_mul((T *)nram_dst, (T *)nram_src0, (T *)nram_dst, deal_num); +} + +template <> +__mlu_func__ void computeDiv(void *nram_dst, void *nram_src0, + void *nram_src1, void *nram_addition, + const int32_t deal_num) { + __bang_half2float((float *)nram_addition, (half *)nram_src1, deal_num); + __bang_active_reciphp((float *)nram_addition, (float *)nram_addition, + deal_num); + __bang_float2half_rd((half *)nram_src1, (float *)nram_addition, deal_num); + __bang_mul((half *)nram_dst, (half *)nram_src0, (half *)nram_src1, deal_num); +} + +template +__mlu_func__ void bboxOverlapsWorkflow( + T *vec_b1_x1, T *vec_b1_y1, T *vec_b1_x2, T *vec_b1_y2, T *vec_b2_x1, + T *vec_b2_y1, T *vec_b2_x2, T *vec_b2_y2, T *vec_left, T *vec_right, + T *vec_top, T *vec_bottom, const T *bbox1, const T *bbox2, void *ious, + const int32_t offset, const int32_t mode, const int32_t batches_stride, + const int32_t num_bbox1, const int32_t num_bbox2, const bool aligned) { + int32_t task_batch_stride = (num_bbox1 + taskDim - 1) / taskDim; + int32_t batch_start = taskId * task_batch_stride; + int32_t batch_per_task = batch_start + task_batch_stride < num_bbox1 + ? task_batch_stride + : num_bbox1 - batch_start; + batch_per_task = batch_per_task > 0 ? batch_per_task : (0); + + if (aligned) { + int32_t num_loop_cpy = batch_per_task / batches_stride; + int32_t num_rem_cpy_batches = batch_per_task % batches_stride; + num_loop_cpy = num_rem_cpy_batches > 0 ? num_loop_cpy + 1 : num_loop_cpy; + for (int32_t i = 0; i < num_loop_cpy; i++) { + int32_t index = batch_start + i * batches_stride; + int32_t handle_batches = index + batches_stride > num_bbox1 + ? num_rem_cpy_batches + : batches_stride; + int32_t b1 = index; + int32_t b2 = index; + + int32_t base1 = b1 * COORD_NUM; + __memcpy(vec_b1_x1, &bbox1[base1], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b1_y1, &bbox1[base1 + 1], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b1_x2, &bbox1[base1 + 2], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b1_y2, &bbox1[base1 + 3], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + + int32_t base2 = b2 * COORD_NUM; + __memcpy(vec_b2_x1, &bbox2[base2], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_y1, &bbox2[base2 + 1], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_x2, &bbox2[base2 + 2], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_y2, &bbox2[base2 + 3], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + // get the width and height + __bang_maxequal(vec_left, vec_b1_x1, vec_b2_x1, batches_stride); + __bang_minequal(vec_right, vec_b1_x2, vec_b2_x2, batches_stride); + __bang_maxequal(vec_top, vec_b1_y1, vec_b2_y1, batches_stride); + __bang_minequal(vec_bottom, vec_b1_y2, vec_b2_y2, batches_stride); + + // right - left + offset ---> left + __bang_sub(vec_left, vec_right, vec_left, batches_stride); + __bang_add_const(vec_left, vec_left, (T)offset, batches_stride); + + // bottom - top + offset ---> right + __bang_sub(vec_right, vec_bottom, vec_top, batches_stride); + __bang_add_const(vec_right, vec_right, (T)offset, batches_stride); + + // zero vector ---> bottom + __nramset(vec_bottom, batches_stride, 0.f); + + // width --> vec_left + __bang_maxequal(vec_left, vec_bottom, vec_left, batches_stride); + T *width = vec_left; + // height --> vec_right + __bang_maxequal(vec_right, vec_bottom, vec_right, batches_stride); + T *height = vec_right; + + // get the b1_area + // (b1_x2 - b1_x1 + offset) ---> vec_top + __bang_sub(vec_top, vec_b1_x2, vec_b1_x1, batches_stride); + __bang_add_const(vec_top, vec_top, (T)offset, batches_stride); + + // (b1_y2 - b1_y1 + offset) ---> vec_bottom + __bang_sub(vec_bottom, vec_b1_y2, vec_b1_y1, batches_stride); + __bang_add_const(vec_bottom, vec_bottom, (T)offset, batches_stride); + + // b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset) + // ---> vec_top; + __bang_mul(vec_top, vec_top, vec_bottom, batches_stride); + T *b1_area = vec_top; + + // get the b2_area + // (b2_x2 - b2_x1 + offset) ---> b2_x1 + __bang_sub(vec_b2_x1, vec_b2_x2, vec_b2_x1, batches_stride); + __bang_add_const(vec_b2_x1, vec_b2_x1, (T)offset, batches_stride); + + // (b2_y2 - b2_y1 + offset) ---> b2_y1 + __bang_sub(vec_b2_y1, vec_b2_y2, vec_b2_y1, batches_stride); + __bang_add_const(vec_b2_y1, vec_b2_y1, (T)offset, batches_stride); + + // b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset) + // ---> b2_x1; + __bang_mul(vec_b2_x1, vec_b2_x1, vec_b2_y1, batches_stride); + T *b2_area = vec_b2_x1; + + // inter_s = width * height + __bang_mul(height, width, height, batches_stride); + T *inter_s = height; + + // offset vector ---> vec_b2_y1 + __nramset(vec_b2_y1, batches_stride, T(offset)); + T *vec_offset = vec_b2_y1; + + if (mode == 0) { + __bang_add(b1_area, b1_area, b2_area, batches_stride); + __bang_sub(b1_area, b1_area, inter_s, batches_stride); + __bang_maxequal(b1_area, vec_offset, b1_area, batches_stride); + } else { + __bang_maxequal(b1_area, vec_offset, b1_area, batches_stride); + } + T *base_s = b1_area; + + // ious = inter_s / base_s + computeDiv(width, inter_s, base_s, vec_b2_x2, batches_stride); + __memcpy((T *)ious + index, width, handle_batches * sizeof(T), + NRAM2GDRAM); + } + } else { + int32_t num_loop_cpy = num_bbox2 / batches_stride; + int32_t num_rem_cpy_batches = num_bbox2 % batches_stride; + num_loop_cpy = num_rem_cpy_batches > 0 ? num_loop_cpy + 1 : num_loop_cpy; + for (int32_t i = 0; i < batch_per_task; i++) { + int32_t index1 = batch_start + i; + int32_t b1 = index1; + int32_t base1 = b1 * COORD_NUM; + + // set bbox1 and bbox2 to nram + __nramset(vec_b1_x1, batches_stride, bbox1[base1]); + __nramset(vec_b1_y1, batches_stride, bbox1[base1 + 1]); + __nramset(vec_b1_x2, batches_stride, bbox1[base1 + 2]); + __nramset(vec_b1_y2, batches_stride, bbox1[base1 + 3]); + + for (int32_t j = 0; j < num_loop_cpy; j++) { + int32_t index2 = j * batches_stride; + int32_t handle_batches = index2 + batches_stride > num_bbox2 + ? num_rem_cpy_batches + : batches_stride; + int32_t b2 = index2; + int32_t base2 = b2 * COORD_NUM; + + // copy bbox2 to nram + __memcpy(vec_b2_x1, &bbox2[base2], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_y1, &bbox2[base2 + 1], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_x2, &bbox2[base2 + 2], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + __memcpy(vec_b2_y2, &bbox2[base2 + 3], sizeof(T), GDRAM2NRAM, sizeof(T), + COORD_NUM * sizeof(T), handle_batches - 1); + + // get the width and height + __bang_maxequal(vec_left, vec_b1_x1, vec_b2_x1, batches_stride); + __bang_minequal(vec_right, vec_b1_x2, vec_b2_x2, batches_stride); + __bang_maxequal(vec_top, vec_b1_y1, vec_b2_y1, batches_stride); + __bang_minequal(vec_bottom, vec_b1_y2, vec_b2_y2, batches_stride); + + // right - left + offset ---> left + __bang_sub(vec_left, vec_right, vec_left, batches_stride); + __bang_add_const(vec_left, vec_left, (T)offset, batches_stride); + // bottom - top + offset ---> right + __bang_sub(vec_right, vec_bottom, vec_top, batches_stride); + __bang_add_const(vec_right, vec_right, (T)offset, batches_stride); + + // zero vector ---> bottom + __nramset(vec_bottom, batches_stride, (T)0); + + // width --> vec_left + __bang_maxequal(vec_left, vec_bottom, vec_left, batches_stride); + T *width = vec_left; + // height --> vec_right + __bang_maxequal(vec_right, vec_bottom, vec_right, batches_stride); + T *height = vec_right; + + // get the b1_area + // (b1_x2 - b1_x1 + offset) ---> vec_top + __bang_sub(vec_top, vec_b1_x2, vec_b1_x1, batches_stride); + __bang_add_const(vec_top, vec_top, (T)offset, batches_stride); + // (b1_y2 - b1_y1 + offset) ---> vec_bottom + __bang_sub(vec_bottom, vec_b1_y2, vec_b1_y1, batches_stride); + __bang_add_const(vec_bottom, vec_bottom, (T)offset, batches_stride); + // b1_area = (b1_x2 - b1_x1 + offset) * (b1_y2 - b1_y1 + offset) + // ---> vec_top; + __bang_mul(vec_top, vec_top, vec_bottom, batches_stride); + T *b1_area = vec_top; + + // get the b2_area + // (b2_x2 - b2_x1 + offset) ---> b2_x1 + __bang_sub(vec_b2_x1, vec_b2_x2, vec_b2_x1, batches_stride); + __bang_add_const(vec_b2_x1, vec_b2_x1, (T)offset, batches_stride); + // (b2_y2 - b2_y1 + offset) ---> b2_y1 + __bang_sub(vec_b2_y1, vec_b2_y2, vec_b2_y1, batches_stride); + __bang_add_const(vec_b2_y1, vec_b2_y1, (T)offset, batches_stride); + // b2_area = (b2_x2 - b2_x1 + offset) * (b2_y2 - b2_y1 + offset) + // ---> b2_x1; + __bang_mul(vec_b2_x1, vec_b2_x1, vec_b2_y1, batches_stride); + T *b2_area = vec_b2_x1; + + // inter_s = width * height + __bang_mul(height, width, height, batches_stride); + T *inter_s = height; + + // offset vector ---> vec_b2_y1 + __nramset(vec_b2_y1, batches_stride, T(offset)); + T *vec_offset = vec_b2_y1; + + if (mode == 0) { + __bang_add(b1_area, b1_area, b2_area, batches_stride); + __bang_sub(b1_area, b1_area, inter_s, batches_stride); + __bang_maxequal(b1_area, vec_offset, b1_area, batches_stride); + } else { + __bang_maxequal(b1_area, vec_offset, b1_area, batches_stride); + } + T *base_s = b1_area; + + // ious = inter_s / base_s + computeDiv(width, inter_s, base_s, vec_b2_x2, batches_stride); + int32_t gdram_offset = index1 * num_bbox2 + index2; + __memcpy((T *)ious + gdram_offset, width, handle_batches * sizeof(T), + NRAM2GDRAM); + } + } + } +} + +template +__mlu_global__ void MLUUnion1KernelBBoxOverlaps( + const void *bbox1, const void *bbox2, void *ious, const int32_t num_bbox1, + const int32_t num_bbox2, const int32_t mode, const bool aligned, + const int32_t offset) { + /* + * NRAM partition + * |-------------------------------------------------------------| + * | vec_b1_x1 | vec_b1_y1 | vec_b1_x2 | vec_b1_y2 | + * |-------------------------------------------------------------| + * | vec_b2_x1 | vec_b2_y1 | vec_b2_x2 | vec_b2_y2 | + * |-------------------------------------------------------------| + * | vec_left | vec_right | vec_top | vec_bottom | + * |-------------------------------------------------------------| + * + */ + const int32_t align_bytes = PAD_DOWN(MAX_NRAM_SIZE, NFU_ALIGN_SIZE); + const int32_t split_nram_num = 12; + const int32_t nram_stride = + align_bytes / NFU_ALIGN_SIZE / split_nram_num * NFU_ALIGN_SIZE; + + void *vec_b1_x1 = nmem_buf; + void *vec_b1_y1 = nmem_buf + nram_stride; + void *vec_b1_x2 = nmem_buf + 2 * nram_stride; + void *vec_b1_y2 = nmem_buf + 3 * nram_stride; + + void *vec_b2_x1 = nmem_buf + 4 * nram_stride; + void *vec_b2_y1 = nmem_buf + 5 * nram_stride; + void *vec_b2_x2 = nmem_buf + 6 * nram_stride; + void *vec_b2_y2 = nmem_buf + 7 * nram_stride; + + void *vec_left = nmem_buf + 8 * nram_stride; + void *vec_right = nmem_buf + 9 * nram_stride; + void *vec_top = nmem_buf + 10 * nram_stride; + void *vec_bottom = nmem_buf + 11 * nram_stride; + + const int32_t vec_length = nram_stride / sizeof(T); + bboxOverlapsWorkflow((T *)vec_b1_x1, (T *)vec_b1_y1, (T *)vec_b1_x2, + (T *)vec_b1_y2, (T *)vec_b2_x1, (T *)vec_b2_y1, + (T *)vec_b2_x2, (T *)vec_b2_y2, (T *)vec_left, + (T *)vec_right, (T *)vec_top, (T *)vec_bottom, + (T *)bbox1, (T *)bbox2, (T *)ious, offset, mode, + vec_length, num_bbox1, num_bbox2, aligned); +} + +void KernelBBoxOverlaps(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, const cnrtDataType_t d_type, + const void *bbox1, const void *bbox2, void *ious, + const int32_t num_bbox1, const int32_t num_bbox2, + const int32_t mode, const bool aligned, + const int32_t offset) { + if (d_type == CNRT_FLOAT16) { + MLUUnion1KernelBBoxOverlaps<<>>( + bbox1, bbox2, ious, num_bbox1, num_bbox2, mode, aligned, offset); + } else { + MLUUnion1KernelBBoxOverlaps<<>>( + bbox1, bbox2, ious, num_bbox1, num_bbox2, mode, aligned, offset); + } +} diff --git a/mmcv/ops/csrc/common/mlu/common_mlu_helper.hpp b/mmcv/ops/csrc/common/mlu/common_mlu_helper.hpp new file mode 100644 index 0000000..669a9d7 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/common_mlu_helper.hpp @@ -0,0 +1,190 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#ifndef COMMON_MLU_HELPER_HPP_ +#define COMMON_MLU_HELPER_HPP_ + +#define NFU_ALIGN_SIZE 128 // Byte +#define REM_FOR_STACK (128 * 1024) // 128KB reserved for cncc + +#ifdef __BANG_ARCH__ +#define MAX_NRAM_SIZE \ + (__MLU_NRAM_SIZE__ * 1024 - REM_FOR_STACK) // 128KB reserved for cncc +#define MAX_SRAM_SIZE \ + (__MLU_SRAM_SIZE__ * 1024 - REM_FOR_STACK) // 128KB reserved for cncc +#else +#define MAX_NRAM_SIZE (384 * 1024) // 384KB, initialization value +#define MAX_SRAM_SIZE (1920 * 1024) // 1920KB, initialization value +#endif + +#ifndef PAD_UP +#define PAD_UP(x, y) (((x) / (y) + (int)((x) % (y) > 0)) * (y)) +#endif + +#ifndef PAD_DOWN +#define PAD_DOWN(x, y) (((x) / (y)) * (y)) +#endif + +#define CEIL_ALIGN(x, y) (((x) + (y)-1) / (y) * (y)) + +/*! + * @brief Converts int32 to float32 data type. + * + * @param[out] dst + * Pointer to NRAM that stores int32 type data. + * @param[in,out] dst_addition + * Pointer to NRAM as the workspace of dst, which has the same size as dst. + * It allows empty pointer on MLU300 series. + * @param[in] src + * Pointer to NRAM that stores float32 type data. + * @param[in,out] src_addition + * Pointer to NRAM as the workspace of src, which has a size of 128 Bytes. + * It allows empty pointer on MLU300 series. + * @param[in] src_count + * The count of elements in src. + */ +__mlu_func__ void convertInt2Float(float *dst, float *dst_addition, int *src, + float *src_addition, const int src_count) { +#if __BANG_ARCH__ >= 300 + __bang_int2float((float *)dst, (int32_t *)src, src_count, 0); +#else + // get sign bit + const float move_23bit = 8388608.0; + // 0x80000000 = 1,000000000,0000000000000000000000000000 + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x80000000); + __bang_cycle_band((char *)dst_addition, (char *)src, (char *)src_addition, + src_count * sizeof(float), NFU_ALIGN_SIZE); + // get 1 or 0 from sign bit + // judg is Odd + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x00000001); + __bang_cycle_bor((char *)dst_addition, (char *)dst_addition, + (char *)src_addition, src_count * sizeof(float), + NFU_ALIGN_SIZE); + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x80000001); + __bang_cycle_eq(dst_addition, dst_addition, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + // minus xor, positive num invariant + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0xffffffff); + __bang_cycle_mul(dst, dst_addition, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + __bang_bxor((char *)dst, (char *)src, (char *)dst, src_count * sizeof(float)); + // convert int32 to float32 + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), 0x7fffff); + __bang_cycle_band((char *)dst, (char *)dst, (char *)src_addition, + src_count * sizeof(float), NFU_ALIGN_SIZE); + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x4b000000); + __bang_cycle_bor((char *)dst, (char *)dst, (char *)src_addition, + src_count * sizeof(float), NFU_ALIGN_SIZE); + __bang_sub_const(dst, dst, move_23bit, src_count); + // add one + __bang_add(dst, dst, dst_addition, src_count); + // set sign for float32 + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0xffffffff); + __bang_cycle_mul(dst_addition, dst_addition, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x00000001); + __bang_cycle_add(dst_addition, dst_addition, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0x80000000); + __bang_cycle_band((char *)dst_addition, (char *)dst_addition, + (char *)src_addition, src_count * 4, 128); + __bang_bor((char *)dst, (char *)dst, (char *)dst_addition, src_count * 4); +#endif // __BANG_ARCH__ >= 300 +} + +/*! + * @brief Converts float32 to int32 data type with to_zero round mode. + * + * @param[out] dst + * Pointer to NRAM that stores float32 type data. + * @param[in,out] dst_addition + * Pointer to NRAM as the workspace of dst, which has the same size as dst. + * It allows empty pointer on MLU300 series. + * @param[in] src + * Pointer to NRAM that stores int32 type data. + * @param[in,out] src_addition + * Pointer to NRAM as the workspace of src, which has a size of 128 Bytes. + * It allows empty pointer on MLU300 series. + * @param[in] src_count + * The count of elements in src. + */ +__mlu_func__ void convertFloat2Int(int *dst, float *dst_addition, float *src, + float *src_addition, const int src_count) { +#if __BANG_ARCH__ >= 300 + __bang_float2int_tz((int32_t *)dst, (float *)src, src_count, 0); +#else + // sign ===> src_addition + // dst=-1.0 : when src[i] is a negative number + // dst=+1.0 : when src[i] is a positive number + const int floatDchar = sizeof(float) / sizeof(char); + __bang_active_sign((float *)dst, src, src_count); + // dst_addition = abs(src) + __bang_mul(dst_addition, src, (float *)dst, src_count); + // if dst_addition < 1.0 , then src_addition + 1, to fix add error. + __nramset((float *)src_addition, NFU_ALIGN_SIZE / sizeof(float), 1.0f); + __bang_cycle_lt(dst_addition, dst_addition, (float *)src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + __bang_add_tz((float *)dst, (float *)dst, (float *)dst_addition, src_count); + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + 0xbf800000); + // set negative flag -1.0 = 0xbf80000 + __bang_cycle_eq( + (float *)dst, (float *)dst, (float *)src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); // to mark all src in [x<-1.0] + __bang_active_abs(dst_addition, src, src_count); + __nramset((float *)src_addition, NFU_ALIGN_SIZE / sizeof(float), 8388608.0f); + // mask shift move 23 + __bang_cycle_add_tz( + dst_addition, dst_addition, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); // right shift move 23bit + // two`s complement for negatibe + // dst=1.0 , when src <-1.0 + // dst=0.0 , when src >=-1.0 + __bang_sub(dst_addition, dst_addition, (float *)dst, src_count); + // to fix max value + // 0 1001 0110 111 1111 1111 1111 1111 1111 <=> 0xcb7fffff <=> 16777215.0, + // means max value. + __bang_mul_const((float *)dst, (float *)dst, 16777215.0, src_count); + __bang_bxor((char *)dst_addition, (char *)dst_addition, (char *)dst, + src_count * floatDchar); + // get low 23bit + __nramset((unsigned *)src_addition, NFU_ALIGN_SIZE / sizeof(float), + (unsigned)0x007fffff); + // mask low 23bit is 1 + __bang_cycle_band((char *)dst_addition, (char *)dst_addition, + (char *)src_addition, src_count * floatDchar, + NFU_ALIGN_SIZE / sizeof(char)); + // set 9 high bit ===> dst + // -2.0 <=> 0xc0000000 <=> 1100 0000 0000 0000 0000 0000 0000 0000 + // 1.0 <=> 0x3f800000 <=> 0011 1111 1000 0000 0000 0000 0000 0000 + __nramset(src_addition, NFU_ALIGN_SIZE / sizeof(float), 0x3f800000); + __bang_cycle_and((float *)dst, (float *)dst, src_addition, src_count, + NFU_ALIGN_SIZE / sizeof(float)); + // src or dst_addition + __bang_bor((char *)dst_addition, (char *)dst, (char *)dst_addition, + src_count * floatDchar); + __bang_mul_const((float *)dst, (float *)dst, -2.0, src_count); + __bang_bor((char *)dst, (char *)dst, (char *)dst_addition, + src_count * floatDchar); +#endif // __BANG_ARCH__ >= 300 +} + +#endif // COMMON_MLU_HELPER_HPP_ diff --git a/mmcv/ops/csrc/common/mlu/focal_loss_sigmoid_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/focal_loss_sigmoid_mlu_kernel.mlu new file mode 100644 index 0000000..7624379 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/focal_loss_sigmoid_mlu_kernel.mlu @@ -0,0 +1,888 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include + +#include "common_mlu_helper.hpp" + +#define PING 0 +#define PONG 1 + +__nram__ char nram_buffer[MAX_NRAM_SIZE]; + +namespace forward { +template +__mlu_func__ void loadInput(char *nram_input, T *dram_input, const int32_t size, + const int32_t dst_stride = 0, + const int32_t src_stride = 0, + const int32_t count = 1) { + if (dst_stride == src_stride) { + __memcpy_async(nram_input, dram_input, size * count, GDRAM2NRAM); + } else { + __memcpy_async(nram_input, dram_input, size, GDRAM2NRAM, dst_stride, + src_stride, count - 1); + } +} + +template +__mlu_func__ void loadWeight(char *nram_input, T *dram_input, const int32_t t, + const int32_t c, const int32_t has_weight, + const int32_t partition_nc) { + if (has_weight && partition_nc && t >= 0 && t < c) { + __memcpy_async(nram_input, (T *)dram_input + t, sizeof(T), GDRAM2NRAM); + } +} + +template +__mlu_func__ void storeOutput(T *dram_output, char *nram_output, + const int32_t size, const int32_t dst_stride = 0, + const int32_t src_stride = 0, + const int32_t count = 1) { + if (dst_stride == src_stride) { + __memcpy_async(dram_output, nram_output, size * count, NRAM2GDRAM); + } else { + __memcpy_async(dram_output, nram_output, size, NRAM2GDRAM, dst_stride, + src_stride, count - 1); + } +} + +template +__mlu_func__ void compute(T *input, const int32_t *target, const T *weight, + const int32_t has_weight, const int32_t partition_nc, + const int32_t deal_num, const int32_t n_seg, + const int32_t c, const int32_t c_seg, + const int32_t c_start_index, const float alpha, + const float gamma, T *compute_a, T *compute_b, + T *output) { + // set params + const int32_t c_num = + has_weight ? PAD_UP(c_seg, NFU_ALIGN_SIZE / sizeof(T)) : c_seg; + const int32_t c_end_index = c_start_index + c_seg; + const int32_t half_epsilon = 0x0400; + const T epsilon_f = + sizeof(T) == sizeof(float) ? FLT_MIN : *((half *)&half_epsilon); + + // 0. alpha_t * p_t^r = alpha * (1 - p) ^ gamma if t == c_i + // = (1 - alpha) * p ^ gamma if t != c_i + __nramset((T *)output, deal_num, (T)(1 - alpha)); + __bang_active_sigmoid((T *)compute_b, (T *)input, deal_num); + for (int32_t i = 0; i < n_seg; ++i) { + const int32_t t = *((uint32_t *)target + i); + if (t >= c_start_index && t < c_end_index) { + const uint32_t index = i * c_num + t - c_start_index; + *((T *)input + index) = -1.0 * (*((T *)input + index)); + *((T *)compute_b + index) = 1.0 - (*((T *)compute_b + index)) + epsilon_f; + *((T *)output + index) = alpha; + } + } + if (sizeof(T) == sizeof(half)) { + __bang_half2float((float *)compute_a, (half *)compute_b, deal_num); + __bang_active_loghp((float *)compute_a, (float *)compute_a, deal_num); + __bang_mul_const((float *)compute_a, (float *)compute_a, (float)gamma, + deal_num); + __bang_active_exphp((float *)compute_a, (float *)compute_a, deal_num); + __bang_float2half_rd((half *)compute_a, (float *)compute_a, deal_num); + } else { + __bang_active_loghp((T *)compute_a, (T *)compute_b, deal_num); + __bang_mul_const((T *)compute_a, (T *)compute_a, (T)gamma, deal_num); + __bang_active_exphp((T *)compute_a, (T *)compute_a, deal_num); + } + __bang_mul((T *)output, (T *)compute_a, (T *)output, deal_num); + + // 1. max = max(0, -x) if t == c_i + // = max(0, x) if t != c_i + __nramset((T *)compute_b, deal_num, (T)0); + __bang_maxequal((T *)compute_b, (T *)compute_b, (T *)input, deal_num); + + // 2. -log(p_t) = ln(e^(-max)+ e^(-max-x) + max if t == c_i + // = ln(e^(-max)+ e^(-max+x) + max if t != c_i + __bang_mul_const((T *)compute_a, (T *)compute_b, (T)-1.0, deal_num); + __bang_add((T *)input, (T *)compute_a, (T *)input, deal_num); + + __bang_active_exphp((T *)compute_a, (T *)compute_a, deal_num); + __bang_active_exphp((T *)input, (T *)input, deal_num); + __bang_add((T *)compute_a, (T *)compute_a, (T *)input, deal_num); + __bang_active_loghp((T *)compute_a, (T *)compute_a, deal_num); + __bang_add((T *)input, (T *)compute_a, (T *)compute_b, deal_num); + + // 3. output = alpha_t * p_t^r * [-log(p_t)] + __bang_mul((T *)output, (T *)output, (T *)input, deal_num); + + // 4. with weight + if (has_weight) { + for (int32_t i = 0; i < n_seg; ++i) { + int32_t t = *((int32_t *)target + i); + if (t >= 0 && t < c) { + t = partition_nc ? 0 : t; + __bang_mul_const((T *)output + i * c_num, (T *)output + i * c_num, + *((T *)weight + t), c_num); + } + } + } +} + +template +__mlu_func__ void startPipeline( + const T *input, const int32_t *target, const T *weight, + char *nram_compute_a, char *nram_compute_b, char *nram_input, + char *nram_target, char *nram_weight, char *nram_output, + const int32_t has_weight, const int32_t partition_nc, + const int32_t pingpong_offset, const int32_t pingpong_weight_offset, + const int32_t c_offset_num, const int32_t n, const int32_t n_seg, + const int32_t c, const int32_t c_seg, const float alpha, const float gamma, + T *output) { + // with offset + input = (T *)((char *)input + c_offset_num * sizeof(T)); + output = (T *)((char *)output + c_offset_num * sizeof(T)); + + const int32_t c_seg_align_num = PAD_UP(c_seg, NFU_ALIGN_SIZE / sizeof(T)); + const int32_t c_num = has_weight ? c_seg_align_num : c_seg; + const int32_t deal_num = PAD_UP(n_seg * c_num, NFU_ALIGN_SIZE / sizeof(T)); + const int32_t load_size = c_seg * sizeof(T); + const int32_t dram_stride = c * sizeof(T); + const int32_t nram_stride = c_num * sizeof(T); + + if (has_weight && !partition_nc) { + loadInput(nram_weight, (T *)weight, load_size, nram_stride, dram_stride, + 1); + __asm__ volatile("sync;\n\t"); + } + const int32_t repeat = n / n_seg; + const int32_t remain = n % n_seg; + + /* + * Pipeline: The pipeline is processed in three stages: Load, Compute, Store. + * The allocated memory space of NRAM is divided into two parts: + * PING and Pong. In a single time slice, PING is used to process + * IO stream and PONG is used for computation. Both of them are + * processed synchronously until finished. + * + * diagram of PINGPONG: + * |------|-----------------------------------------------------------------| + * | | space | + * |------|-----------------------------------------------------------------| + * | time | Ping | Pong | Ping | Pong | Ping | Pong | + * |------|-----------------------------------------------------------------| + * | 0 | L0 | | | | | | + * | 1 | C0 | L1 | | | | | + * | 2 | S0 | C1 | L2 | | | | + * | 3 | | S1 | C2 | L3 | | | + * | 4 | | | S2 | C3 | L4 | | + * | 5 | | | | S3 | C4 | L5 | + * | 6 | | | | | S4 | C5 | + * | 7 | | | | | | S5 | + * |------|-----------------------------------------------------------------| + */ + + // diagram of PINGPONG: L0 + if (repeat > 0) { + loadInput(nram_input, (T *)input, load_size, nram_stride, dram_stride, + n_seg); + loadInput(nram_target, (int32_t *)target, n_seg * sizeof(int32_t)); + loadWeight(nram_weight, (T *)weight, *((int32_t *)target), c, has_weight, + partition_nc); + __asm__ volatile("sync;\n\t"); + } + + // diagram of PINGPONG: C0 and L1 + if (repeat > 1) { + compute((T *)nram_input, (int32_t *)nram_target, (T *)nram_weight, + has_weight, partition_nc, deal_num, n_seg, c, c_seg, c_offset_num, + alpha, gamma, (T *)nram_compute_a, (T *)nram_compute_b, + (T *)nram_output); + loadInput((char *)nram_input + pingpong_offset, (T *)input + c * n_seg, + load_size, nram_stride, dram_stride, n_seg); + loadInput((char *)nram_target + pingpong_offset, + (int32_t *)target + n_seg, n_seg * sizeof(int32_t)); + loadWeight((char *)nram_weight + pingpong_weight_offset, (T *)weight, + *((int32_t *)target + n_seg), c, has_weight, partition_nc); + __asm__ volatile("sync;\n\t"); + } + + for (int32_t i = 0; i < repeat - 2; ++i) { + storeOutput((T *)output + i * c * n_seg, + nram_output + (i % 2) * pingpong_offset, load_size, + dram_stride, nram_stride, n_seg); + loadInput((char *)nram_input + (i % 2) * pingpong_offset, + (T *)(input) + (i + 2) * c * n_seg, load_size, nram_stride, + dram_stride, n_seg); + loadInput((char *)nram_target + (i % 2) * pingpong_offset, + (int32_t *)target + (i + 2) * n_seg, + n_seg * sizeof(int32_t)); + loadWeight((char *)nram_weight + (i % 2) * pingpong_weight_offset, + (T *)weight, *((int32_t *)target + (i + 2) * n_seg), c, + has_weight, partition_nc); + compute((T *)(nram_input + ((i + 1) % 2) * pingpong_offset), + (int32_t *)(nram_target + ((i + 1) % 2) * pingpong_offset), + (T *)(nram_weight + + partition_nc * ((i + 1) % 2) * pingpong_weight_offset), + has_weight, partition_nc, deal_num, n_seg, c, c_seg, c_offset_num, + alpha, gamma, (T *)nram_compute_a, (T *)nram_compute_b, + (T *)(nram_output + ((i + 1) % 2) * pingpong_offset)); + __asm__ volatile("sync;\n\t"); + } + + if (repeat > 1) { + storeOutput((T *)output + (repeat - 2) * c * n_seg, + (char *)nram_output + (repeat % 2) * pingpong_offset, + load_size, dram_stride, nram_stride, n_seg); + } + + if (remain > 0) { + loadInput((char *)nram_input + (repeat % 2) * pingpong_offset, + (T *)input + repeat * c * n_seg, load_size, nram_stride, + dram_stride, remain); + loadInput((char *)nram_target + (repeat % 2) * pingpong_offset, + (int32_t *)target + repeat * n_seg, + remain * sizeof(int32_t)); + loadWeight((char *)nram_weight + (repeat % 2) * pingpong_weight_offset, + (T *)weight, *((int32_t *)target + repeat * n_seg), c, + has_weight, partition_nc); + } + + if (repeat > 0) { + compute((T *)(nram_input + ((repeat - 1) % 2) * pingpong_offset), + (int32_t *)(nram_target + ((repeat - 1) % 2) * pingpong_offset), + (T *)(nram_weight + + partition_nc * ((repeat - 1) % 2) * pingpong_weight_offset), + has_weight, partition_nc, deal_num, n_seg, c, c_seg, c_offset_num, + alpha, gamma, (T *)nram_compute_a, (T *)nram_compute_b, + (T *)(nram_output + ((repeat - 1) % 2) * pingpong_offset)); + } + __asm__ volatile("sync;\n\t"); + + if (repeat > 0) { + storeOutput((T *)output + (repeat - 1) * c * n_seg, + (char *)nram_output + ((repeat - 1) % 2) * pingpong_offset, + load_size, dram_stride, nram_stride, n_seg); + } + + if (remain > 0) { + int32_t rem_num = PAD_UP(remain * c_num, NFU_ALIGN_SIZE / sizeof(T)); + compute((T *)(nram_input + (repeat % 2) * pingpong_offset), + (int32_t *)(nram_target + (repeat % 2) * pingpong_offset), + (T *)(nram_weight + + partition_nc * (repeat % 2) * pingpong_weight_offset), + has_weight, partition_nc, rem_num, remain, c, c_seg, c_offset_num, + alpha, gamma, (T *)nram_compute_a, (T *)nram_compute_b, + (T *)(nram_output + (repeat % 2) * pingpong_offset)); + __asm__ volatile("sync;\n\t"); + + storeOutput((T *)output + repeat * c * n_seg, + (char *)nram_output + (repeat % 2) * pingpong_offset, + load_size, dram_stride, nram_stride, remain); + } + __asm__ volatile("sync;\n\t"); +} + +template +__mlu_func__ void focalLossSigmoidForwardBlock( + const T *input, const int32_t *target, const T *weight, const int32_t n, + const int32_t c, const float alpha, const float gamma, T *output) { + /* + * NRAM partition + * |-----------------------------------------------------------------------| + * | weight | + * |------------------------------- COMPUTE -------------------------------| + * | | | + * | computeA | computeB | + * | | | + * |------------- PING ------------------------------- PONG ---------------| + * | | | + * | input | input | + * | | | + * |-----------------------------------|-----------------------------------| + * | | | + * | output | output | + * | | | + * |-----------------------------------|-----------------------------------| + * | target | target | + * |-----------------------------------|-----------------------------------| + * + * split_pipeline_num is 6: COMPUTE(computeA,computeB), PING(input,output), + * PONG(input,output). + * split_target_num is 2: PING(target), PONG(target). + * weight is not NULL: + * The nram-size of weight is equal to c_align_size when partition input-N. + * The nram-size of weight is equal to NFU_ALIGN_SIZE when partition + * input-NC. + */ + + // calculate threshold of c + const int32_t split_pipeline_num = 6; + const int32_t split_target_num = 2; + const int32_t has_weight = weight != NULL; + const int32_t threshold_c = + PAD_DOWN((MAX_NRAM_SIZE - split_target_num * sizeof(int32_t)) / + (split_pipeline_num + has_weight), + NFU_ALIGN_SIZE) / + sizeof(T); + const int32_t c_align = PAD_UP(c, NFU_ALIGN_SIZE / sizeof(T)); + const int32_t c_align_size = c_align * sizeof(T); + + if (c <= threshold_c) { + // partition inputN + int32_t c_num = c; + int32_t reservered_align_size = + (split_target_num + split_pipeline_num) * NFU_ALIGN_SIZE; + int32_t weight_size = 0; + if (has_weight) { + c_num = c_align; + reservered_align_size = split_target_num * NFU_ALIGN_SIZE; + weight_size = c_align_size; + } + + const int32_t remain_size = + MAX_NRAM_SIZE - weight_size - reservered_align_size; + const int32_t n_seg = + remain_size / (split_pipeline_num * c_num * sizeof(T) + + split_target_num * sizeof(int32_t)); + const int32_t split_pipeline_size = + PAD_UP(c_num * n_seg * sizeof(T), NFU_ALIGN_SIZE); + const int32_t compute_size = 2 * split_pipeline_size; + const int32_t pingpong_offset = (MAX_NRAM_SIZE - weight_size - compute_size) / 2; + + char *nram_weight = (char *)nram_buffer; + char *nram_compute_a = nram_weight + has_weight * c_align_size; + char *nram_compute_b = nram_compute_a + split_pipeline_size; + char *nram_input = nram_compute_b + split_pipeline_size; + char *nram_output = nram_input + split_pipeline_size; + char *nram_target = nram_output + split_pipeline_size; + + startPipeline(input, target, weight, nram_compute_a, nram_compute_b, + nram_input, nram_target, nram_weight, nram_output, + has_weight, 0, pingpong_offset, 0, 0, n, n_seg, c, c, + alpha, gamma, output); + } else { + // partition inputNC + const int32_t weight_size = has_weight * NFU_ALIGN_SIZE; + const int32_t remain_size = MAX_NRAM_SIZE - weight_size; + const int32_t split_pipeline_size = PAD_DOWN( + (remain_size - split_target_num * NFU_ALIGN_SIZE) / split_pipeline_num, + NFU_ALIGN_SIZE); + const int32_t c_seg = split_pipeline_size / sizeof(T); + const int32_t n_seg = 1; + const int32_t compute_size = 2 * split_pipeline_size; + const int32_t pingpong_offset = (MAX_NRAM_SIZE - weight_size - compute_size) / 2; + const int32_t pingpong_weight_offset = weight_size / 2; + + char *nram_weight = (char *)nram_buffer; + char *nram_compute_a = nram_weight + weight_size; + char *nram_compute_b = nram_compute_a + split_pipeline_size; + char *nram_input = nram_compute_b + split_pipeline_size; + char *nram_output = nram_input + split_pipeline_size; + char *nram_target = nram_output + split_pipeline_size; + + const int32_t loop_num = (c + c_seg - 1) / c_seg; + const int32_t partition_nc = 1; + for (int32_t i = 0; i < loop_num; ++i) { + const int32_t c_index = i * c_seg; + const int32_t c_seg_curr = i == (loop_num - 1) ? c - c_index : c_seg; + startPipeline(input, target, weight, nram_compute_a, nram_compute_b, + nram_input, nram_target, nram_weight, nram_output, + has_weight, partition_nc, pingpong_offset, + pingpong_weight_offset, c_index, n, n_seg, c, c_seg_curr, + alpha, gamma, output); + } + } +} + +template +__mlu_global__ void MLUUnion1KernelFocalLossSigmoidForward( + const void *input, const void *target, const void *weight, const int32_t N, + const int32_t C, const float alpha, const float gamma, void *output) { + const int32_t n_seg = N / taskDim + (taskId == taskDim - 1) * (N % taskDim); + const T *input_offset = (T *)input + N / taskDim * taskId * C; + const int32_t *target_offset = (int32_t *)target + N / taskDim * taskId; + T *output_offset = (T *)output + N / taskDim * taskId * C; + + focalLossSigmoidForwardBlock((T *)input_offset, (int32_t *)target_offset, + (T *)weight, n_seg, C, alpha, gamma, + (T *)output_offset); +} +} // namespace forward + +namespace backward { +template +__mlu_func__ void loadInput(char *nram_input, char *nram_target, + const T *gdram_input, const int32_t *gdram_target, + const int32_t deal_n, const int32_t total_c, + const bool pingping_flag, const bool has_weight, + const int32_t nram_offset, + const int32_t gdram_offset) { + if (pingping_flag == PONG) { + nram_input += nram_offset; + nram_target += nram_offset; + } + + __memcpy_async(nram_target, gdram_target + gdram_offset / total_c, + deal_n * sizeof(int32_t), GDRAM2NRAM); + + char *nram_input_load = nram_input; + int32_t compute_align_size = 2 * NFU_ALIGN_SIZE; + if (has_weight) { + if (sizeof(T) == sizeof(half)) { + int32_t compute_align_num = compute_align_size / sizeof(float); + int32_t align_c = PAD_UP(total_c, compute_align_num); + int32_t compute_size = deal_n * align_c * sizeof(float); + nram_input_load += compute_size / 2; + } + int32_t align_c = PAD_UP(total_c, NFU_ALIGN_SIZE / sizeof(T)); + int32_t total_c_size = total_c * sizeof(T); + int32_t align_c_size = align_c * sizeof(T); + __memcpy_async(nram_input_load, gdram_input + gdram_offset, total_c_size, + GDRAM2NRAM, align_c_size, total_c_size, deal_n - 1); + } else { + if (sizeof(T) == sizeof(half)) { + int32_t compute_size = + PAD_UP(deal_n * total_c * sizeof(float), compute_align_size); + nram_input_load += compute_size / 2; + } + int32_t load_size = deal_n * total_c * sizeof(T); + __memcpy_async(nram_input_load, gdram_input + gdram_offset, load_size, + GDRAM2NRAM); + } +} + +template +__mlu_func__ void sigmoid(T *dst_data, const T *src_data, + const int32_t elem_count) { + __bang_mul_const(dst_data, (T *)src_data, T(-1), elem_count); + __bang_active_exphp(dst_data, dst_data, elem_count); + __bang_add_const(dst_data, dst_data, T(1), elem_count); + __bang_active_reciphp(dst_data, dst_data, elem_count); +} + +template +__mlu_func__ void coreCompute(char *nram_input, const T *nram_weight, + const float *nram_flt_min, char *nram_pt, + char *nram_alpha_t, char *nram_temp, + char *nram_target, const float *nram_gamma, + char *nram_output, const float alpha, + const int32_t compute_num, const int32_t deal_n, + const int32_t total_c, const bool pingpong_flag, + const int32_t nram_offset, + const bool has_weight) { + if (pingpong_flag == PONG) { + nram_input += nram_offset; + nram_pt += nram_offset; + nram_alpha_t += nram_offset; + nram_temp += nram_offset; + nram_output += nram_offset; + nram_target += nram_offset; + } + + if (sizeof(T) == sizeof(half)) { + const int32_t compute_size = compute_num * sizeof(float); + char *nram_input_load = nram_input + compute_size / 2; + __bang_half2float((float *)nram_input, (half *)nram_input_load, + compute_num); + } + + // 0. alpha_t = alpha - 1 + __nramset((float *)nram_alpha_t, compute_num, (float)(alpha - 1.0)); + + // 1. pt = 1 - sigmoid(x) + sigmoid((float *)nram_pt, (float *)nram_input, compute_num); + __bang_mul_const((float *)nram_pt, (float *)nram_pt, (float)(-1), + compute_num); + __bang_add_const((float *)nram_pt, (float *)nram_pt, (float)1, compute_num); + + // 2. pt = target[n] == c ? sigmoid(x) : 1 - sigmoid(x) + // alpha_t = target[n] == c ? alpha : alpha - 1 + const int32_t nfu_align_num = NFU_ALIGN_SIZE / sizeof(float); + for (int n = 0; n < deal_n; n++) { + const int32_t target_value = ((int32_t *)nram_target)[n]; + if (target_value >= total_c || target_value < 0) continue; + int32_t c_offset = 0; + if (has_weight) { + int32_t c_align_num = nfu_align_num; + if (sizeof(T) == sizeof(half)) { + c_align_num += nfu_align_num; + } + c_offset = PAD_UP(total_c, c_align_num); + } else { + c_offset = total_c; + } + int32_t idx = n * c_offset + target_value; + *((float *)nram_pt + idx) = 1.0 - *((float *)nram_pt + idx); + *((float *)nram_alpha_t + idx) = alpha; + } + + // 3. temp = -alpha_t * e^(gamma * log(max(1 - pt, FLT_MIN)) + __bang_mul_const((float *)nram_temp, (float *)nram_pt, (float)(-1), + compute_num); + __bang_add_const((float *)nram_temp, (float *)nram_temp, (float)(1), + compute_num); + __bang_cycle_maxequal((float *)nram_temp, (float *)nram_temp, + (float *)nram_flt_min, compute_num, nfu_align_num); + __bang_active_loghp((float *)nram_temp, (float *)nram_temp, compute_num); + __bang_cycle_mul((float *)nram_temp, (float *)nram_temp, (float *)nram_gamma, + compute_num, nfu_align_num); + __bang_active_exphp((float *)nram_temp, (float *)nram_temp, compute_num); + __bang_mul((float *)nram_temp, (float *)nram_temp, (float *)nram_alpha_t, + compute_num); + __bang_mul_const((float *)nram_temp, (float *)nram_temp, (float)(-1), + compute_num); + + // 4. output = 1 - pt - gamma * pt * log(max(pt, FLT_MIN)) + __bang_cycle_maxequal((float *)nram_output, (float *)nram_pt, + (float *)nram_flt_min, compute_num, nfu_align_num); + __bang_active_loghp((float *)nram_output, (float *)nram_output, compute_num); + __bang_mul((float *)nram_output, (float *)nram_output, (float *)nram_pt, + compute_num); + __bang_cycle_mul((float *)nram_output, (float *)nram_output, + (float *)nram_gamma, compute_num, nfu_align_num); + __bang_add((float *)nram_output, (float *)nram_output, (float *)nram_pt, + compute_num); + __bang_mul_const((float *)nram_output, (float *)nram_output, (float)(-1), + compute_num); + __bang_add_const((float *)nram_output, (float *)nram_output, (float)(1), + compute_num); + + // 5. output = output * temp + __bang_mul((float *)nram_output, (float *)nram_output, (float *)nram_temp, + compute_num); + + if (sizeof(T) == sizeof(half)) { + __bang_float2half_rd((half *)nram_output, (float *)nram_output, + compute_num); + } + + if (has_weight) { + // with weight + for (int n = 0; n < deal_n; n++) { + int32_t c_align_num = nfu_align_num; + if (sizeof(T) == sizeof(half)) { + c_align_num += nfu_align_num; + } + int32_t align_c = PAD_UP(total_c, c_align_num); + int32_t target_value = ((int32_t *)nram_target)[n]; + T weight_value = nram_weight[target_value]; + __bang_mul_const((T *)nram_output + n * align_c, + (T *)nram_output + n * align_c, weight_value, align_c); + } + } +} + +template +__mlu_func__ void storeOutput(T *gdram_output, const char *nram_output, + const int32_t deal_n, const int32_t total_c, + const bool pingpong_flag, const bool has_weight, + const int32_t nram_offset, + const int32_t gdram_offset) { + if (pingpong_flag == PONG) { + nram_output += nram_offset; + } + const int32_t store_size = deal_n * total_c * sizeof(T); + if (has_weight) { + int32_t align_c = PAD_UP(total_c, NFU_ALIGN_SIZE / sizeof(T)); + int32_t total_c_size = total_c * sizeof(T); + int32_t align_c_size = align_c * sizeof(T); + __memcpy_async(gdram_output + gdram_offset, nram_output, total_c_size, + NRAM2GDRAM, total_c_size, align_c_size, deal_n - 1); + } else { + __memcpy_async(gdram_output + gdram_offset, nram_output, store_size, + NRAM2GDRAM); + } +} + +template +__mlu_func__ void focalLossSigmoidBackwardBlock( + const T *input, const int32_t *target, const T *weight, const float gamma, + const float alpha, const int32_t total_n, const int32_t deal_n, + const int32_t total_c, T *output) { + // params per time slice + int32_t deal_num = deal_n * total_c; + int32_t deal_size = deal_num * sizeof(float); + int32_t compute_num = 0; + int32_t compute_size = 0; + int32_t compute_align_size = NFU_ALIGN_SIZE; + const int32_t nfu_align_num = NFU_ALIGN_SIZE / sizeof(T); + if (sizeof(T) == sizeof(half)) { + compute_align_size += NFU_ALIGN_SIZE; + } + const int32_t compute_align_num = compute_align_size / sizeof(float); + bool has_weight = false; + if (weight != NULL) { + has_weight = true; + int32_t align_c = PAD_UP(total_c, compute_align_num); + compute_num = deal_n * align_c; + compute_size = compute_num * sizeof(float); + } else { + compute_size = PAD_UP(deal_size, compute_align_size); + compute_num = compute_size / sizeof(float); + } + + // params per core + int32_t total_num = total_n * total_c; + int32_t num_per_core = PAD_DOWN(total_num / taskDim, deal_num); + int32_t loop_per_core = num_per_core / deal_num; + + /* NRAM partition: + * + * |-----------------ping pong--------------------| + * |input | pt | alpha_t | temp | output | target | flt_min | gamma | weight| + * + * split_pipeline_num is 5: input, pt, alpha_t, temp, output. + * nram_reserved_line_num is 2: flt_min, gamma. + */ + const int32_t split_pipeline_num = 5; + const int32_t nram_reserved_line_num = 2; + int32_t target_deal_size = deal_n * sizeof(int32_t); + int32_t target_deal_size_align = PAD_UP(target_deal_size, NFU_ALIGN_SIZE); + // nram PING/PONG offset + int32_t ping_pong_offset = + compute_size * split_pipeline_num + target_deal_size_align; + + // gdram addr + int32_t *base_addr_target = + (int32_t *)target + taskId * loop_per_core * deal_n; + T *base_addr_input = (T *)input + taskId * num_per_core; + T *base_addr_output = output + taskId * num_per_core; + + // nram addr + char *nram_input = (char *)nram_buffer; + char *nram_pt = nram_input + compute_size; + char *nram_alpha_t = nram_pt + compute_size; + char *nram_temp = nram_alpha_t + compute_size; + char *nram_output = nram_temp + compute_size; + char *nram_target = nram_output + compute_size; + float *nram_flt_min = NULL; + float *nram_gamma = NULL; + T *nram_weight = NULL; + + if (!has_weight) { + nram_flt_min = (float *)(nram_buffer + MAX_NRAM_SIZE - + nram_reserved_line_num * NFU_ALIGN_SIZE); + nram_gamma = nram_flt_min + nfu_align_num; + } else { + int32_t weight_space = PAD_UP(total_c * sizeof(T), NFU_ALIGN_SIZE); + nram_flt_min = + (float *)(nram_buffer + MAX_NRAM_SIZE - + nram_reserved_line_num * NFU_ALIGN_SIZE - weight_space); + nram_gamma = nram_flt_min + nfu_align_num; + nram_weight = (T *)(nram_gamma + nfu_align_num); + __memcpy_async(nram_weight, weight, total_c * sizeof(T), GDRAM2NRAM); + } + + // nram set gamma and FLT_MIN + __nramset(nram_gamma, nfu_align_num, gamma); + __nramset(nram_flt_min, nfu_align_num, FLT_MIN); + + /* + * Pipeline: The pipeline is processed in three stages: Load, Compute, Store. + * The allocated memory space of NRAM is divided into two parts: + * PING and Pong. In a single time slice, PING is used to process + * IO stream and PONG is used for computation. Both of them are + * processed synchronously until finished. + * + * diagram of PINGPONG: + * |------|-----------------------------------------------------------------| + * | | space | + * |------|-----------------------------------------------------------------| + * | time | Ping | Pong | Ping | Pong | Ping | Pong | + * |------|-----------------------------------------------------------------| + * | 0 | L0 | | | | | | + * | 1 | C0 | L1 | | | | | + * | 2 | S0 | C1 | L2 | | | | + * | 3 | | S1 | C2 | L3 | | | + * | 4 | | | S2 | C3 | L4 | | + * | 5 | | | | S3 | C4 | L5 | + * | 6 | | | | | S4 | C5 | + * | 7 | | | | | | S5 | + * |------|-----------------------------------------------------------------| + */ + + // diagram of PINGPONG: L0 + if (loop_per_core > 0) { + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + deal_n, total_c, PING, has_weight, ping_pong_offset, 0); + __asm__ volatile("sync;"); + } + + // diagram of PINGPONG: C0 and L1 + if (loop_per_core > 1) { + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PING, ping_pong_offset, + has_weight); + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + deal_n, total_c, PONG, has_weight, ping_pong_offset, deal_num); + __asm__ volatile("sync;"); + } + + for (int i = 0; i < loop_per_core - 2; ++i) { + if (i % 2 == PING) { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PING, + has_weight, ping_pong_offset, i * deal_num); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PONG, ping_pong_offset, + has_weight); + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + deal_n, total_c, PING, has_weight, ping_pong_offset, + (i + 2) * deal_num); + } else { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PONG, + has_weight, ping_pong_offset, i * deal_num); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PING, ping_pong_offset, + has_weight); + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + deal_n, total_c, PONG, has_weight, ping_pong_offset, + (i + 2) * deal_num); + } + __asm__ volatile("sync;"); + } + + if (loop_per_core > 1) { + if ((loop_per_core - 2) % 2 == PING) { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PING, + has_weight, ping_pong_offset, (loop_per_core - 2) * deal_num); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PONG, ping_pong_offset, + has_weight); + } else { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PONG, + has_weight, ping_pong_offset, (loop_per_core - 2) * deal_num); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PING, ping_pong_offset, + has_weight); + } + __asm__ volatile("sync;"); + } + + if (loop_per_core > 0) { + if (loop_per_core == 1) { + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + compute_num, deal_n, total_c, PING, ping_pong_offset, + has_weight); + __asm__ volatile("sync;"); + } + if ((loop_per_core - 1) % 2 == PING) { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PING, + has_weight, ping_pong_offset, (loop_per_core - 1) * deal_num); + } else { + storeOutput(base_addr_output, nram_output, deal_n, total_c, PONG, + has_weight, ping_pong_offset, (loop_per_core - 1) * deal_num); + } + } + + // process the remaining data which N remainder per core is less than deal_n + int32_t rem_for_all = total_num - num_per_core * taskDim; + if (rem_for_all == 0) return; + int32_t rem_n_for_all = rem_for_all / total_c; + int32_t rem_n_per_core = (rem_n_for_all + taskDim - 1) / taskDim; + int32_t rem_num_per_core = rem_n_per_core * total_c; + int32_t rem_num_per_core_align = 0; + int32_t rem_core_num = rem_for_all / rem_num_per_core; + + int32_t rem_n_for_last = rem_n_for_all % rem_n_per_core; + int32_t rem_num_for_last = rem_n_for_last * total_c; + int32_t rem_num_for_last_align = 0; + + if (has_weight) { + int32_t align_c = PAD_UP(total_c, compute_align_num); + rem_num_per_core_align = rem_n_per_core * align_c; + rem_num_for_last_align = rem_n_for_last * align_c; + } else { + rem_num_per_core_align = PAD_UP(rem_num_per_core, compute_align_num); + rem_num_for_last_align = PAD_UP(rem_num_for_last, compute_align_num); + } + + int32_t rem_addr_base = num_per_core * taskDim; + int32_t rem_target_addr_base = loop_per_core * deal_n * taskDim; + base_addr_target = (int32_t *)target + rem_target_addr_base; + base_addr_input = (T *)input + rem_addr_base; + base_addr_output = output + rem_addr_base; + + if (taskId < rem_core_num) { + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + rem_n_per_core, total_c, PING, has_weight, ping_pong_offset, + taskId * rem_num_per_core); + __asm__ volatile("sync;"); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + rem_num_per_core_align, rem_n_per_core, total_c, PING, + ping_pong_offset, has_weight); + __asm__ volatile("sync;"); + storeOutput(base_addr_output, nram_output, rem_n_per_core, total_c, PING, + has_weight, ping_pong_offset, taskId * rem_num_per_core); + } else if (taskId == rem_core_num) { + if (rem_num_for_last == 0) return; + loadInput(nram_input, nram_target, base_addr_input, base_addr_target, + rem_n_for_last, total_c, PING, has_weight, ping_pong_offset, + taskId * rem_num_per_core); + __asm__ volatile("sync;"); + coreCompute(nram_input, nram_weight, nram_flt_min, nram_pt, nram_alpha_t, + nram_temp, nram_target, nram_gamma, nram_output, alpha, + rem_num_for_last_align, rem_n_for_last, total_c, PING, + ping_pong_offset, has_weight); + __asm__ volatile("sync;"); + storeOutput(base_addr_output, nram_output, rem_n_for_last, total_c, PING, + has_weight, ping_pong_offset, taskId * rem_num_per_core); + } else { + return; + } +} + +template +__mlu_global__ void MLUUnion1KernelFocalLossSigmoidBackward( + const void *input, const void *target, const void *weight, + const float gamma, const float alpha, const int32_t total_n, + const int32_t deal_n, const int32_t total_c, void *output) { + focalLossSigmoidBackwardBlock((T *)input, (int32_t *)target, (T *)weight, + gamma, alpha, total_n, deal_n, total_c, + (T *)output); +} +} // namespace backward + +void KernelFocalLossSigmoidForward(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, + const cnrtDataType_t d_type, + const void *input, const void *target, + const void *weight, const int32_t N, + const int32_t C, const float alpha, + const float gamma, void *output) { + if (d_type == CNRT_FLOAT16) { + forward::MLUUnion1KernelFocalLossSigmoidForward< + half><<>>(input, target, weight, N, C, alpha, + gamma, output); + } else { + forward::MLUUnion1KernelFocalLossSigmoidForward< + float><<>>(input, target, weight, N, C, alpha, + gamma, output); + } +} + +void KernelFocalLossSigmoidBackward(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, + const cnrtDataType_t d_type, + const void *input, const void *target, + const void *weight, const float gamma, + const float alpha, const int32_t dim_n, + const int32_t deal_n, const int32_t dim_c, + void *output) { + if (d_type == CNRT_FLOAT16) { + backward::MLUUnion1KernelFocalLossSigmoidBackward< + half><<>>(input, target, weight, gamma, alpha, + dim_n, deal_n, dim_c, output); + } else { + backward::MLUUnion1KernelFocalLossSigmoidBackward< + float><<>>(input, target, weight, gamma, alpha, + dim_n, deal_n, dim_c, output); + } +} diff --git a/mmcv/ops/csrc/common/mlu/nms_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/nms_mlu_kernel.mlu new file mode 100644 index 0000000..7cb16bb --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/nms_mlu_kernel.mlu @@ -0,0 +1,1161 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" + +#define NMS_SIZE (64) +#define COORD_DIM (4) +#define MEMORY_CORE (0x80) +#define INFO_NUM (5) // 5 means x1, x2, y1, y2 and score +#define REDUCE_NUM \ + (7) // score, x1, y1, x2, y2, max_index (reserve 2 num for half-type input) + +#define SIZE_NRAM_BUF (MAX_NRAM_SIZE + REM_FOR_STACK - 62 * 1024) +#define SIZE_SRAM_BUF (MAX_SRAM_SIZE) + +__nram__ int8_t nram_buffer[SIZE_NRAM_BUF]; +__mlu_shared__ int8_t sram_buffer[SIZE_SRAM_BUF]; + +__mlu_func__ void pvLock() { +#if __BANG_ARCH__ == 270 + if (coreId != MEMORY_CORE) { + __bang_lock(0, 0); + } +#endif +} + +__mlu_func__ void pvUnlock() { +#if __BANG_ARCH__ == 270 + if (coreId != MEMORY_CORE) { + __bang_unlock(0, 0); + } +#endif +} + +enum Addr { SRAM, GDRAM }; + +template +__mlu_func__ void nms_detection( + uint32_t *output_box_num, const int output_mode, const int input_layout, + OUT_DT *output_data, const Addr dst, IN_DT *input_data_score, + const IN_DT *input_data_box, const Addr src, IN_DT *buffer, + const int buffer_size, IN_DT *sram, const int core_limit, + const int input_box_num, const int input_stride, const int output_stride, + const int keepNum, const float thresh_iou, const float thresh_score, + const float offset, const int algo) { + // global value, it is stored in sram with a offset from the begin. + const int flag_offset_size = 28; + int32_t *loop_end_flag = (int32_t *)(sram + flag_offset_size); + loop_end_flag[0] = 0; + // score, x1, y1, x2, y2, inter_x1, inter_y1, inter_x2, inter_y2 + const int nms_buffer_count1 = 9; + // temp nram buffer to store selected target. + const int nram_save_limit_count = 256; + float div_thresh_iou = 1.0 / thresh_iou; + + // input data ptr + IN_DT *input_score_ptr; + const IN_DT *input_x1_ptr; + const IN_DT *input_y1_ptr; + const IN_DT *input_x2_ptr; + const IN_DT *input_y2_ptr; + input_score_ptr = input_data_score; + input_x1_ptr = input_data_box; + if (input_layout == 0) { + // [boxes_num, 4] + input_y1_ptr = input_x1_ptr + 1; + input_x2_ptr = input_x1_ptr + 2; + input_y2_ptr = input_x1_ptr + 3; + } else if (input_layout == 1) { + // [4, boxes_num] + input_y1_ptr = input_x1_ptr + input_stride; + input_x2_ptr = input_y1_ptr + input_stride; + input_y2_ptr = input_x2_ptr + input_stride; + } + + // nram data ptr + IN_DT *x1; + IN_DT *y1; + IN_DT *x2; + IN_DT *y2; + IN_DT *score; + IN_DT *inter_x1; + IN_DT *inter_y1; + IN_DT *inter_x2; + IN_DT *inter_y2; + IN_DT *max_box; // the max score, x1, y1, x2, y2 + IN_DT *x1_mask; + IN_DT *y1_mask; + IN_DT *x2_mask; + IN_DT *y2_mask; + OUT_DT *nram_save; + + int limit = 0; // find limit when GDRAM or SRAM + int len_core = 0; // the length deal by every core + int max_seg_pad = 0; // the max length every repeat + int repeat = 0; + int remain = 0; + int remain_pad = 0; + int input_offset = 0; // offset of input_data for current core + int nram_save_count = 0; + // mask for collect x1, y1, x2, y2. each mask has 128 elements + const int mask_size = 128; + const int total_mask_size = 512; + + if (output_mode == 0) { + limit = (buffer_size - 128 /*for max_box*/ * sizeof(IN_DT) - + nram_save_limit_count * sizeof(OUT_DT) - + total_mask_size * sizeof(IN_DT)) / + (nms_buffer_count1 * sizeof(IN_DT)); + } else { + limit = (buffer_size - 128 /*for max_box*/ * sizeof(IN_DT) - + nram_save_limit_count * INFO_NUM * sizeof(OUT_DT) - + total_mask_size * sizeof(IN_DT)) / + (nms_buffer_count1 * sizeof(IN_DT)); + } + + if (core_limit == 1) { + len_core = input_box_num; + input_offset = 0; + } else { + int avg_core = input_box_num / core_limit; + int rem = input_box_num % core_limit; + len_core = avg_core + (taskId < rem ? 1 : 0); + input_offset = avg_core * taskId + (taskId <= rem ? taskId : rem); + } + max_seg_pad = PAD_DOWN(limit, NMS_SIZE); + repeat = len_core / max_seg_pad; + remain = len_core % max_seg_pad; + remain_pad = PAD_UP(remain, NMS_SIZE); + + // if datatype is half, we should convert it to float when compute the IoU + int max_seg_iou_compute = + PAD_DOWN(max_seg_pad / (sizeof(float) / sizeof(IN_DT)), NMS_SIZE); + int repeat_iou_compute = len_core / max_seg_iou_compute; + int remain_iou_compute = len_core % max_seg_iou_compute; + int remain_pad_iou_compute = PAD_UP(remain_iou_compute, NMS_SIZE); + // initial the address point + score = buffer; + x1 = score + max_seg_pad; + y1 = x1 + max_seg_pad; + x2 = y1 + max_seg_pad; + y2 = x2 + max_seg_pad; + inter_x1 = y2 + max_seg_pad; + inter_y1 = inter_x1 + max_seg_pad; + inter_x2 = inter_y1 + max_seg_pad; + inter_y2 = inter_x2 + max_seg_pad; + x1_mask = inter_y2 + max_seg_pad; + y1_mask = x1_mask + mask_size; + x2_mask = y1_mask + mask_size; + y2_mask = x2_mask + mask_size; + max_box = y2_mask + mask_size; // the max score, x1, y1, x2, y2 + // offset two line from max_box + nram_save = (OUT_DT *)((char *)max_box + NFU_ALIGN_SIZE); + + // set mask for __bang_collect instruction + if (input_layout == 0) { + __nramset((IN_DT *)x1_mask, total_mask_size, (IN_DT)0); + for (int idx = 0; idx < mask_size; idx++) { + int index = (idx % COORD_DIM) * mask_size + idx; + x1_mask[index] = (IN_DT)1.0; + } + } + + for (int keep = 0; keep < keepNum; keep++) { // loop until the max_score <= 0 + if (core_limit != 1) { + __sync_cluster(); // sync before current loop + } + + /******find max start******/ + int max_index = 0; // the max score index + int global_max_index = 0; // for U1 + float max_area = 0; // the max score area + max_box[0] = 0; // init 0 + + for (int i = 0; i <= repeat; i++) { + if (i == repeat && remain == 0) { + break; + } + int seg_len = 0; // the length every nms compute + int cpy_len = 0; // the length every nms memcpy + i == repeat ? seg_len = remain_pad : seg_len = max_seg_pad; + // check seg_len exceeds the limit of fp16 or not. 65536 is the largest + // num that half data type could express. + if (sizeof(IN_DT) == sizeof(half) && seg_len > 65536) { + // seg length exceeds the max num for fp16 datatype! + return; + } + i == repeat ? cpy_len = remain : cpy_len = max_seg_pad; + /******nms load start******/ + mluMemcpyDirection_t load_dir = SRAM2NRAM; + if (src == SRAM) { + load_dir = SRAM2NRAM; + } else { + load_dir = GDRAM2NRAM; + } + __nramset(score, seg_len, (IN_DT)0); + __memcpy(score, input_score_ptr + input_offset + i * max_seg_pad, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + + /******nms load end******/ + + __bang_max(inter_x1, score, seg_len); + if (inter_x1[0] > max_box[0]) { + max_box[0] = inter_x1[0]; + + if (sizeof(IN_DT) == sizeof(half)) { + max_index = ((uint16_t *)inter_x1)[1] + input_offset + + i * max_seg_pad; // offset start from head of input_data + } else if (sizeof(IN_DT) == sizeof(float)) { + max_index = ((uint32_t *)inter_x1)[1] + input_offset + + i * max_seg_pad; // offset start from head of input_data + } + } + } // for repeat + + int stride = 1; + if (input_layout == 0) { + stride = input_stride; + } else if (input_layout == 1) { + stride = 1; + } + + if (core_limit == 1) { + max_box[1] = input_x1_ptr[max_index * stride]; + max_box[2] = input_y1_ptr[max_index * stride]; + max_box[3] = input_x2_ptr[max_index * stride]; + max_box[4] = input_y2_ptr[max_index * stride]; + if (algo == 0 || offset == 0.0) { + max_area = ((float)max_box[3] - (float)max_box[1]) * + ((float)max_box[4] - (float)max_box[2]); + } else { + max_area = ((float)max_box[3] - (float)max_box[1] + offset) * + ((float)max_box[4] - (float)max_box[2] + offset); + } + input_score_ptr[max_index] = 0; + global_max_index = max_index; + ((uint32_t *)(max_box + INFO_NUM))[0] = max_index; + } else if (core_limit == 4) { + // find the max with sram + // the max box's x1, y1, x2, y2 on every core + if (coreId != MEMORY_CORE) { + max_box[1] = input_x1_ptr[max_index * stride]; + max_box[2] = input_y1_ptr[max_index * stride]; + max_box[3] = input_x2_ptr[max_index * stride]; + max_box[4] = input_y2_ptr[max_index * stride]; + } + ((uint32_t *)(max_box + INFO_NUM))[0] = max_index; + // copy every core's box info to sram, form: score---x1---y1---x2---y2--- + for (int i = 0; i < INFO_NUM; i++) { + __memcpy(sram + i * core_limit + taskId, max_box + i, 1 * sizeof(IN_DT), + NRAM2SRAM); + } + // copy every core's max_index to sram, use 2 half to store max_index + __memcpy(sram + INFO_NUM * core_limit + taskId * 2, max_box + INFO_NUM, + sizeof(uint32_t), + NRAM2SRAM); // int32_t datatype + __sync_cluster(); + + // copy score from sram to nram and find the max + __nramset(inter_x1, NMS_SIZE, (IN_DT)0); + __memcpy(inter_x1, sram, core_limit * sizeof(IN_DT), SRAM2NRAM); + __bang_max(max_box, inter_x1, NMS_SIZE); + int max_core = 0; + if (sizeof(IN_DT) == sizeof(half)) { + max_core = ((uint16_t *)max_box)[1]; + } else if (sizeof(IN_DT) == sizeof(float)) { + max_core = ((uint32_t *)max_box)[1]; + } + + // copy the max box from SRAM to NRAM + __memcpy(max_box + 1, sram + 1 * core_limit + max_core, 1 * sizeof(IN_DT), + SRAM2NRAM); // x1 + __memcpy(max_box + 2, sram + 2 * core_limit + max_core, 1 * sizeof(IN_DT), + SRAM2NRAM); // y1 + __memcpy(max_box + 3, sram + 3 * core_limit + max_core, 1 * sizeof(IN_DT), + SRAM2NRAM); // x2 + __memcpy(max_box + 4, sram + 4 * core_limit + max_core, 1 * sizeof(IN_DT), + SRAM2NRAM); // y2 + __memcpy(max_box + 5, sram + 5 * core_limit + 2 * max_core, + sizeof(uint32_t), SRAM2NRAM); + if (algo == 0 || offset == 0.0) { + max_area = ((float)max_box[3] - (float)max_box[1]) * + ((float)max_box[4] - (float)max_box[2]); + } else { + max_area = ((float)max_box[3] - (float)max_box[1] + offset) * + ((float)max_box[4] - (float)max_box[2] + offset); + } + global_max_index = ((uint32_t *)(max_box + INFO_NUM))[0]; + input_score_ptr[global_max_index] = 0; + } + // by now, we get: max_score|max_index|max_box|max_area + /******find max end******/ + + /******nms store start******/ + // store to nram + if (float(max_box[0]) > thresh_score) { + OUT_DT *save_ptr; + int save_offset = 0; + int save_str_num = 0; + save_ptr = nram_save; + save_offset = nram_save_count; + save_str_num = nram_save_limit_count; + if (coreId == 0) { + if (output_mode == 0) { // index1, index2, ... + __memcpy(save_ptr + save_offset, (uint32_t *)(max_box + INFO_NUM), + 1 * sizeof(uint32_t), NRAM2NRAM, 1 * sizeof(uint32_t), + 1 * sizeof(uint32_t), 0); + } else if (output_mode == 1) { // score, x1, y1, x2, y2 + __memcpy(save_ptr + save_offset * INFO_NUM, max_box, + INFO_NUM * sizeof(IN_DT), NRAM2NRAM, + INFO_NUM * sizeof(IN_DT), INFO_NUM * sizeof(IN_DT), 0); + } else if (output_mode == 2) { // score---, x1---, y1---, x2---, y2--- + __memcpy(save_ptr + save_offset, max_box, 1 * sizeof(IN_DT), + NRAM2NRAM, save_str_num * sizeof(IN_DT), 1 * sizeof(IN_DT), + 4); + } + } + nram_save_count++; + (*output_box_num)++; + } + + // store to sram/gdram + if (*output_box_num != 0) { + mluMemcpyDirection_t store_dir = NRAM2GDRAM; + if (dst == SRAM) { + store_dir = NRAM2SRAM; + } else { // dst == GDRAM + store_dir = NRAM2GDRAM; + } + if ((nram_save_count == nram_save_limit_count) || + (float(max_box[0]) <= thresh_score) || keep == keepNum - 1) { + if (nram_save_count != 0) { + if (coreId == 0) { + if (output_mode == 0) { // index1, index2, ... + pvLock(); + __memcpy(output_data, nram_save, + nram_save_count * sizeof(uint32_t), store_dir); + pvUnlock(); + output_data += nram_save_count; + } else if (output_mode == 1) { // score, x1, y1, x2, y2 + pvLock(); + __memcpy(output_data, nram_save, + nram_save_count * INFO_NUM * sizeof(IN_DT), store_dir); + pvUnlock(); + output_data += nram_save_count * INFO_NUM; + } else if (output_mode == + 2) { // score---, x1---, y1---, x2---, y2--- + pvLock(); + __memcpy(output_data, nram_save, nram_save_count * sizeof(IN_DT), + store_dir, output_stride * sizeof(IN_DT), + nram_save_limit_count * sizeof(IN_DT), 4); + pvUnlock(); + output_data += nram_save_count; + } + nram_save_count = 0; + } + } + } // if move data nram->sram/gdram + } // if dst + + // if the max score <= 0, end + if (core_limit == 1) { + if (float(max_box[0]) <= thresh_score) { + break; + } + } else { + if (float(max_box[0]) <= thresh_score) { + if (coreId == 0) { + loop_end_flag[0] = 1; + } + } + __sync_cluster(); + if (loop_end_flag[0] == 1) { + break; + } + } + /******nms store end******/ + + // To solve half data accuracy, we convert half to float to calculate IoU. + for (int i = 0; i <= repeat_iou_compute; i++) { + if (i == repeat_iou_compute && remain_iou_compute == 0) { + break; + } + int seg_len = 0; // the length every nms compute + int cpy_len = 0; // the length every nms memcpy + i == repeat_iou_compute ? seg_len = remain_pad_iou_compute + : seg_len = max_seg_iou_compute; + i == repeat_iou_compute ? cpy_len = remain_iou_compute + : cpy_len = max_seg_iou_compute; + + /******nms load start******/ + mluMemcpyDirection_t load_dir = SRAM2NRAM; + if (src == SRAM) { + load_dir = SRAM2NRAM; + } else { + load_dir = GDRAM2NRAM; + } + + __nramset((float *)score, seg_len, 0.0f); + int dt_offset = 0; + if (sizeof(IN_DT) == sizeof(float)) { + __memcpy(score, input_score_ptr + input_offset + i * max_seg_pad, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + dt_offset = 0; + } else if (sizeof(IN_DT) == sizeof(half)) { + __nramset(x1, seg_len, half(0)); + __memcpy(x1, input_score_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + __bang_half2float((float *)score, (half *)x1, seg_len); + dt_offset = max_seg_iou_compute; + } + + if (input_layout == 0) { + // the following number 4 means x1, y1, x2, y2 + __memcpy( + inter_x1, + input_x1_ptr + (input_offset + i * max_seg_iou_compute) * COORD_DIM, + cpy_len * COORD_DIM * sizeof(IN_DT), load_dir, + cpy_len * COORD_DIM * sizeof(IN_DT), + cpy_len * COORD_DIM * sizeof(IN_DT), 0); + // here use collect instruction to transpose the [n, 4] shape into [4, + // n] shape to avoid + // discrete memory accessing. + for (int c_i = 0; c_i < COORD_DIM * seg_len / mask_size; c_i++) { + // the following number 32 means 32 elements will be selected out by + // once operation + __bang_collect(x1 + dt_offset + c_i * 32, inter_x1 + c_i * mask_size, + x1_mask, mask_size); + __bang_collect(y1 + dt_offset + c_i * 32, inter_x1 + c_i * mask_size, + y1_mask, mask_size); + __bang_collect(x2 + dt_offset + c_i * 32, inter_x1 + c_i * mask_size, + x2_mask, mask_size); + __bang_collect(y2 + dt_offset + c_i * 32, inter_x1 + c_i * mask_size, + y2_mask, mask_size); + } + } else if (input_layout == 1) { + __memcpy(x1 + dt_offset, + input_x1_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + __memcpy(y1 + dt_offset, + input_y1_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + __memcpy(x2 + dt_offset, + input_x2_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + __memcpy(y2 + dt_offset, + input_y2_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), load_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + } + /******nms load end******/ + + /******nms compute start******/ + if (sizeof(IN_DT) == sizeof(half)) { + __bang_half2float((float *)x1, (half *)x1 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)y1, (half *)y1 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)x2, (half *)x2 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)y2, (half *)y2 + max_seg_iou_compute, + seg_len); + } + // 1、 compute IOU + // get the area_I + __nramset((float *)inter_y1, seg_len, float(max_box[1])); // max_x1 + __bang_maxequal((float *)inter_x1, (float *)x1, (float *)inter_y1, + seg_len); // inter_x1 + __nramset((float *)inter_y2, seg_len, float(max_box[3])); // max_x2 + __bang_minequal((float *)inter_x2, (float *)x2, (float *)inter_y2, + seg_len); // inter_x2 + __bang_sub((float *)inter_x1, (float *)inter_x2, (float *)inter_x1, + seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_x1, (float *)inter_x1, offset, seg_len); + } + __bang_active_relu((float *)inter_x1, (float *)inter_x1, + seg_len); // inter_w + __nramset((float *)inter_x2, seg_len, float(max_box[2])); // max_y1 + __bang_maxequal((float *)inter_y1, (float *)y1, (float *)inter_x2, + seg_len); // inter_y1 + __nramset((float *)inter_x2, seg_len, float(max_box[4])); // max_y2 + __bang_minequal((float *)inter_y2, (float *)y2, (float *)inter_x2, + seg_len); // inter_y2 + __bang_sub((float *)inter_y1, (float *)inter_y2, (float *)inter_y1, + seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_y1, (float *)inter_y1, offset, seg_len); + } + __bang_active_relu((float *)inter_y1, (float *)inter_y1, + seg_len); // inter_h + __bang_mul((float *)inter_x1, (float *)inter_x1, (float *)inter_y1, + seg_len); // area_I + // get the area of input_box: area = (x2 - x1) * (y2 - y1); + __bang_sub((float *)inter_y1, (float *)x2, (float *)x1, seg_len); + __bang_sub((float *)inter_y2, (float *)y2, (float *)y1, seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_y1, (float *)inter_y1, offset, seg_len); + __bang_add_const((float *)inter_y2, (float *)inter_y2, offset, seg_len); + } + __bang_mul((float *)inter_x2, (float *)inter_y1, (float *)inter_y2, + seg_len); // area + // get the area_U: area + max_area - area_I + __bang_add_const((float *)inter_x2, (float *)inter_x2, float(max_area), + seg_len); + __bang_sub((float *)inter_x2, (float *)inter_x2, (float *)inter_x1, + seg_len); // area_U + // 2、 select the box + // if IOU greater than thres, set the score to zero, abort it: area_U > + // area_I * (1 / thresh)? + if (thresh_iou > 0.0) { + __bang_mul_const((float *)inter_x1, (float *)inter_x1, div_thresh_iou, + seg_len); + } else { + __bang_mul_const((float *)inter_x2, (float *)inter_x2, thresh_iou, + seg_len); + } + __bang_ge((float *)inter_x1, (float *)inter_x2, (float *)inter_x1, + seg_len); + __bang_mul((float *)score, (float *)score, (float *)inter_x1, seg_len); + /******nms compute end******/ + + // update the score + mluMemcpyDirection_t update_dir = NRAM2SRAM; + if (dst == SRAM) { + update_dir = NRAM2SRAM; + } else { + update_dir = NRAM2GDRAM; + } + if (sizeof(IN_DT) == sizeof(half)) { + __bang_float2half_rd((half *)score, (float *)score, seg_len); + } + pvLock(); + __memcpy(input_score_ptr + input_offset + i * max_seg_iou_compute, score, + cpy_len * sizeof(IN_DT), update_dir, cpy_len * sizeof(IN_DT), + cpy_len * sizeof(IN_DT), 0); + pvUnlock(); + } // for repeat + } // for keepNum +} + +__mlu_global__ void MLUUnion1KernelNMS( + const void *input_boxes, const void *input_confidence, + const int input_num_boxes, const int input_stride, + const int max_output_size, const float iou_threshold, + const float confidence_threshold, const int mode, const int input_layout, + void *workspace, void *result_num, void *output, + const cnrtDataType_t data_type_input, const float offset, const int algo) { + if (data_type_input == CNRT_FLOAT16) { + __memcpy(workspace, input_confidence, input_num_boxes * sizeof(half), + GDRAM2GDRAM); + } else if (data_type_input == CNRT_FLOAT32) { + __memcpy(workspace, input_confidence, input_num_boxes * sizeof(float), + GDRAM2GDRAM); + } else { + } + + int output_stride = max_output_size; + uint32_t result_box_num = 0; + if (mode == 0) { + uint32_t *out_data = (uint32_t *)output; + switch (data_type_input) { + default: { return; } + case CNRT_FLOAT16: { + half *boxes_data = (half *)input_boxes; + half *confi_data = (half *)workspace; + half *buffer = (half *)nram_buffer; + half *sram = (half *)sram_buffer; + + nms_detection(&result_box_num, mode, input_layout, out_data, GDRAM, + confi_data, boxes_data, GDRAM, buffer, SIZE_NRAM_BUF, + sram, taskDim, input_num_boxes, input_stride, + output_stride, max_output_size, iou_threshold, + confidence_threshold, offset, algo); + ((uint32_t *)result_num)[0] = result_box_num; + }; break; + case CNRT_FLOAT32: { + float *boxes_data = (float *)input_boxes; + float *confi_data = (float *)workspace; + float *buffer = (float *)nram_buffer; + float *sram = (float *)sram_buffer; + + nms_detection(&result_box_num, mode, input_layout, out_data, GDRAM, + confi_data, boxes_data, GDRAM, buffer, SIZE_NRAM_BUF, + sram, taskDim, input_num_boxes, input_stride, + output_stride, max_output_size, iou_threshold, + confidence_threshold, offset, algo); + ((uint32_t *)result_num)[0] = result_box_num; + }; break; + } + } else { + switch (data_type_input) { + default: { return; } + case CNRT_FLOAT16: { + half *boxes_data = (half *)input_boxes; + half *confi_data = (half *)workspace; + half *out_data = (half *)output; + half *buffer = (half *)nram_buffer; + half *sram = (half *)sram_buffer; + + nms_detection(&result_box_num, mode, input_layout, out_data, GDRAM, + confi_data, boxes_data, GDRAM, buffer, SIZE_NRAM_BUF, + sram, taskDim, input_num_boxes, input_stride, + output_stride, max_output_size, iou_threshold, + confidence_threshold, offset, algo); + ((uint32_t *)result_num)[0] = result_box_num; + }; break; + case CNRT_FLOAT32: { + float *boxes_data = (float *)input_boxes; + float *confi_data = (float *)workspace; + float *out_data = (float *)output; + float *buffer = (float *)nram_buffer; + float *sram = (float *)sram_buffer; + + nms_detection(&result_box_num, mode, input_layout, out_data, GDRAM, + confi_data, boxes_data, GDRAM, buffer, SIZE_NRAM_BUF, + sram, taskDim, input_num_boxes, input_stride, + output_stride, max_output_size, iou_threshold, + confidence_threshold, offset, algo); + ((uint32_t *)result_num)[0] = result_box_num; + }; break; + } + } +} + +template +__mlu_func__ void nms_detection_ux( + int32_t *loop_end_flag, uint32_t &output_box_num, OUT_DT *output_dram, + IN_DT *score_data, const IN_DT *boxes_data, const Addr input_ram, + const int input_layout, const int input_num_boxes, const int input_stride, + const int max_output_size, const float thresh_iou, const float thresh_score, + const float offset, const int output_mode, const int algo) { + loop_end_flag[0] = 0; + IN_DT *sram = (IN_DT *)sram_buffer; + + // score, x1, y1, x2, y2, inter_x1, inter_y1, inter_x2, inter_y2 + int nms_buffer_count1 = 9; + // temp nram buffer to store selected target. + int nram_save_limit_count = 256; + float div_thresh_iou = 1.0 / thresh_iou; + + // input data ptr + IN_DT *input_score_ptr; + const IN_DT *input_x1_ptr; + const IN_DT *input_y1_ptr; + const IN_DT *input_x2_ptr; + const IN_DT *input_y2_ptr; + input_score_ptr = score_data; + input_x1_ptr = boxes_data; + input_y1_ptr = input_x1_ptr + input_stride; + input_x2_ptr = input_y1_ptr + input_stride; + input_y2_ptr = input_x2_ptr + input_stride; + + int limit = 0; // find limit when GDRAM or SRAM + int max_seg_pad = 0; // the max length every repeat + int repeat = 0; + int remain = 0; + int remain_pad = 0; + int nram_save_count = 0; + + if (output_mode == 0) { + limit = (SIZE_NRAM_BUF - NFU_ALIGN_SIZE /*for max_box*/ * sizeof(IN_DT) - + nram_save_limit_count * sizeof(OUT_DT)) / + (nms_buffer_count1 * sizeof(IN_DT)); + } else { + limit = (SIZE_NRAM_BUF - NFU_ALIGN_SIZE /*for max_box*/ * sizeof(IN_DT) - + nram_save_limit_count * INFO_NUM * sizeof(OUT_DT)) / + (nms_buffer_count1 * sizeof(IN_DT)); + } + + // data split + int avg_cluster = input_num_boxes / clusterDim; + int rem_cluster = input_num_boxes % clusterDim; + int len_cluster = avg_cluster + (clusterId < rem_cluster ? 1 : 0); + int cluster_offset = avg_cluster * clusterId + + (clusterId <= rem_cluster ? clusterId : rem_cluster); + + int avg_core = len_cluster / coreDim; + int rem_core = len_cluster % coreDim; + int len_core = avg_core + (coreId < rem_core ? 1 : 0); + int core_offset = + avg_core * coreId + (coreId <= rem_core ? coreId : rem_core); + int input_offset = cluster_offset + core_offset; + + max_seg_pad = PAD_DOWN(limit, NMS_SIZE); + + // core 0 of each cluster calculate the max score index + int max_index_avg_core = input_num_boxes / clusterDim; + int max_index_rem_core = input_num_boxes % clusterDim; + int max_index_len_core = + max_index_avg_core + (clusterId < max_index_rem_core ? 1 : 0); + int max_index_input_offset = + max_index_avg_core * clusterId + + (clusterId <= max_index_rem_core ? clusterId : max_index_rem_core); + repeat = max_index_len_core / max_seg_pad; + remain = max_index_len_core % max_seg_pad; + remain_pad = PAD_UP(remain, NMS_SIZE); + + // if datatype is fp16, we should cvt to fp32 when compute iou + int max_seg_iou_compute = + PAD_DOWN(max_seg_pad / (sizeof(float) / sizeof(IN_DT)), NMS_SIZE); + int repeat_iou_compute = len_core / max_seg_iou_compute; + int remain_iou_compute = len_core % max_seg_iou_compute; + int remain_pad_iou_compute = PAD_UP(remain_iou_compute, NMS_SIZE); + + // init the nram ptr + IN_DT *score = (IN_DT *)nram_buffer; + IN_DT *x1 = score + max_seg_pad; + IN_DT *y1 = x1 + max_seg_pad; + IN_DT *x2 = y1 + max_seg_pad; + IN_DT *y2 = x2 + max_seg_pad; + IN_DT *inter_x1 = y2 + max_seg_pad; + IN_DT *inter_y1 = inter_x1 + max_seg_pad; + IN_DT *inter_x2 = inter_y1 + max_seg_pad; + IN_DT *inter_y2 = inter_x2 + max_seg_pad; + IN_DT *max_box = inter_y2 + max_seg_pad; // the max score, x1, y1, x2, y2 + OUT_DT *nram_save = + (OUT_DT *)((char *)max_box + + NFU_ALIGN_SIZE); // offset two line from max_box + + mluMemcpyDirection_t input_load_dir = SRAM2NRAM; + mluMemcpyDirection_t input_store_dir = NRAM2SRAM; + input_load_dir = (input_ram == SRAM) ? SRAM2NRAM : GDRAM2NRAM; + input_store_dir = (input_ram == SRAM) ? NRAM2SRAM : NRAM2GDRAM; + + for (int keep = 0; keep < max_output_size; + keep++) { // loop until the max_score <= 0 + __sync_all(); + + /******FIND MAX START******/ + int max_index = 0; + int global_max_index = 0; // for Ux + float max_area = 0; // the max socre area + max_box[0] = 0; // init 0 + + if (coreId == 0) { + for (int i = 0; i <= repeat; i++) { + if (i == repeat && remain == 0) { + break; + } + + int seg_len = (i == repeat) + ? remain_pad + : max_seg_pad; // the length every nms compute + // check seg_len exceeds the limit of fp16 or not. 65536 is the largest + // num + // that fp16 could express. + if (sizeof(IN_DT) == sizeof(half) && seg_len > 65536) { + return; + } + int cpy_len = (i == repeat) + ? remain + : max_seg_pad; // the length every nms memcpy + + /******NMS LOAD START******/ + __bang_write_zero(score, seg_len); + __memcpy(score, + input_score_ptr + max_index_input_offset + i * max_seg_pad, + cpy_len * sizeof(IN_DT), input_load_dir, + cpy_len * sizeof(IN_DT), cpy_len * sizeof(IN_DT), 0); + + /******NMS LOAD END******/ + + __bang_max(inter_x1, score, seg_len); + if (inter_x1[0] > max_box[0]) { + max_box[0] = inter_x1[0]; + if (sizeof(IN_DT) == sizeof(half)) { + max_index = + ((uint16_t *)inter_x1)[1] + max_index_input_offset + + i * max_seg_pad; // offset start from head of input_data + } else if (sizeof(IN_DT) == sizeof(float)) { + max_index = + ((uint32_t *)inter_x1)[1] + max_index_input_offset + + i * max_seg_pad; // offset start from head of input_data + } + } + } // for repeat + + // the max box's x1, y1, x2, y2 on every cluster + max_box[1] = input_x1_ptr[max_index]; + max_box[2] = input_y1_ptr[max_index]; + max_box[3] = input_x2_ptr[max_index]; + max_box[4] = input_y2_ptr[max_index]; + ((uint32_t *)(max_box + 5))[0] = max_index; + // copy max box info to sram + __memcpy(sram, max_box, REDUCE_NUM * sizeof(IN_DT), NRAM2SRAM); + } + __sync_all(); + // copy all partial max to the sram of cluster 0 + if (clusterId != 0) { + __memcpy(sram + REDUCE_NUM * clusterId, sram, REDUCE_NUM * sizeof(IN_DT), + SRAM2SRAM, 0); + } + __sync_all(); + + // reduce between clusters to get the global max box + if (clusterId == 0) { + if (coreId == 0) { + __bang_write_zero(inter_x1, NMS_SIZE); + __memcpy(inter_x1, sram, sizeof(IN_DT), SRAM2NRAM, sizeof(IN_DT), + REDUCE_NUM * sizeof(IN_DT), clusterDim - 1); + __bang_max(max_box, inter_x1, NMS_SIZE); + int max_cluster = (sizeof(IN_DT) == sizeof(half)) + ? ((uint16_t *)max_box)[1] + : ((uint32_t *)max_box)[1]; + __memcpy(max_box, sram + max_cluster * REDUCE_NUM, + REDUCE_NUM * sizeof(IN_DT), SRAM2NRAM); + __memcpy(sram, max_box, REDUCE_NUM * sizeof(IN_DT), NRAM2SRAM); + } + __sync_cluster(); + if (coreId == 0x80 && clusterDim > 1) { + // broadcast global max box to each cluster's sram + for (int cluster_idx = 1; cluster_idx < clusterDim; ++cluster_idx) { + __memcpy(sram, sram, REDUCE_NUM * sizeof(IN_DT), SRAM2SRAM, + cluster_idx); + } + } + __sync_cluster(); + } + __sync_all(); + + // copy the global max box to max_box + __memcpy(max_box, sram, REDUCE_NUM * sizeof(IN_DT), SRAM2NRAM); + if (algo == 0 || offset == 0.0) { + max_area = ((float)max_box[3] - (float)max_box[1]) * + ((float)max_box[4] - (float)max_box[2]); + } else { + max_area = ((float)max_box[3] - (float)max_box[1] + offset) * + ((float)max_box[4] - (float)max_box[2] + offset); + } + global_max_index = ((uint32_t *)(max_box + 5))[0]; + if (coreId != 0x80) { + input_score_ptr[global_max_index] = 0; + } + // by now, we get: max_score|max_index|max_box|max_area + /******FIND MAX END******/ + + /******NMS STORE START******/ + // store to nram + if (float(max_box[0]) > thresh_score) { + OUT_DT *save_ptr; + int save_offset = 0; + int save_str_num = 0; + save_ptr = nram_save; + save_offset = nram_save_count; + save_str_num = nram_save_limit_count; + if (clusterId == 0 && coreId == 0) { + if (output_mode == 0) { // index1, index2, ... + save_ptr[save_offset] = ((uint32_t *)(max_box + INFO_NUM))[0]; + } else if (output_mode == 1) { // score, x1, y1, x2, y2 + __memcpy(save_ptr + save_offset * INFO_NUM, max_box, + INFO_NUM * sizeof(IN_DT), NRAM2NRAM, + INFO_NUM * sizeof(IN_DT), INFO_NUM * sizeof(IN_DT), 0); + } else if (output_mode == 2) { // score---, x1---, y1---, x2---, y2--- + __memcpy(save_ptr + save_offset, max_box, 1 * sizeof(IN_DT), + NRAM2NRAM, save_str_num * sizeof(IN_DT), 1 * sizeof(IN_DT), + 4); + } + } + nram_save_count++; + output_box_num++; + } + + // store to sram/gdram + if (output_box_num != 0) { + if ((nram_save_count == nram_save_limit_count) || + (float(max_box[0]) <= thresh_score) || keep == max_output_size - 1) { + if (nram_save_count != 0) { + if (clusterId == 0 && coreId == 0) { + if (output_mode == 0) { // index1, index2, ... + pvLock(); + __memcpy(output_dram, nram_save, + nram_save_count * sizeof(uint32_t), NRAM2GDRAM); + pvUnlock(); + output_dram += nram_save_count; + } else if (output_mode == 1) { // score, x1, y1, x2, y2 + pvLock(); + __memcpy(output_dram, nram_save, + nram_save_count * INFO_NUM * sizeof(IN_DT), NRAM2GDRAM); + pvUnlock(); + output_dram += nram_save_count * INFO_NUM; + } else if (output_mode == + 2) { // score---, x1---, y1---, x2---, y2--- + pvLock(); + __memcpy(output_dram, nram_save, nram_save_count * sizeof(IN_DT), + NRAM2GDRAM, max_output_size * sizeof(IN_DT), + nram_save_limit_count * sizeof(IN_DT), 4); + pvUnlock(); + output_dram += nram_save_count; + } + nram_save_count = 0; + } + } + } // if move data nram->sram/gdram + } // if dst + + if (float(max_box[0]) <= thresh_score) { + if (clusterId == 0 && coreId == 0) { + loop_end_flag[0] = 1; // dram + } + } + __sync_all(); + if (loop_end_flag[0] == 1) { + break; + } + /******NMS STORE END******/ + + // To solve fp16 accuracy, we convert fp16 to fp32 to calculate IoU. + for (int i = 0; i <= repeat_iou_compute; i++) { + if (i == repeat_iou_compute && remain_iou_compute == 0) { + break; + } + int seg_len = (i == repeat_iou_compute) ? remain_pad_iou_compute + : max_seg_iou_compute; + int cpy_len = + (i == repeat_iou_compute) ? remain_iou_compute : max_seg_iou_compute; + + /******NMS LOAD START******/ + __nramset((float *)score, seg_len, 0.0f); + int dt_offset = 0; + if (sizeof(IN_DT) == sizeof(float)) { + __memcpy(score, input_score_ptr + input_offset + i * max_seg_pad, + cpy_len * sizeof(IN_DT), input_load_dir, + cpy_len * sizeof(IN_DT), cpy_len * sizeof(IN_DT), 0); + dt_offset = 0; + } else if (sizeof(IN_DT) == sizeof(half)) { + __nramset(x1, seg_len, half(0)); + __memcpy(x1, input_score_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), input_load_dir, + cpy_len * sizeof(IN_DT), cpy_len * sizeof(IN_DT), 0); + __bang_half2float((float *)score, (half *)x1, seg_len); + dt_offset = max_seg_iou_compute; + } + + __memcpy(x1 + dt_offset, + input_x1_ptr + input_offset + i * max_seg_iou_compute, + cpy_len * sizeof(IN_DT), input_load_dir, + max_seg_pad * sizeof(IN_DT), input_num_boxes * sizeof(IN_DT), 3); + /******NMS LOAD END******/ + + /******NMS COMPUTE START******/ + if (sizeof(IN_DT) == sizeof(half)) { + __bang_half2float((float *)x1, (half *)x1 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)y1, (half *)y1 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)x2, (half *)x2 + max_seg_iou_compute, + seg_len); + __bang_half2float((float *)y2, (half *)y2 + max_seg_iou_compute, + seg_len); + } + // 1、 compute IOU + // get the area_I + __nramset((float *)inter_y1, seg_len, float(max_box[1])); // max_x1 + __bang_maxequal((float *)inter_x1, (float *)x1, (float *)inter_y1, + seg_len); // inter_x1 + __nramset((float *)inter_y2, seg_len, float(max_box[3])); // max_x2 + __bang_minequal((float *)inter_x2, (float *)x2, (float *)inter_y2, + seg_len); // inter_x2 + __bang_sub((float *)inter_x1, (float *)inter_x2, (float *)inter_x1, + seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_x1, (float *)inter_x1, offset, seg_len); + } + __bang_active_relu((float *)inter_x1, (float *)inter_x1, + seg_len); // inter_w + __nramset((float *)inter_x2, seg_len, float(max_box[2])); // max_y1 + __bang_maxequal((float *)inter_y1, (float *)y1, (float *)inter_x2, + seg_len); // inter_y1 + __nramset((float *)inter_x2, seg_len, float(max_box[4])); // max_y2 + __bang_minequal((float *)inter_y2, (float *)y2, (float *)inter_x2, + seg_len); // inter_y2 + __bang_sub((float *)inter_y1, (float *)inter_y2, (float *)inter_y1, + seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_y1, (float *)inter_y1, offset, seg_len); + } + __bang_active_relu((float *)inter_y1, (float *)inter_y1, + seg_len); // inter_h + __bang_mul((float *)inter_x1, (float *)inter_x1, (float *)inter_y1, + seg_len); // area_I + // get the area of input_box: area = (x2 - x1) * (y2 - y1); + __bang_sub((float *)inter_y1, (float *)x2, (float *)x1, seg_len); + __bang_sub((float *)inter_y2, (float *)y2, (float *)y1, seg_len); + if (algo == 1 && offset != 0.0) { + __bang_add_const((float *)inter_y1, (float *)inter_y1, offset, seg_len); + __bang_add_const((float *)inter_y2, (float *)inter_y2, offset, seg_len); + } + __bang_mul((float *)inter_x2, (float *)inter_y1, (float *)inter_y2, + seg_len); // area + // get the area_U: area + max_area - area_I + __bang_add_const((float *)inter_x2, (float *)inter_x2, float(max_area), + seg_len); + __bang_sub((float *)inter_x2, (float *)inter_x2, (float *)inter_x1, + seg_len); // area_U + // 2、 select the box + // if IOU greater than thres, set the score to zero, abort it: area_U > + // area_I * (1 / thresh)? + if (thresh_iou > 0.0) { + __bang_mul_const((float *)inter_x1, (float *)inter_x1, div_thresh_iou, + seg_len); + } else { + __bang_mul_const((float *)inter_x2, (float *)inter_x2, thresh_iou, + seg_len); + } + __bang_ge((float *)inter_x1, (float *)inter_x2, (float *)inter_x1, + seg_len); + __bang_mul((float *)score, (float *)score, (float *)inter_x1, seg_len); + /******NMS COMPUTE END******/ + + if (sizeof(IN_DT) == 2) { + __bang_float2half_rd((half *)score, (float *)score, seg_len); + } + pvLock(); + __memcpy(input_score_ptr + input_offset + i * max_seg_iou_compute, score, + cpy_len * sizeof(IN_DT), input_store_dir, + cpy_len * sizeof(IN_DT), cpy_len * sizeof(IN_DT), 0); + pvUnlock(); + } // for repeat + } // for max_output_size +} + +__mlu_global__ void MLUUionXKernelNMS( + const void *input_boxes, const void *input_confidence, + const int input_num_boxes, const int input_layout, const int input_stride, + const int max_output_size, const float iou_threshold, + const float confidence_threshold, const float offset, + const cnrtDataType_t data_type_input, const int output_mode, const int algo, + void *workspace, void *result_num, void *output) { + int input_dwidth = (data_type_input == CNRT_FLOAT32) ? 4 : 2; + int32_t *loop_end_flag = + (int32_t *)((char *)workspace + + INFO_NUM * input_num_boxes * input_dwidth); + int reduce_sram_size = NFU_ALIGN_SIZE * REDUCE_NUM * input_dwidth; + int availbale_sram_size = SIZE_SRAM_BUF - reduce_sram_size; + + int cluster_score_size = input_num_boxes * input_dwidth; + int cluster_boxes_size = input_num_boxes * 4 * input_dwidth; + char *sram_score = (char *)sram_buffer + reduce_sram_size; + char *sram_boxes = + (char *)sram_buffer + reduce_sram_size + cluster_score_size; + Addr input_ram = GDRAM; + if ((cluster_score_size + cluster_boxes_size) < availbale_sram_size) { + input_ram = SRAM; + __memcpy(sram_score, input_confidence, cluster_score_size, GDRAM2SRAM); + __memcpy(sram_boxes, input_boxes, cluster_boxes_size, GDRAM2SRAM); + } else { + __memcpy(workspace, input_confidence, cluster_score_size, GDRAM2GDRAM); + } + __sync_cluster(); + uint32_t output_box_num = 0; + if (output_mode == 0) { + uint32_t *output_dram = (uint32_t *)output; + switch (data_type_input) { + default: { return; } + case CNRT_FLOAT16: { + half *score_data; + half *boxes_data; + score_data = + (input_ram == SRAM) ? (half *)sram_score : (half *)workspace; + boxes_data = + (input_ram == SRAM) ? (half *)sram_boxes : (half *)input_boxes; + nms_detection_ux(loop_end_flag, output_box_num, output_dram, score_data, + boxes_data, input_ram, input_layout, input_num_boxes, + input_stride, max_output_size, iou_threshold, + confidence_threshold, offset, output_mode, algo); + ((uint32_t *)result_num)[0] = output_box_num; + }; break; + case CNRT_FLOAT32: { + float *score_data; + float *boxes_data; + score_data = + (input_ram == SRAM) ? (float *)sram_score : (float *)workspace; + boxes_data = + (input_ram == SRAM) ? (float *)sram_boxes : (float *)input_boxes; + nms_detection_ux(loop_end_flag, output_box_num, output_dram, score_data, + boxes_data, input_ram, input_layout, input_num_boxes, + input_stride, max_output_size, iou_threshold, + confidence_threshold, offset, output_mode, algo); + ((uint32_t *)result_num)[0] = output_box_num; + }; break; + } + } else { + switch (data_type_input) { + default: { return; } + case CNRT_FLOAT16: { + half *output_dram = (half *)output; + half *score_data; + half *boxes_data; + score_data = + (input_ram == SRAM) ? (half *)sram_score : (half *)workspace; + boxes_data = + (input_ram == SRAM) ? (half *)sram_boxes : (half *)input_boxes; + nms_detection_ux(loop_end_flag, output_box_num, output_dram, score_data, + boxes_data, input_ram, input_layout, input_num_boxes, + input_stride, max_output_size, iou_threshold, + confidence_threshold, offset, output_mode, algo); + ((uint32_t *)result_num)[0] = output_box_num; + }; break; + case CNRT_FLOAT32: { + float *output_dram = (float *)output; + float *score_data; + float *boxes_data; + score_data = + (input_ram == SRAM) ? (float *)sram_score : (float *)workspace; + boxes_data = + (input_ram == SRAM) ? (float *)sram_boxes : (float *)input_boxes; + nms_detection_ux(loop_end_flag, output_box_num, output_dram, score_data, + boxes_data, input_ram, input_layout, input_num_boxes, + input_stride, max_output_size, iou_threshold, + confidence_threshold, offset, output_mode, algo); + ((uint32_t *)result_num)[0] = output_box_num; + }; break; + } + } +} + +void KernelNms(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const cnrtDataType_t data_type_input, const void *boxes_ptr, + const void *scores_ptr, const int input_num_boxes, + const int input_stride, const int max_output_boxes, + const float iou_threshold, const float offset, + void *workspace_ptr, void *output_size_ptr, void *output_ptr) { + switch (k_type) { + default: { return; } + case CNRT_FUNC_TYPE_BLOCK: + case CNRT_FUNC_TYPE_UNION1: { + MLUUnion1KernelNMS<<>>( + boxes_ptr, scores_ptr, input_num_boxes, input_stride, + max_output_boxes, iou_threshold, /*confidence_threshold=*/0.0, + /*output_mode=*/0, + /*input_layout=*/1, workspace_ptr, output_size_ptr, output_ptr, + data_type_input, offset, /*algo=*/1); + }; break; + case CNRT_FUNC_TYPE_UNION2: + case CNRT_FUNC_TYPE_UNION4: + case CNRT_FUNC_TYPE_UNION8: + case CNRT_FUNC_TYPE_UNION16: { + MLUUionXKernelNMS<<>>( + boxes_ptr, scores_ptr, input_num_boxes, /*input_layout=*/1, + input_stride, max_output_boxes, iou_threshold, + /*confidence_threshold=*/0.0, offset, data_type_input, + /*output_mode=*/0, /*algo=*/1, workspace_ptr, output_size_ptr, + output_ptr); + }; break; + } +} diff --git a/mmcv/ops/csrc/common/mlu/psamask_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/psamask_mlu_kernel.mlu new file mode 100644 index 0000000..13b4af1 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/psamask_mlu_kernel.mlu @@ -0,0 +1,615 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" +#include "psamask_utils.hpp" + +#define COMPUTE_COUNT_ALIGN 64 + +__nram__ char buf[MAX_NRAM_SIZE]; + +template +__mlu_func__ void swap(T &a, T &b) { + T tmp = a; + a = b; + b = tmp; +} + +template +__mlu_func__ void storeDataFromNramToDram(T *dst, const T *src, + const PositionInCore &position, + const Shape &shape_full) { + int n_offset = shape_full.h * shape_full.w * shape_full.c; + int h_offset = shape_full.w * shape_full.c; + int w_offset = shape_full.c; + int n_seg = position.n_end - position.n_start; + int h_seg = position.h_end - position.h_start; + int w_seg = position.w_end - position.w_start; + int size = h_seg * w_seg * shape_full.c; + + __memcpy(dst + position.n_start * n_offset + position.h_start * h_offset + + position.w_start * w_offset, + src, size * sizeof(T), NRAM2GDRAM, n_offset * sizeof(T), + size * sizeof(T), n_seg - 1); +} + +template +__mlu_func__ void loadDataFromDramToNram(T *dst, const T *src, + const PositionInCore &position, + const Shape &shape_full) { + int n_offset = shape_full.h * shape_full.w * shape_full.c; + int h_offset = shape_full.w * shape_full.c; + int w_offset = shape_full.c; + int n_seg = position.n_end - position.n_start; + int h_seg = position.h_end - position.h_start; + int w_seg = position.w_end - position.w_start; + int size = h_seg * w_seg * shape_full.c; + + __memcpy(dst, + src + position.n_start * n_offset + position.h_start * h_offset + + position.w_start * w_offset, + size * sizeof(T), GDRAM2NRAM, size * sizeof(T), n_offset * sizeof(T), + n_seg - 1); +} + +// transpose the data from A*B*C*(D*E) to A*D*E*(B*C) +template +__mlu_func__ void transposeData(T *dst, T *src, const Shape &shape_seg) { + int align_c = CEIL_ALIGN(shape_seg.c, COMPUTE_COUNT_ALIGN / sizeof(T)); + int align_hw = + CEIL_ALIGN(shape_seg.h * shape_seg.w, COMPUTE_COUNT_ALIGN / sizeof(T)); + for (int i = 0; i < shape_seg.n; ++i) { + __bang_transpose(dst, src, align_hw, align_c); + dst += align_hw * align_c; + src += align_hw * align_c; + } +} + +template +__mlu_func__ void psamaskCollectForward( + const T *x_dram, T *y_dram, const PositionInCore &position, + const Shape &x_full, const Shape &y_full, const Shape &shape_seg, + const int h_mask, const int w_mask, const int half_h_mask, + const int half_w_mask) { + T *x_nram = (T *)buf; + T *y_nram = + x_nram + CEIL_ALIGN(shape_seg.n * shape_seg.h * shape_seg.w * x_full.c, + COMPUTE_COUNT_ALIGN / sizeof(T)); + loadDataFromDramToNram(x_nram, x_dram, position, x_full); + + // fill zeros to output + int elem_count = + CEIL_ALIGN(shape_seg.n * shape_seg.h * shape_seg.w * y_full.c, + NFU_ALIGN_SIZE / sizeof(T)); + __nramset(y_nram, elem_count, (T)0); + + int y_n_offset = shape_seg.h * shape_seg.w * shape_seg.c; + int y_h_offset = shape_seg.w * shape_seg.c; + int y_w_offset = shape_seg.c; + int x_n_offset = shape_seg.h * shape_seg.w * x_full.c; + int y_c_offset = 1; + int x_h_offset = shape_seg.w * x_full.c; + int x_w_offset = x_full.c; + int x_c_offset = 1; + int x_start = 0; + int y_start = 0; + for (int nidx = 0; nidx < shape_seg.n; ++nidx) { + for (int hidx = 0; hidx < shape_seg.h; ++hidx) { + for (int widx = 0; widx < shape_seg.w; ++widx) { + int h_abs = hidx + position.h_start; + int w_abs = widx + position.w_start; + int y_offset = y_start; + int x_offset = x_start; + y_offset += hidx * y_h_offset + widx * y_w_offset; + x_offset += hidx * x_h_offset + widx * x_w_offset; + + const int hstart = half_h_mask - h_abs > 0 ? half_h_mask - h_abs : 0; + const int hend = x_full.h + half_h_mask - h_abs < h_mask + ? x_full.h + half_h_mask - h_abs + : h_mask; + const int wstart = half_w_mask - w_abs > 0 ? half_w_mask - w_abs : 0; + const int wend = x_full.w + half_w_mask - w_abs < w_mask + ? x_full.w + half_w_mask - w_abs + : w_mask; + // (h, w ) with mask-indexed + // (h + hidx - half_h_mask, w + widx - half_w_mask) with feature-indexed + y_offset += ((hstart + h_abs - half_h_mask) * x_full.w + wstart + + w_abs - half_w_mask) * + y_c_offset; + x_offset += (hstart * w_mask + wstart) * x_c_offset; + int count = wend - wstart; + __memcpy(y_nram + y_offset, x_nram + x_offset, count * sizeof(T), + NRAM2NRAM, y_c_offset * x_full.w * sizeof(T), + x_c_offset * w_mask * sizeof(T), hend - hstart - 1); + } + } + y_start += y_n_offset; + x_start += x_n_offset; + } + storeDataFromNramToDram(y_dram, y_nram, position, y_full); +} + +template +__mlu_func__ void psamaskDistributeForward( + const T *x_dram, T *y_dram, const PositionInCore &position, + const Shape &x_full, const Shape &y_full, const Shape &shape_seg, + const int h_mask, const int w_mask, const int half_h_mask, + const int half_w_mask) { + T *x_nram = (T *)buf; + T *y_nram_temp = + x_nram + CEIL_ALIGN(shape_seg.n * shape_seg.h * shape_seg.w * x_full.c, + COMPUTE_COUNT_ALIGN / sizeof(T)); + loadDataFromDramToNram(x_nram, x_dram, position, x_full); + + // fill zeros to output + int align_c = CEIL_ALIGN(y_full.c, COMPUTE_COUNT_ALIGN / sizeof(T)); + int align_hw = + CEIL_ALIGN(shape_seg.h * shape_seg.w, COMPUTE_COUNT_ALIGN / sizeof(T)); + int elem_count = + CEIL_ALIGN(shape_seg.n * align_c * align_hw, NFU_ALIGN_SIZE / sizeof(T)); + __nramset(y_nram_temp, elem_count, (T)0); + + int y_n_offset = align_hw * align_c; + int y_h_offset = shape_seg.w * align_c; + int y_w_offset = align_c; + int y_c_offset = 1; + int x_n_offset = shape_seg.h * shape_seg.w * x_full.c; + int x_h_offset = shape_seg.w * x_full.c; + int x_w_offset = x_full.c; + int x_c_offset = 1; + int h_feature = y_full.h; + int w_feature = y_full.w; + + int y_start = 0; + int x_start = 0; + for (int nidx = 0; nidx < shape_seg.n; ++nidx) { + for (int hidx = 0; hidx < shape_seg.h; ++hidx) { + for (int widx = 0; widx < shape_seg.w; ++widx) { + int h_abs = hidx + position.h_start; + int w_abs = widx + position.w_start; + int y_offset = y_start; + int x_offset = x_start; + y_offset += hidx * y_h_offset + widx * y_w_offset; + x_offset += hidx * x_h_offset + widx * x_w_offset; + const int hstart = half_h_mask - h_abs > 0 ? half_h_mask - h_abs : 0; + const int hend = h_feature + half_h_mask - h_abs < h_mask + ? h_feature + half_h_mask - h_abs + : h_mask; + const int wstart = half_w_mask - w_abs > 0 ? half_w_mask - w_abs : 0; + const int wend = w_feature + half_w_mask - w_abs < w_mask + ? w_feature + half_w_mask - w_abs + : w_mask; + // (h, w ) with mask-indexed + // (h + hidx - half_h_mask, w + widx - half_w_mask) with feature-indexed + y_offset += ((hstart + h_abs - half_h_mask) * x_full.w + wstart + + w_abs - half_w_mask) * + y_c_offset; + x_offset += (hstart * w_mask + wstart) * x_c_offset; + int count = wend - wstart; + __memcpy(y_nram_temp + y_offset, x_nram + x_offset, count * sizeof(T), + NRAM2NRAM, y_c_offset * w_feature * sizeof(T), + x_c_offset * w_mask * sizeof(T), hend - hstart - 1); + } + } + y_start += y_n_offset; + x_start += x_n_offset; + } + // transpose y + T *y_nram = y_nram_temp + shape_seg.n * align_hw * align_c; + Shape y_seg{shape_seg.n, shape_seg.h, shape_seg.w, y_full.c}; + transposeData(y_nram, y_nram_temp, y_seg); + swap(align_c, align_hw); + // store y from nram to dram + int y_n_offset_full = y_full.h * y_full.w * y_full.c; + int y_w_offset_full = y_full.c; + int y_c_offset_full = 1; + + int y_dram_start = + position.n_start * y_n_offset_full + + (position.h_start * y_full.w + position.w_start) * y_c_offset_full; + int y_nram_start = 0; + for (int nidx = 0; nidx < shape_seg.n; ++nidx) { + int y_dram_offset = y_dram_start + nidx * y_n_offset_full; + int y_nram_offset = y_nram_start + nidx * align_hw * align_c; + __memcpy(y_dram + y_dram_offset, y_nram + y_nram_offset, + shape_seg.h * shape_seg.w * sizeof(T), NRAM2GDRAM, + y_w_offset_full * sizeof(T), align_c * sizeof(T), + h_feature * w_feature - 1); + } +} + +template +__mlu_func__ void psamaskCollectBackward( + const T *dy_dram, T *dx_dram, const PositionInCore &position, + const Shape &dy_full, const Shape &dx_full, const Shape &shape_seg, + const int h_mask, const int w_mask, const int half_h_mask, + const int half_w_mask) { + T *dy_nram = (T *)buf; + T *dx_nram = + dy_nram + CEIL_ALIGN(shape_seg.n * shape_seg.h * shape_seg.w * dy_full.c, + COMPUTE_COUNT_ALIGN / sizeof(T)); + loadDataFromDramToNram(dy_nram, dy_dram, position, dy_full); + + // fill zeros to output + int elem_count = + CEIL_ALIGN(shape_seg.n * shape_seg.h * shape_seg.w * shape_seg.c, + NFU_ALIGN_SIZE / sizeof(T)); + __nramset(dx_nram, elem_count, (T)0); + + int dy_n_offset = shape_seg.h * shape_seg.w * dy_full.c; + int dy_h_offset = shape_seg.w * dy_full.c; + int dy_w_offset = dy_full.c; + int dy_c_offset = 1; + int dx_n_offset = shape_seg.h * shape_seg.w * dx_full.c; + int dx_h_offset = shape_seg.w * dx_full.c; + int dx_w_offset = dx_full.c; + int dx_c_offset = 1; + int h_feature = dy_full.h; + int w_feature = dy_full.w; + + int dy_start = 0; + int dx_start = 0; + for (int nidx = 0; nidx < shape_seg.n; ++nidx) { + for (int hidx = 0; hidx < shape_seg.h; ++hidx) { + for (int widx = 0; widx < shape_seg.w; ++widx) { + int h_abs = hidx + position.h_start; + int w_abs = widx + position.w_start; + int dy_offset = dy_start; + int dx_offset = dx_start; + dy_offset += hidx * dy_h_offset + widx * dy_w_offset; + dx_offset += hidx * dx_h_offset + widx * dx_w_offset; + + const int hstart = half_h_mask - h_abs > 0 ? half_h_mask - h_abs : 0; + const int hend = h_feature + half_h_mask - h_abs < h_mask + ? h_feature + half_h_mask - h_abs + : h_mask; + const int wstart = half_w_mask - w_abs > 0 ? half_w_mask - w_abs : 0; + const int wend = w_feature + half_w_mask - w_abs < w_mask + ? w_feature + half_w_mask - w_abs + : w_mask; + // (h, w ) with mask-indexed + // (h + h_abs - half_h_mask, w + w_abs - half_w_mask) with + // feature-indexed + dy_offset += ((hstart + h_abs - half_h_mask) * w_feature + wstart + + w_abs - half_w_mask) * + dy_c_offset; + dx_offset += (hstart * w_mask + wstart) * dx_c_offset; + int count = wend - wstart; + __memcpy(dx_nram + dx_offset, dy_nram + dy_offset, count * sizeof(T), + NRAM2NRAM, dx_c_offset * w_mask * sizeof(T), + dy_c_offset * w_feature * sizeof(T), hend - hstart - 1); + } + } + dy_start += dy_n_offset; + dx_start += dx_n_offset; + } + storeDataFromNramToDram(dx_dram, dx_nram, position, dx_full); +} + +template +__mlu_func__ void psamaskDistributeBackward( + const T *dy_dram, T *dx_dram, const PositionInCore &position, + const Shape &dy_full, const Shape &dx_full, const Shape &shape_seg, + const int h_mask, const int w_mask, const int half_h_mask, + const int half_w_mask) { + // load dy from dram to nram + T *dy_nram_temp = (T *)buf; + int dy_n_offset_full = dy_full.h * dy_full.w * dy_full.c; + int dy_c_offset_full = 1; + int h_feature = dy_full.h; + int w_feature = dy_full.w; + int align_c = + CEIL_ALIGN(shape_seg.h * shape_seg.w, COMPUTE_COUNT_ALIGN / sizeof(T)); + int align_hw = + CEIL_ALIGN(h_feature * w_feature, COMPUTE_COUNT_ALIGN / sizeof(T)); + + int dy_dram_start = + position.n_start * dy_n_offset_full + + (position.h_start * w_feature + position.w_start) * dy_c_offset_full; + int dy_nram_start = 0; + for (int i = 0; i < shape_seg.n; ++i) { + int dy_nram_offset = dy_nram_start + i * (align_hw * align_c); + int dy_dram_offset = dy_dram_start + i * dy_n_offset_full; + __memcpy(dy_nram_temp + dy_nram_offset, dy_dram + dy_dram_offset, + shape_seg.h * shape_seg.w * sizeof(T), GDRAM2NRAM, + align_c * sizeof(T), dy_full.c * sizeof(T), + h_feature * w_feature - 1); + } + T *dy_nram = dy_nram_temp + shape_seg.n * align_hw * align_c; + Shape dy_seg{shape_seg.n, h_feature, w_feature, shape_seg.h * shape_seg.w}; + transposeData(dy_nram, dy_nram_temp, dy_seg); + swap(align_c, align_hw); + + // fill zeros to dx + T *dx_nram = dy_nram + shape_seg.n * align_hw * align_c; + int dx_size = shape_seg.n * shape_seg.h * shape_seg.w * dx_full.c; + __nramset(dx_nram, CEIL_ALIGN(dx_size, NFU_ALIGN_SIZE / sizeof(T)), (T)0); + + int dy_n_offset_seg = align_hw * align_c; + int dy_h_offset_seg = shape_seg.w * align_c; + int dy_w_offset_seg = align_c; + int dy_c_offset_seg = 1; + int dx_n_offset_seg = shape_seg.h * shape_seg.w * shape_seg.c; + int dx_h_offset_seg = shape_seg.w * shape_seg.c; + int dx_w_offset_seg = shape_seg.c; + int dx_c_offset_seg = 1; + + int dy_start = 0; + int dx_start = 0; + for (int nidx = 0; nidx < shape_seg.n; ++nidx) { + for (int hidx = 0; hidx < shape_seg.h; ++hidx) { + for (int widx = 0; widx < shape_seg.w; ++widx) { + int h_abs = hidx + position.h_start; + int w_abs = widx + position.w_start; + int dy_offset = dy_start; + int dx_offset = dx_start; + dy_offset += hidx * dy_h_offset_seg + widx * dy_w_offset_seg; + dx_offset += hidx * dx_h_offset_seg + widx * dx_w_offset_seg; + const int hstart = half_h_mask - h_abs > 0 ? half_h_mask - h_abs : 0; + const int hend = h_feature + half_h_mask - h_abs < h_mask + ? h_feature + half_h_mask - h_abs + : h_mask; + const int wstart = half_w_mask - w_abs > 0 ? half_w_mask - w_abs : 0; + const int wend = w_feature + half_w_mask - w_abs < w_mask + ? w_feature + half_w_mask - w_abs + : w_mask; + // (h, w ) with mask-indexed + // (h + h_abs - half_h_mask, w + w_abs - half_w_mask) with + // feature-indexed + dy_offset += ((hstart + h_abs - half_h_mask) * w_feature + wstart + + w_abs - half_w_mask) * + dy_c_offset_seg; + dx_offset += (hstart * w_mask + wstart) * dx_c_offset_seg; + int count = wend - wstart; + __memcpy(dx_nram + dx_offset, dy_nram + dy_offset, count * sizeof(T), + NRAM2NRAM, w_mask * dx_c_offset_seg * sizeof(T), + w_feature * dy_c_offset_seg * sizeof(T), hend - hstart - 1); + } + } + dy_start += dy_n_offset_seg; + dx_start += dx_n_offset_seg; + } + storeDataFromNramToDram(dx_dram, dx_nram, position, dx_full); +} + +template +__mlu_func__ void psamaskBase(const T *input_dram, T *output_dram, + const Shape &input_full, const Shape &output_full, + LimitParam &limit, const PsamaskType psa_type, + const DimPartitionType core_partition, + const DimPartitionType cluster_partition, + const bool is_forward, const int h_mask, + const int w_mask, const int half_h_mask, + const int half_w_mask, const int n_per_core, + const int h_per_core, const int n_per_cluster, + const int h_per_cluster) { + PositionInCore position_full; + PositionInCore position_seg; + position_full.w_start = 0; + position_full.w_end = output_full.w; + int n_num_in_cluster = n_per_cluster; + int h_num_in_cluster = h_per_cluster; + + switch (cluster_partition) { + case PARTITION_N: { + position_full.h_start = 0; + position_full.h_end = input_full.h; + position_full.n_start = taskIdY * n_per_cluster; + int cluster_need = (input_full.n + n_per_cluster - 1) / n_per_cluster; + if (taskIdY >= cluster_need) return; + int n_remainder = input_full.n - (cluster_need - 1) * n_per_cluster; + n_num_in_cluster = + (taskIdY == cluster_need - 1) ? n_remainder : n_per_cluster; + position_full.n_end = position_full.n_start + n_num_in_cluster; + }; break; + case PARTITION_H: { + position_full.n_start = 0; + position_full.n_end = input_full.n; + position_full.h_start = taskIdY * h_per_cluster; + int cluster_need = (input_full.h + h_per_cluster - 1) / h_per_cluster; + if (taskIdY >= cluster_need) return; + int h_remainder = input_full.h - (cluster_need - 1) * h_per_cluster; + h_num_in_cluster = + (taskIdY == cluster_need - 1) ? h_remainder : h_per_cluster; + position_full.h_end = position_full.h_start + h_num_in_cluster; + }; break; + } + switch (core_partition) { + case PARTITION_N: { + position_full.n_start += taskIdX * n_per_core; + int core_need = (n_num_in_cluster + n_per_core - 1) / n_per_core; + if (taskIdX >= core_need) return; + int n_remainder = n_num_in_cluster - (core_need - 1) * n_per_core; + position_full.n_end = + position_full.n_start + + ((taskIdX == core_need - 1) ? n_remainder : n_per_core); + }; break; + case PARTITION_H: { + position_full.h_start += taskIdX * h_per_core; + int core_need = (h_num_in_cluster + h_per_core - 1) / h_per_core; + if (taskIdX >= core_need) return; + int h_remainder = h_num_in_cluster - (core_need - 1) * h_per_core; + position_full.h_end = + position_full.h_start + + ((taskIdX == core_need - 1) ? h_remainder : h_per_core); + }; break; + } + // the count of n ,h and w need to be processed in the current core + int shape_core_n = position_full.n_end - position_full.n_start; + int shape_core_h = position_full.h_end - position_full.h_start; + int shape_core_w = input_full.w; + + limit.n = limit.n < shape_core_n ? limit.n : shape_core_n; + limit.h = limit.h < shape_core_h ? limit.h : shape_core_h; + limit.w = limit.w < shape_core_w ? limit.w : shape_core_w; + + // load the data to nram according to the limit + for (int nidx = position_full.n_start; nidx < position_full.n_end; + nidx += limit.n) { + position_seg.n_start = nidx; + position_seg.n_end = + position_seg.n_start + (position_full.n_end - nidx < limit.n + ? position_full.n_end - nidx + : limit.n); + for (int hidx = position_full.h_start; hidx < position_full.h_end; + hidx += limit.h) { + position_seg.h_start = hidx; + position_seg.h_end = + position_seg.h_start + (position_full.h_end - hidx < limit.h + ? position_full.h_end - hidx + : limit.h); + for (int widx = position_full.w_start; widx < position_full.w_end; + widx += limit.w) { + position_seg.w_start = widx; + position_seg.w_end = + position_seg.w_start + (position_full.w_end - widx < limit.w + ? position_full.w_end - widx + : limit.w); + + // record the segment of output except the size of channel + // channel segments of output and input are the same + Shape shape_seg; + shape_seg.n = position_seg.n_end - position_seg.n_start; + shape_seg.h = position_seg.h_end - position_seg.h_start; + shape_seg.w = position_seg.w_end - position_seg.w_start; + shape_seg.c = output_full.c; + + switch (psa_type) { + case COLLECT: { + if (is_forward) { + psamaskCollectForward(input_dram, output_dram, position_seg, + input_full, output_full, shape_seg, h_mask, + w_mask, half_h_mask, half_w_mask); + } else { + psamaskCollectBackward(input_dram, output_dram, position_seg, + input_full, output_full, shape_seg, h_mask, + w_mask, half_h_mask, half_w_mask); + } + } break; + case DISTRIBUTE: { + if (is_forward) { + psamaskDistributeForward(input_dram, output_dram, position_seg, + input_full, output_full, shape_seg, + h_mask, w_mask, half_h_mask, + half_w_mask); + } else { + psamaskDistributeBackward(input_dram, output_dram, position_seg, + input_full, output_full, shape_seg, + h_mask, w_mask, half_h_mask, + half_w_mask); + } + } break; + } + } + } + } +} + +template +__mlu_global__ void MLUUnion1KernelPsamaskForward( + const T *x, T *y, const PsamaskType psa_type, + const DimPartitionType core_partition, + const DimPartitionType cluster_partition, const int batch, + const int h_feature, const int w_feature, const int h_mask, + const int w_mask, const int x_c, const int y_c, const int half_h_mask, + const int half_w_mask, const int n_per_core, const int h_per_core, + const int n_per_cluster, const int h_per_cluster, const int limit_n_seg, + const int limit_h_seg, const int limit_w_seg) { + if (coreId == 0x80) { + return; + } + Shape x_full, y_full; + x_full.n = batch; + x_full.h = h_feature; + x_full.w = w_feature; + x_full.c = x_c; + y_full.n = batch; + y_full.h = h_feature; + y_full.w = w_feature; + y_full.c = y_c; + + LimitParam limit; + limit.n = limit_n_seg; + limit.h = limit_h_seg; + limit.w = limit_w_seg; + + psamaskBase(x, y, x_full, y_full, limit, psa_type, core_partition, + cluster_partition, true, h_mask, w_mask, half_h_mask, half_w_mask, + n_per_core, h_per_core, n_per_cluster, h_per_cluster); +} + +template +__mlu_global__ void MLUUnion1KernelPsamaskBackward( + const T *dy, T *dx, const PsamaskType psa_type, + const DimPartitionType core_partition, + const DimPartitionType cluster_partition, const int batch, + const int h_feature, const int w_feature, const int h_mask, + const int w_mask, const int dx_c, const int dy_c, const int half_h_mask, + const int half_w_mask, const int n_per_core, const int h_per_core, + const int n_per_cluster, const int h_per_cluster, const int limit_n_seg, + const int limit_h_seg, const int limit_w_seg) { + if (coreId == 0x80) { + return; + } + Shape dy_full, dx_full; + dx_full.n = batch; + dx_full.h = h_feature; + dx_full.w = w_feature; + dx_full.c = dx_c; + dy_full.n = batch; + dy_full.h = h_feature; + dy_full.w = w_feature; + dy_full.c = dy_c; + + LimitParam limit; + limit.n = limit_n_seg; + limit.h = limit_h_seg; + limit.w = limit_w_seg; + + psamaskBase(dy, dx, dy_full, dx_full, limit, psa_type, core_partition, + cluster_partition, false, h_mask, w_mask, half_h_mask, + half_w_mask, n_per_core, h_per_core, n_per_cluster, + h_per_cluster); +} + +void KernelPsamaskForward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const void *x, void *y, const PsamaskType psa_type, + const DimPartitionType core_partition, + const DimPartitionType cluster_partition, const int batch, + const int h_feature, const int w_feature, const int h_mask, + const int w_mask, const int x_c, const int y_c, const int half_h_mask, + const int half_w_mask, const int n_per_core, const int h_per_core, + const int n_per_cluster, const int h_per_cluster, const int limit_n_seg, + const int limit_h_seg, const int limit_w_seg) { + MLUUnion1KernelPsamaskForward<<>>( + static_cast(x), static_cast(y), psa_type, + core_partition, cluster_partition, batch, h_feature, w_feature, h_mask, + w_mask, x_c, y_c, half_h_mask, half_w_mask, n_per_core, h_per_core, + n_per_cluster, h_per_cluster, limit_n_seg, limit_h_seg, limit_w_seg); +} + +void KernelPsamaskBackward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const void *dy, void *dx, const PsamaskType psa_type, + const DimPartitionType core_partition, + const DimPartitionType cluster_partition, const int batch, + const int h_feature, const int w_feature, const int h_mask, + const int w_mask, const int dx_c, const int dy_c, const int half_h_mask, + const int half_w_mask, const int n_per_core, const int h_per_core, + const int n_per_cluster, const int h_per_cluster, const int limit_n_seg, + const int limit_h_seg, const int limit_w_seg) { + MLUUnion1KernelPsamaskBackward<<>>( + static_cast(dy), static_cast(dx), psa_type, + core_partition, cluster_partition, batch, h_feature, w_feature, h_mask, + w_mask, dx_c, dy_c, half_h_mask, half_w_mask, n_per_core, h_per_core, + n_per_cluster, h_per_cluster, limit_n_seg, limit_h_seg, limit_w_seg); +} diff --git a/mmcv/ops/csrc/common/mlu/psamask_utils.hpp b/mmcv/ops/csrc/common/mlu/psamask_utils.hpp new file mode 100644 index 0000000..30ec388 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/psamask_utils.hpp @@ -0,0 +1,55 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#ifndef PSAMASK_UTILS_HPP_ +#define PSAMASK_UTILS_HPP_ + +typedef enum { + COLLECT = 0, + DISTRIBUTE = 1, +} PsamaskType; + +typedef enum { + PARTITION_N = 0, + PARTITION_H = 1, +} DimPartitionType; + +struct PartitionSeg { + int h_per_cluster; + int n_per_cluster; + int h_per_core; + int n_per_core; + DimPartitionType cluster_partition; + DimPartitionType core_partition; +}; + +struct Shape { + int n; + int h; + int w; + int c; +}; + +struct LimitParam { + int n; + int h; + int w; +}; + +struct PositionInCore { + int n_start; + int n_end; + int h_start; + int h_end; + int w_start; + int w_end; +}; +#endif // PSAMASK_UTILS_HPP_ diff --git a/mmcv/ops/csrc/common/mlu/roi_align_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/roi_align_mlu_kernel.mlu new file mode 100644 index 0000000..f62554d --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/roi_align_mlu_kernel.mlu @@ -0,0 +1,493 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" + +#define ROI_OFFSET 5 + +__nram__ char buffer[MAX_NRAM_SIZE]; + +namespace forward { +template +__mlu_func__ void bilinearInterpolate(const int input_height, + const int input_width, T y, T x, T *w1, + T *w2, T *w3, T *w4, int *x_low, + int *x_high, int *y_low, int *y_high, + bool *empty) { + // deal with cases that inverse elements are of feature map boundary + if (y < -1.0 || y > input_height || x < -1.0 || x > input_width) { + *empty = true; + return; + } + + if (y <= 0) y = 0; + if (x <= 0) x = 0; + + int y_low_ = int(y); + int x_low_ = int(x); + + if (y_low_ >= input_height - 1) { + *y_high = y_low_ = input_height - 1; + y = (T)y_low_; + } else { + *y_high = y_low_ + 1; + } + + if (x_low_ >= input_width - 1) { + *x_high = x_low_ = input_width - 1; + x = T(x_low_); + } else { + *x_high = x_low_ + 1; + } + + *y_low = y_low_; + *x_low = x_low_; + + T ly = y - y_low_; + T lx = x - x_low_; + T hy = 1.0 - ly; + T hx = 1.0 - lx; + *w1 = hy * hx, *w2 = hy * lx, *w3 = ly * hx, *w4 = ly * lx; + return; +} + +template +__mlu_func__ void computeChannel(T *input_core, T *nram_in, T *output_core, + T *nram_out, const int roi_bin_grid_h, + const int roi_bin_grid_w, const T roi_start_h, + const T roi_start_w, const int ph, + const int pw, const T bin_size_h, + const T bin_size_w, const float count, + const int input_height, const int input_width, + const int channels, const int cyc_num, + const int max_elements) { + int cyc_channel = max_elements; + + for (int i = 0; i < cyc_num; i++) { + int real_channel = + (i == cyc_num - 1) ? channels - i * cyc_channel : cyc_channel; + int align_channel = PAD_UP(real_channel, NFU_ALIGN_SIZE / sizeof(T)); + __bang_write_zero(nram_out, align_channel); + uint32_t real_size = real_channel * sizeof(T); + + int iy, ix; + for (iy = 0; iy < roi_bin_grid_h; iy++) { + // 1. compute the coordinates of the y axis in the current roi_bin_grid_h + T y = roi_start_h + ph * bin_size_h + + (T)(iy + 0.5) * bin_size_h / (T)(roi_bin_grid_h); + for (ix = 0; ix < roi_bin_grid_w; ix++) { + // 2. compute the coordinates of the x axis in the current + // roi_bin_grid_w + T x = roi_start_w + pw * bin_size_w + + (T)(ix + 0.5) * bin_size_w / (T)(roi_bin_grid_w); + + // 3. compute the four weights (w1, w2, w3 and w4), the height (y_low + // and y_high) and weight (x_low and x_high) of input feature map in + // the current roi bin grid, and the flag (empty) which shows if x, y + // are out of input feature map ranges + T w1, w2, w3, w4; + int x_low, x_high, y_low, y_high; + bool empty = false; + + bilinearInterpolate(input_height, input_width, y, x, &w1, &w2, &w3, &w4, + &x_low, &x_high, &y_low, &y_high, &empty); + + // 4. compute interpolation of the current roi bin grid + // tmp_cyc1, temp_cyc2, tmp_cyc3 and tmp_cyc4 store the input values + // to compute the interpolation, and then reused to compute + // the argmax_x and argmax_y. + T *tmp_cyc1 = nram_in + cyc_channel; + T *tmp_cyc2 = nram_in + cyc_channel * 2; + T *tmp_cyc3 = nram_in + cyc_channel * 3; + T *tmp_cyc4 = nram_in + cyc_channel * 4; + + if (empty) { // exits abnormal values + __bang_write_zero(nram_in, align_channel); + } else { + __bang_write_zero(nram_in, align_channel); + uint32_t offset1 = (y_low * input_width + x_low) * channels; + uint32_t offset2 = (y_low * input_width + x_high) * channels; + uint32_t offset3 = (y_high * input_width + x_low) * channels; + uint32_t offset4 = (y_high * input_width + x_high) * channels; + T *input1 = (T *)input_core + offset1 + i * cyc_channel; + T *input2 = (T *)input_core + offset2 + i * cyc_channel; + T *input3 = (T *)input_core + offset3 + i * cyc_channel; + T *input4 = (T *)input_core + offset4 + i * cyc_channel; + + // load the four pixels (p1, p2, p3 and p4) of input feature map to + // compute interpolation + __memcpy(tmp_cyc1, input1, real_size, GDRAM2NRAM); + __memcpy(tmp_cyc2, input2, real_size, GDRAM2NRAM); + __memcpy(tmp_cyc3, input3, real_size, GDRAM2NRAM); + __memcpy(tmp_cyc4, input4, real_size, GDRAM2NRAM); + + // interpolation value = w1 * p1 + w2 * p2 + w3 * p3 + w4 * p4 + __bang_mul_const(tmp_cyc1, tmp_cyc1, w1, align_channel); + __bang_mul_const(tmp_cyc2, tmp_cyc2, w2, align_channel); + __bang_mul_const(tmp_cyc3, tmp_cyc3, w3, align_channel); + __bang_mul_const(tmp_cyc4, tmp_cyc4, w4, align_channel); + + __bang_add(nram_in, tmp_cyc1, nram_in, align_channel); + __bang_add(nram_in, tmp_cyc2, nram_in, align_channel); + __bang_add(nram_in, tmp_cyc3, nram_in, align_channel); + __bang_add(nram_in, tmp_cyc4, nram_in, align_channel); + } + // 5. compute sum value and corresponding coordinates of x axis and y + // axis. Update the sum value. + __bang_add(nram_out, nram_in, nram_out, align_channel); + } // loop_roi_grid_w + } // loop_roi_grid_h + T count_value = (T)(1.0 / count); + __bang_mul_const(nram_out, nram_out, count_value, align_channel); + __memcpy(output_core + i * cyc_channel, nram_out, real_size, NRAM2GDRAM); + } // loop_cyc_num +} + +template +__mlu_func__ void roialignForwardAvg( + T *input, T *rois, T *output, const bool aligned, const int channels, + const int pooled_height, const int pooled_width, const int input_height, + const int input_width, const int sampling_ratio, const T spatial_scale, + const int num_rois) { + // find limit for channel, the nram space is divided to 6 parts that are + // input, 4 weights to compute the interpolation (w1, w2, w3, w4), output + + // max_elements : 300 : float datatype : 27296, half datatype : 54592 + // max_elements : 200 : float datatype : 16384, half datatype : 32768 + int max_elements = (PAD_DOWN(MAX_NRAM_SIZE / 6, NFU_ALIGN_SIZE)) / sizeof(T); + int cyc_num = channels / max_elements + (int)(channels % max_elements != 0); + T offset = aligned ? (T)0.5 : (T)0.0; + int task_num = num_rois * pooled_height * pooled_width; + T *nram_out = (T *)buffer; + T *nram_in = nram_out + max_elements; + if (task_num < taskDim) { + if (taskId >= task_num) { + return; + } + } + + for (int bin_idx = taskId; bin_idx < task_num; bin_idx = bin_idx + taskDim) { + if (bin_idx >= task_num) { + return; + } + + // (n,ph.pw) is a c in the pooled output + int pw = bin_idx % pooled_width; + int ph = (bin_idx / pooled_width) % pooled_height; + int n = bin_idx / pooled_width / pooled_height; + + T *roi_id_tmp = rois + n * ROI_OFFSET; + // 1. compute width and height of roi region. + int batch_idx = (int)roi_id_tmp[0]; + T roi_x1 = roi_id_tmp[1]; + T roi_y1 = roi_id_tmp[2]; + T roi_x2 = roi_id_tmp[3]; + T roi_y2 = roi_id_tmp[4]; + T roi_start_w = roi_x1 * spatial_scale - offset; + T roi_start_h = roi_y1 * spatial_scale - offset; + T roi_end_w = roi_x2 * spatial_scale - offset; + T roi_end_h = roi_y2 * spatial_scale - offset; + T roi_width = roi_end_w - roi_start_w; + T roi_height = roi_end_h - roi_start_h; + + if (!aligned) { + roi_width = roi_width > (T)(1.0) ? roi_width : (T)(1.0); + roi_height = roi_height > (T)(1.0) ? roi_height : (T)(1.0); + } + + // 2. compute float-type width and height of roi bin region. + T bin_size_w = (T)roi_width / (T)pooled_width; + T bin_size_h = (T)roi_height / (T)pooled_height; + + // 3. compute int-type width and height of roi bin region. + int roi_bin_grid_h, roi_bin_grid_w; + roi_bin_grid_h = (sampling_ratio > 0) + ? sampling_ratio + : int(ceilf(roi_height / pooled_height)); + roi_bin_grid_w = (sampling_ratio > 0) + ? sampling_ratio + : int(ceilf(roi_width / pooled_width)); + float count = (float)((roi_bin_grid_h * roi_bin_grid_w) > 1 + ? roi_bin_grid_h * roi_bin_grid_w + : 1.0); + T *input_core = input + batch_idx * channels * input_width * input_height; + T *output_core = output + bin_idx * channels; + // 4. compute avg value and corresponding coordinates of x axis and y axis. + computeChannel(input_core, nram_in, output_core, nram_out, roi_bin_grid_h, + roi_bin_grid_w, roi_start_h, roi_start_w, ph, pw, bin_size_h, + bin_size_w, count, input_height, input_width, channels, + cyc_num, max_elements); + } +} + +__mlu_global__ void MLUUnion1KernelRoiAlignAvg( + const void *input, const void *rois, const int channels, const bool aligned, + const int pooled_height, const int pooled_width, const int input_height, + const int input_width, const int sampling_ratio, const float spatial_scale, + const int num_rois, const cnrtDataType_t data_type, void *output) { + // make sure that memcore is not used + if (coreId == 0x80) { + return; + } + + switch (data_type) { + case CNRT_FLOAT16: { + roialignForwardAvg((half *)input, (half *)rois, (half *)output, aligned, + channels, pooled_height, pooled_width, input_height, + input_width, sampling_ratio, + (half)spatial_scale, num_rois); + }; break; + case CNRT_FLOAT32: { + roialignForwardAvg((float *)input, (float *)rois, (float *)output, + aligned, channels, pooled_height, pooled_width, + input_height, input_width, sampling_ratio, + (float)spatial_scale, num_rois); + }; break; + default: + break; + } + + return; +} +} // namespace forward + +namespace backward { +__mlu_func__ void bilinearInterpolateGradient(int height, int width, float y, + float x, float *w1, float *w2, + float *w3, float *w4, int *x_low, + int *x_high, int *y_low, + int *y_high) { + if (y < -1.0 || y > height || x < -1.0 || x > width) { + *w1 = 0.0, *w2 = 0.0, *w3 = 0.0, *w4 = 0.0; + *x_low = -1, *x_high = -1, *y_low = -1, *y_high = -1; + return; + } + if (y <= 0) { + y = 0; + } + if (x <= 0) { + x = 0; + } + *y_low = (int)y; + *x_low = (int)x; + if (*y_low >= height - 1) { + *y_high = height - 1, *y_low = height - 1; + y = (float)(*y_low); + } else { + *y_high = *y_low + 1; + } + if (*x_low >= width - 1) { + *x_high = width - 1, *x_low = width - 1; + x = (float)(*x_low); + } else { + *x_high = *x_low + 1; + } + float ly = y - *y_low, lx = x - *x_low; + float hy = 1.0 - ly, hx = 1.0 - lx; + *w1 = hy * hx, *w2 = hy * lx, *w3 = ly * hx, *w4 = ly * lx; + return; +} + +template +__mlu_func__ void unionRoiAlignBp( + T *grads, T *boxes, T *grads_image, const int boxes_num, const int hi, + const int wi, const int c, const int no, const int ho, const int wo, + const float spatial_scale, const int sampling_ratio, const bool aligned) { + int c_align = PAD_UP(c, NFU_ALIGN_SIZE / sizeof(T)); + int deal_all = boxes_num * hi * wi; + int deal_this_core = deal_all / taskDim + (int)(taskId < deal_all % taskDim); + for (int i = 0; i < deal_this_core; ++i) { + int bhw_id = i * taskDim + taskId; + int box_id = bhw_id / (hi * wi); + int ih = (bhw_id / wi) % hi; + int iw = bhw_id % wi; + T *box = boxes + box_id * 5; + int image_id = (int)box[0]; + T *image_offset = grads_image + image_id * ho * wo * c; + T *grads_ = grads + box_id * hi * wi * c + ih * wi * c + iw * c; + + float offset = aligned ? 0.5 : 0.0; + float x1 = box[1] * spatial_scale - offset; + float y1 = box[2] * spatial_scale - offset; + float x2 = box[3] * spatial_scale - offset; + float y2 = box[4] * spatial_scale - offset; + float roi_width = x2 - x1; + float roi_height = y2 - y1; + if (!aligned) { + roi_width = (roi_width > 1.0) ? roi_width : 1.0; + roi_height = (roi_height > 1.0) ? roi_height : 1.0; + } + float bin_size_h = roi_height / hi; + float bin_size_w = roi_width / wi; + + int roi_grid_h = + (sampling_ratio > 0) ? sampling_ratio : std::ceil(roi_height / hi); + int roi_grid_w = + (sampling_ratio > 0) ? sampling_ratio : std::ceil(roi_width / wi); + const T count = roi_grid_h * roi_grid_w; + if (c_align * sizeof(T) * 2 <= MAX_NRAM_SIZE) { + for (int iy = 0; iy < roi_grid_h; ++iy) { + const float y = + y1 + ih * bin_size_h + (iy + 0.5) * bin_size_h / roi_grid_h; + for (int ix = 0; ix < roi_grid_w; ++ix) { + const float x = + x1 + iw * bin_size_w + (ix + 0.5) * bin_size_w / roi_grid_w; + float w1, w2, w3, w4; + int x_low, x_high, y_low, y_high; + bilinearInterpolateGradient(ho, wo, y, x, &w1, &w2, &w3, &w4, &x_low, + &x_high, &y_low, &y_high); + if (x_low >= 0 && y_low >= 0) { + __memcpy(buffer, grads_, c * sizeof(T), GDRAM2NRAM); + __bang_mul_const((T *)buffer + c_align, (T *)buffer, (T)w1, + c_align); + __bang_mul_const((T *)buffer + c_align, (T *)buffer + c_align, + 1 / count, c_align); + __bang_atomic_add((T *)buffer + c_align, + image_offset + y_low * wo * c + x_low * c, + (T *)buffer + c_align, c); + __bang_mul_const((T *)buffer + c_align, (T *)buffer, (T)w2, + c_align); + __bang_mul_const((T *)buffer + c_align, (T *)buffer + c_align, + 1 / count, c_align); + __bang_atomic_add((T *)buffer + c_align, + image_offset + y_low * wo * c + x_high * c, + (T *)buffer + c_align, c); + __bang_mul_const((T *)buffer + c_align, (T *)buffer, (T)w3, + c_align); + __bang_mul_const((T *)buffer + c_align, (T *)buffer + c_align, + 1 / count, c_align); + __bang_atomic_add((T *)buffer + c_align, + image_offset + y_high * wo * c + x_low * c, + (T *)buffer + c_align, c); + __bang_mul_const((T *)buffer + c_align, (T *)buffer, (T)w4, + c_align); + __bang_mul_const((T *)buffer + c_align, (T *)buffer + c_align, + 1 / count, c_align); + __bang_atomic_add((T *)buffer + c_align, + image_offset + y_high * wo * c + x_high * c, + (T *)buffer + c_align, c); + } // x_low && y_low + } // ix + } // iy + } else { + for (int iy = 0; iy < roi_grid_h; ++iy) { + const float y = + y1 + ih * bin_size_h + (iy + 0.5) * bin_size_h / roi_grid_h; + for (int ix = 0; ix < roi_grid_w; ++ix) { + const float x = + x1 + iw * bin_size_w + (ix + 0.5) * bin_size_w / roi_grid_w; + float w1, w2, w3, w4; + int x_low, x_high, y_low, y_high; + bilinearInterpolateGradient(ho, wo, y, x, &w1, &w2, &w3, &w4, &x_low, + &x_high, &y_low, &y_high); + if (x_low >= 0 && y_low >= 0) { + int deal_once = + PAD_DOWN(MAX_NRAM_SIZE / 2, NFU_ALIGN_SIZE) / sizeof(T); + int c_repeat = c / deal_once + (int)(c % deal_once != 0); + for (int i = 0; i < c_repeat; ++i) { + int deal_c = deal_once; + int align_c = deal_once; + if (i == c_repeat - 1) { + deal_c = c - i * deal_once; + align_c = c_align - i * deal_once; + } + __memcpy(buffer, grads_ + i * deal_once, deal_c * sizeof(T), + GDRAM2NRAM); + __bang_mul_const((T *)buffer + align_c, (T *)buffer, (T)w1, + align_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer + align_c, + 1 / count, align_c); + __bang_atomic_add( + (T *)buffer + align_c, + image_offset + y_low * wo * c + x_low * c + i * deal_once, + (T *)buffer + align_c, deal_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer, (T)w2, + align_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer + align_c, + 1 / count, align_c); + __bang_atomic_add( + (T *)buffer + align_c, + image_offset + y_low * wo * c + x_high * c + i * deal_once, + (T *)buffer + align_c, deal_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer, (T)w3, + align_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer + align_c, + 1 / count, align_c); + __bang_atomic_add( + (T *)buffer + align_c, + image_offset + y_high * wo * c + x_low * c + i * deal_once, + (T *)buffer + align_c, deal_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer, (T)w4, + align_c); + __bang_mul_const((T *)buffer + align_c, (T *)buffer + align_c, + 1 / count, align_c); + __bang_atomic_add( + (T *)buffer + align_c, + image_offset + y_high * wo * c + x_high * c + i * deal_once, + (T *)buffer + align_c, deal_c); + } // for c_repeat + } // x_low >= 0 && y_low >= 0 + } // ix + } // iy + } // if c + } // i +} + +__mlu_global__ void MLUUnion1KernelRoiAlignBackward( + const void *grads, const void *boxes, void *grads_image, + const cnrtDataType_t dtype, const int boxes_num, const int hi, const int wi, + const int c, const int no, const int ho, const int wo, + const float spatial_scale, const int sampling_ratio, const bool aligned) { + // make sure that memcore is not used + if (coreId == 0x80) { + return; + } + switch (dtype) { + case CNRT_FLOAT16: { + unionRoiAlignBp((half *)grads, (half *)boxes, (half *)grads_image, + boxes_num, hi, wi, c, no, ho, wo, spatial_scale, + sampling_ratio, aligned); + }; break; + case CNRT_FLOAT32: { + unionRoiAlignBp((float *)grads, (float *)boxes, (float *)grads_image, + boxes_num, hi, wi, c, no, ho, wo, spatial_scale, + sampling_ratio, aligned); + }; break; + default: { return; } + } +} +} // namespace backward + +void KernelRoiAlign(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, const cnrtDataType_t d_type, + const void *input, const void *rois, const int channels, + const bool aligned, const int pooled_height, + const int pooled_width, const int input_height, + const int input_width, const int sampling_ratio, + const float spatial_scale, const int num_rois, + void *output) { + forward::MLUUnion1KernelRoiAlignAvg<<>>( + input, rois, channels, aligned, pooled_height, pooled_width, input_height, + input_width, sampling_ratio, spatial_scale, num_rois, d_type, output); +} + +void KernelRoiAlignBackward(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, const cnrtDataType_t dtype, + const void *grads, const void *boxes, + void *grads_image, const int boxes_num, + const int hi, const int wi, const int c, + const int no, const int ho, const int wo, + const float spatial_scale, const int sampling_ratio, + const bool aligned) { + backward::MLUUnion1KernelRoiAlignBackward<<>>( + grads, boxes, grads_image, dtype, boxes_num, hi, wi, c, no, ho, wo, + spatial_scale, sampling_ratio, aligned); +} diff --git a/mmcv/ops/csrc/common/mlu/roi_align_rotated_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/roi_align_rotated_mlu_kernel.mlu new file mode 100644 index 0000000..7f05b52 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/roi_align_rotated_mlu_kernel.mlu @@ -0,0 +1,472 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * OR IMPLIED, INCLUDING BUvoid NOKType LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENvoid SHALL THE AUTHORS OR COPYRIGHKType HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORvoid OR OTHERWISE, ARISING FROM, OUKType OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" +#include "roi_align_rotated_utils.hpp" + +#define ROI_OFFSET 6 +#define SAMPLING_NUM 4 + +__nram__ char nram_buffer[MAX_NRAM_SIZE]; + +template +__mlu_func__ void swap(T &a, T &b) { + T tmp = a; + a = b; + b = tmp; +} + +template +__mlu_func__ void bilinearInterpolate(const int input_height, + const int input_width, T x, T y, + const T zero_sign, T *w1, T *w2, T *w3, + T *w4, int *x_low, int *x_high, + int *y_low, int *y_high, bool *empty) { + // deal with case that the point is out of feature map boundary + if (y < -1.0 || y > input_height || x < -1.0 || x > input_width) { + *empty = true; + return; + } + + if (y <= 0) y = (T)0; + if (x <= 0) x = (T)0; + + *y_low = int(y); + *x_low = int(x); + + if (*y_low >= input_height - 1) { + *y_high = *y_low = input_height - 1; + y = (T)(*y_low); + } else { + *y_high = *y_low + 1; + } + + if (*x_low >= input_width - 1) { + *x_high = *x_low = input_width - 1; + x = T(*x_low); + } else { + *x_high = *x_low + 1; + } + T ly = y - *y_low; + T lx = x - *x_low; + T hy = 1.0 - ly; + T hx = 1.0 - lx; + *w1 = hy * hx * zero_sign; + *w2 = hy * lx * zero_sign; + *w3 = ly * hx * zero_sign; + *w4 = ly * lx * zero_sign; +} + +template +__mlu_func__ void getRoiBinInfo(const T *rois_dram, const int bin_i, + const RoiAlignRotatedParams ¶ms, + int *batch_idx, int *roi_n, int *pw, int *ph, + T *roi_center_x, T *roi_center_y, T *roi_width, + T *roi_height, T *theta) { + T offset = params.aligned ? (T)0.5 : (T)0.0; + *pw = bin_i % params.pooled_width; + *ph = (bin_i / params.pooled_width) % params.pooled_height; + *roi_n = bin_i / params.pooled_width / params.pooled_height; + const T *roi_info = rois_dram + (*roi_n) * ROI_OFFSET; + *batch_idx = (int)roi_info[0]; + *roi_center_x = roi_info[1] * (T)params.spatial_scale - offset; + *roi_center_y = roi_info[2] * (T)params.spatial_scale - offset; + *roi_width = roi_info[3] * (T)params.spatial_scale; + *roi_height = roi_info[4] * (T)params.spatial_scale; + *theta = roi_info[5]; + if (params.clockwise) { + *theta = -(*theta); + } + if (!params.aligned) { + *roi_width = *roi_width > (T)1.0 ? *roi_width : (T)1.0; + *roi_height = *roi_height > (T)1.0 ? *roi_height : (T)1.0; + } +} + +template +__mlu_func__ void roiAlignRotatedForward(const T *input_dram, + const T *rois_dram, const int batch, + const int height, const int width, + const int channel, const int rois_num, + const RoiAlignRotatedParams ¶ms, + T *output_dram) { + int align_base_128 = NFU_ALIGN_SIZE / sizeof(T); + int channel_max_cap = MAX_NRAM_SIZE / sizeof(T) / (2 * SAMPLING_NUM + 1); + channel_max_cap = channel_max_cap / align_base_128 * align_base_128; + int channel_align = channel < channel_max_cap ? channel : channel_max_cap; + channel_align = CEIL_ALIGN(channel_align, align_base_128); + + T *nram_out = (T *)nram_buffer; + T *nram_ping = nram_out + channel_align; + T *nram_pong = nram_ping + channel_align * SAMPLING_NUM; + + int bin_first = taskId; + int bin_end = rois_num * params.pooled_height * params.pooled_width; + + for (int bin_i = bin_first; bin_i < bin_end; bin_i += taskDim) { + T roi_center_x, roi_center_y, roi_width, roi_height, theta; + int batch_idx, roi_n, pw, ph; + getRoiBinInfo(rois_dram, bin_i, params, &batch_idx, &roi_n, &pw, &ph, + &roi_center_x, &roi_center_y, &roi_width, &roi_height, + &theta); + T bin_size_h = roi_height / params.pooled_height; + T bin_size_w = roi_width / params.pooled_width; + + int roi_bin_grid_h = + (params.sample_ratio > 0) + ? params.sample_ratio + : __float2int_up((float)roi_height / params.pooled_height); + int roi_bin_grid_w = + (params.sample_ratio > 0) + ? params.sample_ratio + : __float2int_up((float)roi_width / params.pooled_width); + T roi_start_y = -roi_height / 2; + T roi_start_x = -roi_width / 2; + const int bin_dim = roi_bin_grid_h * roi_bin_grid_w > 1 + ? roi_bin_grid_h * roi_bin_grid_w + : 1; + T cos_theta = std::cos(theta); + T sin_theta = std::sin(theta); + T zero_sign = 1.0f / bin_dim; + + bool is_first_sample = true; + int src_offset = 0; + int dst_offset = 0; + int c_rem, c_slice, c_slice_align, pongc_slice, pongc_slice_align; + for (int c_offset = 0; c_offset < channel; c_offset += channel_align) { + __nramset(nram_out, channel_align, (T)0); + c_rem = channel - c_offset; + c_slice = channel_align > c_rem ? c_rem : channel_align; + c_slice_align = CEIL_ALIGN(c_slice, align_base_128); + is_first_sample = true; + for (int iy = 0; iy < roi_bin_grid_h; ++iy) { + const T yy = roi_start_y + ph * bin_size_h + + T(iy + 0.5) * bin_size_h / roi_bin_grid_h; + for (int ix = 0; ix < roi_bin_grid_w; ++ix) { + const T xx = roi_start_x + pw * bin_size_w + + T(ix + 0.5) * bin_size_w / roi_bin_grid_w; + int sample_i = iy * roi_bin_grid_w + ix; + + T y = yy * cos_theta - xx * sin_theta + roi_center_y; + T x = yy * sin_theta + xx * cos_theta + roi_center_x; + T w1, w2, w3, w4; + bool empty = false; + int x_low, x_high, y_low, y_high; + bilinearInterpolate(height, width, x, y, zero_sign, &w1, &w2, &w3, + &w4, &x_low, &x_high, &y_low, &y_high, &empty); + int sample_wdim = x_high - x_low + 1; + /******************************************************* + | ping | pong | + |------|-----|-----|-----|-----|-----|-----|-----|-----| + |output| p1 | p2 | p3 | p4 | p1 | p2 | p3 | p4 | + |------|-----|-----|-----|-----|-----|-----|-----|-----| + ********************************************************/ + if (is_first_sample && !empty) { + // load input data from dram to nram + __nramset(nram_ping, SAMPLING_NUM * c_slice_align, (T)0); + for (int h = y_low; h <= y_high; ++h) { + src_offset = + (batch_idx * height * width + h * width + x_low) * channel + + c_offset; + dst_offset = (h - y_low) * SAMPLING_NUM * c_slice_align / 2; + if (c_slice_align == channel) { + __memcpy(nram_ping + dst_offset, input_dram + src_offset, + sample_wdim * channel * sizeof(T), GDRAM2NRAM); + } else { + __memcpy(nram_ping + dst_offset, input_dram + src_offset, + c_slice * sizeof(T), GDRAM2NRAM, + c_slice_align * sizeof(T), channel * sizeof(T), + sample_wdim - 1); + } + } + } + // load next input data to nram + if (sample_i + 1 < bin_dim) { + int p_iy = (sample_i + 1) / roi_bin_grid_w; + int p_ix = (sample_i + 1) % roi_bin_grid_w; + const T p_yy = roi_start_y + ph * bin_size_h + + T(p_iy + 0.5) * bin_size_h / roi_bin_grid_h; + const T p_xx = roi_start_x + pw * bin_size_w + + T(p_ix + 0.5) * bin_size_w / roi_bin_grid_w; + T p_y = p_yy * cos_theta - p_xx * sin_theta + roi_center_y; + T p_x = p_yy * sin_theta + p_xx * cos_theta + roi_center_x; + T p_w1, p_w2, p_w3, p_w4; + bool p_empty = false; + int p_x_low, p_x_high, p_y_low, p_y_high; + bilinearInterpolate(height, width, p_x, p_y, zero_sign, &p_w1, + &p_w2, &p_w3, &p_w4, &p_x_low, &p_x_high, + &p_y_low, &p_y_high, &p_empty); + int p_sample_wdim = p_x_high - p_x_low + 1; + pongc_slice = c_slice; + pongc_slice_align = c_slice_align; + if (!p_empty) { + __nramset(nram_pong, SAMPLING_NUM * pongc_slice_align, (T)0); + for (int h = p_y_low; h <= p_y_high; ++h) { + src_offset = + (batch_idx * height * width + h * width + p_x_low) * + channel + + c_offset; + dst_offset = + (h - p_y_low) * SAMPLING_NUM * pongc_slice_align / 2; + if (pongc_slice_align == channel) { + __memcpy_async( + nram_pong + dst_offset, input_dram + src_offset, + p_sample_wdim * channel * sizeof(T), GDRAM2NRAM); + } else { + __memcpy_async(nram_pong + dst_offset, + input_dram + src_offset, + pongc_slice * sizeof(T), GDRAM2NRAM, + pongc_slice_align * sizeof(T), + channel * sizeof(T), p_sample_wdim - 1); + } + } + } + } + T *tmp_sum = nram_ping + 3 * c_slice_align; + if (empty) { + __nramset(tmp_sum, c_slice_align, T(0)); + } else { + __bang_mul_const(nram_ping, nram_ping, w1, c_slice_align); + __bang_mul_const(nram_ping + c_slice_align, + nram_ping + c_slice_align, w2, c_slice_align); + __bang_mul_const(nram_ping + 2 * c_slice_align, + nram_ping + 2 * c_slice_align, w3, c_slice_align); + __bang_mul_const(nram_ping + 3 * c_slice_align, + nram_ping + 3 * c_slice_align, w4, c_slice_align); + __bang_sumpool(tmp_sum, nram_ping, c_slice_align, 1, SAMPLING_NUM, + 1, SAMPLING_NUM, 1, 1); + } + __bang_add(nram_out, nram_out, tmp_sum, c_slice_align); + swap(nram_ping, nram_pong); + + __asm__ volatile("sync;"); + is_first_sample = false; + } + } + // store the result to dram + int output_offset = + ((roi_n * params.pooled_height + ph) * params.pooled_width + pw) * + channel + + c_offset; + __memcpy(output_dram + output_offset, nram_out, c_slice * sizeof(T), + NRAM2GDRAM); + } + } +} + +template +__mlu_func__ void roiAlignRotatedBackward(const T *top_grad_dram, + const T *rois_dram, const int batch, + const int height, const int width, + const int channel, const int rois_num, + const RoiAlignRotatedParams ¶ms, + T *bottom_grad_dram) { + int align_base_128 = NFU_ALIGN_SIZE / sizeof(T); + int channel_align = CEIL_ALIGN(channel, align_base_128); + + unsigned int max_element = MAX_NRAM_SIZE / sizeof(T); + int c_limit = max_element >> 2; + c_limit = c_limit > channel_align ? channel_align : c_limit; + + T *nram_ping = (T *)nram_buffer; + T *nram_pong = nram_ping + 2 * c_limit; + T *nram_output = nullptr; + + int bin_first = taskId; + int bin_end = rois_num * params.pooled_height * params.pooled_width; + bool is_first_bin = true; + T roi_center_x, roi_center_y, roi_width, roi_height, theta; + int batch_idx, roi_n, pw, ph; + T pong_roi_center_x, pong_roi_center_y, pong_roi_width, pong_roi_height, + pong_theta; + int pong_batch_idx, pong_roi_n, pong_pw, pong_ph; + for (int bin_i = bin_first; bin_i < bin_end; bin_i += taskDim) { + getRoiBinInfo(rois_dram, bin_i, params, &batch_idx, &roi_n, &pw, &ph, + &roi_center_x, &roi_center_y, &roi_width, &roi_height, + &theta); + T bin_size_h = roi_height / params.pooled_height; + T bin_size_w = roi_width / params.pooled_width; + + int roi_bin_grid_h = + (params.sample_ratio > 0) + ? params.sample_ratio + : __float2int_up((float)roi_height / params.pooled_height); + int roi_bin_grid_w = + (params.sample_ratio > 0) + ? params.sample_ratio + : __float2int_up((float)roi_width / params.pooled_width); + T roi_start_y = -roi_height / 2; + T roi_start_x = -roi_width / 2; + const int bin_dim = roi_bin_grid_h * roi_bin_grid_w > 1 + ? roi_bin_grid_h * roi_bin_grid_w + : 1; + T cos_theta = std::cos(theta); + T sin_theta = std::sin(theta); + T zero_sign = 1.0f / bin_dim; + + int c_rem, c_slice, pongc_slice, c_offset; + c_rem = channel; + c_offset = 0; + /**************************************** + | ping | pong | + |---------|---------|---------|---------| + | input | output | input | output | + |---------|---------|---------|---------| + *****************************************/ + if (is_first_bin) { + // load the first top_grad to nram + c_slice = c_limit < c_rem ? c_limit : c_rem; + int top_grad_offset = + ((roi_n * params.pooled_height + ph) * params.pooled_width + pw) * + channel; + __memcpy(nram_ping, top_grad_dram + top_grad_offset, c_slice * sizeof(T), + GDRAM2NRAM); + } + nram_output = nram_ping + c_limit; + while (c_rem > 0) { + c_slice = c_slice < c_rem ? c_slice : c_rem; + // load the next top_grad to nram + if (c_rem - c_slice > 0) { + // load the rest channels to nram + pongc_slice = (c_rem - c_slice > c_slice) ? c_slice : c_rem - c_slice; + int top_grad_offset = + ((roi_n * params.pooled_height + ph) * params.pooled_width + pw) * + channel + + c_offset + c_slice; + __memcpy_async(nram_pong, top_grad_dram + top_grad_offset, + pongc_slice * sizeof(T), GDRAM2NRAM); + } else if (bin_i + taskDim < bin_end) { + // load next bin's data to nram + getRoiBinInfo(rois_dram, bin_i + taskDim, params, &pong_batch_idx, + &pong_roi_n, &pong_pw, &pong_ph, &pong_roi_center_x, + &pong_roi_center_y, &pong_roi_width, &pong_roi_height, + &pong_theta); + pongc_slice = c_limit < channel ? c_limit : channel; + int top_grad_offset = ((pong_roi_n * params.pooled_height + pong_ph) * + params.pooled_width + + pong_pw) * + channel; + __memcpy_async(nram_pong, top_grad_dram + top_grad_offset, + c_slice * sizeof(T), GDRAM2NRAM); + } + // comput the output in a single bin + + for (int iy = 0; iy < roi_bin_grid_h; ++iy) { + const T yy = roi_start_y + ph * bin_size_h + + T(iy + 0.5) * bin_size_h / roi_bin_grid_h; + for (int ix = 0; ix < roi_bin_grid_w; ++ix) { + const T xx = roi_start_x + pw * bin_size_w + + T(ix + 0.5) * bin_size_w / roi_bin_grid_w; + T y = yy * cos_theta - xx * sin_theta + roi_center_y; + T x = yy * sin_theta + xx * cos_theta + roi_center_x; + T w1, w2, w3, w4; + bool empty = false; + int x_low, x_high, y_low, y_high; + bilinearInterpolate(height, width, x, y, zero_sign, &w1, &w2, &w3, + &w4, &x_low, &x_high, &y_low, &y_high, &empty); + if (empty) { + continue; + } else { + __bang_mul_const(nram_output, nram_ping, w1, c_limit); + __bang_atomic_add( + (T *)nram_output, + bottom_grad_dram + batch_idx * height * width * channel + + y_low * width * channel + x_low * channel + c_offset, + (T *)nram_output, c_slice); + __bang_mul_const(nram_output, nram_ping, w2, c_limit); + __bang_atomic_add( + (T *)nram_output, + bottom_grad_dram + batch_idx * height * width * channel + + y_low * width * channel + x_high * channel + c_offset, + (T *)nram_output, c_slice); + __bang_mul_const(nram_output, nram_ping, w3, c_limit); + __bang_atomic_add( + (T *)nram_output, + bottom_grad_dram + batch_idx * height * width * channel + + y_high * width * channel + x_low * channel + c_offset, + (T *)nram_output, c_slice); + __bang_mul_const(nram_output, nram_ping, w4, c_limit); + __bang_atomic_add( + (T *)nram_output, + bottom_grad_dram + batch_idx * height * width * channel + + y_high * width * channel + x_high * channel + c_offset, + (T *)nram_output, c_slice); + } + } + } + swap(nram_ping, nram_pong); + c_rem -= c_slice; + c_offset += c_slice; + __asm__ volatile("sync;"); + } + is_first_bin = false; + } +} + +__mlu_global__ void MLUUnion1KernelRoiAlignRotatedForward( + const void *features, const void *rois, void *output, const int batch, + const int height, const int width, const int channel, const int rois_num, + const RoiAlignRotatedParams rroiAlignParams, + const cnrtDataType_t data_type) { + if (0x80 == coreId) { + return; + } + + if (data_type == CNRT_FLOAT32) { + roiAlignRotatedForward((float *)features, (float *)rois, batch, height, + width, channel, rois_num, rroiAlignParams, + (float *)output); + } else { + roiAlignRotatedForward((half *)features, (half *)rois, batch, height, width, + channel, rois_num, rroiAlignParams, (half *)output); + } +} + +__mlu_global__ void MLUUnion1KernelRoiAlignRotatedBackward( + const void *top_grad, const void *rois, void *bottom_grad, const int batch, + const int height, const int width, const int channel, const int rois_num, + const RoiAlignRotatedParams rroiAlignParams, + const cnrtDataType_t data_type) { + if (0x80 == coreId) { + return; + } + + if (data_type == CNRT_FLOAT32) { + roiAlignRotatedBackward((float *)top_grad, (float *)rois, batch, height, + width, channel, rois_num, rroiAlignParams, + (float *)bottom_grad); + } else { + roiAlignRotatedBackward((half *)top_grad, (half *)rois, batch, height, + width, channel, rois_num, rroiAlignParams, + (half *)bottom_grad); + } +} + +void KernelRoiAlignRotatedForward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const cnrtDataType_t d_type, const void *features, const void *rois, + void *output, const int batch, const int height, const int width, + const int channel, const int rois_num, + const RoiAlignRotatedParams roiAlignRotatedParams) { + MLUUnion1KernelRoiAlignRotatedForward<<>>( + features, rois, output, batch, height, width, channel, rois_num, + roiAlignRotatedParams, d_type); +} + +void KernelRoiAlignRotatedBackward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const cnrtDataType_t d_type, const void *top_grad, const void *rois, + void *bottom_grad, const int batch, const int height, const int width, + const int channel, const int rois_num, + const RoiAlignRotatedParams roiAlignRotatedParams) { + MLUUnion1KernelRoiAlignRotatedBackward<<>>( + top_grad, rois, bottom_grad, batch, height, width, channel, rois_num, + roiAlignRotatedParams, d_type); +} diff --git a/mmcv/ops/csrc/common/mlu/roi_align_rotated_utils.hpp b/mmcv/ops/csrc/common/mlu/roi_align_rotated_utils.hpp new file mode 100644 index 0000000..cd0ec02 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/roi_align_rotated_utils.hpp @@ -0,0 +1,24 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#ifndef ROI_ALIGN_ROTATED_UTILS_HPP_ +#define ROI_ALIGN_ROTATED_UTILS_HPP_ + +struct RoiAlignRotatedParams { + int pooled_height; + int pooled_width; + int sample_ratio; + float spatial_scale; + bool aligned; + bool clockwise; +}; + +#endif // ROI_ALIGN_ROTATED_UTILS_HPP_ diff --git a/mmcv/ops/csrc/common/mlu/roi_pool_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/roi_pool_mlu_kernel.mlu new file mode 100644 index 0000000..7186cdf --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/roi_pool_mlu_kernel.mlu @@ -0,0 +1,749 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" + +#define ALIGN_SIZE 64 +#define PIPELINE_COMMON_NUM 2 +#define PIPELINE_PINGPONG_NUM 10 + +__nram__ char nram_buffer[MAX_NRAM_SIZE]; + +namespace forward { +template +__mlu_func__ void getRoiBinInfo(T *input_v, T *rois_v, int bin_i, int height, + int width, int channels, int p_height, + int p_width, T spatial_scale, int *bin_x1, + int *bin_y1, int *bin_x2, int *bin_y2, + int *bin_wdim, int *bin_hdim, int *bin_dims, + T **input_base, bool *is_empty) { + int pw = bin_i % p_width; + int ph = (bin_i / p_width) % p_height; + int roi_n = bin_i / p_width / p_height; + + /*roi*/ + const T *roi_info = rois_v + roi_n * 5; // {{batch, x1, y1, x2, y2},,,} + int batch_index = (int)roi_info[0]; + int roi_x1 = round(roi_info[1] * spatial_scale); + int roi_y1 = round(roi_info[2] * spatial_scale); + int roi_x2 = round(roi_info[3] * spatial_scale); + int roi_y2 = round(roi_info[4] * spatial_scale); + int roi_w = roi_x2 - roi_x1 + 1 > 1 ? roi_x2 - roi_x1 + 1 : 1; + int roi_h = roi_y2 - roi_y1 + 1 > 1 ? roi_y2 - roi_y1 + 1 : 1; + + /*bin*/ + T bin_w = (T)roi_w / (T)p_width; + T bin_h = (T)roi_h / (T)p_height; + + *bin_x1 = (int)floor((T)pw * bin_w) + roi_x1; + *bin_x1 = *bin_x1 > 0 ? *bin_x1 : 0; + *bin_x1 = *bin_x1 < width ? *bin_x1 : width; + + *bin_y1 = (int)floor((T)ph * bin_h) + roi_y1; + *bin_y1 = *bin_y1 > 0 ? *bin_y1 : 0; + *bin_y1 = *bin_y1 < height ? *bin_y1 : height; + + *bin_x2 = (int)ceil((T)(pw + 1) * bin_w) + roi_x1; + *bin_x2 = *bin_x2 > 0 ? *bin_x2 : 0; + *bin_x2 = *bin_x2 < width ? *bin_x2 : width; + + *bin_y2 = (int)ceil((T)(ph + 1) * bin_h) + roi_y1; + *bin_y2 = *bin_y2 > 0 ? *bin_y2 : 0; + *bin_y2 = *bin_y2 < height ? *bin_y2 : height; + + *input_base = input_v + batch_index * height * width * channels; + *bin_wdim = *bin_x2 - *bin_x1; + *bin_hdim = *bin_y2 - *bin_y1; + *bin_dims = (*bin_hdim) * (*bin_wdim); + *is_empty = (*bin_y2 <= *bin_y1) || (*bin_x2 <= *bin_x1); +} + +template +__mlu_func__ void MLUUnion1Roipool(T *input_v, T *rois_v, int batch, + int channels, int height, int width, + int p_height, int p_width, int rois_num, + T spatial_scale, T *output_v, int *argmax) { + /* + * NRAM partition + * |---------------------------------------------------| + * | ping | + * |---------------------------------------------------| + * | pong | + * |---------------------------------------------------| + * | out | + * |---------------------------------------------------| + * | argmax | + * |---------------------------------------------------| + * | a | + * |---------------------------------------------------| + * | b | + * |---------------------------------------------------| + */ + uint32_t is_half = sizeof(T) == sizeof(half) ? true : false; + uint32_t t_size = sizeof(T); + uint32_t float_div = NFU_ALIGN_SIZE / sizeof(float); + uint32_t half_div = NFU_ALIGN_SIZE / sizeof(half); + + uint32_t channels_align = PAD_UP(channels, float_div); + uint32_t nram_limit = PAD_DOWN( + (MAX_NRAM_SIZE / sizeof(float) - 4 * channels_align) / 2, half_div); + + // nram PING/PONG, output, argamx, a, b + float *nram_ping = (float *)nram_buffer; + float *nram_pong = (float *)nram_buffer + nram_limit; + float *nram_out = (float *)nram_buffer + 2 * nram_limit; + float *nram_argmax = nram_out + channels_align; + float *nram_a = nram_out + 2 * channels_align; + float *nram_b = nram_out + 3 * channels_align; + + uint32_t c_bins_num = rois_num * p_height * p_width; + uint32_t task_bins = c_bins_num / taskDim; + uint32_t rem_bins = c_bins_num % taskDim; + if (taskId < rem_bins) { + task_bins += 1; + } + int bin_first = + (c_bins_num / taskDim) * taskId + (taskId > rem_bins ? rem_bins : taskId); + int bins_loop = bin_first + task_bins; + + T *input_base = NULL; + T *output_base = output_v + bin_first * channels; + int *argmax_base = NULL != argmax ? argmax + bin_first * channels : NULL; + int bin_x1, bin_y1, bin_x2, bin_y2, bin_wdim, bin_hdim, bin_dims; + int pbin_x1, pbin_y1, pbin_x2, pbin_y2, pbin_wdim, pbin_hdim, pbin_dims; + bool is_empty = false; + bool pong_is_empty = false; + bool is_first_bin = true; + uint32_t src_offset = 0; + uint32_t dst_offset = 0; + uint32_t nram_offset = 0; + uint32_t half_offset = + is_half ? (nram_limit / 2 / half_div * half_div) * 2 : 0; + float *nram_tmp = NULL; + + uint32_t c_slice = 0; + uint32_t c_slice_align = 0; + uint32_t pongc_slice = 0; + uint32_t pongc_slice_align = 0; + for (int bin_i = bin_first; bin_i < bins_loop; bin_i++) { + getRoiBinInfo((T *)input_v, (T *)rois_v, bin_i, height, width, channels, + p_height, p_width, (T)spatial_scale, &bin_x1, &bin_y1, + &bin_x2, &bin_y2, &bin_wdim, &bin_hdim, &bin_dims, + &input_base, &is_empty); + uint32_t c_rem = channels; + c_slice = nram_limit / bin_dims / float_div * float_div; + + if (is_first_bin && !is_empty) { + c_slice = c_slice > c_rem ? c_rem : c_slice; + c_slice_align = PAD_UP(c_slice, float_div); + for (int h = bin_y1; h < bin_y2; h++) { + src_offset = (h * width + bin_x1) * channels; + nram_offset = (h - bin_y1) * bin_wdim * c_slice_align + half_offset; + if (c_slice_align == channels) { + __memcpy((T *)nram_ping + nram_offset, (T *)input_base + src_offset, + bin_wdim * c_slice * t_size, GDRAM2NRAM); + } else { + __memcpy((T *)nram_ping + nram_offset, (T *)input_base + src_offset, + c_slice * t_size, GDRAM2NRAM, c_slice_align * t_size, + channels * t_size, bin_wdim - 1); + } + } + } + uint32_t c_offset = 0; + while (c_rem > 0) { + c_slice = c_slice > c_rem ? c_rem : c_slice; + c_slice_align = PAD_UP(c_slice, float_div); + + /*__memcpy_async*/ + if (c_rem - c_slice > 0 && !is_empty) { + pongc_slice = c_rem - c_slice > c_slice ? c_slice : c_rem - c_slice; + pongc_slice_align = PAD_UP(pongc_slice, float_div); + for (int h = bin_y1; h < bin_y2; h++) { + src_offset = (h * width + bin_x1) * channels + c_offset; + nram_offset = + (h - bin_y1) * bin_wdim * pongc_slice_align + half_offset; + __memcpy_async((T *)nram_pong + nram_offset, + (T *)input_base + src_offset + c_slice, + pongc_slice * t_size, GDRAM2NRAM, + pongc_slice_align * t_size, channels * t_size, + bin_wdim - 1); + } + } else if (bin_i + 1 < bins_loop) { + getRoiBinInfo((T *)input_v, (T *)rois_v, bin_i + 1, height, width, + channels, p_height, p_width, (T)spatial_scale, &pbin_x1, + &pbin_y1, &pbin_x2, &pbin_y2, &pbin_wdim, &pbin_hdim, + &pbin_dims, &input_base, &pong_is_empty); + pongc_slice = PAD_DOWN(nram_limit / pbin_dims, float_div); + pongc_slice = pongc_slice > channels ? channels : pongc_slice; + pongc_slice_align = PAD_UP(pongc_slice, float_div); + if (!pong_is_empty) { + for (int h = pbin_y1; h < pbin_y2; h++) { + src_offset = (h * width + pbin_x1) * channels; + nram_offset = + (h - pbin_y1) * pbin_wdim * pongc_slice_align + half_offset; + if (pongc_slice_align == channels) { + __memcpy_async((T *)nram_pong + nram_offset, + (T *)input_base + src_offset, + pbin_wdim * pongc_slice * t_size, GDRAM2NRAM); + } else { + __memcpy_async((T *)nram_pong + nram_offset, + (T *)input_base + src_offset, pongc_slice * t_size, + GDRAM2NRAM, pongc_slice_align * t_size, + channels * t_size, pbin_wdim - 1); + } + } + } + } + + if (is_empty) { + __nramset((T *)nram_out, c_slice_align, (T)0); + __memcpy((T *)output_base + dst_offset + c_offset, (T *)nram_out, + c_slice * t_size, NRAM2GDRAM); + if (NULL != argmax) { + __nramset((int32_t *)nram_out, c_slice_align, (int32_t)(-1)); + __memcpy((int32_t *)argmax_base + dst_offset + c_offset, + (int32_t *)nram_out, c_slice * sizeof(int32_t), NRAM2GDRAM); + } + } else { + if (is_half) { + uint32_t bin_align64 = PAD_UP(bin_dims * c_slice_align, half_div); + __bang_half2float((float *)nram_ping, (half *)nram_ping + half_offset, + bin_align64); + } + __bang_maxpool((float *)nram_out, (float *)nram_ping, c_slice_align, + bin_hdim, bin_wdim, bin_hdim, bin_wdim, 1, 1); + if (is_half) { + uint32_t c_align64 = PAD_UP(c_slice_align, half_div); + __bang_float2half_rd((half *)nram_out, (float *)nram_out, c_align64); + } + __memcpy((T *)output_base + dst_offset + c_offset, (T *)nram_out, + c_slice * t_size, NRAM2GDRAM); + if (NULL != argmax) { + /*compute max_index*/ + __bang_maxpool_index((uint32_t *)nram_out, (float *)nram_ping, + c_slice_align, bin_hdim, bin_wdim, bin_hdim, + bin_wdim, 1, 1); + convertInt2Float((float *)nram_argmax, (float *)nram_a, + (int32_t *)nram_out, (float *)nram_b, c_slice_align); + + /*compute input_h*/ + for (int i = 0; i < c_slice; i++) { + nram_out[i] = (float)(((uint32_t *)nram_out)[i] / bin_wdim); + } + __bang_add_const((float *)nram_a, (float *)nram_out, (float)bin_y1, + c_slice_align); + __bang_mul_const((float *)nram_ping, (float *)nram_a, (float)width, + c_slice_align); + + /*compute input_w*/ + __bang_mul_const((float *)nram_a, (float *)nram_out, (float)bin_wdim, + c_slice_align); + __bang_sub((float *)nram_a, (float *)nram_argmax, (float *)nram_a, + c_slice_align); + __bang_add_const((float *)nram_a, (float *)nram_a, (float)bin_x1, + c_slice_align); + __bang_add((float *)nram_out, (float *)nram_ping, (float *)nram_a, + c_slice_align); + convertFloat2Int((int32_t *)nram_argmax, (float *)nram_a, + (float *)nram_out, (float *)nram_b, c_slice_align); + __memcpy((int32_t *)argmax_base + dst_offset + c_offset, + (int32_t *)nram_argmax, c_slice * sizeof(int32_t), + NRAM2GDRAM); + } + } + nram_tmp = nram_ping; + nram_ping = nram_pong; + nram_pong = nram_tmp; + c_offset += c_slice; + c_rem -= c_slice; + __asm__ volatile("sync;"); + } + dst_offset += channels; + is_first_bin = false; + } +} + +__mlu_global__ void MLUKernelRoiPool(cnrtDataType_t data_type, + const void *input_data, + const void *input_rois, int batch, + int channels, int height, int width, + int pooled_height, int pooled_width, + int rois_num, float spatial_scale, + void *output_data, int *argmax) { + switch (data_type) { + case CNRT_FLOAT16: { + MLUUnion1Roipool((half *)input_data, (half *)input_rois, batch, channels, + height, width, pooled_height, pooled_width, rois_num, + (half)spatial_scale, (half *)output_data, argmax); + }; break; + case CNRT_FLOAT32: { + MLUUnion1Roipool((float *)input_data, (float *)input_rois, batch, + channels, height, width, pooled_height, pooled_width, + rois_num, (float)spatial_scale, (float *)output_data, + argmax); + }; break; + default: { + break; + } + } +} +} // namespace forward + +namespace backward { +// Convert index of argmax from global grads_image to local bin in RoI. Vector +// operations do not support int type, so conversion from int to float is +// performed here. +__mlu_func__ void convertIndex( + int32_t *nram_argmax, int32_t *nram_argmax_fp, int32_t *nram_argmax_fp_bk1, + int32_t *nram_argmax_fp_bk2, int32_t *nram_argmax_int, + int32_t *nram_argmax_int_h, int32_t *nram_argmax_int_w, + int32_t *nram_argmax_fp_h, int32_t *nram_argmax_fp_w, + float *nram_atomic_add, float *nram_grads_image, int width, int height, + int wstart, int hstart, int w_compute, int h_compute, int align_c, + int channels, int loop_flag, int loop_id, int true_limit) { + convertInt2Float((float *)nram_argmax_fp, (float *)nram_argmax_fp_bk1, + (int *)nram_argmax, (float *)nram_argmax_fp_bk2, align_c); + + // This step uses scalar division, because the above vector division causes + // rounding accuracy problem. + for (int i = 0; i < channels; ++i) { + *((float *)nram_argmax_fp + i) = *((float *)nram_argmax_fp + i) / width; + } + + // Use 'float2int_tz' to perform '*((int32_t*)nram_argmax + i) / width' + // operation. + convertFloat2Int((int *)nram_argmax_int_h, (float *)nram_argmax_fp_bk1, + (float *)nram_argmax_fp, (float *)nram_argmax_fp_bk2, + align_c); + convertInt2Float((float *)nram_argmax_fp, (float *)nram_argmax_fp_bk1, + (int *)nram_argmax_int_h, (float *)nram_argmax_fp_bk2, + align_c); + + // Perform 'temp_result - hstart' operation + __bang_sub_const((float *)nram_argmax_fp_h, (float *)nram_argmax_fp, hstart, + align_c); + + // Perform 'temp_result1 - temp_result2 * width' operation + __bang_mul_const((float *)nram_argmax_fp_w, (float *)nram_argmax_fp, width, + align_c); + convertInt2Float((float *)nram_argmax_fp, (float *)nram_argmax_fp_bk1, + (int *)nram_argmax, (float *)nram_argmax_fp_bk2, align_c); + __bang_sub((float *)nram_argmax_fp_w, (float *)nram_argmax_fp, + (float *)nram_argmax_fp_w, align_c); + + // Perform 'temp_result - wstart' operation + __bang_sub_const((float *)nram_argmax_fp_w, (float *)nram_argmax_fp_w, wstart, + align_c); + + // Perform 'temp_result = h * w_compute + w' operation + __bang_mul_const((float *)nram_argmax_fp_h, (float *)nram_argmax_fp_h, + w_compute, align_c); + __bang_add((float *)nram_argmax_fp_h, (float *)nram_argmax_fp_h, + (float *)nram_argmax_fp_w, align_c); + + if (loop_flag == 1) { + __bang_sub_const((float *)nram_argmax_fp_h, (float *)nram_argmax_fp_h, + (loop_id * true_limit), align_c); + } + convertFloat2Int((int *)nram_argmax_int, (float *)nram_argmax_fp_bk1, + (float *)nram_argmax_fp_h, (float *)nram_argmax_fp_bk2, + align_c); +} + +template +__mlu_func__ void MLUUnion1Roipool(const T *rois, const T *grads, + const int32_t *argmax, T *grads_image, + int channels, int height, int width, + int pooled_height, int pooled_width, + int rois_num, const T spatial_scale, + int high_precision) { + // Calculate the number of rois processed by each core + int bin_num = rois_num * pooled_height * pooled_width; + int loop = + (bin_num % taskDim) ? (bin_num / taskDim + 1) : (bin_num / taskDim); + int tid = taskId * loop; + if (bin_num % taskDim != 0) { + if (tid >= bin_num) { + return; + } else { + // last part is (bin_num - tid). + loop = bin_num - tid < loop ? bin_num - tid : loop; + } + } + int align_c = PAD_UP(channels, ALIGN_SIZE); + // Common part has 2: grads, argmax; ping-pong each is PIPELINE_PINGPONG_NUM. + int data_size = + PAD_DOWN(((MAX_NRAM_SIZE / sizeof(float) - PIPELINE_COMMON_NUM * align_c - + (PIPELINE_PINGPONG_NUM - 1) * align_c * 2) / + 2), + ALIGN_SIZE); + int hw_limit = data_size / align_c; + float *nram_grads = (float *)nram_buffer; + for (int idx = tid; idx < tid + loop; ++idx) { + // (n, ph, pw) is a C in the pooled output + int pw = idx % pooled_width; + int ph = (idx / pooled_width) % pooled_height; + int n = idx / pooled_width / pooled_height; + + const T *offset_rois = (const T *)(rois + n * 5); + int roi_batch_ind = int(offset_rois[0]); + // Calculate the roi region on feature maps + int roi_start_w = round(offset_rois[1] * spatial_scale); + int roi_start_h = round(offset_rois[2] * spatial_scale); + int roi_end_w = round(offset_rois[3] * spatial_scale); + int roi_end_h = round(offset_rois[4] * spatial_scale); + // Force malformed rois to 1x1 + int roi_width = + roi_end_w - roi_start_w + 1 > 1 ? roi_end_w - roi_start_w + 1 : 1; + int roi_height = + roi_end_h - roi_start_h + 1 > 1 ? roi_end_h - roi_start_h + 1 : 1; + T bin_size_h = (T)roi_height / (T)pooled_height; + T bin_size_w = (T)roi_width / (T)pooled_width; + + // The corresponding bin region + int hstart = int(floor((T)ph * bin_size_h)); + int wstart = int(floor((T)pw * bin_size_w)); + int hend = int(ceil((T)(ph + 1) * bin_size_h)); + int wend = int(ceil((T)(pw + 1) * bin_size_w)); + + // Add roi offsets and clip to input boundaries, min(max(A, B), C); + hstart = hstart + roi_start_h > 0 ? hstart + roi_start_h : 0; + hstart = hstart < height ? hstart : height; + hend = hend + roi_start_h > 0 ? hend + roi_start_h : 0; + hend = hend < height ? hend : height; + wstart = wstart + roi_start_w > 0 ? wstart + roi_start_w : 0; + wstart = wstart < width ? wstart : width; + wend = wend + roi_start_w > 0 ? wend + roi_start_w : 0; + wend = wend < width ? wend : width; + + bool is_empty = (hend <= hstart) || (wend <= wstart); + if (!is_empty) { + int h_compute = hend - hstart; + int w_compute = wend - wstart; + int true_limit = + hw_limit < h_compute * w_compute ? hw_limit : h_compute * w_compute; + int loop_int = (h_compute * w_compute) / true_limit; + int rem = (h_compute * w_compute) % true_limit; + int32_t *nram_argmax = (int32_t *)nram_grads + align_c; + int32_t *nram_argmax_fp = (int32_t *)nram_argmax + align_c; + int32_t *nram_argmax_fp_bk1 = (int32_t *)nram_argmax_fp + align_c; + int32_t *nram_argmax_fp_bk2 = (int32_t *)nram_argmax_fp_bk1 + align_c; + int32_t *nram_argmax_int = (int32_t *)nram_argmax_fp_bk2 + align_c; + int32_t *nram_argmax_int_h = (int32_t *)nram_argmax_int + align_c; + int32_t *nram_argmax_int_w = (int32_t *)nram_argmax_int_h + align_c; + int32_t *nram_argmax_fp_h = (int32_t *)nram_argmax_int_w + align_c; + int32_t *nram_argmax_fp_w = (int32_t *)nram_argmax_fp_h + align_c; + float *nram_atomic_add = (float *)nram_argmax_fp_w + align_c; + float *nram_grads_image = (float *)nram_atomic_add + align_c; + if (true_limit == h_compute * w_compute) { + /* + * NRAM partition + * |---------------------------------------------------| + * | grads | + * |---------------------------------------------------| + * | argmax | + * |---------------------------------------------------| + * | argmax_temp | + * |---------------------------------------------------| + * | atomic_add | + * |---------------------------------------------------| + * | grads_image | + * |---------------------------------------------------| + */ + + // Load the data from GDRAM to NRAM. + __memcpy((T *)nram_grads + align_c * high_precision, + (const T *)grads + (n * pooled_height * pooled_width + + ph * pooled_width + pw) * + channels, + channels * sizeof(T), GDRAM2NRAM); + if (high_precision) { + __bang_half2float((float *)nram_grads, + (half *)nram_grads + align_c * high_precision, + align_c); + } + + __memcpy((int32_t *)nram_argmax, + (const int32_t *)argmax + (n * pooled_height * pooled_width + + ph * pooled_width + pw) * + channels, + channels * sizeof(int32_t), GDRAM2NRAM); + + // Perform pooling operation on NRAM. + convertIndex(nram_argmax, nram_argmax_fp, nram_argmax_fp_bk1, + nram_argmax_fp_bk2, nram_argmax_int, nram_argmax_int_h, + nram_argmax_int_w, nram_argmax_fp_h, nram_argmax_fp_w, + nram_atomic_add, nram_grads_image, width, height, wstart, + hstart, w_compute, h_compute, align_c, channels, 0, 0, 0); + __bang_maxpool_bp((float *)nram_grads_image, (float *)nram_grads, + (int32_t *)nram_argmax_int, align_c, h_compute, + w_compute, h_compute, w_compute, h_compute, + w_compute); + if (high_precision) { + __bang_float2half_rd((half *)nram_grads_image, + (float *)nram_grads_image, + h_compute * w_compute * align_c); + } + + // Store the result on NRAM back to GDRAM. + for (int hc = 0; hc < h_compute; ++hc) { + for (int wc = 0; wc < w_compute; ++wc) { + T *dst = (T *)nram_atomic_add; + int grad_image_offset = (roi_batch_ind * height * width + + (hc + hstart) * width + wc + wstart) * + channels; + T *src1 = (T *)grads_image + grad_image_offset; + int nram_grads_image_offset = (hc * w_compute + wc) * align_c; + T *src2 = (T *)nram_grads_image + nram_grads_image_offset; + __bang_atomic_add(dst, src1, src2, channels); + } + } + } else if (true_limit > 0) { + /* + * NRAM partition + * |---------------------------------------------------| + * | grads | + * |---------------------------------------------------| + * | argmax | + * |--------------------ping_pong----------------------| + * | argmax_temp | argmax_temp | + * |------------------------|--------------------------| + * | atomic_add | atomic_add | + * |------------------------|--------------------------| + * | grads_image | grads_image | + * |---------------------------------------------------| + */ + + // Load the data from GDRAM to NRAM. + __memcpy((T *)nram_grads + align_c * high_precision, + (const T *)grads + (n * pooled_height * pooled_width + + ph * pooled_width + pw) * + channels, + channels * sizeof(T), GDRAM2NRAM); + if (high_precision) { + __bang_half2float((float *)nram_grads, + (half *)nram_grads + align_c * high_precision, + align_c); + } + __memcpy((int32_t *)nram_argmax, + (const int32_t *)argmax + (n * pooled_height * pooled_width + + ph * pooled_width + pw) * + channels, + channels * sizeof(int32_t), GDRAM2NRAM); + + int ping_pong = 0; + int ping_pong_offset = + (MAX_NRAM_SIZE / sizeof(float) - align_c * PIPELINE_COMMON_NUM) / 2; + for (int loop_id = 0; loop_id <= loop_int; ++loop_id) { + int size = (loop_id == loop_int) ? rem : true_limit; + if (size == 0) { + break; + } + // Perform pooling operation on NRAM. + nram_argmax_fp = + (int32_t *)nram_argmax + align_c + ping_pong * ping_pong_offset; + nram_argmax_fp_bk1 = (int32_t *)nram_argmax_fp + align_c; + nram_argmax_fp_bk2 = (int32_t *)nram_argmax_fp_bk1 + align_c; + nram_argmax_int = (int32_t *)nram_argmax_fp_bk2 + align_c; + nram_argmax_int_h = (int32_t *)nram_argmax_int + align_c; + nram_argmax_int_w = (int32_t *)nram_argmax_int_h + align_c; + nram_argmax_fp_h = (int32_t *)nram_argmax_int_w + align_c; + nram_argmax_fp_w = (int32_t *)nram_argmax_fp_h + align_c; + nram_atomic_add = (float *)nram_argmax_fp_w + align_c; + nram_grads_image = (float *)nram_atomic_add + align_c; + int loop_id_1 = loop_id; + int size_1 = ((loop_id_1) == loop_int) ? rem : true_limit; + if (size_1 == 0) { + break; + } + convertIndex(nram_argmax, nram_argmax_fp, nram_argmax_fp_bk1, + nram_argmax_fp_bk2, nram_argmax_int, nram_argmax_int_h, + nram_argmax_int_w, nram_argmax_fp_h, nram_argmax_fp_w, + nram_atomic_add, nram_grads_image, width, height, wstart, + hstart, w_compute, h_compute, align_c, channels, 1, + loop_id_1, true_limit); + __bang_maxpool_bp((float *)nram_grads_image, (float *)nram_grads, + (int32_t *)nram_argmax_int, align_c, size_1, 1, + size_1, 1, size_1, 1); + if (high_precision) { + __bang_float2half_rd((half *)nram_grads_image, + (float *)nram_grads_image, size_1 * align_c); + } + + // Store the result on NRAM back to GDRAM. + for (int index_size = 0; index_size < size; ++index_size) { + int h = (loop_id * true_limit + index_size) / w_compute; + int w = (loop_id * true_limit + index_size) % w_compute; + T *dst = (T *)nram_atomic_add; + T *grads_image_n = + (T *)grads_image + roi_batch_ind * height * width * channels; + T *src1 = (T *)grads_image_n + + ((h + hstart) * width + (w + wstart)) * channels; + T *src2 = (T *)nram_grads_image + index_size * align_c; + __bang_atomic_add(dst, src1, src2, channels); + } + ping_pong = 1 - ping_pong; + } + } else { + /* + * NRAM partition + * |---------------------------------------------------| + * | grads | + * |---------------------------------------------------| + * | argmax | + * |--------------------ping_pong----------------------| + * | argmax_temp | argmax_temp | + * |------------------------|--------------------------| + * | atomic_add | atomic_add | + * |------------------------|--------------------------| + * | grads_image | grads_image | + * |---------------------------------------------------| + */ + + int c_limit = + PAD_DOWN(MAX_NRAM_SIZE / sizeof(float) / + (PIPELINE_COMMON_NUM + PIPELINE_PINGPONG_NUM * 2), + ALIGN_SIZE); + int loop_int = channels / c_limit; + int rem = channels % c_limit; + int ping_pong = 0; + int ping_pong_offset = + (MAX_NRAM_SIZE / sizeof(float) - c_limit * PIPELINE_COMMON_NUM) / 2; + for (int loop_id = 0; loop_id <= loop_int; ++loop_id) { + int size = (loop_id == loop_int) ? rem : c_limit; + if (size == 0) { + break; + } + nram_argmax_fp = + (int32_t *)nram_argmax + c_limit + ping_pong * ping_pong_offset; + nram_argmax_fp_bk1 = (int32_t *)nram_argmax_fp + c_limit; + nram_argmax_fp_bk2 = (int32_t *)nram_argmax_fp_bk1 + c_limit; + nram_argmax_int = (int32_t *)nram_argmax_fp_bk2 + c_limit; + nram_argmax_int_h = (int32_t *)nram_argmax_int + c_limit; + nram_argmax_int_w = (int32_t *)nram_argmax_int_h + c_limit; + nram_argmax_fp_h = (int32_t *)nram_argmax_int_w + c_limit; + nram_argmax_fp_w = (int32_t *)nram_argmax_fp_h + c_limit; + nram_atomic_add = (float *)nram_argmax_fp_w + c_limit; + nram_grads_image = (float *)nram_atomic_add + c_limit; + + // This pipeline loads the data from GDRAM to NRAM. + __memcpy((T *)nram_grads + c_limit * high_precision, + (const T *)grads + + n * pooled_height * pooled_width * channels + + ph * pooled_width * channels + pw * channels + + loop_id * c_limit, + size * sizeof(T), GDRAM2NRAM); + if (high_precision) { + __bang_half2float((float *)nram_grads, + (half *)nram_grads + c_limit * high_precision, + c_limit); + } + __memcpy((int32_t *)nram_argmax, + (const int32_t *)argmax + + n * pooled_height * pooled_width * channels + + ph * pooled_width * channels + pw * channels + + loop_id * c_limit, + size * sizeof(int32_t), GDRAM2NRAM); + + for (int hc = 0; hc < h_compute; ++hc) { + for (int wc = 0; wc < w_compute; ++wc) { + // This pipeline performs pooling operation on NRAM. + convertIndex( + nram_argmax, nram_argmax_fp, nram_argmax_fp_bk1, + nram_argmax_fp_bk2, nram_argmax_int, nram_argmax_int_h, + nram_argmax_int_w, nram_argmax_fp_h, nram_argmax_fp_w, + nram_atomic_add, nram_grads_image, width, height, wstart + wc, + hstart + hc, h_compute, w_compute, c_limit, size, 0, 0, 0); + __bang_maxpool_bp((float *)nram_grads_image, (float *)nram_grads, + (int32_t *)nram_argmax_int, c_limit, 1, 1, 1, 1, + 1, 1); + if (high_precision) { + __bang_float2half_rd((half *)nram_grads_image, + (float *)nram_grads_image, c_limit); + } + // This pipeline stores the result on NRAM back to GDRAM. + T *dst = (T *)nram_atomic_add; + T *grads_image_n = + (T *)grads_image + roi_batch_ind * height * width * channels; + T *src1 = (T *)grads_image_n + + ((hc + hstart) * width + (wc + wstart)) * channels + + loop_id * c_limit; + T *src2 = (T *)nram_grads_image; + __bang_atomic_add(dst, src1, src2, size); + } + } + ping_pong = 1 - ping_pong; + } + } + } + } +} + +__mlu_global__ void MLUKernelRoiPoolBackward( + const void *grads, const void *rois, const int *argmax, void *grads_image, + int rois_num, int pooled_height, int pooled_width, int channels, int no, + int height, int width, const float spatial_scale, + const cnrtDataType_t k_dtype) { + // make sure that memcore is not used + if (coreId == 0x80) { + return; + } + switch (k_dtype) { + case CNRT_FLOAT16: { + // Using the float type '__bang_max_pool_bp' instruction to increase the + // bit width. + const int high_precision = 1; + MLUUnion1Roipool((const half *)rois, (const half *)grads, + (const int32_t *)argmax, (half *)grads_image, channels, + height, width, pooled_height, pooled_width, rois_num, + (const half)spatial_scale, high_precision); + }; break; + case CNRT_FLOAT32: { + const int high_precision = 0; + MLUUnion1Roipool((const float *)rois, (const float *)grads, + (const int32_t *)argmax, (float *)grads_image, channels, + height, width, pooled_height, pooled_width, rois_num, + (const float)spatial_scale, high_precision); + }; break; + default: { + break; + } + } +} +} // namespace backward + +void KernelRoiPoolForward(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, cnrtDataType_t data_type, + const void *input_data, const void *input_rois, + const int batch, const int channels, const int height, + const int width, const int pooled_height, + const int pooled_width, const int rois_num, + const float spatial_scale, void *output_data, + int *argmax) { + forward::MLUKernelRoiPool<<>>( + data_type, input_data, input_rois, batch, channels, height, width, + pooled_height, pooled_width, rois_num, spatial_scale, output_data, + argmax); +} + +void KernelRoiPoolBackward(cnrtDim3_t k_dim, cnrtFunctionType_t k_type, + cnrtQueue_t queue, cnrtDataType_t k_dtype, + const void *grad_output_ptr, const void *rois_ptr, + const int *argmax_ptr, void *grad_input_ptr, + const int box_num, const int pooled_height, + const int pooled_width, const int channels, + const int batch, const int height, const int width, + const float spatial_scale) { + backward::MLUKernelRoiPoolBackward<<>>( + grad_output_ptr, rois_ptr, argmax_ptr, grad_input_ptr, box_num, + pooled_height, pooled_width, channels, batch, height, width, + spatial_scale, k_dtype); +} diff --git a/mmcv/ops/csrc/common/mlu/tin_shift_mlu_kernel.mlu b/mmcv/ops/csrc/common/mlu/tin_shift_mlu_kernel.mlu new file mode 100644 index 0000000..7cb6df0 --- /dev/null +++ b/mmcv/ops/csrc/common/mlu/tin_shift_mlu_kernel.mlu @@ -0,0 +1,307 @@ +/************************************************************************* + * Copyright (C) 2022 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#include "common_mlu_helper.hpp" + +__nram__ char data_nram[MAX_NRAM_SIZE]; + +template +__mlu_func__ void mluMultiKernelTinShift( + const T *input, const int *shifts, T *output, const int batch_size, + const int time_size, const int channel_size, const int hw_size, + const int group_size, const int group_channel) { + for (int cur_channel_index = taskId; + cur_channel_index < batch_size * channel_size; + cur_channel_index += taskDim) { + int n_index = cur_channel_index / channel_size; + int group_id = cur_channel_index % channel_size / group_channel; + int t_shift = shifts[n_index * group_size + group_id]; + int index = cur_channel_index % channel_size * hw_size + + n_index * time_size * channel_size * hw_size; + __nramset(data_nram, MAX_NRAM_SIZE, (char)0); + __asm__ volatile("sync;"); + if (abs(t_shift) >= time_size) { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + time_size - 1); + } else { + if (t_shift > 0) { + __memcpy(data_nram + t_shift * hw_size * sizeof(T), input + index, + hw_size * sizeof(T), GDRAM2NRAM, hw_size * sizeof(T), + channel_size * hw_size * sizeof(T), time_size - 1 - t_shift); + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + time_size - 1); + } else { + __memcpy(data_nram, input + (index - t_shift * channel_size * hw_size), + hw_size * sizeof(T), GDRAM2NRAM, hw_size * sizeof(T), + channel_size * hw_size * sizeof(T), time_size - 1 + t_shift); + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + time_size - 1); + } + } + __asm__ volatile("sync;"); + } +} + +template +__mlu_func__ void mluHwSplit(const T *input, const int t_shift, + const int time_size, const int hw_size, + const int channel_size, const int index, + const int cur_sequence_index, + const int max_length_per_core, T *output) { + for (int cur_index = index; cur_index < index + hw_size; + cur_index += max_length_per_core) { + int memcpy_size = max_length_per_core; + if (cur_index + max_length_per_core > index + hw_size) { + memcpy_size = index + hw_size - cur_index; + } + if (cur_sequence_index - t_shift < 0 || + cur_sequence_index - t_shift >= time_size) { + __memcpy(output + cur_index, data_nram, memcpy_size * sizeof(T), + NRAM2GDRAM); + } else { + __memcpy(data_nram, input + cur_index - t_shift * channel_size * hw_size, + memcpy_size * sizeof(T), GDRAM2NRAM); + __memcpy(output + cur_index, data_nram, memcpy_size * sizeof(T), + NRAM2GDRAM); + } + __asm__ volatile("sync;"); + } +} + +template +__mlu_func__ void mluMultiKernelTinShiftSplitSequence( + const T *input, const int *shifts, T *output, const int batch_size, + const int time_size, const int channel_size, const int hw_size, + const int group_size, const int group_channel, + const int max_number_hw_per_core, const int max_length_per_core) { + const int tmp_max_number_hw_per_core = + max_number_hw_per_core > 0 ? max_number_hw_per_core : 1; + const int loop_time = time_size / tmp_max_number_hw_per_core + + ((time_size % tmp_max_number_hw_per_core) > 0 ? 1 : 0); + int segmentime_size = tmp_max_number_hw_per_core; + int res_segment = time_size % tmp_max_number_hw_per_core; + + for (int cur_segment_index = taskId; + cur_segment_index < loop_time * batch_size * channel_size; + cur_segment_index += taskDim) { + int n_index = cur_segment_index / loop_time / channel_size; + int group_id = cur_segment_index / loop_time % channel_size / group_channel; + int t_shift = shifts[n_index * group_size + group_id]; + int index = n_index * time_size * channel_size * hw_size + + (cur_segment_index / loop_time % channel_size) * hw_size + + cur_segment_index % loop_time * segmentime_size * hw_size * + channel_size; + char *dst_gdram2nram = data_nram; + const T *src_gdram2nram = input + index; + int count_gdram2nram = -1; + int count_nram2gdram = -1; + int next_sequence_index = + index / hw_size / channel_size % time_size + segmentime_size; + int cur_sequence_index = index / hw_size / channel_size % time_size; + __nramset(data_nram, MAX_NRAM_SIZE, (char)0); + __asm__ volatile("sync;"); + if (max_number_hw_per_core == 0) { + mluHwSplit(input, t_shift, time_size, hw_size, channel_size, index, + cur_sequence_index, max_length_per_core, output); + continue; + } + if (abs(t_shift) >= time_size) { + if ((cur_segment_index + 1) % loop_time == 0 && res_segment != 0) { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + res_segment - 1); + } else { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + segmentime_size - 1); + } + continue; + } + if (t_shift == 0) { + if ((cur_segment_index + 1) % loop_time == 0 && res_segment != 0) { + dst_gdram2nram = data_nram; + src_gdram2nram = input + index; + count_gdram2nram = res_segment - 1; + count_nram2gdram = res_segment - 1; + } else { + dst_gdram2nram = data_nram; + src_gdram2nram = input + index; + count_gdram2nram = segmentime_size - 1; + count_nram2gdram = segmentime_size - 1; + } + } else if (t_shift > 0) { + int first_index_cur_channel = + n_index * time_size * channel_size * hw_size + + (cur_segment_index / loop_time % channel_size) * hw_size; + if ((cur_segment_index + 1) % loop_time == 0 && res_segment != 0) { + dst_gdram2nram = data_nram; + src_gdram2nram = + input + + (index - t_shift * channel_size * hw_size < first_index_cur_channel + ? first_index_cur_channel + : index - t_shift * channel_size * hw_size); + count_gdram2nram = res_segment - 1; + count_nram2gdram = res_segment - 1; + if (cur_sequence_index < t_shift && t_shift < next_sequence_index) { + dst_gdram2nram = + data_nram + t_shift % segmentime_size * hw_size * sizeof(T); + count_gdram2nram = res_segment - (t_shift - cur_sequence_index) - 1; + } + } else { + if (t_shift >= next_sequence_index) { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + segmentime_size - 1); + continue; + } else if (cur_sequence_index < t_shift && + t_shift < next_sequence_index) { + dst_gdram2nram = + data_nram + t_shift % segmentime_size * hw_size * sizeof(T); + src_gdram2nram = input + first_index_cur_channel; + count_gdram2nram = segmentime_size - (t_shift % segmentime_size) - 1; + count_nram2gdram = segmentime_size - 1; + } else { + dst_gdram2nram = data_nram; + src_gdram2nram = input + index - t_shift * channel_size * hw_size; + count_gdram2nram = segmentime_size - 1; + count_nram2gdram = segmentime_size - 1; + } + } + } else { + int offset_index = time_size + t_shift; + if (cur_sequence_index >= offset_index) { + if ((cur_segment_index + 1) % loop_time == 0 && res_segment != 0) { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + res_segment - 1); + continue; + } else { + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + segmentime_size - 1); + continue; + } + } else { + dst_gdram2nram = data_nram; + src_gdram2nram = input + index - t_shift * channel_size * hw_size; + if (cur_sequence_index - t_shift + segmentime_size < time_size) { + count_gdram2nram = segmentime_size - 1; + count_nram2gdram = segmentime_size - 1; + } else { + count_gdram2nram = time_size - (cur_sequence_index - t_shift) - 1; + count_nram2gdram = + (segmentime_size - 1) < (time_size - cur_sequence_index - 1) + ? (segmentime_size - 1) + : (time_size - cur_sequence_index - 1); + } + } + } + __memcpy(dst_gdram2nram, src_gdram2nram, hw_size * sizeof(T), GDRAM2NRAM, + hw_size * sizeof(T), channel_size * hw_size * sizeof(T), + count_gdram2nram); + __memcpy(output + index, data_nram, hw_size * sizeof(T), NRAM2GDRAM, + channel_size * hw_size * sizeof(T), hw_size * sizeof(T), + count_nram2gdram); + __asm__ volatile("sync;"); + } +} + +__mlu_entry__ void MLUUnion1KernelTinShift( + const void *input, const void *shifts, void *output, const int batch_size, + const int time_size, const int channel_size, const int hw_size, + const int group_size, const int group_channel, + const cnrtDataType_t data_dtype) { + // make sure that memcore is not used + if (coreId == 0x80) { + return; + } + switch (data_dtype) { + case CNRT_FLOAT16: { + mluMultiKernelTinShift((half *)input, (const int *)shifts, (half *)output, + batch_size, time_size, channel_size, hw_size, + group_size, group_channel); + }; break; + case CNRT_FLOAT32: { + mluMultiKernelTinShift((float *)input, (const int *)shifts, + (float *)output, batch_size, time_size, + channel_size, hw_size, group_size, group_channel); + }; break; + default: { return; } + } +} + +__mlu_entry__ void MLUUnion1KernelTinShiftSplitSequence( + const void *input, const void *shifts, void *output, const int batch_size, + const int time_size, const int channel_size, const int hw_size, + const int group_size, const int group_channel, + const int max_number_hw_per_core, const int max_length_per_core, + const cnrtDataType_t data_dtype) { + // make sure that memcore is not used + if (coreId == 0x80) { + return; + } + switch (data_dtype) { + case CNRT_FLOAT16: { + mluMultiKernelTinShiftSplitSequence( + (half *)input, (const int *)shifts, (half *)output, batch_size, + time_size, channel_size, hw_size, group_size, group_channel, + max_number_hw_per_core, max_length_per_core); + }; break; + case CNRT_FLOAT32: { + mluMultiKernelTinShiftSplitSequence( + (float *)input, (const int *)shifts, (float *)output, batch_size, + time_size, channel_size, hw_size, group_size, group_channel, + max_number_hw_per_core, max_length_per_core); + }; break; + default: { return; } + } +} + +void KernelTinShiftForward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const void *input, const void *shifts, void *output, const int batch_size, + const int time_size, const int channel_size, const int hw_size, + const int group_size, const int group_channel, + const cnrtDataType_t data_dtype, const int channel_per_core, + const int max_number_hw_per_core, const int max_length_per_core) { + if (channel_per_core >= 1) { + MLUUnion1KernelTinShift<<>>( + input, shifts, output, batch_size, time_size, channel_size, hw_size, + group_size, group_channel, data_dtype); + } else { + MLUUnion1KernelTinShiftSplitSequence<<>>( + input, shifts, output, batch_size, time_size, channel_size, hw_size, + group_size, group_channel, max_number_hw_per_core, max_length_per_core, + data_dtype); + } +} + +void KernelTinShiftBackward( + cnrtDim3_t k_dim, cnrtFunctionType_t k_type, cnrtQueue_t queue, + const void *grad_output, const void *shifts, void *grad_input, + const int batch_size, const int time_size, const int channel_size, + const int hw_size, const int group_size, const int group_channel, + const cnrtDataType_t data_dtype, const int channel_per_core, + const int max_number_hw_per_core, const int max_length_per_core) { + if (channel_per_core >= 1) { + MLUUnion1KernelTinShift<<>>( + grad_output, shifts, grad_input, batch_size, time_size, channel_size, + hw_size, group_size, group_channel, data_dtype); + } else { + MLUUnion1KernelTinShiftSplitSequence<<>>( + grad_output, shifts, grad_input, batch_size, time_size, channel_size, + hw_size, group_size, group_channel, max_number_hw_per_core, + max_length_per_core, data_dtype); + } +} diff --git a/mmcv/ops/csrc/common/mps/MPSDevice.h b/mmcv/ops/csrc/common/mps/MPSDevice.h new file mode 100644 index 0000000..e1d9d49 --- /dev/null +++ b/mmcv/ops/csrc/common/mps/MPSDevice.h @@ -0,0 +1,64 @@ +// Copyright © 2022 Apple Inc. + +// This file is modify from: +// https://github.com/pytorch/pytorch/blob/a85d1f0bcdd02cf18d3b0517337458cb51a18cdb/aten/src/ATen/mps/MPSDevice.h + +#pragma once +#include +#include +#include + +#ifdef __OBJC__ +#include +#include +#include +typedef id MTLDevice_t; +#else +typedef void* MTLDevice; +typedef void* MTLDevice_t; +#endif + +using namespace std; + +namespace at { +namespace mps { + +//----------------------------------------------------------------- +// MPSDevice +// +// MPSDevice is a singleton class that returns the default device +//----------------------------------------------------------------- + +class TORCH_API MPSDevice { + public: + /** + * MPSDevice should not be cloneable. + */ + MPSDevice(MPSDevice& other) = delete; + /** + * MPSDevice should not be assignable. + */ + void operator=(const MPSDevice&) = delete; + /** + * Gets single instance of the Device. + */ + static MPSDevice* getInstance(); + /** + * Returns the single device. + */ + MTLDevice_t device() { return _mtl_device; } + + ~MPSDevice(); + + private: + static MPSDevice* _device; + MTLDevice_t _mtl_device; + MPSDevice(); +}; + +TORCH_API bool is_available(); + +TORCH_API at::Allocator* GetMPSAllocator(bool useSharedAllocator = false); + +} // namespace mps +} // namespace at diff --git a/mmcv/ops/csrc/common/mps/MPSLibrary.h b/mmcv/ops/csrc/common/mps/MPSLibrary.h new file mode 100644 index 0000000..41c33fb --- /dev/null +++ b/mmcv/ops/csrc/common/mps/MPSLibrary.h @@ -0,0 +1,61 @@ +#ifndef _MPS_LIBRARY_H_ +#define _MPS_LIBRARY_H_ + +#include +#include + +#ifdef __OBJC__ +#include +#include +#include + +typedef id MTLComputePipelineState_t; +typedef id MTLLibrary_t; +#else +typedef void* MTLComputePipelineState; +typedef void* MTLComputePipelineState_t; +typedef void* MTLLibrary; +typedef void* MTLLibrary_t; +#endif + +class MPSLibrary { + public: + // disable constructor for singleton + static MPSLibrary* createFromUrl(const std::string& library_url); + static MPSLibrary* createFromSource(const std::string& source); + ~MPSLibrary(); + + MTLLibrary_t library() { return _library; } + + MTLComputePipelineState_t getComputePipelineState( + const std::string& function_name); + + private: + MTLLibrary_t _library; + std::unordered_map _pso_map; +}; + +class MPSLibraryManager { + public: + // disable constructor for singleton + MPSLibraryManager(const MPSLibraryManager&) = delete; + MPSLibraryManager& operator=(const MPSLibraryManager&) = delete; + MPSLibraryManager(MPSLibraryManager&&) = delete; + MPSLibraryManager& operator=(MPSLibraryManager&&) = delete; + + static MPSLibraryManager* getInstance(); + + bool hasLibrary(const std::string& name); + + MPSLibrary* getLibrary(const std::string& library_url); + + MPSLibrary* createLibraryFromSouce(const std::string& name, + const std::string& sources); + + ~MPSLibraryManager(); + + private: + MPSLibraryManager(); + std::unordered_map> _library_map; +}; +#endif diff --git a/mmcv/ops/csrc/common/mps/MPSLibrary.mm b/mmcv/ops/csrc/common/mps/MPSLibrary.mm new file mode 100644 index 0000000..1a3d635 --- /dev/null +++ b/mmcv/ops/csrc/common/mps/MPSLibrary.mm @@ -0,0 +1,110 @@ +#include "MPSLibrary.h" +#include +#include "MPSDevice.h" + +static std::unique_ptr mps_library_manager; +static c10::once_flag mpsdev_init; + +MPSLibraryManager* MPSLibraryManager::getInstance() { + c10::call_once(mpsdev_init, [] { + mps_library_manager = std::unique_ptr(new MPSLibraryManager()); + }); + return mps_library_manager.get(); +} + +MPSLibraryManager::~MPSLibraryManager() {} + +MPSLibraryManager::MPSLibraryManager() {} + +bool MPSLibraryManager::hasLibrary(const std::string& name) { + return _library_map.find(name) != _library_map.end(); +} + +MPSLibrary* MPSLibraryManager::getLibrary(const std::string& library_url) { + if (_library_map.find(library_url) != _library_map.end()) { + return _library_map[library_url].get(); + } + _library_map.emplace(std::make_pair( + library_url, std::unique_ptr(MPSLibrary::createFromUrl(library_url)))); + return _library_map[library_url].get(); +} + +MPSLibrary* MPSLibraryManager::createLibraryFromSouce(const std::string& name, + const std::string& source) { + NSString* ns_name = [NSString stringWithCString:name.c_str()]; + if (_library_map.find(name) != _library_map.end()) { + NSLog(@"Library %@ already exist.", ns_name); + return nullptr; + } + + _library_map.emplace( + std::make_pair(name, std::unique_ptr(MPSLibrary::createFromSource(source)))); + return _library_map[name].get(); +} + +MPSLibrary* MPSLibrary::createFromUrl(const std::string& library_url) { + MPSLibrary* library = new MPSLibrary(); + @autoreleasepool { + NSError* error = nil; + + // load library and func + NSString* utl_str = [NSString stringWithCString:library_url.c_str()]; + NSURL* metal_url = [NSURL fileURLWithPath:utl_str]; + library->_library = [at::mps::MPSDevice::getInstance()->device() newLibraryWithURL:metal_url + error:&error]; + if (library->_library == nil) { + NSLog(@"Failed to find library, error %@.", error); + exit(1); + } + } + + return library; +} + +MPSLibrary* MPSLibrary::createFromSource(const std::string& sources) { + MPSLibrary* library = new MPSLibrary(); + @autoreleasepool { + NSError* error = nil; + + // load library and func + NSString* code_str = [NSString stringWithCString:sources.c_str()]; + library->_library = [at::mps::MPSDevice::getInstance()->device() newLibraryWithSource:code_str + options:nil + error:&error]; + if (library->_library == nil) { + NSLog(@"Failed to find library, error %@.", error); + exit(1); + } + } + + return library; +} + +MPSLibrary::~MPSLibrary() { + [_library release]; + _library = nil; +} + +MTLComputePipelineState_t MPSLibrary::getComputePipelineState(const std::string& function_name) { + if (_pso_map.find(function_name) != _pso_map.end()) { + return _pso_map[function_name]; + } + + MTLComputePipelineState_t pso; + @autoreleasepool { + NSError* error = nil; + + // create function + NSString* function_name_str = [NSString stringWithCString:function_name.c_str()]; + id func = [_library newFunctionWithName:function_name_str]; + if (func == nil) { + NSLog(@"Failed to created pipeline state object, error %@.", error); + exit(1); + } + // create pipeline + pso = [at::mps::MPSDevice::getInstance()->device() newComputePipelineStateWithFunction:func + error:&error]; + _pso_map.emplace(std::make_pair(function_name, pso)); + } + return _pso_map[function_name]; +} diff --git a/mmcv/ops/csrc/common/mps/MPSStream.h b/mmcv/ops/csrc/common/mps/MPSStream.h new file mode 100644 index 0000000..54cd388 --- /dev/null +++ b/mmcv/ops/csrc/common/mps/MPSStream.h @@ -0,0 +1,132 @@ +// Copyright © 2022 Apple Inc. + +// This file is modify from: +// https://github.com/pytorch/pytorch/blob/a85d1f0bcdd02cf18d3b0517337458cb51a18cdb/aten/src/ATen/mps/MPSStream.h + +#pragma once + +#include +#include + +#include +#include +#include +#include "MPSDevice.h" + +#ifdef __OBJC__ +#include +#include +#include +#include +typedef id MTLCommandQueue_t; +typedef id MTLCommandBuffer_t; +typedef id MTLSharedEvent_t; +typedef id MTLDevice_t; +#else +typedef void* MTLCommandQueue_t; +typedef void* MTLCommandQueue; +typedef void* MTLCommandBuffer_t; +typedef void* MTLCommandBuffer; +typedef void* MTLSharedEvent_t; +typedef void* dispatch_queue_t; +typedef void* MTLDevice_t; +#define nil NULL; +#endif + +namespace at { +namespace mps { + +//----------------------------------------------------------------- +// MPSStream +//----------------------------------------------------------------- + +class TORCH_API MPSStream { + public: + enum Unchecked { UNCHECKED }; + /// Construct a MPSStream from a Stream. This construction is checked, + /// and will raise an error if the Stream is not, in fact, a MPS stream. + explicit MPSStream(Stream stream); + + ~MPSStream(); + MTLCommandQueue_t commandQueue() const { return _commandQueue; }; + dispatch_queue_t queue() const { return _serialQueue; } + + MTLCommandBuffer_t commandBuffer(); + void commit(bool flush); + void commitAndWait(); + void synchronize(); + + void flush(); + + /// Get the MPS device index that this stream is associated with. + c10::DeviceIndex device_index() const { return _stream.device_index(); } + + MTLCommandQueue_t stream() const { return _commandQueue; }; + + MTLDevice_t device() const { return [_commandQueue device]; } + + /// Explicit conversion to Stream. + Stream unwrap() const { return _stream; } + + private: + Stream _stream; + MTLCommandQueue_t _commandQueue = nil; + MTLCommandBuffer_t _commandBuffer = nil; + void _flush(bool commitAndWait) const; + + dispatch_queue_t _serialQueue = nullptr; +}; + +/** + * Get the current MPS stream + */ +TORCH_API MPSStream* getCurrentMPSStream(); + +/** + * Get the default MPS stream + */ +TORCH_API MPSStream* getDefaultMPSStream(); + +//----------------------------------------------------------------- +// MPSStreamImpl +//----------------------------------------------------------------- + +class TORCH_API MPSStreamImpl { + public: + /** + * Gets single instance of the MPSStream. + */ + static MPSStream* getInstance(); + + private: + static MPSStream* _stream; + MPSStreamImpl(); +}; + +//----------------------------------------------------------------- +// MPSEvent +//----------------------------------------------------------------- + +struct TORCH_API MPSEvent { + MPSEvent(); + // MPSEvent(id device); + + ~MPSEvent(); + MTLSharedEvent_t event() const { return _event; } + + void recordEvent(MPSStream* stream); + void waitForEvent(MPSStream* queue); // waits on the cpu + bool queryEvent(); + uint64_t getCurrentValue() { return _currentValue; } + void setCurrentValue(uint64_t currValue) { _currentValue = currValue; } + + private: + bool _isRecorded = false; + uint64_t _currentValue = 0; + MTLSharedEvent_t _event; +}; + +typedef MPSEvent* mpsEvent_t; + +} // namespace mps +} // namespace at diff --git a/mmcv/ops/csrc/common/mps/MPSUtils.h b/mmcv/ops/csrc/common/mps/MPSUtils.h new file mode 100644 index 0000000..2a4ce6d --- /dev/null +++ b/mmcv/ops/csrc/common/mps/MPSUtils.h @@ -0,0 +1,51 @@ +#ifndef _MPS_UTILS_H_ +#define _MPS_UTILS_H_ +#include +#ifdef __OBJC__ +#include +#include +#include + +typedef id MTLBuffer_t; +typedef id MTLComputeCommandEncoder_t; +#else +typedef void* MTLBuffer; +typedef void* MTLBuffer_t; +typedef void* MTLComputeCommandEncoder; +typedef void* MTLComputeCommandEncoder_t; +#endif + +// utils +static inline MTLBuffer_t getMTLBufferStorage(const at::Tensor& tensor) { + return __builtin_bit_cast(MTLBuffer_t, tensor.storage().data()); +} + +template , at::Tensor>::value, bool> = true> +void setMTLArg(MTLComputeCommandEncoder_t encoder, int index, T&& t); + +template , at::Tensor>::value, bool> = true> +void setMTLArg(MTLComputeCommandEncoder_t encoder, int index, T&& t) { + [encoder setBuffer:getMTLBufferStorage(t) offset:0 atIndex:index]; +} + +template , at::Tensor>::value, bool>> +void setMTLArg(MTLComputeCommandEncoder_t encoder, int index, T&& t) { + [encoder setBytes:&t length:sizeof(t) atIndex:index]; +} + +inline void setMTLArgsImpl(MTLComputeCommandEncoder_t, int) {} + +template +void setMTLArgsImpl(MTLComputeCommandEncoder_t encoder, int index, T&& t, Args&&... args) { + setMTLArg(encoder, index, std::forward(t)); + setMTLArgsImpl(encoder, index + 1, std::forward(args)...); +} + +template +void setMTLArgs(MTLComputeCommandEncoder_t encoder, MTLComputePipelineState_t pso, Args&&... args) { + [encoder setComputePipelineState:pso]; + setMTLArgsImpl(encoder, 0, std::forward(args)...); +} +#endif diff --git a/mmcv/ops/csrc/common/pytorch_cpp_helper.hpp b/mmcv/ops/csrc/common/pytorch_cpp_helper.hpp index c7f9f35..f68e874 100644 --- a/mmcv/ops/csrc/common/pytorch_cpp_helper.hpp +++ b/mmcv/ops/csrc/common/pytorch_cpp_helper.hpp @@ -1,22 +1,25 @@ #ifndef PYTORCH_CPP_HELPER #define PYTORCH_CPP_HELPER -#include +#include #include using namespace at; -#define DIVUP(m, n) ((m) / (n) + ((m) % (n) > 0)) - #define CHECK_CUDA(x) \ TORCH_CHECK(x.device().is_cuda(), #x " must be a CUDA tensor") +#define CHECK_MLU(x) \ + TORCH_CHECK(x.device().type() == at::kMLU, #x " must be a MLU tensor") #define CHECK_CPU(x) \ - TORCH_CHECK(!x.device().is_cuda(), #x " must be a CPU tensor") + TORCH_CHECK(x.device().type() == at::kCPU, #x " must be a CPU tensor") #define CHECK_CONTIGUOUS(x) \ TORCH_CHECK(x.is_contiguous(), #x " must be contiguous") #define CHECK_CUDA_INPUT(x) \ CHECK_CUDA(x); \ CHECK_CONTIGUOUS(x) +#define CHECK_MLU_INPUT(x) \ + CHECK_MLU(x); \ + CHECK_CONTIGUOUS(x) #define CHECK_CPU_INPUT(x) \ CHECK_CPU(x); \ CHECK_CONTIGUOUS(x) diff --git a/mmcv/ops/csrc/common/pytorch_mlu_helper.hpp b/mmcv/ops/csrc/common/pytorch_mlu_helper.hpp new file mode 100644 index 0000000..72dbe58 --- /dev/null +++ b/mmcv/ops/csrc/common/pytorch_mlu_helper.hpp @@ -0,0 +1,28 @@ +/************************************************************************* + * Copyright (C) 2021 Cambricon. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + *************************************************************************/ +#ifndef PYTORCH_MLU_HELPER_HPP_ +#define PYTORCH_MLU_HELPER_HPP_ + +#ifdef MMCV_WITH_MLU +#include "aten.h" + +#define NFU_ALIGN_SIZE 128 + +#define PAD_UP(x, y) (((x) / (y) + (int)((x) % (y) > 0)) * (y)) + +#define PAD_DOWN(x, y) (((x) / (y)) * (y)) + +#define CEIL_ALIGN(x, y) (((x) + (y)-1) / (y) * (y)) + +#endif + +#endif // PYTORCH_MLU_HELPER_HPP_ diff --git a/mmcv/ops/csrc/common/utils/spconv/paramsgrid.h b/mmcv/ops/csrc/common/utils/spconv/paramsgrid.h new file mode 100644 index 0000000..f23ff44 --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/paramsgrid.h @@ -0,0 +1,70 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef PARAMS_GRID_H_ +#define PARAMS_GRID_H_ +#include +#include + +namespace detail { +template +int getTotalSize(std::vector arg) { + return arg.size(); +} + +template +int getTotalSize(std::vector arg, std::vector... args) { + return arg.size() * getTotalSize(args...); +} + +template +int getSize(std::vector arg) { + return arg.size(); +} + +template +void assigner(TT &src, std::vector counter, std::vector &arg) { + std::get(src) = arg[counter[Idx]]; +} + +template +void assigner(TT &src, std::vector counter, std::vector &arg, + std::vector &... args) { + std::get(src) = arg[counter[Idx]]; + assigner(src, counter, args...); +} +} // namespace detail + +template +std::vector> paramsGrid(std::vector... args) { + int length = detail::getTotalSize(args...); + std::vector sizes = {detail::getSize(args)...}; + int size = sizes.size(); + + std::vector> params(length); + std::vector counter(size); + for (int i = 0; i < length; ++i) { + detail::assigner<0>(params[i], counter, args...); + counter[size - 1] += 1; + for (int c = size - 1; c >= 0; --c) { + if (counter[c] == sizes[c] && c > 0) { + counter[c - 1] += 1; + counter[c] = 0; + } + } + } + return params; +} + +#endif diff --git a/mmcv/ops/csrc/common/utils/spconv/prettyprint.h b/mmcv/ops/csrc/common/utils/spconv/prettyprint.h new file mode 100644 index 0000000..0a6bdc3 --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/prettyprint.h @@ -0,0 +1,493 @@ +// Copyright Louis Delacroix 2010 - 2014. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// A pretty printing library for C++ +// +// Usage: +// Include this header, and operator<< will "just work". + +#ifndef H_PRETTY_PRINT +#define H_PRETTY_PRINT + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace pretty_print { +namespace detail { +// SFINAE type trait to detect whether T::const_iterator exists. + +struct sfinae_base { + using yes = char; + using no = yes[2]; +}; + +template +struct has_const_iterator : private sfinae_base { + private: + template + static yes &test(typename C::const_iterator *); + template + static no &test(...); + + public: + static const bool value = sizeof(test(nullptr)) == sizeof(yes); + using type = T; +}; + +template +struct has_begin_end : private sfinae_base { + private: + template + static yes & + f(typename std::enable_if< + std::is_same(&C::begin)), + typename C::const_iterator (C::*)() const>::value>::type *); + + template + static no &f(...); + + template + static yes &g(typename std::enable_if< + std::is_same(&C::end)), + typename C::const_iterator (C::*)() const>::value, + void>::type *); + + template + static no &g(...); + + public: + static bool const beg_value = sizeof(f(nullptr)) == sizeof(yes); + static bool const end_value = sizeof(g(nullptr)) == sizeof(yes); +}; + +} // namespace detail + +// Holds the delimiter values for a specific character type + +template +struct delimiters_values { + using char_type = TChar; + const char_type *prefix; + const char_type *delimiter; + const char_type *postfix; +}; + +// Defines the delimiter values for a specific container and character type + +template +struct delimiters { + using type = delimiters_values; + static const type values; +}; + +// Functor to print containers. You can use this directly if you want +// to specify a non-default delimiters type. The printing logic can +// be customized by specializing the nested template. + +template , + typename TDelimiters = delimiters> +struct print_container_helper { + using delimiters_type = TDelimiters; + using ostream_type = std::basic_ostream; + + template + struct printer { + static void print_body(const U &c, ostream_type &stream) { + using std::begin; + using std::end; + + auto it = begin(c); + const auto the_end = end(c); + + if (it != the_end) { + for (;;) { + stream << *it; + + if (++it == the_end) break; + + if (delimiters_type::values.delimiter != NULL) + stream << delimiters_type::values.delimiter; + } + } + } + }; + + print_container_helper(const T &container) : container_(container) {} + + inline void operator()(ostream_type &stream) const { + if (delimiters_type::values.prefix != NULL) + stream << delimiters_type::values.prefix; + + printer::print_body(container_, stream); + + if (delimiters_type::values.postfix != NULL) + stream << delimiters_type::values.postfix; + } + + private: + const T &container_; +}; + +// Specialization for pairs + +template +template +struct print_container_helper::printer> { + using ostream_type = + typename print_container_helper::ostream_type; + + static void print_body(const std::pair &c, ostream_type &stream) { + stream << c.first; + if (print_container_helper::delimiters_type::values + .delimiter != NULL) + stream << print_container_helper::delimiters_type::values + .delimiter; + stream << c.second; + } +}; + +// Specialization for tuples + +template +template +struct print_container_helper::printer> { + using ostream_type = + typename print_container_helper::ostream_type; + using element_type = std::tuple; + + template + struct Int {}; + + static void print_body(const element_type &c, ostream_type &stream) { + tuple_print(c, stream, Int<0>()); + } + + static void tuple_print(const element_type &, ostream_type &, + Int) {} + + static void tuple_print( + const element_type &c, ostream_type &stream, + typename std::conditional, + std::nullptr_t>::type) { + stream << std::get<0>(c); + tuple_print(c, stream, Int<1>()); + } + + template + static void tuple_print(const element_type &c, ostream_type &stream, Int) { + if (print_container_helper::delimiters_type::values + .delimiter != NULL) + stream << print_container_helper::delimiters_type::values + .delimiter; + + stream << std::get(c); + + tuple_print(c, stream, Int()); + } +}; + +// Prints a print_container_helper to the specified stream. + +template +inline std::basic_ostream &operator<<( + std::basic_ostream &stream, + const print_container_helper &helper) { + helper(stream); + return stream; +} + +// Basic is_container template; specialize to derive from std::true_type for all +// desired container types + +template +struct is_container + : public std::integral_constant::value && + detail::has_begin_end::beg_value && + detail::has_begin_end::end_value> {}; + +template +struct is_container : std::true_type {}; + +template +struct is_container : std::false_type {}; + +template +struct is_container> : std::true_type {}; + +template +struct is_container> : std::true_type {}; + +template +struct is_container> : std::true_type {}; + +// Default delimiters + +template +struct delimiters { + static const delimiters_values values; +}; +template +const delimiters_values delimiters::values = {"[", ", ", "]"}; +template +struct delimiters { + static const delimiters_values values; +}; +template +const delimiters_values delimiters::values = {L"[", L", ", + L"]"}; + +// Delimiters for (multi)set and unordered_(multi)set + +template +struct delimiters<::std::set, char> { + static const delimiters_values values; +}; + +template +const delimiters_values + delimiters<::std::set, char>::values = {"{", ", ", + "}"}; + +template +struct delimiters<::std::set, wchar_t> { + static const delimiters_values values; +}; + +template +const delimiters_values + delimiters<::std::set, wchar_t>::values = { + L"{", L", ", L"}"}; + +template +struct delimiters<::std::multiset, char> { + static const delimiters_values values; +}; + +template +const delimiters_values + delimiters<::std::multiset, char>::values = { + "{", ", ", "}"}; + +template +struct delimiters<::std::multiset, wchar_t> { + static const delimiters_values values; +}; + +template +const delimiters_values + delimiters<::std::multiset, wchar_t>::values = { + L"{", L", ", L"}"}; + +template +struct delimiters<::std::unordered_set, char> { + static const delimiters_values values; +}; + +template +const delimiters_values delimiters< + ::std::unordered_set, char>::values = { + "{", ", ", "}"}; + +template +struct delimiters<::std::unordered_set, wchar_t> { + static const delimiters_values values; +}; + +template +const delimiters_values delimiters< + ::std::unordered_set, wchar_t>::values = { + L"{", L", ", L"}"}; + +template +struct delimiters<::std::unordered_multiset, + char> { + static const delimiters_values values; +}; + +template +const delimiters_values delimiters< + ::std::unordered_multiset, char>::values = { + "{", ", ", "}"}; + +template +struct delimiters<::std::unordered_multiset, + wchar_t> { + static const delimiters_values values; +}; + +template +const delimiters_values + delimiters<::std::unordered_multiset, + wchar_t>::values = {L"{", L", ", L"}"}; + +// Delimiters for pair and tuple + +template +struct delimiters, char> { + static const delimiters_values values; +}; +template +const delimiters_values delimiters, char>::values = { + "(", ", ", ")"}; +template +struct delimiters<::std::pair, wchar_t> { + static const delimiters_values values; +}; +template +const delimiters_values + delimiters<::std::pair, wchar_t>::values = {L"(", L", ", L")"}; + +template +struct delimiters, char> { + static const delimiters_values values; +}; +template +const delimiters_values delimiters, char>::values = { + "(", ", ", ")"}; +template +struct delimiters<::std::tuple, wchar_t> { + static const delimiters_values values; +}; +template +const delimiters_values + delimiters<::std::tuple, wchar_t>::values = {L"(", L", ", L")"}; + +// Type-erasing helper class for easy use of custom delimiters. +// Requires TCharTraits = std::char_traits and TChar = char or wchar_t, +// and MyDelims needs to be defined for TChar. Usage: "cout << +// pretty_print::custom_delims(x)". + +struct custom_delims_base { + virtual ~custom_delims_base() {} + virtual std::ostream &stream(::std::ostream &) = 0; + virtual std::wostream &stream(::std::wostream &) = 0; +}; + +template +struct custom_delims_wrapper : custom_delims_base { + custom_delims_wrapper(const T &t_) : t(t_) {} + + std::ostream &stream(std::ostream &s) { + return s << print_container_helper, Delims>( + t); + } + + std::wostream &stream(std::wostream &s) { + return s << print_container_helper, + Delims>(t); + } + + private: + const T &t; +}; + +template +struct custom_delims { + template + custom_delims(const Container &c) + : base(new custom_delims_wrapper(c)) {} + + std::unique_ptr base; +}; + +template +inline std::basic_ostream &operator<<( + std::basic_ostream &s, const custom_delims &p) { + return p.base->stream(s); +} + +// A wrapper for a C-style array given as pointer-plus-size. +// Usage: std::cout << pretty_print_array(arr, n) << std::endl; + +template +struct array_wrapper_n { + typedef const T *const_iterator; + typedef T value_type; + + array_wrapper_n(const T *const a, size_t n) : _array(a), _n(n) {} + inline const_iterator begin() const { return _array; } + inline const_iterator end() const { return _array + _n; } + + private: + const T *const _array; + size_t _n; +}; + +// A wrapper for hash-table based containers that offer local iterators to each +// bucket. Usage: std::cout << bucket_print(m, 4) << std::endl; (Prints bucket +// 5 of container m.) + +template +struct bucket_print_wrapper { + typedef typename T::const_local_iterator const_iterator; + typedef typename T::size_type size_type; + + const_iterator begin() const { return m_map.cbegin(n); } + + const_iterator end() const { return m_map.cend(n); } + + bucket_print_wrapper(const T &m, size_type bucket) : m_map(m), n(bucket) {} + + private: + const T &m_map; + const size_type n; +}; + +} // namespace pretty_print + +// Global accessor functions for the convenience wrappers + +template +inline pretty_print::array_wrapper_n pretty_print_array(const T *const a, + size_t n) { + return pretty_print::array_wrapper_n(a, n); +} + +template +pretty_print::bucket_print_wrapper bucket_print(const T &m, + typename T::size_type n) { + return pretty_print::bucket_print_wrapper(m, n); +} + +// Main magic entry point: An overload snuck into namespace std. +// Can we do better? + +namespace std { +// Prints a container to the stream using default delimiters + +template +inline typename enable_if<::pretty_print::is_container::value, + basic_ostream &>::type +operator<<(basic_ostream &stream, const T &container) { + return stream + << ::pretty_print::print_container_helper( + container); +} +} // namespace std + +#endif // H_PRETTY_PRINT diff --git a/mmcv/ops/csrc/common/utils/spconv/pybind11_utils.h b/mmcv/ops/csrc/common/utils/spconv/pybind11_utils.h new file mode 100644 index 0000000..026e35b --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/pybind11_utils.h @@ -0,0 +1,60 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace py = pybind11; + +template +std::vector array2Vector(TPyObject arr) { + py::array arr_np = arr; + size_t size = arr.attr("size").template cast(); + py::array_t arr_cc = arr_np; + std::vector data(arr_cc.data(), arr_cc.data() + size); + return data; +} + +template +std::vector arrayT2Vector(py::array_t arr) { + std::vector data(arr.data(), arr.data() + arr.size()); + return data; +} + +template +tv::TensorView array2TensorView(TPyObject arr) { + py::array arr_np = arr; + py::array_t arr_cc = arr_np; + tv::Shape shape; + for (int i = 0; i < arr_cc.ndim(); ++i) { + shape.push_back(arr_cc.shape(i)); + } + return tv::TensorView(arr_cc.mutable_data(), shape); +} +template +tv::TensorView arrayT2TensorView(py::array_t arr) { + tv::Shape shape; + for (int i = 0; i < arr.ndim(); ++i) { + shape.push_back(arr.shape(i)); + } + return tv::TensorView(arr.mutable_data(), shape); +} diff --git a/mmcv/ops/csrc/common/utils/spconv/spconv/geometry.h b/mmcv/ops/csrc/common/utils/spconv/spconv/geometry.h new file mode 100644 index 0000000..e5e093f --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/spconv/geometry.h @@ -0,0 +1,297 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef SPCONV_GEOMETRY_H_ +#define SPCONV_GEOMETRY_H_ + +#include + +#include +#include + +template +TV_HOST_DEVICE Index getValidOutPos(const Index *input_pos, + const Index *kernelSize, + const Index *stride, const Index *padding, + const Index *dilation, + const Index *outSpatialShape, Index *out) { + Index lowers[NDim]; + Index uppers[NDim]; + Index counter[NDim]; + Index counterSize[NDim]; + Index pointCounter = 0; + Index val; + Index numPoints = 1; + Index m, offset; + bool valid = false; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + lowers[i] = (input_pos[i] - (kernelSize[i] - 1) * dilation[i] - 1 + + stride[i] + padding[i]) / + stride[i]; + uppers[i] = (input_pos[i] + padding[i]) / stride[i]; + } + +#pragma unroll + for (unsigned i = 0; i < NDim; ++i) { + counterSize[i] = ((uppers[i] - lowers[i]) / dilation[i] + 1); + numPoints *= counterSize[i]; + } + +#pragma unroll + for (int i = 0; i < NDim; ++i) { + counter[i] = 0; + } + for (int i = 0; i < numPoints; ++i) { + valid = true; + m = 1; + offset = 0; +#pragma unroll + for (int j = NDim - 1; j >= 0; --j) { + val = uppers[j] - counter[j] * dilation[j]; + out[pointCounter * (NDim + 1) + j] = val; + if (val < 0 || (val > outSpatialShape[j] - 1)) { + valid = false; + // break; + } + offset += m * (input_pos[j] - val * stride[j] + padding[j]) / dilation[j]; + m *= kernelSize[j]; + } + + out[pointCounter * (NDim + 1) + NDim] = offset; + if (valid) ++pointCounter; + counter[NDim - 1] += 1; +#pragma unroll + for (int c = NDim - 1; c >= 0; --c) { + if (counter[c] == counterSize[c] && c > 0) { + counter[c - 1] += 1; + counter[c] = 0; + } + } + } + return pointCounter; +} + +template +TV_HOST_DEVICE Index getValidOutPosTranspose( + const Index *input_pos, const Index *kernelSize, const Index *stride, + const Index *padding, const Index *dilation, const Index *outSpatialShape, + Index *out) { + Index lowers[NDim]; + Index uppers[NDim]; + Index counter[NDim]; + Index counterSize[NDim]; + Index pointCounter = 0; + Index val; + Index numPoints = 1; + Index m, offset; + bool valid = false; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + lowers[i] = input_pos[i] * stride[i] - padding[i]; + uppers[i] = lowers[i] + (kernelSize[i] - 1) * dilation[i]; + } +#pragma unroll + for (unsigned i = 0; i < NDim; ++i) { + counterSize[i] = ((uppers[i] - lowers[i]) / dilation[i] + 1); + numPoints *= counterSize[i]; + } +#pragma unroll + for (int i = 0; i < NDim; ++i) { + counter[i] = 0; + } + for (int i = 0; i < numPoints; ++i) { + valid = true; + m = 1; + offset = 0; +#pragma unroll + for (int j = NDim - 1; j >= 0; --j) { + val = uppers[j] - counter[j] * dilation[j]; + out[pointCounter * (NDim + 1) + j] = val; + if (val < 0 || (val > outSpatialShape[j] - 1)) { + valid = false; + } + offset += m * (val - lowers[j]) / dilation[j]; + m *= kernelSize[j]; + } + out[pointCounter * (NDim + 1) + NDim] = offset; + if (valid) ++pointCounter; + counter[NDim - 1] += 1; +#pragma unroll + for (int c = NDim - 1; c >= 0; --c) { + if (counter[c] == counterSize[c] && c > 0) { + counter[c - 1] += 1; + counter[c] = 0; + } + } + } + return pointCounter; +} + +template +Index getIndicePairsConv(tv::TensorView indicesIn, + tv::TensorView indicesOut, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + const Index *kernelSize, const Index *stride, + const Index *padding, const Index *dilation, + const Index *outSpatialShape) { + // indicesOut: num_active * kernelVolume * (NDim + 1) + Index numAct = 0; + auto numActIn = indicesIn.dim(0); + Index batchIdx = 0; + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index kernelVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + kernelVolume *= kernelSize[i]; + } + Index numValidPoints = 0; + std::vector validPoints_(kernelVolume * (NDim + 1)); + Index *validPoints = validPoints_.data(); + Index *pointPtr = nullptr; + for (int j = 0; j < numActIn; ++j) { + batchIdx = indicesIn(j, 0); + numValidPoints = getValidOutPos( + indicesIn.data() + j * (NDim + 1) + 1, kernelSize, stride, padding, + dilation, outSpatialShape, validPoints); + for (Index i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + auto index = tv::rowArrayIdx(pointPtr, outSpatialShape) + + spatialVolume * batchIdx; + if (gridsOut[index] == -1) { + for (unsigned k = 1; k < NDim + 1; ++k) { + indicesOut(numAct, k) = pointPtr[k - 1]; + } + indicesOut(numAct, 0) = batchIdx; + gridsOut[index] = numAct++; + } + // indicePairs: [K, 2, L] + indicePairs(offset, 0, indiceNum[offset]) = j; + indicePairs(offset, 1, indiceNum[offset]++) = gridsOut[index]; + } + } + return numAct; +} + +template +Index getIndicePairsDeConv(tv::TensorView indicesIn, + tv::TensorView indicesOut, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + const Index *kernelSize, const Index *stride, + const Index *padding, const Index *dilation, + const Index *outSpatialShape) { + Index numAct = 0; + auto numActIn = indicesIn.dim(0); + Index batchIdx = 0; + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index kernelVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + kernelVolume *= kernelSize[i]; + } + Index numValidPoints = 0; + std::vector validPoints_(kernelVolume * (NDim + 1)); + Index *validPoints = validPoints_.data(); + Index *pointPtr = nullptr; + for (int j = 0; j < numActIn; ++j) { + batchIdx = indicesIn(j, 0); + numValidPoints = getValidOutPosTranspose( + indicesIn.data() + j * (NDim + 1) + 1, kernelSize, stride, padding, + dilation, outSpatialShape, validPoints); + for (Index i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + auto index = tv::rowArrayIdx(pointPtr, outSpatialShape) + + spatialVolume * batchIdx; + if (gridsOut[index] == -1) { + for (unsigned k = 1; k < NDim + 1; ++k) { + indicesOut(numAct, k) = pointPtr[k - 1]; + } + indicesOut(numAct, 0) = batchIdx; + gridsOut[index] = numAct++; + } + // indicePairs: [K, 2, L] + indicePairs(offset, 0, indiceNum[offset]) = j; + indicePairs(offset, 1, indiceNum[offset]++) = gridsOut[index]; + } + } + return numAct; +} + +template +Index getIndicePairsSubM(tv::TensorView indicesIn, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + const Index *const kernelSize, + const Index *const stride, const Index *const padding, + const Index *dilation, + const Index *const outSpatialShape) { + Index numAct = 0; + auto numActIn = indicesIn.dim(0); + Index batchIdx = 0; + Index spatialVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + spatialVolume *= outSpatialShape[i]; + } + Index kernelVolume = 1; +#pragma unroll + for (int i = 0; i < NDim; ++i) { + kernelVolume *= kernelSize[i]; + } + Index numValidPoints = 0; + // Index validPoints[kernelVolume * (NDim + 1)]; + std::vector validPoints_(kernelVolume * (NDim + 1)); + Index *validPoints = validPoints_.data(); + Index *pointPtr = nullptr; + Index index = 0; + for (int j = 0; j < numActIn; ++j) { + index = tv::rowArrayIdx(indicesIn.data() + j * (NDim + 1) + 1, + outSpatialShape) + + spatialVolume * indicesIn(j, 0); + gridsOut[index] = j; + } + for (int j = 0; j < numActIn; ++j) { + numValidPoints = getValidOutPos( + indicesIn.data() + j * (NDim + 1) + 1, kernelSize, stride, padding, + dilation, outSpatialShape, validPoints); + for (Index i = 0; i < numValidPoints; ++i) { + pointPtr = validPoints + i * (NDim + 1); + auto offset = pointPtr[NDim]; + index = tv::rowArrayIdx(pointPtr, outSpatialShape) + + spatialVolume * indicesIn(j, 0); + if (gridsOut[index] > -1) { + indicePairs(offset, 0, indiceNum[offset]) = j; + indicePairs(offset, 1, indiceNum[offset]++) = gridsOut[index]; + } + } + } + return numActIn; +} + +#endif diff --git a/mmcv/ops/csrc/common/utils/spconv/spconv/indice.h b/mmcv/ops/csrc/common/utils/spconv/spconv/indice.h new file mode 100644 index 0000000..96ce34e --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/spconv/indice.h @@ -0,0 +1,78 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef SPARSE_CONV_INDICE_FUNCTOR_H_ +#define SPARSE_CONV_INDICE_FUNCTOR_H_ +#include + +namespace functor { +template +struct CreateConvIndicePairFunctorP1 { + Index operator()(const Device& d, tv::TensorView indicesIn, + tv::TensorView indicesOut, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + tv::TensorView indicePairUnique, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape, + bool transpose); +}; + +template +struct CreateConvIndicePairFunctorP2 { + Index operator()(const Device& d, tv::TensorView indicesIn, + tv::TensorView indicesOut, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + tv::TensorView indicePairUnique, + const tv::SimpleVector outSpatialShape, + bool transpose, bool resetGrid = false); +}; + +template +struct CreateConvIndicePairFunctor { + Index operator()(const Device& d, tv::TensorView indicesIn, + tv::TensorView indicesOut, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape, + bool transpose, bool resetGrid = false); +}; + +template +struct CreateSubMIndicePairFunctor { + Index operator()(const Device& d, tv::TensorView indicesIn, + tv::TensorView gridsOut, + tv::TensorView indicePairs, + tv::TensorView indiceNum, + const tv::SimpleVector kernelSize, + const tv::SimpleVector stride, + const tv::SimpleVector padding, + const tv::SimpleVector dilation, + const tv::SimpleVector outSpatialShape, + bool transpose, bool resetGrid = false); +}; +} // namespace functor + +#endif diff --git a/mmcv/ops/csrc/common/utils/spconv/spconv/maxpool.h b/mmcv/ops/csrc/common/utils/spconv/spconv/maxpool.h new file mode 100644 index 0000000..78f32ed --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/spconv/maxpool.h @@ -0,0 +1,37 @@ +// Copyright 2019 Yan Yan +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef SPARSE_MAXPOOL_FUNCTOR_H_ +#define SPARSE_MAXPOOL_FUNCTOR_H_ +#include + +namespace functor { +template +struct SparseMaxPoolForwardFunctor { + void operator()(const Device& d, tv::TensorView outFeatures, + tv::TensorView inFeatures, + tv::TensorView indices, int size); +}; + +template +struct SparseMaxPoolBackwardFunctor { + void operator()(const Device& d, tv::TensorView outFeatures, + tv::TensorView inFeatures, + tv::TensorView fout, + tv::TensorView fin, + tv::TensorView indices, int size); +}; +} // namespace functor + +#endif diff --git a/mmcv/ops/csrc/common/utils/spconv/spconv/mp_helper.h b/mmcv/ops/csrc/common/utils/spconv/spconv/mp_helper.h new file mode 100644 index 0000000..8262b30 --- /dev/null +++ b/mmcv/ops/csrc/common/utils/spconv/spconv/mp_helper.h @@ -0,0 +1,50 @@ +#ifndef MP_HELPER_H_ +#define MP_HELPER_H_ +#include +#include + +template +struct mp_list {}; + +template +using mp_list_c = mp_list...>; + +namespace detail { + +template +constexpr F mp_for_each_impl(mp_list, F &&f) { + return std::initializer_list{(f(T()), 0)...}, std::forward(f); +} + +template +constexpr F mp_for_each_impl(mp_list<>, F &&f) { + return std::forward(f); +} + +} // namespace detail + +namespace detail { + +template class B> +struct mp_rename_impl { + // An error "no type named 'type'" here means that the first argument to + // mp_rename is not a list +}; + +template

yAIM_hC1`Uxnvjzh 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 z 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