一、网址:https://github.com/AlexeyAB/darknet
二、训练自己的数据(检测人头):
1、经过1周训练的效果图,总体上效果还是很OK的,检测精度也比较高:
2、数据准备:
2.1、标注工具:
标注工具在我的其他博客里有说明,这部分跳过,标注的人头的时候注意选择成person即可,方便以后生成训练时使用的.txt文件。
2.2、标注人头:
一般规则 - 您的训练数据集应包含您要检测的一组相对大小的对象(样本要充分):
train_network_width * train_obj_width / train_image_width ~= detection_network_width * detection_obj_width / detection_image_width
train_network_height * train_obj_height / train_image_height ~= detection_network_height * detection_obj_height / detection_image_heigh
2.3、训练数据转换:
需要把标注生成的.xml文件转换成.txt文件,切记名字要对应上:
2.4、生成train.txt和val.txt,比例大约为8:1
2.5、训练数据:
1)、修改Makefile配置,使用GPU训练
GPU=1 #如果使用GPU设置为1,CPU设置为0
CUDNN=1 #如果使用CUDNN设置为1,否则为0
OPENCV=1 #如果调用摄像头,还需要设置OPENCV为1,否则为0
OPENMP=0 #如果使用OPENMP设置为1,否则为0
DEBUG=0 #如果使用DEBUG设置为1,否则为0
CC=gcc
NVCC=/home/user/cuda-9.0/bin/nvcc #NVCC=nvcc 修改为自己的路径
AR=ar
ARFLAGS=rcs
OPTS=-Ofast
LDFLAGS= -lm -pthread
COMMON= -Iinclude/ -Isrc/
CFLAGS=-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC
...
ifeq ($(GPU), 1)
COMMON+= -DGPU -I/home/hebao/cuda-9.0/include/ #修改为自己的路径
CFLAGS+= -DGPU
LDFLAGS+= -L/home/hebao/cuda-9.0/lib64 -lcuda -lcudart -lcublas -lcurand #修改为自己的路径
endif
编译程序:
make -j8
2)、开始训练:
./darknet detector train cfg/head.data cfg/yolov3-head.cfg darknet53.conv.74 -gpus 0,1
3)、检测目标:
./darknet detect cfg/yolov3-head.cfg weights/yolov3_150000.weights data/dog.jpg
注:
该博客主要做记录使用,由于数据属于公司,不能提供给大家,有些问题还没有解决,希望专业人士能够指点一下,QQ:187100248.
问题如下:
1、训练到10w多次,结果不收敛,一直震荡,不知道如何解决:
2、小目标会检测不到,漏掉的较多;
3、检测时间如何优化的更好。
算法demo,封装了一个前期的演示效果,验证算法可以在windows上运行,需要的环境:
vs2015+cuda9.1+windows10+release版本即可:
demo网盘地址:链接:https://pan.baidu.com/s/10AW8SHdGarzsZKuIaTSvPA 密码:9al6
评论(0)
您还未登录,请登录后发表或查看评论