建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
昇腾论坛 主题:14055帖子:83216

【技术干货】

昇腾在装配式装修中的应用

dcomcomnj 2021/9/6 1106

AI这个概念的提出,到如今已经走过了30年的历程。随着AI技术突飞猛进地发展,“落地”也成为AI领域企业齐头涌进的目标。如何真正借助AI技术,探索可沉淀的落地应用,帮助千行百业智能化转型,是昇腾以及所有开发者一直探索的方向。

于是我们从2020年起推出了昇腾众智计划,走进高校、科研院所、企业等组织和机构,通过项目合作方式,基于昇腾基础软硬件平台共同开发算子、网络模型及行业参考设计,集众人之智,推动产业生态发展。也是在众智走到南京的时候,我们结识了今天的主人公,南京工业大学计算机科学与技术学院的杜振龙老师。他非常认可众智的理念和昇腾的AI技术,带领他的学生并亲身参与了众多众智的项目,尤其在家装领域,利用机器学习,完成了应用落地,让我们来看看他是怎么做的。

 1.  应用背景    

装配化装饰是采用干式工法将工厂生产的内装部品在现场进行组合安装的装饰方式,主要包括干式工法楼(地)面、套装门、集成厨房、集成卫生间、管线与结构分离等。

安装套装门时维持矩形形状并保持与地面垂直是门施工质量达标的重要检测点。施工方通常需要借助外部工具进行人工检测,但由于施工人员技能水平存在差异,可能影响检测结果,导致出现装配质量问题。由于家装行业的特点,业主一旦入住,质量问题修复将极其困难,也会给业主带来不小的损失。由此可见提高质量检测的准确性显得尤为重要。

AI技术已在人脸识别、车牌识别、行为分析、视频结构化等方面得到广泛应用,已给现代人们的生活带来显著变化。经过我们的探索,把装饰施工现场各种情况的数据搜集起来,用深度学习构建数据中蕴含的知识(模型),利用AI模型可以为家装行业质量检测的准确性和效率带来不小的提升。

我们的工作包括模型构建和推理应用开发两个部分:

2.  模型构建

YOLOYou Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。现在YOLO已经发展到v5版本,基本组成包括。YOLO采取联合训练,联合训练定位和物体分类器,学习物体的准确位置,对数据进行分类类别。其更准确、速度快、识别对象更多的特性适用于我们处理的场景。YOLO V5代码URLhttps://github.com/ultralytics/yolov5

2.1数据集准备

在装修施工现场拍摄了826张数据。

图片1.png

                                                  图一 现场数据

制作了12类负样本数据。用LabelImg13类套装门数据进行标注。

图片2.png

图二 处理过的数据与标注

2.2模型训练

套装门安装后质检主要检测门是否与地面垂直、门面是否保持为矩形。根据套装门质检要求,项目对门四条边进行“人为”拉移形成了12类负样本数据。YOLO V513类数据学习、建模,给出测试数据最高分类评分,以此判定施工质量

 采用YOLO V5分类模型,如图三。


Yolo6.jpg

图三 YOLO V5模型结构

      2.3模型效果评估

  混淆矩阵常用来评估机器学习模型分类预测结果的准确程度,以矩阵形式把数据集中的真实类别与分类模型给出的分类判断进行汇总。从图四的混淆矩阵可以看出,采用的YOLO V5取得了较好的预测结果。

   图片7.jpg

      图四数据分布情况      

图片8.png

 图五 混淆矩阵

图片5.png

图六 P曲线

  图片6.png图七 R曲线                     


其中PR分别表示查准率与查全率。

   图片3.png图八PR曲线

图片4.png图九 F1_curve


由图七和图八可以看出,查准率高时,查全率偏低;查全率高时,查准率偏低。图七用P-R曲线给出模型对套装门分类的准确率。图九用PR的调和平均值F1来判断,F1越大,则模型分类、预测性能越好。


图片2.png

图十 模型结果多维呈现


