YOLOv3训练自己的VOC数据集

原文链接:点击打开链接

 

刚开始做深度学习检测任务,在尝试了https://github.com/rbgirshick/py-faster-rcnnhttps://github.com/weiliu89/caffe/tree/ssd之后,正好看到YOLOv3出来,据说比RetinaNet快3.8倍,比SSD快3倍,速度很惊人,因为任务是要在TX1上做实时检测,所以赶紧试起来

1. darknet配置起来不要太方便

下载工程

[html] view plain copy

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

[html] view plain copy

  1. cd darknet  

修改配置文件

[html] view plain copy

  1. gedit Makefile  

修改

GPU=1

ifeq ($(GPU), 1) 
COMMON+= -DGPU -I/home/XXXXcuda/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/home/XXXX/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
endif

编译

[html] view plain copy

  1. make -j16  

下载预训练权值文件

[html] view plain copy

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

测试一下图片,测试图在data文件夹,结果图在darknet根目录

[html] view plain copy

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

测一下视频文件,video file自己放段视频

[html] view plain copy

  1. ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>  

2. 训练自己的VOC数据

标记部分不讲了,一个标记工程https://github.com/tzutalin/labelImg

根目录scripts下新建一个VOCdevkit,其中再建一个VOC2007,放Annotations,ImageSets,JPEGImages三个文件夹。

修改scripts/voc_label.py

[html] view plain copy

  1. sets=[ ('2007', 'train'), ('2007', 'val'), ('2007', 'test')]  

[html] view plain copy

  1. classes = ["person"]#修改自己的类别,我只有一类  

[html] view plain copy

  1. os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt  > train.txt")#输出删掉下面一句  

执行voc_label.py

[html] view plain copy

  1. python voc_label.py  

在scripts下刚好得到4个txt,其中train.txt为所有的图用于训练

下载imagenet预训练模型

[html] view plain copy

  1. wget https://pjreddie.com/media/files/darknet53.conv.74  

修改cfg/voc.data

[html] view plain copy

  1. classes1#类别数  
  2. train  = /xxx/yolov3/darknet/scripts/train.txt  
  3. valid  = /xxx/yolov3/darknet/scripts/2007_test.txt  
  4. names = data/voc.names  
  5. backup = /xxx/yolov3/darknet/results/  #输出权值路径  

修改data/voc.names

[html] view plain copy

  1. person  #自己的类别名  

修改cfg/voc.data,classes为自己的类别数,filters为3*(classes+5),其余超参按需修改。

开始训练

[html] view plain copy

  1. ./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1  

测试了一下视频效果,一块1080ti检测352*288的视频,fps在120~180,耗显存700M,对比SSD的fps55~65,耗显存1G,最大帧率上速度确实提高3倍左右。2块1080ti测试视频fps在190~240。

TX1上效果,SSD测试视频4~5fps,YOLOv3测试视频24~35fps。

参考

https://blog.csdn.net/davidlee8086/article/details/79693079

https://blog.csdn.net/sinat_30071459/article/details/53100791

 

你可能感兴趣的:(Machine,Learning)