你好,
我想给一个已有的算法胶囊添加一些新功能,有办法做到吗?还是需要新建一个全新的算法胶囊?
如何给已有的算法胶囊添加功能
存档自 BrainFrame 论坛。发布于 2020年6月29日。 3 条回复 · 610 次浏览 由英文原帖翻译成中文。 阅读原文
你想添加哪些功能?
在有人能帮你之前 @AOTU support @AOTU support
你看过这里的资料吗?也许能找到你需要的内容:
https://openvisioncapsules.readthedocs.io/en/latest/
我试过几个人体检测算法胶囊。我想找到每个检测框的坐标,用来计算人与人之间的距离。有办法做到吗?谢谢。
你好,感谢在论坛上发帖!
使用 BrainFrame 的开发者想利用推理信息,主要有两个入口:
- 算法胶囊系统。如你所知,可以修改在 BrainFrame 服务端上运行的代码。
- 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 添加你的坐标测量代码。