其中

      BoxYOLO V5使用 GIoU Loss作为bounding box的损失,BoxGIoU损失函数均值;

     Objectness     目标检测loss均值;

     Classification:分类loss均值;

     Precision        精确率、查准率

     Recall             召回率、查全率

     val BOX:          验证集bounding box损失

     val Objectness:验证集目标检测loss均值

    val classification:验证集分类loss均值

    mAP@0.5:表示阈值大于0.5的平均mAP

    mAP@0.5:0.95:表示在不同IoU阈值(从0.50.95,步长0.05)区间的平均mAP

    mAP是用PrecisionRecall作为两轴作图后围成的面积,m表示平均。 

3.  推理应用开发

网络模型中,卷积计算扮演者至关重要的角色。在多层卷积神经网络模型中,卷积计算的计算量对模型性能起决定性作用,而卷积运算可转换为矩阵运算。昇腾AI处理器具备Cube运算单元,可大幅提高矩阵运算效率。同时昇腾AI处理器依据通用卷积的计算特征和数据流规律,将存储、计算和控制单元进行有效地组合和优化设计,高效组合了矩阵运算和数据缓冲区,有效提升了昇腾AI处理器的性能。另外昇腾AI异构计算架构CANN,为昇腾AI处理器提供了统一的编程语言Ascend CL,使得开发变得极为简便。在本次案例的实践中,我们在推理端选用了基于昇腾 310处理器的Atlas 200 DK

在推理应用开发之前,我们需要使用CANNATC模型转换工具,将前期训练好的ONNX模型转换为昇腾AI处理器支持的OM离线模型。

模型转换命令:/usr/local/Ascend/ascend-toolkit/latest/atc/bin/atc --model=./yolov5s_sim_t.onnx     --framework=5    --output=./yolov5s_sim_t  --input_format=NCHW   --input_shape="images:1,3,640,640" 

       --enable_small_channel=1    --insert_op_conf=./aipp_yolov5.cfg      --soc_version=Ascend310   --log=info 

      其中用到AIPP配置文件:

aipp_yolov5.cfg文件,如下所示。

    aipp_op {

             aipp_mode : static

            related_input_rank : 0

            input_format : YUV420SP_U8

            src_image_size_w : 640

            src_image_size_h : 640

           crop : false

           csc_switch : true

           rbuv_swap_switch : false

           matrix_r0c0 : 256

           matrix_r0c1 : 0

           matrix_r0c2 : 359

          matrix_r1c0 : 256

          matrix_r1c1 : -88

          matrix_r1c2 : -183

         matrix_r2c0 : 256

         matrix_r2c1 : 454

         matrix_r2c2 : 0

        input_bias_0 : 0

        input_bias_1 : 128

        input_bias_2 : 128

       var_reci_chn_0 : 0.0039216

       var_reci_chn_1 : 0.0039216

       var_reci_chn_2 : 0.0039216

   }

 然后按下图逻辑和流程构建推理应用。


                    9.5.png


  运行管理资源申请:

 用于初始化系统内部资源,固定的调用流程。

   加载模型文件并构建输出内存:

 从文件加载离线模型数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。

  把输入数据格式、大小、以及网络层数配置等设定在配置数据预处理:

 由于在前期模型训练阶段,我们定义了该模型的输入数据需求,因此对读入的图像数据进行预处理,然后构建模型的输入数据。我们在应用中使用了昇腾AI处理器的DVPP(Digital Vision Pre-Processing)对现场拍摄的照片进行处理,以满足模型输入要求。

     模型推理:

  根据构建好的模型输入数据进行模型推理。用bash run.sh进行推理。

     解析推理结果:

在后处理阶段,采用阈值过滤、nms、坐标转换等把推理结果输出为类别信息和坐标信息。同时在输出结果加上绿框标注。

bin_to_predict_yolo_pytorch.py程序用如下的格式

python3.7 bin_to_predict_yolo_pytorch.py -- bin_data_path result/dumpOutput_device0/ --det_results_path detection-results/ --origin_jpg_path val2014/ --coco_class_name coco2014.names

YOLO V5模型推理结果的bin文件解析出质检类型、置信度以及用左上角坐标点和右下角坐标点标出的门区域。bin_to_predict_yolo_pytorch.py程序的主要参数功能如下:

 --bin_data_path:推理结果输出路径

 --det_results_path:推理结果重解析的文件路径,若不存在则创建

 --origin_jpg_path:推理图像数据路径

 --coco_class_namecoco数据集类型信息

