yolov3 darknet GPU配置及测试demo

 最近要用yolov3跑数据,记录下整个过程和踩的坑吧。。。

 配置过程是按照官网上一步步来的

环境是乌班图+cuda9 +cudnn 5.1 驱动啥的都配好了,我就直接傻子上路啦。

一 下载工程 通过git克隆

 git clone https://github.com/pjreddie/darknet.git

然后cd darknet之后,由于我要用GPU版本,就先vim Makefile文件了

将GPU,CUDNN设置为1代表使用GPU,因为涉及在线测试的话将OPENCV打开了要不测试的时候框框并不会在原图上出现而是产生一个jpg在darknet目录下。

除此之外还要更改两个地方

注意修改上图的NVCC 跟 GPU中的common和ldflags为自己的cuda所在的目录,一般cuda都安装在usr/local里面了,自己去找下自己的版本吧。

然后保存退出,make文件。

我的直接编译通过了没有问题,有的人可能在这里报错,就根据少什么包装什么就行啦,记得先执行 make clean。至此GPU版本就测试好了。

 

然后下面测试一下yolov3是否能用,先在官网上down一下v3的权重。

wget https://pjreddie.com/media/files/yolov3.weights

然后测试一下data里面的demo图

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

如果ok的话在主目录下可以看到,开了opencv则会直接显示出来:

如果darknet运行error,总结了两个bug,一个是我遇到的一个是别人遇到的。

我遇到的:

CUDA Error: out of memory
darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.

解决办法:

 这是因为在yolov3的cfg文件中目前开启的是train模式,batchsize为64,要做的是 vim cfg/yolov3.cfg 按照下面步骤即可

# Testing
batch=1       取消注释
subdivisions=1
# Training
#batch=64     注释掉
#subdivisions=16

 

其他人遇到的:

Loadingweights from yolo.weights...Done!
CUDA Error:invalid device function
darknet: ./src/cuda.c:21: check_error: Assertion `0' failed.
Aborted (core dumped)
 

这是因为配置文件Makefile中配置的GPU架构和本机GPU型号不一致导致的。
更改前默认配置如下(不同版本可能有变):

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_20,code=[sm_20,sm_21] \ This one is deprecated?
# This is what I use, uncomment if you know your arch and want to specify
# ARCH= -gencode arch=compute_52,code=compute_52
 

compute_30表示显卡的计算能力是3.0,几款主流GPU的compute capability列表:

所以Tesla K80对应compute_30,Tesla K40c对应compute_35,Titan X对应compute_52,根据自己的GPU型号的计算能力进行配置,例如配置为:


ARCH= -gencode arch=compute_35,code=compute_35 \

然后重新编译即可。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值