QRazy
值得讨论的问题
📄 文章 ⚔️ 辩论 / 🤖 科技与人工智能

疯狂工作室:图像、文本、音频和视频的数据集编辑器

使用Crazy Studio创建和编辑图像、文本、音频和视频数据集——一个强大的编辑器,简化了处理各种媒体格式的工作。

QRazy 的主要發現

  • Crazy Studio允许快速创建项目并标记用于训练AI模型的数据。
  • 编辑器支持对图像、文本、音频和视频的标记,并能够为对象添加多个类。
  • 每个数据集可以导出为不同的格式,包括COCO JSON和YOLO,从而简化与框架的集成。
疯狂工作室:图像、文本、音频和视频的数据集编辑器
关于古代符号的问题

我从事人工智能领域的开发,常常面临一些任务,仅仅拿一个现成的模型并在我自己的数据上运行是不够的。模型在标准测试中表现良好,但在条件稍微不同于其训练时的情况下可能会出错。

在这种情况下,模型需要进行再训练。而再训练需要自己的数据:图像、文本、音频记录或按特定任务标注的视频。

最近,我需要对能够在天空中找到物体并识别其类型的模型进行实验。例如,区分飞机、直升机、无人机、鸟类或其他小物体。进行测试时,我需要自己从特定相机收集的标注数据集,并按照我的规则进行标注。

我查看了现有的解决方案,但许多对于小型实验而言都显得过于复杂。有的地方需要长时间调整项目,有的界面面向大团队,而有的功能我根本用不上。

因此,我制作了 Crazy Studio —— 我自己的浏览器数据集编辑器。在这里,可以快速创建项目,上传材料,添加类别,并在无需长时间准备的情况下进行标注。

为什么需要自己的数据集

现成的模型通常是在大型通用数据集上训练的。这是一个有用的起点,但实际任务几乎总是具有其特定的特点。

假设模型能在照片中找到飞机。在互联网上的普通图片中,它的表现很好:飞机较大,背景干净,角度清晰。但监控摄像头提供的图像可能完全不同。物体占据几十个像素,天空被云层遮挡,图像有噪声,飞机的形状几乎无法辨认。

对于模型来说,这就是另一组数据。如果它在训练期间未见过类似的例子,结果可能会很差。

因此,对于特定的任务,我会努力收集正是在系统将要工作的条件下的数据:

  • 来自不同的相机和镜头;
  • 在晴天和多云天气;
  • 白天、傍晚和黄昏;
  • 包含大且非常小的物体;
  • 有模糊、数字噪声和强放大的情形;
  • 从不同的角度和与物体的距离。

收集图像后,还需要进行标注。需要告诉模型物体具体在什么地方,以及它属于哪个类别。正因如此,我需要一个专门的工具。

Crazy Studio的构成

Crazy Studio 在浏览器中运行。首先需要创建项目并选择要处理的数据类型:

  • 图像;
  • 文本;
  • 音频记录;
  • 视频。

类型在创建项目时设定。这是特意为之:图像标注工具与文本或音频的工具有很大不同,因此将它们混合在一个工作区没有意义。

项目内可以创建多个数据集。例如,可以单独存储用于训练、验证和最终测试模型的数据:

TrainingValidationTest

另一种选择是根据来源或拍摄条件对材料进行分类:

Camera 1Camera 2DayNightCloudy

这样的划分有助于了解哪些数据已经收集,以及模型在哪些材料上表现不佳。

对图像中的物体进行标注

在Crazy Studio中,图像可用的标注工具包括矩形区域和多边形。

矩形框

矩形适用于大多数物体检测任务。用户在图像上选择所需区域并为其分配类别。

在我的情况下,类别的集合可能如下所示:

airplanehelicopterdronebirdunknown

如果在同一帧中有一架飞机和几只鸟,每个物体会被单独标注。结果是模型不仅获得类别名称,还获得物体在图像上的坐标。

这种格式不仅适用于天空。矩形区域适合于对人类、汽车、动物、交通标志、商品、零部件和其他物体的标注。

多边形

有时矩形框会捕捉到过多的背景。这时,可以用多边形将物体包围,通过顺序放置点来标记其边界。

多边形非常适合于对形状复杂的物体进行标注:

  • 道路和人行道;
  • 建筑物;
  • 田野和水体;
  • 裂缝和其他损坏;
  • 设备部件;
  • 医学影像上的区域。

对于我在天空中的测试,当需要标出物体的准确轮廓,而不仅仅是其大致位置时,多边形可能会派上用场。

一个物体的多个类别

一个物体并不总是用一个标签来描述。例如,无人机不仅可以用类名drone来标记,还可以附加特征:

dronesmallfarblurred