下面的图是把推理质检类型、置信标注在图像数据,并把绿色矩形框显示推理的左上角坐标点和右下角坐标点。


图片1.png


图十一 后处理结果框在图中

4.  总结

该项目全面应用了昇腾AI异构计算架构CANN的能力,模型转换工具使得不同框架开发的模型(例如:PytorchONNX)可以很容易的迁移、部署运行在昇腾AI处理器上。

在我们后期的实际验证过程中发现,YOLO V5模型在基于昇腾310Atlas 200 DK设备上运行时,套装门安装质检准确度达到了97%。相比之前的人工检测,每90套酒店房间装修节约2名专职质检人员。

方案可进一步扩展推广到家装行业的其他部品施工质量的评估,例如,墙面的油漆涂抹质量、地面砖铺贴、洗漱台安装等场景。随着检测场景的扩充和模型复杂度的提升,可以将推理端部署于Altas 800推理服务器或配有Altas 300i推理卡的服务器。结合移动端APP的拍照能力,构建完善的家装质量检测云服务平台。

回复15

随心走
0 0
2021/9/6 17:36

谢谢分享

2021/9/7 16:10

感谢分享

JammySate
0 0
2021/9/7 18:50

学习了,感谢分享

谭涟漪
0 1
2021/9/7 20:16

谢谢分享

寒默萧
0 1
2021/9/8 13:34

感谢分享!

2021/9/12 16:19

感谢分享

dcomcomnj
0 0
2021/9/17 00:57

欢迎讨论基于Atlas300DK的落地应用

2021/9/17 10:01

非常感谢楼主这么好的分享!最开始是看到你将其应用在踢脚线质检,现在又扩展到套装门,越来越深入了啊。

希望能看到越来越多这样的商用落地案例,希望看到CANN和昇腾能够在大家的实际业务场景中产生价值!


随心走
0 1
2021/9/17 13:35

感谢分享!

上划加载中
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

dcomcomnj

发帖: 1粉丝: 0

发消息 + 关注

更新于2021年09月06日 16:27:23 1106 15
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 昇腾在装配式装修中的应用

AI这个概念的提出,到如今已经走过了30年的历程。随着AI技术突飞猛进地发展,“落地”也成为AI领域企业齐头涌进的目标。如何真正借助AI技术,探索可沉淀的落地应用,帮助千行百业智能化转型,是昇腾以及所有开发者一直探索的方向。

于是我们从2020年起推出了昇腾众智计划,走进高校、科研院所、企业等组织和机构,通过项目合作方式,基于昇腾基础软硬件平台共同开发算子、网络模型及行业参考设计,集众人之智,推动产业生态发展。也是在众智走到南京的时候,我们结识了今天的主人公,南京工业大学计算机科学与技术学院的杜振龙老师。他非常认可众智的理念和昇腾的AI技术,带领他的学生并亲身参与了众多众智的项目,尤其在家装领域,利用机器学习,完成了应用落地,让我们来看看他是怎么做的。

 1.  应用背景    

装配化装饰是采用干式工法将工厂生产的内装部品在现场进行组合安装的装饰方式,主要包括干式工法楼(地)面、套装门、集成厨房、集成卫生间、管线与结构分离等。

安装套装门时维持矩形形状并保持与地面垂直是门施工质量达标的重要检测点。施工方通常需要借助外部工具进行人工检测,但由于施工人员技能水平存在差异,可能影响检测结果,导致出现装配质量问题。由于家装行业的特点,业主一旦入住,质量问题修复将极其困难,也会给业主带来不小的损失。由此可见提高质量检测的准确性显得尤为重要。

AI技术已在人脸识别、车牌识别、行为分析、视频结构化等方面得到广泛应用,已给现代人们的生活带来显著变化。经过我们的探索,把装饰施工现场各种情况的数据搜集起来,用深度学习构建数据中蕴含的知识(模型),利用AI模型可以为家装行业质量检测的准确性和效率带来不小的提升。

我们的工作包括模型构建和推理应用开发两个部分:

2.  模型构建

