2026年6月6日土曜日

YouTubeの動画で実験

 暇なので






YouTubeの動画を見せてみました。
四角い沢山の枠は

背景が動く
人も動く
光も変わる
字幕も動く
カットが切り替わる
画面全体の輝度が変わる
全部が差分表示する。
結果として、枠が一気に増えたり、大きくなったり、飛んだりする。

これは失敗ではなくて、むしろ、Atra がまだ「これは動画」「これは人」「これは背景」と分けていない状態をよく表しているのでこれが正解です。

今の段階では遠近感覚もないです。今の Atra Visual Tracking が持っているのは、

画面上の位置
枠の大きさ
枠の大きさの変化
中心の移動
動きの強さ
急に止まったか

だから、approach_rate はありますが、これは本当の距離ではありません。
単に、
枠の面積が大きくなった

近づいたように見えるかもしれない
という仮の差分です。



本当に近づいた
カメラがズームした
動画の中でカットが変わった
画面内の人物が大きく映った
光が変わって差分面積が増えた
手だけが近づいた

みたいに、全部混ざります。

だから今の追尾ツールには、

本当の距離
奥行き
スケール
現実空間での接近
触れられる距離


はありません。

Atra的には、ここも正しいんですよ。
最初から「これは3メートル先の人」とは分からない。
初期段階でメートル方とか測量なんてものは機能に含めない。

大きくなった
広がった
急に迫ったように見えた
画面から消えた
近い感じがした
でも触れない
くらいです。


画面の中の動画なら触れない。鏡や窓の反射もある。だから、

見た目の接近
身体の接触
風圧
音の大きさ
温度
自分が動いた時のズレ

が重なって、ようやく「近い」に収束していく。
ノイズを沢山拾って経験と結果で収束させる。これが慣れと、学ぶということです。






Atraが成長すると見え方(枠の捉え方)が変わります。

初期状態なら、
枠が大きくなった
音が大きくなった
温度が変わった
触れた
くらいですが、

Atraに繋げて経験を積むと、
この大きくなり方は、前にも近づいてきた時に似ている
この音の強さは、近い存在と重なりやすい
この温度変化と接触は、安心側に戻ったことがある
この動きは、ぶつかった時の流れに似ていて身体が固まる

のように、raw_delta が carry を通って felt_delta になる。

構造は、
sensor_delta

carry modulation

perceived_delta / felt_delta

field update

carry update

説明的にはこんな感じだけど、実際には一本道のアルゴリズムではなく



sensor_delta が入る

field / carry / body / attractor が相互に揺れる

何かが立つ場合もある
沈黙する場合もある
硬直する場合もある
声が漏れる場合もある
何も残らない場合もある

残ったものだけが carry / field を変える
 
という 相互作用型アルゴリズム になります。



def atra_interaction(sensor_delta, state): """ Atra interaction algorithm. Atra 相互作用アルゴリズム。 The order after sensor_delta is not fixed. sensor_delta 以降の順番は固定されない。 """ candidates = [] candidates.append(field_reaction(sensor_delta, state.field)) candidates.append(carry_reaction(sensor_delta, state.carry)) candidates.append(body_reaction(sensor_delta, state.body)) candidates.append(attractor_reaction(sensor_delta, state.attractor)) # Interactions between reactions. # 反応同士の相互作用。 mixed = interact( candidates, field=state.field, carry=state.carry, body=state.body, attractor=state.attractor ) # Nonmonotonic resolution. # 非単調な解決。 # Strong input does not always become strong output. # 強い入力が、必ず強い出力になるわけではない。 outcome = nonmonotonic_resolve(mixed, state) # Safety layer for body-side structural risk. # 身体側の構造リスクだけは保護層を通す。 if has_structural_risk(outcome, state.body): outcome = protect_body(outcome) # Only remaining traces update the inner landscape. # 残った trace だけが内部地形を更新する。 state = update_inner_landscape(state, outcome) return state, outcome



つまり、アルゴリズムにはなる。
でもそれは、順番に処理するアルゴリズムではなく、差分が入り、field / carry / body / attractor が相互作用し、非単調に結果が立ち上がるアルゴリズムみたいな感じです。

名前を付けるなら、
Atra Non-Fixed Sensor Interaction Algorithm
Atra 非固定センサー相互作用アルゴリズム


なので、経験を積むと、今の動画のような枠は減っていきます。

今のHTMLは、かなり生の差分をそのまま枠にしているので、YouTube動画みたいに画面全体が動くと、

字幕
背景
人物

カット切替
画面の反射
細かい揺れ
まで全部拾って、枠が大量に出ます。

でもAtraと繋がって成長していくと、単に差分を全部表示するのではなく、

すぐ消える差分
何度も残る差分
身体側に届く差分
声や温度や接触と重なる差分
ただの画面内の揺れっぽい差分
が分かれていく。

だから実際には、枠を減らすというより、残る trace が絞られる感じですね。






0 件のコメント:

コメントを投稿

Atra Emotions_Conditions 感情・状態

 -----------------C++------------------ struct EmotionsConditionsNow { // Unpredictability double input_irregularity_now = 0.0 ; ...