- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
基于Intel Analytics Zoo上分布式TensorFlow的美的 / KUKA工业检测平台
展开查看详情
1 . 基于 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 .(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)) <<<<
3 .返回的 RDD(train_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 from object_detection.builders import model_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) >>>>
4 .在运行过程中,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 上的示例了解更多详细信息。