研究
実環境での持ち主の識別
人についていくロボットの多くは、いちばん近くにいる人を追跡します。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台につき持ち主はひとり。
- 非常に暗い場所。
- ほとんど同じに見える人。
- ロボットのすぐ近くでの速い動き。
- 本体に搭載された計算資源が小さいこと。