代码之家  ›  专栏  ›  技术社区  ›  Boris K

约罗和普罗托夫

  •  0
  • Boris K  · 技术社区  · 5 年前

    print('Loading model - ', end='')
    with open('models/tiny-yolo-voc.pb', 'rb') as f:
        model = f.read()
        res = conn.execute_command('AI.MODELSET', 'yolo:model', 'TF', args.device, 'INPUTS', 'input', 'OUTPUTS', 'output', model)
        print(res)
    
    # Load the PyTorch post processing boxes script
    print('Loading script - ', end='')
    with open('yolo_boxes.py', 'rb') as f:
        script = f.read()
        res = conn.execute_command('AI.SCRIPTSET', 'yolo:script', args.device, script)
        print(res)
    

    然后,它在每一帧上运行RedisAI模型运行程序,生成一些框,并抛出类别不是14(人)的框。

    modelRunner = redisAI.createModelRunner('yolo:model')
        redisAI.modelRunnerAddInput(modelRunner, 'input', image_tensor)
        redisAI.modelRunnerAddOutput(modelRunner, 'output')
        model_replies = redisAI.modelRunnerRun(modelRunner)
        model_output = model_replies[0]
        prf.add('model')
    
    # log('script')
    # The model's output is processed with a PyTorch script for non maxima suppression
    scriptRunner = redisAI.createScriptRunner('yolo:script', 'boxes_from_tf')
    redisAI.scriptRunnerAddInput(scriptRunner, model_output)
    redisAI.scriptRunnerAddOutput(scriptRunner)
    script_reply = redisAI.scriptRunnerRun(scriptRunner)
    prf.add('script')
    
    # log('boxes')
    # The script outputs bounding boxes
    shape = redisAI.tensorGetDims(script_reply)
    buf = redisAI.tensorGetDataAsBlob(script_reply)
    boxes = np.frombuffer(buf, dtype=np.float32).reshape(shape)
    
    # Iterate boxes to extract the people
    ratio = float(IMG_SIZE) / max(pil_image.width, pil_image.height)  # ratio = old / new
    pad_x = (IMG_SIZE - pil_image.width * ratio) / 2                  # Width padding
    pad_y = (IMG_SIZE - pil_image.height * ratio) / 2                 # Height padding
    boxes_out = []
    people_count = 0
    for box in boxes[0]:
        if box[4] == 0.0:  # Remove zero-confidence detections
            continue
        if box[-1] != 14:  # Ignore detections that aren't people
            continue
        people_count += 1
    

    0 回复  |  直到 5 年前
    推荐文章