39

基于美的 / KUKA工业检测平台使用Intel Analytics Zoo的深度学习

 5 years ago
source link: https://www.jiqizhixin.com/articles/2018-09-28-9?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

背景

工业检查(用于产品缺陷检测)是现代制造业的重要组成部分。随着人工智能,计算机视觉和大数据技术的发展,我们可以建立先进的工业检测系统以实现和人类水平媲美的准确性,并具有更高的效率和更低的成本。在本文中,我们将分享我们在美的/ 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集群,以进行分布式训练或推理。

zu2myqE.png!web 如上图所示,Midea / 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将图像发送到网络服务以检测各种缺陷(例如,缺失标签或螺栓等),如下所示。

mq2IFfz.png!web 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 )

<<<<

在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 . 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 [email protected]

>>>>

withtf . 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模型进行分布式训练(如所述)。无需修改代码或手动配置,整个训练流程就可以自动从单个节点扩展到基于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上的 示例 了解更多详细信息。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK