新闻中心

EEPW首页 > 智能计算 > 进阶指南 > 不用写程序也能轻松上手─DL Workbench图形化接口工具(下)

不用写程序也能轻松上手─DL Workbench图形化接口工具(下)

作者:时间:2021-06-01来源:英特尔收藏

*实际案例操作:SSD对象检测

本文引用地址:http://www.eepw.com.cn/article/202106/426072.htm

接下来就用一个实际的例子来说明如何操作

1.数据集预处理

    如果手上没有现成的数据集可供测试,可以参考官网[6]的说明下载需要的公开数据集及标注档(Annotations)。这里以COCO 2014数据集举例说明。点选网页[6]上Download COCO Dataset下的[2014 Val images](约6.2G Byte)和[2014 Train/Val annotations](约241M Byte)下载图像集(val2014.zip)和标注文档(annotations_trainval2014.zip)。

    接着建立一个文件夹(/home/<用户名称>/Work)来存放这两个文件。

    选择网页[6]Cut COCO Dataset下的[the script to cut datasets](cut_dataset.py)另存新文件到刚才建立的文件夹中。最后执行数据集减量(cut)操作,只保留少部份文件,方便导入(import)测试,完成后会自动产生新的压缩文件并存放在/home/<使用名称>/Work/subsets/coco_subset_10_29.tar.gz。完整执行命令如下所示。

#先将数据集和标注文件及剪切程序复制到/home/用户名称/Work路径下

#再执行cut_dataset.py,根据指定路径(*_dir)获得源文件,设置指定数量(output_size)的图像,最后输出到output_archive_dir路径下。

#这里的python是指3.x不是2.x,若计算机中同时有两种版本请改用python3

python/home/<User Name>/Work/cut_dataset.py

--source_images_archive_dir=/home/<User Name>/Work/val2014.zip

--source_annotations_archive_dir=/home/<User

Name>/Work/annotations_trainval2014.zip

--output_size=20

--output_archive_dir=/home/<User Name>/Work/subsets

--dataset_type=coco

--first_image=10

    如果想自行准备数据集,可参考官网[7],其中Common Objects in Context(COCO)就有说明COCO文件安排格式,如Fig.5所示。

1622526548402139.jpg

Fig.5 自备COCO数据集格式,

(a)一般分类/对象检测

(b)图像语义分割

(c)超分辨率

2.导入模型及转换参数精度

    为了方便后续同时测试CPU及Neural Compute Stick 2(MYRIAD),可使用下列命令启动DLWorkbench。

./start_workbench.sh-IMAGE_NAME openvino/workbench-TAG latest-ENABLE_MYRIAD

    不过这里经测试后发现,如果你的计算机上没安装标准版的Distribution of toolkit for Linux[8],而只有安装Linux Docker环境时,将无法使用iGPU和NCS2(MYRIAD)。如果使用Windows Docker环境(Windows 10+Widnows Subsystem for Linux 2[WSL2]+Ubuntu 18.04)时则只能使用CPU,因为目前微软在WSL2上GPU和USB驱动程序支持性仍不完整。

    接着就可以进入DL Workbench网页操作界面,开始设置主动配置(Active Configurations)。这里需要设置四个项目,包括模型(Models)、目标(Target)、环境(Environment)及数据集(Dataset)。使用前要确保网络畅通,因为接下来的工作需要从网络上下载许多数据。

    首先按下“Create”键创建一组新的配置,导入(Import)现成的公开模型及预训练好的模型,由于在线预训练好的模型项目太多,可以直接输入模型名称快速检索想要的模型。由于这个范例要测试对象检测功能,所以选用「ssd_mobilenet_v2_coco」,再来选择模型的参数精度(FP16/FP32)进行转换(Convert),完成后就会在模型区出现模型名称、产生日期、参数精度、模型大小,状态区会显示是否还在传输中,完成后会产生一个绿色的对勾。完整流程如

Fig.6所示。

1622526638585778.jpg

