环境:
ThinkPad E470c
GeForce 920MX
ubuntu18.04
cuda10.1
遇到的问题:
1)make darknet,找不到opencv头文件:重新过opencv按安装过程;
--重装OK,问题依旧;
2)弄清楚opencv是如何在程序中被引用的(自己编写一个opencv代码,编译试试);
————通过CmakeList.txt,再通过pkg-config,再通过"opencv.pc"
3)可能是opencv版本问题;
3.4.7编译出来是opencv4,默认也不生成opencv.pc
4)安装opencv_contrib;
darknet不用该模块;
5)使用cmake-gui重新编译;
——编译出错,可能gui选择一些多余编译选项;
6)使用Cmake-gui编译一个opencv程序;
Successfully,成功!!!!
——不能用g++ test.cpp -o test `pkg-config --cflags --libs opencv`
会找不到所需文件,无论“.h”还是“.hpp”
——要用sudo cmake . 和 make
————Why?为什么
应该cmake不是借助pkg-config来找到的!
find_package( OpenCV REQUIRED )
target_link_libraries( linuxidc ${OpenCV_LIBS} )
CMakeLists.txt中这两句可能不通过opencv.pc来找头文件。
7)版本问题:cmake编译Test.c例子时,提示使用4.1.1版本,安装的是3.4.7;不生成opencv.pc文件;
不要用过渡版本
8)opencv例子是include“hpp”,没有直接引用.h;
9)学习使用cmake;
10)test代码是“.c”还是“.cpp”的差异;“.c”的一直编译不过,库不一样;
".c"(c语言的API接口)可能opencv3.4.7已经不支持;
11)cmake时要enable pkgconfig目录生成(https://blog.csdn.net/avideointerfaces/article/details/90216832)
12)darknet只是使用opencv基本功能,所以无需把contrib部分编译进来
13)cmake-gui应该会比cmake多编译很多东西,因为cmake-gui中很多选项是默认勾选的?按理说都是缺省值呀
14)没错!!!!就是它的原因:OPENCV_GENERATE_PKGCONFIG = YES,编译opencv时必须加上这一项,才会产生“opencv.pc"文件
!!!OPENCV_GENERATE_PKGCONFIG在3.4.1中都没有,默认生成;
还是因为版本选择不对,opencv3.4.7,但生成的".pc"为“opencv4.pc",所以该本版讲OPENCV_GENERATE_PKGCONFIG缺省值设置为NO,啊哈哈,哭呀
15)opencv3.4.1编译报错
Cuda 10.0 fatal error: dynlink_nvcuvid.h: No such file or directory
cuda10版本有修改,解码器独立出去了;关掉CUDA视频解码,-D WITH_NVCUVID=OFF,再编译
!出现大量警告:opencv太老;gcc版本太高等
https://github.com/opencv/opencv_contrib/issues/1786
That's why -DBUILD_opencv_cudacodec=OFF fixes the issue. Thanks @alalek !
opencv OK!
16)NVIDIA驱动老是死掉;
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.(直接搜索上面这句话)
————ubuntu升级内核造成NVIDIA驱动和内核不匹配,选择所需内核;
重装驱动是可以解决的,但下次内核升级又会出问题:a内核不升级;b指定内核启动;
重装显卡驱动
(注意:如果使用anaconda,貌似不需要手动安装Cuda和cudnn,安装tensorflow时会自动安装;https://www.cnblogs.com/zmbreathing/p/CUDA.html)
18)如何来使用YOLO,实现一个检查小程序?
a训练模型:
标准数据;数据分组;解析数据;超参设定;
b导出模型;
c加载模型进行推理;
19)2G现存提示CUDA Error: out of memory
————研究下Darknet的参数配置:图片数量(batch和subdivision),还有图片大小(320、416、608)等
××××××××××××××
Linux,一定要注意版本对应,不要不要轻易追求新版本,除非你有时间,尤其是过渡版本,资料会很少!!!!
××××××××××××××