KCI 논문 심사 대응 (1차/2차/3차 재심)
논문 제출 후 받은 심사위원 리뷰를 서술 보강 vs 실제 실험 필요로 분류해 대응한 기록 — 각 라운드의 지적사항, 그에 대한 ablation/재분석 결과, 재심 진행 상황.
압축 요약
1차 심사 결과는 위원1·3 "수정 후 재심", 위원2 "수정 후 게재"다. 9건의 지적을 사람이 결정할
필요 없이 서술만 보강하면 되는 것과 실제 데이터/실험이 필요한 것으로 나눠 대응했다.
서술 보강 6건(lightweight 용어 재정의, 스코프 한계 명시, Mobility VLA 비교 재검토, frozen
인코더 결합 설명, Fig/Table 인덱스 표기, 하이퍼파라미터 서술 확장)은 영문 복붙 문단까지
revision_briefing.html에 준비됐다. 실제 데이터가 필요했던 두 건 중 하나(그라운딩 인코더
기여도 ablation)는 배포와 동일 조건에서 돌려 답을 얻었다: OWLv2 bbox 단독 64.09%, Kosmos-2
vision 단독 73.71%, 융합(배포 구성) 73.87%(best seed 74.13%가 배포 체크포인트 저장값과 정확히
일치) — Kosmos-2 비전이 성능 대부분을 담당하고 OWLv2는 보조적이라는 결론이 PG2 기반 이전
실험(Exp14)과 같은 방향으로 재확인됐다. 다른 하나(실패 케이스 원인 분류)는 시도 결과
데이터가 존재하지 않는다는 것을 확인했다 — episode_log.csv의 "실패" 기록은 95/100
헤드라인 배치가 아니라 그 이전 개발 단계 디버깅 로그였고, 정작 95/100 배치 자체는 H5에
세션별 성공/실패 라벨이 없다. 대신 원인 분해가 가능한 유일한 자료인 89/100 배치의 미검출
프레임 confidence 분포를 출처를 명시하고 인용하는 쪽으로 정직하게 서술하기로 했다. 안전(충돌
회피) 논의는 현재 파이프라인에 없는 기능이므로 Limitation 절에 명시하는 것으로 처리한다.
같은 날 데이터를 다시 파고들어 세 가지를 더 찾았다: ① ablation을 클래스별로 쪼개보니 STOP·
ROT_L·ROT_R은 bbox 단독이 vision 단독보다 훨씬 유리하고(예: ROT_L 100% vs 33.3%), 심지어
fused가 bbox_only보다도 낮게 나온 경우가 있어 — 표본이 작긴 하지만(28프레임) "단순 concat 융합이
희귀 클래스에서 시각 신호에 가려질 수 있다"는 관찰을 얻었다. ② 실기 5개 목표 방향이 Stage 1의
5-class 방향 대조학습 카테고리와 정확히 대응한다는 근거를 찾아 "목표 지점 선정 기준" 질문에
답했다. ③ 가장 중요한 정정: "5개 시작 위치"가 실은 로봇 출발지·카메라·트랙이 전부 동일한 채
타겟 방향만 다른 것이었다는 걸 재확인했고, 그래서 위원1-②/3-①이 요구한 진짜 환경 독립성은
서술로 넘길 수 없고 실제로 새 실기가 필요하다고 판단을 바꿨다. 최소 실험 규모(타겟 "중앙" 고정
+ 신규 조건 3개 × n=15~20, 총 45~60회, Wilson CI 하한 70~76%)까지 계산해 제안한 상태이고,
실행 여부는 재심 기한에 달려 있다. 재심 기한이 이번 주(2026-09-14~09-20)로 확인됐고, 이후 지도교수님과의
09-14 논의로 설계가 한 번 더 구체화됐다 — 출발위치2·3을 각각 5방향×n=20으로(위치1과 동일 규격) 진행해
메인 EG-VLA 신규 실기가 200회로 늘고, 여기에 OWLv2 단독·Kosmos-2 단독을 실기로도 재검증(80회)이
추가돼 주 계획 280회 + 플랜B 조도 50회로 최종 확정됐다. 인코더 ablation의 유일한 블로커였던 런타임
단일 인코더 모드는 VLA_ABLATION_MODE(fused/bbox_only/vision_only)로 구현해 soda에 배포·검증까지
끝냈다(POST /config로 무재시작 핫스왑). 마지막으로 "Kosmos-2 그라운더"라는 용어 자체가 부정확함(우리
시스템은 Kosmos-2의 grounding 기능을 쓴 적이 없음)과 image_proj 학습 라벨이 그라운더와 무관하게
데이터 수집 시점 메타데이터(H5 attrs)에서만 온다는 것을 코드로 끝까지 추적해 확인했다 — 둘 다 ablation
해석에 영향은 없지만 논문 서술 정확도를 위해 정리해뒀다.
2026-09-16~09-22 완료 업데이트: 실기 도중 fp16/fp32 config 불일치(threshold=0.20과 fp16이
동시에 켜진 위험 조합)를 발견·수정했고, pos2 초반 실패(4/5)는 그라운더 문제가 아니라 배포
체크포인트(exp73)가 단일 출발위치(중앙) 데이터로만 학습돼 pos2의 더 큰 좌측 보정을 학습 못 한
것으로 진단해 체크포인트는 교체하지 않고 그대로 수집을 계속했다. 2026-09-19 pos1+pos2+pos3
300건이 완료됐다(pos1 95.0%/pos2 91.0%/pos3 90.0%/전체 92.0%) — 방향별로는 중앙 97%가 가장
높고 강우 85%가 가장 낮다. 수집 도중 action_speed_scale/stop_on_miss config가 바뀌어 pos3
대부분·pos2_약우는 pos1과 다른 조건으로 수집됐음을 논문에 각주로 밝혀야 한다. 실기 인코더
ablation(80회)은 교수님 결정으로 생략하고, 대신 2026-09-20 pos1/2/3 실제 세션 이미지 12장을
OWLv2·PG2·Kosmos-2 세 그라운더에 전부 통과시킨 실측 비교(OWLv2 8/12 정합, PG2 1/12, Kosmos-2는
has_bbox 12/12지만 "basket"을 한 번도 못 맞혀 실질 0/12)로 대체했다 — PG2→OWLv2 교체 결정과
Kosmos-2가 고정 비전 인코더로만 남았다는 서술을 실측으로 뒷받침한다. 실패 케이스는 그라운딩
손실형과 정책 과잉대응형 2종으로 정리했고, action_speed_scale 미반영 버그를 고쳐 pos3_강우
성공률이 33%→80%로 회복되는 것을 확인했다(end_reason 필드 버그는 향후 과제로 보류). 2026-09-22
pos2_약우 재수집으로 300/300건이 최종 확정됐다.
챕터별 원문 발췌 (시간순)
2026-09-14 · KCI 논문 1차 심사 결과(위원1·3 수정 후 재심, 위원2 수정 후 게재)를 받고, 지적 9건을 "서술로 해결 가능"과 "실제 데이터/실험 필요"로 분류해 대응했다. 그 중 위원1-①·위원3-④가 요구한 그라운딩 인코더 기여도 ablation을 실제로 돌렸고, 위원3-⑤·⑦이 요구한 실패 케이스 분류는 데이터가 없어서 할 수 없다는 것을 확인했다.
🟢 3줄 요약 ① 배포 조건과 동일한 exp73 split(192/33ep, seed=42)에서 OWLv2 bbox 단독(64.09%)·Kosmos-2 vision 단독(73.71%)·융합(73.87%, best seed 74.13%=배포 체크포인트와 정확히 일치)을 3-seed로 비교 — Kosmos-2 비전이 성능 대부분을 담당하고 OWLv2는 보조적이라는, PG2 기반 이전 실험(Exp14)과 같은 방향의 결론을 OWLv2 그라운더에서도 재확인. ② logs/episode_log.csv의 "실패" 74건을 전수 조사한 결과, 이건 95/100 헤드라인 배치(08-07)가 아니라 그 이전 개발 단계(06-26~07-23) 디버깅 세션이었고, 95/100 배치 자체는 H5에 세션별 성공/실패 라벨이 없어(status 전량 manual_stop) 실패 5건의 원인을 재구성할 방법이 없다는 걸 확인 — 환각 없이 "데이터 한계"로 명시하는 쪽을 택함. ③ 서술 보강만으로 해결 가능한 6개 항목(lightweight 용어 정의, 스코프 강조, Mobility VLA 비교 재검토, frozen 인코더 결합 서술, Fig/Table 인덱스, 하이퍼파라미터 서술)은 복붙용 영문 문단까지 revision_briefing.html에 준비해뒀고, 새 조건(출발위치/카메라/조도) 실기 실험은 재심 기한 확인 후 결정하기로 미결정 상태로 남김. 🔬 72-1 OWLv2 단독 / Kosmos-2…🚧 72-2 실패 케이스 원인…📝 72-3 서술 보강 6건 + 미결정 1건🔍 72-4 재검토(같은 날)📅 72-5 재심 기한 확인🎓 72-6 2026-09-14 교수님과…📐 72-7 규모 재계산🔧 72-8 VLA_ABLATION_MODE…🔬 72-9 그라운딩 인코더 용어 정정 +…🔍 72-10 fp16/fp32 불일치 발견·수정…🏁 72-11 실기 300/300건…
🔬 72-1. OWLv2 단독 / Kosmos-2 단독 / 융합 ablation — 배포 조건 그대로 재현
scripts/ablate_owlv2_kosmos2_fusion.py로 exp73_v6_vis_cache_stage1v3.pt (Kosmos-2 vision, 그라운더 무관)의 vis 특징은 그대로 두고 bbox만 bbox_dataset_v6_owl.json(OWLv2)으로 교체 — 배포 체크포인트가 학습된 것과 동일한 절차다. 결과: 조건입력 차원val acc (3-seed) OWLv2 bbox 단독 24 (4×window6) 64.09% ± 0.34%p Kosmos-2 vision 단독 1536 (256×window6) 73.71% ± 0.10%p 융합(배포) 1560 (260×window6) 73.87% ± 0.20%p best seed(74.13%)가 배포 체크포인트 저장값(74.13%)과 정확히 일치해 ablation 파이프라인이 배포 조건과 동일함을 검증했다. Kosmos-2 비전 단독으로 이미 융합 성능의 대부분(73.71/73.87)을 회복하고, OWLv2 bbox 단독도 8-class chance(12.5%)를 크게 상회(64.09%)하지만 둘보다는 못하다 — 두 인코더가 상호보완적이되 시각 표현이 더 결정적이라는 결론. PG2 기반 이전 실험(Exp14: bbox_only 67.4%/image_only 75.6%/융합 76.7%)과 방향이 같아 그라운더를 바꿔도 재현되는 구조적 결론임을 확인. 스크립트 scripts/ablate_owlv2_kosmos2_fusion.py · 결과 docs/v5/bbox_nav_owl/ablation_owlv2_kosmos2_fusion.json
🚧 72-2. 실패 케이스 원인 분류(위원3-⑤·⑦) — 요청받은 데이터가 존재하지 않음을 확인
logs/episode_log.csv(145행)를 전수 조사했다. "실패" 74건의 메모를 읽어보니 "검증 스크리닝(L2 저장)", "프리뷰 모델 오류", "async모드 테스트" 등 전부 06-26~07-23 개발 단계 디버깅 세션이었다 — 논문에 실린 95/100 헤드라인 배치(08-07)와는 체크포인트/파이프라인 조건이 다른 별개의 로그다. 정작 95/100 배치 자체는 CH64/model_architecture_brief.html에 이미 기록된 대로 H5에 세션별 성공/실패 라벨이 없다(status 전량 manual_stop) — 실패 5건 각각이 어떤 프레임에서 왜 틀렸는지 재구성할 방법이 데이터상 없다. 대안으로 삼은 것: 원인 분해가 실제로 가능한 유일한 데이터는 89/100 배치(07-31)의 미검출 프레임 197장 confidence 분포(0.10~0.20 구간이 54.8%로 지배적 — 이미 model_architecture_brief.html §5에 있음)뿐이다. 논문에는 이 배치 출처를 명시하고 "다른 배치의 진단 데이터에 근거해 일반화한 것"이라고 정직하게 쓰기로 했다 — 없는 데이터를 만들어내지 않는다는 원칙을 여기서도 지켰다.
📝 72-3. 서술 보강 6건 + 미결정 1건 — 위원별 지적 전체 분류
서술로 해결(완료, 영문 복붙 문단까지 준비): lightweight 용어 재정의(위원1-③, 학습파라미터 1.128M vs 추론참여 459.3M 구분), 스코프 한계 명시(위원2, 위원3-②, constrained vocabulary+고정 5목표지점), Mobility VLA 비교 재검토(위원3-③, 동일조건 아님을 명시), frozen 인코더 결합 서술 보강(위원3-④, ablation 결과로 답변), Fig/Table 인덱스 표기(위원3-⑥, revision_briefing.html에서 이미 재정렬 완료), 하이퍼파라미터 서술 확장(위원3-⑨). 서술로 처리(실험 대상 아님): 충돌회피 안전 논의(위원3-⑧) — 현재 파이프라인에 없는 기능이므로 Limitation 절에 명시. 미결정 — 사람 판단 대기: 새 출발위치/카메라/조도 조건 추가 실기(위원1-②, 위원3-①) — 유일하게 로봇 재출동이 필요한 항목이라 재심 기한을 확인한 뒤 조건 수·회당 시행 횟수를 역산하기로 함. 전체 트리아지 표 docs/01.paper/revision_briefing.html#round1-review
🔍 72-4. 재검토(같은 날) — 클래스별 분해·목표위치 근거 재발견, 환경독립성 판단 정정
"다시 확인하면서 깊게 생각"이라는 요청을 받고 같은 데이터를 한 번 더 팠더니 세 가지가 나왔다. ① 클래스별 ablation 재분해 — 72-1의 평균 정확도 뒤에 숨어 있던 클래스별 수치를 열어보니, STOP·ROT_L·ROT_R은 bbox_only(91.8%/100.0%/86.4%)가 image_only(87.0%/33.3%/45.5%)를 크게 앞서는 반면 평행이동 5종은 정반대였다. 게다가 fused가 ROT_L/R에서 bbox_only보다도 낮다(50.0%/31.8%) — 단순 concat 융합이 다수 클래스(평행이동)의 시각 신호에 희귀 클래스(회전, val 1.15%)를 가리는 것일 수 있다는 관찰이다. 다만 표본이 28프레임뿐이라 확정 결론은 아니라고 명시. ② 목표 지점 선정 기준 발견 — 실기 5개 목표 방향이 임의가 아니라 Stage 1의 5-class 방향 대조학습 카테고리(강좌/약좌/중앙/약우/강우)와 정확히 대응한다는 근거를 찾아 위원3-⑦의 절반("선정 기준")을 해결. ③ 환경 독립성 판단 정정 — 더 심각한 문제였음: "5개 시작 위치"가 실제로는 로봇 출발지·카메라 배치·트랙이 전부 동일한 채 타겟 방향만 5가지였음을 재확인 — 위원1-②/3-①이 요구한 진짜 환경 독립성(출발위치· 카메라·조도 변화)은 기존 데이터로 답할 방법이 없고 서술로 넘길 수도 없다. 최소 실험 규모를 계산해 제안: 타겟 방향은 "중앙" 1개로 고정하고 3개 신규 조건(출발위치/카메라 배치/조도) × n=15(Wilson CI 하한 70.2%, 기존 프로토콜 n=20과 맞추려면 45~60회)만 추가하면 답이 된다 — 5방향×3조건 완전 재수집(300회)보다 훨씬 현실적. Wilson score interval로 계산, 총 소요 45~120분 추정.
📅 72-5. 재심 기한 확인 — 이번 주(09-14~09-20) 내, n=20으로 확정
재심 기한이 2026-09-14(월)인 오늘 기준 이번 주 안으로 확인됐다. 실기에 필요한 최대 시간 (60회 기준 총 60~120분)이 남은 기한(5~6일)에 비해 충분히 여유로워, 72-4에서 제안한 최소안 n=15 대신 기존 프로토콜과 동일 규격인 n=20(조건당, Wilson CI 하한 76.4%)으로 상향 확정했다 — Table 7의 다른 위치들과 직접 비교 가능해진다는 장점. 제안 일정: 09-15(화)~16(수) 실기 실행(조건 A/B/C 각 20회) → 09-17(목) 결과 정리·문서 반영 → 09-18(금) 논문 본문 반영 → 09-19~20(토·일) 여유일. 실기 자체는 최대한 빨리(09-15~16 중) 끝내야 뒤 작업(결과에 따른 서술 방향 결정)이 지연되지 않는다. 전체 일정표 docs/01.paper/revision_briefing.html#round1-review
🎓 72-6. 2026-09-14 교수님과 1차보완 논의 — 실험 설계 확정 (72-5 대체)
72-5의 "3조건(출발위치/카메라/조도) 각 n=20" 안은 지도교수님과의 2026-09-14 논의 결과로 대체됐다. 확정된 설계 4가지: ① 출발 위치 독립성 — 학습 구성(출발위치 1개×방향5개, 1×5)을 추론에서 3×5 그리드로 확장. 기존 위치1(=Table 7의 100건)은 재사용, 위치2·3만 신규 실기(각 5방향×n=5, 합계 50회) — 위원1-②/ 3-①이 요구한 "학습-테스트 목표 동일성"과 "출발 위치 독립성"을 동시에 다룸. ② 조도 ablation — 기존 위치에서 조도만 바꿔 그리드와 분리된 독립 변수로 진행(5방향×n=10=50회) — 원인 혼동 방지. ③ 시간 변화 — 새 실기 불필요. 학습 데이터(686개 H5) 파일명 타임스탬프를 직접 세어 검증: 심야(00-04시) 26% · 아침(05-10시) 9% · 점심(11-14시) 4% · 저녁(19-23시) 26%, 오후(15-18시)는 0% — "아침·점심·저녁 수집"이라는 서술은 대체로 맞지만 정확히는 4개 시간대(오후 공백)이므로 논문엔 실측 분포 그대로 인용하기로 함. ④ 카메라 배치 조건 — 범위 제외 확정: 72-1~72-5에서 "확인 필요"로 남겨뒀던 항목. 2026-09-14 교수님 논의 범위가 출발위치·조도·시간변화 3가지였음을 사용자가 직접 확인해줘 — 카메라 배치는 의도적 제외(누락 아님)로 최종 확정. 신규 실기 총량: 100회(위치2·3 그리드 50 + 조도 50), 더 타이트한 근거가 필요하면 위치2·3을 n=10으로 올려 150회 안도 가능(이번 주 시간 여유로 충분). 전체 반영본 docs/01.paper/revision_briefing.html#realrobot-newcond ⚠️ 이 카드의 "100회" 수치는 72-7에서 330회(이후 280+플랜B 50)로 다시 바뀜 — 시간순 기록이라 그대로 둠.
📐 72-7. 규모 재계산 — 메인 200 + 인코더ablation 80(주 계획) + 조도 50(플랜B)
같은 날 사용자가 규모를 더 구체화: 위치2·3은 5방향×n=20씩(위치1과 동일 규격) 진행하기로 확정해 메인 EG-VLA(융합) 신규 실기가 200회로 늘었고, 여기에 "OWLv2 단독·Kosmos-2 단독을 실기로도 재검증"(2인코더×좌우2방향×n=20= 80회)이 추가됐다. 합쳐서 280회 "주 계획". 조도 ablation(50회)은 이후 "플랜B"로 격하 — 주 계획이 끝나고 시간 남으면만 진행, 논문엔 못 하면 "향후 과제"로 서술. 실기 인코더 ablation(80회)은 오프라인 ablation(72-1)과 방법론이 다름을 명시 — 72-1은 조건마다 새로 학습한 소형 헤드로 "단독일 때 최대 얼마나 배우는가"를 쟀고, 이건 "배포된 융합 모델(가중치 그대로)이 한쪽 입력을 실시간으로 잃으면 어떻게 무너지는가"를 잰다.
🔧 72-8. VLA_ABLATION_MODE 런타임 플래그 구현·soda 배포·검증 완료
실기 인코더 ablation의 유일한 블로커였던 "런타임에 단일 인코더 모드가 없다"를 해결했다. stage2_v2_inference_server.py의 배포 exp73 MLP 피처 빌더 _build_seq_feature_trans()에 VLA_ABLATION_MODE(fused/bbox_only/vision_only)를 추가 — 프레임당 260차원(bbox4+vis256) 특징에서 한쪽을 0-벡터로 마스킹. POST /config로 서버 재시작 없이 핫스왑, GET /health에 노출, 재시작 시 자동 복원은 의도적으로 안 함(잊은 ablation 설정이 다음 세션에 몰래 영향 주는 걸 방지). 배포 전 soda에 직접 ssh 접속해 실제 코드를 대조 검토한 결과 더 심각한 기존 문제도 하나 발견 — soda의 go.sh/서버 코드 자체 기본값이 exp73이 아니라 구 exp71 Transformer + PG2 그라운더 + proximity STOP이었음(env var 없이 콜드스타트하면 조용히 다른 구성으로 뜸). 다행히 logs/stage2_runtime_state.json 영속화 파일이 이미 exp73/owlv2/learned/0.20 값을 올바르게 갖고 있어서(2026-07-30 도입) 실제 재기동 시엔 자동 복원됨을 확인 — 코드 기본값과 실제 운영 상태가 다르다는 것 자체는 문서화해둘 함정. soda에서 fused→bbox_only→vision_only→잘못된 값(정상 거부)→fused 왕복 전부 실제 실행해 검증, 서버는 정상(fused) 상태로 복귀. git 3곳(soda가 pull하는 monavla-driving, main, inference-integration) 전부 반영 — 이 과정에서 soda의 라이브 코드가 로컬 저장소보다 527줄 앞서 있던 걸 발견해 같이 동기화함. ✅ 후속 조치(2026-09-16, 같은 날) — 위 "코드 기본값과 실제 운영 상태가 다르다"는 함정을 문서화만 하고 넘기지 않고 soda 쪽에서 직접 고쳤다. scripts/run/go.sh의 VLA_GROUNDER fallback pg2→owlv2, VLA_STOP_MODE proximity→learned, VLA_OWLV2_THRESH 0.25→0.20으로 변경해 코드 기본값 자체를 프로덕션 설정과 일치시킴(monavla-driving 커밋 62fd0eca) — stage2_runtime_state.json이 없는 완전 콜드스타트에서도 옛 exp71 구성으로 뜰 위험을 제거했다.
🔬 72-9. "그라운딩 인코더" 용어 정정 + 인코더 ablation 방법론 점검 2건
사용자가 두 가지를 연달아 짚었고, 둘 다 코드로 확인해 답했다. ① "Kosmos-2 그라운더"는 잘못된 용어 — Kosmos-2는 원래 자체 phrase-grounding 능력이 있는 모델이지만, 우리 시스템은 그 기능을 쓴 적이 없다(encode_image()가 텍스트 인자 자체를 안 받음, 이미지→1024차원만). 실제 위치검출은 전적으로 OWLv2가 담당. 더 중요한 차이는 텍스트 관여 시점 — OWLv2는 매 추론마다 "gray basket" 텍스트를 실제로 쓰지만, Kosmos-2의 image_proj는 Stage 1 학습 때만 text_proj와의 대조학습으로 가중치가 정해지고 배포 추론 시엔 텍스트가 전혀 관여하지 않는다. 그래서 이 ablation은 "vision vs text" 비교가 아니라 "텍스트로 매번 조건화되는 위치검출 vs 학습 때만 언어로 형성된 순수 시각 표현"의 비교라고 정정 — 문서에 논문 Figure 1 표현을 그대로 쓴 ASCII 구조도까지 추가. ② image_proj가 그라운더별로 사전 선별된 데이터로 학습된 거 아닌가? — train_stage1_v3_5cls_owl_fastloss.py부터 gen_v6_frame_level.py까지 라벨 출처를 끝까지 추적: Stage1 방향 라벨(label)은 H5 파일 속성(cx_position, 데이터 수집 시점에 이미 확정된 물리적 사실)에서 오고, Stage2 액션 라벨(gt_class)도 조이스틱 원시 액션을 기하 규칙으로 변환한 것뿐 — 둘 다 그라운더가 관여할 여지가 없다. gen_v6_owl_annotation.py도 dict(fr)로 기존 필드를 그대로 복사한 뒤 bbox 숫자만 갈아끼우는 구조라 OWLv2는 라벨에 손을 못 댄다. "OWL 라벨"이라는 파일명 때문에 헷갈리기 쉬운 지점이었는데, 실제로는 그라운더가 "입력 특징 제공자"일 뿐 "정답을 정하는 주체"가 아님을 확인 — ablation 해석에 영향 없음.
🔍 72-10. fp16/fp32 불일치 발견·수정 + pos2 초반 실패는 그라운더가 아니라 정책 과적합
실기 담당자(soda)가 pos2/pos3 실기를 시작한 직후 두 가지를 발견·정리해 relay했다. ① fp16이 몰래 켜져 있었음 — logs/stage2_runtime_state.json에 owlv2_fp16: true가 저장돼 있었는데, 95/100(08-07) 테스트 땐 이 기능 자체가 코드에 없어 당시는 자동으로 fp32였음. threshold=0.20과 fp16이 동시에 켜지면 "실패 빈도가 배가된다"고 07-30에 경고해둔 바로 그 위험 조합 상태였다. fp32로 되돌리고 영구 저장, fp16 상태로 수집된 2026-09-16 20:43~21:0X 구간(pos2_약좌 일부)만 confound 가능성 표시. ② pos2_약좌 5건 중 4건 실패 — 그라운더 문제 아님 — 세션 H5를 프레임 단위로 직접 열어본 결과, 바구니가 화면 왼쪽 끝으로 밀려나며 잘리자 OWL-v2 confidence가 자연스럽게 하락한 것(검출기 입장에서는 정상 반응). 원인은 정책(MLP head) — 배포 체크포인트(exp73)의 학습 데이터 225 에피소드가 전부 단일 출발위치(중앙)에서만 수집돼, pos2처럼 더 많이 좌측 보정을 해야 하는 상황을 학습 데이터에서 한 번도 못 봤다. 체크포인트 전환은 하지 않기로 결정 — 다른 체크포인트도 전부 같은 단일 출발위치 데이터로 학습돼 근본 문제는 동일하고, 무엇보다 위치별로 최적 체크포인트를 따로 고르면 "출발위치 독립성" 검증 자체가 무효화된다. 낮은 성공률 자체를 심사위원1이 요구한 답(단일 출발위치 학습의 한계)으로 그대로 두고 수집을 계속하기로 했다.
🏁 72-11. 실기 300/300건 확정(92.0%) + 인코더 ablation 80회 생략 결정 + 그라운더 3종 실측·실패 유형·버그 수정
2026-09-19 — pos1(기존 100건 재사용)+pos2(신규 100)+pos3(신규 100) = 300건이 최종 완료. 방향별 합산: 강좌 56/60(93%)·약좌 56/60(93%)·중앙 58/60(97%)·약우 55/60(92%)· 강우 51/60(85%). 위치별: pos1 95.0% / pos2 91.0% / pos3 90.0% / 전체 92.0%. 수집 도중 action_speed_scale 버그 수정(1.0→0.6 실제 적용 시작)과 stop_on_miss 토글이 걸쳐 있어 pos3 대부분·pos2_약우는 pos1과 다른 config로 수집됨 — 논문에 각주 필요. 실기 인코더 ablation(80회)은 교수님 결정으로 생략 — 대신 기존 오프라인 3-way ablation(72-1)과 그라운더 교체 이력(Kosmos-2 자체 phrase-grounding을 먼저 시도했으나 상시 미검출로 PG2→OWLv2 교체, Kosmos-2는 그 이후 고정 비전 인코더로만 남음) 서술로 대체. 인코더 ablation 인프라(72-8의 VLA_ABLATION_MODE)는 구축·검증된 채로 보류. 2026-09-22 — pos2_약우 재수집 완료(0/20→20/20)로 300건 최종 확정. 이어서 더 강한 대체 근거가 나왔다: pos1/2/3 실제 세션 이미지 12장을 OWLv2·PG2·Kosmos-2에 전부 실제로 통과시킨 실측 3-way 비교 — OWLv2 8/12 정합 검출(1952ms), PG2 1/12(대부분 full-frame 붕괴, 최대 8270ms), Kosmos-2 12/12 has_bbox=True지만 raw output에 "basket"이 단 한 번도 안 나와 실질 정답 0/12(1278ms로 가장 빠르지만 무효). 실패 케이스 유형 2종(심사위원1 의견5·심사위원3 의견7 대응, 개별 수치 비노출) — ① 그라운딩 손실형: OWL-v2 전 구간 미검출, fallback 신호로 주행하다 실패(예: pos2_강우 20260917_123659). ② 정책 과잉대응형: 그라운딩은 정상인데 정책이 한쪽으로 과커밋해 목표가 화면 밖으로 밀려남(예: pos3_강우 20260917_193352). 코드 버그 2건 수정 + 1건 보류 — action_speed_scale이 실제 모터에 반영 안 되던 버그(publish_and_move() throttle 고정 + InferenceResponse 필드 누락) 수정, pos3_강우 성공률 33%→80%로 회복 확인. end_reason 필드가 존재하지 않는 키를 체크해 항상 "manual"만 기록되는 버그는 실기 진행 중이라 향후 과제로 보류. 원본: docs/DATASET_V6_STATUS.md 2026-09-19/09-22 항목. 전체 반영본 docs/01.paper/revision_briefing.html#realrobot-actual-results ctabInit("ch72")