새벽 두 시, 골목 CCTV에 누군가 캔을 던지고 사라졌다. 컴퓨터는 화면의 숫자 수백만 개에서 사람을 찾고, 사람을 관절 13개짜리 막대 인형으로 바꾸고, 막대 인형의 움직임을 숫자 몇 개(특징)로 줄여 "투기인가"를 가른다. 사람이 정한 규칙이 어디서 속는지, 학습이 무엇을 고치는지, 그리고 왜 "어디에 떨어졌나"가 가장 중요한 단서인지 끝까지 따라간다.
CCTV 관제실에는 화면이 수십 개다. 사람이 밤새 모든 화면을 지켜볼 수는 없다. 연구실이 받은 미션은 하나다. 쓰레기를 버리는 "동작"을 AI가 먼저 알아채게 하라.
숫자 6백만 개에서 사람을 찾고, 자세를 숫자 26개로 줄인다
46프레임의 움직임을 특징 4개로 요약하고 규칙과 학습을 비교한다
실시간 점수와 판정보류, 그리고 이 방법이 틀리는 곳
컴퓨터가 받는 것은 사진이 아니라 칸마다 빨강·초록·파랑의 세기(0~255)다. 보기 방식을 바꾸고 화면 위에 마우스를 올려 보자.
풀HD CCTV 한 프레임은 가로 1,920 × 세로 1,080칸이고, 칸마다 빨강·초록·파랑 세 숫자가 있다. 1,920 × 1,080 × 3 = 6,220,800개. 초당 30프레임이면 1초에 1억 8,662만 개다. 이 숫자들 어디에도 "사람"이나 "쓰레기통"이라는 이름표는 없다. 그래서 첫 단계는 숫자 더미에서 무엇이 어디에 있는지부터 찾는 것이다. 사진이 숫자 행렬이 되는 과정은 4-2에서 자세히 다룬다.
두 단계다. 먼저 객체 검출이 사람·쓰레기통·캔의 네모(바운딩 박스)를 찾는다. 이어서 포즈 추정이 사람 상자 안에서 관절 13곳의 좌표를 찾는다. 층을 켜고 꺼 보자.
좌표는 그림(1402 × 1122)에서 관절 점을 직접 읽어 옮긴 값이다. 왼쪽 위가 (0, 0)이고 아래로 갈수록 y가 커진다. 사람을 마주 보므로 화면 왼쪽 팔이 "오른팔"이다.
투기는 한 장면이 아니라 3초 동안의 움직임이다. 여섯 장면을 골라 보자. 노란 점선은 오른손목의 궤적, 아래 그래프는 손목 속도와 캔의 상태다.
여섯 장면은 실제 영상이 아니라 관절 각도를 시간에 따라 바꿔 만든 합성 데이터다. 키를 1로 잰 단위(키 1.7m 기준)를 쓰고, 던진 캔은 중력을 받아 포물선으로 날아간다. 코드 1의 함수와 이 그림은 같은 계산이다. 실제 영상이라면 섹션 3의 포즈 추정이 프레임마다 이 좌표를 만들어 준다.
1,196개 숫자를 사람이 고른 특징 4개로 줄인다. 그다음 두 가지로 판정한다. 사람이 정한 규칙, 그리고 데이터로 배운 모델. 기준값을 움직여 규칙이 어디서 틀리는지 찾아보자.
여섯 장면을 속도(×0.8~1.25)·위치·동작 크기(×0.75~1.25)를 바꿔 학습 600개, 시험 300개 만들고, 관절 좌표에 떨림(포즈 추정 오차)을 더했다. 정답은 결과로 정한다: 캔이 쓰레기통 밖 땅에 남으면 투기. 그래서 "멀리 던지기"도 세게 던져 통에 들어가면 정상이다(시험의 던지기 중 52%만 투기). 칸의 숫자는 그 장면을 투기로 판정한 비율이고, 정답과 5%p 넘게 다르면 빨갛게 표시했다.
규칙 1 (60.7%): 손 흔들기의 94%를 투기로 잡았다(헛경보). 천천히 떨어뜨린 투기는 98% 놓쳤다.
규칙 2 (76.7%): "놓았나"를 더해 손 흔들기 헛경보는 사라졌다. 그러나 떨어뜨리기는 여전히 놓치고, 통에 던져 넣은 정상 장면까지 투기로 잡는다.
특징 4개 + 로지스틱 회귀 (99.7%): 학습한 가중치는 [속도 −0.33, 놓음 1.16, 통과의 거리 3.93, 멀어짐 1.19]다. 손목 속도에는 오히려 작은 음수가 붙었다. 모델이 고른 가장 강한 단서는 "캔이 통 밖 땅에 남았나"다.
좌표를 그대로 넣은 MLP (92.3%): 던지는 "모양"은 배웠지만 통에 들어간 던지기에도 경보를 울렸다(헛경보 19개). 물체 좌표 2개를 더해도 좋아지지 않았다. 1,288개 숫자 속에서 "마지막 프레임의 캔 x좌표가 통 밖인가"를 학습 600개만으로 찾아내기는 어렵다.
코드 2의 로지스틱 회귀가 배운 가중치를 그대로 쓴다. 지금까지 본 프레임만으로 특징 4개를 다시 계산해 점수를 매긴다. 0.6 이상이면 경보, 0.4~0.6이면 판정보류로 사람에게 넘긴다.
헛경보는 죄 없는 사람을 의심하게 만들고, 놓침은 단속을 무력하게 만든다. 두 실수의 무게가 다르므로 기준을 하나로 정하기 어렵다. 그래서 점수가 애매한 구간(여기서는 0.4~0.6)은 자동으로 판정하지 않고 관제 요원이 영상을 직접 보게 한다. AI는 "어느 화면을 먼저 볼지" 순서를 정해 주는 데까지 쓰고, 최종 판단과 책임은 사람이 진다. "무작위 장면"을 여러 번 눌러 통에 들어간 던지기, 약하게 던진 던지기를 찾아보자.
막대 인형과 특징 4개는 이해하기 쉽고 가볍다. 그만큼 놓치는 것도 분명하다.
두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.
관절 각도로 막대 인형을 그리는 함수(fk), 여섯 장면, 특징 4개를 계산한다. 섹션 5 위쪽 표와 같은 숫자가 나온다. 내 데이터로 바꾸려면 clip()이 돌려주는 관절 좌표 자리에 포즈 추정 도구가 낸 좌표를 넣고, 사람 키가 1이 되도록 나눈다.
장면을 바꿔 가며 학습 600개·시험 300개를 만들고 규칙 2개, 로지스틱 회귀, MLP 2개를 비교한다. 섹션 5의 실험표와 섹션 6 관제실의 가중치가 이 출력에서 바로 만들어진다.
ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.
AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 실제 사람이 나오는 영상을 쓸 때는 촬영 동의와 개인정보 처리 규정을 먼저 확인한다.
본문의 노란 점선 밑줄과 같은 사전이다. 섹션 이름을 누르면 처음 나온 곳으로 간다.
비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 사람의 지각과 견준 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음
| 개념 | 일상 비유 | 사람의 지각 비유 | 비유가 틀리는 지점 |
|---|---|---|---|
| 객체 검출 | 사진 속 사람마다 포스트잇을 붙이기 | 부분 한눈에 "저기 사람이 있다"를 알아채는 것 | 포스트잇은 사람이 정확히 붙이지만, 검출기는 확신도와 함께 틀린 상자도 낸다 |
| 포즈 추정 | 사진 위에 철사 인형을 겹쳐 놓기 | 부분 점 몇 개의 움직임만 보고도 걷는 사람을 알아보는 능력(점광원 보행) | 사람은 가려진 팔도 짐작하지만, 포즈 추정은 가려지면 엉뚱한 곳에 점을 찍거나 빼먹는다 |
| 특징 | 범인 몽타주의 "키·옷차림·걸음걸이" 항목 | 없음 | 몽타주 항목은 사람이 고른다. 좌표를 그대로 학습하는 모델은 항목을 스스로 만든다(섹션 5의 MLP) |
| 규칙 기반 | "뛰는 사람은 수상하다"는 경비원의 어림짐작 | 없음 | 경비원은 맥락을 보고 어림짐작을 고치지만, 규칙은 정한 조건 밖의 장면에서 그대로 틀린다 |
| 판정보류 | 심판의 비디오 판독 요청 | 없음 | 비디오 판독은 드물게 쓰지만, 보류 구간을 넓히면 관제 요원의 일이 다시 늘어난다 |
E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림과 숫자의 출처
강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.
| 대상 | 영상 AI를 처음 접하는 대학생·직장인. 공공 안전, 시설 관리, 매장 운영에서 CCTV 분석 도입을 검토하는 실무자 |
|---|---|
| 선수 지식 | 사진이 숫자 행렬이라는 것(4-2), 좌표와 거리 계산(피타고라스), 정확도의 뜻 |
| 학습 목표 | ① CCTV 영상 → 객체 검출 → 포즈 추정 → 특징 → 판정의 흐름을 설명한다 ② 규칙과 학습이 각각 어떤 장면에서 틀리는지 예를 든다 ③ 헛경보와 놓침, 판정보류, 개인정보를 함께 고려한 운영안을 제시한다 |
| 예상 시간 | 읽기 35~45분 · 애니메이션 시연 20분 · Colab 실습 25분 (코드 1 10분, 코드 2 실행 1분 + 해석 14분) |
도입 5분(섹션 1 신고) → 섹션 2·3 화면에서 막대 인형까지 12분 → 섹션 4 여섯 장면 8분 → 섹션 5 규칙 기준값 실험 10분 → 섹션 6 관제실 10분 → 확인 문제 5분.
섹션 1·3 15분 → 섹션 5 실험표를 우리 현장의 헛경보 비용으로 다시 읽기 20분 → 섹션 6 판정보류 구간 정하기 토론 15분 → 섹션 7 법·편향 점검표 만들기 15분 → 코드 2 실행·해석 25분.
입문자는 섹션 2·3·5 위쪽 표·6만. 중급자는 코드 1의 features 함수를 손으로 따라가게 한 뒤, 새 특징(예: 손과 쓰레기통의 최소 거리)을 하나 더해 코드 2에서 성적을 비교하게 한다.
| 섹션 | 멈춰서 물어볼 질문 | 조작 팁 |
|---|---|---|
| 2 화면은 숫자 | "숫자 6백만 개 중 사람은 어디에 있나?" | "숫자로 보기"에서 칸 크기를 64 → 16으로 줄여 본다 |
| 3 사람 찾기 | "막대만 남기면 무엇을 잃고 무엇을 지키나?" | 프라이버시 모드를 켠 채로 다음 섹션으로 넘어간다 |
| 4 시간으로 | "손 흔들기와 던지기의 그래프는 어디가 다른가?" | 두 장면을 번갈아 눌러 노란 선의 높이를 비교한다 |
| 5 규칙 대 학습 | "기준값을 어디에 두면 여섯 장면을 모두 맞힐 수 있나?" | 슬라이더를 끝까지 움직여 "없다"를 확인하고 실험표로 넘어간다 |
| 6 관제실 | "점수가 갑자기 오르는 프레임에서 무슨 일이 있었나?" | 떨어뜨리기를 재생하며 캔이 땅에 닿는 순간 멈춘다 |
| 7 한계 | "AI가 경보를 울렸다면 바로 과태료를 매겨도 될까?" | 판정보류와 사람의 최종 확인을 연결한다 |
| 오해 | 바른 설명 | 보여 줄 장면 |
|---|---|---|
| AI가 CCTV 화면을 사람처럼 "본다" | 숫자 격자를 받아 단계마다 계산한다. 사람·쓰레기통이라는 이름표는 검출 모델이 붙인다 | 섹션 2 "숫자로 보기" |
| 빠르게 팔을 휘두르면 투기다 | 손 흔들기도 빠르고, 떨어뜨리기는 느리다. 결과(물체가 어디 남았나)가 더 강한 단서다 | 섹션 5 규칙 1 |
| 정확도 99.7%면 현장에서도 99.7%다 | 합성 데이터의 결과다. 실제 영상에서는 가림·어둠·여러 사람 때문에 떨어진다 | 섹션 5 아래 설명 3 |
| 좌표를 통째로 넣는 딥러닝이 늘 더 낫다 | 데이터가 적으면 잘 고른 특징 몇 개가 이길 수 있다 | 섹션 5 실험표의 MLP 두 줄 |
| 막대 인형만 저장하면 개인정보 문제가 없다 | 위험을 줄일 뿐 없애지 않는다. 걸음걸이로 사람을 알아볼 수도 있고, 설치·보관 규정은 그대로 지켜야 한다 | 섹션 3 프라이버시 모드, 섹션 7 |
1920 × 1080 × 3 = 6,220,800개. 막대 인형은 13 × 2 = 26개이므로 6,220,800 ÷ 26 ≈ 239,262, 약 24만분의 1이다.
거리 = √(0.12² + 0.08²) ≈ 0.144. 1/15초 동안이므로 0.144 × 15 ≈ 2.16 키/초. 규칙 1의 기준 2.0을 넘는다.
놓침: 발밑에 떨어뜨리기(손목이 느리다). 헛경보: 세게 던졌지만 통 안에 들어간 던지기(빠르고 놓았지만 투기가 아니다).
아니다. 다른 특징(특히 통 밖 거리)이 함께 들어간 상태에서의 몫이다. 통 밖 거리가 이미 투기를 거의 설명하므로, 속도는 손 흔들기처럼 빠르지만 정상인 장면을 조금 눌러 주는 역할만 남았다. 가중치 하나만 떼어 해석하면 안 된다.
판정보류(0.4~0.6)이므로 자동 판정하지 않고 관제 요원에게 영상을 넘긴다. 기준을 하나로 두면 0.52는 곧바로 투기 경보가 되어, 애매한 장면의 헛경보가 그대로 사람에게 돌아간다.
코드 1에 다섯 번째 특징 "캔을 놓은 순간 손과 쓰레기통의 가로 거리"를 더한다. 여섯 장면에서 이 값을 표로 만들고, 넣기와 떨어뜨리기를 가르는 데 도움이 되는지 두 문장으로 설명한다.
코드 2의 make_dataset에서 학습 장면 수를 100 → 25 → 400으로 바꿔 로지스틱 회귀와 "관절+물체+MLP"의 시험 정확도를 비교한다. 데이터 양에 따라 두 방식의 차이가 어떻게 변하는지 그래프로 보고한다.
| 입문자 | 섹션 4의 그래프와 섹션 5의 실험표는 "어느 장면에서 틀렸나"만 읽어도 충분하다 |
|---|---|
| 심화 | MediaPipe로 직접 찍은 짧은 영상(동의를 받은 연기)에서 관절 좌표를 뽑아 코드 1의 features에 넣어 보게 한다 |
| 다음 편 | 5-2 알아보기에서 만들기로 — 같은 특징 표에서 화살표 방향을 뒤집어 동작을 만들어 낸다 |
「5-1 CCTV 쓰레기 투기」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.