Darknet-YOLOV3编译成动态链接库并进行检测

Darknet深度学习框架是一个用C和CUDA编写的开源神经网络框架。它安装速度快,易于安装,并支持CPU和GPU计算。
GitHub源码:https://github.com/pjreddie/darknet
官网:https://pjreddie.com/darknet/
YOLO算法中把物体检测问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率。其优点有:
1、速度快。在Titan X GPU上的速度是45 fps(frames per second),加速版的YOLO差不多是150fps。
2、基于图像的全局信息进行预测。这一点和基于sliding window以及region proposal等检测算法不一样。与Fast R-CNN相比,YOLO在误检测(将背景检测为物体)方面的错误率能降低一半多。
3、可以学到物体的generalizable-representations。可以理解为泛化能力强。
4、准确率高。
最近在使用Yolov3进行目标物体(行人)的检测,原本是在Pytorch上用的,检测识别的部分是用python3写的,但因为要和ROS结合起来使用,再加上要用到Kinect摄像头,一方面ROS默认python使用的版本是2.7,另一方面纯python写的代码调用起来效率确实没那么高,一旦同时好几个工作同时进行的话,效率就更低了。于是决定把目标检测那边也使用C++。Pytorch其实有C++版本,用的是libtorch,但因为教程比较少,就先不去踩坑了。
官方的github源码挺好的,但菜菜的我想实现的是加载网络之后,传一张图片返回识别的标定框信息的功能,但官方给的示例都是使用的./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg的方法进行识别的,目前我还没找到进行检测的那部分代码。
这里推荐另一份代码,给上github地址:https://github.com/AlexeyAB/darknet 这个库十分贴心,可以生成动态链接库供调用。
首先说编译方法,其实很简单。如果有CUDA,要使用GPU加速,要用OpenCV,要生成动态链接库,那么打开Makefile文件,修改下面的部分:

# GPU=0
GPU=1
# CUDNN=0
CUDNN=1
CUDNN_HALF=0
# OPENCV=0
OPENCV=1
AVX=0
OPENMP=0
# LIBSO=0
LIBSO=1
ZED_CAMERA=0

# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)

也就是将对应的0改成1
然后直接make,就可以生成.so文件了
下面是调用动态链接库的使用:
参考博客:https://blog.csdn.net/haithink/article/details/88843297
cpp文件:

#include <iostream>
#include <iomanip>
#include <vector>
#include <fstream>

#include <opencv2/opencv.hpp>            // C++
#include <opencv2/highgui/highgui_c.h>   // C
#include <opencv2/imgproc/imgproc_c.h>   // C
#include "yolo_v2_class.hpp" 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值