首页 > 解决方案 > 无法使用 openvino 模型

问题描述

我正在使用来自 openvino的 person-detection-action-recognition-0005预训练模型来检测人员及其行为。

https://docs.openvinotoolkit.org/latest/_models_intel_person_detection_action_recognition_0005_description_person_detection_action_recognition_0005.html

从上面的链接中,我编写了一个 python 脚本来进行检测。

这是脚本。

import cv2 

def main():

    print(cv2.__file__)

    frame = cv2.imread('/home/naveen/Downloads/person.jpg')

    actionNet = cv2.dnn.readNet('person-detection-action-recognition-0005.bin',
                    'person-detection-action-recognition-0005.xml')


    actionBlob = cv2.dnn.blobFromImage(frame, size=(680, 400))
    actionNet.setInput(actionBlob)

    # detection output
    actionOut = actionNet.forward(['mbox_loc1/out/conv/flat',
                'mbox_main_conf/out/conv/flat/softmax/flat',
                'out/anchor1','out/anchor2',
                'out/anchor3','out/anchor4'])


    # this is the part where I dont know how to get person bbox
    # and action label for those person fro actionOut

    for detection in actionOut[2].reshape(-1, 3):
        print('sitting ' +str( detection[0]))
        print('standing ' +str(detection[1]))
        print('raising hand ' +str(detection[2]))

现在,我不知道如何从输出变量(actionOut)中获取 bbox 和动作标签。我找不到任何解释这一点的文档或博客。

有人有什么想法或建议,怎么做?

标签: opencvopenvino

解决方案


有一个名为smart_classroom_demo: link的演示程序 ,此演示程序使用您尝试运行的网络。
输出解析位于此处 。实现是用 C++ 编写的,但它应该可以帮助您了解如何解析网络的输出。

希望它会有所帮助。


推荐阅读