作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
乃文πčuljan
验证专家 在工程
10 的经验

Neven是一名人工智能工程师,在机器学习方面拥有丰富的经验, 计算机视觉, 算法, 以及一系列人工智能相关技术. 在创立AI R之前&D咨询公司, Neven帮助创建和培训医疗保健行业使用的尖端计算机视觉模型, 电子商务, 房地产, 以及全球的金融服务公司.

以前的角色

高级机器学习工程师
分享

深度神经网络在各个行业中变得越来越重要, 有充分的理由. 当使用监督学习进行训练时, they can be highly effective at solving various problems; however, 达到最佳效果, 需要大量的训练数据. 数据必须是高质量的,并且能够代表生产环境.

虽然大量的数据可以在网上获得, 大部分数据都是未经处理的,对机器学习(ML)没有用处。. 假设我们想要为自动驾驶构建一个红绿灯探测器. 训练图像应该包含交通灯和边界框,以准确捕捉这些交通灯的边界. 但是,将原始数据转换为有组织、有标记和有用的数据既耗时又具有挑战性.

为了优化这个过程,我开发了 皮质:最大的AI数据集, 这是一个新的SaaS产品,专注于图像数据标记和计算机视觉,但可以扩展到不同类型的数据和其他人工智能(AI)子领域. 皮质有各种各样的用例,可以使许多领域和图像类型受益:

  • 改进自定义数据集微调的模型性能: 在像皮质这样的大而多样的数据集上预训练模型可以显著提高模型的性能,当它在较小的数据集上进行微调时, 专用数据集. 例如, 以猫品种识别应用程序为例, 在不同的猫图像集合上对模型进行预训练有助于模型快速识别不同猫品种的各种特征. 当对特定数据集进行微调时,这提高了应用程序对猫品种分类的准确性.
  • 训练用于一般目标检测的模型: 因为数据集包含各种对象的标记图像, 可以训练模型来检测和识别图像中的某些物体. 一个常见的例子是汽车的识别, 可用于自动停车系统等应用, 交通管理, 执法, 和安全. 除了汽车检测之外,一般物体检测的方法还可以扩展到 其他MS COCO课程 (数据集目前只处理MS COCO类).
  • 训练用于提取对象嵌入的模型; 对象嵌入是指对象在高维空间中的表示. 通过在皮质上训练一个模型, 你可以教它为图像中的对象生成嵌入, 然后可以将其用于相似搜索或聚类等应用程序.
  • 生成 图像的语义元数据: 皮质可以用来生成图像的语义元数据,比如对象标签. 这可以为应用程序用户提供额外的洞察力和交互性.g., 单击图像中的对象以了解有关它们的更多信息,或在新闻门户中查看相关图像). 这一特性对于交互式学习平台尤其有利, 用户可以在其中探索物体(动物), 车辆, 家居用品, 等.)详细介绍.

我们的皮质演练将关注最后一个用例, 从网站图像中提取语义元数据,并在这些图像上创建可点击的边界框. 当用户单击边界框时, 系统启动谷歌搜索MS COCO对象类.

高质量数据对现代人工智能的重要性

现代人工智能的许多子领域最近在计算机视觉方面取得了重大突破, 自然语言处理 (NLP), 表格数据分析. 所有这些子领域都共同依赖于高质量的数据. 人工智能的好坏取决于它所接受的训练数据,, 像这样, 以数据为中心的人工智能已经成为一个越来越重要的研究领域. 迁移学习和合成数据生成等技术已经被开发出来,以解决数据稀缺的问题, 而数据标记和清理对于确保数据质量仍然很重要.

特别是, 标记数据在现代人工智能模型(如微调llm或计算机视觉模型)的开发中起着至关重要的作用. 对于预训练语言模型,很容易获得琐碎的标签, 比如预测句子中的下一个单词. 然而, collecting 带安全标签的数据时 for conversational AI models like ChatGPT is more compli猫ed; these labels must demonstrate the desired behavior of the model to make it appear to create meaningful conversations. 在处理图像标记时,挑战成倍增加. 创建像dall - e2和稳定扩散这样的模型, 需要一个包含标记图像和文本描述的庞大数据集来训练它们根据用户提示生成图像.

