컴퓨터 비전 - 컴퓨터 비전에 대한 개념과 OpenCV를 활용한 컴퓨터 비전 실습과정 및 결론

업데이트:

컴퓨터 비전

컴퓨터 비전이란?

2차원 영상으로부터 3차원 장면을 재구성하여, 해석하고, 이해하는 것을 연구하는 분야입니다.

  • 궁극적 목적: 컴퓨터 소프트웨어와 하드웨어를 사용하여 인간의 시각을 모델링하여 복제해 내는 것
  • 컴퓨터 비전의 본질적 어려움
    • 역 문제: 2차원 영상에서 3차원 정보 재구성 필요
    • 불량 문제: 답이 유일하지 않음
    • 영상 생성과정에서 기하학적 변환, 광도 변환, 광학적 잡음 발생
  • 관련분야: 영상처리, 패턴인식, 기계학습, 컴퓨터 그래픽스
    • 영상처리: 영상을 처리하여 개선된 영상을 생성하는 것 (저수준)
    • 컴퓨터 그래픽스: 서술 입력을 통해 영상을 생성하는 것
    • 컴퓨터 비전: 영상 입력을 통해 일련의 서술을 생성하는 것 (고수준)


영상 처리

  • 이진화: 그레이 영상을 이진 영상으로 바꾸는 것(오츄의 알고리즘)
  • 히스토그램 평활화: 영상 히스토그램이 균등하게 분포하도록 하는 것
  • 장면 디졸브: 두 개의 장면을 합성하는 연산
  • 컨볼루션 연산(에지, Sobel, Prewitt, 가우시안 필터)
  • 에지 검출 Canny: 가장 널리 사용되는 에지 검출 방법
  • 영상 분할: 분할 후 합병, k-means, 민쉬프트 군집화, 그래프 절단 문제


특징 추출

  • 대응점 찾기 문제
    • 두 영상에서 서로 일치하는 점들의 쌍을 찾는 문제
    • 파노라마 영상, 물체 인식, 물체 추적, 스테레오 비전, 영상 정합
  • 지역특징
    • 영상에서 다른 곳과 차이가 나는 특징 정보가 풍부한 곳을 찾는 것
    • 요구조건: 반복성, 분별력, 지역성, 정확성, 효율성
  • 영상 피라미드와 스케일 공간
    • 영상 피라미드: 영상의 크기를 절반으로 줄여가며 크기변화에 대응할 수 있는 특징 점 검출 가능
    • 스케일 공간: 가우시안 필터의 표준편차 값을 점점 키워가면서 여러 개의 영상을 만드는 것
  • SIFT 특징 점 검출
    • SIFT: 스케일 공간과 피라미드 구조를 사용하여 옥타브와 키포인트를 활용하는 대표적인 지역특징 추출 방법
  • 특징 기술자
    • 특징점의 특징을 추출한 정보를 기술하는 것, 추출하는 알고리즘
    • 요구조건: 분별력, 불변, 강건
  • 매칭
    • 대상들을 비교하여 유사한 것들을 찾아내는 것
    • 인덱싱 구조 사용(k-d 트리, 지역민감 해싱 방법)


컴퓨터 비전 대상 문제

  • 동영상 처리 기술, 인식문제


객체 위치 검출 및 개체 인식

  • R-CNN 모델: 목적 영역을 찾기 위해 기존의 영역 제안 알고리즘 적용
  • YOLO 모델: 실시간으로 객체를 감지하고 인식하는 모델
  • SSD 모델: 고정관 크기의 테두리 상자들을 지정하여 객체에 대응하는 테두리 상자와 해당 상자에서 객체의 부류를 잘 찾을 수 있도록 학습


딥러닝 응용

  • 영상 주석 달기: 주어진 영상의 내용을 묘사하는 문장을 만들어 내는 것
  • 예술작품 화풍 그림 생성


OpenCV 소개

OpenCV란?