在Crazy Studio中,一个区域可以指定多个类别。这比为每个特征组合创建单独的类别更为方便。

物体不仅得类名small_blurred_drone,而是得到三个独立的标签:

dronesmallblurred

将来,这样的数据更容易过滤和转换为所需的训练格式。

文本标注

Crazy Studio不仅可以用于计算机视觉。在文本项目中,用户可以标记单词、句子或任意片段。

例如,文本中可以标注:

  • 人名;
  • 公司名;
  • 国家和城市;
  • 日期;
  • 地址;
  • 商品;
  • 事件;
  • 设备模型。

在句子中:

CrazyLayer公司开发了一款新数据集编辑器。

可以标记单词CrazyLayer,并将其类名设为company

这样的数据集适用于训练能够提取新闻、文件、合同、用户消息和其他文本资料中的实体的模型。

文本项目同样可以用于内容分类。例如,对消息进行分类:

spamadvertisinginsultthreatnormal

基于这样的样本,可以再训练模型用于评论审核或自动分类请求。

音频记录标注

在音频项目中,标注是在时间轴上创建的。用户指出所需片段的开始和结束,然后为其分配类别。

例如,在对话录音中可以标记:

operatorclientsilencebackground_noise

对于声音识别项目,类别集合将不同:

enginealarmmusicdogshot

创建的时间段可以移动和更改长度。当事件的边界在第一次收听后能够更加精确地确定时,这一点非常有用。

对于天空中的物体任务,可以收集飞机、直升机和无人机的发动机声音录音,然后标记真实可听到的声音区域。

视频标注

视频按类似的原则进行标注,使用时间间隔。用户指定事件的开始时刻和结束时刻。

可以标记:

  • 物体出现在镜头中;
  • 开始移动;
  • 人下落;
  • 汽车停止;
  • 场景切换;
  • 特定动作;
  • 违反安全规则。

在我的情况下,时间段可以表示飞机或无人机在镜头中可见的时间。

这并不取代逐帧标注,尤其是当模型确实需要时。但对于时间事件检测任务,时间间隔可以更快地准备数据。

数据集可以导出为哪些格式

数据集格式
数据集格式

进行标注只是工作的一半。接下来需要将其传递到训练脚本、计算机视觉库或自己的处理程序。因此,在Crazy Studio中,我添加了几种适用于不同类型项目的导出选项。

导出时,可以选择当前数据集或整个项目。此外,还可以将原始图像、文本、音频和视频打包到ZIP中。如果文件已经单独存放且只需要标注,可以关闭此选项。

Universal JSON

通用JSON适用于图像、文本、音频和视频。它保存整个项目的结构:类别、数据集、材料、标注对象、几何形状和分配的标签。

这个格式方便用作备份,数据转移到自有服务或编写自己的转换器。如果我需要最大的信息量而不依赖于特定框架,我通常选择Universal JSON。

JSON Lines

在JSON Lines格式中,每个材料以单独的行记录在文件dataset.jsonl中。行中包含项目数据、数据集名称、文件信息和所有注释。

这种方式易于按顺序读取,而无需将整个导出加载到内存中。它适用于大型数据集、服务器处理和自定义Python脚本。

YOLO

YOLO只适用于图像项目。对于矩形标注,保存类别编号、框的中心、宽度和高度。所有坐标被归一化并记录在0到1的范围内。

多边形也受支持:在类别编号之后,行中记录所有点的坐标。因此,同一个导出器可以同时用于物体检测和分割。

导出的文件夹中包括dataset.yamlclasses.txtlabels目录,以及在相应选项启用时的images目录。每当我想快速从标注转到训练YOLO系列模型时,我便使用这个格式。

Crazy Studio不会自动将一个导出拆分成trainvalidationtest。因此,我创建单独的数据集Training、Validation和Test并分开导出。

COCO JSON

COCO JSON同样适用于图像。文件annotations.json中保存了图像列表、类别和注释。矩形被记录为边界框,而多边形则作为一组点的分割。

当训练代码或现有库已经期待COCO结构时,这个格式很方便。它也适合于在不同计算机视觉工具之间交换数据集。

Pascal VOC

导出为Pascal VOC时,每张图像都会创建一个单独的XML文件,包含图像的尺寸、类别名称和矩形区域的坐标。

Pascal VOC适用于老旧项目和处理XML标注的工具。需要注意的是,在此格式导出时,多边形会转换为表示其外部边界的普通矩形框。物体的精确形状不会在此格式中保留。

spaCy JSON

对于文本项目,支持导出为spaCy JSON。保存原始文本和标记实体的列表:起始位置、结束位置和类别名称。