Fig.6设置DL Workbench推理模型流程。(OmniXRI Feb.2021整理制作)

    如果不想使用现成的模型,也可切换到原始模型(Original Model)页面,根据系统要求自行提供对应格式的模型(网络)及参数(权重值),再按“Import Model”即可导入自定义模型。

目前可支持 IR,Caffe,MXNet,ONNX,TensorFlow等格式。

1622526680360040.jpg

Fig.7 DL Workbench导入自定义模型。(OmniXRI Mar.2021整理制作)

3.导入数据集

    点选Validation Dataset旁的“Import”键,进入导入验证数据集页面,按“Choose File”键,选择歩骤1产生的coco_subset_10_29.tar.gz,按下“Import”,即可完成导入数据集。如Fig.8所示。

1622526725774985.jpg

Fig.8 DL Workbench导入数据集。(OmniXRI Mar.2021整理制作)

4.设置目标/环境

    这里可看到目前有CPU和MYRIAD(NCS2)两种装置可供选择,可先选择其中一种(CPU),点击模型和数据集后即可按下页面最下方的“Create”建立第一种配置。如Fig.9所示。这里要注意的是,模型及数据集没有准备好之前(尚在传输或转换中)是无法设置目标及环境。

1622526765700229.jpg

Fig.9 DL Workbench设置目标环境并建立配置。(OmniXRI Mar.2021整理制作)

5.建立基准点

    按下“Create”建立第一组配置后,就会进入配置页面,并进行第一次推理,自动产生第一个基准点。推理时根据执行硬件的不同,可能需要等待一小段时间,完成后会得到最佳的输出速度(Best Throughout,FPS)、延迟时间(Respective Latency,ms)及推理精确度(Accuracy),并在效率综合图表上绘出一个参考点。

    通常预设为单独推理(Single Inference),用户可自由定义要测试的并行推理(Parallel Infers)及批次大小(Batch Size),再按下“Execute”键来测试不同条件的推理效果。如果觉得一直手动调整太麻烦,也可使用组推理(Group Inference),直接点击要测试的组合,按下“Execute”键,然后泡杯咖啡慢慢等结果出来。从产出的图表就可一眼看出哪种组合的效果最好,做为后续打包输出的依据,如Fig.10所示。

1622526806345935.jpg

1622526828733282.jpg

Fig.10 DL Workbench建立基准点及结果图。(OmniXRI Mar.2021整理制作)

6.基准点效能比较

    测试效果除了可以使用单独或组测试外,也可进行多种硬件的推理效果比较。首先点击页面上方的“Create”重新回到步骤4,此时只需改选装置为[Intel Movidius Myriad X VPU](NCS2),其它模型和数据集不变,移到页面最下方按下“Create”键就能新增一组配置,再次回到步骤5。此时可参考步骤5,将所有操作重复一遍,得出相同参数结果方便进行比较。

    接着按下“Compare”就能进入比较页面进行两组配置的测试结果比较,若有两组以上配置,则一次只能勾选两组进行比较。这里除了基本效果图表外,还有平均延迟时间、各层运行时间及更多图表信息,可根据需求自行参考,如Fig.11所示。

1622526866471800.jpg

1622526866247549.jpg

Fig.11 DL Workbench多配置基准点效能比较。(OmniXRI Mar.2021整理制作)

