Opencv Yolo使用自己的数据集训练Yolo
我想与Yolo建立一个数据库,这是我第一次从事深度学习Opencv Yolo使用自己的数据集训练Yolo,opencv,image-processing,deep-learning,yolo,Opencv,Image Processing,Deep Learning,Yolo,我想与Yolo建立一个数据库,这是我第一次从事深度学习 我如何为Yolo建立数据库并对其进行培训 如何获得分类的权重 对于一个刚开始深入学习的人来说,这太难了吗 使用这个流行的分叉暗色存储库。作者描述了许多步骤,这些步骤将帮助您构建和使用自己的Yolo检测器模型 如何构建自己的自定义数据集并对其进行训练?跟着这个。他建议使用Yolo Mark标记工具来构建数据集,但您也可以尝试和中所述的其他工具 如何获得重量?每1000次迭代后,权重将存储在darknet/backup/目录中(您可以稍后调整此
使用这个流行的分叉暗色存储库。作者描述了许多步骤,这些步骤将帮助您构建和使用自己的Yolo检测器模型
darknet/backup/
目录中(您可以稍后调整此值)。上面的链接解释了有关如何制作和使用权重文件的所有内容取决于你有什么类型的操作系统。您可以点击[尤其是Windows]或坚持使用。 为此采取的步骤:
- 1) 设置暗色,详见帖子李>
- 2) 我用LabelIMG来标记我的图像。确保格式正确 您保存的图像是在YOLO中。如果使用PascalVOC格式或其他格式保存,则可以编写脚本将其更改为darknet期望的格式。[YOLO]。此外,请确保不更改标签文件。如果要添加新标签,请将其放在文件末尾,而不是中间。YOLO格式完全不同,因此如果在类之间进行更改,您以前标记的图像可能会弄乱
- 3) 权重将在您在darknet的特定文件夹中训练模型时生成。[如果您需要更多详细信息,我很乐意帮助回答]。您可以在YOLO中下载.74文件并开始培训。培训的输入需要一个内置的darknet.exe、一个cfg文件、一个.74文件和您的培训数据位置/访问权限
设置是严格的,过程本身并非如此。是的,您可以轻松完成!!欢迎来到深度学习社区。不客气 首先从下载darknet文件夹 进入文件夹并在命令提示符下键入make
git clone https://github.com/pjreddie/darknet
cd darknet
make
定义这些文件-
data/custom.names
data/images
data/train.txt
data/test.txt
现在是时候用YLO格式标记图像并将其保存,该格式将为图像数据集生成相应的label.txt文件
对象的标签应保存在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
为了训练我们的目标检测器,我们可以使用已经在庞大数据集上训练过的现有预训练权重。从中,我们可以将预先训练的权重下载到根目录
在custom_data目录中创建一个yolo-custom.data文件,该文件应包含有关列车和测试数据集的信息
classes=2
train=custom_data/train.txt
valid=custom_data/test.txt
names=custom_data/custom.names
backup=backup/
现在我们必须在yolov3.cfg中进行更改,以训练我们的模型。两节课。根据所需的性能,我们可以选择YOLOv3配置文件。在本例中,我们将使用yolov3.cfg。我们可以将文件从cfg/yolov3.cfg复制到custom_data/cfg/yolov3-custom.cfg
我们的网络应该训练的最大迭代次数设置为param max_batches=4000。同时更新步骤=32003600,这是最大批次的80%,90%。
我们需要更新[yolo]层和[convolutional]层的类和过滤器参数,这些类和过滤器参数正好位于[yolo]层之前。
在本例中,由于我们只有一个类(特斯拉),我们将在行号610696783处将[yolo]层中的类参数更新为1
同样,我们需要根据类计数filters=(类+5)*3更新filters参数。对于两个类,我们应该在行号603689776处设置filters=21
所有配置更改都是对custom_data/cfg/yolov3-custom.cfg进行的
现在,我们已经定义了培训YOLOv3模型所需的所有项目。训练-
./darknet detector train custom_data/detector.data custom_data/cfg/yolov3-custom.cfg darknet53.conv.74
此外,您还可以在图像中标记有边界的对象框,以便对Yolo进行培训,只需打开url即可。此工具已部署到GitHub页面
要构建自己的数据集,您应该使用LabelImg。这是一个免费且非常简单的软件,它将为您生成构建数据集所需的所有文件。事实上,因为您使用的是yolo,所以每个图像都需要一个txt文件,该文件将包含诸如bbox坐标、标签名称等重要信息。所有这些txt文件都是由LabelImg自动生成的,因此您所要做的就是用LabelImg打开包含所有图像的目录,然后启动labelisation。然后,您将拥有所有txt文件,您还需要创建一些其他文件以开始培训(请参阅)。尝试使用。在您的模型开始运行之前,可能需要几天时间。谢谢,在Yolo中,像mlp一样,我们需要手动指定神经网络层吗?或者图层是自动设置的?@diegokabir你不必这么做。Yolo有许多不同类型的架构,有Yolo、yolov2、yolov3、yolov3 tiny、yolov3 spp等。所有预先训练的模型和定义都由作者提供,因此您不必修改图层,除非您真的想进行一些修改。我有任何数据集中都不存在的图像,因此,我必须首先创建数据集,然后对其进行训练,因此我必须自己指定层吗?@diegokabir否,但您必须更改cfg文件中的
过滤器
,类
参数,如中所述。您可能希望为自己的数据集计算自己的锚定框值,只需按照链接上的指南操作即可。您是否可以仅识别预先训练过的对象?我的意思是,你可以用