Genome Hunter作者

基于Intel Analytics Zoo上分布式TensorFlow的美的 / KUKA工业检测平台

背景

工业检查(用于产品缺陷检测)是现代制造业的重要组成部分。随着人工智能,计算机视觉和大数据技术的发展,我们可以建立先进的工业检测系统以实现和人类水平媲美的准确性,并具有更高的效率和更低的成本。在本文中,我们将分享我们在美的/ KUKA,使用英特尔Analytics Zoo(一个基于Apache Spark、TensorFlow和BigDL的开源数据分析+ AI平台),来建立基于深度学习的工业检测平台的经验。

基于Analytics Zoo端到端的解决方案

为了便于构建和生成大数据的深度学习应用程序,Analytics Zoo(https://github.com/intel-analytics/analytics-zoo)提供了统一的数据分析+ AI平台,可将Spark,TensorFlow和BigDL程序无缝集成到一个统一的数据分析流水线中;然后,整个流水线可以透明地扩展到(运行在标准的Intel至强服务器上的)Hadoop / Spark集群,以进行分布式训练或推理。

如上图所示,美的/ KUKA的工业检测平台是一个建立在Analytics Zoo之上的端到端数据分析流水线,包括

(1)使用Spark以分布式方式处理从制造流水线获取的大量图像。

(2)使用Tensorflow Object Detection API直接构建对象检测(例如,SSDLite + MobileNet V2)模型

(3)直接使用在第一步中预处理的图像RDD,以分布式方式在Spark集群上训练(或微调)对象检测模型。

(4)直接使用评估图像集的RDD,以分布式方式在Spark集群上评估(或推断)训练模型。

(5)使用Analytics-Zoo中POJO模式的API, 将整个Pipeline部署在低延迟的、在线Web 服务中。

在检测时间期间,具有相机的工业机器人可以自动拍摄产品的照片,并通过HTTP将图像发送到网络服务以检测各种缺陷(例如,缺失标签或螺栓等),如下所示。

Spark,TensorFlow和BigDL的统一集成

如前所述,Analytics Zoo提供了“集成数据分析”的深度学习编程模型,因此用户可以轻松开发端到端的数据分析+ AI流水线(使用Spark,TensorFlow,Keras等),然后透明地运行在大型Hadoop / Spark集群上、使用BigDL和Spark进行分布式训练和推理。此外,用户还可以轻松部署端到端的流水线,以实现低延迟的在线服务(使用Analytics Zoo提供的POJO风格的模型服务API)。

例如,为了以分布式方式处理缺陷检测流水线的训练数据,我们可以使用PySpark将原始图像数据读取到RDD中,然后应用一些变换来解码图像,并提取边界框和类标签,如下所示。

<<<<

train_rdd = sc.parallelize(examples_list)

.map(lambda x: read_image_and_label(x))

.map(lambda image: decode_to_ndarrays(image))

<<<<

返回的RDDtrain_rdd)中的每条记录都包含一个NumPy ndarray的列表(即图像,边界框,类和检测到的框的数量),它可以直接用于创建TensorFlow模型,并在Analytics Zoo上进行分布式训练。我们可以通过创建TFDataset(如下所示)来实现这一功能。

<<<<

dataset = TFDataset.from_rdd(train_rdd,

            names=["images","bbox","classes","num_detections"],

            shapes=[[300,300,3],[None,4], [None], [1)]],

            types=[tf.float32, tf.float32, tf.int32, tf.int32],

            batch_size=BATCH_SIZE,

hard_code_batch_size=True)

<<<<

在Analytics Zoo中,TFDataset表示一个分布式存储的记录集合,其中每条记录包含一个或多个Tensorflow Tensor对象。然后我们可以直接将这些Tensor作为输入构建Tensorflow模型。例如,我们使用了Tensorflow Object Detection API构建了SSDLite + MobileNet V2模型:

<<<<

# using tensorflow object detection api to construct model

# https://github.com/tensorflow/models/tree/master/research/object_detection

fromobject_detection.buildersimportmodel_builder

images,bbox,classes,num_detections=dataset.tensors

detection_model=model_builder.build(model_config,is_training=True)

resized_images,true_image_shapes=detection_model.preprocess(images)

detection_model.provide_groundtruth(bbox,classes)

prediction_dict = detection_model.predict(resized_images, true_image_shapes)

losses=detection_model.loss(prediction_dict,true_image_shapes)

total_loss=tf.add_n(losses.values())

 >>>>

