얼굴 인식에 사용되는 주요 알고리즘
1. Eigenfaces (PCA 기반)
- 주성분 분석을 사용해 얼굴의 특징을 추출
- 차원 축소에 효과적이지만 조명 변화에 민감
2. Fisherfaces (LDA 기반)
- 선형 판별 분석(LDA)을 사용
- 클래스 간 분산을 최대화하고 클래스 내 분산을 최소화
- Eigenfaces보다 조명 변화에 강인함
3. SIFT(Scale Invariant Feature Transform)
- 스케일과 회전에 불변한 특징점을 추출
- 부분적 가림에 강인하지만 계산 비용이 높음
4. SURF(Speeded Up Robust Features)
- SIFT를 개선한 알고리즘으로 속도가 더 빠름
- 특징점 추출과 매칭에 효과적
5. 딥러닝 기반 방법
- CNN(Convolutional Neural Networks)을 사용
- FaceNet, DeepFace 등의 모델이 높은 정확도를 보임
- 대량의 데이터로 학습 필요
6. 3D 얼굴 인식
- 3D 스캐너로 얼굴의 기하학적 구조를 분석
- 조명과 포즈 변화에 강인하지만 특수 장비 필요
LBPG (Local Binary Pattern Histogram)
텍스처 분석을 위해 개발된 LBP에서 파생
얼굴 인식에 효과적으로 사용되는 방법
LBPG 원리
- 중심 픽셀과 주변 픽셀을 비교
- 이진 패턴 생성 과정을 도식화한 것
LBPG 작동 방식
- 이미지 분할
- LBP 연산 적용
- 히스토그램 계산
- 특징 벡터 생성
장점
- 조명 변화에 강인
- 계산 속도가 빠름
- 단순하고 효과적
단점
- 얼굴의 크기 변화에 민감
- 회전된 얼굴에 대한 인식률 저하
LBPH의 사용 사례
1. 드론을 이용한 도난 방지 시스템
- 드론에 탑재된 카메라로 실시간 영상 촬영
- Haar Cascade 분류기를 사용한 얼굴 검출
- LBPH 알고리즘을 통한 얼굴 인식 (약 89.1% 정확도)
- GPS 모듈을 통한 위치 정보 전송
- 라즈베리 파이를 이용한 온보드 처리
주요 기능
- 실시간 영상에서 얼굴 검출
- 검출된 얼굴을 사전 훈련된 데이터셋과 비교
- 신뢰도 50% 이상일 경우 인물 식별 및 태깅
- 식별된 인물의 위치 정보 전송
2. 사이버 보안을 위한 얼굴 인증 시스템
주요 기능
- Python의 Tkinter 라이브러리로 GUI 제작
- 얼굴 데이터 캡처, 저장 및 처리, 인식, 인증 기록 등의 기능이 포함
3. 짐바브웨의 실종자 찾기 시스템
- 실종자를 찾는 기존 방법(미디어 활용 등)의 한계를 극복하기 위해 얼굴 인식 기술 활용 제안
- LBPH 알고리즘을 사용한 실종자 찾기 시스템 프로토타입 개발
- MySQL 데이터베이스와 OpenCV 라이브러리 사용
- 얼굴 인식률은 평균 67.5%
- 실종자 찾기에 얼굴 인식 기술 활용이 효율적이고 정확함을 확인
- 향후 DSP 프로세서나 라즈베리 파이 등을 활용한 개선 가능성 제시
- 실시간 위치 추적, 출석 시스템, 범죄 수사 등으로 응용 분야 확장 가능
4. 그 외
- 직장 보안 시스템
- 오픈소스 얼굴 인식 애플리케이션
Object Detection vs Object Tracking
Object Detection
이미지나 동영상에서 객체의 종류와 그 위치를 정확하게 찾기 위한 컴퓨터 비전 기술
(예: 객체 종류 예측)
Object Tracking
영상에서 객체의 위치 변화를 찾는 컴퓨터 비전 기술
(예: 실시간 영상 보안, 영상 통화, 교통 통제, 증강 현실)
Object Detection vs Object Tracking
Obejct Detection | Object Tracking | |
주요 역할 | 여러 프레임에 걸쳐 객체의 움직임을 추적 | 이미지나 프레임에서 객체 식별 |
처리 방식 | 후속 프레임에서 목표 객체의 위치를 추정 | 각 이미지나 프레임을 독립적으로 처리 |
기능 | 비디오 스트림이나 영상에서 객체를 식별하고 추적 | 신경망이 비디오나 이미지에서 객체를 찾아 목표 객체로 식별 |
데이터 분석 방식 | 시각 데이터를 분석하여 여러 프레임을 통해 객체의 움직임을 추적 | 시각적 데이터를 분석하여 객체의 위치를 파악 |
연관성 | 객체 탐지 이후 목표 객체를 추적하는 단계 | 객체 추적의 초기 단계로 사용 |
Object Tracking 유형
1. Video Tracking
1-1. Visual Tracking
영상의 나머지 부분이 없는 상태에서 초기화된 시각적 대상의 미래 위치를 추정하는 것
2. Image Tracking
Object Tracking Level
1. Simple Object Tracking 단일 객체 추적
- 첫번째 frame에 특정된 단 하나의 Object만을 추적해야 함
- Target object 이외에 다양한 object 들이 등장할 수 있음
2. Multiple Object Tracking 다중 객체 추적
- 가장 일반적인 유형, 여러 개의 object를 동시에 추적해야 함
- SoTA로는 DEFT, CenterTrack, SRK ODESA 등이 있음
Object Tracking 응용 사례
1. 비디오 감시
- 실시간 객체 추적
- 팬데믹 기간 동안 모니터링에 많이 쓰임
- 범죄 예방
2. 자율주행
- 장애물 감지, 보행자 감지, 궤적 추정
- 차량 속도 추정, 교통 모니터링, 경로 추정 등
3. 증강 현실
- 가상 피팅(의류 착용 시뮬레이션)
- 스마트 홈 가구 배치
- 포켓몬 GO와 같은 AR 게임
- AR 내비게이션
- 의료 교육 및 기계 유지 보수 훈련
4. 스포츠
- Sports MOT
- 대한민국 양궁에서도 쓰임
Object Tracking 기본 원리
1. 초기화 : 첫 프레임에서 객체 위치 지정
2. 예측 : 이전 정보를 바탕으로 다음 프레임에서의 위치 예측
3. 업데이트 : 실제 위치와 비교해서 모델 업데이트
Object Tracking 4단계 프로세스
1. 대상 초기화
- 대상 또는 타겟을 정리
- 초기 프레임에 객체 주위에 경계 상자를 그림
2. 외관 모델링
- 객체의 시각적 외관을 모델링
- 시각적 표현: 객체를 설명할 수 있는 특징과 표현 구축에 중점
- 통계적 모델링: 객체 식별을 위한 수학적 모델 구축
3. 모션 추정
- 물체의 미래 위치를 예측하기 위해 모델의 예측 기능을 유추
4. 대상 위치 추정
- 물체가 존재할 가능성이 가장 높은 영역의 근사치 추정
- 물체의 위치가 근사화 되면 비주얼 모델을 사용하여 대상의 정확한 위치를 고정
Object Tracking의 해결 과제
1. 컴포넌트 및 비디오 스트리밍 특성
- 객체의 속도가 빠를 수록 흐릿하게 보일 수 있음
- 속도가 느리면 이미지가 어두워질 수도 있음
2. 다양한 객체 크기
- 객체의 크기가 다양하거나, 카메라에 가까워지거나 멀어질 때의 크기가 달라짐
3. 가림 현상(Occlusion)
4. 복잡한 배경(Background Clutter)
주요 객체 트래킹 알고리즘
1. OpenCV(OpenSource Computer Vision)
- 객체나 움직임을 추적하기 위한 OpenCV 내장 알고리즘 집합
- 다양한 추적기 제공
- 실시간 객체 추적에 최적화
- 주요 알고리즘 (KCF, CSRT, MOSSE, GOTURN)
알고리즘 | 장점 | 단점 |
KCF | 높은 FPS | 낮은 정확도 |
CSRT | 높은 정확도 | 낮은 FPS |
MOSSE | 매우 빠른 속도 | 낮은 정확도 |
GOTURN | 복잡한 객체 추적 | 높은 연산 요구 |
2. DeepSORT
- Appearance 정보를 통합한 객체 추적 프레임 워크
- 외형 정보 통합을 통해 장기간 가려진 상태에서도 객체 추적 가능
- 장점: 긴 시간 동안 객체 추적 가능, 객체의 ID 전환 횟수 최소화
- 단점: 객체의 외형 정보에 의존하므로 유사한 객체 구분 어려움
- 최적화 방법: 정확한 외형 특징 추출 및 딥러닝 기반 모델을 결합하여 성능 최적화 가능
3. MATLAB 객체 추적 알고리즘
- 수치 계산 및 시각적 분석을 위한 Matlab 기반의 비디오 추적 알고리즘
- CAMShift: 연속 적응형 평균 이동 기반 추적
- KLT: Kanade-Lucas-Tomasi 알고리즘을 사용한 단일 객체 추적
- 장점: 간단한 환경에서 신속한 추적 가능, Matlab의 도구 상자를 이용해 다양한 추가 기능과 함께 사용 가능
- 단점: 복잡한 객체 또는 다중 객체 추적에서는 성능이 떨어짐
- 최적화 방법: 추적기에 MATLAB 추가 도구 결합
4. MDNet 알고리즘(Multi-Domain Net)
- R-CNN 기반 CNN 객체 추적 알고리즘
- CNN 기반 후보 영역 샘플링
- Rol Pooling 사용으로 인한 효율화
- 장점: 높은 정확도, 실시간 객체 추적에 적합
- 단점: 높은 계산 복잡성, 많은 연산 자원 필요
KCF(Kernelized Correlation Filters)
순환 행렬과 커널 트릭을 활용한 고속 학습 및 검출
- 템플릿 매칭 방법을 사용
- FFT(Fast Fourier Transform) 사용하여 연산 속도를 높임
특징
- 빠른 속도로 객체 추적 수행
- 높은 정확도로 영상 데이터의 모든 픽셀을 사용하지 않고 상호관계를 이용하여 객체를 추적
- 변형 보정 알고리즘: 객체가 회전하거나 크기가 변할 때도 이를 보장할 수 있는 기능 제공
- 다양한 영상 환경에 대응 가능
객체 추적 원리
1. 초기 위치 설정
2. 템플릿 생성
3. 템플릿 매칭
4. 위치 업데이트
장점: 빠른 계산 속도, 적은 메모리 사용량
단점: 크기 변화에 취약, 완전한 가려짐에 대응이 어려움
CSRT(Discriminative Correlation Filter with Channel and Spatial Reliability Tracker)
공간 신뢰도 맵을 활용해 적응형 상관 필터 구현
- 공간 신뢰도 맵을 통한 객체 형태 적응
- 채널별 신뢰도를 이용한 특징 가중치 부여
- HOG와 ColarNames 특징 활용
장점: 비정형 객체 트래킹에 강함, 부분적 가려짐에 강함 - 중첩에 대한 저항력이 뛰어남
단점: KCF에 비해 상대적으로 속도가 느림, 물체가 사라졌을 때 작동이 불안정함
KCF vs CSRT
속도: KCF > CSRT
정확도: KCF < CSRT
크기 변화 대응: KCF < CSRT
메모리 사용: KCF > CSRT
'TIL' 카테고리의 다른 글
VScode 에서 jupyter notebook 커널 연결 실패 해결 (0) | 2025.02.04 |
---|---|
ModuleNotFoundError: 가상환경에서 모듈 설치하기 (0) | 2025.01.16 |
Anaconda 가상환경 삭제 (0) | 2025.01.16 |
TIL; 250110 (0) | 2025.01.11 |
TIL; 250109 (0) | 2025.01.09 |