idx是什么文件(idx是什么意思啊)

目前,作为机器学习领域最热门的研究方向之一,计算机视觉相关技术一直备受关注。其中,目标检测是计算机视觉领域的常见问题之一,如何平衡检测质量和算法速度至关重要。对于这个问题,计算机视觉工程师、VirtusLab创始人Piotr Skalski表达了自己的经验,并分享了关于他最喜欢的计算机视觉算法YOLO的实用信息。以下是他的全文。

YOLO是我最喜欢的计算机视觉算法之一。很长一段时间,我打算为它写一篇博文。然而,我不希望它成为另一篇详细解释YOLO背后工作原理的文章。网上有很多文章很好的涵盖了它的理论知识。另外,如果想加深对这种架构的理解,直接从源代码中获取信息,阅读源文件(https://arxiv . org/ABS/1506.02640)也是一个不错的方法。

基于YouTub深圳生活网e-8M数据集的篮球运动员移动检测

这一次,我将向您展示如何快速创建一个目标检测模型,成本相对较低,并且使用的机器功能不太强大。这个模型可以检测你选择的任何物体。如果你需要在工作中快速测试你的想法,或者只是有很短的时间在家里建立你的项目,这是一个很好的方法。去年,我有机会进行了几次这样的实验,本文中所有的可视化结果都来自于这些项目。

注意:这一次,我们将主要使用开源库和工具,因此我们网站上的代码量将是最小的。然而,为了鼓励您使用YOLO,并为您的项目提供一个起点,我还提供了一个脚本,允许您下载我的预训练模型和所有配置文件和测试数据集。和往常一样,你会在我的GitHub上找到一切:https://GitHub . com/skalskip/ilearndeeplearning . py/tree/master/02 _ data _ science _ toolkit/02 _ yolo _ object _ detection。

YOLO

所有不知道YOLO是什么的人不要担心,也不要去任何地方寻找信息!现在让我简单解释一下我在说什么。

YOLO是一个实时目标检测算法,这是第一个算法来平衡质量和速度的检测提供。通常,这类最强大的模型都是基于卷积神经网络的,这次也不例外。我们所说的“目标检测模型”是指,我们不仅可以用它来找出给定照片中的对象,还可以用它来指示它们的位置和数量。其中,该模型用于机器人和汽车行业,因此检测速度非常重要。从2015年开始,算法已经迭代了三次,有针对TinyYOLO等移动设备设计的变种。手机版精度有限,但计算要求更低,运行速度更快。

数据集

和深度学习一样,创建模型的第一步是准备数据集。监督学习就是看标签的例子,在数据中找到不显眼的模式。我必须承认,创建一个数据集是一项相当无聊的任务,所以我准备了一个脚本,允许您下载我的象棋数据集,并看看YOLO在这个例子中是如何工作的。

但是那些想要建立自己的数据集的人面临着挑战。为了实现这个目标,我们需要收集一组图像并创建匹配的标记文件。图片应该包含我们要识别的对象,数据集中所有对象的类分布应该是相似的。正如你所看到的,在我的第一个项目——篮球探测器中,我使用了游戏视频中的帧。

篮球数据集的图像样本

标签文件应该与图像同名,但显然具有不同的扩展名,并且应该位于并行目录中。最佳数据结构如下。除了图像和标签目录,我们还必须准备class_names.txt文件,该文件定义了我们计划检测的对象类的名称。这个文件的每一行代表一个类,应该包含一个或多个不带空的单词。

标记

遗憾的是,YOL深圳生活网O需要特定的标签格式,大多数免费标签工具都不支持。为了消除从VOC XML、VGG JSON或其他广泛使用的格式中解析标签的需要,我们将使用make sense . ai(https://www . make sense . ai/),这是我在GitHub(https://GitHub . com/skal skip/make-sense)上开发的一个免费开源项目。该编辑器不仅支持直接导出到YOLO格式,而且是直观的,可以在浏览器中工作,无需安装。此外,它还支持各种旨在加快您的标签工作的功能。可以使用MakeSense查看人工智能支持的标记过程。

AI支持用makesense.ai做标记

工作完成后,我们可以下载一个. zip文件,其中包含一个. txt文件。每个这样的文件对应于一个标记的图像,并描述照片中的可见对象。如果我们打开其中一个文件,我们会发现每一行都是class _ IDX x _ center y _ center width height类型。其中class_idx表示class_names.txt文件中指定标签的索引(从0开始计数)。其余参数描述单个对象周围的边界框,它们可以取0到1之间的值。幸运的是,大多数时候我们不需要考虑这些细节,因为编辑器会为我们处理一切。YOLO格式的标签示例如下。

环境设置

YOLO最初是在一个名为Darknet的深度学习小框架中编写的。从那以后,出现了许多其他实现,其中大部分使用了两个非常流行的Python平台:Keras和Python。在所有可用的解决方案中,有一个是我最喜欢的(https://github . com/ultralytics/yolov 3)。它为训练和检测提供了一个高级的API,但是它也有许多有用的特性。在使用它的时候,我们所有的工作归结为准备一个数据集和创建几个配置文件,然后剩下的就交给库了。

环境也很简单——可以归结为运行几个命令,你可以在下面找到(假设你的电脑上安装了Python和Git)。最好从项目目录中执行命令来实现上面显示的结构。值得一提的是,环境也可以由Docker创建(这对Windows用户特别有用)。你可以在这里找到关于这个主题的更多说明(https://github . com/ultralytics/yolo v3/wiki/docker-quick start)。

#克隆框架

git克隆https://github.com/ultralytics/yolov3.git

#进入框架目录[Linux/MacOS]

敕令书/y深圳生活网olov3

#设置Python环境

pip安装-U -r要求. txt

部署

如前一段所述,我们现在需要做的是创建几个配置文件。它们定义了训练集和测试集的位置、对象类的名称,并提供了所用神经网络的结构指南。

象棋数据集标注参考图片

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

。/数据集/图像/图像_1.png

。/数据集/图像/图像_2.png

。/数据集/图像/图像_3.png

。数据是我们需要提供的最终文件。下面以下一个项目——象棋探测仪为例来讨论它的内容。在这个例子中,我有12个唯一的对象类需要识别。接下来,我们给出文件的位置,该文件定义了哪些照片属于训练集,哪些照片属于测试集。最后,我们用前面讨论过的标记名给出文件的位置。为了使一切正常工作,应该将chess.data、chess_train.txt、chess_test.txt和chess.names文件移到project/yolov3/data目录中。

班级=12

火车=。/data/chess_train.txt

有效=。/data/chess_test.txt

姓名=。/data/chess.names

火车

现在我们准备开始训练。如前所述,我们使用的库有一个高级API,所以终端中的一个命令和几个参数就足以启动这个过程。然而,下面有几件事大大增加了我们最终成功的机会。

python3 train.py

-数据。/data/project.data

– cfg。/cfg/project.cfg

重量。/weights/yolov3.pt

首先,我们可以应用迁移学习,不一定要从零开始训练。我们可以使用在不同数据集上训练的模型的权重来缩短我们自己的网络的学习时间。我们的模型可以使用基本的形状知识,并专注于将这些信息与我们想要识别的新类型的对象联系起来。其次,库执行数据增强,因此它基于我们提供的照片生成新的示例。因此,即使我们只有一个很小的数据集-数百张图片,我们也可以训练我们的模型。我们使用的库也为我们提供了一个由于增强而创建的图像的例子。下面你可以看到在我的篮球探测器的训练过程中创建的例子。

训练数据增强的可视化

考试

终于,快乐的时刻来了!我们创建模型的努力得到了回报,现在我们可以使用它在任何照片中找到我们要寻找的对象。同样,这是一个非常简单的任务,可以通过终端中的一个简单命令来完成。执行后,我们将在输出目录中找到预测的结果。值得一提的是,我们还可以对自己拍摄的视频进行实时预测,这在项目演示中特别有用。

python3 detect.py

-数据。/data/project.data

– cfg。/cfg/project.cfg

重量。/weights/best.py

来源。/数据/样本

基于TinyYOLO的象棋检测

结论

如果以上你都完成了,那么恭喜你!非常感谢您花时间阅读这篇文章。希望我能证明训练你自己定制的YOLO模型并不难,我的建议对你以后的实验有帮助。

via:https://to wards data science . com/chess-rolls-or-basketball-let-create-a-custom-object-detection-model-ef 53028 EAC 7d

雷锋网雷锋网雷锋网

(0)
上一篇 2022年4月25日
下一篇 2022年4月25日

相关推荐