OpenCV는 영상처리와 컴퓨터 비전 관련 오픈 소스 라이브러리 입니다. OpenCV의 영상처리 및 컴퓨터 비전의 라이브러리를 사용하여 응용 프로그램을 쉽게 빠르게 만들 수 있습니다.

  • OpenCV 라이브러리는 2500개가 넘는 알고리즘으로 구성되어있습니다. 여기에는 컴퓨터 비전 및 기계 학습과 관련된 전통적인 알고리즘 뿐만 아니라 최첨단 알고리즘을 모두 포함하고 있습니다. 예를들어 얼굴 검출과 인식, 객체 인식, 객체의 3D 모델 추출, 3D 좌표 생성, 이미지 스티칭이 있습니다.
  • 또한 구글, 야후, 마이크로소프트와 같은 대기업부터 여러 신생 기업들까지 OpenCV 라이브러리를 사용하고 있습니다.
  • 이스라엘의 감시 비디오 침입 탐지, 중국 광산 장비를 모니터링 하여 로봇이 물체를 탐색하고 픽업하는 데 도움을 주며, 수영장 사고를 감지하는 등, 다양한 분야에서 라이브러리가 사용되고 있습니다.
  • C++, Python, Java, 매트랩 인터페이스를 갖추고 있으며, 윈도우즈, 리눅스, 안드로이드, 맥OS 등 다양한 운영체제를 지원합니다.
  • MMX, SSE 명렁어를 통해 고속의 알고리즘을 구현해 실시간 비전 응용에 더욱 강점이 있습니다.
  • 다양한 버전이 이어져왔으며 현재도 꾸준히 라이브러리가 업데이트되며 제공되고 있습니다.
    • 1.0버전: C언어 기반, JPEG2000 입출력 지원
    • 2.0버전: C++ 기반, highgui 모듈에서 스테레오 카메라 지원
    • 2.2버전: GPU처리 지원, 안드로이즈 지원, 템플릿 자료구조 추가
    • 3.0버전: Python & Java 바인딩 확장, Matlab 바인딩 도입
    • 4.0버전: OpenVION 딥러닝 툴킷으로 dnn 모듈 업데이트
    • 4.1버전: 안드로이드 미디어 NDK API 지원, 모듈 실행 최적화
    • 4.2버전: 성능 개선, dnn 모듈 개선


OpenCV를 이용한 컴퓨터 비전 실습

개발 환경 구축

파이참, 파이썬 설치

우선 파이참 IDE와 파이썬을 설치해야 합니다.

  • 파이참: https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows
    • 되도록 Community 버전을 다운로드 받습니다.
  • 파이썬: https://www.python.org/downloads/
    • 2020. 06. 03 기준, 3.8.3 버전이 최신이므로 이를 다운로드 받습니다. image

다음과 같이 파이참, 파이썬의 설치파일이 다운로드 되면, 설치를 진행합니다.

파이참은 그냥 설치를 진행하면 되지만 파이썬의 경우는 한 가지 확인해야 합니다. 설치를 진행할 때, 저 파이썬이 설치 경로가 나올텐데 이를 기억을 해둡니다. 파이참에서 파이썬 경로를 설정할 때, 경로를 친철하게 알려주지 않기 때문입니다.

image


파이참 프로젝트 생성

설치가 완료되면, 파이참 프로젝트를 하나 생성해줍니다.
프로젝트가 정상적으로 생성되면 다음과 같은 설정작업을 거쳐서 프로젝트 화면을 출력합니다.

image

image


파이썬 연결

이제 파이참에서 인터프리터를 파이썬으로 지정하여 연결을 시켜 주어야 합니다.

File – Settings – Project Interpreter 경로를 찾아 들어갑니다. 그리고 상단에서 파이썬 설치경로의 파이썬 파일을 지정하여 연결합니다. 여기서 우측의 톱니바퀴 모양 아이콘을 누르면 가상 환경을 사용할지, 시스템 환경을 사용할지 선택할 수 있습니다. 각각의 장단점이 있으며, 사용자가 원하는 장점에 맞는 환경을 선택하면 됩니다.

image

image


OpenCV 설치

마지막으로 OpenCV를 설치합니다. 위의 사진에서 버튼을 누르면 패키지 설치 화면이 나옵니다. 여기서 opencv-python를 설치하고, 추가로 결과를 보여주기위한 matplotlib를 추가로 설치합니다.

image image


다음과 같은 화면이 나오면 OpenCV가 설치되었고, 컴퓨터 비전을 위한 환경이 모두 구축된 것 입니다.

image


컴퓨터 비전 실습

