记录自己fork少样本检测代码FSOD中遇到的问题和解决方法
fsod-code
paper
参考:参考一
主要在编译sh文件时候出现了两个问题:
第一个问题,是缺少了文件nms_cuda.c
gcc: error: /home/zytr/桌面/FSOD-code-master/lib/model/nms/src/nms_cuda.c: 没有那个文件或目录
gcc: fatal error: no input files
欢迎使用Markdown编辑器
解决方法:
自己新建一个nms_cuda.c文件
#include <THC/THC.h>
#include <stdio.h>
#include "nms_cuda_kernel.h"
// this symbol will be resolved automatically from PyTorch libs
extern THCState *state;
int nms_cuda(THCudaIntTensor *keep_out, THCudaTensor *boxes_host,
THCudaIntTensor *num_out, float nms_overlap_thresh) {
nms_cuda_compute(THCudaIntTensor_data(state, keep_out),
THCudaIntTensor_data(state, num_out),
THCudaTensor_data(state, boxes_host),
THCudaTensor_size(state, boxes_host, 0),
THCudaTensor_size(state, boxes_host, 1),
nms_overlap_thresh);
return 1;
}
第二个问题:
一直报.DistutilsExecError: command ‘gcc’ failed with exit status 这个错误,应该是GCC版本的问题,需要对应。然后会导致后面的文件没办法生成,所以应该去解决gcc failed的问题,因为用的是9.0的cuda,应该指定-arch=sm_61,这样便没有问题了。
cd src
echo "Compiling stnm kernels by nvcc..."
nvcc -c -o nms_cuda_kernel.cu.o nms_cuda_kernel.cu -x cu -Xcompiler -fPIC -arch=sm_52
cd ../
python build.py