TIL

TIL; 250108

shinetheworld 2025. 1. 8. 16:24

얼굴 인식에 사용되는 주요 알고리즘

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