

- 스택
- Python · Ultralytics YOLOv11 · OpenCV · 시리얼 아두이노 · AnyLogic 시뮬레이션
- 데이터
- 도시교통정보센터 공개 데이터의 실제 횡단보도 CCTV
- 규칙
- < 1.0 m/s → +5초 · 빨간불 → 차량 황색 · 선 밖 → 경고 · 비어 있음 ∧ > 10초 → 절반
- 결과
- 검출 94% · 속도 오차 8.9% · 직선 가정 5% · 혼잡 −16.4% / +8.7%
- 기간
- 2024 한국코드페어 → 2024년 12월 국가대표 선발 → 2025년 5월 10 – 16일 ISEF
신호는 모두가 1.0 m/s로 걷는다고 가정한다
한국은 OECD에서 노인 보행자 사망률이 가장 높은 초고령 사회이고, 보행자 사망자의 60%가 노인입니다. 신호 시간은 1.0 m/s를 가정하지만 노인은 0.85 m/s, 보행 보조기구를 쓰면 0.73 m/s로 걷습니다. 건너편에 닿기 전에 불이 바뀝니다.
학교 근처 횡단보도에서 그 장면을 직접 본 뒤 이 프로젝트를 시작했습니다.
보행자를 먼저 재고, 그 다음 결정한다
OpenCV가 CCTV 프레임을 받아오고 YOLOv11이 보행자마다 고정 ID로 추적합니다. 원근 변환으로 카메라 시점을 횡단보도의 조감도로 바꾸면, 프레임당 이동 거리에 FPS를 곱해 m/s 단위 속도가 나옵니다.
네 가지 규칙이 시리얼로 연결된 아두이노를 통해 신호를 움직입니다. 누군가의 평균 속도가 1.0 m/s 미만이면 5초 연장, 아무도 건너지 않고 10초 이상 남았으면 남은 시간 절반으로 단축, 빨간불에 건너는 사람이 있으면 차량 신호를 황색으로, 횡단보도 밖에 있는 사람에게는 경고음.
배경
이 프로젝트는 대전의 학교 근처 횡단보도들에서 시작했습니다. 신호가 바뀌었는데 아직 길 위에 계신 어르신들을 보면서요. 한국은 OECD에서 노인 보행자 사망률이 가장 높고, 보행자 사망자의 60%가 노인입니다. 신호 시간은 모두가 초속 1미터로 걷는다고 가정합니다.
한국어 작업명은 신호마에스트로였습니다. 2024 한국코드페어에서 2024년 12월 국가대표 선발을 거쳐, 오하이오 콜럼버스의 Regeneron ISEF 2025에 시스템 소프트웨어 부문 단독 출품작으로 나갔습니다.
횡단보도 카메라의 프레임 하나
OpenCV가 실제 횡단보도 CCTV 영상에서 프레임을 읽습니다. 전국 공개 카메라 데이터에서 가져온 영상입니다.
도시교통정보센터 공개 CCTV · cv2.VideoCapture · 프레임 단위
모든 보행자를 검출하고 추적
사전 학습된 YOLOv11 모델이 사람을 찾고 프레임이 바뀌어도 각자에게 고정 ID를 유지합니다.
yolo11x.pt · 클래스 0 · 지속 추적 ID · 실제 영상에서 정확도 94%
카메라 시점을 지도로
횡단보도의 네 모서리를 클릭해 호모그래피를 정의합니다. 비스듬한 카메라 시점이 한 칸이 1미터인 조감도 격자가 됩니다.
cv2.getPerspectiveTransform · 모서리 4개 → 탑다운 · 직선 이동 가정, 오차 5%
보행자마다 속도 추정
지도 위 프레임당 이동 거리에 프레임 레이트를 곱하면 m/s 속도가 나옵니다. 이상치를 줄이기 위해 ID별 평균을 추적합니다.
v = Δy(m) / Δframe × FPS · 메트로놈에 맞춰 0.5 / 1.0 / 1.5 m/s로 시험 · 오차 8.9%
느린 보행자: 신호 연장
누군가 노인 보행 속도 하위 15%에 해당하는 0.85 m/s로 건너고 있습니다. 1 m/s 미만이면 규칙이 5초를 더합니다.
규칙 1(연장): 평균 속도 < 1.0 m/s → +5초
빈 횡단보도, 빨간불 횡단
아무도 건너지 않고 10초 넘게 남았으면 규칙이 남은 시간을 절반으로 줄입니다. 누군가 빨간불에 나서면 차량 신호가 황색이 되고, 횡단보도 선 밖의 사람에게는 경고음이 울립니다.
규칙 2(침입): 빨간불 횡단 → 차량 황색 · 규칙 3(경계): 횡단보도 밖, 15% 여유 → 경고음 · 규칙 4(단축): 보행자 없음 ∧ 잔여 > 10초 → 절반
아두이노가 신호를 구동
결정은 시리얼로 아두이노에 전달되어 신호등과 7세그먼트 카운트다운을 움직입니다. 시뮬레이션에서 빈 현시를 줄이면 혼잡이 16.4% 줄었고, 연장하면 8.7% 늘었습니다.
Serial 9600 · 25초 카운트다운 표시 · AnyLogic, 교차로 4개, 5시간 실행
- cctv
- 도시교통정보센터 공개 데이터의 실제 CCTV · 테스트 프레임 10장
- yolo
- Ultralytics YOLOv11 (yolo11x) · 사람 클래스만 · 지속 ID 추적
- warp
- 횡단보도 모서리 4개로 호모그래피 · 조감도 격자 · 카메라 왜곡 보정
- speed
- 추적 ID별 평균 속도 · 메트로놈 기준 0.5 / 1.0 / 1.5 m/s 시험
- rules
- 고정 임계값의 규칙 4개 · 모든 결정이 설명 가능, 학습된 정책 없음
- arduino
- 9600 보 시리얼의 아두이노 · 신호등과 7세그먼트 카운트다운
- signal
- 보행자·차량 현시 · 연장, 단축, 또는 강제 황색
콜럼버스, 2025년 5월
실제 횡단보도 영상에서 검출기는 10회 시험 평균 94% 정확도를 기록했고, 속도 추정은 세 가지 보행 속도에서 오차 8.9% 이내였습니다. AnyLogic 시뮬레이션에서 빈 신호를 단축하면 혼잡이 16.4% 줄었고, 느린 보행자를 위해 연장하면 8.7% 늘었습니다.
이 프로젝트는 오하이오 콜럼버스에서 열린 Regeneron ISEF 2025에 시스템 소프트웨어 부문 한국 대표로 참가해 HP 이노베이터 어워드 3위(상금 2,000달러)와 KFUPM 전액 장학금(특별상)을 받았습니다.
먼저 재고, 그다음 결정
뒤의 모든 것은 믿을 수 있는 속도에 달려 있습니다. 원근 변환이 핵심이었습니다. 그것 없이는 카메라 가까이와 멀리의 프레임당 픽셀이 다른 뜻을 가집니다. 변환하면 미터 단위 이동 거리가 바로 나오고, 네 가지 규칙이 물리적 임계값을 쓸 수 있습니다.
규칙은 일부러 단순하고 고정했습니다. 도시 엔지니어가 1분이면 읽을 수 있고, 반박할 수도 있습니다. 학습된 정책이었다면 교통 신호에 서명해야 하는 사람들 앞에서 방어하기 훨씬 어려웠을 것입니다.
숫자가 말하는 것
실제 CCTV 프레임 10장에서 검출 오차는 평균 6.3%였고, 포스터에는 정확도 94%로 적었습니다. 세 가지 보행 속도에서 속도 추정은 평균 8.9% 이내였으며, 가장 느린 속도에서 가장 컸습니다. 직선 횡단을 가정하면 대각선 경로에서 약 5% 오차가 생깁니다.
AnyLogic에서 교차로 4개, 5시간 실행 기준으로 보행자 현시를 50초 대신 40초로 하면 혼잡이 16.4% 줄었고, 60초로 하면 8.7% 늘었습니다. 교환 조건은 분명합니다. 운전자의 약간의 지연과, 가장 느린 보행자의 안전한 횡단.
콜럼버스, 2025년 5월
이 프로젝트는 Regeneron ISEF 2025 시스템 소프트웨어 부문에 부스 SOFT030으로 한국 대표로 참가해, HP 이노베이터 어워드 3위(상금 2,000달러)와 KFUPM 전액 장학금(특별상)을 받았습니다.
실제 배치에 필요한 것
카메라 각도, 조명, 날씨가 모두 검출 품질을 바꾸고, 횡단보도를 실제로 비추는 카메라가 있어야 합니다. 포스터의 다음 단계는 여전히 유효합니다. 임계값 검증, 더 느린 보행자를 대상으로 한 현장 시험, 그리고 독립 제어기가 아닌 지능형 교통 시스템과의 통합.
- 스택
- Python · Ultralytics YOLOv11 · OpenCV · 시리얼 아두이노 · AnyLogic 시뮬레이션
- 데이터
- 도시교통정보센터 공개 데이터의 실제 횡단보도 CCTV
- 규칙
- < 1.0 m/s → +5초 · 빨간불 → 차량 황색 · 선 밖 → 경고 · 비어 있음 ∧ > 10초 → 절반
- 결과
- 검출 94% · 속도 오차 8.9% · 직선 가정 5% · 혼잡 −16.4% / +8.7%
- 기간
- 2024 한국코드페어 → 2024년 12월 국가대표 선발 → 2025년 5월 10 – 16일 ISEF
- 수상
- Regeneron ISEF 2025 파이널리스트(SOFT030) · HP 이노베이터 어워드 3위 · KFUPM 전액 장학금(특별상)
- 크레딧
- 단독 프로젝트 · 대전외국인학교(TCIS)



