darknet的编译
git draknet
git clone https://github.com/pjreddie/darknet
配置CPU版
cd darknet
make
配置GPU版
修改配置文件
GPU=1
CUDNN=1
OPENCV=1
NVCC=/usr/local/cuda-8.0/bin/nvcc
最主要的是修改你的CUDA路径为你系统中安装的路径。
编译
make
执行方法:
主页链接 在官网主页上都有运行的方法。查看即可。
遇到的问题
./src/network.c:402: resize_network: Assertion `0’ failed
解决方案:在Makefile文件中,添加和你的GPU相应的计算能力的数值。也就是-gencode arch=compute_61,code=sm_61。更改后面的数值即可。还要将network.c文件中402行注释掉。(当然这样有点掩耳盗铃的意思)另外,可能需要在cfg文件夹下更改yolov3-voc.cfg文件中的batch数值。这个使用训练中的数据就可以了,64和16.如果还报错的话,可以将16改为8再尝试一下。反正就是多多尝试就好了。
参数的含义
参数如下图:
batch :所有训练图片的一个批次
subdivisions 将一个batch的图片分为sub组送入GPU,减轻显卡压力
也就是说每轮迭代会从所有训练集里随机抽取 batch = 64 个样本参与训练,所有这些 batch 个样本又被均分为 subdivision = 16 次送入网络参与训练,以减轻内存占用的压力)
所以,这个subdivision其实是可以注释掉的。个人理解的话,如果subdivisions越大的话,其实是训练过程中越慢的,batch越大的话,其实是训练速度越快的。