일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준괄호
- KT포트포워딩
- 딥러닝
- BOJ
- 백준가운데를말해요
- 냅색알고리즘
- 윤곽선검출
- 백준10828
- BOJ1655
- 이것이자바다확인문제
- 컴퓨터비전
- 카카오코테
- java
- 2019카카오코테
- 운영체제
- 코딩테스트실력진단
- 코드트리
- 스파르타코딩클럽
- 웹개발기초
- 이것이자바다9장
- 합성곱연산
- 백준온라인저지
- 가운데를말해요
- 백준
- 코테
- 백준평범한배낭
- 백준스택
- 백준9012
- 이것이자바다
- 확인문제
- Today
- Total
코딩하는 락커
[Week3] 합성곱 신경망 / 모서리 감지 예시 본문
합성곱 신경망 CNN을 만들기 위해선 합성곱 작업을 해야한다. 넘 당연한 얘기다.
모서리 감지를 통해 합성곱이 어떻게 작용하는지 알아보자!
컴퓨터가 사진을 인식하게 하기 위해 하는 첫 번째 일은 이미지에서 '수직인 모서리'를 찾는 것이다.
수직인 모서리를 찾았다면 다음으로는 '수평인 모서리'를 찾아야 한다.
그러면 이 모서리를 대체 어떻게 찾는 걸까?
여기에 6x6짜리 그레이 스케일의 이미지가 있다고 할 때, 이 이미지의 수직 모서리를 알기 위해서는 우선 합성곱 신경망에서 '필터'라고 불리는 3x3짜리 행렬을 만들어야 한다.
필터를 만들었으면 10-110-110-1을 입력한 뒤, 6x6이미지와 합성곱==Convolution==*을 해준다.
합성곱의 결과로 4x4의 이미지가 나온다.
4x4의 이미지는 어떻게 나오냐면, 위 그림에서 보이는 요소들(파란색으로 칠해진 부분)을 모두 곱하는 것이다.
그래서 3x1+1x1+2x1+0x0+5x0+7x0+1x-1+8x-1+2x-1=5가 나온다.
그럼 이제 위 그림의 4x4행렬에 초록색 박스 부분의 값은 5!가 되는 것이다. 휴 길다 길어.
같은 방식으로 Convolution계산을 모두 마치면 아래와 같은 결과가 나오는 것이다.
이러한 합성곱을 사용할 경우 파이썬에서 ConvForward라는 함수를, 텐서플로우에서는 tt.nn.conv2d 함수를, keras에서는 Conv2d 함수를 사용하면 된다.
그렇다면 왜 합성곱을 하면 모서리를 인식할 수 있다는 걸까??
위 그림같은 6x6 이미지가 있을 때, 가운데에는 세로 경계선이 생겨서 색상, 혹은 밝기의 급격한 변화가 생긴다.
그리고 3x3 필터는 흰회검으로 표현할 수 있다.
두 행렬의 합성곱 결과는 위 그림의 4x4 행렬로 나타낼 수 있는데, 6x6 행렬의 초록 박스 부분을 계산한 결과는 0이고, 빨간 박스 부분을 계산한 결과는 30이 나오기 때문이다.
그리고 4x4 행렬의 이미지는 회흰회로 표현할 수 있다. 하얀 부분이 가운데에 있는 형태이다.
그리고 이 때! 이 흰색 부분이 바로 6x6 이미지의 세로 경계선에 해당하는 부분이다.
결국 결과 이미지의 밝은 부분이 원본 이미지의 경계선을 나타낸다~ 이말이다.
'[2020] 📚 DSC 겨울방학 스터디' 카테고리의 다른 글
[Week3] 입체형 이미지에서의 합성곱 (0) | 2020.01.31 |
---|---|
[Week3] 스트라이드 (0) | 2020.01.24 |
[Week3] 패딩 (0) | 2020.01.24 |
[Week3] 더 많은 모서리 감지 예시 (0) | 2020.01.21 |
[Week3] 컴퓨터 비전 (0) | 2020.01.20 |