本文为 AI 研习社编译的技术博客,原标题 : Using Object Detection for Complex Image Classification Scenarios Part 1: 作者 | Aaron (Ari) Bornstein 翻译 | chesc 校对 | 酱番梨 审核 | 约翰逊·李加薪 整理 | 立鱼王 原文链接: https://towardsdatascience.com/using-object-detection-for-complex-image-classification-scenarios-part-1-779c87d1eecb
TLDR; 本系列是基于检测以下现实生活代码记录中复杂策略的工作。该系列的代码可以在原文找到。
第1部分:AI计算机视觉革命
计算机视觉的最新发展已经改变了计算机视觉领域。许多曾经被认为只能在科幻中使用的场景最近已经变得像使用API一样简单。
例如,仅在四年前,以下漫画出现在XKCD上。
XKCD 2014年9月24日
早在2014年,对于普通开发人员而言,进行基本的图像分类能力被认为近乎于科幻小说。仅仅三年之后,我们不仅可以确定图片是否包括鸟类,我们还可以告诉你鸟的种类,这只鸟在图片中的位置,并实时追踪鸟类的迁徙模式。
Microsoft开发人员博客 使用Azure ML进行鸟类检测 和 用于与保护指标合作的目标检测的主动学习 2018年11月6日
实际上,并非每个计算机视觉问题都与鸟类、花卉、猫和狗有关
在本系列中,我们将回顾用于零售业的现实生活中的计算机视觉用例,并将比较和对比一些用于解决这个问题的不同方法和技术。
一年多以前,微软与中欧和东欧的一家大型糖果产品制造商合作,建立了一个机器学习模型,用于验证经销商是否正确地存放巧克力。我们合作的公司拥有遍布14个国家的大型连锁超市分销网络。每个经销商都要根据标准政策在其展台上摆放巧克力。每一项政策都描述了给定巧克力应该放在什么架子上,以及应该按什么顺序存放。
执行这些政策的“常规”审计活动需要巨大的成本。我们的合作伙伴希望开发一个系统,在这个系统中,审核员或商店经理可以拍照,并立即得知货架是否正确存放,如上图所示。
即使采用最先进的方法,这也是一项具有挑战性的工作,原因包括:
- 图像质量
- 图像角度
- 轻微与规则不相符
模型很容易看出这里面没有巧克力
尽管上图中右边一些错误存放的商品是显然“与规则不相符”的,并且很容易分类。但其他一些,例如下面这种“不相符”是更微妙的情况,更难以正确分类。
图像识别模型很难知道这个图像没有巧克力
第1部分
# 系列挑战
在本系列中,我们将构建一个类似于上述场景的复杂策略分类器。要有效存储图像,必须按以下顺序存储。
顶架(苏打水)
中层(果汁)
底架(水)
在左边我们有一个有效的图像,右侧我们有一个无效的图像
这个问题的潜在技术解决方案
Microsoft提供了一系列可用于解决计算机视觉任务的人工智能服务,每个解决方案都可以在Azure上运行。
从 Azure Cognitive Services 到 Azure DSVM 和 Azure Machine Learning 每种技术和方法都有不同的优势和权衡,适合计算机视觉用例的范围。
认知服务
Azure Cognitive Services 是一套开箱即用的API和高级服务,可帮助您在不需要任何领域经验的情况下开始执行AI任务。
Azure 数据科学虚拟机 与 机器学习服务
数据科学虚拟机是在Azure上的虚拟机镜像。它已经安装和配置了许多流行的数据科学和深度学习工具。这些镜像带有流行的数据科学和机器学习工具,包括Microsoft R Server Developer Edition,Microsoft R Open,Anaconda Python,Julia,Jupyter notebooks,Visual Studio Code,RStudio,xgboost等等。您可以通过配置DSVM(数据科学虚拟机),而不是自行创建一个类似的工作区,从而节省大量的安装,配置和包管理过程。部署了DSVM后,就可以立即开始数据科学项目的工作。
关于如何使用DSVM的详细信息,请参阅在Azure上使用Linux数据科学虚拟机的数据科学。
Azure机器学习服务
Azure 机器学习服务使您能够更快地构建和训练机器学习模型,并轻松地部署到云。使用最新的开源技术,如TensorFlow,PyTorch或Jupyter。在本地进行实验,然后在云上使用支持GPU的大型集群快速扩展。通过自动化机器学习和超参数调整对数据科学进行加速。使用集成的CI/CD工具跟踪您的实验、管理模型并轻松部署。
深度学习框架与Keras
通常,深度学习工程师不会手动实现矩阵代数运算。相反,他们使用PyTorch或TensorFlow等框架。Keras是一个用Python编写的开源神经网络库。它能够运行在TensorFlow,Microsoft Cognitive Toolkit或Theano之上。它旨在实现对深层神经网络的快速实验,着重于用户友好、模块化和可扩展性。--维基百科
在数据科学虚拟机上与Jupyter,Docker和PyTorch进行交互式深度学习......学习使用Jupyter,PyTorch和Data Science Virtual Machine训练深度学习模型
在以下系列中,我们将探讨其中一些技术和体系结构,以解决我们自己的复杂策略分类方案。
系列目标
在这个系列的最后,你应该
- 了解人工智能计算机视觉前沿
- 能够构建部署自定义的视觉服务模型
- 利用Keras和迁移学习构建CNN图像识别模型
- 使用vott和fasterrcnn对复杂分类场景的目标检测模型进行注释和训练
- 使用Azure ML Service和ACI在云上训练和部署自定义的计算机视觉模型
资源
Pythic Coder推荐的用于在azure上开始机器学习的内容
因为DevOps资源上的帖子很受欢迎,而且很难跟踪文档,… medium.com
aribornstein - Overview
@pythiccoder。aribornstein有68个存储库。在GitHub.github.com上关注他们的代码。
认知服务|Microsoft AzureMicrosoft Azure Stack是Azure的扩展 - 将云计算的灵活性和创新带入您的... azure.microsoft.com
下一篇文章
本系列的下一篇文章将介绍如何使用自定义视觉服务来处理此任务,后续文章将解决以下问题:
- 使用Keras CNNs,MobileNet和迁移学习进行策略识别
- 使用Keras RetinaNet进行策略检测
- 使用Azure机器学习服务在云上训练计算机视觉模型
- 使用Azure机器学习在远程集群上训练计算机视觉模型
如果您有任何问题、评论或主题需要与我讨论,请随时在Twitter上关注我,如果您觉得我错过了一个里程碑,请告诉我。
关于作者
Aaron(Ari)Bornstein是一位狂热的人工智能爱好者,对历史充满热情,致力于新技术和计算医学。作为微软云开发者倡导团队的开源工程师,他与以色列高科技社区合作,通过改变游戏规则的技术解决现实世界的问题,然后将其记录下来,开源并与世界其他地方共享。