背景
工业检查(用于产品缺陷检测)是现代制造业的重要组成部分。随着人工智能,计算机视觉和大数据技术的发展,我们可以建立先进的工业检测系统以实现和人类水平媲美的准确性,并具有更高的效率和更低的成本。在本文中,我们将分享我们在美的/ kuka,使用英特尔analytics zoo(一个基于apache spark、tensorflow和bigdl的开源数据分析+ ai平台),来建立基于深度学习的工业检测平台的经验。
基于analytics zoo的端到端的解决方案
为了便于构建和生成大数据的深度学习应用程序,analyticszoo(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))
<<<<
返回的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模型(如下图所示):
<<>>
在模型构建之后,我们首先加载预先训练的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
output = model.predict(inputs);
<<<<
结论
midea / kuka通过结合人工智能,计算机视觉和大数据技术,在analytics zoo(https://github.com/intel-analytics/analytics-zoo)上成功构建了先进的工业检测系统。它使用了工业机器人,相机和英特尔至强服务器等工具对产品的缺陷进行自动检测。尤其是analytics zoo提供统一的数据分析 + ai平台,可将spark,bigdl和tensorflow程序无缝集成到一个数据分析流水线中,从而可以轻松构建和生产化部署基于大数据的深度学习应用程序(包括分布式训练和推理,以及低延迟在线服务)。您可以参考github上的示例了解更多详细信息。
黄章:国产手机走错路了外观设计不属于未来
条形智能LCD户外广告机,你的精彩生活有它一份
约束管理器节省设计时间
盘点汽车芯片主要应用领域
MS46SF11模块集成适用于要求严苛的环境工业级 32.768 kHz 晶体振荡器
基于Intel Analytics Zoo上分布式TensorFlow的美的/KUKA工业检测平台
西门子plc数据类型_西门子plc通讯方式
成都汇阳投资关于多模态驱动应用前景广阔,上游算力迎机会!
苹果,三星,华为进军汽车行业,三者有什么区别
“放大招”的人工智能给天津带来什么?
华为在公司内部会议公布2018年公司营收目标为1022亿美元
小米真无线蓝牙耳机2S曝光 首次加入无线充电功能
曝苹果将在2020年下半年发布5G版iPhone和iPad Pro机型
华为畅享10到底有哪些亮点
双十二买哪款音质蓝牙耳机好?音质好的蓝牙耳机推荐
罗彻斯特电子成功复产摩托罗拉首款处理器MC6800系列
通过电容式触控按键解决方案实现低成本水位测量
无界全面屏轻薄本 华为MateBook D 14锐龙版种草众多学生党
两种端到端的自动驾驶系统算法架构
壹沓科技提供物流自动化解决方案,助力「外运集运」数智供应链建设