컴퓨터 비전 - 14(CNN)

박승현·2023년 11월 13일
0

컴퓨터비전

목록 보기
14/15
post-thumbnail

CNN(Convlutional Neural Networks)

  • 이전까지는 이미지를 1차원으로 펴서 연산을 했었음
    • 이미지가 32x32x3이면 1차원으로 펴면 3072x1이 됨
    • 이때 w도 3072에 맞게 3072xn의 크기로 커짐
    • 연산횟수도 많고 인풋 아웃풋의 모양도 바뀌게 됨
    • 연산횟수 감소와 모양 유지를 위해 컨볼루션을 도입
    • 뎁스에 맞게 필터도 뎁스를 가짐
      • 컨볼루션 연산 과정은 동일함(3x5x5면 총 75개를 더함)
      • bias도 도입해서 원점을 안 지나게
    • 결국 필터 하나를 씌우면 아웃풋의 뎁스는 1임
    • 아웃풋의 뎁스(채널)의 수와 필터의 수가 동일해지는 것이고 인풋의 뎁스는 필터의 뎁스와만 동일하며 인풋과 아웃풋의 뎁스는 연관이 없음
      • 필터쪽에서 사용하는 4차원은 필터의 개수, 인풋과 필터의 뎁스, 필터의 크기가 됨
      • bias도 필터 개수만큼 필요
      • 아웃풋은 인풋에서 필터의 크기를 뺀 크기로 필터의 개수만큼 나옴 -> 6x28x28
    • Batch : 이미지의 개수
    • 위의 숫자들을 일반화하면
      • 최종적으로는 4차원이 필요

  • 위의 과정이 CNN의 1간계의 레이어이고 일반적으로 여기서도 여러 레이어를 거치게 됨
    • N은 유지되고 중간중간 필터의 개수가 바뀜에 따라 아웃풋의 개수도 바뀜
  • 추가로 컨볼루션도 리니어 연산이기 때문에 컨볼루션 연산 후 non리니어 연산훌 추가해 선형성을 제거해줌
  • 실제로 딥러닝을 거쳐 나온 필터 예시
  • 필터를 거치고나면 가로세로의 크기가 줄어듬
    • 패딩으로 사이즈를 유지
    • 위를 제로패딩이라 부르고 패딩의 종류는 여러개가 있을 수 있음
    • 인풋, 필터, 패딩의 사이즈에 따른 아웃풋의 크기
  • Receptive Fields
    • 어느 크기의 픽셀에 의존하여 아웃풋이 나왔는지
      • 아웃풋 한 픽셀의 Receptive Field는 9(3x3)
    • 레이어가 여러개일때 (previous, input)에 대한 receptive field의 크기가 달라 질 수 있음
      • input에대한 RF는?
    • Receptive Field의 의미는 이전에 있는 이미지를 커버해주는 범위(높으면 좋은것)
      • 레이어를 많이 쌓거나
      • 이미지의 크기를 줄이면 높일 수 있음
        • 필터를 한번에 1픽셀이 아닌 더 큰 숫자만큼 이동시키면 가능(Strided convolution)
  • 최종적인 아웃풋의 이미지 사이즈
  • 아웃풋의 이미지 예제
    • 학습 가능한 parameter의 개수
      • (필터의 크기 + bias) * 필터의 개수
    • 총 연산의 개수
      • 총 필터를 사용한 횟수 x 필터의 크기(한번 할때 필터의 크기만큼 곱하기를함)
      • 필터를 사용한 횟수와 아웃풋의 사이즈는 동일함

Pooling and batch normalization

  • 1x1 convolution : feature를 뎁스1로 합치는 역할
  • 필터의 개수에 맞게 학습시키면서 크기를 줄여줌

Pooling(이미지의 크기를 줄이는 것)

  • Max Pooling(max값을 사용해 pooling)
    • pooling은 학습은 아님, max에서는 가장 큰 값이 살아나게 되는데 이미지의 모양이 유지되는 효과
    • stride가 2인 필터를 돌려도 이미지 크기는 똑같지만 이는 이미지의 모양은 변함(안좋은건 아니고 상황에 맞게 쓰기)

CNN의 과정

  • Convolution을 여러번 거치고 1x1의 형태로 펼쳐줘야함(Flatten)
  • 마지막은 softmax로 클래스에대한 확률값으로 반환해줌(최종 output size가 10인이유 : 클래스의 개수)
  • 추가로 위의 과정에서 convolution을 거칠때마다 값의 범위가 늘어나게됨
    • 정규화가 필요

정규화

  • Batch Normalization

    • 정규화에 학습의 여지를 추가해준 것

    • NxD에서(D는 데이터의 크기,차원 N은 데이터의 개수)

    • 데이터의 내부에서가 아니라 같은 차원에서의 mean을 구함

      • 각 feature의 의미를 구하는 것이 결과를 도출하는데 도움이 되기 때문에 같은 차원에서의 평균을 구하는 것
    • 이미지에서의 Batch Normalization

      • 한면을 평균내서 위와 동일하게함
  • Layer Normalization

    • 자연어처리등 데이터의 양이 매우커 batch정규화를 사용하기 어렵고 차원마다 의미하는게 다르지 않을때 사용
    • 데이터마다의 평균을 구함
  • Instance Normalization

    • 가로세로로만 평균을 냄(평균내면 크기가 1)
  • Norm 정리


profile
KMU SW

0개의 댓글