例如,可以将标记的公司名称作为company实体导出,将人名作为person。这样的文件可以用于准备命名实体识别和其他文本处理任务的数据。

Audacity Labels

对于音频和视频,可以选择Audacity Labels。Crazy Studio创建一个文本文件,其中每行包含开始时间、结束时间和时间段类别的名称。

该文件可以与录音一起在Audacity中打开,或者用自定义脚本处理。这个格式适合于标注语音、噪声、音乐、设备声音和视频中的事件。

多个类别的处理

在Crazy Studio中,单个对象可以被赋予多个类别。通用格式将它们与对象一起保存。如果选择了仅适用于单个类别的格式,则编辑器会为每个标签创建单独的记录。

例如,带有类别dronesmallblurred的对象会在YOLO中呈现为三行相同坐标但类别编号不同的记录。在训练前需要注意这一点:额外特征并不总是需要与主要物体类混合。

可以用编辑器完成哪些任务

我最初制作Crazy Studio是为了自己的实验,但这种标注原则适用于不同的方向。

物体检测

可以收集汽车、人、动物、商品、文件、天空中的物体或设备零件的数据集。

缺陷检测

在图像中可以标记裂缝、缺口、划痕、腐蚀、污垢和其他损伤。随后,这些数据用于训练模型,以自动查找类似的缺陷。

文件处理

在文本中可以标记日期、金额、合同号码、组织、姓名和地址。这些数据集对于处理账单、合同、问卷和请求会很有用。

声音识别

音频记录可以根据声音、噪声类型、信号、交通工具或设备声音进行标注。

视频事件分析

在视频中可以标记物体出现的时刻、动作开始或需要的片段。这适合于视频监控、运动分析和长时间录制的分析。

我如何通常开始新数据集

我努力避免将成千上万的文件立即加载到项目中。开始时,我会先处理一小部分示例,并完整走一遍整个过程。

  1. 创建所需类型的项目。
  2. 添加测试数据集。
  3. 上传几十份材料。
  4. 创建主要类别。
  5. 标注前几个示例。
  6. 检查所选类别是否足够。
  7. 如有必要,修改标注规则。
  8. 只有在这之后,才会上传主样本。

在前二十或三十个示例中,通常可以明白我未考虑到的情况。

比如,在天空物体项目中,很快就会产生一个问题:该如何处理一个小点,不会被明确识别?可以将其视作无人机,使用unknown类,还是根本不将该帧添加到训练样本中?

在大规模标注之前,最好先确定类似规则。否则,相同情况可能会被标注不同,而数据会出现额外的噪声。

为什么标注质量比文件数量更重要

大型数据集本身并不保证良好的结果。如果其中类别混淆、物体遗漏或边界设置不准确,模型将会在这些错误上进行学习。

假设在一张图像上,类似的微小点被标注为drone,在另一张被标注为bird,而第三张甚至没有标注。对人来说,原因可能是显而易见的:物体难以辨认。模型仅看到矛盾的答案。

因此,我倾向于首先制作一个小而精确的数据集。如果它产生了所需的结果,之后可以逐步增加规模。

为什么我没有让Crazy Studio变得复杂

在大型标注系统中,有用户角色、复杂的工作流程、质量控制、任务分配和数十个额外的工具。对于大团队,所有这些可能是必要的。

但我的任务则不同。我需要一个简单的编辑器,能够快速验证我的想法:

  1. 创建项目。
  2. 上传材料。
  3. 添加类别。
  4. 标注数据。
  5. 导出结果。

我并不试图替代所有现有的平台。我设计了一个工具,以应对需要快速准备自己数据集并进行测试或再训练模型的情况。

我计划进一步添加的内容

Crazy Studio仍然是一个正在开发的项目,我会根据新任务继续进行改进。

未来编辑器可能会引入新的导入格式、额外的导出器、标注检查工具、类别统计、自动预标注功能以及与大样本的更便捷处理。

但是我想保持的主要原则是:在加载文件和创建首次标注之间,应该尽可能少的多余操作。

如何尝试Crazy Studio

编辑器可通过以下地址访问 studio.crazylayer.com

登录后,可以创建用于图像、文本、音频或视频的项目,添加自己的类别并上传测试材料。

开始时最好从自己任务中的一个小的真实示例着手。这样可以更快地理解所选标注方式是否合适,以及哪些类别确实是必要的。

总之,使用Crazy Studio数据集编辑器——它完全免费!我会定期更新、改进并添加新功能。

打开Crazy Studio并创建第一个数据集

🔒 註冊後即可免費取得完整答案
Загрузка...
提出尖锐问题

这里可以讨论争议话题。

比较不同观点。

比较不同观点。

优质评论会上升。

优质评论会上升。

顾问 在线