
新闻/数据科学
想象一下,您是一家新成立的高科技公司的负责人,希望向市场销售一种全新的产品(比方说,一种新的物联网设备)。您参加了许多会议、展览和演示,以便提前宣传您的产品并提高知名度。您期望的直接效果是,产品一经发布,其销售额就能达到您的目标。.
想象一下,您是一家新成立的高科技公司的负责人,希望向市场销售一种全新的产品(比方说,一种新的物联网设备)。您参加了许多会议、展览和演示,以便提前宣传您的产品并提高知名度。您期望的直接效果是,产品一经发布,其销售额就能达到您的目标。.
这里有一个问题:你没有办法预测和估计产品的需求量。.
您可以查看一个简单的事实,即人们在互联网上谈论您产品的程度。您可以查看一下主要的社交网络(Facebook、Twitter、Instagram......),并量化有多少帖子提到了您的产品。这样,您就可以知道您的产品预期销售量有多大。.
要识别社交帖子中的产品,您有两种选择。您可以通过文本挖掘分析文本,也可以对帖子的图片进行图像识别。但分析文本有一个问题:当产品发布时,几乎不可能每个人都知道它的名字,也不可能在发布日期后立即提到它。因此,图像识别是首选解决方案。为了在图片上识别产品(如果有多个产品需要识别),您需要执行以下操作 物体检测 而这正是 Tensorflow 的用武之地。.
什么是 Tensorflow?
Tensorflow 是一个 开放源代码 数学库,提供稳定的 Python 和 C API,用于多项 data 操作任务。它在机器学习和深度学习应用(如神经网络)方面享有盛誉。Tensorflow 主要用于图像识别、自然语言处理和语音文本分析。.
我们的具体用例是 物体检测. .您可以在不同级别使用 Tensorflow:
- 第 1 级: 使用现成的预训练模型,直接应用于 data 识别产品。这种方法最简单快捷,因为您不需要建立或训练模型。.
- 二级: 在您自己的 data 上训练模型,以便模型能够学习并准确了解您的产品范围。这一级别需要在您事先标注的 data 上训练一个模型。这需要花费更多时间,但会带来更相关的结果,因为模型能准确识别产品参考信息。.
- 第 3 级: 从零开始创建自己的模型。在这一级别中,你不仅要训练一个模型,还要从头开始创建。它可以是对现有模型的参数调整,也可以是开发新的神经网络架构。这种方法耗时较长,更适合用于研究目的。.
下面,我们将更详细地介绍 Tensorflow 的各个使用级别。.
第 1 级 - 使用预训练模型
第一种基本用法是使用已经在标注的 data 集上训练过的模型。如果要应用模型的 data 与训练过的 data 非常相似,则应选择此选项。例如,当您要识别鞋子、智能手机、包包等一般物品时。因此,如果您希望识别产品系列中的某一品牌和某一精确型号,则不适合采用这种方法。.
通常,此类模型是在标准的 data 集上进行训练的,如 可可 dataset (此处的 github 链接)或 ImageNet dataset (链接到这里).这些 datasets 由大量图像集合组成,这些图像已经标注,可随时用于模型训练。它被广泛用于训练图像分类和物体检测模型,这些模型可用作通用产品识别的预训练模型。.
既然我们已经对 data 有了更多的了解,那么让我们快速浏览一下您可以使用的预训练模型。查找预训练模型最常用的资源之一是 Keras. .它有一个模块,您可以在其中找到各种类型的图像分类模型(VGG16、ResNet50、IncetopnV3......),这些模型已在标准的 datasets 上训练过。这些模型已在标准的 datasets 上训练过。工作流程非常简单,只需加载模型,然后直接应用到图像中提取特征。例如,您可以直接对图像中的手表、耳机、耳机进行分类......还有一个更具体的对象检测用例,是由谷歌的 Tensorflow 团队开发的。他们建立了一系列预训练模型(其中一个模型基于 Coco dataset),可直接用于新图像的物体检测(例如,在图像上显示一个或多个物体)。此处的 github 链接).这些模型也可用作对自己的 data 进行再训练的模型,我们将在第 2 级进行处理。.
第 2 级--自行训练模型 data
当您使用的 dataset 与用于训练模型的原始 dataset 相差很大时,简单地应用它是行不通的。您需要建立自己的训练 dataset,并在此基础上重新训练模型。.
大多数图像识别问题都需要使用卷积神经网络(CNN)。第一层(卷积层)从图像中提取模式和特征。然后将这些特征传递给最后一层(全连接层)进行预测。在自己的 data 上重新训练模型有两种方法: 迁移学习 和 微调.
迁移学习 包括使用原始模型中预先训练好的卷积层,并根据从我们的图像集中提取的特征来训练全连接层。这样做的目的是利用在原始 dataset 上训练模型时获得的知识来解决我们的问题。在两个 data 集相似的情况下,这种技术非常有效,例如,经过训练可以识别汽车的模型可以重新训练来识别卡车。原因在于汽车图片与卡车图像相似,卷积层从这些图像中提取的模式也可能相似。下图说明了这一过程:
如果您的 dataset 与原来的 dataset 有很大不同,则需要执行以下操作 微调. .与迁移学习不同的是,这里是对整个网络(或至少是大部分卷积层)进行重新训练。因此,卷积层是根据您的图像进行训练的,可以提取完全适合您图像的特征。微调的优势在于模型完全是在 dataset 上训练的,可能会有更好的性能,但也更耗时,计算成本更高。下图说明了这一过程:
要建立用于物体检测的 dataset,您需要收集大量的训练图像,但 "具体有多少呢?"有人会问。有人说几百张,也有人说几千张,甚至几十万张,但实际上并没有一个基本的真理。不过,我们建议您为希望模型识别的每个类别收集一百多幅图像。.
收集完图片后,您需要给它们贴上标签。. 标注过程包括创建 JSON 文件,其中包含模型应在每幅图像上检测和识别的对象的坐标和类别. .这部分工作通常由人工完成,但也可以通过代码实现半自动化。目前已经开发了几款开源工具来加快手动标注的速度,其中一款是 BBox 标签工具 在 Github 上发布。该工具由一个用户界面组成,可加载所有图像,用户只需点击两下即可为图像贴标签:
用户只需点击对象的左上角和右下角,该工具就会在图像周围绘制一个矩形,并将坐标保存到文件中。这样,贴标签(除了添加对象的类别)的时间就缩短到了 3 秒。添加对象的类后,最终的 JSON 文件应如下所示:
最后一步是将文件转换成一个单一文件,特别是为 Tensorflow 格式化的文件。下面是一个简单的教程 这里.
创建好 dataset 后,就可以开始训练模型了,但首先需要找到一个预训练模型!最近的深度学习研究开发了多种基于神经网络的物体检测模型。其中一个有名的架构是基于区域建议网络(RPN)的 Faster R-CNN。Faster R-CNN 有两个网络:一个是用于生成区域建议的 RPN,另一个是使用这些建议来检测物体的网络。谷歌的 Tensorflow 团队开发了一系列深度学习模型,以方便 data 科学家使用,其中之一就是基于 Faster R-CNN 的物体检测模型。该模型在 Tensorflow 的 Github 页面的教程。"... 教程 显示了重新训练模型(使用迁移学习)并将其部署到 Google ML 引擎上的步骤。.
第 3 级--从零开始创建自己的模型
如果你有研究员的灵魂,或者你有一个非常特殊的计算机视觉问题,你可以从头开始创建自己的模型。在这种情况下,您有三种选择:.....:
- 使用 CNN 建立图像分类模型
最简单的产品识别解决方案是使用卷积神经网络架构进行图像分类。这些模型将图像作为输入,然后输出一个标示物体的标签。因此,只有当图像中只包含一个要检测的对象时,才能使用这些模型。不过,使用图像分类模型进行物体检测的性能可能会很差,原因很简单,因为图像中物体周围存在噪声。图像分类模型旨在从整个图像中提取特征,并将图像作为一个整体进行分类。这里的问题是,两幅不同的图像,例如房间的图像和街道的图像,都包含所需的物体,却可能有相同的标签。这就给分类任务带来了困难。下面是 二 教程 如何从零开始构建 CNN。.
- 建立物体检测模型
如前所述,随着深度学习研究的深入,最近出现了物体检测模型。Faster R-CNN 架构于 2015 年底推出,是旧架构 Fast R-CNN 的迭代。它的输出是.NET:
a) 边界框列表
b) 为每个边界框指定一个标签
c) 每个标签和边界框的概率
首先,将预先训练好的 CNN 应用于图像,创建一个特征图。然后将这些特征传递给 RPN,以找到包含相关对象的候选区域(边界框)。最后一步是利用 CNN 计算出的特征和边界框对边界框内容进行分类,并调整其坐标(使其更适合对象)。这一步通过 RCNN 模块完成。下图展示了该架构:
- 利用物体检测架构和 CNN 建立混合模型
如果想提高性能,可以考虑混合方法。物体检测方法可能会导致错误的分类(物体被很好地检测到,但却预测出了错误的标签)。在这种情况下,您可以先在 dataset 上训练一个只有一个标签(例如 "物体")的物体检测模型,然后根据边界框的坐标裁剪图像。这将创建一组图像,其中只包含原始图像中检测到的相关物体。然后,您就可以将这组图像作为 CNN 图像分类的训练集。.
扩展 - 自动机器学习
如今,我们可以看到一些新举措的发展,其目的是让任何人,甚至是没有技术背景的人,都可以创建和定制自己的模型。这样做的目的是,无需掌握基础知识,就能训练自己的模型,而不是使用即用型模型(如第 1 级)。.
它是如何工作的?
该解决方案包括自动创建图像分类模型或物体检测模型。您只需提供带有图像标签的 dataset,然后将其发送给解决方案。该 data 将被摄取,以便对其进行计算机视觉模型训练(作为第 2 级或第 3 级)。它将输出一个训练有素的模型,有时甚至是一个 API,您可以用它来预测标签和定位新图像上的对象。该模型可自行优化,因此您无需了解如何实现该模型以及如何设置参数。.
有什么解决方案?
在这一领域出现了两个主要参与者,他们发布的工具目前仍处于测试阶段。.
- 首先是谷歌及其云平台套件中的谷歌云 AutoML 组件(Google Cloud AutoML)。链接到这里).Cloud AutoML 不仅适用于计算机视觉问题,还可用于任何机器学习应用以及自然语言处理和翻译。.
- 其次,我们有开源计划 AutoKeras (链接到这里).它基于 Keras,依靠自动搜索深度学习模型的架构和超参数。.
Data 科学家马蒂厄-蒙泰古(Matthieu Montaigu)和卡斯拉-曼苏里(Kasra Mansouri)共同撰写的文章。.
您是否有兴趣了解更多有关利用定制产品识别模型进行销售预测的信息?我们的专家随时准备回答您的任何问题!

博客









