Computer Vision
컴퓨터 비전은 컴퓨터를 이용하여 시각 기능을 갖는 기계 장치를 만드는 기술 분야를 통칭한다.
자율 주행, 수술 로봇, 행성 탐사, 군사 등 다양한 분야에 사용된다.
컴퓨터 비전이 해결하려는 문제는 크게 2가지가 있다.
1. 사람의 시각에 준하는 인공 시각을 만든다. (제약이 없는 상황 (이미지) 를 인식한다.)
과학적으로 접근하여 사람 시각의 원리를 밝혀내고 컴퓨터로 모방하려고 한다.
뇌 과학의 주요 관심사이며, (지식 표현, 학습, 추론, 창작) 과 같은 인공 지능이 필수적이다.
문제는 사람이 당연하게 2D로 들어오는 시각정보를 보고 3D를 판단하는 것을 기계가 할 수 있게 하는 것이 어렵다.
2D 이미지로부터 3D 정보를 추론하는 것을 '역 문제' (Inverse Problem) 이라고 한다.
역으로 추론할 때는 1가지 해답이 결정되지 않기 때문에 '불량 문제' (ill-posed problem) 가 발생할 수 있다.
또한 기하학적 변환이나 광도 변환 등 다양한 변형이 발생할 수 있다.
2. 한정된 범위에서 특정한 목표를 달성하는 인공 시각을 만든다. (과속단속기에서 차량 번호판 인식 등)
공학적으로 접근하여 제약에 맞는 상황을 처리하려고 한다.
이 목표는 꽤 성공적으로 해결하여 잘 쓰이고 있다.
엔진 실린더 정밀 측정, 칩 검사 등은 사람의 눈으로 할 수 없기 때문에 컴퓨터의 도움을 받는다.
하지만 여전히 '역 문제', '불량 문제', '변환 문제' 등이 존재하므로, 실용적인 성능을 얻기까지 많은 어려움이 존재한다.
계층적 처리
어떤 이미지를 처리하는 과정은 다음과 같이 계층적인 순서에 따라 처리된다.
1. 전처리
영상처리, (잡음 제거, 초점 개선)
2. 특징 추출 (Feature Extraction)
에지 (edge), 선분 (segment), 영역 (region), 텍스쳐 (texture), 지역 특징 (local feature) 등을 검출하고 특징벡터를 추출한다.
수업에서는 에지 검출, 지역 특징 검출에 대해 다룬다.
특정 문제를 풀 때는 어떤 특징을 사용할 지 결정하는 것이 중요하다.
(사람 얼굴 인식 : Harr-Like, 사람 탐지 : HOG 등)
이때 SIFT, SURF 같은 지역 특징을 주로 사용한다.
3. 해석
추출한 특징을 해석하고, 해석한 결과를 토대로 고급 묘사를 출력한다.
(얼굴을 인식했으면 인식 결과를 분류할 수도 있고, MRI사진을 분석했으면 의심 환부를 출력하는 등)
컴퓨터 비전에서 사용하는 도구
1. 수학 : 기하학, 선형대수학, 미적분학, 확률, 통계, 최적화 문제 풀이 (비용 함수를 정의하는 것이 중요하다.)
2. 자료구조 : 배열, 트리, 그래프, 힙, 해싱, 탐색 트리
3. 알고리즘 : 그리디, DP, 한정 분기 등, 빠르게 처리하는 것이 주된 관심사이기 때문에 필요하다.
4. 기계 학습 : 신경망, SVM, AdaBoost, Random Forest 등을 활용한다.
컴퓨터 비전 시스템 설계 과정
문제 이해
주어진 문제에 대해 직관적이고, 철저한 이해가 중요하다.
합리적인 제약 조건을 수립할 필요가 있다.
예를 들어 얼굴을 인식하는 시스템을 설계한다고 할 때, 크기가 일정한 정면 얼굴을 분석하는 것과 자연 영상 속 얼굴을 분석하는 것은 다르다.
크기가 일정한 정면 얼굴을 분석할 땐 복잡한 인공지능이 필요하지 않으니 제작이 쉽지만 응용 분야가 한정된다. (보안 장치에는 활용 가능, 사진 분류 응용에는 사용 불가)
데이터베이스 수집
질적으로, 양적으로 우수해야 고성능 시스템을 제작할 수 있다.
데이터베이스는 시스템을 학습시킬 때 사용하는 학습 집합이면서, 완성된 시스템의 성능을 테스트하는 테스트 집합으로 사용할 수 있다.
데이터를 수집할 때는 직접 수집하거나 인터넷에서 수집할 수 있다.
직접 수집하는 것은 비용이 많이 들지만, 개발자에게는 자산이 될 수 있고, 인터넷에서 다운로드할 때는 고품질의 데이터베이스를 사용할 수 있다는 장점이 있다.
알고리즘 설계와 구현
주어진 문제를 해결하는데 적합한 알고리즘을 개발하거나 기존 알고리즘에서 선택할 수 있어야 한다.
그러려면 풍부한 배경지식이 필요하다.
예를 들어 손 동작을 인식하는 시스템을 개발하는 경우 (에지, 영역, 지역 특징) 중에서 어떤 것을 사용할지, 영역을 사용한다면 어떤 영상 분할 알고리즘을 사용할지, 어떤 추적 알고리즘을 사용할지 등을 결정해야 한다.
알고리즘을 선택할 때는 데이터베이스를 이용해서 성능 실험을 해보고 최적의 알고리즘을 선택한다.
이때 설계자의 경험과 직관이 매우 중요해지며, 성능 비교 분석 논문을 참고하기도 한다.
성능 평가
인식 성능을 평가할 때는 Confusion Matrix를 자주 사용한다.
이때 참/거짓 긍정률, 참/거짓 부정률, 재현률, 정확률, F 를 측정한다.
참 긍정률 : '맞다' 라고 했는데, 정말 맞은 경우
거짓 긍정률 : '맞다' 라고 했는데, 사실 아닌 경우
참 부정률 : '아니다' 라고 했는데, 정말 아닌 경우
거짓 부정률 : '아니다' 라고 했는데, 사실 맞는 경우
만약 어떤 영상에서 사람 얼굴을 찾아야 하는 시스템을 평가한다면
긍정 = 얼굴로 인식 / 부정 = 얼굴로 인식하지 않음
참 = 진짜 얼굴임 / 거짓 = 사실 얼굴이 아님
으로 나타낼 수 있다.
따라서
참 긍정률 = 얼굴이라고 인식했는데 정말 얼굴인 경우
거짓 긍정률 = 얼굴이라고 인식했는데 얼굴이 아닌 경우
거짓 부정률 = 얼굴이 아니라고 인식했는데 얼굴인 경우
(참 부정률 = 얼굴이 아니라고 인식했는데 얼굴이 아닌 경우, 사실 셀 수 없다)
정확률 = 긍정한 것 중에서 참인 것
재현율 = 사실은 참인 것 중에서 긍정한 것
이때 베타는 정확률과 재현율 중 어떤 것에 더 비중을 둘 지 결정하는 역할을 한다.
인접 학문
영상처리, 컴퓨터 그래픽스, 컴퓨터 비전, 패턴 인삭과 같은 인접 학문 사이에 서로 서로 영향을 준다.
'CS > HCI 윈도우즈프로그래밍' 카테고리의 다른 글
[Computer Vision] 3. Geometry Primer (2) : Homography (0) | 2024.05.31 |
---|---|
[Computer Vision] 2. Geometry Primer (1) : Homogeneous Coordinates (3) | 2024.05.31 |
중간고사 최종 정리 (1) | 2024.04.22 |
[OpenGL] 18. Transformation (6) - View Change (VCS) (0) | 2024.04.21 |
[OpenGL] 17. Transformation (5) - Projection & Perspective Normalization (0) | 2024.04.20 |