防犯カメラの録画をためて、AIでの処理も試す:OpenClawとネットワークカメラで異常検知の下準備
OpenClawの使い道の1つとして、自宅の防犯カメラ映像の解析に挑戦します。目的は異常検知です。ただ、何を異常と判断するかは、データをある程度集めてから決めます。いまはデータをためる段階です。
録画を自分で見直すのは大変で、これまで設置はしていてもほとんど活用していませんでした。
この記事は、最初のステップとして、試運転で分かったこと、LLMの使い方、コストをまとめます。しばらく運用して、結果が出たら更新します。
!
結論
防犯カメラの動画は、1日1回、PCにダウンロードしています
動画をPCにダウンロードすれば、AI処理などいろいろできます。LLMに説明してもらうのも強力ですが、背景差分と物体検出器(YOLOX)などの組み合わせも重要です
異常検知を目指して、データを集めていきます
使った機材と全体の流れ
機材
用途
ネットワークカメラ
庭に置いたソーラーバッテリー式のカメラ
microSDカード(64GB)
カメラが動きを検知したときの録画を保存します
ミニPC
録画の保存、解析、定期実行。以前の記事のミニPCです
OpenClaw
定期実行、Discordへの投稿、LLMの呼び出し
カメラは、人感センサーが反応したときだけ起きて、録画をSDカードに残します。毎朝1回、その映像をミニPCにDLします。
まずLLMに説明させてみた
OpenClawを使っていて、まず試したのはLLMです。録画から切り出したコマに番号をつけ、1枚に並べてDeepSeek v4.1-flashに渡します。
説明のために、公開データセット(MEVA)の映像で、同じことをしてみます。
出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームを並べて作成
プロンプトでは、画像の読み方と、答えの形を指定しています。答えはJSONで、分類、1文の要約、コマごとの詳しい説明、いちばんよく写ったコマの番号の4つです。
これは、庭の防犯カメラが検知した約 20 秒の録画から取った {n} コマを、番号つきで並べた 1 枚の画像です(左から右、上から下の順。各コマの左上の黄色い数字が番号、画像の上端の白い文字が撮影時刻)。動くものは録画の最初に写ることが多いので、最初の数秒は細かく取ってあります。番号順の、録画の先頭からの秒数は {times} です。何が起きたかを、次の JSON だけで返してください。
{"category": "人|宅配|車|自転車|動物|なし のどれか 1 つ",
"description": "日本語 1 文。誰が何をしたか。推測は「〜のよう」と書く",
"detail": "コマ番号の時系列で、見えたことを日本語で詳しく(3〜8 文)。人数、服装、持ち物、向き・動き、いた場所、車や自転車の種類と色、立ち止まったか。見えないものは書かない",
"best": 被写体が一番よく写っているコマの番号(整数。何も写っていなければ 1)}
分類の基準: 人=歩行者や住人。宅配=制服や台車・荷物を持った配達員。車=車やバイクが写る。自転車=自転車が動く。動物=猫・鳥・犬など。なし=人も物も動いておらず、光・風・虫・影だけ(誤検知)。複数あるときは、いちばん目立つものを選ぶ。写っていないものは書かない。
MEVAの画像には、「庭の防犯カメラ」を「監視カメラ」に変えて渡しました。コマごとの説明(detail)は、次のとおりです。
4コマ目では駐車場中央付近に3人組の歩行者が現れ、黒っぽい服装で横に並んで左方向へ歩いている。(中略)7コマ目では左下に3人組、中央付近に1人が見え、いずれも立ち止まらずに左へ移動している。8コマ目では1人が左方向へ歩き、9コマ目では歩行者はいなくなる。
何人が、どこを、どちらへ歩いたかまで答えます。動きを検知して通知するだけの、これまでの監視カメラとは別格です。
この答えは歩行者には気づいていますが、車の出入りには触れていません。4コマ目では手前の青い車がいなくなり、8コマ目では白い車が入ってきます。
同じ画像を、別の回に分類すると、「白いSUVが駐車場を横切った」と、車と答えることもありました。同じ設定でも、答えは毎回同じとは限りません。
もっと良くするために、背景差分と物体検出を試す
こうした見落としを減らして、LLMの答えをさらに良くする方法を考えました。背景差分や物体検出の結果をヒントとして加えたり、動いた所を縮小せずに切り出して渡したりする方法です。そのために、まず2つの処理を動かしました。
背景差分で、動いた所を見つける
録画の全コマを重ねて、各位置の中央の値を取ると、動くものが消えて背景だけが残ります。背景との差の大きい所が、動いたものです。
出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームに、背景と差分の画像を加えて作成
物体検出で、人と車を数える
物体検出器のYOLOXを、CPUだけで動かします。1コマ0.1秒ほどです。
出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームに、検出の枠を加えて作成
突き合わせると、LLMの誤りが見つかった
ヒントとして渡す前に、13件の録画で、LLMの答えと検出器の結果を比べました。自宅で撮影した1日のデータで食い違ったのは2件です。
最初の2秒だけ写った人を、LLMは「なし」と答えました
奥の道路から戻ってきた車を、LLMは「人が歩いた」と答えました
1件目は、コマの切り出し方が原因でした。録画は検知の瞬間から始まるので、動くものは最初の数秒に写ります。初めは2秒おきに均等に切り出していたので、人は1コマにしか写っていませんでした。最初の2秒を0.5秒おきに切り出すと、LLMは人が歩いてきたと答えました。
2件目は、手前に停まった車の奥に、小さく写った車でした。検出器(YOLOX)は車と答えています。細かく切り出しても、LLMは「なし」と答えました。そこで、2つの方法を試しました。
検出器が各コマで見つけたもの(「6コマ目:車、画面の中央奥」など)をプロンプトに足すと、LLMは「奥に別の白い車が写り始める」と答えました
奥の車を縮小せずに切り出し、コマ送り画像の下に足すと、LLMは「赤い上着の人が歩いた」と、写っていない人を答えました
ヒントは効き、切り出しは逆効果でした。ただ、どちらも1件だけの結果です。
深く考えさせると、画像の説明はどう変わるのか
図のコマ送り画像を、3つの設定で1回ずつ分類しました。比べたのは、何が起きたかを説明できたかです。
3つの設定と、実際に送られたもの
OpenClawの「思考の量」の設定は、プロバイダへ送るとき、reasoning_effort に変換されます。off は none、low は low、high は high です。下の表は、分類したときの指定と、平均の時間です。
記事での呼び名
実際の指定
時間の平均
指定なし
何も指定しない
57秒
短く考える
reasoning_effort: low
21秒
考えない
thinking: {type: "disabled"}
4秒
指定なしは、reasoning_effort と thinking のどちらも付かない状態です。モデルの既定の量で考えます。
OpenClawの設定ファイルには、このモデルの thinking が low と書いてあります。ただし、infer model run から何も指定せずに呼ぶと、121 秒かかりました。low を指定したときより長いので、この設定は infer には効いていません。
考えない設定は、OpenClawからは送れません。--thinking off は none に変換されますが、実測では 67 秒かかって、考えが止まりませんでした。今回は、APIへ直接指定して測りました。
設定
出力
説明に書けたこと
指定なし
13,501
歩行者に加えて、「白いSUVが駐車場を横切った」
短く考える
3,753
歩行者だけ。「8コマ目で白いSUVが走行している」には触れていない
考えない
204
歩行者と、「白い車のそばに人が立っている」。白い車は動いたと書いていない
この映像で目立つのは、7コマ目までいなかった白いSUVが、8コマ目に駐車場を横切ることです。気づいたのは、指定なしのときだけでした。
指定なしでは、コマ1から7を歩行者の確認に使い、8コマ目で白いSUVを見つけています。考えた文章を見ると、歩行者と白いSUVのどちらを答えにするかを、長く迷っています。迷った末に、大きい白いSUVを選びました。
短く考える設定は、歩行者を追うだけで終わりました。白いSUVには、考えた文章でも触れていません。考えない設定は、白い車を「そばに立っている」と書きました。動いているとは捉えていません。
この 1 枚では、指定なしがいちばん説明できました。 ただし、回数は 1 回ずつです。同じ画像でも、指定なしで人と答えた回がありました。どれがよいかは、公開データの区間を増やしてから決めます。
コストは、この画像で指定なしが 13,501、短く考える設定が 3,753、考えない設定が 204 でした。指定なしは、短く考える設定の 3.6 倍、考えない設定の 66 倍です。
指定なしは、何周も見直していた
指定なしの考えた文章は、48,187 文字でした。中で、コマの走査を何度もやり直しています。
項目
指定なし
短く考える
コマの走査
19 周
3 周
座標を書き出した回数
96
0
考え直しの合図(wait、actually など)
47
7
プロンプトの規則の読み返し
36
2
答えを書いた回数
1(最後だけ)
2
指定なしの流れです。周ごとに、モデルが書いた文章を、日本語に訳して載せます。原文は英語です。
1周目
コマ1、左上。駐車場で、車がたくさん停まっている。手前の下は、赤い車が一部、紺色のSUV、黒いSUVなど。真ん中の草地にオレンジ色の重機がある? そのそばに黒い車。人は? 見当たらない。コマ2も同じで、いないようだ。コマ3もいない。コマ4、右中ほど、黒い車と草地の近くに、3人組が左へ歩いている? 頭の中で拡大してみる。コマ4、手前の中ほど右には黒いSUVが停まっている。右中ほどの舗装路、黒い車の近くは?
コマ4の3人組。モデルが書いた座標は (390,130)
2周目
コマ1(x0-480、y0-270)。上の駐車列に車が多い。左中ほど、黒い車が走っている? x0に? 実際は
3周目
コマ1の左端、y~90。左に暗い車、道路の近くか。どのコマでも同じ場所にある? 停まっているのか。実際は
コマ1の左端の黒い車。モデルが書いた座標は (15,90)
4周目
コマ1のx13、y91に黒い車。動いているのか。比べてみると、コマ
5周目
コマ1の左端、道路の近くに黒い車。コマ2も同じ? コマ3も同じ? 停まっている可能性がある。難しい。右中ほど、オレンジの重機、黒い車、赤いピックアップ。手前の下、赤い車が一部(x50、y240)、紺色のSUVがx170、y220、黒いSUVがx270、y210。人は見当たらない。コマ2も同じ。人がいない可能性がある。コマ3も同じ、いない。コマ4、手前の黒いSUVが動いた? 待って、コマ1〜3では黒いSUVがx270、y205にいた。コマ4ではx170にいる?
コマ5の赤いピックアップ。モデルは「赤いピックアップ」と書いている
6周目
コマ1、オレンジの重機がx~300、y~110(コマの中の座標)。コマ2でも同じ。だから同じだ。コマ4でも同じ。つまり、コマの中の座標は対応している。コマ4の人はx~390、y~130。コマ5ではx~120、y~160。左へ大きく飛んでいる。別の集団で、同じ人ではない可能性がある。人が複数いる可能性がある。主な出来事を特定しなくては。コマごとに人を並べると、コマ4は右側の3人(x~390、y~130)が歩いている?
コマ4のオレンジの重機。モデルが書いた座標は (300,110)
コマ5の2人。モデルが書いた座標は (120,160)
7周目
コマ1の左端。黒い車がx~15、y~90に? 実際は
8周目
コマ1、左端の道路に黒い車。コマ2も同じ黒い車? x~15、y~90にあるようだ。コマ3、同じ。コマ4、同じ。コマ5、同じ。停まっていて、動かない。上の列にも停まっている車がある。オレンジの重機も動かない。赤いピックアップも動かない。手前の赤いSUVと黒いSUVも動かない。コマ8の白いSUVが、唯一動く車? 重機の近くの黒い車も
9周目
コマ1〜3で動くか。比べてみると、コマ
10周目
コマ1、オレンジの重機の近くの黒い車がx~340、y~130。コマ2、同じ。コマ3、同じ。コマ4、同じ。停まっている可能性がある。コマ5、同じ。動かない。左中ほどの白い車はどうか
11周目
コマ1? x~50、y~150に白い車が? 実際は
12周目
コマ1の左端、y~150に白い車? 左の道路沿いに停まっている? 全コマにある?
13周目
コマ1、左下に白い車がx~0、y~150(一部)。コマ2、同じ。コマ3、同じ。動かない。コマ8の白いSUVは明らかに新しい。コマ8にだけ写っている? コマ7を見ると、同じ位置(x~250、y~180)に白い車がある? コマ7では、その場所は空いている? 舗装路は見えるが、重機の近くに黒い車がいる。コマ8の白いSUVはかなり大きく、中央近くで左を向いている。コマ9にはいない。
コマ8の白いSUV。モデルが書いた座標は (260,180)
14周目
コマ1(0秒)は、人がいない。コマ2(2秒)もいない。コマ3(4秒)もいない。コマ4(6秒)、x~390、y~130(右の中ほど)に3人組が左へ歩いている? 拡大してみる。コマ4(中ほどの左)、コマの右端近く、黒い車のそばの舗装路に、暗い人影が3つ見える? 実際はx~390、y~130にいる。体の向きから、左(左下)へ歩いているように見える? 難しい。
15周目
コマ1はいない。t2(コマ2)はいない。t4(コマ3)はいない。t6(コマ4)は3人組が(390,130)? t8(コマ5)は2人が(120,160)。t10(コマ6)は2人が(220,190)。t12(コマ7)は3人組が(90,190)、1人が(370,140)? t14(コマ8)は1人が(80,160)、白いSUVが(260,180)。t16(コマ9)はいない? 一番左に1人? これは1本の連続した軌跡にならない。独立した人が複数いるか、位置の読み取りが違っている。
16周目
コマ1、舗装路に人がいない。コマ2もいない。コマ3もいない。コマ4、x=360、y=130の黒い車の近くを見る。すぐ下の右、舗装路の上に、暗い人影が3つ。およそx=400、y=140。寄り集まって立っている。左へ歩いているように見える(体が左を向いている)。小さい。コマ5、舗装路の左側、x=120、y=160の近くを見る
17周目
コマ1、左端に黒い車。コマ2では動いている? 確かめてみる。
コマ1とコマ2の左端。同じ車で、動いていない(モデルが書いた座標は 15,90)
18周目
コマ1の左端は、黒い車がx=15、y=90。コマ2、同じ。コマ3、同じ。コマ4、同じ。コマ5、同じ。コマ6、同じ。コマ7、同じ。コマ8、同じ? 実はコマ8では、左端の黒い車は消えている? コマ8(3行2列)を見る。左端に白い車が停まっていて、黒い車もいる可能性がある。x=15、y=90の黒い車は全コマにあるのか? コマ8の左上には、x=15、y=90に黒い車がいる? いると考える。道路に停まっている車だ。
19周目
コマ1、白い車がx=0、y=150。コマ2、同じ。コマ3、同じ。コマ4、同じ。コマ5、同じ。コマ6、同じ。コマ7、同じ。コマ8、同じ。コマ9、同じ。動かない。コマ8の白いSUVは、間違いなく動いている。白いクロスオーバーのSUVだ。右から来た? コマ8では左向き、下向きなので、駐車場の右側から左へ走ってきたのか。道路ではなく、舗装した場所の上だ。
1日10件なら、月の枠の何%を使うか
この録画は1日10件ほどです。1か月を300件として、Goの枠をどれだけ使うかを計算しました。単価は入力0.15、出力0.60($/100万トークン)、月の上限は $80 の重みで、入力は1件あたり1,100トークンです。
設定
1回の出力
1か月の出力
1か月の額
月の枠
考えない
202
6.1万
$0.09
0.1%
短く考える
2,076
62.3万
$0.42
0.5%
指定なし
6,216
186.5万
$1.17
1.5%
入力は、1か月で33万トークンです。単価が安いので、額の大半は出力です。
3つの設定のうち、いちばん高いのは指定なしです。それでも月の枠は1.5%です
1日10件で、1件2分、合計20分ほどです
指定なしでも、利用量は問題になりません。 どの設定を選んでも、月の枠は1.5%以下です。コストと速さのどちらも、設定を落とす理由になりません。
だから、設定は質で選べます。図の1枚では、指定なしだけが、8コマ目に横切った白いSUVを説明しました。区間を増やして確かめてから、本番の設定を決めます。
周回しても、見える情報は増えません。 指定なしは19周しましたが、新しい発見は6周目で終わっています。残りの13周は、決めたことの確認と書き直しでした。
短く考える設定は、3周で終わります。2周目のあとで「迷いがあるので、控えめに書く」と決め、答えを書いてから、もう一度書き直しました。迷いを、周回ではなく、文章の書き方で処理しています。
異常検知は、これから
録画のたびに、次の値をためています。
値
例
検知の時刻と種類
人、動体
動いた秒数、入った側と出た側
7秒、左から右
検出器が数えた人や車の数
人2、車1
LLMの説明
コマごとの出来事
私が付けた正解
人、車、家族、知らない人
夜間に人がいた、人が長く滞在した、といった録画を見つけて、家族に見せるのが目標です。数週間ためてから、方法を選びます。
運用して、検知の件数、LLMと検出器の一致率、夜間の精度、コストが分かったら更新します。
参考
YOLOX
MEVA
Mentions
防犯カメラの録画をためて、AIでの処理も試す:OpenClawとネットワークカメラで異常検知の下準備 OpenClawの使い道の1つとして、自宅の防犯カメラ映像の解析に挑戦します。目的は異常検知です。ただ、何を異常と判断するかは、データをある程度集めてから決めます。いまはデータをためる段階です。 録画を自分で見直すのは大変で、これまで設置はしていてもほとんど活用していませんでした。 この記事は、最初のステップとして、試運転で分かったこと、LLMの使い方、コストをまとめます。しばらく運用して、結果が出たら更新します。 ! 結論 防犯カメラの動画は、1日1回、PCにダウンロードしています 動画をPCにダウンロードすれば、AI処理などいろいろできます。LLMに説明してもらうのも強力ですが、背景差分と物体検出器(YOLOX)などの組み合わせも重要です 異常検知を目指して、データを集めていきます 使った機材と全体の流れ 機材 用途 ネットワークカメラ 庭に置いたソーラーバッテリー式のカメラ microSDカード(64GB) カメラが動きを検知したときの録画を保存します ミニPC 録画の保存、解析、定期実行。以前の記事のミニPCです OpenClaw 定期実行、Discordへの投稿、LLMの呼び出し カメラは、人感センサーが反応したときだけ起きて、録画をSDカードに残します。毎朝1回、その映像をミニPCにDLします。 まずLLMに説明させてみた OpenClawを使っていて、まず試したのはLLMです。録画から切り出したコマに番号をつけ、1枚に並べてDeepSeek v4.1-flashに渡します。 説明のために、公開データセット(MEVA)の映像で、同じことをしてみます。 出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームを並べて作成 プロンプトでは、画像の読み方と、答えの形を指定しています。答えはJSONで、分類、1文の要約、コマごとの詳しい説明、いちばんよく写ったコマの番号の4つです。 これは、庭の防犯カメラが検知した約 20 秒の録画から取った {n} コマを、番号つきで並べた 1 枚の画像です(左から右、上から下の順。各コマの左上の黄色い数字が番号、画像の上端の白い文字が撮影時刻)。動くものは録画の最初に写ることが多いので、最初の数秒は細かく取ってあります。番号順の、録画の先頭からの秒数は {times} です。何が起きたかを、次の JSON だけで返してください。 {"category": "人|宅配|車|自転車|動物|なし のどれか 1 つ", "description": "日本語 1 文。誰が何をしたか。推測は「〜のよう」と書く", "detail": "コマ番号の時系列で、見えたことを日本語で詳しく(3〜8 文)。人数、服装、持ち物、向き・動き、いた場所、車や自転車の種類と色、立ち止まったか。見えないものは書かない", "best": 被写体が一番よく写っているコマの番号(整数。何も写っていなければ 1)} 分類の基準: 人=歩行者や住人。宅配=制服や台車・荷物を持った配達員。車=車やバイクが写る。自転車=自転車が動く。動物=猫・鳥・犬など。なし=人も物も動いておらず、光・風・虫・影だけ(誤検知)。複数あるときは、いちばん目立つものを選ぶ。写っていないものは書かない。 MEVAの画像には、「庭の防犯カメラ」を「監視カメラ」に変えて渡しました。コマごとの説明(detail)は、次のとおりです。 4コマ目では駐車場中央付近に3人組の歩行者が現れ、黒っぽい服装で横に並んで左方向へ歩いている。(中略)7コマ目では左下に3人組、中央付近に1人が見え、いずれも立ち止まらずに左へ移動している。8コマ目では1人が左方向へ歩き、9コマ目では歩行者はいなくなる。 何人が、どこを、どちらへ歩いたかまで答えます。動きを検知して通知するだけの、これまでの監視カメラとは別格です。 この答えは歩行者には気づいていますが、車の出入りには触れていません。4コマ目では手前の青い車がいなくなり、8コマ目では白い車が入ってきます。 同じ画像を、別の回に分類すると、「白いSUVが駐車場を横切った」と、車と答えることもありました。同じ設定でも、答えは毎回同じとは限りません。 もっと良くするために、背景差分と物体検出を試す こうした見落としを減らして、LLMの答えをさらに良くする方法を考えました。背景差分や物体検出の結果をヒントとして加えたり、動いた所を縮小せずに切り出して渡したりする方法です。そのために、まず2つの処理を動かしました。 背景差分で、動いた所を見つける 録画の全コマを重ねて、各位置の中央の値を取ると、動くものが消えて背景だけが残ります。背景との差の大きい所が、動いたものです。 出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームに、背景と差分の画像を加えて作成 物体検出で、人と車を数える 物体検出器のYOLOXを、CPUだけで動かします。1コマ0.1秒ほどです。 出典:MEVAデータセット(Kitware、CC BY 4.0)のフレームに、検出の枠を加えて作成 突き合わせると、LLMの誤りが見つかった ヒントとして渡す前に、13件の録画で、LLMの答えと検出器の結果を比べました。自宅で撮影した1日のデータで食い違ったのは2件です。 最初の2秒だけ写った人を、LLMは「なし」と答えました 奥の道路から戻ってきた車を、LLMは「人が歩いた」と答えました 1件目は、コマの切り出し方が原因でした。録画は検知の瞬間から始まるので、動くものは最初の数秒に写ります。初めは2秒おきに均等に切り出していたので、人は1コマにしか写っていませんでした。最初の2秒を0.5秒おきに切り出すと、LLMは人が歩いてきたと答えました。 2件目は、手前に停まった車の奥に、小さく写った車でした。検出器(YOLOX)は車と答えています。細かく切り出しても、LLMは「なし」と答えました。そこで、2つの方法を試しました。 検出器が各コマで見つけたもの(「6コマ目:車、画面の中央奥」など)をプロンプトに足すと、LLMは「奥に別の白い車が写り始める」と答えました 奥の車を縮小せずに切り出し、コマ送り画像の下に足すと、LLMは「赤い上着の人が歩いた」と、写っていない人を答えました ヒントは効き、切り出しは逆効果でした。ただ、どちらも1件だけの結果です。 深く考えさせると、画像の説明はどう変わるのか 図のコマ送り画像を、3つの設定で1回ずつ分類しました。比べたのは、何が起きたかを説明できたかです。 3つの設定と、実際に送られたもの OpenClawの「思考の量」の設定は、プロバイダへ送るとき、reasoning_effort に変換されます。off は none、low は low、high は high です。下の表は、分類したときの指定と、平均の時間です。 記事での呼び名 実際の指定 時間の平均 指定なし 何も指定しない 57秒 短く考える reasoning_effort: low 21秒 考えない thinking: {type: "disabled"} 4秒 指定なしは、reasoning_effort と thinking のどちらも付かない状態です。モデルの既定の量で考えます。 OpenClawの設定ファイルには、このモデルの thinking が low と書いてあります。ただし、infer model run から何も指定せずに呼ぶと、121 秒かかりました。low を指定したときより長いので、この設定は infer には効いていません。 考えない設定は、OpenClawからは送れません。--thinking off は none に変換されますが、実測では 67 秒かかって、考えが止まりませんでした。今回は、APIへ直接指定して測りました。 設定 出力 説明に書けたこと 指定なし 13,501 歩行者に加えて、「白いSUVが駐車場を横切った」 短く考える 3,753 歩行者だけ。「8コマ目で白いSUVが走行している」には触れていない 考えない 204 歩行者と、「白い車のそばに人が立っている」。白い車は動いたと書いていない この映像で目立つのは、7コマ目までいなかった白いSUVが、8コマ目に駐車場を横切ることです。気づいたのは、指定なしのときだけでした。 指定なしでは、コマ1から7を歩行者の確認に使い、8コマ目で白いSUVを見つけています。考えた文章を見ると、歩行者と白いSUVのどちらを答えにするかを、長く迷っています。迷った末に、大きい白いSUVを選びました。 短く考える設定は、歩行者を追うだけで終わりました。白いSUVには、考えた文章でも触れていません。考えない設定は、白い車を「そばに立っている」と書きました。動いているとは捉えていません。 この 1 枚では、指定なしがいちばん説明できました。 ただし、回数は 1 回ずつです。同じ画像でも、指定なしで人と答えた回がありました。どれがよいかは、公開データの区間を増やしてから決めます。 コストは、この画像で指定なしが 13,501、短く考える設定が 3,753、考えない設定が 204 でした。指定なしは、短く考える設定の 3.6 倍、考えない設定の 66 倍です。 指定なしは、何周も見直していた 指定なしの考えた文章は、48,187 文字でした。中で、コマの走査を何度もやり直しています。 項目 指定なし 短く考える コマの走査 19 周 3 周 座標を書き出した回数 96 0 考え直しの合図(wait、actually など) 47 7 プロンプトの規則の読み返し 36 2 答えを書いた回数 1(最後だけ) 2 指定なしの流れです。周ごとに、モデルが書いた文章を、日本語に訳して載せます。原文は英語です。 1周目 コマ1、左上。駐車場で、車がたくさん停まっている。手前の下は、赤い車が一部、紺色のSUV、黒いSUVなど。真ん中の草地にオレンジ色の重機がある? そのそばに黒い車。人は? 見当たらない。コマ2も同じで、いないようだ。コマ3もいない。コマ4、右中ほど、黒い車と草地の近くに、3人組が左へ歩いている? 頭の中で拡大してみる。コマ4、手前の中ほど右には黒いSUVが停まっている。右中ほどの舗装路、黒い車の近くは? コマ4の3人組。モデルが書いた座標は (390,130) 2周目 コマ1(x0-480、y0-270)。上の駐車列に車が多い。左中ほど、黒い車が走っている? x0に? 実際は 3周目 コマ1の左端、y~90。左に暗い車、道路の近くか。どのコマでも同じ場所にある? 停まっているのか。実際は コマ1の左端の黒い車。モデルが書いた座標は (15,90) 4周目 コマ1のx13、y91に黒い車。動いているのか。比べてみると、コマ 5周目 コマ1の左端、道路の近くに黒い車。コマ2も同じ? コマ3も同じ? 停まっている可能性がある。難しい。右中ほど、オレンジの重機、黒い車、赤いピックアップ。手前の下、赤い車が一部(x50、y240)、紺色のSUVがx170、y220、黒いSUVがx270、y210。人は見当たらない。コマ2も同じ。人がいない可能性がある。コマ3も同じ、いない。コマ4、手前の黒いSUVが動いた? 待って、コマ1〜3では黒いSUVがx270、y205にいた。コマ4ではx170にいる? コマ5の赤いピックアップ。モデルは「赤いピックアップ」と書いている 6周目 コマ1、オレンジの重機がx~300、y~110(コマの中の座標)。コマ2でも同じ。だから同じだ。コマ4でも同じ。つまり、コマの中の座標は対応している。コマ4の人はx~390、y~130。コマ5ではx~120、y~160。左へ大きく飛んでいる。別の集団で、同じ人ではない可能性がある。人が複数いる可能性がある。主な出来事を特定しなくては。コマごとに人を並べると、コマ4は右側の3人(x~390、y~130)が歩いている? コマ4のオレンジの重機。モデルが書いた座標は (300,110) コマ5の2人。モデルが書いた座標は (120,160) 7周目 コマ1の左端。黒い車がx~15、y~90に? 実際は 8周目 コマ1、左端の道路に黒い車。コマ2も同じ黒い車? x~15、y~90にあるようだ。コマ3、同じ。コマ4、同じ。コマ5、同じ。停まっていて、動かない。上の列にも停まっている車がある。オレンジの重機も動かない。赤いピックアップも動かない。手前の赤いSUVと黒いSUVも動かない。コマ8の白いSUVが、唯一動く車? 重機の近くの黒い車も 9周目 コマ1〜3で動くか。比べてみると、コマ 10周目 コマ1、オレンジの重機の近くの黒い車がx~340、y~130。コマ2、同じ。コマ3、同じ。コマ4、同じ。停まっている可能性がある。コマ5、同じ。動かない。左中ほどの白い車はどうか 11周目 コマ1? x~50、y~150に白い車が? 実際は 12周目 コマ1の左端、y~150に白い車? 左の道路沿いに停まっている? 全コマにある? 13周目 コマ1、左下に白い車がx~0、y~150(一部)。コマ2、同じ。コマ3、同じ。動かない。コマ8の白いSUVは明らかに新しい。コマ8にだけ写っている? コマ7を見ると、同じ位置(x~250、y~180)に白い車がある? コマ7では、その場所は空いている? 舗装路は見えるが、重機の近くに黒い車がいる。コマ8の白いSUVはかなり大きく、中央近くで左を向いている。コマ9にはいない。 コマ8の白いSUV。モデルが書いた座標は (260,180) 14周目 コマ1(0秒)は、人がいない。コマ2(2秒)もいない。コマ3(4秒)もいない。コマ4(6秒)、x~390、y~130(右の中ほど)に3人組が左へ歩いている? 拡大してみる。コマ4(中ほどの左)、コマの右端近く、黒い車のそばの舗装路に、暗い人影が3つ見える? 実際はx~390、y~130にいる。体の向きから、左(左下)へ歩いているように見える? 難しい。 15周目 コマ1はいない。t2(コマ2)はいない。t4(コマ3)はいない。t6(コマ4)は3人組が(390,130)? t8(コマ5)は2人が(120,160)。t10(コマ6)は2人が(220,190)。t12(コマ7)は3人組が(90,190)、1人が(370,140)? t14(コマ8)は1人が(80,160)、白いSUVが(260,180)。t16(コマ9)はいない? 一番左に1人? これは1本の連続した軌跡にならない。独立した人が複数いるか、位置の読み取りが違っている。 16周目 コマ1、舗装路に人がいない。コマ2もいない。コマ3もいない。コマ4、x=360、y=130の黒い車の近くを見る。すぐ下の右、舗装路の上に、暗い人影が3つ。およそx=400、y=140。寄り集まって立っている。左へ歩いているように見える(体が左を向いている)。小さい。コマ5、舗装路の左側、x=120、y=160の近くを見る 17周目 コマ1、左端に黒い車。コマ2では動いている? 確かめてみる。 コマ1とコマ2の左端。同じ車で、動いていない(モデルが書いた座標は 15,90) 18周目 コマ1の左端は、黒い車がx=15、y=90。コマ2、同じ。コマ3、同じ。コマ4、同じ。コマ5、同じ。コマ6、同じ。コマ7、同じ。コマ8、同じ? 実はコマ8では、左端の黒い車は消えている? コマ8(3行2列)を見る。左端に白い車が停まっていて、黒い車もいる可能性がある。x=15、y=90の黒い車は全コマにあるのか? コマ8の左上には、x=15、y=90に黒い車がいる? いると考える。道路に停まっている車だ。 19周目 コマ1、白い車がx=0、y=150。コマ2、同じ。コマ3、同じ。コマ4、同じ。コマ5、同じ。コマ6、同じ。コマ7、同じ。コマ8、同じ。コマ9、同じ。動かない。コマ8の白いSUVは、間違いなく動いている。白いクロスオーバーのSUVだ。右から来た? コマ8では左向き、下向きなので、駐車場の右側から左へ走ってきたのか。道路ではなく、舗装した場所の上だ。 1日10件なら、月の枠の何%を使うか この録画は1日10件ほどです。1か月を300件として、Goの枠をどれだけ使うかを計算しました。単価は入力0.15、出力0.60($/100万トークン)、月の上限は $80 の重みで、入力は1件あたり1,100トークンです。 設定 1回の出力 1か月の出力 1か月の額 月の枠 考えない 202 6.1万 $0.09 0.1% 短く考える 2,076 62.3万 $0.42 0.5% 指定なし 6,216 186.5万 $1.17 1.5% 入力は、1か月で33万トークンです。単価が安いので、額の大半は出力です。 3つの設定のうち、いちばん高いのは指定なしです。それでも月の枠は1.5%です 1日10件で、1件2分、合計20分ほどです 指定なしでも、利用量は問題になりません。 どの設定を選んでも、月の枠は1.5%以下です。コストと速さのどちらも、設定を落とす理由になりません。 だから、設定は質で選べます。図の1枚では、指定なしだけが、8コマ目に横切った白いSUVを説明しました。区間を増やして確かめてから、本番の設定を決めます。 周回しても、見える情報は増えません。 指定なしは19周しましたが、新しい発見は6周目で終わっています。残りの13周は、決めたことの確認と書き直しでした。 短く考える設定は、3周で終わります。2周目のあとで「迷いがあるので、控えめに書く」と決め、答えを書いてから、もう一度書き直しました。迷いを、周回ではなく、文章の書き方で処理しています。 異常検知は、これから 録画のたびに、次の値をためています。 値 例 検知の時刻と種類 人、動体 動いた秒数、入った側と出た側 7秒、左から右 検出器が数えた人や車の数 人2、車1 LLMの説明 コマごとの出来事 私が付けた正解 人、車、家族、知らない人 夜間に人がいた、人が長く滞在した、といった録画を見つけて、家族に見せるのが目標です。数週間ためてから、方法を選びます。 運用して、検知の件数、LLMと検出器の一致率、夜間の精度、コストが分かったら更新します。 参考 YOLOX MEVA