YOLOYou Only Look Once)是一种基于深度神经网络的对象识别和定位算法,其最大的特点是运行速度很快,可以用于实时系统。现在YOLO已经发展到v5版本,基本组成包括。YOLO采取联合训练,联合训练定位和物体分类器,学习物体的准确位置,对数据进行分类类别。其更准确、速度快、识别对象更多的特性适用于我们处理的场景。YOLO V5代码URLhttps://github.com/ultralytics/yolov5

2.1数据集准备

在装修施工现场拍摄了826张数据。

图片1.png

                                                  图一 现场数据

制作了12类负样本数据。用LabelImg13类套装门数据进行标注。

图片2.png

图二 处理过的数据与标注

2.2模型训练

套装门安装后质检主要检测门是否与地面垂直、门面是否保持为矩形。根据套装门质检要求,项目对门四条边进行“人为”拉移形成了12类负样本数据。YOLO V513类数据学习、建模,给出测试数据最高分类评分,以此判定施工质量

 采用YOLO V5分类模型,如图三。


Yolo6.jpg

图三 YOLO V5模型结构

      2.3模型效果评估

  混淆矩阵常用来评估机器学习模型分类预测结果的准确程度,以矩阵形式把数据集中的真实类别与分类模型给出的分类判断进行汇总。从图四的混淆矩阵可以看出,采用的YOLO V5取得了较好的预测结果。

   图片7.jpg

      图四数据分布情况      

图片8.png

 图五 混淆矩阵

图片5.png

图六 P曲线

  图片6.png图七 R曲线                     


其中PR分别表示查准率与查全率。

   图片3.png图八PR曲线

图片4.png图九 F1_curve


由图七和图八可以看出,查准率高时,查全率偏低;查全率高时,查准率偏低。图七用P-R曲线给出模型对套装门分类的准确率。图九用PR的调和平均值F1来判断,F1越大,则模型分类、预测性能越好。


图片2.png

图十 模型结果多维呈现


其中

      BoxYOLO V5使用 GIoU Loss作为bounding box的损失,BoxGIoU损失函数均值;

     Objectness     目标检测loss均值;

     Classification:分类loss均值;

     Precision        精确率、查准率

     Recall             召回率、查全率

     val BOX:          验证集bounding box损失

     val Objectness:验证集目标检测loss均值

    val classification:验证集分类loss均值

    mAP@0.5:表示阈值大于0.5的平均mAP

    mAP@0.5:0.95:表示在不同IoU阈值(从0.50.95,步长0.05)区间的平均mAP

    mAP是用PrecisionRecall作为两轴作图后围成的面积,m表示平均。 

3.  推理应用开发

网络模型中,卷积计算扮演者至关重要的角色。在多层卷积神经网络模型中,卷积计算的计算量对模型性能起决定性作用,而卷积运算可转换为矩阵运算。昇腾AI处理器具备Cube运算单元,可大幅提高矩阵运算效率。同时昇腾AI处理器依据通用卷积的计算特征和数据流规律,将存储、计算和控制单元进行有效地组合和优化设计,高效组合了矩阵运算和数据缓冲区,有效提升了昇腾AI处理器的性能。另外昇腾AI异构计算架构CANN,为昇腾AI处理器提供了统一的编程语言Ascend CL,使得开发变得极为简便。在本次案例的实践中,我们在推理端选用了基于昇腾 310处理器的Atlas 200 DK

在推理应用开发之前,我们需要使用CANNATC模型转换工具,将前期训练好的ONNX模型转换为昇腾AI处理器支持的OM离线模型。

模型转换命令:/usr/local/Ascend/ascend-toolkit/latest/atc/bin/atc --model=./yolov5s_sim_t.onnx     --framework=5    --output=./yolov5s_sim_t  --input_format=NCHW   --input_shape="images:1,3,640,640" 

       --enable_small_channel=1    --insert_op_conf=./aipp_yolov5.cfg      --soc_version=Ascend310   --log=info 

      其中用到AIPP配置文件:

