研究

真实环境中的主人识别

大多数会跟人的机器人只跟踪离它最近的人。Kiko 跟踪的是一个特定的人。即使这个人转身、换了外套、走到别人身后或离开房间,它也能继续跟踪。

01

问题

从机器人的高度看,家里很多人长得差不多。家人会穿同样的衣服,客人会从 Kiko 和主人之间走过。主人会转身、坐下或离开房间。

只跟随最近的人的机器人,总会在这里出错。Kiko 必须从大约膝盖的高度,时刻知道哪个人是它的主人。

02

方法

初始设置时,Kiko 扫描主人的面孔和身形。此后,它在每一帧中寻找人,持续跟踪每个人,并给每个人与主人的匹配程度打分。

分数综合了四种线索:外观、面孔、体形和深度。当某一种线索缺失时,比如主人转过身去,其他线索继续支撑判断。全部计算都在机器人本机完成。

几行代码说明思路
def owner_score(person, owner):
    cues = [
        appearance(person, owner),
        face(person, owner),
        body_shape(person, owner),
        depth(person, owner),
    ]
    seen = [c for c in cues if c is not None]
    return sum(seen) / len(seen) if seen else 0.0


def find_owner(people, owner):
    best = max(people, key=lambda p: owner_score(p, owner), default=None)
    if best and owner_score(best, owner) > THRESHOLD:
        return best
    return None  # keep searching

为本页编写的简化示意,并不是 Kiko 上实际运行的代码。

03

基准测试

我们从低视角录制自己的数据集,也就是 Kiko 所看到的高度。每段录制都按照脚本进行,脚本会故意让主人难以被持续跟踪。

场景

  • 转身
  • 换外套
  • 遮挡
  • 衣着相似
  • 离开后返回
  • 弱光

我们测量什么

  • 身份切换次数
  • 重新找到主人所需时间
  • 跟丢主人的时长
  • 跟随距离误差
  • 机器人上的帧率

04

结果

下面每一项数值仍在机器人上测量中。数据真实可靠后,我们会公布。

指标数值
身份切换次数测量中
重新找到主人所需时间测量中
跟丢主人的时长测量中
跟随距离误差测量中
机器人上的帧率测量中

05

局限

我们清楚说明这个方法目前在哪些情况下会失效。

  • 每台机器人只有一位主人。
  • 光线非常暗。
  • 长得几乎一样的人。
  • 在机器人近处快速移动。
  • 机载算力有限。

联系我们

每条消息我们都会看。

一周内回复。

联系我们