Toybrick

楼主: mailonghua

请问RK1808S计算棒能够支持并行推理吗

mailonghua

注册会员

积分
78
楼主
发表于 2019-11-7 17:17:53    查看: 21596|回复: 16 | [复制链接]    打印 | 显示全部楼层
你好,请教一下,py的推理输入接口是一个array,但是却只允许传入一个图片。
所以想确定,加速棒有没有可能允许并行推理,如GPU运作一样,内部有多个核
这样可以将资源充分使用
回复

使用道具 举报

mailonghua

注册会员

积分
78
沙发
 楼主| 发表于 2019-11-7 17:21:31 | 显示全部楼层
补充一下,就是输入多个图片能并行加速运算,这样更有效率,并有些模型的比较大,能够充分运用内部资源
而有些模型较为简单,内部资源没有充分运行。所以若有这样的功能,那么简单的模型就可以并行推理,这样是否效率更高
请问支持这样的功能吗
回复

使用道具 举报

mailonghua

注册会员

积分
78
板凳
 楼主| 发表于 2019-11-8 10:50:14 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 08:36
1. rknn支持batch size > 1 的 input, 详细请参看rknn文档
2. 也支持多模型同时运行
...

1.请教一下,你这里描述的batch size >1 的INPUT,应该就是表示多个支持多个图片同时推理
刚又翻看了文档,发现C接口是描述了可以多个输入

但是python接口:inference():inputs:待推理的输入,如经过 cv2处理的图片。格式是 ndarray list。
尝试如下:
(1).outputs = rknn.inference(inputs=[img,img2])

E RKNNAPI: rknn_input_set,  n_inputs = 2, expect 1!
E Catch exception when setting inputs.

(2).outputs = rknn.inference(inputs=[[img],[img2]])
若是这样传递图片,那么 outputs 返回的是None

2.支持多模型同时运行,该如何操作,直接调用API加载两个模型,但是接口是阻塞类型的,如何理解这个并行呢
回复

使用道具 举报

mailonghua

注册会员

积分
78
地板
 楼主| 发表于 2019-11-8 11:03:13 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 10:53
python借口也是支持的,但是你要转成numpy数组,不是这样送进去的,没有list和array混用的。
具体你参考 ...

好的,谢谢你,我找找帖子
回复

使用道具 举报

mailonghua

注册会员

积分
78
5#
 楼主| 发表于 2019-11-8 11:32:49 | 显示全部楼层
本帖最后由 mailonghua 于 2019-11-8 14:01 编辑
jefferyzhang 发表于 2019-11-8 10:53
python借口也是支持的,但是你要转成numpy数组,不是这样送进去的,没有list和array混用的。
具体你参考 ...

是这个吗
http://t.rock-chips.com/forum.ph ... ge=1&extra=#pid4127

回复

使用道具 举报

mailonghua

注册会员

积分
78
6#
 楼主| 发表于 2019-11-8 15:08:39 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 14:13
多图推理:http://t.rock-chips.com/forum.php?mod=viewthread&tid=929

谢谢,这个刚才有参考修改模型(使用了提供的mobilenet_v1的test case),但是出现了警告,从total time上看好像还是只推理了一张图片,唯一不同的是输入是个彩色图片(3通道),而ex是灰度图片,这并不影响吧?
报出的警告如下:
--> Init runtime environment
done
--> Running model
W RKNNAPI: warning: inputs[0] expected input len is 150528, but actual len is 451584!
----------------------------------------
[array([[0.        , 0.        , 0.        , ..., 0.        , 0.        ,
        0.00028157]], dtype=float32)]
----------------------------------------
done
--> Begin evaluate model performance
W RKNNAPI: warning: inputs[0] expected input len is 150528, but actual len is 451584!
========================================================================
                               Performance                              
========================================================================
Total Time(us): 7679
FPS: 130.23
========================================================================

主要将输入进行了修改如下:
# Set inputs
      img = cv2.imread('./dog_224x224.jpg')
      img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
      img = cv2.resize(img,(224,224),interpolation = cv2.INTER_AREA)
   
      img1 = cv2.imread('./dog.jpg')
      img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
      img1 = cv2.resize(img1,(224,224),interpolation = cv2.INTER_AREA)
   
      img2 = cv2.imread('./dog1.jpg')
      img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
      img2 = cv2.resize(img2,(224,224),interpolation = cv2.INTER_AREA)                        
   
      img3 = cv2.imread('./dog2.jpg')
      img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2RGB)
      img3 = cv2.resize(img3,(224,224),interpolation = cv2.INTER_AREA)
   
     image_array=[]
     image_array.append(img1)
     image_array.append(img2)
     image_array.append(img3)
  
     #im = img3.reshape(224,224,3)
     #image_array.append(im)
  
     mat = np.array(image_array).reshape(3,224,224,3)
回复

使用道具 举报

mailonghua

注册会员

积分
78
7#
 楼主| 发表于 2019-11-8 15:47:35 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 15:42
看具体运行时间,不用看评估。
评估的好像只会是一个batch的时间。

感谢提醒和帮助
那么上面的warning是正常的吗?其是在提示输入单元(3*224*224*3)个数超过了实际要求(224*224*3),感觉这个提醒表示操作不对啊?
输入完全按照帖子来进行的,不同的是这里使用的是彩色图片
回复

使用道具 举报

mailonghua

注册会员

积分
78
8#
 楼主| 发表于 2019-11-8 16:10:27 | 显示全部楼层
jefferyzhang 发表于 2019-11-8 16:00
应该是你build时候batchsize就不对。。rknn转换时候压根就没设进去batch=3

牛,牛,厉害,非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表