来自客户的Altas 200 DK开发板几个问题及其回答0516
一、 预处理问题
1. 转换模型预处理问题:
a. 能否解释Input Image Format具体含义? 为什么选择RGB888格式,直接导入图片就无法得到结果?
答: Input Image Format是指输入模型的图像格式是什么,需要根据实际情况选择;在你的编程框架中,你输入该模型的图片个是是RGB888格式你就选择RGB888格式,如果选择错误,预处理过程会出错,当然结果也会错。
b. 能否解释Input Image Size具体含义?为什么宽要是128的整数倍,高是16的整数倍,按我的理解,这里不应该是直接输入网络的图片大小吗?
答:你这个模型转换过程中的预处理过程,是调用DVPP完成格式的转换的,送给DVPP处理的话,数据需要128*16对齐才能发挥D芯片最佳性能
2. ImagePreProcess模块作用是什么?和转换模型中的预处理有什么区别,还是说只是对输入图片进行resize操作,并将其保存传入InferenceEngine模块?
答:ImagePreProcess是一个Engine,你可以在该引擎的cpp代码文件中添加任何你想要做的处理过程,你所看到的界面上可以配置的resize操作是抽象出来的通用的过程,是为了避免大家重复编码的过程而已; 转换模型过程中你看到的预处理过程也被称为AIPP,AIPP仅包括你在界面上看到的文件格式转换、减均值和归一化因子乘等,该预处理过程可以被理解为将会被添加到了你所转换的D模型的推理过程中去。
3. 按我个人的理解,在模型转换过程时进行了预处理设置,则调用转换后的模型进行inference的时候,我可以直接输入一张图片,而不需要进行预处理操作即可。
答:这要看你的工程需要啊,要看模型转换过程中的预处理设置就已经能够将你的原始输入数据处理为满足你的模型要求了,否则你就需要再ImagePreProcess过程做更多的事情。
4. ImagePreProcess模块是否对所有网络通用?可否讲解一下预处理这部分的开发思路?
答:ImagePreProcess对所有工程通用,具体使用可参考生态网站上各个应用的ImagePreProcess源码。
5. 能否给出github中“models”里已转换模型在转换过程中的具体参数配置?
答:各个应用的readme中,用到的模型其需要修改的具体参数设置都有,没说明的就用默认配置;其他模型则没有参数配置说明,因为配置跟具体的使用场景有关,如果没有给出具体的示例,就没法给出具体的参数配置值,需要在使用过程中根据需要进行修改。
二. 后处理问题
1. SaveFilePostProcess模块是不是对所有网络都可通用?
答: 是通用的,当你需要将推理结果保存为文件时,你可以选择该Engine
2. ImageClassificationPostProcess模块是否对所有分类网络通用?
答:保存文档的含义,这是模型的输出,你自己训练的模型,或者是你要用的模型,他的输出你必然知道什么意思的,这里示例中的输出,如果想要理解意思的话,建议了解下该网络模型就可以理解这些文件格式的。其实如果是你自己的工程,你自己训练的模型,这些肯定不是问题。
3. 可否讲解一下后处理这部分的开发思路?例如针对SSDPostProcess模块进行讲解?可否增添yolo的后处理模块?
答:后处理过程就是对模型推理的结果做处理的过程,比如说你可以将输出的结果直接展示到浏览器中,可以参考人脸检测的后处理过程,具体思路如下红框中的处理过程,可以结合源码参考。
三. 帧率显示问题
1. 能否在后处理模块或者终端输出inference的处理时间或帧率?不然无法知道具体inference的时间,性能提高多少,网络能在板子上跑多快?
答:考虑在网络的执行引擎开头和结尾计时并在结尾打印HIAI_ENGINE_LOG来显示单次引擎执行时长;帧率的话可能要引入第三方库,自己实现较繁琐。
2. Profiling 无法使用问题:
答:观察倒数第二行日志,拉起profiling的时候填写的IP地址是10.20.58.146,您的开发板ip地址是否是该地址?正常默认usb连接的场景下该ip地址应该填写192.168.1.2
五. HiAI Engine自定义工程开发问题
参照样例工程代码教程,无法得到结果:
答:这个应该是处理过程中模型推理执行过程中失败了,结果文件没有生成,一直在循环等待,请通过MindStudio查看host侧log日志中具体的出错信息进行定位,一般里面会有详细的错误信息。
2. 样例工程代码教程中,为什么要将Input Image Preprocess图像预处理开关关掉呢?
答:样例工程只是为了展示引擎的基本编写,引擎内部对数据都是透传,并不需要进行预处理故关闭。
3. 对于Engine的理解:
SrcEngine:预处理?
FrameworkerEngine:推理?
DestEngine:后处理?
可否讲解一下这几个部分的开发思路?
答:在MindStudio的画布上展示的几乎每一个节点(除了模型和数据集)都是一个引擎,所有引擎构成了一个图。我们的应用框架启动时就是将图初始化好,然后我们编写代码向最顶端的引擎灌注数据,一旦有数据进去,引擎便开始工作,从一个引擎进,处理,输出至下一个引擎;下一个引擎接到上一个引擎的输入,又开始工作,如此执行下去直到最后一个引擎处理完毕给出结果,单次执行算是结束。本例中给出的几个引擎只是为了展示引擎的执行逻辑,并无实际意义。正常情况下我们是首先准备好数据集,然后将数据集一帧一帧的灌进预处理引擎,预处理结束将数据交给模型推理引擎,模型推理结束将数据交给后处理引擎,完成一次完整的推理过程。
预处理一般我们会将输入处理成模型需要的数据格式,如果是CV类应用,可调用我们自研的DVPP进行图像的预处理,如裁剪、格式转换等;
推理就是拿到上一层处理结果来调用模型进行推理就是了;
后处理是拿到上一层的推理结果进行后续的动作,可以直接将结果打印个日志(输出到文件中),如果结果是矩形的两点坐标,可以通过后处理在原图上根据两点坐标画个矩形展示出来等等,根据需要进行编写即可。
4. 能否提供多一些详细点的自定义工程开发样例教程(例如yolo,ssd等有自定义层的网络)?并且这些例程是否可以不通过MindStudio进行开发,直接使用make编译,这样我们可以自己调用opencv去读取图片视频处理,最后进行相应结果显示处理?
答:目前暂不支持有自定义层的caffe网络模型转换,只支持原生算子。
参见https://github.com/Ascend/sample-facialrecognition,这是个稍微复杂一些的应用,涉及三个网络的整体贯通,里边的代码可作为借鉴。里边调用DVPP处理图片的过程可以替换为opencv。
5. 我看到github上有个python接口的调用API,请问这个大概还需要多久可以开放?可能python接口会更容易掌握。
答: 目前开放时间不确定,不好意思。
五. 硬件改动建议
1. 能否对开发板硬件进行改动,添加USB接口,HDMI接口,使其可以安装ubuntu桌面版系统,接鼠标键盘之类,可以直接通过HDMI接口在板子上演示demo?
答:可以有两个选择:
1. 可以用Atlas 200模块,自己做底板,就可以自己添加任意外设;Atlas 200 模块只做加速计算。
2. 可以选购其他产品形态,比如智能小站,支持各种外设接口。
- 点赞
- 收藏
- 关注作者
评论(0)