针对本项目所具体使用的检测方法为yolo系列检测方法中的yolov3检测方法, 关于本检测方法的原理这里不详细说明(yolov3文章地址: https://zhuanlan.zhihu.com/p/76802514)。 该笔记记录基于darknet框架的yolov3目标检测方法在linux(ubuntu)主机以 及在Xavier(Ubuntu系统的边缘计算平台)上的环境搭建。(如果想要在 windows上搭建网上也有较多的教程,自己查阅),这里现在darknet框架的主 要原因是该框架所需的依赖库较少,易于安装且检测精度较高。 在linux主机上事先需要安装NVIDIA显卡驱动、CUDA、cudnn、opencv(其 版本建议在3.4,darknet不支持高于4.0版本的opencv),其显卡驱动, CUDA、cudnn都需要安装自己电脑显卡对应的包,具体安装方法参考地址: https://blog.csdn.net/Chen_qi_hai/article/details/104576198 对于Ubuntu系统上安装opencv方法与下述在Xavier上安装opencv方法类似, 但是pc机上报错可能性较小,Xavier是arm架构安装过程中出现问题较多,主要 参考下述博客安装: https://blog.csdn.net/qq_38236355/article/details/88864023 https://blog.csdn.net/heiheiya/article/details/82590601 Xavier安装opencv方法可参考下述: (Xavier—opencv所需工具包: 链接:https://pan.baidu.com/s/1m0niDck9kqrhluZHEVANNg 提取码:r90c )
install opencv 3.4 and opencv_contrib 3.4 on Xavier // open the fan of the Xavier and change the value to 100;
drt@drt:~$ sudo gedit /sys/devices/pwm‐fan/target_pwm 6 ################################################################ 78 /// 910 //
(1) change the source;
drt@drt:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup drt@drt:~$ sudo gedit /etc/apt/sources.list
// Add:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐updates mai n restricted universe multiverse
deb‐src http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐security ma in restricted universe multiverse
deb‐src http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐securit y main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐backports m ain restricted universe multiverse
deb‐src http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic‐backpor ts main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic main univer se restricted
deb‐src http://mirrors.tuna.tsinghua.edu.cn/ubuntu‐ports/ bionic main un iverse restricted
// Save and update:
drt@drt:~$ sudo apt update
// (2) Install dependencies:
drt@drt:~$ sudo apt‐get install build‐essential
drt@drt:~$ sudo apt‐get install python‐dev python‐numpy libtbb2 libtbb‐d ev libjpeg‐dev libpng‐dev libtiff‐dev libjasper‐dev libdc1394‐22‐dev ###########################################################
// error: E: 无法定位软件包 libjasper‐dev
// Solution:
drt@drt:~$ sudo add‐apt‐repository "deb http://mirrors.tuna.tsinghua.ed u.cn/ubuntu‐ports/ xenial main multiverse restricted universe"
drt@drt:/$ sudo apt update
drt@drt:~$ sudo apt‐get install python‐dev python‐numpy libtbb2 libtbb‐d ev libjpeg‐dev libpng‐dev libtiff‐dev libjasper‐dev libdc1394‐22‐dev #################################################################
// go on
drt@drt:~$ sudo apt‐get install libavcodec‐dev libavformat‐dev libswscal e‐dev libv4l‐dev liblapacke‐dev libxvidcore‐dev libx264‐dev libatlas‐base‐d ev gfortran ffmpeg
drt@drt:~$ sudo apt‐get install python2.7‐dev python3.6‐dev # denpen on your python3 version
// (3) install and compile opencv 3.4 and opencv_contrib 3.4 drt@drt:~/opencv‐3.4$ mkdir build
drt@drt:~/opencv‐3.4$ cd build
drt@drt:~/opencv‐3.4/build$ cmake ‐DCMAKE_BUILD_TYPE=Release ‐DCMAKE_INS TALL_PREFIX=/usr/local ‐D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib‐3.4/m odules .. drt@drt:~/opencv‐3.4/build$ sudo make ‐j8 #####################################################
// error:
/home/drt/opencv‐3.4/opencv_contrib‐3.4/modules/xfeatures2d/src/boostdes c.cpp:654:20: fatal error: boostdesc_bgm.i: No such file or directory 58 #include "boostdesc_bgm.i"
^~~~~~~~~~~~~~~~~ compilation terminated.
// Solution: 63 链接: https://pan.baidu.com/s/1NpvudGHDXkBjOHZoSUG7Lw 提取码: kewc Download and unzip. Put all the files in /home/drt/opencv‐3.4/opencv_con trib‐3.4/modules/xfeatures2d/src/ .
then, drt@drt:~/opencv‐3.4/build$ sudo make ‐j8
// another error: /home/drt/opencv‐3.4/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory # include "opencv2/xfeatures2d/cuda.hpp" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Solution: 在报错的那个module中,这里是stitching文件夹下的CMakeLists中添加:
INCLUDE_DIRECTORIES("/home/drt/opencv‐3.4/opencv_contrib‐3.4/modules/xfe atures2d/include") # (路径需要改成自己文件的路径) then, drt@drt:~/opencv‐3.4/build$ sudo make ‐j8
if it doesn't work, open the file "home/drt/opencv‐3.4/modules/stitchin g/include/opencv2/stitching/detail/matchers.hpp",
change the " # include "opencv2/xfeatures2d/cuda.hpp" " to " # include "/home/drt/opencv‐3.4/opencv_contrib‐3.4/modules/xfeatures2d/include/opencv 2/xfeatures2d/cuda.hpp" "(your path)
then,
drt@drt:~/opencv‐3.4/build$ sudo make ‐j8 ######################################################################## ##########
// (4) compile successfully and make install:
drt@drt:~/opencv‐3.4/build$ sudo make install
drt@drt:~/opencv‐3.4/build$ sudo gedit /etc/ld.so.conf.d/opencv.conf
// enter the following and save:
/usr/local/lib
drt@drt:~/opencv‐3.4/build$ sudo ldconfig # make it work
drt@drt:~/opencv‐3.4/build$ sudo gedit ~/.bashrc
// enter: PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
drt@drt:~/opencv‐3.4/build$ source ~/.bashrc
/
// (5) test:
drt@drt:~$ cd /home/drt/opencv‐3.4/samples/cpp/example_cmake
drt@drt:~/opencv‐3.4/samples/cpp/example_cmake$ sudo make .
drt@drt:~/opencv‐3.4/samples/cpp/example_cmake$ sudo make drt@drt:~/opencv‐3.4/samples/cpp/example_cmake$ ./opencv_example # you can install the camera and you will see the image
下载darknet:
git clone https://github.com/pjreddie/darknet.git
等clone结束,在home目录下会出现darknet-master的文件,git clone是通过 github下载项目,建议利用网速较好的环境进行下载。 进行darknet文件夹,修改Makefile文件,启用GPU和opencv等使能端口
GPU=1
CUDNN=1
OPENCV=1 #这里gpu、cudnn、opencv三个使能端都置为1打开 OPENMP=0 # OpenMP是一套支持跨平台共享内存方式的多线程并发的编程API
DEBUG=0
ARCH= ‐gencode arch=compute_72,code=[sm_72,compute_72] #Xvolta 架构 Xavier 计算能力7.2
注意:如果使能CUDA需要制定CUDA路径,不然会出现以下错误:
解决方法: # 修改makefile 修改为对应的CUDA 版本,具体修改三个地方:
1、NVCC = /usr/local/cuda‐10.2/bin/nvcc #具体根据自己的cuda路径进行修改
2、COMMON+= ‐DGPU ‐I/usr/local/cuda‐10.2/include/
3、LDFLAGS+= ‐L/usr/local/cuda‐10.2/lib64 ‐lcuda ‐lcudart ‐lcublas ‐lcurand
之后进入darknet,执行darknet的编译:
sudo make clean
sudo make ‐j8 #xavier是8核处理
等待编译结束,若无报错输入下命令验证:
./darknet
出现如上显示,darknet编译完成。 下载口罩检测所需文件:boat_face.names、boat_face.data、 yolov3_boat_face.cfg、yolov3_boat_face_final.weight 下载链接:https://pan.baidu.com/s/1owAey2w2yt5H56Igj8eVog 提取码:lp10
将文件boat_face.names放入data文件夹, boat_face.data/yolov3_boat_face.cfg都放入cfg文件夹,新建一个名为 weight的文件夹将yolov3_boat_face_final.weight放入。 执行检测代码:
./darknet detector demo cfg/boat_face.data cfg/yolov3_boat_face.cfg weigh t/yolov3_boat_face_final.weight
可能出现错误: Failed to load module “canberra-gtk-module”,执行下列命令:
sudo apt‐get install libcanberra‐gtk‐module
执行过程中,按照提示,输入y,然后再次执行刚才报错的命令。
摄像头显示较模糊,色彩不是很明艳,推断还是opencv的相关问题。 查看了网上别人分享的有关Xavier速度如下:同场景下FPS速度有差异。