前言
在上一次的测试中,我们对比了常见模型在三个平台下的运行效果,这次我们自己训练一个Mobilenet-SSD模型,增加了不同输入维度的情况下,模型运行效率的对比
AIStudio CPU: 2 Cores 8GB Memory
AIStudio GPU: V100 16GB VMem
Edgeboard
训练模型
模型使用AIStudio提供的官方工程 进行训练,训练和预测代码如下
Mobilenet-SSD:https://aistudio.baidu.com/aistudio/projectdetail/41752
按照之前我们的做法,导出model文件和param文件。
运行预测
我们执行预测,忽略掉预处理的速度,仅仅计算模型前向传播的时间。
对于AIstudio平台,我们计算以下代码的运行时间
label = exe.run(inference_program, feed={feed_target_names[0]: tensor_img}, fetch_list=fetch_targets)
对于Edgeboard上面的PaddleMobile,我们计算以下代码的运行时间
PaddleTensor tensor;
tensor.shape = std::vector({1, input_channel, input_width, input_height});
tensor.data = PaddleBuf(data, sizeof(data));
tensor.dtype = PaddleDType::FLOAT32;
std::vector paddle_tensor_feeds(1, tensor);
PaddleTensor tensor_out;
tensor_out.shape = std::vector({});
tensor_out.data = PaddleBuf();
tensor_out.dtype = PaddleDType::FLOAT32;
std::vector outputs(1, tensor_out);
predictor->Run(paddle_tensor_feeds, &outputs);
以下图片为预测结果,由于时间有限,没有很细致去训练模型,仅仅对比了模型运行的速度。
下表为模型在不同维度下的预测速度的对比,从中来看,其速度相对于V100的GPU基本处于同一个数量级,远远领先与GPU
在之前的文章里我们提到,本来想继续移植一个前段时间的大尺度的分割网络Unet进行尝试,想继续试试他最大可以跑的模型大小,但似乎Edgeboard目前还不支持分割,所以我们更换了目标检测网络进行尝试。在mobilenet-SSD这个模型上,Edgeboard最大可以跑到700*700的输入维度,并且能保持在16fps之上(不包含输入图像的语出过程),基本上具有实时性。
之前我提到的,在我的两台笔记本电脑上网络不是很稳定,经常出现相互无法ping通的情况,目前经过试验之后,发现问题为板子的网卡在与不支持千兆的网卡进行通信时候,不能正确的协商,仍然使用千兆模式,使用以下命令固定为百兆即可正常连接
ethtool -s eth0 speed 100 duplex full
Edgeboard是我第一款接触的嵌入式神经网络加速设备。Paddle-mobile也是我接触的第一个移动端神经网络框架,也是我接触的第一个基于FPGA实现的加速框架。从我了解这个框架到现在仅仅不到半年的时间,已经发布了多个模型转换工具,降低了开发难度,并且支持EasyDL这种方式。虽然目前仍然有一些不成熟的坑需要填,不过相信在软件的迭代下面,它能成为一个很好的嵌入式原型设计平台。
这厉害了。。。树莓派3B是300-500ms。。。得多拉胯啊
请问这是哪一款edgeboard
看看
厉害了