04:41 · repliedPod 기동 중. 그 사이 실험 뷰어를 만듭니다.
04:52 · repliedE1이 디렉토리 생성 순서 버그로 실패했습니다(E2는 진행 중). 고쳐서 E1만 병렬로 다시 돌립니다.
05:12 · repliedBoth done (E1 24 rows, E2 216 predicates). Terminating the pod and scoring.
05:13 · repliedPod 종료. 두 실험 모두 **기각**입니다 — 데이터가 명확합니다.
## E1 — 3초 창 밀도 (상대·t_c는 gold 고정, n=3)
| 조건 | 상대 "차선 넘음" yes/no 정답(다수결) | 표본 단위 | 방향(좌/우) |
|---|---|---|---|
| 창 4 fps (10~12프레임, 프레임당 고해상) | **10/12** | 25/36 | 표본 간 좌/우가 자주 뒤집힘(011: right/left/right) |
| 창 16 fps 상당 (48프레임, 4배 감속) | **6/12** | 16/36 | 대부분 "없음"으로 후퇴 |
- **시간 밀도는 도움이 안 되고 오히려 해칩니다.** 감속 영상에선 프레임 간 움직임이 작아져 모델이 "차선 안 넘었다/모름"으로 기웁니다(017·023·035·058이 yes→no로 뒤집힘).
- 4 fps의 10/12도 액면 그대로 못 믿습니다: gold가 9/12 lane_change라 **항상 yes라고 답해도 9/12**인데, 모델은 12편 중 11편에 yes라고 했습니다(직진인 008·016도 yes). 즉 "넘었다"는 잘 맞히는 게 아니라 잘 *말하는* 것이고, 좌/우 방향은 못 잡습니다. 상대 횡이동은 여전히 CV 몫입니다.
## E2 — yes/no 분해 (n=5, 정의+근거 요구, 부정형 쌍 포함)
| 질문 | yes/no 매핑: 정답/답변/gold | 현행 질문(오라클 파이프라인): 정답/답변/gold |
|---|---|---|
| q_maneuver 자차 | 1/8/12 | 5/10/12 |
| q_maneuver 상대 | 1/5/12 | 2/2/12 |
| q_position_order | 2/7/11 | 4/5/11 |
| q_contact_type | 2/6/10 | 5/7/10 |
- 216개 predicate 중 **unknown 99**(sc_disagree 97) — 질문을 잘게 쪼개니 불확실한 호출이 그만큼 늘었고, 코드로 되돌리려면 여러 답이 동시에 맞아야 해서 오류가 곱해집니다.
- 좋은 소식 하나: 부정형 쌍(둘 다 결정된 7쌍)에서 **모순 0** — yes 편향은 관측되지 않았습니다(yes 54 · no 63). 그러니 "모호함이 언어 때문"이라는 가설은 이 데이터로는 지지되지 않습니다. 남는 건 인지입니다.
## 뷰어
**http://localhost:8092/viewer/experiments.html** — run `exp-01`, 편 선택 → 영상 드롭다운(전체 SoM / 창 4 fps / 창 16 fps 상당)으로 실제 모델에 넘어간 영상을 그대로 재생하고, E1은 조건별 표본 3개의 동작·차선 넘음·좌우와 reasoning/응답 원문, E2는 18개 predicate의 질문 원문·투표·표본 5개 reasoning/응답, 매핑 코드 vs gold, 부정형 쌍 모순 여부까지 봅니다. 프롬프트는 이번엔 **보낸 원문을 저장**한 것입니다.
## 함의
세 번의 실험(어휘·앵커·질문형식)과 오늘 두 개(밀도·yes/no)가 같은 결론을 가리킵니다: **상대 차량의 횡이동·방향·위치 관계는 VLM에게 어떻게 물어도 안 나옵니다.** 다음 손잡이는 흐름 보정 트랙 궤적(차선 마킹 대비 상대 위치 변화)이고, 그건 로컬 CV 작업입니다. 원하시면 그걸 바로 시작하겠습니다.
06:09 · replied시작합니다. 설계: 소실점 기반 IPM-lite(bbox 바닥 중심의 (u−u0)/(v−v0) = 도로 좌표 횡오프셋)로 상대 차량의 횡이동을 재고, 자차 이동은 다른 트랙들의 공통 이동·차선 절편으로 보정합니다. 채점은 Ian gold(상대 lane_change 좌/우 9/12, 자차 2/12).
06:13 · repliedMy pod from this session (`nokzghug4zyyps`) is terminated. But there are **two pods running that I did not create** — named `knia-probe-cosmos3-nano` (H100, $3.49/h, up 30 min) and `knia-probe-qwen3-vl-235b-fp8` (4×H100, **$13.96/h**, up 33 min), created at 05:39–05:40 UTC today, image `vllm/vllm-openai:cosmos3`, different template. These look like another session's (probably your fault-lab or another Claude session) — together burning ~$17.5/h. I won't touch them without your say-so; tell me if you want them terminated.
Meanwhile the lane-occupancy method: 상대 4/12 (017·035·058 정답, 방향까지), 자차 9/12. Still not good enough — I'll build the overlay viewer next so we can see exactly where the lane trapezoid and occupancy break (fallback trapezoid on 5 clips is the first suspect).
06:17 · asked다른 프로젝트에서 사용중이였어. 하던거 계속해
06:17 · replied계속합니다. 차선 사다리꼴·상대 bbox·점유율을 프레임에 그린 오버레이 영상과 점유율/차선 절편 그래프를 뷰어로 만듭니다 — 실패 편(006·023·027·042·053·011)을 눈으로 확인하기 위해서입니다.
06:19 · repliedNow let me look at a failing clip's overlay myself before handing it over — 023 (gold lane_change_right, verdict stayed_out) at t_c−2, t_c−1, t_c.
06:23 · repliedCV 1차 결과와 뷰어입니다. 솔직히 말하면 **아직 안 됩니다 — 그리고 왜 안 되는지는 정확히 찾았습니다.**
## 결과 (Ian gold 12편)
| 방법 | 상대 횡이동 | 자차 횡이동 |
|---|---|---|
| ① 소실점 기하(bbox 바닥점 → 도로 좌표) | 1/12 | 7/12 |
| ② **자차 차로 점유율**(차선 Hough 사다리꼴 × bbox 바닥변 겹침) | **4/12** (017·035·058은 좌/우까지 정답) | **9/12** |
| VLM 최선(참고) | 3/12 | 8/12 |
## 실패 원인 — 눈으로 확인한 것
뷰어 **http://localhost:8092/viewer/cv.html** → 023 편, `CV 오버레이` 영상으로 6.2→7.4 s를 보세요.
- 5.4 s: 상대(V1)가 왼쪽 차로에 있고 점유율 0.03 — 정상.
- 6.4 s: 차가 자차 앞으로 파고드는데 **노란 박스가 없습니다**. ByteTrack이 6.2 s에 트랙을 잃었고, YOLO11m을 conf 0.1·1280px로 다시 돌려도 6.4 s 이후엔 한 프레임도 못 잡습니다. COCO 검출기는 화면 가장자리에 반쯤 걸친 초근접 차량에 약합니다 — 정작 **판정에 필요한 순간이 검출기의 사각지대**입니다.
- ①이 무너진 이유도 같습니다(058: bbox 바닥이 프레임 하단에 붙어 좌표가 거꾸로 움직임).
## 확인된 다음 손잡이
**SAM2 비디오 전파**(ultralytics 내장)로 023의 마지막 정상 bbox를 프롬프트로 주니 YOLO가 놓친 6.2~6.8 s를 마스크로 계속 추적했습니다(CPU 42 s/편). 즉 근접 구간은 "검출"이 아니라 "전파"로 풀립니다. 다음 단계는 SAM2 마스크의 가장자리와 검출 차선 사이의 **침범량**(encroachment) 시계열 — 이걸로 "차선을 넘었는가·언제·어느 쪽"을 냅니다.
다만 023을 보면 한계도 보입니다: 이 사고는 차로폭의 수십 cm만 드리프트한 측면 접촉이라, 차선 추정이 ±10 px 안에 들어야 합니다. 5편이 fallback 사다리꼴(차선 미검출)인 것도 함께 고쳐야 합니다.
## 뷰어
- **cv.html**: 편·영상(오버레이/SoM) 선택, 점유율 occ(t) 그래프(노랑 = 판정 창 3 s, 빨강 = t_c), 차선 절편 xl/xr 그래프(회색 = 프레임별 원시 검출, 주황 = 평활), 판정 vs gold, 12편 요약표.
- **experiments.html**: E1/E2(오늘 오전) 프롬프트·표본·매핑.
SAM2 침범량까지 붙여서 12편을 다시 채점하는 데 반나절이면 됩니다. 이어서 할까요?
07:05 · asked일단 차선 자체에 smoothing 이 들어갔나? 너무 jumpy 하게 왔다갔다 하는것 같아. 가리거나 안보여서 그런 현상이 발생하면 이어가야하지 않아?
07:06 · replied있긴 했는데(±7프레임 롤링 중앙값) "추적"이 아니라서 검출이 끊기면 전체 중앙값으로 점프하고, Hough가 옆 선(도로 가장자리·차체 모서리)을 물면 그대로 따라갔습니다. 제대로 바꿉니다: 절편별 게이트 추적(예측값에서 멀리 떨어진 검출은 기각) + 결측 시 마지막 값 유지 + 한쪽만 보이면 차로폭으로 반대쪽 보간.
07:07 · replied반영했습니다. 절편 프레임당 변화 중앙값이 0~4.5 px로 안정됐고(이전엔 검출 끊길 때마다 전체 중앙값으로 점프), 오버레이 영상도 다시 렌더링했습니다 — **cv.html**에서 새로고침하면 사다리꼴이 차분해진 걸 보실 수 있습니다(차선 절편 그래프의 주황선이 추적값).
바뀐 방식: 절편마다 게이트 추적기 — 예측값에서 90 px 이상 벗어난 검출은 기각(결측이 길어지면 게이트를 최대 220 px까지 넓혀 실제 이동은 재획득), 결측이면 **마지막 값 유지**, 한쪽만 보이면 차로폭으로 반대쪽 보간, α=0.35 지수 평활.
채점: 상대 **5/12**(4→5), 자차 **10/12**(9→10). 035가 정답→stayed_out으로 바뀐 건 확인해 보겠지만, 큰 그림은 그대로입니다 — 남은 실패(006·023·027·042·011)는 차선이 아니라 **끼어드는 근접 구간에서 상대 트랙이 사라지는 문제**라, 다음은 SAM2 전파 + 침범량입니다. 뷰어 보시고 이상한 편 있으면 알려주세요.
23:47 · repliedSAM3 실행 준비는 됐는데(CLIP·timm 설치, `SAM3VideoSemanticPredictor` 로드 가능) 가중치 `sam3.pt`가 **HF `facebook/sam3` 게이트에 막힙니다**(우리 HF 토큰으로 403 = 라이선스 미동의). Cosmos 때처럼 https://huggingface.co/facebook/sam3 에서 그 토큰 계정(yspark@smt.ai.kr)으로 동의만 눌러 주시면 제가 받아서 023에 바로 돌립니다(~3 GB, CPU에서 편당 몇 분 예상).
정리하면 SAM2를 쓴 이유는 "이미 아는 도구"였을 뿐이고, SAM3가 되면 구조가 달라집니다: `"car"` 텍스트 프롬프트 하나로 검출·분할·ID 추적을 영상 전체에 걸쳐 수행하므로 YOLO→ByteTrack→ReID 세 단계와 SoM ID 문제까지 한 번에 대체할 수 있고, 근접·부분 노출 구간에서 마스크가 유지되는지가 핵심 검증 포인트입니다. 동의 누르시는 동안 마스크 기반 **침범량(encroachment)** 계산은 SAM2/SAM3 어느 쪽 마스크에도 붙게 만들어 두겠습니다.