김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • GitHubDesktop
  • KMU_WINK
  • 깃허브데스크탑
  • ㄱ
  • local저장소
  • 로컬저장소
  • Remote저장소
  • 원격저장소

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)
•Compter Science/Computer Vision

[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride)

2022. 11. 16. 01:06

 

 

[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop

[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화) [컴퓨터비전#10/10-09] 로지스틱 회귀 손실함수, 이진 크로스엔트로피 미분하여 경사하강법 도출, [컴퓨터비전#9/10-05] Classification, Linear

devforyou.tistory.com

본 포스팅은 2022-11-09(수), 2022-11-14(월), 국민대학교 김장호교수님의 컴퓨터 비전 수업을 통해 배운내용을 정리하기 위한 게시글입니다.


# Convolution Layer

 

[컴퓨터비전#3/09-16] 필터링( 메디안, 평균, 가우시안), 동차좌표와 동차행렬

[컴퓨터비전#2/09-14] 히스토그램, 히스토그램 평활화, 점연산(선형,비선형,디졸브),영역연산(상관, 본 포스팅은 2022-09-14(수), 국민대학교 김장호교수님의 컴퓨터 비전 수업을 통해 배운내용을 정

devforyou.tistory.com

컴퓨터 비전 초기에 공부했던 필터들을 신경망에 적용하는 것이다. 개념은 똑같다. 그 개념들은 위 게시글을 참고해 보자.

 

## 단일 사진 / 단일 필터

 Image 데이터는 n*m의 크기를 가짐과 동시에 Channel이라는 것이 존재한다. Channel은 RGB의 값을 가진다. 이 값을 우리는 depth라고도 부른다.

 이제 해당 이미지에 적용될 필터가 필요하다. 당연하게도 필터는 Channel의 수만큼 존재해야 한다. 그리고 필터는 이미지에 컨볼루션 연산을 진행한다. 그리고 이 값들은 합쳐져서 한개의 값이 나온다.

3*32*32의 Image에 3*5*5의 필터를 씌우면 해당 필터를 통해 얻은 하나의 Feature-map이 나올 것이다.

 그리고 이 Feature-map은 기존의 이미지보단 작은 크기를 가진다. 이 크기를 유지시키기 위해서 Padding이라는 작업을 하기도 하는데 뒤에서 다루도록 하겠다. Feature-map의 크기는 (원본 이미지)-(필터의 크기) +1의 크기를 가진다 즉 32-5+1 = 28의 값이 나오기 때문에 해당 Feature-map은 28*28의 크기가 된다. 이 Feature-map은 다음 Layer의 input으로 들어갈 수 있을 것이다.

 

## 단일 사진 / 다중 필터

한 이미지(Input)에 대해서 여러개의 필터를 적용할수 있다. 여러개의 필터는 (Channel)*(필터가로)*(필터세로)에 필터의 갯수를 곱해주는 것이다.

즉 우리가 기존에 하나의 필터 ( 3*5*5 )만을 이용해 한 이미지에 적용했다면, 6개의 필터를 만들어 한 이미지 적용할 수 있다. 그렇다면 위와 같은 결과가 나온다. 한 필터는 하나의 출력(Feature-map)을 만들기때문에 6개의 필터라면 6개의 Feature-map이 만들어진다.

 

## 다중 사진 / 다중 필터

그렇다면 Batch가 2인 경우, 즉 Image가 2장 들어왔다면?! 

위와 같이 될것이다. 6개의 3*5*5의 필터가 두장의 이미지 각각의 적용 될 것이다. 2*6 총 12개의 출력이 생긴다.

이를 공식화 해본다면,

입력 : N * ( Channel ) * Height * Width 

필터 : (필터 갯수) * ( Channel ) * (Filter_height) * (Filter_width)

N * (필터 갯수) * (new_height) * (new_width)가 될 것이다. 출력의 height와 width는 인풋크기, 필터크기, stride등에 의해 결정 된다.

 

 

# Convolutions를 쌓아보자

일반적으로 위와 같이 쌓임이 진행됨을 알 수 있다. Channel의 갯수는 맞춰 줘야 한다. 

이후 비선형 적인 특성을 주기 위해서 활성함수를 중간에 넣어주도록 개선해보자. 비선형성을 줘야하는 이유는 앞전에 공부했었다!

 

# 필터와 input에 따른 출력 계산

## Padding이 없을 경우

위에서 봤던 W-K+1의 공식으로 유추가 된다.

 

## Padding

출력의 크기를 줄어들지 않기 위해서 input값에 Padding을 추가해 줄 수 있다.

  • Padding은 (K-1) / 2로 구할 수 있다. 
  • OutPut은 W-K+1+2P로 구할 수 있다.

 

## Stride

필터의 보폭을 조절하여 출력 사이즈를 downsize시킬 수 있다. 예를 들어 보폭을 2로 설정한다면 필터는 위 파란색 원과 같이 돌게 될 것이다.

이런 경우에 Output은 아래와 같이 구한다.

60

 

# 끝

output 크기를 구하는 문제는 시험에 내기 좋을 것 같다.

정말 교수님이 악심을 품으신다면, 파라메타의 갯수를 구하라고도 할 수 있을 것 같다.

셤 기간이 되면 공부해 두자!

저작자표시 (새창열림)

'•Compter Science > Computer Vision' 카테고리의 다른 글

[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization  (2) 2022.11.22
[컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization  (0) 2022.11.21
[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop  (0) 2022.11.08
[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화)  (0) 2022.10.31
[컴퓨터비전#10/10-09] 로지스틱 회귀 손실함수, 이진 크로스엔트로피 미분하여 경사하강법 도출, 소프트맥스 함수, one-hot-encoding  (0) 2022.10.11
    '•Compter Science/Computer Vision' 카테고리의 다른 글
    • [컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization
    • [컴퓨터비전#14/11-16] 1*1 Convolution, pooling, conv의 output과 wieght개수 계산, Batch-Normalization
    • [컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop
    • [컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화)
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바