본문 바로가기
딥러닝(, 머신러닝)

컴퓨터 비전 기본

by moonysm 2024. 2. 26.

@아이티고 딥러닝 CV 강의 수강 후https://itgo.kr/class/class_detail.asp?c_code=la_L110113

 

컴퓨터 비전이란, 컴퓨터 분야에서 시각을 연구하는 분야.

AI > ML > DL

AI : 인공적으로 구현한 컴퓨터 프로그램 또는 컴퓨터 시스템

ML : 경험을 통해 자동으로 개선하는 컴퓨터

DL : 여러 비선형 변환기법(예시.인공신경망)의 조합을 통해 높은 수준의 추상화를 시도하는 기계학습 알고리즘의 집합

 

컴퓨터 비전의 응용분야 - 이미지 처리, Robotics, NLP, optics, ML

  • 물체 인식 bounding box. ex)자율주행자동차, 무인 편의
  • OCR  - NLP와의 결합
  • Face Recognition

 

[ 컴퓨터 비전 ]

Computer vision 에서의 Task

 

Classification : 이미지 한 장에 대해서 종류를 예측 하는 것. 현재까지도 정확도가 가장 좋은 방법

  • CNN모델을 중첩해서 사용하거나 응용하여 모델을 구성.
  • LeNet, AlexNet, GoogleNet, ResNet, VGG 모델이 대표적임.

Semantic Segmentation          ->뒷 내용에서 좀 더 알아보자

Segmentation : 모든 픽셀의 label을 예측하는 Task    

  • 한장의 이미지에서 대상을 구체적으로 정의하지 않고, 큰 분류로 구분
  • DeepLabV3, FCN, LRASPP 모델이 대표적임.

사람과 하늘, 나무는 구분하지만 사람을 한 명씩 구분하지는 않음

 

Instance Segmentation : Semantic segmentation과 다르게 각각의 객체를 인식('사람'으로 인식하는게 아니라 사람 이름으로 따로 따로 인식이 가능)  ->뒷 내용에서 좀 더 알아보자

  • Mask R-CNN 모델이 대표적

이건 YOLOv8로 한 것. YOLOv8도 instance Segmentation 가능

 

Object Detection : 하나의 이미지에서 사물을 탐지하는 모델

  • 이미지 입력에서 사물의 위치와 사물의 종류를 동시에 예측
  • 탐지 방법에 따라 One-stage detection( 모델 - SSD), Two-stage detection(모델 - Faster R-CNN)

Motion analysis

keypoint analysis : 사물의 특정위치를 학습하여 행동을 예측하거나 분석하는 CV기술 (대표 모델 keypoint R-CNN)


Image reconstruction

GAN : 생성적 적대 신경망.

  • 대표적 모델 : DCGAN, BEGAN, StarGAN

 

 


[ Classification - ResNet ]

Q. Deeper layer 어떻게 해야할까(Network의 depth가 깊어지면서 vanishing, exploding gradient problem 발생)

A. Weight initialization과 Batch Normalization 을 사용

  • Weight initialization
    • 레이어의 가중치를 적절하게 초기화하여 학습을 시작할 때 올바른 방향으로 출발할 수 있도록 함.
    • Xavier초기화 : ReLu에 사용
    • He초기화 : tanh/sigmoid에 사용
  •  Batch Normalization
    • 각 layer의 input distribution이 일정하지 않은 현상을 예방하기 위하여 수행.
    • 각 미니배치의 활성화 값을 정규화하여 네트워크의 학습을 안정화하고 속도를 향상시킴
    • 각 배치마다 레이어의 입력 또는 출력값의 batch 평균과 batch standard deviation을 통해 정규화를 수행하는 것 ->이를 통해 학습 signal을 비교적 균일하게 적용하여 batch간 학습 차이를 줄일 수 있음
  • 생성 동기
    • 딥러닝 모델을 깊게 쌓을 때의 정확도 저하 문제. 오버피팅이 아닌 오히려 기울기소실에 의해 발생하는 문제
      • layer가 깊어짐에 따라 신호가 사라지지 않게 정보를 추가해주는 작업이 필요

skip connection

  • skip connection
    • 입력데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조
    • 합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 함

[ Semantic Segmentation]

대표적 모델 : FCN(Fully Convolutional Network)

  • 기존 CNN의 문제점 : 입력이미지의 정보를 잃는 문제가 발생.(Fully connected에서 피쳐 맵들을 납작하게 만든 후 output으로 출력 ->이때 위치 정보가 손실됨. )
    • FCN은 입력 이미지의 공간적인 구조를 보존하면서 픽셀 수준에서 예측 가능

  • 컨볼루션 구조
    • Fully connected layer(파라미터의 대부분 차지)를 제거하고 컨볼루션 레이어로만 구성 
      • 연산량 및 파라미터 감소
      • Fully connected layer를 conv연산으로 변경. conv로 바꾸면서 upsamplig을 위한 작업이 필요해짐

  • 업샘플링과 stride 활용
    • 인코더, 디코더의 역할을 수행하여 저차원의 정보를 고차원으로 변경해주는 작업 (저사양=압축이 많이 된)
    • 피처 맵을 입력 이미지와 동일한 해상도로 복원하는 작업
  • skip connection 
    • 특정 컨볼루션 레이어의 출력에 상응하는 업샘플링 레이어에 연결하여 고해상도 세그멘테이션 맵을 생성
    • 고수준 특징과 저수준 특징을 모두 사용 가능하도록 구성

 


[ Instance Segmentation]

대표적 모델 : Mask R-CNN

  • 객체의 위치, 클래스 레이블, 객체에 대한 픽셀 수준의 마스크를 동시에 예측
  • Faster R-CNN을 기반으로 개발된 객체 탐지와 인스턴스 세그멘테이션을 수행하는 모델
  • 주요 특징
    • Region Proposal Network
      • RPN을 통해 후보 영역 생성
    • ROI Align
      • 픽셀 정렬을 수행해서 세밀한 인스턴스 segmentation을 가능하게 함
      • 픽셀의 경계선에서 올림 연산을 수행하여 경계를 결정했지만, 픽셀 수준의 예측에서는 정보 손실이 발생함. 따라서 Bilinear interpolation을 통해 공백 정보 채워 넣음
    • Mask Head
      • 객체탐지 + 바운딩박스예측 + MaskHead(마스크 예측을 수행하기 위함)

Architecture