일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 냅색알고리즘
- 합성곱연산
- 백준9012
- 카카오코테
- 코드트리
- 이것이자바다
- 2019카카오코테
- 백준가운데를말해요
- 스파르타코딩클럽
- java
- 백준
- 확인문제
- BOJ
- 백준괄호
- 컴퓨터비전
- KT포트포워딩
- BOJ1655
- 딥러닝
- 이것이자바다9장
- 이것이자바다확인문제
- 백준10828
- 백준스택
- 운영체제
- 코딩테스트실력진단
- 백준평범한배낭
- 코테
- 백준온라인저지
- 가운데를말해요
- 웹개발기초
- 윤곽선검출
- Today
- Total
목록전체 글 (163)
코딩하는 락커

합성곱 신경망을 잘 구축하기 위해서는 다른 효율적인 신경망 구조의 케이스를 살펴봐야 한다. 마치 우리가 다른 사람의 코드를 살펴보며 공부하듯 말이다. 그래서 이번엔 몇몇의 대표적인 신경망에 대해 공부해도록 하겠다! https://youtu.be/dZVkygnKh1M 이것은 LeNet5라고 하는 손글씨의 숫자를 인식하는 목적의 신경망이다. 위 이미지와 같은 구조를 가지며, 흑백 이미지를 학습하기 때문에 32 x 32 x 1의 입력 이미지를 갖는다. 요즘에 소프트맥스를 사용하여 10개의 예측값이 나오게 하지만, LeNet5는 요즘은 잘 안쓰는 분류기를 출력층에서 사용한다고 한다. LeNet5는 요즘 기준으로는 적은 6만개의 변수를 가지며, 논문에서는 Pooling 층 뒤에 ReLU가 아닌 Sigmoid 비선..

https://youtu.be/ay3zYUeuyhU 뭔가 순서가 바뀌었다고 생각할 수도 있지만 이제 우리는 왜 신경망에서 합성곱을 사용하는 것이 유용한지에 대해 알아보자. Fully Connected Layer 대신 합성곱 층을 사용할 때 두 가지 이점이 있다. 변수 공유와 희소 연결이다. 예를 들어 일반적인 신경망에서 32 x 32 x 3 이미지를 5 x 5 x 6 사이즈 필터로 28 x 28 x 6의 출력 이미지로 합성곱 연산을 했을 경우 32 x 32 x 3 = 3072의 유닛과 28 x 28 x 6 = 4704의 유닛을 연결하여 3072 x 4704 + 4704 = ...약 1400만개의 변수가 필요하다. 하지만 합성곱 신경망에서는 5 x 5의 필터이므로 25개의 변수를 가지고 여기에 Bias를 ..

https://youtu.be/bXJx7y51cl0 지금까지 합성곱 신경망을 구성하는 대부분의 구성요소를 배웠으니 이제 예시를 한번 봐보자! 32 x 32 x 3(R,G,B) 이미지가 있고, 0부터 9까지의 숫자를 알아보는 신경망을 LeNet-5라는 클래식한 신경망과 유사하게 구성한다고 해보자. 첫 번째 층이 f=5, s=1에 p=0인 필터를 사용한다고 할 때, 출력은 28 x 28 x 6이다. (Conv1) Max Pooling을 사용한 두 번째 층이 f=2, s=2, p=0인 필터를 사용할 때, 저번 포스팅에서 했던 내용처럼 높이와 너비의 값이 절반으로 줄어들게 되므로 출력은 14 x 14 x 6이 된다. (Pool1) 이 때 합성곱 신경망 분야의 관습에 따라 Covn1층과 Pool1층을 한 레이어로..

https://youtu.be/8oOgPUO-TBY 풀링은 합성곱 연산을 할 때 표현 크기를 줄임으로써 계산속도를 높이고 특성을 더 잘 검출해내는 방법이다. Max Pooling은 이미지의 구역을 뒤, 그 구역에서의 최대값을 출력값으로 지정하여 결과행렬을 도출해내는 것이다. 이것은 마치 2 x 2 사이즈에 stride=2 짜리 필터를 사용하는 것과 같다. 그렇다면 Max Pooling은 왜 사용하냐? 음...그것은 최대값이 원본 이미지의 어떤 특성을 나타낼 수 있기 때문이다. 마치 고양이의 눈처럼 말이다. Max Pooling을 사용하는 것은 대부분 구역의 최대값을 통해 구역별 이미지의 특성을 직관적으로 볼 수 있기 때문이라는 것과, 성능이 좋다는 데에 이유가 있다. Max Pooling의 또 한가지 특..