7.上传图像测试

    经过上面一连串设置及找到最优配套后就可以来测试一下模型推理能力,这里支持直接上传单张测试图像来实验。首先切换到“Test”页面,按下“Select Images”上传待测试的图像,或者直接把图像拉到这个框里面。接着按下“Test”进行测试,预测(Predicitions)结果就会出现在右方。显示结果内容包括一组可调的临界值(Threshold)和高于临界的对象,同时会显示对象的分类编号(Class ID#)和置信度(Confidence)。点击对象编号时,左侧还会绘制出对应的内容。若觉得检测出的对象太少,可将临界值调低,再确认一下。

    另外目前COCO检测结果只有用数字编号(Class#00)表示,并没有直接卷标(Label)文字标示,不容易直接确认结果。如果想更确认编号对应内容,可参考[9]说明。一般COCO有91分类和80分类(从91类删除部份),而现在对应的是91分类的标签。

    接着就用几张图来实验一下结果,第一组猫和狗,一张对象重迭(Ex.1-1)、一张物件分开(Ex.1-2)。第二组苹果和香蕉,一张对象重迭(Ex.2-1)、一张物件分开(Ex.2-2)。初步实验结果可看出SSD_MobileNet_v2_COCO这组预练训模型对于重迭的对象似乎分辨能力较弱,而较大的对象则辨识能力尚可接受。不过这样的实验数据太少,所以结论可能不完全正确,仅供参考。测试内容如Fig.12所示,而测试结果如Fig.13~16所示。

1622526929673397.jpg

Fig.12 DL Workbench进行对象检测流程及测试样本图像。(OmniXRI Mar.2021整理制作)

1622526950249434.jpg

Fig.13 Ex.1-1对象检测实验结果。(OmniXRI Mar.2021整理制作)

1622526969794431.jpg

Fig.14 Ex.1-2对象检测实验结果。(OmniXRI Mar.2021整理制作)

1622526985584930.jpg

Fig.15 Ex.2-1对象检测实验结果。(OmniXRI Mar.2021整理制作)

1622527007637845.jpg

Fig.16 Ex.2-2对象检测实验结果。(OmniXRI Mar.2021整理制作)

8.打包输出

    为了后续更方便地部署到对应目标工作环境,并且让编程人员能直接编写及呼叫对应函数,这里还提供打包输出,不过目前只支持Linux。打包内容包含所选择执行目标(硬件)相关函数、模块、Python API及安装脚本。首先切换到“Pack”页面,勾选所需项目,再按下“Pack”就会开始打包成一个压缩文件(*.tar.gz)并询问要存放的路径,如此即完成所有程序。如Fig.17所示。

1622527048484938.jpg

Fig.17 DL Workbench打包选项及程序。(OmniXRI Mar.2021整理制作)

*小结

    通过以上的说明及实例操作,相信大家应该对Intel Toolkit中的DL Workbench有了一些初步的认识,图形化的接口更是让用户可以轻松上手,一目了然。对于那些不会或不想编程就想要快速实验想法的人,及需要耗费大量心力调参的工程师来说,该工具确实缩短了开发及测试时间。后续还有更多优化及提升推理效果的工作,敬请期待。

*参考文献

[1]许哲豪,”【Intel OpenVINO教学】如何利用Docker快速创建OpenVINO开发环境”

http://omnixri.blogspot.com/2021/01/intel-openvinodockeropenvino.html

[2]Intel OpenVINO Toolkit,"Install the DL Workbench"

https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Install_Workbench.html

[3]Intel OpenVINO Toolkit,"Download and Cut Datasets"

https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Download_and_Cut_Datasets.html

[4]Intel,“DL(Deep Learning)Workbench|OpenVINO™toolkit|Ep.42|Intel Software”

https://youtu.be/20ROqz5j1y8

[5]Intel,“DL(Deep Learning)Workbench-The Full Flow|OpenVINO™toolkit|Ep.43|

Intel Software”https://youtu.be/DaR49bs8qwk

[6]Intel OpenVINO Toolkit,"Download and Cut Datasets"

https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Download_and_Cut_Datasets.html

[7]Intel OpenVINO Toolkit,"Dataset Types"

https://docs.openvinotoolkit.org/2021.2/workbench_docs_Workbench_DG_Dataset_Types.html

[8]Intel OpenVINO Toolkit,"Install Intel®Distribution of OpenVINO™toolkit for Linux*"

https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux.html

[9]Amikelive Technology Blog,"What Object Categories/Labels Are In COCO Dataset?"

https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/

*延伸阅读

[A]许哲豪,”【Intel OpenVINO™教学】GStreamer串流视频智能分析不再慢吞吞─了解Intel OpenVINO DL Stream如何加速视频推理”http://omnixri.blogspot.com/2021/02/intelopenvinogstreamerintel-openvino.htm



评论


相关推荐

技术专区

关闭