From b0786ca8768fb59cb595ab7ba6b08a7f5b5a8361 Mon Sep 17 00:00:00 2001 From: pikaliov Date: Tue, 12 May 2026 12:41:36 +0300 Subject: [PATCH] Add fork README (mirror, contact, install) and ignore built DCNv4 .so. Document the Gitea mirror for CVGL; extend .gitignore for extension artifacts. Keep CUDA im2col/col2im and setup version tweaks in DCNv4_op. Co-authored-by: Cursor --- .gitignore | 4 +- DCNv4_op/setup.py | 2 +- DCNv4_op/src/cuda/dcnv4_col2im_cuda.cuh | 68 ++++++++++++++++++++++++- DCNv4_op/src/cuda/dcnv4_im2col_cuda.cuh | 30 +++++++++-- README.md | 19 +++++++ 5 files changed, 116 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 0ad7194..9225ddf 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ detection/ckpts segmentation/data segmentation/ckpts work_dirs/ -output \ No newline at end of file +output +*.so +DCNv4_op/DCNv4/*.so \ No newline at end of file diff --git a/DCNv4_op/setup.py b/DCNv4_op/setup.py index 082dbeb..0ecf6ef 100644 --- a/DCNv4_op/setup.py +++ b/DCNv4_op/setup.py @@ -62,7 +62,7 @@ def get_extensions(): setup( name="DCNv4", - version="1.0.0.post2", + version="1.0.0.post3+cvgl_k57", author="Yuwen Xiong, Feng Wang", url="", description="PyTorch Wrapper for CUDA Functions of DCNv4", diff --git a/DCNv4_op/src/cuda/dcnv4_col2im_cuda.cuh b/DCNv4_op/src/cuda/dcnv4_col2im_cuda.cuh index 78bb8dc..d29249e 100644 --- a/DCNv4_op/src/cuda/dcnv4_col2im_cuda.cuh +++ b/DCNv4_op/src/cuda/dcnv4_col2im_cuda.cuh @@ -410,8 +410,40 @@ void _dcnv4_col2im_cuda( kernel = backward_kernel_dcn; } break; + case 25: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 24: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 49: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 48: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; default: - printf("K=%ld\n", K); + printf("K=%d\n", K); throw std::invalid_argument("invalid kernel shape"); } } else { @@ -432,8 +464,40 @@ void _dcnv4_col2im_cuda( kernel = backward_kernel_dcn; } break; + case 25: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 24: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 49: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; + case 48: + if(check_backward_warpp(d_stride, D)){ + kernel = backward_kernel_dcn_warp_primitive; + } + else { + kernel = backward_kernel_dcn; + } + break; default: - printf("K=%ld\n", K); + printf("K=%d\n", K); throw std::invalid_argument("invalid kernel shape"); } } diff --git a/DCNv4_op/src/cuda/dcnv4_im2col_cuda.cuh b/DCNv4_op/src/cuda/dcnv4_im2col_cuda.cuh index 3f460f2..b09d337 100644 --- a/DCNv4_op/src/cuda/dcnv4_im2col_cuda.cuh +++ b/DCNv4_op/src/cuda/dcnv4_im2col_cuda.cuh @@ -279,8 +279,20 @@ void _dcnv4_im2col_cuda(cudaStream_t stream, case 8: kernel = forward_kernel_dcn_reg; break; + case 25: + kernel = forward_kernel_dcn_reg; + break; + case 24: + kernel = forward_kernel_dcn_reg; + break; + case 49: + kernel = forward_kernel_dcn_reg; + break; + case 48: + kernel = forward_kernel_dcn_reg; + break; default: - printf("K=%ld\n", K); + printf("K=%d\n", K); throw std::invalid_argument("invalid kernel shape"); } } else { @@ -290,9 +302,21 @@ void _dcnv4_im2col_cuda(cudaStream_t stream, break; case 8: kernel = forward_kernel_dcn_reg; - break; + break; + case 25: + kernel = forward_kernel_dcn_reg; + break; + case 24: + kernel = forward_kernel_dcn_reg; + break; + case 49: + kernel = forward_kernel_dcn_reg; + break; + case 48: + kernel = forward_kernel_dcn_reg; + break; default: - printf("K=%ld\n", K); + printf("K=%d\n", K); throw std::invalid_argument("invalid kernel shape"); } } diff --git a/README.md b/README.md index ae7d1d1..1987f55 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,23 @@ +## Зеркало и сборка (Pikaliov / CVGL) +**Автор зеркала:** Пикалиов (Pikaliov) · `i@pikaliov.ru` +**Репозиторий (Gitea):** https://git.lissad.keenetic.name/Pikaliov/DCN_custom_op +**Апстрим OpenGVLab:** https://github.com/OpenGVLab/DCNv4 + +Каталог **`DCNv4_op`** — PyTorch CUDA-расширение (модуль `DCNv4`). Сборка из исходников: + +```bash +cd DCNv4_op +pip install -e . +``` + +Нужны **CUDA** и согласованные **PyTorch / nvcc** (в `setup.py` при отсутствии CUDA сборка не выполняется). Пример импорта: `from DCNv4 import DCNv4`. + +Лицензия исходного кода — **Apache-2.0**, см. файл `LICENSE`. + +Ниже — оригинальный README проекта OpenGVLab (модели, таблицы, ссылки на веса). + +--- # [DCNv4](https://arxiv.org/pdf/2401.06197.pdf)