研究

実環境での持ち主の識別

人についていくロボットの多くは、いちばん近くにいる人を追跡します。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

限界

現時点でこの方法がうまく働かない場面を、はっきり示します。

  • ロボット1台につき持ち主はひとり。
  • 非常に暗い場所。
  • ほとんど同じに見える人。
  • ロボットのすぐ近くでの速い動き。
  • 本体に搭載された計算資源が小さいこと。

お問い合わせ

すべてのメッセージに目を通しています。

1週間以内にお返事します。

お問い合わせ