반응형
안녕하세요! ✨
앞서 Day 14에서는 OpenCV를 활용한 차선 검출 실습을 진행했습니다.
오늘은 자율주행과 컴퓨터 비전에서 가장 중요한 기술 중 하나인 객체 검출(Object Detection) 의 기초를 배워보겠습니다.
🔍 객체 검출이란?
객체 검출은 이미지나 영상 속에서 사람, 차량, 신호등, 표지판 등 특정 객체를 찾아내는 기술입니다.
자율주행차에서는 보행자 안전, 차량 인식, 교통 표지판 판별 등에 핵심적으로 사용됩니다.
👉 오늘은 대표적인 전통 알고리즘 두 가지를 다뤄봅니다.
- Haar Cascade Classifier
- HOG + SVM (Histogram of Oriented Gradients + Support Vector Machine)
📡 1. Haar Cascade Classifier
OpenCV에서 제공하는 Haar Cascade는 머신러닝 기반 객체 검출 기법입니다.
- 특징(Features): 사각형 영역 내 픽셀 밝기 차이를 이용
- 훈련 데이터: 수천 장의 양성(Positive) & 음성(Negative) 이미지로 학습
- 장점: 빠르고 가볍다
- 단점: 복잡한 배경에서는 정확도가 낮음
OpenCV 코드 예제
python
import cv2
# 얼굴 검출용 Haar Cascade 로드
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
img = cv2.imread('people.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Detected Faces', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 얼굴 검출용 Haar Cascade 로드
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
img = cv2.imread('people.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Detected Faces', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
👉 결과: 이미지 속 사람 얼굴을 사각형 박스로 표시
📡 2. HOG + SVM
HOG(Histogram of Oriented Gradients)는 이미지의 방향성 특징(Gradient)을 추출하는 방법입니다.
SVM(Support Vector Machine)은 이를 학습해 객체 여부를 판별합니다.
- 장점: 보행자 검출(Pedestrian Detection)에 강점
- 단점: 딥러닝 대비 정확도는 낮지만, 여전히 빠른 검출에 활용
OpenCV 코드 예제
python
import cv2
# 보행자 검출기 초기화 (HOG + SVM)
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
img = cv2.imread('street.jpg')
# 보행자 검출
(rects, weights) = hog.detectMultiScale(img, winStride=(4, 4), padding=(8, 8), scale=1.05)
for (x, y, w, h) in rects:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('Detected Pedestrians', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 보행자 검출기 초기화 (HOG + SVM)
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
img = cv2.imread('street.jpg')
# 보행자 검출
(rects, weights) = hog.detectMultiScale(img, winStride=(4, 4), padding=(8, 8), scale=1.05)
for (x, y, w, h) in rects:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('Detected Pedestrians', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
👉 결과: 도로 위 보행자를 녹색 사각형 박스로 검출
🚘 자율주행에서의 의미
- Haar Cascade: 얼굴, 신호등, 표지판 검출
- HOG + SVM: 보행자 인식, 도로 안전 시스템
- 딥러닝 등장 전까지 핵심 기술로 활용되었으며, 지금도 가볍고 빠른 검출이 필요한 곳에서 쓰임
📌 정리
- 객체 검출은 자율주행의 안전과 인식의 기초
- Haar Cascade: 빠르고 간단하지만 배경에 약함
- HOG + SVM: 보행자 검출에 강점, 딥러닝 이전 세대의 대표적 방법
- 현재는 딥러닝 기반(YOLO, Faster R-CNN 등)으로 확장되지만, 기초 알고리즘 이해는 여전히 중요
반응형
🚀 다음 글 예고
다음 글에서는 [Day 16: 초음파 센서 원리 및 주차 보조 사례] 를 다룹니다.
자율주행차에서 근거리 탐지와 주차 지원에 사용되는 초음파 센서의 원리를 살펴보겠습니다.
✅ 오늘 글이 도움이 되셨다면 좋아요와 공유 부탁드립니다.
반응형
'자율주행' 카테고리의 다른 글
📡 Day 17: 초음파 센서 ROS2 연동 (0) | 2025.09.13 |
---|---|
📡 Day 16: 초음파 센서 원리 및 주차 보조 사례 (0) | 2025.09.12 |
🛣️ Day 14: 차선 검출 실습 (OpenCV) (0) | 2025.09.10 |
🎥 Day 13: 영상 처리 기초 (Canny Edge, Hough Transform) (0) | 2025.09.09 |
📸 Day 12: 카메라 캘리브레이션 (OpenCV 실습) (0) | 2025.09.08 |