Darknet简介
darknet是一个极易上手的深度学习框架,自带图像编解码,文档也十分的丰富。最难能可贵的是darknet框架安装简单;没有任何依赖项;有有好的python接口。
darknet框架易用于Windows平台和Linux平台,
这是一个小众的深度学习框架,能看到这篇博客,也就不用我来吹捧darknet了。
安装darknet
darknet项目地址:https://github.com/AlexeyAB/darknet
clone后会得到darknet目录。进入darknet目录后打开Makefile文件
文件示例:
- LIBSO选项,打开有惊喜
# 想开启哪个功能就将它的值改成1
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=0
AVX=0
OPENMP=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)
DEBUG=0
ARCH= -gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=[sm_50,compute_50] \
-gencode arch=compute_52,code=[sm_52,compute_52] \
-gencode arch=compute_61,code=[sm_61,compute_61]
OS := $(shell uname)
# 用的是什么型号的显卡,就给对应的 “#” 号去掉
# Tesla V100
# ARCH= -gencode arch=compute_70,code=[sm_70,compute_70]
# GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores
ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]
# Jetson XAVIER
# ARCH= -gencode arch=compute_72,code=[sm_72,compute_72]
# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
# ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61
# GP100/Tesla P100 - DGX-1
# ARCH= -gencode arch=compute_60,code=sm_60
# For Jetson TX1, Tegra X1, DRIVE CX, DRIVE PX - uncomment:
# ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
# For Jetson Tx2 or Drive-PX2 uncomment:
# ARCH= -gencode arch=compute_62,code=[sm_62,compute_62]
配置完成后,剩下的就是make了
直接make install就OK了。
检测是否安装成功
./darknet detector test data/detect.data data/yolov3.cfg data/yolov3.weight
简单使用
安装完成以后,就可以选择你要使用的weight文件可模型进程使用了。搭配python接口,很容易做出一个图片分类接口。
看到没有,打开LIBSO选项后,目录下会产生use_darknet.py的文件
简单示例:
import python.darknet as dn
dn.set_gpu(0)
net = dn.load_net(str.encode("cfg/tiny-yolo.cfg"),
str.encode("weights/tiny-yolo.weights"), 0)
meta = dn.load_meta(str.encode("cfg/coco.data"))
res = dn.detect(net, meta, str.encode("data/dog.jpg"))
print(res)