ChatGPT等系统的低质量数据将导致较差的会话能力, 图像对象边界框的低质量数据将导致不准确的预测, 例如将错误的类分配给错误的边界框, 检测对象失败, 等等....... 低质量的图像数据还可能包含噪声和模糊图像. 皮质旨在为开发人员创建或训练他们的图像模型提供高质量的数据, 使培训过程更快, 更高效的, 和可预测的.

大数据集处理概述

创建大型人工智能数据集是一个涉及多个阶段的稳健过程. 通常, 在数据收集阶段, 从互联网上抓取带有存储的url和结构属性的图像.g.,图像散列,图像宽度和高度,直方图). 接下来,模型执行自动图像标记以添加语义元数据.g.(图像嵌入,目标检测标签)到图像. 最后, 质量保证(QA)工作通过基于规则和基于ml的方法验证标签的准确性.

数据收集

人工智能系统有多种获取数据的方法, 每一种都有自己的优点和缺点:

  • 标记数据集: 这些是研究人员为解决特定问题而创造的. 这些数据集,如 MNISTImageNet,已经包含用于模型训练的标签. 像Kaggle这样的平台提供了共享和发现这些数据集的空间, 但这些通常是用于研究的, 非商业用途.

  • 私人数据: 这种类型是组织专有的,通常包含丰富的特定于领域的信息. 然而, 它经常需要额外的清洁, 数据标签, 可能还有来自不同子系统的合并.

  • 公共数据: 这些数据可以在线免费获取,并通过网络爬虫收集. 这种方法可能很耗时,特别是如果数据存储在高延迟的服务器上.

  • 众包数据: 这种类型涉及到雇人来收集真实世界的数据. 数据的质量和格式可能不一致,因为每个工人的产出不同.

  • 合成数据: 此数据是通过对现有数据应用受控修改而生成的. 合成数据技术包括生成对抗网络(GANs)或简单的图像增强, 当大量数据已经可用时,证明特别有益.

在构建人工智能系统时,获取正确的数据对于确保有效性和准确性至关重要.

索引流程图显示了从四个来源进入数据库的图像,如果它们不能在线使用,将被索引并存储在内部数据存储中.

数据标签

数据标注是指为数据样本分配标签的过程,以便人工智能系统从中学习. 最常见的数据标注方法如下:

  • 手工数据标注: 这是最直接的方法. 人工注释器检查每个数据样本并手动为其分配标签. 这种方法既耗时又昂贵, 但对于需要特定领域专业知识或高度主观的数据来说,这通常是必要的.

  • 基于规则的标签: 这是手动标记的替代方法,涉及创建一组规则或算法来为数据样本分配标签. 例如, 为视频帧创建标签时, 而不是手动注释每一个可能的帧, 您可以注释第一帧和最后一帧,并通过编程对中间的帧进行插值.

  • ML-based标签: 这种方法包括使用现有的机器学习模型为新的数据样本生成标签. 例如, 一个模型可以在大量的标记图像数据集上进行训练,然后用于自动标记图像. 而这种方法需要大量的标记图像进行训练, 它可以特别有效, 最近的一篇论文表明,ChatGPT已经 优于crowdworkers 对于文本注释任务.

质量保证流程图显示数据库依赖于公众, 私人, 内部模型, 以及人类注释者.

标记方法的选择取决于数据的复杂程度和可用资源. 通过仔细选择和实施适当的数据标记方法, 研究人员和从业者可以创建高质量的标记数据集来训练越来越先进的人工智能模型.

质量保证

质量保证确保用于培训的数据和标签是准确的, 一致的, 并且与手头的任务相关. 最常见的QA方法反映了数据标注方法:

  • 手动测试: 这种方法包括手动检查数据和标签,以检查准确性和相关性.

  • 基于规则的质量保证: 该策略使用预定义的规则来检查数据和标签的准确性和一致性.

  • ML-based QA: 该方法使用机器学习算法自动检测数据和标签中的错误或不一致.

可用于QA的基于ml的工具之一是 FiftyOne这是一个用于构建高质量数据集和计算机视觉模型的开源工具包. 对于手动QA,人工注释人员可以使用以下工具 CVAT 提高效率. 依赖人类注释者是最昂贵和最不可取的选择, 只有当自动注释器不能生成高质量的标签时才应该这样做.

CVAT用于手动注释猫的图像.
使用CVAT手动完成猫边界框注释