在模型构建之后,我们首先加载预先训练的Tensoflow模型,然后使用Analytics Zoo中的TFOptimizer(如下所示)对模型进行微调训练;最终我们在验证数据集上达到0.97 mAP@0.5。

>>>>

with tf.Session()as sess:

    init_from_checkpoint(sess, CHECKPOINT_PATH)

    optimizer = TFOptimizer(total_loss, RMSprop(LR), sess)

    optimizer.optimize(end_trigger=MaxEpoch(20))

    save_to_new_checkpoint(sess, NEW_CHEKCPOINT_PATH)

>>>>

在运行过程中,Analytics-Zoo使用PySpark从磁盘中读取了输入数据并进行预处理,并构造了一个Tensorflow Tensor的RDD。然后,基于BigDL和Spark对Tensorflow模型进行分布式训练(如BigDL技术报告所述)。无需修改代码或手动配置,整个训练流程就可以自动从单个节点扩展到基于Intel至强服务器的大型Hadoop / Spark集群。

模型训练结束后,我们还可以基于与训练流程类似的流水线,使用PySpark,TensorFlow和BigDL在Analytics Zoo上执行大规模的分布式评估/推断。

低延迟的在线服务

如下所示,我们也可以使用Analytics Zoo提供的POJO风格的模型服务API轻松部署推理流水线,以实现低延迟的在线服务(例如,Web服务,Apache Storm,Apache Flink等等)。有关详细信息,请参阅 https://analytics-zoo.github.io/master/#ProgrammingGuide/inference/

<<<<

        AbstractInferenceModel model =new AbstractInferenceModel(){};

        model.loadTF(modelPath,0,0,false);

        List<List<JTensor>> output = model.predict(inputs);

<<<<

结论

Midea / KUKA通过结合人工智能,计算机视觉和大数据技术,在Analytics Zoo(https://github.com/intel-analytics/analytics-zoo)上成功构建了先进的工业检测系统。它使用了工业机器人,相机和英特尔至强服务器等工具对产品的缺陷进行自动检测。尤其是Analytics Zoo提供统一的数据分析+ AI平台,可将Spark,BigDL和TensorFlow程序无缝集成到一个数据分析流水线中,从而可以轻松构建和生产化部署基于大数据的深度学习应用程序(包括分布式训练和推理,以及低延迟在线服务)。您可以参考Github上的示例了解更多详细信息。

Analytics Zoo
Analytics Zoo

Analytics Zoo是一个统一的大数据分析+AI平台,它无缝地将Spark、TensorFlow、Keras和BigDL程序集成到一个整合的流水线中,可以透明地扩展到大型Apache Hadoop/Spark集群,用于分布式训练或预测,方便用户构建深度学习端到端的应用。通过该专栏希望和大家一起探讨AI在实际生活中各个领域的创新。

工程深度学习
4
相关数据
英特尔机构

英特尔是计算创新领域的全球领先厂商,致力于拓展科技疆界,让最精彩体验成为可能。英特尔创始于1968年,已拥有近半个世纪产品创新和引领市场的经验。英特尔1971年推出了世界上第一个微处理器,后来又促进了计算机和互联网的革命,改变了整个世界的进程。如今,英特尔正转型成为一家数据公司,制定了清晰的数据战略,凭借云和数据中心、物联网、存储、FPGA以及5G构成的增长良性循环,提供独到价值,驱动日益发展的智能互联世界。英特尔专注于技术创新,同时也积极支持中国的自主创新,与产业伙伴携手推动智能互联的发展。基于明确的数据战略和智能互联全栈实力,英特尔瞄准人工智能、无人驾驶、5G、精准医疗、体育等关键领域,与中国深度合作。面向未来,英特尔致力于做中国高价值合作伙伴,在新科技、新经济、新消费三个方面,着力驱动产业协同创新,为实体经济增值,促进消费升级。

https://www.intel.com/content/www/us/en/company-overview/company-overview.html
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

工业机器人技术

工业机器人是面向工业加工制造的可自动控制,多用途,需有三轴及以上可编程的固定或可移动机械手。其系统中包括带有执行机构的机械手以及示教控制器。 它可以依靠自身控制能力来执行预设的轨迹及动作。典型应用包括焊接,刷漆,组装,采集和放置等工作。工业机器人完成工作具有高效性,持久性和准确性。目前常用的工业机器人包括关节机器人,SCARA机器人,并联机器人和直角坐标机器人等。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~