-
Notifications
You must be signed in to change notification settings - Fork 486
컴퓨터 비전
Sung Yun Byeon edited this page Jul 9, 2019
·
8 revisions
- 이 페이지는 우태강님이 작성해주셨습니다! 감사합니다
- 디지털 이미지나 비디오에서 높은 수준의 이해(high-level understanding)를 얻는 분야를 의미합니다.
- 주로 인식, 인지가 목표입니다.
- 즉, 기계의 시각에 해당하는 부분을 연구하며 공학적으로는 인간의 시각 시스템을 자동화 하는 분야라고 이야기 할 수 있습니다.
- 컴퓨터 비전을 공부하기 위해서 아래 분야의 이해가 필요합니다.
- 디지털 영상 처리 : 기본적인 영상을 조작 능력
- 선형대수학 : 영상 데이터는 행렬로 표현, 연산
- 미분적분학 : 특징(feature)을 추출하기 위해 필요
- 디지털 신호 처리 : 영상 또한 신호의 한 종류 입니다.
LTI system, aliasing, sampling, Fourier Transform 같은 기초 지식은 필수입니다.
- 패턴인식 : 추출된 특징을 분류/이해하기 위해 필요
- 확률론 : 패턴을 찾기 위해서는 데이터의 분포를 다뤄야합니다.
- 영상 처리와 컴퓨터 비전은 전공자들조차 혼용하여 사용하는 단어들 입니다. 두 개념의 차이를 인지하고 공부하는 것이 큰 도움이 될 것 입니다.
- 영상 처리(Image processing)
- 영상 처리는 영상을 조작하는 모든 행위를 의미합니다.
- 예를 들어 이미지에 모자이크처리를 하거나 경계 선이 두드러지도록 edge를 보강할 수도 있습니다.
- 컴퓨터 비전
- 컴퓨터 비전은 사람이 인식하는 것처럼 '이해'가 목적입니다.
- 따라서 이미지에서 인식할 수 있도록 특징을 추출하는 것과(feature extraction) 찾아낸 특징을 매칭하는 것이(feature matching) 주요 목표라고 할 수 있습니다.
- 즉, 컴퓨터가 이해하도록 특징을 추출하는 행위는 컴퓨터 비전, 특징이 잘 나타나도록 이미지를 변형 시키는 행위는 영상 처리로 말 할 수 있습니다.
- 예를 들어, 이미지에서 얼굴을 검출하기 위해 이미지의 gradient를 계산하는데 이미지의 gradient가 잘 나타나도록 필터 연산을 하는 것은 영상처리이고 추출된 gradient와 학습된 gradient를 비교해서 얼굴을 검출하는 행위를 컴퓨터 비전이라 이야기 할 수 있습니다.
- 사실 두 용어의 명확한 경계를 정의하기란 힘듭니다. 컴퓨터 비전을 수행하기 위해선 반드시 영상처리가 동반되어야 하기 때문입니다. 하지만 많은 컴퓨터 비전 연구자들이 추상적인 것을 찾아내는 것(컴퓨터비전), 이미지 표현을 변형하는 것(영상처리)으로 무의식적으로 인지하고 있기 때문에 이 개념을 기억해 두는 것이 좋겠습니다.
-
Classification
- ImageNet 대회로 이미 많이 알려진 분야입니다.
- 이미지가 입력되면 특정 class로 분류하는 분야입니다.
- https://www.kaggle.com/c/dogs-vs-cats 의 예제로 경험해 볼 수 있습니다.
-
Detection
- 이미지에서 물체를 포함하는 bounding box를 찾는 알고리즘을 의미합니다.
- 다수의 물체에 대해 bbox 좌표와 물체의 class를 출력합니다.
-
Segmentation
- 픽셀 단위로 class를 분류하는 알고리즘을 의미합니다.
- 분할 알고리즘이 포함되며 지도학습 뿐만 아니라 meanshift 등과 같은 비지도 학습 기반 방법도 사용될 수 있습니다.
-
Feature extraction
- 특징을 추출하는 알고리즘을 의미합니다.
- 특징이란, 물체의 형태나 크기, 위치가 변해도 쉽게 식별이 가능한 점을 의미합니다.
- 대체로 코너점이 특징점으로 이용하기 쉽습니다. Harris corner 알고리즘 등이 포함됩니다.
-
Feature description
- 추출된 특징점이 특정 조건을 만족할 때 특징 기술자로 불립니다.
- 조건은 '분별력, 불변, 크기' 입니다.
- 대표적인 기술자로는 SIFT, HOG, FAST 등이 있습니다.
-
Matching
- 서로 다른 영상의 시점이 다를 때, 각 영상을 변형하여 하나의 좌표계로 표현하는 방법을 매칭 또는 정합이라 합니다.
- 특징 기술자를 이용해서 동일한 위치의 특징점을 찾아 선형/비선형 변환하는 방법으로 구현할 수 있습니다.
- 예를 들어 영상의학에서 CT, MRI 상의 환부를 동일 위치로 표현할 때 사용됩니다.
-
3D vision
- 서로 다른 2개 이상의 영상을 이용해 3차원 좌표로 변환 할 수 있습니다.
- 삼각 측량법이 주로 사용됩니다. stereo vision, multiple-view, visual SLAM 등이 있습니다.
- 카메라 파라미터 계산부터 영상 정합(rectification), 전체 매칭, 3차원 위치 복원 과정을 거쳐야하기 때문에 앞에서 서술한 방법 대부분이 사용될 수 있습니다.
-
Tracking
- 영상에서 관심 물체를 시간축으로 추적하는 알고리즘을 의미합니다.
- One-shot learning이라고도 표현 할 수 있습니다.
- Kalman filter는 가장 유명한 추적 알고리즘 중 하나입니다.
-
Generative model
- 최근 딥러닝을 큰 발전으로 영상을 생성할 수 있게 되었습니다.
- manifold learing 등을 통해 latent vector로 부터 고차원 이미지 생성이 가능해지고 있습니다.
- GAN, DCGAN 부터 공부를 시작해 보세요.
- 딥러닝이 유명해진 요즘 supervised learning(특히 분류) 부터 아주 손쉽게 만들어 볼 수 있게 되었습니다.
- 파이썬 코딩에 어려움이 없다면 비전공자일지라도 일주일 이내에 첫 프로그램을 만들어 볼 수 있습니다.
- keras나 pytorch 같은 딥러닝 라이브러리를 이용해보세요.
- Stanford CS231n 수업은 반드시! 꼭 들어주세요
- 보다 깊은 컴퓨터 비전 공부를 위해서 저는 Stereo vision 분야를 추천합니다.
- 영상처리의 근간인 카메라 기하학, 캘리브레이션과 컴퓨터비전의 핵심인 특징 추출과 매칭을 모두 경험해 볼 수 있습니다.
- 만들고 나면 매우 신기한 결과를 얻을 수 있습니다. (https://www.youtube.com/watch?v=NnPhAT7dmNw)
- 다만 공부해서 코드를 만들기까지 6개월 정도의 시간이 걸릴 것 같습니다
- 오일석 교수님의 컴퓨터 비전
- Stanford CS231n 2017
- object detection on coco : SOTA 성능 비교해줌
- deep_learning_object_detection : object detection 트렌드를 잘 업데이트해줌
- object-detection : 여기도 최신 연구 동향을 잘 업데이트해줌
카일스쿨 유튜브를 시작했습니다-! 이 Wiki 문서에서 다루지 않은 현업 이야기를 공유할 예정입니다!
궁금하시거나 요청할 내용이 있으시면 [email protected]으로 메일 보내주시면 감사하겠습니다 :)