ROS 编译Darknet

本文已参与「新人创作礼」活动,一起开启掘金创作之路

编译Darknet

git clone github.com/pjreddie/da…

修改Makefile文件

GPU=1 CUDNN=1 OPENCV=1 OPENMP=0 DEBUG=0

cd darknet
make
复制代码

在这里插入图片描述

安装CUDA:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pinsudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pubsudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
sudo apt-get -y install cuda
复制代码

参考链接:developer.nvidia.com/zh-cn/cuda-… 在这里插入图片描述

下载CUDNN,并安装;

参考链接:developer.nvidia.com/rdp/cudnn-a…

安装完,重启

sudo reboot
复制代码

在这里插入图片描述

因为pjreddie版的darknet的代码比较老旧了,依赖于cudnn7.x,所以在一个CUDA11.1+cudnn8.x的环境下编译pjreddie版的darknet的话,会报错。

解决方案:修改src/src/convolutional_layer.c文件 开头处添加:

#define PRINT_CUDNN_ALGO 0
#define MEMORY_LIMIT 2000000000
复制代码

参考链接:blog.csdn.net/qq_41580422… 在这里插入图片描述

由于OpenCV版本过高(opencv 4.4),修改src/image_opencv.cpp 将第63行修改为:

  //IplImage ipl = m;
    IplImage ipl = cvIplImage(m);
复制代码

参考链接:blog.csdn.net/baidu_34172…

在这里插入图片描述

修改Makefile

在这里插入图片描述 路径根据自己的内容进行修改

参考链接:blog.csdn.net/Chen_qi_hai…

在这里插入图片描述

原来是cuda版本高,不支持运算,所以解决方法是 注释部分: 在这里插入图片描述 参考链接:blog.csdn.net/weixin_4119…

编译成功,进行简单测试:

下载权重:

cd darknet
复制代码
wget https://pjreddie.com/media/files/yolov3.weights
复制代码
wget https://pjreddie.com/media/files/yolov3-tiny.weights
复制代码
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
复制代码

在这里插入图片描述

出现这个问题的原因是显存炸了。

./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg 
复制代码

在这里插入图片描述

使用Darknet深度学习框架训练模型

下载已经标注好的数据集;

  • 将数据集VOC(.xml)转换从YOLO(.txt)

  • 划分数据集(galss_train.txt)和训练集(glass_val.txt)

修改data/voc.names文件:

在这里插入图片描述

修改cfg/voc.data,针对自己的路径作出修改

在这里插入图片描述

修改cfg/yolov3-tiny.cfg

在这里插入图片描述

需要改两处这样的地方,需要修改classes,filter=3(classes+1+4);*

在这里插入图片描述

下载预训练权重:

wget https://pjreddie.com/media/files/yolov3_tiny.weights
./darknet partial ./cfg/yolov3-tiny.cfg ./yolov3-tiny.weights ./yolov3-tiny.conv.15 15
复制代码

训练模型:

sudo ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15
sudo ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-tiny_10000.weights -map
复制代码

模型会自动保存;

模型测试:

 ./darknet detector test cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-tiny_10000.weights data/11.png
复制代码

测试结果:

在这里插入图片描述

Guess you like

Origin juejin.im/post/7077340700425060382