

- Stack
- Python · Ultralytics YOLOv11 · OpenCV · Arduino over serial · AnyLogic simulation
- Data
- Real crosswalk CCTV from the Urban Traffic Information Center open data feed
- Rules
- < 1.0 m/s → +5 s · on red → vehicle yellow · outside lines → alert · empty ∧ > 10 s → halve
- Results
- Detection 94% · speed error 8.9% · straight-line assumption 5% · congestion −16.4% / +8.7%
- Timeline
- 2024 Korea Code Fair → national selection Dec 2024 → ISEF May 10–16, 2025
Signals assume everyone walks at 1.0 m/s
Korea is a super-aged society with the highest elderly pedestrian fatality rate in the OECD, and the elderly are 60% of pedestrian deaths. Signal timing assumes 1.0 m/s; older adults walk at 0.85, or 0.73 with a mobility aid. The light turns before they reach the other side.
I started the project after watching it happen at a crossing near my school.
Measure the walker, then decide
OpenCV captures the CCTV frame and YOLOv11 tracks each pedestrian with a stable ID. A perspective transform turns the camera view into a bird’s-eye map of the crosswalk, so displacement per frame times FPS gives speed in metres per second.
Four rules drive the signal through an Arduino over serial: extend by five seconds if anyone’s average speed is under 1.0 m/s; halve the remaining time if no one is crossing and more than ten seconds remain; switch vehicles to yellow if someone crosses on red; sound an alert for anyone outside the crosswalk.
Context
The project started at crossings near my school in Daejeon, watching older pedestrians still in the road when the light changed. Korea has the highest elderly pedestrian fatality rate in the OECD, and the elderly are sixty percent of pedestrian deaths. Signal timing assumes everyone walks at one metre per second.
The Korean working name was 신호마에스트로. It went from the 2024 Korea Code Fair through national selection in December 2024 to Regeneron ISEF 2025 in Columbus, Ohio, as a solo entry in Systems Software.
A frame from the crosswalk camera
OpenCV reads a frame from real crosswalk CCTV footage, pulled from the national open camera data feed.
Open Data CCTV (Urban Traffic Information Center) · cv2.VideoCapture · frame by frame
Detect and track every pedestrian
A pretrained YOLOv11 model finds people and keeps a stable id on each one across frames.
yolo11x.pt · class 0 · persistent tracking ids · 94% accuracy on real footage
Turn the camera view into a map
Four clicked corners of the crosswalk define a homography. The slanted camera view becomes a bird’s-eye grid where one cell is one metre.
cv2.getPerspectiveTransform · 4 corners → top-down · straight-line assumption, 5% error
Estimate each walker’s speed
Displacement per frame on the map, times the frame rate, gives speed in metres per second. The average is tracked per id to smooth outliers.
v = Δy(m) / Δframe × FPS · tested at 0.5 / 1.0 / 1.5 m/s to a metronome · 8.9% error
Slow walker: extend the signal
Someone is crossing at 0.85 m/s, the 15th-percentile walking speed of older adults. Under one metre per second, the rule adds five seconds.
rule 1 (extension): avg speed < 1.0 m/s → +5 s
Empty crossing, red-light crosser
Nobody is crossing and more than ten seconds remain: the rule halves the remaining time. Someone steps out on red: vehicles get yellow and an alert sounds for anyone outside the crosswalk lines.
rule 2 (intrusion): pedestrian on red → vehicle yellow · rule 3 (boundary): outside crosswalk, 15% margin → audible alert · rule 4 (reduction): no pedestrian ∧ remaining > 10 s → halve
Arduino drives the light
Decisions go to an Arduino over serial, which runs the signal and a seven-segment countdown. In simulation, shortening empty phases cut congestion by 16.4 percent; extending them cost 8.7.
Serial 9600 · 25 s countdown display · AnyLogic, 4 intersections, 5-hour runs
- cctv
- Real CCTV from the Urban Traffic Information Center open data feed · 10 test frames
- yolo
- Ultralytics YOLOv11 (yolo11x) · person class only · tracking with persistent ids
- warp
- Homography from four crosswalk corners · bird’s-eye grid · corrects camera distortion
- speed
- Average speed per tracked id · metronome-paced trials at 0.5 / 1.0 / 1.5 m/s
- rules
- Four rules with fixed thresholds · all decisions are explainable, no learned policy
- arduino
- Arduino over serial at 9600 baud · signal lights and 7-segment countdown
- signal
- Pedestrian and vehicle phases · extend, shorten, or force yellow
Columbus, May 2025
On real crosswalk footage the detector reached 94% accuracy over ten trials; speed estimation came within 8.9% across three walking speeds. In AnyLogic, shortening empty signals cut congestion by 16.4%, and extending them for slow walkers cost 8.7%.
The project represented Korea at Regeneron ISEF 2025 in Columbus, Ohio, in the Systems Software category, and received the HP Innovator Award (3rd place, $2,000) and a KFUPM full scholarship (special award).
Measure first, then decide
Everything downstream depends on a trustworthy speed. The perspective transform was the key step: without it, pixels per frame near the camera and far from it mean different things. With it, displacement in metres falls out directly and the four rules can use physical thresholds.
The rules are deliberately simple and fixed. A city engineer can read them in a minute, and they can be argued with. A learned policy would have been harder to defend to the people who have to sign off on a traffic signal.
What the numbers say
Detection on ten real CCTV frames averaged a 6.3 percent count error, which the poster reports as 94 percent accuracy. Speed estimation across three paced walking speeds came within 8.9 percent on average, worst at the slowest speed. Assuming straight-line crossings introduces about five percent error on diagonal paths.
In AnyLogic, across four intersections and five-hour runs, a 40-second pedestrian phase instead of 50 reduced congestion by 16.4 percent, and a 60-second phase increased it by 8.7. The trade is explicit: a little delay for drivers, a safe crossing for the slowest walker.
Columbus, May 2025
The project represented Korea at Regeneron ISEF 2025 in Systems Software, booth SOFT030, and received the HP Innovator Award, third place with a $2,000 prize, and a KFUPM full scholarship (special award).
What a real deployment would need
Camera angle, lighting and weather all change detection quality, and the system needs a camera that actually covers the crosswalk. The next steps on the poster still stand: validating the thresholds, field tests with slower pedestrians, and integration with an intelligent transport system rather than a standalone controller.
- Stack
- Python · Ultralytics YOLOv11 · OpenCV · Arduino over serial · AnyLogic simulation
- Data
- Real crosswalk CCTV from the Urban Traffic Information Center open data feed
- Rules
- < 1.0 m/s → +5 s · on red → vehicle yellow · outside lines → alert · empty ∧ > 10 s → halve
- Results
- Detection 94% · speed error 8.9% · straight-line assumption 5% · congestion −16.4% / +8.7%
- Timeline
- 2024 Korea Code Fair → national selection Dec 2024 → ISEF May 10–16, 2025
- Recognition
- Regeneron ISEF 2025 finalist (SOFT030) · HP Innovator Award, 3rd place · KFUPM full scholarship (special award)
- Credit
- Solo project · Taejon Christian International School