https://youtu.be/jPOAS7uCODQ 앞선 포스팅 입체형 이미지에서의 합성곱에서 구한 4 x 4 x Nc 사이즈의 결과 이미지를 합성곱 신경망 층으로 만들기 위해서 해야 할 마지막 일은 각각에 편향Bias을 곱해 주는 것이다. 이 때 Bias값은 실수여야 하며 모든 요소에 동일한 수를 더해주어야 하며 ReLU와 같은 비선형성을 적용해주어야 한다. 다른 채널의 결과 이미지도 마찬가지이다. 그리고 결과 이미지를 모두 쌓으면 비로소 신경망의 한 계층이 되는 것이다. 이제 합성곱이 아닌 표준 신경망의 한 계층으로 연결시켜보자. 전파의 바로 전 단계는 z[1] = w[1]a[0](=x)+b[1]에 비선형성을 적용해줌으로써 a[1]=g(z[1])를 얻는데, 여기서 a[0]는 6 x 6 x 3 사이즈의..

https://youtu.be/KTB_OFoAQcc 자 이제 2D 이미지의 합성곱에서 3D 이미지의 합성곱으로 넘어가보자. 이 때 3D 이미지란 우리가 생각하는 진짜 그...입체 이미지가 아니라 R,G,B와 같은 여러 채널이 있는 이미지를 의미한다. 위 이미지와 같은 6 x 6 x 3(R,G,B채널) 사이즈의 이미지가 있다고 했을 때 3 x 3 x 3 사이즈의 필터와 합성곱 연산을 한다고 해보자. 중요한 점은 이미지와 필터의 채널의 수가 같아야 한다. 이 연산을 하기 위해서 먼저 필터를 이미지의 맨 왼쪽 맨 위 에 두고 3x3x3=27개의 각각의 숫자들을 빨강,초록,파랑 각 채널의 9개에 값에 곱해주고 주면 4 x 4 결과 이미지의 맨 왼쪽 맨 위 값을 구할 수 있다. 이런식으로 계산을 완료하면 결과 이..

https://youtu.be/tQYZaDn_kSg 스트라이드 합성곱은 합성곱 신경망의 기본 요소이다. 예제를 통해 stride=2인 경우에 대해 알아보자. 먼저 7x7 사이즈의 원본 이미지와 3x3 사이즈의 필터를 합성곱 연산한다고 할 때, 위 이미지에서 볼 수 있듯 4x4 사이즈의 결과 이미지의 최상단 맨 왼쪽의 결과값은 91이 나온다. 그리고 다음 합성곱 연산을 한다고 할 때, 한 픽셀 옆으로 것이 아니라 두 픽셀 옆으로 이동하는 것이다. 바로 아래 이미지처럼 말이다. 이렇게 두 픽셀을 뛰어넘어 합성곱 연산을 한 결과 100이 나오고, 그 다음에 아까 한 것과 같이 두 픽셀을 또 뛰어넘는다. 그리고 합성곱 연산한 결과 결과 이미지의 최상단 맨 오른쪽의 결과값은 83이 나오게 된다. 그 다음 아래쪽으..

https://youtu.be/smHa2442Ah4 패딩은 합성곱 신경망을 변형하는 한 방식이라고 한다. 지금까지는 nxn 이미지를 fxf필터로 합성곱을 한 결과로 n-f+1x n-f+1이 나오는 것을 보았다. 그래서 6x6 이미지의 경우 6-3+1 = 4 이므로 4x4 이미지가 나온 것이다. 히지만 아주 치명적인 단점이 좀 있다. 첫 번째는 바로 합성곱 연산을 할 때마다 이미지가 작아진다는 것이다. 이 것이 왜 문제냐면, 합성곱 신경망에서 수백 개의 층에서 각 층마다 축소된다면 모든 층을 거치고 난 후에는 아주아주 작은 이미지가 나오게 되기 때문이다. 두 번째는 이미지의 어떤 부분, 그러니까 이미지의 가장자리 같은 경우는 결과값을 내는 데에 한번밖에 사용되지 않지만, 이미지의 중간 부분은 결과값을 내는..