Superb AI Inc.
경력근거: 레퍼런스가 없는 문제에서 데이터 수집·설계 전략과 평가 지표(벤치마크)를 처음부터 설계하고
※ 실제 산출물이 아닌 AI 예측 시안입니다.
Superb AI 의 Applied AI 팀은 자체 Vision Foundation Model 인 ZERO 위에 멀티카메라와 VLM 을 얹어 항만 하역 안전과 건설 중장비 접근 감지처럼 공개 데이터셋도 검증된 벤치마크도 없는 문제를 답니다. 공고가 첫 업무로 적은 것이 데이터 수집·설계 전략과 평가 지표를 처음부터 설계하는 일이라, 모은 영상이 그 지표를 받치는지 먼저 정하는 도구는 이 팀의 첫 두 주에 그대로 얹힙니다. 카메라 환경이 현장마다 다르다는 조건도 설치 명세를 판정에 넣어야만 다뤄집니다.
공고가 데이터 수집 전략과 벤치마크를 처음부터 설계하는 일을 첫 업무로 적었습니다. 모은 영상이 그 벤치마크를 받치는지 먼저 정하는 자리를 골랐습니다.
하드웨어와 카메라 환경이 현장마다 다르다고 공고가 밝혔습니다. 설치 명세의 화각과 설계 거리에서 나오는 화소를 판정에 넣었습니다.
만든 데이터셋과 벤치마크를 재사용 자산으로 정리하는 일이 업무에 적혀 있습니다. 기준표를 갈아 끼우면 다른 현장에 그대로 도는 구조로 만들었습니다.
고객 현장에서 며칠치 녹화분을 돌려 뽑은 클립 통계와 카메라 설치 명세를, 대상별 벤치마크 기준표와 맞춰 카메라 한 대와 대상 한 종이 만나는 칸마다 약속해도 되는지 정합니다. 못 받치면 클립이 모자란 것인지, 대상이 너무 작게 찍힌 것인지, 야간 표본이 없는 것인지, 가림과 흔들림이 심한 것인지, 카메라 사양 자체가 안 되는 것인지를 갈라 냅니다. 설치 명세의 가로 화소와 화각, 설계 거리로 1m 당 화소를 구해 대상 폭을 곱하면 그 카메라가 설계상 뽑을 수 있는 대상 크기가 나오고, 실제로 찍힌 중앙 크기가 그보다 한참 작으면 설치가 아니라 촬영 조건을 의심하게 됩니다. 결과는 터미널 표와 현장 회신용 Markdown 리포트로 함께 나옵니다.
선행 사례가 없는 항만·제조 현장에 들어가 문제부터 정의하는 FDE 엔지니어 — 고객이 넘겨준 며칠치 녹화분과 카메라 목록만 손에 쥔 채 어떤 대상에서 어느 정확도를 약속할지 스스로 정해야 한다
클립 수와 야간 비중, 대상 중앙 크기, 흔들림과 가림 비율을 대상별 기준표와 맞추고 카메라 설치 명세에서 설계 화소를 계산하면, 수집을 더 돌리기 전에 어느 칸이 약속 가능하고 어느 칸이 왜 못 받치는지가 정해집니다.
클립 통계와 기준표, 설치 명세 세 파일을 받아 칸마다 적격 여부와 사유를 정하고, 못 받치는 칸에는 더 모아야 할 클립 수와 설계 화소를 붙여 터미널 표와 Markdown 리포트로 내는 CLI 입니다. 클립 통계는 공개 CCTV 영상과 직접 찍은 영상에서 뽑은 값으로 만듭니다.
사전학습 탐지 모델로 직접 찍은 영상에서 대상 상자를 얻어 중앙 크기와 가림 비율, 흔들림 점수를 계산해 클립 통계 600줄을 만들고, 손으로 매긴 정답 판정과 대조해 사유별 일치율을 내는 단계입니다.
미달 칸마다 며칠을 더 돌리면 클립 수가 차는지, 카메라를 어느 높이로 옮기면 대상 크기가 기준을 넘는지 계산해 현장에 넘길 수집 계획을 내고, 기준을 조금 낮췄을 때 약속 가능 칸이 얼마나 늘어나는지 함께 보여 주는 단계입니다.
FDE 엔지니어가 클립 통계와 기준표, 설치 명세 세 파일을 넣으면 카메라와 대상이 만나는 칸마다 약속 가능 여부와 사유가 리포트로 나오는 과정을 시연합니다.
직접 뽑은 클립 통계 600줄에 손으로 매긴 정답 판정을 붙여 대조하고 사유별 일치율을 냅니다. 단, 정답과 통계를 모두 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
출력 형식이 버티는 선을 먼저 확인합니다. 흔들림 점수가 비었거나 야간 비중이 0 이거나 설치 명세에 없는 카메라가 섞인 입력 30종을 돌려도 리포트 모양이 유지되고, 못 본 항목은 사유로 세우지 않고 hedge 에 적습니다.
기준표의 최소 화소를 32 에서 26 으로 내렸을 때 약속 가능 칸이 몇 개 늘어나는지 회귀로 확인합니다.
성능 주장은 여기서 멈춥니다. 위 수치는 제가 뽑은 통계를 제가 채점한 값이고, 벤치마크가 실제로 맞았는지는 Superb AI 가 계약한 현장의 실 녹화분과 실 라벨을 넣어야 나옵니다. 그 검증을 녹화분이 오는 날 돌릴 수 있게 러너와 기준표 서식을 갖춰 둡니다.
약속 가능 칸 수와 사유별 일치율은 제가 뽑은 클립 통계를 제가 채점한 값이라 성능을 말해 주지 않습니다. 면접에서는 리포트가 실제로 도는 것과, 현장 녹화분이 오면 그날 다시 돌릴 수 있다는 것까지만 주장합니다.
기준표를 적은 사람이 정답 판정도 매겼으니 잘 맞을 수밖에 없습니다. 흔들림 점수가 빈 줄과 가림 비율이 정확히 0 인 줄, 설치 명세에 줄이 없는 카메라를 넣어 두어 잘 찍힌 칸만 세는 리포트가 되지 않게 했습니다.
이 포트폴리오는 수집 조건을 기준표와 맞춰 적격을 정하는 기술을 보여줍니다. 항만 안전이나 VLM 파인튜닝 도메인 전문성은 주장하지 않습니다. 판정은 크기 비교와 나눗셈이 하고 모델은 사유 문장만 맡습니다.
설계 화소는 대상이 설계 거리에 있다고 가정한 값이라 실제로 더 멀리서 찍히면 그대로 어긋납니다. 그래서 설계 화소를 확정이 아니라 실측 중앙 크기와 나란히 놓고 읽게 냅니다.
실제 도입 때는 현장마다 대상 폭과 최소 화소를 안전 담당과 다시 맞춰야 하므로, 기준표를 채워 나가는 일을 운영 과제로 둡니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
현장에서 며칠 돌린 녹화분을 카메라와 대상별로 묶어 뽑은 클립 통계입니다. 줄 번호와 현장, 카메라 번호, 대상 종류, 클립 수, 야간에 찍힌 비중, 대상 중앙 크기, 흔들림 점수, 가려진 비중, 수집한 날을 한 줄에 둡니다. 지원자는 공개 CCTV 영상과 직접 찍은 영상을 사전학습 탐지 모델로 돌려 이 표를 스스로 만듭니다. 흔들림 점수가 안 잡힌 줄과 가림 비중이 정확히 0 인 줄, 설치 명세에 없는 카메라 번호를 일부러 섞어 사유가 갈리게 둡니다.
| stat_no | site_id | camera_id | target_class | clip_count | night_ratio | median_object_px | blur_score | occluded_ratio | collected_on |
|---|---|---|---|---|---|---|---|---|---|
| CS-001 | port-a | CAM-02 | 작업자 | 1,840 | 0.31 | 44 | 0.12 | 0.18 | 2026-08-28 |
| CS-002 | port-a | CAM-01 | 지게차 | 500 | 0.26 | 88 | — | 0 | 2026-08-28 |
| CS-003 | port-a | CAM-05 | 안전모 미착용 | 96 | 0.22 | 38 | 0.14 | 0.24 | 2026-08-28 |
| CS-004 | port-a | CAM-07 | 하역 중 접근 | 1,210 | 0.3 | 19 | 0.11 | 0.26 | 2026-08-28 |
| CS-005 | port-a | CAM-09 | 야간 통행 | 980 | 0.04 | 41 | 0.13 | 0.22 | 2026-08-28 |
아래 JSON Schema 를 그대로 만족하는 클립 통계 행을 600개 더 만들어 주세요. 현장을 서너 곳 두고 카메라를 현장마다 여덟에서 열두 대, 대상은 기준표에 있는 열 종에서 골라 섞습니다. clip_count 는 40에서 3000 사이로 흩고, night_ratio 와 occluded_ratio 는 0 에서 1 사이 소수 두 자리로 둡니다. median_object_px 는 12에서 140 사이로 두되 설치가 높은 카메라일수록 작게 잡습니다. 2할은 blur_score 나 median_object_px 를 null 로 비우고, 몇 행은 night_ratio 나 occluded_ratio 를 정확히 0 으로 둡니다. 설치 명세에 없는 카메라 번호도 몇 행 넣습니다. 판정이나 사유를 미리 적어 넣지 마세요. 그리고 헤더가 빠지거나 인코딩이 어긋난 CSV 를 5건 따로 만들어 읽기 실패가 어떻게 보고되는지 확인하게 합니다.
{"type": "object", "properties": {"stat_no": {"type": "string"}, "site_id": {"type": "string"}, "camera_id": {"type": "string"}, "target_class": {"type": "string"}, "clip_count": {"type": "integer", "minimum": 0}, "night_ratio": {"type": "number", "minimum": 0, "maximum": 1}, "median_object_px": {"type": ["number", "null"]}, "blur_score": {"type": ["number", "null"], "minimum": 0, "maximum": 1}, "occluded_ratio": {"type": "number", "minimum": 0, "maximum": 1}, "collected_on": {"type": "string"}}, "required": ["stat_no", "site_id", "camera_id", "target_class", "clip_count", "night_ratio", "median_object_px", "blur_score", "occluded_ratio", "collected_on"]}{"type": "object", "properties": {"stat_no": {"type": "string"}, "site_id": {"type": "string"}, "camera_id": {"type": "string"}, "target_class": {"type": "string"}, "clip_count": {"type": "integer", "minimum": 0}, "night_ratio": {"type": "number", "minimum": 0, "maximum": 1}, "median_object_px": {"type": ["number", "null"]}, "blur_score": {"type": ["number", "null"], "minimum": 0, "maximum": 1}, "occluded_ratio": {"type": "number", "minimum": 0, "maximum": 1}, "collected_on": {"type": "string"}}, "required": ["stat_no", "site_id", "camera_id", "target_class", "clip_count", "night_ratio", "median_object_px", "blur_score", "occluded_ratio", "collected_on"]}대상마다 어느 조건을 채워야 정확도를 약속할 수 있는지 적어 둔 벤치마크 기준표입니다. 기준 번호와 대상 종류, 최소 클립 수, 최소 화소, 흔들림 상한, 최소 야간 비중, 가림 상한, 최소 초당 장수, 대상 폭을 한 줄에 둡니다. 대상 폭은 사람 0.5m, 머리 0.28m 처럼 실제 크기를 적어 설계 화소 계산에 씁니다. 지원자는 공개된 지능형 CCTV 성능 시험 기준과 공개 탐지 벤치마크 논문의 실험 조건 표에서 최소 화소와 초당 장수, 가림 상한 값을 옮겨 적고, 대상 폭은 인체 치수 공개 통계에서 가져와 이 표를 만듭니다. 클립 통계에 안 나오는 대상도 담아 두어 기준표가 판정보다 넓게 깔리게 합니다.
| spec_no | target_class | min_clip_count | min_object_px | max_blur_score | min_night_ratio | max_occluded_ratio | min_fps | target_width_m |
|---|---|---|---|---|---|---|---|---|
| BS-01 | 작업자 | 800 | 32 | 0.25 | 0.25 | 0.3 | 20 | 0.5 |
| BS-02 | 안전모 미착용 | 400 | 26 | 0.22 | 0.2 | 0.28 | 25 | 0.28 |
| BS-03 | 하역 중 접근 | 900 | 32 | 0.25 | 0.25 | 0.3 | 25 | 0.5 |
| BS-04 | 야간 통행 | 700 | 30 | 0.3 | 0.25 | 0.32 | 20 | 0.5 |
| BS-05 | 지게차 | 500 | 60 | 0.3 | 0.25 | 0.35 | 20 | 1.2 |
아래 JSON Schema 를 그대로 만족하는 벤치마크 기준 행을 30개 더 만들어 주세요. 대상은 항만·제조·건설 현장에서 실제로 세는 것들로 두고, min_clip_count 는 300에서 1500, min_object_px 는 20에서 90, min_fps 는 15·20·25·30 중에서 고릅니다. target_width_m 는 사람 0.5m·머리 0.28m·지게차 1.2m 처럼 실제 폭에 맞춥니다. 기준을 서로 모순되게(min_object_px 가 100 을 넘는데 min_fps 는 15) 둔 행을 두 개 넣어 기준표 자체가 이상할 때 무엇이 보고되는지 보게 합니다.
{"type": "object", "properties": {"spec_no": {"type": "string"}, "target_class": {"type": "string"}, "min_clip_count": {"type": "integer", "minimum": 0}, "min_object_px": {"type": "number"}, "max_blur_score": {"type": "number"}, "min_night_ratio": {"type": "number"}, "max_occluded_ratio": {"type": "number"}, "min_fps": {"type": "integer"}, "target_width_m": {"type": "number"}}, "required": ["spec_no", "target_class", "min_clip_count", "min_object_px", "max_blur_score", "min_night_ratio", "max_occluded_ratio", "min_fps", "target_width_m"]}{"type": "object", "properties": {"spec_no": {"type": "string"}, "target_class": {"type": "string"}, "min_clip_count": {"type": "integer", "minimum": 0}, "min_object_px": {"type": "number"}, "max_blur_score": {"type": "number"}, "min_night_ratio": {"type": "number"}, "max_occluded_ratio": {"type": "number"}, "min_fps": {"type": "integer"}, "target_width_m": {"type": "number"}}, "required": ["spec_no", "target_class", "min_clip_count", "min_object_px", "max_blur_score", "min_night_ratio", "max_occluded_ratio", "min_fps", "target_width_m"]}현장에 달린 카메라의 설치 명세입니다. 카메라 번호와 현장, 해상도 문자열, 설치 높이, 화각, 초당 장수, 설계 감시 거리, 설치일을 한 줄에 둡니다. 해상도는 3840x2160 처럼 문자열로 들어와 가로 화소를 떼어 써야 합니다. 지원자는 카메라 제조사가 웹에 올린 사양서에서 해상도와 화각, 초당 장수를 옮겨 적고, 설치 높이와 설계 감시 거리는 자기가 영상을 찍은 자리를 줄자로 재어 채워 이 표를 만듭니다. 화각에 비해 설계 거리가 먼 카메라와 초당 장수가 낮은 카메라를 섞어 두어 카메라 사양 자체가 걸리는 경우가 나오게 합니다. 클립 통계에 나오는 카메라 한 대는 일부러 빼 두어 명세가 없을 때 무엇이 보고되는지 보게 합니다.
| camera_id | site_id | resolution | mount_height_m | fov_deg | fps | design_range_m | installed_on |
|---|---|---|---|---|---|---|---|
| CAM-01 | port-a | 3840x2160 | 6.5 | 75 | 30 | 20 | 2025-11-14 |
| CAM-02 | port-a | 3840x2160 | 6 | 70 | 30 | 22 | 2025-11-14 |
| CAM-03 | port-a | 2560x1440 | 7.5 | 80 | 25 | 16 | 2025-11-20 |
| CAM-04 | port-a | 2560x1440 | 5.5 | 65 | 30 | 14 | 2025-11-20 |
| CAM-05 | port-a | 1920x1080 | 9 | 90 | 25 | 9 | 2026-01-08 |
아래 JSON Schema 를 그대로 만족하는 카메라 설치 명세 행을 60개 더 만들어 주세요. resolution 은 1280x720·1920x1080·2560x1440·3840x2160 중에서 고르고, fov_deg 는 50에서 110, mount_height_m 는 3에서 14, fps 는 10에서 30, design_range_m 는 8에서 60 사이로 둡니다. 설계 거리가 화각에 비해 지나치게 먼 카메라를 대여섯 대 섞어 설계 화소가 기준을 못 채우는 경우가 나오게 합니다. 클립 통계에 나오지 않는 카메라도 몇 대 두세요.
{"type": "object", "properties": {"camera_id": {"type": "string"}, "site_id": {"type": "string"}, "resolution": {"type": "string"}, "mount_height_m": {"type": "number"}, "fov_deg": {"type": "number"}, "fps": {"type": "integer"}, "design_range_m": {"type": "number"}, "installed_on": {"type": "string"}}, "required": ["camera_id", "site_id", "resolution", "mount_height_m", "fov_deg", "fps", "design_range_m", "installed_on"]}{"type": "object", "properties": {"camera_id": {"type": "string"}, "site_id": {"type": "string"}, "resolution": {"type": "string"}, "mount_height_m": {"type": "number"}, "fov_deg": {"type": "number"}, "fps": {"type": "integer"}, "design_range_m": {"type": "number"}, "installed_on": {"type": "string"}}, "required": ["camera_id", "site_id", "resolution", "mount_height_m", "fov_deg", "fps", "design_range_m", "installed_on"]}| Python | 클립 통계와 기준표, 설치 명세를 맞춰 칸마다 적격을 정하는 판정 엔진과 리포트 출력을 맡습니다. |
| Computer Vision | 설치 명세의 화각과 설계 거리에서 1m 당 화소를 구해 대상이 몇 화소로 찍히는지 계산하는 부분입니다. |
| PyTorch | 2주차에 직접 찍은 영상을 사전학습 탐지 모델로 돌려 대상 상자와 중앙 크기를 얻습니다. |
| ONNX Runtime | 3주차에 그 탐지 모델을 변환해 현장 노트북 CPU 에서 돌려 통계 뽑는 시간을 줄입니다. |
| Docker | 판정 엔진과 통계 추출기를 한 이미지로 묶어 현장 노트북에서도 같은 결과가 나오게 합니다. |
✗ fail → 명세에 없는 카메라가 절반을 넘으면 명세부터 받아 채웁니다.
✓ pass → 2주차 영상에서 통계를 직접 뽑는 단계로 넘어갑니다.
✗ fail → 어긋난 칸을 모아 기준표의 최소 화소와 대상 폭을 다시 봅니다.
✓ pass → 3주차 수집 계획 산출로 넘어갑니다.
카메라 한 대와 대상 한 종이 만나는 칸마다 그 표본으로 정확도를 약속해도 되는지 정합니다. 못 받치면 수집 분량·대상 크기·야간 표본·가림과 흔들림·카메라 사양 중 어느 쪽인지 싣고, 분량이 모자라면 더 모아야 할 클립 수를, 크기가 걸리면 설계 화소를 함께 냅니다. 리포트의 묶음이 이 사유를 따릅니다.
{"type": "object", "properties": {"verdict_no": {"type": "string"}, "stat_no": {"type": "string"}, "site_id": {"type": "string"}, "camera_id": {"type": "string"}, "target_class": {"type": "string"}, "fit_verdict": {"type": "string", "enum": ["약속 가능", "수집 분량 미달", "대상이 너무 작게 찍힘", "야간 표본 부족", "가림·흔들림 과다", "카메라 사양 미달"]}, "expected_object_px": {"type": ["number", "null"], "description": "설계 화소입니다. resolution 의 가로 화소를 2 x design_range_m x tan(fov_deg/2) 로 나눠 1m 당 화소를 구하고 거기에 target_width_m 를 곱합니다. 설치 명세에 없는 카메라는 null 입니다."}, "short_clip_count": {"type": ["integer", "null"], "description": "min_clip_count 에서 clip_count 를 뺀 더 모아야 할 클립 수입니다. 수집 분량 미달인 줄에만 채웁니다."}, "evidence": {"type": "array", "items": {"type": "object", "properties": {"field": {"type": "string"}, "agg": {"type": ["string", "null"]}, "value": {}}, "required": ["field", "value"]}}, "summary": {"type": "string"}, "hedge": {"type": ["string", "null"]}}, "required": ["verdict_no", "stat_no", "camera_id", "target_class", "fit_verdict", "evidence", "summary"]}[
{
"verdict_no": "FV-001",
"stat_no": "CS-001",
"site_id": "port-a",
"camera_id": "CAM-02",
"target_class": "작업자",
"fit_verdict": "약속 가능",
"expected_object_px": 62.3,
"short_clip_count": null,
"evidence": [
{
"field": "clip_count",
"agg": null,
"value": 1840
},
{
"field": "min_clip_count",
"agg": null,
"value": 800
},
{
"field": "median_object_px",
"agg": null,
"value": 44
}
],
"summary": "작업자 클립이 1840건 모였고 대상 중앙 크기 44화소가 기준 32화소를 넘어 이 대상은 정확도를 약속해도 됩니다.",
"hedge": null
},
{
"verdict_no": "FV-002",
"stat_no": "CS-002",
"site_id": "port-a",
"camera_id": "CAM-01",
"target_class": "지게차",
"fit_verdict": "약속 가능",
"expected_object_px": 150.1,
"short_clip_count": null,
"evidence": [
{
"field": "clip_count",
"agg": null,
"value": 500
},
{
"field": "min_clip_count",
"agg": null,
"value": 500
},
{
"field": "occluded_ratio",
"agg": null,
"value": 0
}
],
"summary": "지게차 클립이 기준과 똑같이 500건이라 딱 걸치는 자리이고 가려진 클립은 한 건도 없습니다.",
"hedge": "흔들림 점수가 안 잡혀 그 항목은 보지 못했고, 클립이 한 건만 빠져도 기준 아래로 내려갑니다."
},
{
"verdict_no": "FV-003",
"stat_no": "CS-003",
"site_id": "port-a",
"camera_id": "CAM-05",
"target_class": "안전모 미착용",
"fit_verdict": "수집 분량 미달",
"expected_object_px": 29.9,
"short_clip_count": 304,
"evidence": [
{
"field": "clip_count",
"agg": null,
"value": 96
},
{
"field": "min_clip_count",
"agg": null,
"value": 400
}
],
"summary": "안전모 미착용은 96건만 모여 기준 400건에 304건이 모자라니 수집을 더 돌려야 합니다.",
"hedge": null
},
{
"verdict_no": "FV-004",
"stat_no": "CS-004",
"site_id": "port-a",
"camera_id": "CAM-07",
"target_class": "하역 중 접근",
"fit_verdict": "대상이 너무 작게 찍힘",
"expected_object_px": 33.3,
"short_clip_count": null,
"evidence": [
{
"field": "median_object_px",
"agg": null,
"value": 19
},
{
"field": "min_object_px",
"agg": null,
"value": 32
},
{
"field": "mount_height_m",
"agg": null,
"value": 12
}
],
"summary": "설계로는 33.3화소가 나와야 하는데 실제로 찍힌 중앙 크기가 19화소라, 12m 에 달린 이 카메라부터 내려 답니다.",
"hedge": null
},
{
"verdict_no": "FV-005",
"stat_no": "CS-005",
"site_id": "port-a",
"camera_id": "CAM-09",
"target_class": "야간 통행",
"fit_verdict": "야간 표본 부족",
"expected_object_px": 47.7,
"short_clip_count": null,
"evidence": [
{
"field": "night_ratio",
"agg": null,
"value": 0.04
},
{
"field": "min_night_ratio",
"agg": null,
"value": 0.25
}
],
"summary": "야간 통행인데 야간에 찍힌 클립이 4%뿐이라 밤 정확도를 이 표본으로 말하지 못합니다.",
"hedge": null
},
{
"verdict_no": "FV-006",
"stat_no": "CS-006",
"site_id": "port-a",
"camera_id": "CAM-03",
"target_class": "적재 붕괴 위험",
"fit_verdict": "가림·흔들림 과다",
"expected_object_px": 85.8,
"short_clip_count": null,
"evidence": [
{
"field": "blur_score",
"agg": null,
"value": 0.41
},
{
"field": "max_blur_score",
"agg": null,
"value": 0.25
},
{
"field": "occluded_ratio",
"agg": null,
"value": 0.31
}
],
"summary": "흔들림 점수가 0.41 로 기준 0.25 를 넘고 가려진 클립도 31%라 이 표본으로는 경계가 흐립니다.",
"hedge": null
},
{
"verdict_no": "FV-007",
"stat_no": "CS-007",
"site_id": "port-a",
"camera_id": "CAM-06",
"target_class": "작업자",
"fit_verdict": "카메라 사양 미달",
"expected_object_px": 62.3,
"short_clip_count": null,
"evidence": [
{
"field": "fps",
"agg": null,
"value": 12
},
{
"field": "min_fps",
"agg": null,
"value": 20
}
],
"summary": "초당 12장으로 도는 카메라라 기준 20장을 못 채워 클립이 아무리 많아도 움직임을 놓칩니다.",
"hedge": null
},
{
"verdict_no": "FV-008",
"stat_no": "CS-008",
"site_id": "port-b",
"camera_id": "CAM-14",
"target_class": "작업자",
"fit_verdict": "카메라 사양 미달",
"expected_object_px": null,
"short_clip_count": null,
"evidence": [
{
"field": "camera_id",
"agg": null,
"value": "CAM-14"
},
{
"field": "clip_count",
"agg": null,
"value": 880
}
],
"summary": "port-b 의 CAM-14 는 설치 명세에 줄이 없어 화각과 초당 장수를 확인하지 못했습니다.",
"hedge": "명세를 받아 채우면 다시 돌려 판정이 바뀔 수 있습니다."
}
][자동 검증 · 코드가 판정합니다] 1. fit_verdict 가 enum 여섯 값 중 하나인지 확인합니다. 2. verdict_no·stat_no·camera_id·target_class·fit_verdict·evidence·summary 가 모두 채워졌는지 확인합니다. 3. stat_no 가 클립 통계에 실재하는 줄 번호인지 대조하고, target_class 가 기준표에 있는 대상인지 확인합니다. 4. expected_object_px 를 resolution 의 가로 화소를 2 x design_range_m x tan(fov_deg/2) 로 나눈 뒤 target_width_m 를 곱해 다시 계산합니다. 5. camera_id 가 설치 명세에 한 줄도 없으면 expected_object_px 가 null 이고 fit_verdict 가 카메라 사양 미달인지 확인합니다. 6. fps 가 min_fps 보다 작거나 expected_object_px 가 min_object_px 보다 작으면 fit_verdict 가 카메라 사양 미달인지 다시 계산합니다. 7. clip_count 가 min_clip_count 보다 작으면 fit_verdict 가 수집 분량 미달인지 확인하고, short_clip_count 를 min_clip_count 에서 clip_count 를 뺀 값으로 다시 계산합니다. 8. median_object_px 가 min_object_px 보다 작으면 fit_verdict 가 대상이 너무 작게 찍힘인지 확인합니다. 9. night_ratio 가 min_night_ratio 보다 작으면 fit_verdict 가 야간 표본 부족인지 확인합니다. 10. blur_score 가 max_blur_score 를 넘거나 occluded_ratio 가 max_occluded_ratio 를 넘으면 fit_verdict 가 가림·흔들림 과다인지 확인합니다. 11. blur_score 나 median_object_px 가 비어 있으면 그 항목을 건너뛴 사실이 hedge 에 적혔는지 확인합니다. 12. fit_verdict 가 약속 가능이면 위 다섯 조건 어디에도 안 걸리는지 다시 확인합니다. 다만 값이 비어 건너뛴 항목은 조건에서 뺍니다. 13. evidence 의 field 이름이 클립 통계·기준표·설치 명세에 실재하는 컬럼인지 대조합니다. 14. agg 가 없는 evidence 의 value 가 그 컬럼에 수록된 행 값과 같은지 확인합니다. 15. summary 가 존댓말로 끝나는지 확인합니다. [평가 러너 · 2주차] 직접 찍은 영상에서 뽑은 클립 통계 600줄에 손으로 매긴 정답 판정을 붙여 대조하고, 사유별 일치율과 어긋난 줄의 목록을 냅니다. [수동 검증 · 사람이 봅니다] 1. 기준표의 대상 폭과 최소 화소를 현장 안전 담당과 맞춰 정합니다. 2. 카메라를 옮겨 달지 화각을 바꿀지는 현장 설비 담당과 정합니다.
근거: 레퍼런스가 없는 문제에서 데이터 수집·설계 전략과 평가 지표(벤치마크)를 처음부터 설계하고