1 安装和使用
1.1 安装
安装平台:linux
# 代码下载
git clone https://github.com/pjreddie/darknet.git
# 修改Makefile,在里面更改编译选项,看是否需要GPU、opencv
cd darknet
sed -i '1s/GPU=0/GPU=1/' Makefile
sed -i '2s/CUDNN=0/CUDNN=1/' Makefile
sed -i '3s/OPENCV=0/OPENCV=1/' Makefile
# 安装
make
# 下载预训练的模型,先下载第一个,用来测试
wget https://pjreddie.com/media/files/yolo.weights
wget https://pjreddie.com/media/files/tiny-yolo-voc.weights
wget http://pjreddie.com/media/files/yolov1.weights
wget http://pjreddie.com/media/files/tiny-yolo.weights
wget http://pjreddie.com/media/files/tiny-coco.weights
wget http://pjreddie.com/media/files/yolo-coco.weights
1.2 测试
在darknet文件夹下执行命令:
./darknet detect cfg/yolov2.cfg yolo.weights data/dog.jpg
参数说明:
-
detect:表示该命令用于“目标检测”
-
cfg/yolo.cfg:yolo模型的配置文件,包含它的网络结构(路径自定义)
-
yolo.weights:训练好的权重分布,路径自定义(路径自定义)
-
data/dog.jpg:要测试的图片(路径自定义)
还可以增加参数:
./darknet detect cfg/yolov2.cfg yolo.weights data/dog.jpg -thresh 0.1
-thresh
表示阈值,可以设置;
Temp
三个参数:
- epoch
所有数据传入网络完成一次前向计算及反向传播称为一个epoch(个人理解为训练的次数),随着epoch的数量增多,模型的输出会这样变化: - batch size
把数据集分成n个batch,每个batch所读应的数目就是batch size(即:总数/n),分批次训练,如果数据量少,还是不要分批次; - iterations
就是完成一次epoch所需要的batch个数;
举个例子:有2000个数据,分成4个batch,那么batch size就是500,因为一个epoch要运行所有的数据,所以1个epoch需要4次iterations;
相关文件
- cfg/coco.data
指定了一些变量名classes= 80 train = /home/pjreddie/data/coco/trainvalno5k.txt valid = coco_testdev #valid = data/coco_val_5k.list names = data/coco.names backup = /home/pjreddie/backup/ eval=coco
- data/coco.names
存放不同的类别名称,比如下面这些:person bicycle car motorbike aeroplane bus train truck boat traffic light fire hydrant stop sign parking meter bench bird ...
- cfg/yolov2.cfg
网络模型的配置文件[net] # Testing batch=1 subdivisions=1 # Training # batch=64 # subdivisions=8 width=608 height=608 channels=3 momentum=0.9 decay=0.0005 angle=0 saturation = 1.5 exposure = 1.5 hue=.1 learning_rate=0.001 burn_in=1000 max_batches = 500200 policy=steps steps=400000,450000 scales=.1,.1 [convolutional] batch_normalize=1 filters=32 size=3 stride=1 pad=1 activation=leaky ...