Egrt / yolov7-obb

在YOLOv7的基础上使用KLD损失修改为旋转目标检测yolov7-obb
GNU General Public License v3.0
175 stars 26 forks source link

34 errors detected in the compilation of "src/poly_nms_cuda.cu".怎么解决 #10

Open wyk-study opened 1 year ago

Egrt commented 1 year ago

2 同样的问题,可以参考

Cindy233 commented 1 year ago

您好,我遇到了同样的问题。之前复现yolov5安装过一次非极大抑制的库,成功了。但是在同一个环境下安装yolov7的却一直无法成功。也是报34 errors。具体错如下: H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(107): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(108): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(109): error: identifier "n1" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(110): error: identifier "n2" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(112): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(117): warning: parsing restarts here after previous syntax error

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(118): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(166): warning: parsing restarts here after previous syntax error

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(167): error: expression must have a constant value H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(167): note: attempt to access run-time storage

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(168): error: identifier "dev_polys" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(168): error: identifier "col_start" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(169): error: expression must have a constant value H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(169): note: attempt to access run-time storage

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(169): error: variable "block_polys" has already been defined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(171): error: expression must have a constant value H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(171): note: attempt to access run-time storage

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(171): error: variable "block_polys" has already been defined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(173): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(176): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(219): warning: parsing restarts here after previous syntax error

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(221): error: this declaration has no storage class or type specifier

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(221): error: expected a ";"

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(224): warning: parsing restarts here after previous syntax error

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(226): error: identifier "boxes_num" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(226): error: identifier "col_blocks" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(227): error: this declaration has no storage class or type specifier

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(227): error: declaration is incompatible with "void __THCudaCheck(cudaError_t, const char *, int)" D:/Anaconda/envs/pytorch_gpu/lib/site-packages/torch/include\THC/THCGeneral.h(59): here

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(227): error: identifier "mask_dev" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(227): error: too many initializer values

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(236): error: this declaration has no storage class or type specifier

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(236): error: declaration is incompatible with "void memset(void , int, size_t)" C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/include\vcruntime_string.h(63): here

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(236): error: too many initializer values

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(236): error: a value of type "size_t *" cannot be used to initialize an entity of type "int"

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(238): error: identifier "boxes" is undefined

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(242): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(255): warning: parsing restarts here after previous syntax error

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(257): error: expected a declaration

H:\yolov7\yolov7-obb-master\utils\nms_rotated\src\poly_nms_cuda.cu(260): error: expected a declaration

wyk-study commented 1 year ago

后来我搭建了个新环境,torch=1.10.1、torchvision==0.11.2 python =3.8 。然后直接跑的,没有运行setup.py。现在可以训练,训练时可以使用GPU但是预测时不能使用GPU不知道为什么

Cindy233 commented 1 year ago

谢谢您,后来我用了学长修改过的poly_nms_cuda.cu组件搭建成功了!

wyk-study commented 1 year ago

我现在也可以用GPU了,我把setup.py中的 sources=[ 'E:/python_file/yolov7-obb/utils/nms_rotated/src/nms_rotated_cpu.cpp', 'E:/python_file/yolov7-obb/utils/nms_rotated/src/nms_rotated_ext.cpp' ], sources_cuda=[ 'E:/python_file/yolov7-obb/utils/nms_rotated/src/nms_rotated_cuda.cu', 'E:/python_file/yolov7-obb/utils/nms_rotated/src/poly_nms_cuda.cu', ]), 都换成自己的文件夹路劲就可以成功运行,setup.py 然后将生成的yolov7-obb\build\lib.win-amd64-3.8\nms_rotated_ext.cp38-win_amd64.pyd文件复制到yolov7-obb\utils\nms_rotated文件夹下就可以完美的运行了。训练和预测都可以使用GPU