查看: 2679|回复: 1

【征集/转载】角蜂鸟AI视觉套件:角蜂鸟底层API

[复制链接]
  • TA的每日心情
    擦汗
    2020-4-8 12:00
  • 签到天数: 381 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2018-8-19 09:51:53 | 显示全部楼层 |阅读模式
    分享到:
    版本 0.1.0[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    Enumerations[color=var(--MAIN-ANCHOR-color)][size=0.5em]GlobalOption[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      GlobalOption类是一个枚举类,定义了一些选项,这些选项用于SetGlobalOption和GetGlobalOption函数输入和返回值。
    • 枚举: LOGLEVEL
    • 选项类型: int
    • 合法数值: 0, 1, 2
    • 获取/设置 get, set
    • 描述
      0 = 没有打印输出 (默认)
      1 = 只打印错误
      2 = 打印所有信息

    Status[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      Status类是一个枚举类,定义了API函数的状态返回值。如果API函数返回一个非零状态值,通常会抛出一个与之对应的异常。可能出现的状态值如下所示:
    • 枚举: HS_OK
    • 描述:
      函数调用正常。
    • 枚举: HS_BUSY
    • 描述:
      设备忙,稍后重试。
    • 枚举: HS_ERROR
    • 描述:
      函数调用遇到意外错误。
    • 枚举: HS_OUT_OF_MEMORY
    • 描述:
      主机内存用尽。
    • 枚举: HS_DEVICE_NOT_FOUND
    • 描述:
      没有找到设备。
    • 枚举: HS_INVALID_PARAMETERS
    • 描述:
      输入参数有错误。
    • 枚举: HS_TIMEOUT
    • 描述:
      设备通讯超时。
    • 枚举: HS_NO_DATA
    • 描述:
      没有返回数据。
    • 枚举: HS_GONE
    • 描述:
      graph或者设备,在操作期间已经被关闭.
    • 枚举: HS_UNSUPPORTED_GRAPH_FILE
    • 描述:
      graph文件有损坏,或者可能由之前不兼容版本的工具生成。请尝试使用与当前API函数版本相匹配的工具重新生成graph文件。

    EnumerateDevices[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于获取设备名称列表。列表中每一个设备名都可以用来实例化一个Device类。
    • 语法:

        deviceNames = EnumerateDevices()
    • 参数: None.
    • 返回值:
      一个包含设备名称的数组。每一个设备名都可以用来实例化一个Device类。
    • 实例

        import hs.hsapi as hs    deviceNames = hs.EnumerateDevices()    if len(deviceNames) == 0:        print("Error - No devices detected.")        quit()    # 打开第一个找到的设备    device = hs.Device(deviceNames[0])    # 创建graph,或者根据需要使用device    # 如果创建过graph,销毁graph    device.CloseDevice()SetGlobalOption[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于设置全局选项。可用的全局选项和可能的值请参考GlobalOption枚举类。
    • 语法:

        SetGlobalOption(option, value)
    • 参数:
      • option: GlobalOptions枚举成员,用于指定哪一个选项需要设置。
      • value: 设置的新值。
    • 实例

        import hs.hsapi as hs    # 将全局日志输出设置为verbose级别。    hs.SetGlobalOption(hs.GlobalOption.LOGLEVEL, 2)GetGlobalOption[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于获取全局选项。
    • 语法:

        value = GetGlobalOption(option)
    • 参数:
      • option: 用于指定获取哪个选项。
    • 返回值:
      返回指定选项对应的数值。
    • 实例

        from hs import hsapi as hs    # 获取当前日志选项。    logLevel = hs.GetGlobalOption(hs.GlobalOption.LOGLEVEL)    print("The current global logging level is: ", logLevel)Device Class[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    Device类表示角蜂鸟设备。典型的情况是,每个实例化的Device类都对应一个连接到系统的角蜂鸟设备。所以多个角蜂鸟设备对应多个Device实例。
    使用方法[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    创建Device类的实例,必须用设备名进行初始化。设备名可以通过EnumerateDevices()函数获取。成功创建Device类的实例后,典型的使用方法是调用OpenDevice()打开设备、调用AllocateGraph()分配graph、使用graph、调用CloseDevice()关闭设备。
    Device类方法[color=var(--MAIN-ANCHOR-color)][size=0.5em]Device.__init__()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于初始化Device类对象。
    • 语法:

        hs.Device("device name here")
    • 参数:
      • deviceName: 设备名称。通过调用EnumerateDevices()函数获得。
    • 返回值:
      None.
    • 实例

        import hs.hsapi as hs    # 枚举所有连接到系统的角蜂鸟设备。    deviceNames = hs.EnumerateDevices()    # 创建并初始化一个Device类对象    hsDevice = hs.Device(deviceNames[0])    # 打开设备,使用设备,关闭设备。Device.OpenDevice()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于打开设备。
    • 语法:

        OpenDevice()
    • 参数:
      None.
    • 返回值:
      None.
    • 实例

        # 本例只打开第一个设备    import hs.hsapi as hs    deviceNames = hs.EnumerateDevices()    firstDevice = hs.Device(deviceNames[0])    firstDevice.OpenDevice()    # 使用设备后关闭设备    firstDevice.CloseDevice()    #############################################    #############################################    # 本例打开所有设备    import hs.hsapi as hs    devices = hs.EnumerateDevices()    devlist = list()    for devnum in range(len(devices)):        devlist.append(ncs.Device(devices[devnum]))        devlist[devnum].OpenDevice()    #    # 关闭所有打开的设备    #    for dev in devList:        dev.CloseDevice()    #############################################Device.CloseDevice()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于关闭设备。
    • 语法:

        dev.CloseDevice()
    • 参数:
      None.
    • 返回值:
      None.
    • 实例

        # 本例展示打开和关闭第一个设备    import hs.hsapi as hs    deviceNames = hs.EnumerateDevices()    firstDevice = hs.Device(deviceNames[0])    # 打开设备    firstDevice.OpenDevice()    # 使用设备    # 关闭设备    firstDevice.CloseDevice()Device.AllocateGraph()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      本函数用于创建一个Graph对象,该对象代表一个神经网络。通过调用Graph.LoadTensor()函数和Graph.GetResult()函数,可以获得推断结果。
    • 语法:

        dev.AllocateGraph(graphPath)
    • 参数:
      • graphPath: graph文件路径,字符串类型。
    • 返回值:
      返回Graph对象。
    • 实例

        from hs import hsapi as hs    # 枚举全部设备    device_List = hs.Enumerate()    # 初始化并打开第一个设备    device = hs.Device(device_List[0])    device.OpenDevice()    # 通过graph文件路径,加载一个graph到设备上     graph = device.AllocateGraph("../networks/myNetwork/graph")    # 使用graph    # 卸载graph,释放资源    graph.DeallocateGraph()    #关闭设备Graph类[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    Graph类是一个容器,包含graph神经网络文件。
    使用方法[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    为了使用Graph类,用户必须通过调用Device类的AllocateGraph()函数创建一个graph句柄。graph文件路径会被传递给AllocateGraph()函数,该函数会返回一个Graph类的实例。建立Graph实例后的典型用法是获取和设置可选选项,然后调用LoadTensor()和GetResult()函数进行前向推断。最后调用DeallocateGraph()释放资源。
    Graph类方法[color=var(--MAIN-ANCHOR-color)][size=0.5em]Graph.DeallocateGraph()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于释放Device.AllocateGraph()分配的角蜂鸟设备资源。每个与graph文件相关联的资源,都应该调用此函数进行释放。
    • 语法:

        graph.DeallocateGraph()
    • 参数:
      None.
    • 返回值:
      None.
    • 实例

        import hs.hsapi as hs    deviceNames = hs.EnumerateDevices()    if len(deviceNames) == 0:        print("Error - No devices detected.")        quit()    # 打开第一个找到的设备    device = hs.Device(devices[0])    # 分配graph    device.AllocateGraph("my_graph")    # 使用graph    # 释放graph    graph.DeallocateGraph()    device.CloseDevice()Graph.LoadTensor()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数初始化一个实例,该实例与角蜂鸟上的一个前向传播网络相关联。调用此函数后,使用Graph.GetResult()来获取前向推断的结果。
    • 语法:

        graph.LoadTensor(inputTensor, userObject)
    • 参数:
      • inputTensor: 输入数据,该数据将传递给前向网络。数据格式必须是一个半精度浮点数(float16)类型的numpy ndarray。
      • userObject: 一个用户定义的参数。该参数会在调用GetResult时与推断结果一并返回。
    • 返回值:
      如果函数正常调用,返回TrueReturns True,否则返回False。
    • 实例

        # 枚举设备    # 打开设备, # 分配Graph, # 设置Graph选项    # 读取一张图像,调整图像尺寸,转换图像格式    if (graph.LoadTensor(img.astype(numpy.float16), 'user object')):        print("LoadTensor success")        output, userobj = graph.GetResult()    # 释放graph,并关闭设备Graph.GetResult()[color=var(--MAIN-ANCHOR-color)][size=0.5em]
    • 版本: 0.1.0
    • 概述:
      此函数用于获取前向推断网络的结果。
    • 语法:

        inferenceResult, userObj = graph.GetResult()
    • 参数:
      None.
    • 返回值:
      返回推断结果,以及用户在Graph.LoadTensor()函数中指定的自定义数据。
    • 实例

        # 打开角蜂鸟设备,并分配一个graph    graph.LoadTensor(img.astype(numpy.float16), "user object for this inference")    inferenceResult, userObj = graph.GetResult()    # 释放graph    # 关闭设备

    评分

    参与人数 1与非币 +50 收起 理由
    satoll + 50 AI征集活动奖励

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-8-23 23:50:27 | 显示全部楼层
    来看看,看看新科技
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 04:50 , Processed in 0.142001 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.