단계 9 — YOLO 객체 감지 (심화)

차시 3차시 · 선수 학습 단계 8

이번 단계 목표 사전학습된 YOLO 모델로 신호등·보행자를 인식하고, 자율주행에 안전 로직을 통합한다.

1. 학습 목표

2. 이론

2-1. 객체 감지란?

작업출력
분류(Classification)"이 그림은 고양이"
객체 감지(Detection)"이 그림의 (x=100, y=50, w=80, h=120) 영역에 고양이"
분할(Segmentation)"이 그림에서 고양이 픽셀 마스크"

자율주행에는 객체 감지가 핵심입니다. "어디에 무엇이 있는지" 알아야 충돌을 피합니다.

2-2. YOLO

YOLO(You Only Look Once): 영상을 한 번만 처리해 모든 객체의 클래스와 위치를 동시에 출력하는 모델 계열.

본 프로젝트는 YOLOv8n (n = nano, 가장 작은 버전)을 사용:

2-3. 사전학습 모델

직접 학습 없이 사전학습된 가중치를 다운로드해 바로 사용:

from ultralytics import YOLO
model = YOLO('yolov8n.pt')  # 첫 실행 시 자동 다운로드 (약 6MB)

results = model(frame)
for box in results[0].boxes:
    cls  = int(box.cls)         # 클래스 ID
    conf = float(box.conf)      # 신뢰도 (0~1)
    x1, y1, x2, y2 = box.xyxy[0]  # 좌상-우하 좌표

2-4. 자율주행 안전 로직

python/object_detector.py는 다음 규칙을 적용:

감지 객체동작
빨간 신호등즉시 정지
정지 표지판정지
보행자(가까움)즉시 정지
자전거·오토바이정지
차량(가까움)50% 감속
차량(멀음)70% 속도
if detection['red_light'] or detection['stop_sign']:
    speed = 0
elif detection['person'] or detection['bicycle']:
    speed = 0
elif detection['vehicle']:
    if detection['vehicle_distance'] == 'near':
        speed = base_speed * 0.5
    else:
        speed = base_speed * 0.7
else:
    speed = base_speed

2-5. 신호등은 왜 어려운가?

3. 활동

활동 8-A: 첫 YOLO 추론 ⭐ Easy

pip install ultralytics
from ultralytics import YOLO
import cv2

model = YOLO('yolov8n.pt')

img = cv2.imread('test.jpg')
results = model(img)

# 결과 시각화
annotated = results[0].plot()
cv2.imshow('YOLO', annotated)
cv2.waitKey(0)

미션

활동 8-B: 통합 자율주행 ⭐⭐ Standard

학생용 프로그램 단계9_미니자율주행.py를 실행:

  1. 차선 추종 + YOLO 객체 감지 통합
  2. 보행자 인형 또는 종이 사람 인쇄물을 차선 위에 두면 차량이 정지하는지 확인

관찰

활동 8-C: 모델 한계 탐구 ⭐⭐⭐ Challenge

YOLO가 잘 못하는 상황을 찾아보자.

시나리오결과 (잘 됨/못 됨)원인 추정
어두운 곳의 보행자
옆모습만 보이는 사람
부분적으로 가려진 차량
그림자 속 정지 표지판

고찰

4. 학급 토론 — T 역량 활동

1) 책임 소재

자율주행차가 사고를 내면 누구의 책임? — 제조사, 소프트웨어 개발자, 운전자, 보험사

2) 트롤리 딜레마의 현대판

보행자 1명을 보호하면 차량 탑승자 3명이 위험할 때, AI는 누구를 살려야 하는가? 정답이 있는가? 누가 결정해야 하는가?

3) 사회적 약자 이동권

시각장애인·고령자에게 자율주행은 어떤 가능성을 열어주는가? 동시에 어떤 새로운 위험이 생기는가?

4) 일자리와 사회 변화

택시·트럭 기사 직업의 미래 / 도시 설계의 변화 (주차장, 신호등, 차로)


모둠별 입장 정리

  1. 모둠별로 위 4개 주제 중 하나 선정
  2. 찬·반 입장 정리 (각 3가지 근거)
  3. 학급 발표 → 질의응답

5. 최종 시연·발표회

발표 형식

팀당 7분 (시연 3분 + 발표 3분 + Q&A 1분)

발표 구성

  1. 우리 팀의 차량 소개 (이름·콘셉트)
  2. 가장 도전적이었던 단계와 해결 과정
  3. 자율주행 시연 (1회 완주)
  4. ACT 역량(자기주도성·창의·시민성)을 발휘한 순간
  5. 더 발전시키고 싶은 아이디어

평가 항목

항목배점
자율주행 동작 성공도30
도전 과정 설명의 명료성20
ACT 역량 사례의 구체성20
확장 아이디어의 창의성15
청중을 배려한 발표 태도15

6. 핵심 개념 정리

개념설명
객체 감지영상에서 객체의 클래스+위치 추출
YOLO한 번의 추론으로 모든 객체 감지
사전학습미리 학습된 가중치를 그대로 사용
신뢰도(confidence)모델이 그 결과를 얼마나 확신하는지
안전 로직감지 결과에 따라 차량 동작 결정
자율주행 윤리책임·딜레마·이동권·일자리 문제

7. 자기평가

항목12345
YOLO를 이용해 객체를 감지할 수 있다
객체 감지를 안전 로직에 연결할 수 있다
자율주행의 사회적 함의에 대해 의견을 가진다
최종 발표에 적극적으로 기여했다

8. 더 나아가기

자율주행은 한 학기 프로젝트의 끝이지만, AI 학습의 시작입니다.