系统:ubuntu16.04.5 | 查看命令:cat /etc/issue |
---|---|
GPU:RTX 2070 | 查看命令:nvidia-smi |
python:2.7.15 | 查看命令:python |
opencv:3.4.0 | 查看命令:pkg-config --modversion opencv |
CUDA Version:8.0.61 | 查看命令:cat /usr/local/cuda/version.txt |
CUDNN:6.0.21 | 查看命令:cat /usr/local/cuda/include/cudnn.h |
训练过程
1.标注数据,用到的是原图和标注数据(XML)
可以用LabelImg工具标注。
链接:https://pan.baidu.com/s/11zsNoah9nIRDjqgPPQ-xxA 提取码:874q
2.下载yolov3项目工程
git clone https://github.com/pjreddie/darknet
cd darknet
make
3.修改Makefile文件
GPU=1
CUDNN=1
OPENCV=1
-gencode arch=compute_61,code=[sm_61,compute_61] 根据GPU版本修改
NVCC=/usr/local/cuda-8.0/bin/nvcc
4.准备所需的数据集格式
1)建立VOCdevkit文件夹,里面为名为VOC2018的文件夹,在里面是4个文件夹,Annotations、 ImageSets、JPEGImages、labels
2)Annotations是存放标注的XML文件
ImageSets里面有个main文件夹,里面装着train.txt和val.txt,里面装的是图片名称的前缀儿
JPEGImages用于存放原图
labels用于存放每个图片目标数据的txt文件(纯数据)
3)执行getTxtOfTandV.py文件,提取文件名的前缀,并按1:9的比例分训练集和测试集(网上有)
#coding:utf-8
import os
import random
trainval_percent = 1 #训练验证数据集的百分比
train_percent = 0.9 #训练集的百分比
xmlfilepath = '/home/.../darknet/VOCdevkit/VOC2018/Annotations' #xml文件的路径
txtsavepath = '/home/.../darknet/VOCdevkit/VOC2018/ImageSets/Main' #txt文件的保存路径 # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。
total_xml = os.listdir(xmlfilepath)
num=len(total_xml) #列表的长度
list=range(num)
tv=int(num*trainval_percent) #训练验证集的图片个数
tr=int(tv*train_percent) #训练集的图片个数 # sample(seq, n) 从序列seq中选择n个随机且独立的元素;
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
#创