딥러닝 - 딥러닝의 활용

AI / / 2020. 12. 17. 12:06
728x90
반응형

사물 검출

  • 사물의 위치와 종류(클래스)를 알아내는 기술

사물 검출의 예

[그림1] 사물 검출의 예

  • 사물 검출은 사물 인식보다 어려운 문제다.
  • 사물 검출에서는 이미지 어딘가에 있을 사물의 위치까지 알아내야 한다. (한 이미지에 여러 사물이 존재할 수도 있다.)
  • CNN을 기반으로 한몇 가지 제안되었다.
    • R-CCN(Regions with Convolutional Neural Network)이 유명하다.

R-CCN의 처리 흐름

[그림2] R-CCN의 흐름

  • R-CCN그림에서 주목할 곳은 '2. 후보 영역 추출'과 '3. CNN 특징 계산'이다.
    • 먼저 사물이 위치한 영역을 (어떠한 방법으로) 찾아내고, 추출한 각 영역에 CNN을 적용해서 클래스를 분류하는 것이다.
    • 이미지를 사각형으로 변형하거나 분류할 때 서포트 벡터 머신(SVM)을 사용하는 등 실제 처리 흐름은 다소 복잡하지만, 큰 틀에서는 이 두 가지 처리(후보 영역 추출과, CNN 특징 계산)로 구성된다.
  • 후보 영역 추출(사물처럼 보이는 물체를 찾아 처리)에는 컴퓨터 비전 분야에서 발전해온 다양한 기법을 사용할 수 있고, R-CNN 논문에서는 Selective Search 기법을 사용했다. 
  • 최근에는 후보 영역 처리까지 CNN으로 처리하는 Faster R-CNN 기법도 등장했다.
    • Faster R-CNN은 모든 일을 하나의 CNN에서 처리하기 때문에 아주 빠르다.

 

분할(segmentation)

  • 이미지를 픽셀 수준에서 분류하는 문제
  • 픽셀 단위로 객체마다 채색된 지도(supervised)데이터를 사용해 학습한다.
  • 추론할 때 입력 이미지의 모든 픽셀을 분류한다.

분할의 예 : 왼쪽이 입력 이미지, 오른쪽이 지도용 이미지

[그림3] 분할의 예

  • 신경망을 이용해 분할하는 가장 단순한 방법은 모든 픽셀 각각을 추론하는 것이다.
    • 예) 어떤 직사각형 영역의 중심 픽셀의 클래스를 분류하는 신경망을 만들어서, 모든 픽셀을 대상으로 하나씩 추론 작업을 실행한다. 
    • 이런 식으로는 픽셀의 수만큼 forward처리를 해야 하므로 긴 시간이 걸린다. (시간 낭비가 매우 크다.)
  • 위의 각각 추론을 하는 낭비를 줄여주는 기법으로 FCN(Fully Convolutional Network)이 고안되었다.
    • 단 한번의 forward 처리로 모든 픽셀의 클래스를 분류해주는 놀라운 기법이다.

 

FCN의 전체 그림

[그림4] FCN의 전체 그림

  • FCN(Fully Convoultional Network)를 직역하면 '합성곱 계층만으로 구성된 네트워크'가 된다.
    • 일반적 CNN이 완전 연결 계층을 이용하는 반면, FCN은 이 완전 연결 계층을 '같은 기능을 하는 합성곱 계층'으로 바꾼다. 
    • 사물 인식에서 사용한 신경망의 완전 연결 계층에서는 중간 데이터의 공간 볼륨(다차원 형태)을 1차원으로 변환해 한 줄로 늘어선 노드들이 처리했으나, FCN에서는 공간 볼륨을 유지한 채 마지막 출력까지 처리할 수 있다.
  • FCN은 마지막에 공간 크기를 확대하는 처리를 도입했다는 것도 특징이다.
  • FCN의 마지막에 수행하는 확대는 이중 선형 보간(bilinear interpolation)에 의한 성형 확대다.
    • FCN에서는 이 선형 확대를 역합성곱(deconvolution) 연산으로 구현해내고 있다. 
  • 예) 입력 크기가 32 * 10 * 10 (채널 32, 높이 10, 너비 10)인 데이터에 대한 완전 연결 계층은 필터 크기가 32 * 10 * 10 인 합성곱 계층으로 대체할 수 있다.
    • 완전 연결 출력 노드가 100개라면 합성곱 계층에서는 기존의 32 * 10 * 10 필터를 100개 준비하면 완전히 같은 처리를 할 수 있다.

 

사진 캡션 생성

  • 사진을 주면 그 사진을 설명하는 글(사진 캡션)을 자동으로 생성하는 연구

 

딥러닝으로 사진 캡션을 생성하는 예

[그림5] 딥러닝으로 사진 캡션을 생성하는 예

 

  • 위의 그림처럼 사진만 보고 사진 위에 그 사진을 설명하는 글을 적어둔다. 이것이 사진 캡션
  • 딥러닝으로 사진 캡션을 생성하는 방법으로는 NIC(Neural Image Caption) 모델이 대표적이다.
  • NIC는 심층 CNN과 자연어를 다루는 순환 신경망(Recurrent Neural Network, RNN)으로 구성된다.
    • RNN은 순환적 관계를 갖는 신경망으로 자연어나 시계열 데이터 등의 연속된 데이터를 다룰 때 많이 활용한다.

 

NIC의 전체 구성

[그림6] NIC의 전체 구성

  • NIC는 CNN으로 사진에서 특징을 추추랗고 그 특징을 RNN에 넘긴다.
  • RNN은 CNN이 추출한 특징을 초깃값으로 해서 텍스트를 '순환적'으로 생성한다. 
  • 기본적으로 NIC는 2개의 신경망(CNN과 RNN)을 조합한 간단한 구성이다.
  • 사진이나 자연어와 같은 여러 종류의 정보를 조합하고 처리하는 것을 멀티모달 처리(multimodal processing)라고 하며, 주목받는 분야 중 하나다.

 

RNN

  • R은 Recurrent(순환적)을 뜻한다.
  • 순환은 신경망의 순환적 네트워크 구조를 말한다.
  • 순환적 구조로 인해 이전에 생성한 정보에 영향을 받는(바꾸어 말하면, 과거의 정보를 기억하는)점이 RNN의 특징이다. 
    • 예) '나'라는 단어를 생성한 뒤 '잤다'라는 단어를 생성하면 먼저 만든 '나'의 영향을 받아 '는'이라는 조사가 자동으로 생성되어, 최종적으로 '나는 잤다'라는 문장이 완성되는 식이다.
  • 자연어와 시계열 데이터 등 연속성 있는 데이터를 다룰 때 RNN은 과거의 정보를 기억하면서 동작한다.

 

 

출처 : 밑바닥부터 시작하는 딥러닝

https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198

 

밑바닥부터 시작하는 딥러닝

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기