Yolo 用自己的数据集训练 yolo

die*_*bir 3 opencv image-processing deep-learning yolo

我想用 Yolo 建立一个数据库,这是我第一次使用深度学习

  1. 如何为 Yolo 构建数据库并对其进行训练?
  2. 我如何获得分类的权重?
  3. 对于深度学习的新手来说是不是太难了?

Sub*_*ari 6

是的,你可以轻松做到!!欢迎来到深度学习社区。不客气。

首先从链接下载darknet文件夹

进入文件夹并在命令提示符中键入 make

git clone https://github.com/pjreddie/darknet
cd darknet
make
Run Code Online (Sandbox Code Playgroud)

定义这些文件 -

data/custom.names
data/images
data/train.txt
data/test.txt
Run Code Online (Sandbox Code Playgroud)

现在是时候使用LabelImg标记图像并将其保存为 YOLO 格式,这将为图像数据集生成相应的标签 .txt 文件。

LabelImg 标签指南

我们对象的标签应该保存在 data/custom.names 中。

自定义名称示例

使用该脚本,您可以将数据集拆分为训练和测试-

import glob, os

dataset_path = '/media/subham/Data1/deep_learning/usecase/yolov3/images'

# Percentage of images to be used for the test set
percentage_test = 20

# Create and/or truncate train.txt and test.txt
file_train = open('train.txt', 'w')  
file_test = open('test.txt', 'w')

# Populate train.txt and test.txt
counter = 1  
index_test = round(100 / percentage_test)  
for pathAndFilename in glob.iglob(os.path.join(dataset_path, "*.jpg")):  
    title, ext = os.path.splitext(os.path.basename(pathAndFilename))

    if counter == index_test+1:
        counter = 1
        file_test.write(dataset_path + "/" + title + '.jpg' + "\n")
    else:
        file_train.write(dataset_path + "/" + title + '.jpg' + "\n")
        counter = counter + 1
Run Code Online (Sandbox Code Playgroud)

为了训练我们的目标检测器,我们可以使用已经在大量数据集上训练过的现有预训练权重。从这里我们可以将预训练的权重下载到根目录。

在 custom_data 目录中创建一个 yolo-custom.data 文件,该文件应包含有关训练和测试数据集的信息

classes=2
train=custom_data/train.txt
valid=custom_data/test.txt
names=custom_data/custom.names
backup=backup/
Run Code Online (Sandbox Code Playgroud)

现在我们必须在 yolov3.cfg 中进行更改以训练我们的模型。为两个班。根据所需的性能,我们可以选择 YOLOv3 配置文件。对于这个例子,我们将使用 yolov3.cfg。我们可以将文件从 cfg/yolov3.cfg 复制到 custom_data/cfg/yolov3-custom.cfg

我们的网络应该训练的最大迭代次数设置为参数 max_batches=4000。还要更新 steps=3200,3600,即 max_batches 的 80%、90%。我们将需要更新 [yolo] 和 [卷积] 层的类和过滤器参数,它们正好位于 [yolo] 层之前。在这个例子中,因为我们只有一个类(特斯拉),我们将在 [yolo] 层中的类参数更新为 1,行号:610, 696, 783 同样,我们需要根据类计数过滤器更新过滤器参数=(classes + 5) * 3. 对于两个类,我们应该在行号处设置filters=21:603, 689, 776 所有配置更改都在custom_data/cfg/yolov3-custom.cfg

现在,我们已经定义了训练 YOLOv3 模型的所有必要项目。培训-

./darknet detector train custom_data/detector.data custom_data/cfg/yolov3-custom.cfg darknet53.conv.74
Run Code Online (Sandbox Code Playgroud)