复现darknet
复现https://github.com/pjreddie/darknet中代码
笔记本环境:
gpu:GTX 1050 Ti(mobile)
cpu:intel i7-7700HQ
内存:16GB
Ubuntu版本:16.04
NVIDIA驱动版本:384
cuda版本:cuda_9.0.176_384.81_linux
cudnn版本:cudnn-9.0-linux-x64-v7.1
opencv源码版本:2.4.13.6
1.在Windows下安装Ubuntu双系统
2.安装NVIDIA驱动
3.安装CUDA并配置CUDnn
4.安装Opencv并设置环境变量
5.安装Darknet
这里使用16.04版本主要原因是该版本最稳定且相关文档较多,易于操作,作者也尝试在Ubuntu18.04和20.04下进行复现,均遇到阻碍查询解决方法无果后放弃这两个版本。
a.制作ubuntu系统启动U盘,使用软件UltralSO
b.在Windows下创建相应分区,作者在双硬盘的情况下于第一块硬盘最后划分大约200M的efi系统分区,在第二块硬盘中划分相对较大的空闲分区存放Ubuntu系统
c.进入BIOS关闭Secure Boot,再由U盘启动进行安装。在安装界面选项条移至Install Ubuntu并按e进入编辑启动指令,在Linux开头行最后删除—并用nomodeset替换
d.按照指示继续安装,并按需安排分区大小
e.等待安装完成并重启
a.ubuntu-drivers devices
查看gpu和推荐的驱动版本
b. 选择自动安装驱动sudo ubuntu-drivers autoinstall
这里能在重启后看到自己的显卡信息
该操作针对Ubuntu 18.04,因其预装GCC的版本为7.3,而cuda编译需要更低的版本,这里对gcc进行手动降级至4.8版本。
而本人最后选择16.04 做一遍该操作以防出现新的问题。
1.对gcc降级:sudo apt-get install gcc-4.8
2.对g++降级:sudo apt-get install g++-4.8
3.然后进入到/usr/bin目录下输入:ls -l gcc*
cd /usr/bin
ls -l gcc*
显示结果如下:
lrwxrwxrwx 1 root root 7th 3月 20 11:38 /usr/bin/gcc -> gcc-7.3
表示gcc链接到gcc-7.3, 需要将它改为链接到gcc-4.8
sudo mv gcc gcc.bak #备份
sudo ln -s gcc-4.8 gcc #重新链接
将g++链接到g++4.8:
sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++
4.在/usr/bin目录下查看gcc和g++版本
ls -l gcc*
ls -l g++*
显示gcc和g++均链接到4.8版本,则说明安装成功
按照官网的指令步骤进行安装
配置环境,将以下两条加入.barshrc文件中。
打开.barshrc
sudo vim ~/.barshrc
在最后面加入下面两条语句
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
进入下载目录并解压在当前目录:
cd /home/qrt/Downloads
tar zxvf cudnn-9.0-linux-x64-v7.1.tgz
复制cudnn里的文件到cuda相关文件夹内
sudo cp /home/djy/Downloads/cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp /home/djy/Downloads/cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /home/djy/Downloads/cuda/include/cudnn.h /usr/local/cuda-9.0/lib64/ libcudnn*
下载Opencv,推荐使用梯子,选择2.4.13.6版本sources文件下载
下载并解压至/home/djy/Downloads目录下,然后将文件夹重命名为opencv
执行以下命令安装依赖项:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
修改opencv配置文件
1.进入到opencv/cmake 目录下,找到OpenCVDetectCUDA.cmake文件并打开,定位到26行,修改set(HAVE_CUDA 1)为set(HAVE_CUDA 0)。
2.进入到opencv 目录下,找到CMakeList.txt文件并打开,定位到176,177行,将ON改为OFF然后保存。
在opencv目录下新建build文件夹,然后执行以下命令:
cd build #进入到build文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. #开始编译
make -j8
sudo make install -j8
没有出现报错信息则说明opencv配置成功了
1)可以按照官网上面的步骤来安装:https://pjreddie.com/darknet/yolo/
git clone https://github.com/pjreddie/darknet 下载代码
cd darknet 进入darknet目录
make 编译
2)下载权重,然后保存在darknet的目录下
wget https://pjreddie.com/media/files/yolov3.weights
在darknet目录下打开终端,输入:
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
就可以进行测试了,如下图:
下面是对darknet目录下的Makefile文件进行的一些修改
每次修改完都需要重新编译
(1)如需使用gpu运算,修改如下,然后保存。
修改完后一定要重新编译,在darknet目录下打开终端,输入:
make clean
make -j8