Ubuntu16.04下实现darknet-yolov3训练自己的数据(含loss图、mAP计算)

本文详述了使用Darknet框架训练YOLOv3模型的全过程,包括环境配置、模型编译、数据集准备、配置文件修改、模型训练及mAP计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下本地编译darknet并用自己的数据集来训练yolov3的过程,最后补充了mAP的计算方法。

1.环境配置

首先CUDA和Cudnn是必备的,安装有很多教程就不多写了,opencv安装比较麻烦可以不用装

2.本地编译darknet

从github获取darknet

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

修改Makefile文件

GPU=1 #如果使用GPU设置为1,CPU设置为0
CUDNN=1  #如果使用CUDNN设置为1,否则为0
OPENCV=0 #如果调用摄像头,还需要设置OPENCV为1,否则为0
OPENMP=0  #如果使用OPENMP设置为1,否则为0
DEBUG=0  #如果使用DEBUG设置为1,否则为0

在darknet文件夹下编译

make

下载yolov3的预训练模型

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

测试是否编译成功

./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

3.准备数据集

一般是先准备VOC格式的数据集,然后通过一些脚本文件转化成可用于训练的版本

在darknet文件夹下创建dateset文件夹,内部结构为:

dataset
  ---JPEGImages#存放原图像(名字只要和xml对应就行,不用规范化)
 
  ---Annotations#存放图像对应的xml文件
 
  ---ImageSets/Main # 存放训练/验证图像的txt文件(脚本生成)

将图像数据放入JPEGImages,xml的标注文件放入Annotations,然后新建一个py文件,随便命名(如:maketxt.py)

import os
import random

trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftest.write(name)
        else:
            fval.write(name)
    else:
        ftrain.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

运行后会在ImageSets/Main路径下生成train.txt,val.txt,test.txt和trainval.txt四个必备的txt文件

转换VOC格式的数据集为darknet的格式(点坐标进行归一化https://blog.csdn.net/hesongzefairy/article/details/104443573

在darknet文件夹中创建一个py文件,随便命名,需要修改的地方看注释(修改自darknet/scripts/voc_label.py)

import xml.etree.ElementTree as ET
impor
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值