Toybrick

标题: 反复验证,python接口的rknn不支持多线程 [打印本页]

作者: xiaqing10    时间: 2019-6-1 02:49
标题: 反复验证,python接口的rknn不支持多线程

rknn 0.99 以及 rknn1.0 都尝试了, 单线程跑推断没任何问题,只要多线程去推断则会卡死.

那样只能把推断和后处理分线程跑,但是多个模型就只能级联不能并行了,请问这是python接口的Bug吗?



作者: xiaqing10    时间: 2019-6-1 02:52
本帖最后由 xiaqing10 于 2019-6-1 02:53 编辑

附上简单的测试代码
  1. import numpy as np
  2. import re
  3. import math
  4. import random
  5. import cv2
  6. import threading
  7. import time

  8. import logging

  9. logging.basicConfig(filename='log.log',level=logging.INFO,format='%(asctime)s %(message)s',
  10. datefmt='%m/%d/%Y %I:%M:%S %p')

  11. from rknn.api import RKNN

  12. INPUT_SIZE = 224
  13. INPUT_POSE = 224


  14. def model1():

  15.     rknn = RKNN()
  16.     rknn.load_rknn('./model.rknn')

  17.     rknn.init_runtime()

  18.     img = cv2.imread("test1.jpg")
  19.    

  20.     while True:

  21.         time.sleep(1)
  22.         img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  23.         img = cv2.resize(img, (INPUT_SIZE, INPUT_SIZE), interpolation=cv2.INTER_CUBIC)
  24.         logging.info('--> Running  age model')
  25.         [outputs] = rknn.inference(inputs=[img])
  26.         logging.info('age inference len result: '+ str(outputs))
  27.         logging.info('age inference len result: ')

  28. def model2():

  29.     rknn = RKNN()
  30.     rknn.load_rknn('./model.rknn')
  31.     rknn.init_runtime()

  32.     img = cv2.imread("test2.jpg")

  33.     while True:
  34.         time.sleep(1)

  35.         img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  36.         img = cv2.resize(img, (INPUT_POSE, INPUT_POSE), interpolation=cv2.INTER_CUBIC)
  37.         logging.info('--> Running  pose model')
  38.         [outputs] = rknn.inference(inputs=[img])
  39.         logging.info('pose inference len result: '+ str( outputs))
  40.         logging.info('pose inference len result: ')


  41. def thread1():

  42.     logging.info("start to run age thread")
  43.     t = threading.Thread( target = model1)
  44.     t.start()

  45. def thread2():

  46.     logging.info("start to run pose thread")
  47.     s = threading.Thread( target = model2)
  48.     s.start()

  49. if __name__ == '__main__':


  50.     thread1()
  51.     thread2()

  52.     while True:
  53.       
  54.         time.sleep(1)
  55.         logging.info("XXXXX")
  56.      
复制代码
代码
作者: zhangzj    时间: 2019-6-6 11:52
xiaqing10 发表于 2019-6-1 02:52
附上简单的测试代码代码

inference卡住是当前版本的一个bug,后续版本会修复。
多谢反馈!




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3