参考自:https://blog.csdn.net/Bonjour_ca_va/article/details/104092508
1. 编译caffe-yolov3
这是用caffe重写的yolov3demo,我们在这个项目中进行验证。
git clone https://github.com/ChenYingpeng/caffe-yolov3
cd caffe-yolov3
mkdir build
cd build
cmake ..
make -j6
可能问题
- fatal error: caffe/caffe.hpp: 没有那个文件或目录
这应该是caffe安装的问题
解决
这是CMakeList.txt中关于caffe头文件的位置没有修改。需要修改的地方有三处:
1. 头文件
include_directories(${PROJECT_INCLUDE_DIR}
/home/deepblue/deepbluetwo/profile/caffe/include
/home/deepblue/deepbluetwo/profile/caffe/build/src
)
2. 链接库,只修改libcaffe.so
target_link_libraries(yolov3-plugin
/home/deepblue/deepbluetwo/profile/caffe/build/lib/libcaffe.so
/usr/lib/x86_64-linux-gnu/libglog.so
/usr/lib/x86_64-linux-gnu/libgflags.so.2
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.13
)
编译通过
2. 验证模型
编译通过之后,直接执行命令:
cd caffe-yolov3/build
./x86_64/bin/detectnet ../person_detect/yolov3.prototxt ../person_detect/yolov3.caffemodel ../images/person.jpg
可能问题
- CUDA Error: no kernel image is available for execution on the device
detectnet: /home/deepblue/deepbluetwo/chenjun/5_object_detect/caffe-yolov3/cuda.cpp:30: void check_error(cudaError_t): Assertion `0’ failed.
猜想 这是cuda报错,难道是安装caffe的时候没有附带gpu???
解决
作者的解释
于是将caffe的make.config中CUDA_ARCH变量copy到CMakeList.txt中。
set(
CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS};
-O3
-gencode arch=compute_53,code=sm_53 #tegra tx1
-gencode arch=compute_61,code=sm_61 #gtx 1060
-gencode arch=compute_62,code=sm_62 #tegra tx2
-gencode arch=compute_30,code=sm_30
-gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=sm_50
-gencode arch=compute_52,code=sm_52
-gencode arch=compute_60,code=sm_60
-gencode arch=compute_61,code=sm_61
-gencode arch=compute_61,code=compute_61
)
结果