딥러닝과 OpenCV DNN 모듈

강형우·2022년 12월 13일
0

딥러닝

목록 보기
1/4

딥러닝 개요

딥러닝

  • 딥러닝이란 ?
    • 2000년대 부터 사용되고 있는 심층 신경망(deep neural network)의 또 다른 이름
  • 머신 러닝(ML) vs. 딥러닝(DL)
  • 컴퓨터 비전 분야에서의 딥러닝 활용

신경망 기초: 퍼셉트론

  • 퍼셉트론(perceptron)
    • 다수의 입력으로부터 가중합을 계산하고, 이를 이용하여 하나의 출력을 만들어내는 구조
  • (단층) 퍼셉트론 vs 다층 퍼셉트론 vs 심층 신경망
    • 다층 퍼셉트론(MLP, Multi-Layer Perceptron): 은닉층(Hidden layer)이 한 개 이상
    • 심층 신경망(DNN, Deep Neural Network): 은닉층(Hidden layer)이 두 개 이상
  • 컨볼루션 신경망(CNN: Convolutional Neural Network)
    • 영상 인식 등의 딥러닝 분야에 특화된 네트워크 구조
    • 일반적 구성: 컨볼루션(convolution) + 풀링(pooling) +... + 완전 연결 레이어(FC)
  • 학습된 컨볼루션 레이어 필터의 예

컨볼루션 신경망의 예

  • 필기체 숫자 인식을 위한 LeNet-5
    • CNN원조
    • 28x28 필기체 숫자 영상을 32x32로 확장하여 만든 입력 데이터를 사용
    • 전체 7개 레이어: Conv-Pool-Conv-Pool-FC-FC-FC
  • AlexNet
    • 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 영상 인식 분야 1위
      • 1000개의 카테고리, 120만개의 훈련 영상, 15만개의 테스트 영상
    • Top-5 Error: 15.4% (다른 컴퓨터 비전 기반 방법들 > 25%)
    • 하드웨어의 제약으로 2개의 GPU 사용
  • VGG16
    • 2014년 ILSVRC(ImageNet Large Scale Visual Recognition Competition) 영상 인식 분야 2위
    • Top-5 Error: 7.3%
    • 컨볼루션 레이어에서 3x3 필터만 사용
    • 총 16개 레이어로 구성
  • GoogLeNet
    • 2014년 ILSVRC(ImageNet Large Scale Visual Recognition Competition) 영상 인식 분야 1위
    • Top-5 Error: 6.7%(사람: 5.1%)
    • Inception 모듈
    • 총 22개 레이어로 구성

OpenCV DNN 모듈 사용법

OpenCV DNN 모듈 개요

  • OpenCV DNN(Deep Neural Network) 모듈
    • 미리 학습된 딥러닝 모델을 이용하여 실행(foward pass, inference)하는 기능
    • 학습은 지원하지 않음
    • OpenCV 3.3버전부터 기본 기능으로 제공
    • OpenCV 4.3버전부터 GPU(CUDA) 지원(소스 코드 직접 빌드 필요)
    • 참고: https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV
  • 지원하는 딥러닝 프레임워크
  • Tested networks

Net 클래스와 주요 함수 사용법

  • Net 클래스 정의
  • 네트워크 불러오기
  • 네트워크 입력 블롭(blob) 만들기
  • 네트워크 입력 설정하기
  • 네트워크 순방향 실행(추론)

0개의 댓글