yolov5如何运行自己的数据集_YOLO3小教程 | 手把手教你用YOLO3定制自己数据集检测模型...

ea314aba933c53e7846393c7e0857567.gif YOLO是我最喜欢的计算机视觉算法之一。这次我将展示的不是理论,而是创建定制模型的速度有多快,不需要强大的机器,只需相对较低的工作量,可以检测您选择的任何对象。
我还提供了一些脚本,允许您下载我预先训练好的模型以及所有配置文件和测试数据集。
https://github.com/SkalskiP/ILearnDeepLearning.py/tree/master/02_data_science_toolkit/02_yolo_object_detection 1 Introduction


YOLO(你只看一次)是一个实时对象检测算法,它是第一个平衡预测质量和速度的算法。这类最强大的模型是建立在卷积神经网络上的,这次也不例外。所谓的“目标检测模型”,意思是不仅可以用它来指示在给定的照片中出现了什么目标,还可以用它来指示目标的位置和数量。

这种模型在机器人和汽车工业中都有应用,因此速度是至关重要的。自2015年以来,该算法已经进行了三次迭代,并为TinyYOLO等移动设备设计了各种变体。移动版本的精度是有限的,但它的计算要求也较低,允许它运行得更快。

19da5601ae0cfb9b0d21a05b7588eec4.png 2 DataSet

像在深度学习中一样,创建模型的第一步是准备一个数据集。监督学习是观察有标记的例子并在数据中发现不明显但一致的模式。必须承认,创建数据集是一项相当乏味的任务。这就是为什么我准备了一个脚本,它将允许您下载我的国际象棋数据集,并查看YOLO如何处理这个示例

为了实现这个目标,我们需要收集一组图像并创建匹配的标签文件。图片应该包含我们想要识别的对象。我建议数据集中所有对象类的分布都是均匀的。在我的第一个项目中——篮球探测器——我使用了游戏视频的帧。

571e95fe9e23cdd1b6498d063c6fecc4.png

您的标签文件应具有与图像相同的名称,但显然具有不同的扩展名,并且应位于并行目录中。最佳数据结构如下所示。

c2ffddfa6c57fa3ff0013b2418107934.png

除了图像和标签目录,我们还必须准备class_names.txt文件,该文件定义了我们计划检测的对象类的名称。该文件的每一行代表一个类,应包含一个单词或多个不带空格的单词。 3 Labeling
不幸的是,YOLO需要一种特定的标签格式,大多数免费标签工具都不支持该格式。为了消除从VOC XML,VGG JSON或其他广泛使用的格式中解析标签的需要, 我们将利用makeense.ai——这是我在GitHub上开发的一个免费开源项 该编辑器不仅支持直接导出为YOLO格式,而且很直观,并且不需要安装,因为它可以在浏览器中工作 。此外,它还支持旨在仅加速贴标工作的多种功能。看一下使用MakeSense的AI支持的标记过程。

1c4bedf0ec6cd5638403a25f2712db5f.png

工作完成后,我们可以下载包含.txt文件的.zip。每个此类文件都对应一个标记的图像,并描述照片中可见的目标。如果打开这些文件之一,则会发现每一行都是class_idx x_center y_center width height格式的。其中class_idx代表class_names.txt文件中分配的标签的索引(从0开始计数)。其余参数描述围绕单个对象的边界框。它们可以采用0到1之间的值(相对于图像尺寸)。

幸运的是,大多数时候我们不需要考虑这些细节,因为编辑器将为我们处理所有这些细节。YOLO格式的标签示例如下所示。

3c8cd6aed62087cd9a2ed60b38a48250.png 4 Environment setup

YOLO最初是在称为Darknet的深度学习的利基框架中编写的。从那时起,创建了许多其他实现,其中大多数使用两个非常流行的Python平台-Keras和PyTorch。在所有可用的解决方案中,有一个我特别喜欢。它提供了用于训练和检测的高级API,而且还具有许多有用的功能。使用它时,我们所有的工作都归结为准备数据集和创建一些配置文件,然后将职责转移到库中。

39e69715179e6dd8f55676cf9da08eb2.png

环境设置也非常简单,因为它取决于运行以下命令的过程,您可以在下面找到这些命令(假设您已经在计算机上安装了Python和Git)。最好从项目目录执行命令,以实现上面显示的结构。还值得一提的是,还可以通过Docker创建环境(这对于Windows用户尤其有用)。您可以在此处找到有关此主题的更多说明。

3c58a22afc2884dbd2d7ad9818546eb9.png 5 Configuration 我在上一段中提到过,现在我们要做的就是 创建几个配置文件,它们定义了我们的训练和测试集的位置,对象类的名称,并提供了有关所用神经网络的体系结构的指南

7cc4ca0d017ecb090dbd5040b9941f29.png

首先, 我们需要将数据集分为训练和测试集。 我们借助两个.txt文件来完成此操作。它们每个都包含通向数据集中特定图像的路径。为了加快工作速度,我准备了一个Python脚本,该脚本将为我们自动创建这些文件。您所需要做的就是指出数据集的位置,并定义训练和测试集之间的百分比划分。下面显示了train.txt / test.txt文件的片段。

c2b2d73280fa6d2537d4fca32fedb95c.png

.data是我们需要提供的最终文件。让我们使用下一个项目的例子国际象棋检测器来讨论其内容。在这种情况下,我有12个要识别的唯一对象类。

接下来,我们给出定义哪些照片属于训练和测试集的文件的位置,最后给出带有标签名称的先前讨论的文件的位置。为了使一切正常工作,应将文件Chess.data, chess_train.txt, chess_test.txt和Chess.names移至project / yolov3 / data目录。

0628af4fc3a744ccb686956f9acaf306.png 5 Training 现在我们准备开始训练。正如我前面提到的, 我们使用的库具有高级API,因此终端中的一个命令和一些参数足以启动此过程 。但是,在下面发生了几件重要的事情,这些事情显着增加了我们获得最终成功的机会。 cbcd00e48c35649d85965d4e357b56fb.png

首先,我们可以应用迁移学习-我们不必从头开始培训。我们可以使用在不同数据集上训练的模型的权重,这可以缩短我们自己的网络的学习时间。我们的模型可以使用基本形状的知识,并专注于将此信息链接到我们要识别的新型对象。

其次,图书馆进行数据扩充-因此,它会根据我们提供的照片生成新的示例。因此,即使只有很少的数据集(几百张图像),我们也可以训练模型。我们使用的库还向我们提供了由于扩增而创建的图像样本。在下面,您可以查看在我的篮球探测器的训练过程中创建的示例。

886f8ebd7e8614873ca7b0a93289edba.png 6 Detection 最后,快乐的时刻到了!我们致力于创建模型的工作得到了回报,因为我们现在可以使用它来查找在任何照片中寻找的对象。再一次,这是一个非常简单的任务,我们可以在终端中使用一个简单的命令来完成。执行之后,我们将在输出目录中找到预测结果。值得一提的是, 我们还可以对来自网络摄像头的视频进行实时预测 ,当我们想通过演示演示给每个人留下深刻印象时,这尤其有用。 c87a081351c8b245a12e881cf467188d.png 832630fa8606f0faf3249371e3a6094a.png 潮水自会来去,但心志得坚若磐石。即便成不了那根定海神针,也至少不是那随意被拍上岸的野鬼游魂。  f3ce15f0d5d074a6b7d89edcefd7a228.png 长按关注 "AI深度视线"
最新人工智能、深度学习、计算机视觉干货奉上!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值