설치한 OpenCV를 바탕으로 구성된 영상처리 프로그래밍 2개와 컴퓨터 비전 프로그래밍 1개를 실습 진행하였습니다.

영상의 이진화 실습

먼저 영상 이진화 실습입니다. 먼저 그레이 영상으로 변환을 한 후, 오추 이진화 알고리즘을 적용하여 이진 영상을 출력합니다.

image


히스토그램 평활화

히스토그램 평활화 실습입니다. 먼저 BGR 형식의 영상을 YCrCb형식으로 변환하고 히스토그램 평활화를 수행합니다. 수행 결과, 히스토그램이 적용된 영상이 출력되어 잘 적용된 것을 확인할 수 있습니다.

image


영상 속의 얼굴 검출

이미지 비전을 적용한 얼굴 검출 예제 실습입니다. 얼굴을 검출하는 방법으로 비올라존스 알고리즘을 적용하였습니다. 이 알고리즘은 하르 특징을 이용하여 얼굴을 식별합니다. 여기서 분류기 정보를 XML 형식으로 제공하여 얼굴과 눈 영역을 식별하여 출력합니다.

image


결론

배운 내용 및 소감

저번 학기에 영상처리를 수강하여 대부분 익숙한 내용이었지만 다시 한번 복습을 하게 되었습니다. 또한 컴퓨터 비전에 대한 실습은 처음이어서 생소하긴 했지만 굉장히 흥미롭고 재미있었던 실습이었습니다.

4차 산업혁명에서 이러한 컴퓨터 비전 기술이 인간의 삶에 굉장한 영향력을 줄 것임을 분명하게 생각합니다. 왜냐하면 딥 러닝의 등장으로 성능이 굉장히 발전하였고 이미지 비전 기술을 활용하여 적용할 수 있는 분야가 무궁무진하기 때문입니다.

이번 실습을 통하여 인공지능 기술에 대한 관심을 갖고 꾸준히 기술에 주목하여 개발자로서의 역량을 계속 발전해 나가야겠다는 다짐을 하게 되었습니다.


컴퓨터 비전 응용문제

컴퓨터 비전을 이용하여 일상 속에서 어떠한 분야에 적용하면 커다란 혁신이 될 수 있지않을까 생각을 해보았습니다. 현재 코로나19 사태로 대학교에서는 대부분 사이버 실시간 비 대면 강의로 대체하고 있습니다. 그 과정에서 출석체크는 채팅창으로 하는 경우가 많습니다. 제가 수강하는 교과 과목들도 모두 마찬가지입니다. 바로 이러한 사이버 강의에 얼굴인식 이미지 비전 기술이 적용되는 것을 생각해 보았습니다. 저는 자동 출석체크 플랫폼에 대해 생각해보았습니다.

자동 출석체크 플랫폼은 미리 학생들의 얼굴을 학습합니다. 이후, 강의에서 실시간으로 학생이 접속할 경우, 학생이 캠을 키게 되면 그 학생이 어떠한 학생인지 자동으로 분석되어 출석체크 기록부에 올라가게 되는 것입니다. 이러한 플랫폼의 경우 성능이 굉장히 중요하다고 생각됩니다. 왜냐하면 조금이라도 올바르게 동작하지않거나 오동작을 하게 되면 신뢰성의 문제와 커다란 반발을 가져올 수 있기 때문입니다.

바로 이 문제는 5G 네트워크 통신과 딥 러닝으로 해결 가능하다고 생각합니다. 5G네트워크 통신으로, 사용자는 디바이스에 장착된 캠을 통해 아무 선명한 영상을 끊김없이 서버 네트워크로 전송하여 출력될 수 있습니다. 그 후, 그 영상을 굉장히 학습이 잘 된, 성능이 좋은 딥 러닝이 적용된 모델에서 분석하면서 출석을 기록해 나가는 방식으로 동작하게 됩니다.

현재로서는 이전에 언급했던 대로, 신뢰성 문제와 하이 리스크 문제가 발생할 요건이 크다고 생각합니다. 하지만 계속되는 기술의 엄청난 발전과 이러한 컴퓨터 비전을 통해 멀지않은 미래에 반드시 상용화 될 기술이라고 생각합니다.


  • 참고 자료: 인공지능: 튜링테스트에서 딥러닝까지 (생능출판 - 이건명)

댓글남기기