在验证数据处理工作时, 标注所需的详细程度应与手头任务的需要相匹配. 一些应用程序可能需要精确到像素级别,而其他应用程序可能更宽容.

QA is a crucial step in building high-quality neural network models; it verifies that these models are effective 和 reliable. 是否使用手动, 基于规则的, 或基于ml的QA, 为了确保最好的结果,勤奋和彻底是很重要的.

皮层演练:从URL到标记图像

皮质 uses both manual 和 automated processes to collect 和 label the data 和 perform QA; however, 目标是通过将人类输出输入基于规则的算法和ML算法来减少手工工作.

皮质样本包含引用原始图像的url,这些图像是从 通用抓取数据库. 数据点被标记为对象边界框. 对象类是MS COCO类,如“人”、“车”或“交通灯”.“使用数据集, 用户必须从给定的url下载他们感兴趣的图像 img2dataset. 在皮质的上下文中,标签被称为语义元数据,因为它们赋予数据含义和语义 展示有用的知识 隐藏在每个数据样本中(例如.g.(图像宽度和高度).

皮质数据集还包括一个过滤功能,允许用户搜索数据库以检索特定的图像. 另外, 它提供了一个交互式图像标记功能,允许用户提供指向数据库中未编入索引的图像的链接. 然后,系统动态地对图像进行注释,并在该特定URL上显示图像的语义元数据和结构属性.

代码示例和实现

皮质 生活在RapidAPI上 并允许对互联网上的任何URL进行免费的语义元数据和结构属性提取. 付费版本允许用户使用过滤器批量标记图像,从互联网上获取批量抓取的标记数据.

一只猫坐在墙上.
一个来自互联网的示例图像

本节中提供的Python代码示例演示了如何使用皮质获取用于的语义元数据和结构属性 给定的URL 并绘制用于对象检测的边界框. 随着系统的发展, 功能将被扩展以包含更多的属性, 比如直方图, 姿态估计, 等等....... 每个附加属性都会为处理过的数据增加价值,并使其适合于更多的用例.

进口cv2
进口json
进口的要求
导入numpy为np

皮质_url = 'http://cortex-api . url '.piculjantechnologies.ai /上传的
Img_url = \
   “http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Cat_November_2010-1a.jpg/1200px-Cat_November_2010-1a.jpg”

Req =请求.get (img_url)
Png_as_np = np.frombuffer(要求.内容,d类型 = np.uint8)
Img = cv2.imdecode (png_as_np, 1)

Data = {'url_or_id': img_url}

响应=请求.帖子(cortex_url, data = json.dump (data), headers={'Content-Type': 'appli猫ion/json'})

内容= json.负载(反应.内容)
Object_analysis = content[' Object_analysis '][0]

For I in range(len(object_analysis)):
   X1 = object_analysis[i][' X1 ']
   Y1 = object_analysis[i][' Y1 ']
   X2 = object_analysis[i][' X2 ']
   Y2 = object_analysis[i][' Y2 ']
   Classname = object_analysis[i][' Classname ']

   cv2.矩形(img, (x1, y1), (x2, y2), (0 255 0), 5)
   cv2.putText (img,类名,
               (x1, y1 - 10),
               cv2.Font_hershey_simplex, 3, (0, 255, 0), 5)

cv2.imwrite(“可视化.png, img)

响应的内容如下所示:

{
   “_id”:“PT:: 63 b54db5e6ca4c53498bb4e5”,
   :“url http://upload.wikimedia.org/wikipedia/commons/thumb/4/4d/Cat_November_2010-1a.jpg/1200px-Cat_November_2010-1a.jpg”,
   “datetime”:“2023-01-04 09:58:14.082248",
   “object_analysis_processed”:“真正的”,
   “pose_estimation_processed”:“false”,
   “face_analysis_processed”:“false”,
   “类型”:“形象”,
   “高度”:1602年,
   “宽度”:1200年,
   “希”:“d0ad50c952a9a153fd7b0f9765dec721f24c814dbe2ca1010d0b28f0f74a2def”,
   “object_analysis”:(
      [
         {
            “名称”:“猫”,
            “设计”:0.9876543879508972,
            "x1":276,
            "y1":218,
            "x2":1092,
            "y2":1539
         }
      ]
   ],
  “label_quality_estimation”:2.561230587616592e-7
}

让我们仔细看看并概述每条信息的用途:

  • _id 内部标识符是否用于索引数据并且是自解释的.
  • url 图片的URL是什么, 这能让我们看到图像的来源,并可能从某些来源过滤图像.
  • datetime 显示进程第一次看到图像的日期和时间. 这些数据对于时间敏感的应用程序是至关重要的.g.,当处理来自实时源(如直播)的图像时.
  • object_analysis_processed, pose_estimation_processed, face_analysis_processed 标记表示对象分析、姿态估计和面部分析的标签是否已经创建.
  • 类型 表示数据的类型(e.g.,图像,音频,视频). 因为皮质目前仅限于图像数据, 这个标志将在将来扩展为其他类型的数据.
  • 高度宽度 是否具有自解释的结构属性并提供样本的高度和宽度.
  • 哈希 是不言自明的,并显示散列键.
  • object_analysis 包含有关对象分析标签的信息,并显示关键的语义元数据信息, 例如类名和置信度.
  • label_quality_estimation 包含标签质量评分,范围从0(质量差)到1(质量好). 分数是使用基于ml的标签QA来计算的.

这就是可视化.由Python代码片段创建的png图像看起来像:

一只坐在墙上的猫,位图上应用了一个绿色的边界框. 边界框被标记为“猫”.”
对象检测语义元数据可视化

下一个代码片段展示了如何使用 付费版本 来过滤和获取从互联网上抓取的图像的url:

进口json
进口的要求

Url = 'http://cortex4 '.p.rapidapi.com/get-labeled-data”

Querystring = {'页面': '1',
              “问”:“{“object_analysis”:{" $ elemMatch ": {" $ elemMatch ":{“名称”:“猫”}}}, "宽度": {"$gt": 100}}'}

Headers = {
   “X-RapidAPI-Key”:“SIGN-UP-FOR-KEY”,
   “X-RapidAPI-Host”:“cortex4.p.rapidapi.com”
}

响应=请求.请求("GET", url, headers=headers, params=querystring)

内容= json.负载(反应.内容)

端点使用 MongoDB查询语言查询 ( q),根据语义元数据对数据库进行过滤,并访问名为的正文参数中的页码 页面.

示例查询返回包含类名的对象分析语义元数据的图像 宽度大于100像素. 响应的内容是这样的:

{
   “输出”:(
      {
         “_id”:“PT:: 639339 ad4552ef52aba0b372”,
         :“url http://teamglobalasset.com/rtp/PP/31.png”,
         “datetime”:“2022-12-09 13:35:41.733010",
         “object_analysis_processed”:“真正的”,
         “pose_estimation_processed”:“false”,
         “face_analysis_processed”:“false”,
         “源”:“commoncrawl”,
         “类型”:“形象”,
         “高度”:234年,
         “宽度”:325年,
         “希”:“bf2f1a63ecb221262676c2650de5a9c667ef431c7d2350620e487b029541cf7a”,
         “object_analysis”:(
            [
               {
                  “名称”:“猫”,
                  “设计”:0.9602264761924744,
                  "x1":245,
                  "y1":65,
                  "x2":323,
                  "y2":176
               },
               {
                  “类名”:“狗”,
                  “设计”:0.8493766188621521,
                  "x1":68,
                  "y1":18,
                  "x2":255,
                  "y2":170
               }
            ]
         ],
         “label_quality_estimation”:3.492028982676312e-18
      }, … 
   ]
   “长度”:1454
}

输出在给定页面上最多包含25个数据点, 还有语义元数据, 结构属性, 以及图片来源的信息(commoncrawl 在这种情况下). 类中公开总查询长度 长度 关键.

基础模型和ChatGPT集成

基础模型, 或者通过自我监督学习对大量未标记数据进行训练的人工智能模型, 自2018年推出以来,它们已经彻底改变了人工智能领域. 基础模型可以进一步为特定的目的(例如.g., (模仿某个人的写作风格)使用少量的标记数据, 让他们适应各种不同的任务.

皮质的标记数据集可以作为可靠的数据来源,使预训练模型成为各种任务的更好起点, 这些模型比基础模型高出一步,基础模型仍然使用标签以自我监督的方式进行预训练. 通过利用由皮质标记的大量数据, 人工智能模型可以更有效地进行预训练,并在微调后产生更准确的结果. 使皮质与其他解决方案不同的是它的规模和多样性——数据集在不断增长, 并定期添加带有不同标签的新数据点. 在发表时,数据点总数超过2000万.

皮质还提供定制的ChatGPT聊天机器人, 给用户无与伦比的访问和利用一个全面的数据库充满了精心标记的数据. 这种用户友好的功能改进了ChatGPT的功能, 为它提供对图像的语义和结构元数据的深度访问, 但我们计划将其扩展到图像以外的其他数据.

A 皮质 ChatGPT demonstration displays a prompt asking it to find images with “猫” labels 和 other parameters; the chatbot’s reply displays two matching 猫 images.
定制ChatGPT聊天机器人

以皮质目前的状态, 用户可以要求这个自定义的ChatGPT提供包含占用大部分图像空间的某些项目的图像列表,或者包含多个项目的图像列表. 定制的ChatGPT可以理解深层语义,并根据简单的提示搜索特定类型的图像. 在未来的改进中,将向皮质引入不同的对象类, 定制的GPT可以作为一个强大的图像搜索聊天机器人.

图像数据标记是人工智能系统的支柱

我们被大量的数据包围着, 但从训练的角度来看,未经处理的原始数据大多是无关紧要的, 并且必须经过改进才能构建成功的人工智能系统. 皮质通过帮助将大量原始数据转换为有价值的数据集来解决这一挑战. 快速精炼原始数据的能力减少了对第三方数据和服务的依赖, 加快训练速度, 并使创作更加准确, 定制人工智能模型.

系统当前返回用于对象分析的语义元数据以及质量评估, 但最终将支持人脸分析, 姿态估计, 以及视觉嵌入. 还计划支持图像以外的模式,如视频、音频和文本数据. 系统当前返回 宽度高度 结构属性,但它也将支持像素的直方图.

随着人工智能系统变得越来越普遍, 对高质量数据的需求必然会上升, 我们收集和处理数据的方式也将发生变化. 目前的人工智能解决方案的好坏取决于它们所接受的训练数据, 当经过大量高质量数据的精心训练时,它会非常有效和强大. 最终目标是使用皮质索引尽可能多的公开可用数据,并为其分配语义元数据和结构属性, 创建一个有价值的高质量标记数据库,用于训练未来的人工智能系统.

Toptal工程博客的编辑团队向 Shanglun王 查看本文中提供的代码示例和其他技术内容.

所有数据集图像和样本图像由 πčuljan技术.

了解基本知识

  • 什么是图像标注?

    图像标记是识别和标记图像中的特定特征以提供语义含义的过程. 它涉及到用描述存在的标签对图像进行注释, 位置, 以及各种物体或元素的特征.

  • 我们为什么要给图像贴标签?

    标记图像为训练计算机视觉中的机器学习模型提供了必要的数据, 使他们能够识别和理解图像中的各种元素.

  • 为什么标签质量保证在机器学习中很重要?

    标签质量保证对于保证训练数据的可靠性和准确性至关重要. 高质量的标签导致更精确和高效的机器学习模型, 尤其是在复杂的视觉任务中.

  • 皮质是如何帮助建立基础模型的?

    皮质提供了一个高质量的数据库, 带安全标签的数据时, 对于创建比未标记数据训练的基础模型功能更好的预训练模型至关重要. 多样化的训练数据有助于预训练模型获得广泛的知识和技能, 大脑皮层的标记数据增强了他们的学习过程.

聘请Toptal这方面的专家.
现在雇佣
乃文πčuljan

乃文πčuljan

验证专家 在工程
10 的经验

克罗地亚的萨格勒布

2017年9月27日成为会员

作者简介

Neven是一名人工智能工程师,在机器学习方面拥有丰富的经验, 计算机视觉, 算法, 以及一系列人工智能相关技术. 在创立AI R之前&D咨询公司, Neven帮助创建和培训医疗保健行业使用的尖端计算机视觉模型, 电子商务, 房地产, 以及全球的金融服务公司.

作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

以前的角色

高级机器学习工程师

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

世界级的文章,每周发一次.

输入您的电子邮件,即表示您同意我们的 隐私政策.

Toptal开发者

加入总冠军® 社区.