如何给已有的算法胶囊添加功能

存档自 BrainFrame 论坛。发布于 2020年6月29日。 3 条回复 · 610 次浏览 由英文原帖翻译成中文。 阅读原文

AOTU support

你好,
我想给一个已有的算法胶囊添加一些新功能,有办法做到吗?还是需要新建一个全新的算法胶囊?

AOTU support

我试过几个人体检测算法胶囊。我想找到每个检测框的坐标,用来计算人与人之间的距离。有办法做到吗?谢谢。

AOTU support

你好,感谢在论坛上发帖!

使用 BrainFrame 的开发者想利用推理信息,主要有两个入口:

  1. 算法胶囊系统。如你所知,可以修改在 BrainFrame 服务端上运行的代码。
  2. REST API,它让你可以与 BrainFrame 交互并实时提取推理数据。

我想找到每个检测框的坐标,用来计算人与人之间的距离。

听起来你现在想做的是数据的后处理,而不是创建新的深度学习模型或从画面本身提取信息。我建议使用 REST API 实时提取数据,并在此基础上做后处理。下面是一个代码片段,演示如何从 BrainFrame 流式获取推理结果,并查看返回的检测框坐标:

要运行这段代码,首先安装 brainframe-api 的 Python 封装:

pip3 install brainframe-api

现在,可以运行下面的代码实时打印检测结果:

from brainframe.api import BrainFrameAPI, bf_codecs

api = BrainFrameAPI("http://localhost")

assert len(api.get_stream_configurations()), \
    "There should be at least one stream already configured!"

# Get the inference stream
for zone_status_packet in api.get_zone_status_stream():
    # Organize detections results as a dictionary of {stream_id: [Detections]}
    detections_per_stream = {
        stream_id: zone_status.within
        for stream_id, zone_statuses in zone_status_packet.items()
        for zone_name, zone_status in zone_statuses.items()
        if zone_name == "Screen"
    }

    # Iterate over each stream_id, detections combination
    for stream_id, detections in detections_per_stream.items():
        # Look at detection coordinates here
        for detection in detections:
            detection: bf_codecs.Detection
            print(f"Class={detection.class_name}, coords={detection.coords}")

这段代码会通过 Python 封装连接 BrainFrame REST API,并连接推理输出流。我建议以这种方式使用 REST API 添加你的坐标测量代码。

© 2026 Dilili Labs 版权所有 · 网站隐私声明
Built on 2026-10-10 00:24:35 UTC