aipp_yolov5.cfg文件,如下所示。

    aipp_op {

             aipp_mode : static

            related_input_rank : 0

            input_format : YUV420SP_U8

            src_image_size_w : 640

            src_image_size_h : 640

           crop : false

           csc_switch : true

           rbuv_swap_switch : false

           matrix_r0c0 : 256

           matrix_r0c1 : 0

           matrix_r0c2 : 359

          matrix_r1c0 : 256

          matrix_r1c1 : -88

          matrix_r1c2 : -183

         matrix_r2c0 : 256

         matrix_r2c1 : 454

         matrix_r2c2 : 0

        input_bias_0 : 0

        input_bias_1 : 128

        input_bias_2 : 128

       var_reci_chn_0 : 0.0039216

       var_reci_chn_1 : 0.0039216

       var_reci_chn_2 : 0.0039216

   }

 然后按下图逻辑和流程构建推理应用。


                    9.5.png


  运行管理资源申请:

 用于初始化系统内部资源,固定的调用流程。

   加载模型文件并构建输出内存:

 从文件加载离线模型数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。

  把输入数据格式、大小、以及网络层数配置等设定在配置数据预处理:

 由于在前期模型训练阶段,我们定义了该模型的输入数据需求,因此对读入的图像数据进行预处理,然后构建模型的输入数据。我们在应用中使用了昇腾AI处理器的DVPP(Digital Vision Pre-Processing)对现场拍摄的照片进行处理,以满足模型输入要求。

     模型推理:

  根据构建好的模型输入数据进行模型推理。用bash run.sh进行推理。

     解析推理结果:

在后处理阶段,采用阈值过滤、nms、坐标转换等把推理结果输出为类别信息和坐标信息。同时在输出结果加上绿框标注。

bin_to_predict_yolo_pytorch.py程序用如下的格式

python3.7 bin_to_predict_yolo_pytorch.py -- bin_data_path result/dumpOutput_device0/ --det_results_path detection-results/ --origin_jpg_path val2014/ --coco_class_name coco2014.names

YOLO V5模型推理结果的bin文件解析出质检类型、置信度以及用左上角坐标点和右下角坐标点标出的门区域。bin_to_predict_yolo_pytorch.py程序的主要参数功能如下:

 --bin_data_path:推理结果输出路径

 --det_results_path:推理结果重解析的文件路径,若不存在则创建

 --origin_jpg_path:推理图像数据路径

 --coco_class_namecoco数据集类型信息

下面的图是把推理质检类型、置信标注在图像数据,并把绿色矩形框显示推理的左上角坐标点和右下角坐标点。


图片1.png


图十一 后处理结果框在图中

4.  总结

该项目全面应用了昇腾AI异构计算架构CANN的能力,模型转换工具使得不同框架开发的模型(例如:PytorchONNX)可以很容易的迁移、部署运行在昇腾AI处理器上。

在我们后期的实际验证过程中发现,YOLO V5模型在基于昇腾310Atlas 200 DK设备上运行时,套装门安装质检准确度达到了97%。相比之前的人工检测,每90套酒店房间装修节约2名专职质检人员。

方案可进一步扩展推广到家装行业的其他部品施工质量的评估,例如,墙面的油漆涂抹质量、地面砖铺贴、洗漱台安装等场景。随着检测场景的扩充和模型复杂度的提升,可以将推理端部署于Altas 800推理服务器或配有Altas 300i推理卡的服务器。结合移动端APP的拍照能力,构建完善的家装质量检测云服务平台。

昇腾 机器学习

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

随心走

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年09月06日 17:36:46
直达本楼层的链接
沙发
显示全部楼层

谢谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年09月07日 16:10:06
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

JammySate

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年09月07日 18:50:43
直达本楼层的链接
地板
显示全部楼层

学习了,感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

谭涟漪

发帖: 31粉丝: 1

发消息 + 关注

发表于2021年09月07日 20:16:30
直达本楼层的链接
5#
显示全部楼层

谢谢分享

点赞1 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

寒默萧

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年09月08日 13:34:33
直达本楼层的链接
6#
显示全部楼层

感谢分享!

点赞1 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

青衣实验

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年09月12日 16:19:39
直达本楼层的链接
7#
显示全部楼层

感谢分享

点赞1 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

dcomcomnj

发帖: 1粉丝: 0

发消息 + 关注

发表于2021年09月17日 00:57:21
直达本楼层的链接
8#
显示全部楼层

欢迎讨论基于Atlas300DK的落地应用

点赞 评论 引用 举报